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
)
15 __attribute__((noipa
)) unsigned _BitInt(135)
16 testldblu_135 (long double d
)
22 #if __BITINT_MAXWIDTH__ >= 192
23 __attribute__((noipa
)) _BitInt(192)
24 testldbl_192 (long double d
)
29 __attribute__((noipa
)) unsigned _BitInt(192)
30 testldblu_192 (long double d
)
36 #if __BITINT_MAXWIDTH__ >= 575
37 __attribute__((noipa
)) _BitInt(575)
38 testldbl_575 (long double d
)
43 __attribute__((noipa
)) unsigned _BitInt(575)
44 testldblu_575 (long double d
)
51 #if __FLT128_MANT_DIG__ == 113
52 #if __BITINT_MAXWIDTH__ >= 135
53 __attribute__((noipa
)) _BitInt(135)
54 testflt128_135 (_Float128 d
)
59 __attribute__((noipa
)) unsigned _BitInt(135)
60 testflt128u_135 (_Float128 d
)
66 #if __BITINT_MAXWIDTH__ >= 192
67 __attribute__((noipa
)) _BitInt(192)
68 testflt128_192 (_Float128 d
)
73 __attribute__((noipa
)) unsigned _BitInt(192)
74 testflt128u_192 (_Float128 d
)
80 #if __BITINT_MAXWIDTH__ >= 575
81 __attribute__((noipa
)) _BitInt(575)
82 testflt128_575 (_Float128 d
)
87 __attribute__((noipa
)) unsigned _BitInt(575)
88 testflt128u_575 (_Float128 d
)
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
])
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
])
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
])
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
])
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
])
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
])
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
])
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
])
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
])
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
])
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
])
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
])