libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / bitint-22.c
blobdc8833acafcae2a6dac3daccae99b13c800a7588
1 /* PR c/102989 */
2 /* { dg-do run { target bitint } } */
3 /* { dg-options "-std=c23" } */
4 /* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } } */
5 /* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
7 #if __LDBL_MANT_DIG__ == 64
8 #if __BITINT_MAXWIDTH__ >= 135
9 __attribute__((noipa)) _BitInt(135)
10 testldbl_135 (long double d)
12 return d;
15 __attribute__((noipa)) unsigned _BitInt(135)
16 testldblu_135 (long double d)
18 return d;
20 #endif
22 #if __BITINT_MAXWIDTH__ >= 192
23 __attribute__((noipa)) _BitInt(192)
24 testldbl_192 (long double d)
26 return d;
29 __attribute__((noipa)) unsigned _BitInt(192)
30 testldblu_192 (long double d)
32 return d;
34 #endif
36 #if __BITINT_MAXWIDTH__ >= 575
37 __attribute__((noipa)) _BitInt(575)
38 testldbl_575 (long double d)
40 return d;
43 __attribute__((noipa)) unsigned _BitInt(575)
44 testldblu_575 (long double d)
46 return d;
48 #endif
49 #endif
51 #if __FLT128_MANT_DIG__ == 113
52 #if __BITINT_MAXWIDTH__ >= 135
53 __attribute__((noipa)) _BitInt(135)
54 testflt128_135 (_Float128 d)
56 return d;
59 __attribute__((noipa)) unsigned _BitInt(135)
60 testflt128u_135 (_Float128 d)
62 return d;
64 #endif
66 #if __BITINT_MAXWIDTH__ >= 192
67 __attribute__((noipa)) _BitInt(192)
68 testflt128_192 (_Float128 d)
70 return d;
73 __attribute__((noipa)) unsigned _BitInt(192)
74 testflt128u_192 (_Float128 d)
76 return d;
78 #endif
80 #if __BITINT_MAXWIDTH__ >= 575
81 __attribute__((noipa)) _BitInt(575)
82 testflt128_575 (_Float128 d)
84 return d;
87 __attribute__((noipa)) unsigned _BitInt(575)
88 testflt128u_575 (_Float128 d)
90 return d;
92 #endif
93 #endif
95 int
96 main ()
98 #if __LDBL_MANT_DIG__ == 64
99 #if __BITINT_MAXWIDTH__ >= 135
100 static long double ldbl_135[] = {
101 -0.96875L, -0.25L, -0.0L, 0.25L, 0.0L, 1.0L, -42.0L, 4294967295.25L,
102 -8790480341948727187.25L, 27274375615880435204096.0L,
103 -14925443517338257613013233930892304449536.0L,
104 -21778071482940061661655974875633165533184.0L
106 static _BitInt(135) ldblr_135[] = {
107 0wb, 0wb, 0wb, 0wb, 0wb, 1wb, -42wb, 4294967295wb,
108 -8790480341948727187wb, 27274375615880435204096wb,
109 -14925443517338257613013233930892304449536wb,
110 -21778071482940061661655974875633165533183wb - 1wb
112 for (int i = 0; i < 12; ++i)
113 if (testldbl_135 (ldbl_135[i]) != ldblr_135[i])
114 __builtin_abort ();
115 static long double ldblu_135[] = {
116 -0.9921875L, -0.75L, -0.0L, 0.125L, 0.0L, 1.0L, 42.59375L, 4294967295.75L,
117 176563931524327024.5L, 33864941055480177570480471932928.0L,
118 25454535165593017203571842988709209178112.0L
120 static unsigned _BitInt(135) ldblur_135[] = {
121 0uwb, 0uwb, 0uwb, 0uwb, 0uwb, 1uwb, 42uwb, 4294967295uwb,
122 176563931524327024uwb, 33864941055480177570480471932928uwb,
123 25454535165593017203571842988709209178112uwb
125 for (int i = 0; i < 11; ++i)
126 if (testldblu_135 (ldblu_135[i]) != ldblur_135[i])
127 __builtin_abort ();
128 #endif
129 #if __BITINT_MAXWIDTH__ >= 192
130 static long double ldbl_192[] = {
131 -1.0L, -0.998046875L, -0.5L, -0.0L, 0.625L, 0.0L, 1.0L, -42.0L, 4294967295.25L,
132 -5824742198306330891.5L, 440458331210868742661519441920.0L,
133 1835666805014205039814897225189119947560942436848001613824.0L,
134 -3138550867693340381917894711603833208051177722232017256448.0L
136 static _BitInt(192) ldblr_192[] = {
137 -1wb, 0wb, 0wb, 0wb, 0wb, 0wb, 1wb, -42wb, 4294967295wb,
138 -5824742198306330891wb, 440458331210868742661519441920wb,
139 1835666805014205039814897225189119947560942436848001613824wb,
140 -3138550867693340381917894711603833208051177722232017256447wb - 1wb
142 for (int i = 0; i < 13; ++i)
143 if (testldbl_192 (ldbl_192[i]) != ldblr_192[i])
144 __builtin_abort ();
145 static long double ldblu_192[] = {
146 -0.99951171875L, -0.125L, -0.0L, __LDBL_MIN__, 0.0L, 1.0L, 42.125L, 4294967296.75L,
147 2076918887405157419.75L, 20675944534182826922963677915852149395069559898112.0L,
148 5501434424609388038261967254007295028886638351806353113088.0L
150 static unsigned _BitInt(192) ldblur_192[] = {
151 0uwb, 0uwb, 0uwb, 0uwb, 0uwb, 1uwb, 42uwb, 4294967296uwb,
152 2076918887405157419uwb, 20675944534182826922963677915852149395069559898112uwb,
153 5501434424609388038261967254007295028886638351806353113088uwb
155 for (int i = 0; i < 11; ++i)
156 if (testldblu_192 (ldblu_192[i]) != ldblur_192[i])
157 __builtin_abort ();
158 #endif
159 #if __BITINT_MAXWIDTH__ >= 575
160 static long double ldbl_575[] = {
161 -1.00048828125L, -0.999755859375L, -0.0625L, -0.0L, 0.0001L, 0.0L, 1.0L, -28.0L, 4294967294.75L,
162 -3665832965020207456.5L, 163698889538251840454153874702336.0L,
163 32915174451748642699300864037265677114762093753017270154115822402734463611341115095984060833654391570465670441530007982951775959694729040694137686724336684263404019031998464.0L,
164 -61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174784.0L
166 static _BitInt(575) ldblr_575[] = {
167 -1wb, 0wb, 0wb, 0wb, 0wb, 0wb, 1wb, -28wb, 4294967294wb,
168 -3665832965020207456wb, 163698889538251840454153874702336wb,
169 32915174451748642699300864037265677114762093753017270154115822402734463611341115095984060833654391570465670441530007982951775959694729040694137686724336684263404019031998464wb,
170 -61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174783wb - 1wb
172 for (int i = 0; i < 13; ++i)
173 if (testldbl_575 (ldbl_575[i]) != ldblr_575[i])
174 __builtin_abort ();
175 static long double ldblu_575[] = {
176 -0.9998779296875L, -0.5L, -0.0L, 4.0L * __LDBL_MIN__, 0.0L, 1.0L, 38.125L, 4294967297.75L,
177 1378703406647015633.75L, 611519358004879551476944320883148018860550235384446976.0L,
178 115943866857281393364910134541262519802574312323472821552898049002204954780753923929784955305825114286696121504922573067409422635510048274769753298552619702526028834918105088.0L
180 static unsigned _BitInt(575) ldblur_575[] = {
181 0uwb, 0uwb, 0uwb, 0uwb, 0uwb, 1uwb, 38uwb, 4294967297uwb,
182 1378703406647015633uwb, 611519358004879551476944320883148018860550235384446976uwb,
183 115943866857281393364910134541262519802574312323472821552898049002204954780753923929784955305825114286696121504922573067409422635510048274769753298552619702526028834918105088uwb
185 for (int i = 0; i < 11; ++i)
186 if (testldblu_575 (ldblu_575[i]) != ldblur_575[i])
187 __builtin_abort ();
188 #endif
189 #endif
190 #if __FLT128_MANT_DIG__ == 113
191 #if __BITINT_MAXWIDTH__ >= 135
192 static _Float128 flt128_135[] = {
193 -1.0F128, -0.999969482421875F128, -0.5F128, -0.0F128, 0.25F128, 0.0F128,
194 1.0F128, -42.0F128, 4294967295.25F128,
195 -622114258022893415468272077014949.5F128, 6846686534183872435237780851340978176.0F128,
196 -18109992041001989671440396535501724581888.0F128,
197 -21778071482940061661655974875633165533184.0F128
199 static _BitInt(135) flt128r_135[] = {
200 -1wb, 0wb, 0wb, 0wb, 0wb, 0wb, 1wb, -42wb, 4294967295wb,
201 -622114258022893415468272077014949wb, 6846686534183872435237780851340978176wb,
202 -18109992041001989671440396535501724581888wb,
203 -21778071482940061661655974875633165533183wb - 1wb
205 for (int i = 0; i < 13; ++i)
206 if (testflt128_135 (flt128_135[i]) != flt128r_135[i])
207 __builtin_abort ();
208 static _Float128 flt128u_135[] = {
209 -0.9999847412109375F128, -0.25F128, -0.0F128, 0.125F128, 0.0F128, 1.0F128,
210 42.59375F128, 4294967295.75F128,
211 3866883549893778868343627501393297.5F128, 1884508847679496004639718578196282112.0F128,
212 40418154190724512480670668005754087145472.0F128
214 static unsigned _BitInt(135) flt128ur_135[] = {
215 0uwb, 0uwb, 0uwb, 0uwb, 0uwb, 1uwb, 42uwb, 4294967295uwb,
216 3866883549893778868343627501393297uwb, 1884508847679496004639718578196282112uwb,
217 40418154190724512480670668005754087145472uwb
219 for (int i = 0; i < 11; ++i)
220 if (testflt128u_135 (flt128u_135[i]) != flt128ur_135[i])
221 __builtin_abort ();
222 #endif
223 #if __BITINT_MAXWIDTH__ >= 192
224 static _Float128 flt128_192[] = {
225 -0.99999237060546875F128, -0.75F128, -0.0F128, 0.625F128, 0.0F128, 1.0F128, -42.0F128, 4294967295.25F128,
226 -2985198467222342042164811285508981.5F128, 431282768955649236431442335280406747022360576.0F128,
227 1589969577168452878096502186670522088231011726426596442112.0F128,
228 -3138550867693340381917894711603833208051177722232017256448.0F128
230 static _BitInt(192) flt128r_192[] = {
231 0wb, 0wb, 0wb, 0wb, 0wb, 1wb, -42wb, 4294967295wb,
232 -2985198467222342042164811285508981wb, 431282768955649236431442335280406747022360576wb,
233 1589969577168452878096502186670522088231011726426596442112wb,
234 -3138550867693340381917894711603833208051177722232017256447wb - 1wb
236 for (int i = 0; i < 12; ++i)
237 if (testflt128_192 (flt128_192[i]) != flt128r_192[i])
238 __builtin_abort ();
239 static _Float128 flt128u_192[] = {
240 -0.999996185302734375F128, -0.0625F128, -0.0F128, __FLT128_MIN__, 0.0F128, 1.0F128, 42.125F128, 4294967296.75F128,
241 1198221816583045676753413578483973.75F128, 321058543109670204450967161534914741927936.0F128,
242 4124250833671183507048495617931376186682553019928355536896.0F128
244 static unsigned _BitInt(192) flt128ur_192[] = {
245 0uwb, 0uwb, 0uwb, 0uwb, 0uwb, 1uwb, 42uwb, 4294967296uwb,
246 1198221816583045676753413578483973uwb, 321058543109670204450967161534914741927936uwb,
247 4124250833671183507048495617931376186682553019928355536896uwb
249 for (int i = 0; i < 11; ++i)
250 if (testflt128u_192 (flt128u_192[i]) != flt128ur_192[i])
251 __builtin_abort ();
252 #endif
253 #if __BITINT_MAXWIDTH__ >= 575
254 static _Float128 flt128_575[] = {
255 -1.0000019073486328125F128, -0.9999980926513671875F128, -0.125F128, -0.0F128, 0.0001F128, 0.0F128, 1.0F128, -28.0F128, 4294967294.75F128,
256 -4434536963340205213805292449887836.5F128, 7798956314177801818163892326325236647148010864640.0F128,
257 -48379475169482975928082617475070980956970510451882414558095669485086407691242420689411465910847147042640064381848760072045866350077715681395831023828798188292450661613699072.0F128,
258 -61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174784.0F128
260 static _BitInt(575) flt128r_575[] = {
261 -1wb, 0wb, 0wb, 0wb, 0wb, 0wb, 1wb, -28wb, 4294967294wb,
262 -4434536963340205213805292449887836wb, 7798956314177801818163892326325236647148010864640wb,
263 -48379475169482975928082617475070980956970510451882414558095669485086407691242420689411465910847147042640064381848760072045866350077715681395831023828798188292450661613699072wb,
264 -61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174783wb - 1wb
266 for (int i = 0; i < 13; ++i)
267 if (testflt128_575 (flt128_575[i]) != flt128r_575[i])
268 __builtin_abort ();
269 static _Float128 flt128u_575[] = {
270 -0.99999904632568359375F128, -0.75F128, -0.0F128, 4.0F128 * __FLT128_MIN__, 0.0F128, 1.0F128, 38.125F128, 4294967297.75F128,
271 1286565442597535616086070715374552.75F128, 2888274376848382435313359223769917404575136171432777745913780227423600640.0F128,
272 101012352069182509789055890148950528106809264092697629422634347377509770791198015780931797016594366657511165718215124632216959526129296364564413818230848005073384975475146752.0F128
274 static unsigned _BitInt(575) flt128ur_575[] = {
275 0uwb, 0uwb, 0uwb, 0uwb, 0uwb, 1uwb, 38uwb, 4294967297uwb,
276 1286565442597535616086070715374552uwb, 2888274376848382435313359223769917404575136171432777745913780227423600640uwb,
277 101012352069182509789055890148950528106809264092697629422634347377509770791198015780931797016594366657511165718215124632216959526129296364564413818230848005073384975475146752uwb
279 for (int i = 0; i < 11; ++i)
280 if (testflt128u_575 (flt128u_575[i]) != flt128ur_575[i])
281 __builtin_abort ();
282 #endif
283 #endif