2 /* { dg-do run { target { bitint && int32plus } } } */
3 /* { dg-options "-std=gnu23" } */
4 /* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } } */
5 /* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
7 #if defined(__SIZEOF_INT128__) && __SIZEOF_INT128__ * __CHAR_BIT__ == 128
8 #define int128_val(x, y) x
9 #define int128_bitfld(x) x
10 #define int128 __int128
12 #define int128_val(x, y) y
13 #define int128_bitfld(x) 1
16 #if __SIZEOF_SHORT__ * __CHAR_BIT__ == 16
17 #define shrt_val(x, y) x
19 #define shrt_val(x, y) y
21 #if __SIZEOF_INT__ * __CHAR_BIT__ == 32
22 #define int_val(x, y) x
24 #define int_val(x, y) y
26 #if __SIZEOF_LONG_LONG__ * __CHAR_BIT__ == 64
27 #define llong_val(x, y) x
29 #define llong_val(x, y) y
36 int128 l
: int128_bitfld (120);
38 unsigned long long n
: 42;
39 unsigned int128 o
: int128_bitfld (125);
42 #if __BITINT_MAXWIDTH__ >= 188
43 __attribute__((noipa
)) void
44 test188 (int *a
, long long *b
, int128
*c
, unsigned short *d
,
45 unsigned long long *e
, unsigned int128
*f
, _BitInt(188) *g
,
49 *b
= (_BitInt(188)) ((unsigned _BitInt(188)) g
[2] - g
[3]);
51 *d
= (_BitInt(188)) ((unsigned _BitInt(188)) g
[5] << 3);
52 *e
= (unsigned _BitInt(188)) g
[6];
58 p
->m
= (g
[13] | g
[14]) + g
[15];
64 #if __BITINT_MAXWIDTH__ >= 575
65 __attribute__((noipa
)) void
66 test575 (int *a
, long long *b
, int128
*c
, unsigned short *d
,
67 unsigned long long *e
, unsigned int128
*f
, _BitInt(575) *g
,
74 *e
= (unsigned _BitInt(575)) g
[6];
80 p
->m
= (g
[13] | g
[14]) + g
[15];
97 #if __BITINT_MAXWIDTH__ >= 188
98 _BitInt(188) g188
[18] = {
99 -159047363318536960484353065517373654721104396757490314295wb
,
100 -3121544831087579708485147608149039646353048280619431708wb
,
101 159318071862725567512368472768918962735450536041547197357wb
,
102 -40707507555068524326919847225737421498619613998666182429wb
,
103 165320903343659124097264390671505112912629878959843721491wb
,
104 -127515148002861399222757129930766493340235768486498578219wb
,
105 -105034079444454534611827588421185078564296081131064901461wb
,
106 92590184827335405203162269451222486819220604151446603018wb
,
107 -180312039117739394533672196677501644999924031772292123301wb
,
108 -144189136904129889279453036150725630022817508409138149279wb
,
109 -149481812493652088098408785514342084106630686193276241281wb
,
110 -167177289711809249257738519322903628222027157941774765457wb
,
111 -143084017548841355414802324960482130843700645074551425158wb
,
112 58479706299212198491939673148493577279739517540183806582wb
,
113 -56927106028567263826833143638316408260616106349933917222wb
,
114 -51398435670153923584906245550632035515359744807385001406wb
,
115 42134285326135692487901360354060672379510798359809381879wb
,
116 88023866651707391895300914626945857947221302817073781445wb
118 test188 (&a
, &b
, &c
, &d
, &e
, &f
, &g188
[0], &s
);
119 if (a
!= int_val (0x07181cad, (int) 230149950312043007546898625824956456638939770240892411053uwb
)
120 || b
!= llong_val ((long long) 0xde59a69b154ddacaLL
, (long long) 200025579417794091839288319994656384234070150040213379786uwb
)
121 || c
!= int128_val ((int128
) 0xd1d8047ea714e976fb0ddacd903a4113uwb
, int_val ((int) 0x903a4113, (int) 165320903343659124097264390671505112912629878959843721491uwb
))
122 || d
!= shrt_val (0x86a8, (unsigned short) 156835391362111449437153477405305506297305497945017845416uwb
)
123 || e
!= llong_val (0xf4603045301e40abULL
, (unsigned long long) 287284779017213013127909250529294072442101134147937255595uwb
)
124 || f
!= int128_val ((unsigned int128
) 0x36333fc0e67c1648df996844ae607af6uwb
, int_val ((unsigned) 0xae607af6, (unsigned) 299728673634332142536574569499256664187176611127555554038uwb
))
127 || s
.k
!= 0x0501922b16326fLL
128 || s
.l
!= int128_val ((int128
) 0xffa05b2a80ae9f589ff82df4ec30377auwb
, 0)
130 || s
.n
!= 0xbea55655f7ULL
131 || s
.o
!= int128_val ((unsigned int128
) 0x11424021a09eb39f0078be56f505dac5uwb
, 1))
134 #if __BITINT_MAXWIDTH__ >= 575
135 _BitInt(575) g575
[18] = {
136 -47005092370981353509019585272930171576138837874594474940633343041444523868768398171568402914237822300343064860032430047905208253183368063860751727493912961793713775785286761wb
,
137 42995314282090421850185028248818616047989631648441809220202839707075135953582887789310579563290411495625582960818510026163313766713468119555853185204024156985186870447558448wb
,
138 -4310949275737056279952323703666519147345926215446595910688661460043187233007608392215115192894183359414559767132447689960645444722310313612870802800517291553651832872230377wb
,
139 -60174333254167907860375485189824486743221145295071697779574672977710903042875235567137515476943834663106195143844820080789913163377976708972634731997186324672887273760550843wb
,
140 514999616465082372590625134373624423612122508361343296847148750502235576952627411211915080142588943086581680871086375952582973053262315744074678352482468176498475765238014wb
,
141 -34524529098838981071360498102806028847960079898011114995185678340915753622610778619950150604678383174181175565220899355393832542080300168653321490778607415279583262404019715wb
,
142 57435829357765689198701253918538231677782825819649130906117703766412930883719480639328241453985120284446411689340430788174994800799501628170332549761733355178989958217690176wb
,
143 55372038211321583831991526729411129160052836002754320808356246247126956944240411995457998940239431679806969029801755058644044152079840612142503912508386823751242378280351248wb
,
144 16465587034692152401588675199252528652333806863385560487958043658459465122879621696065063317705307064863781999117926295249319492796685349901264833471330673488325230233633156wb
,
145 29447367895156340838084654771430520820905636269084897202980661633115991361986283452296000775941804019961160709602424696981982973428884144037654036591675815222144356989137377wb
,
146 -11405270033186719236304815495700559798454505639686440514251001395033465367140240658561115444561532342526965619895711017904459977515469290641005572154684851264335049868864497wb
,
147 108093905149568033165371492635656748567249268116953654298668927833251941040419562425217780888127352768755220577595921193600804563557700826867049089803222938826670338302530wb
,
148 -31360750000107936163671456129190056884574874172627927813113803212980739137815442376155550405060248732467083955605320651972161402853892464960579922753500965033770359737153351wb
,
149 -8682946747028473458400698043390376356896046446946536663094478822504353095327345833145506855874926356083877643554724567774187375944555393553847900623220497209797513931185240wb
,
150 -22144855016132297032977142230889176517935104503579623594553342478323802903759572545707546713930097548953805249628758279309623598839610808070152925878316419950140234764905470wb
,
151 -10411562563660012059020319572234253583259323305689321838048522585769451002745393609294442107707749261789472265492124615971403756074402546875951159988775650555291608910079211wb
,
152 -35303144058707185327630269206553728380732193353770095499658757423571059983534369285427585500543929872684039303017125049206013674506050937891922504600168970885730004765890909wb
,
153 -10288638308173362696633233706439807781761277611815792314525923347956953720054374840733498198399501888078817738532473821245337293721068994241744635656437058172223152460622488wb
155 test575 (&a
, &b
, &c
, &d
, &e
, &f
, &g575
[0], &s
);
156 if (a
!= int_val (-0x2a104d39, (int) -4009778088890931658834557024111555528149206226152665720430503334369387915185510382257823350947410804717481899213920021741894486469899944304898542289888804808526905337728313wb
)
157 || b
!= llong_val ((long long) 0xf6c7e117bacd11d2LL
, (long long) 55863383978430851580423161486157967595875219079625101868886011517667715809867627174922400284049651303691635376712372390829267718655666395359763929196669033119235440888320466uwb
)
158 || c
!= int128_val ((int128
) 0x75504b73f68a3225400491eb337288feuwb
, int_val ((int) 0x337288fe, (int) 514999616465082372590625134373624423612122508361343296847148750502235576952627411211915080142588943086581680871086375952582973053262315744074678352482468176498475765238014uwb
))
159 || d
!= shrt_val (0xcfe8, (unsigned short) 94799369418944952519869796707022554269016384467728839909609157412019808678911571795873396754437502090947102617257014165876387214817725465724747306423980429638244058990890984uwb
)
160 || e
!= llong_val (0xa6a61a4adeb96c40ULL
, (unsigned long long) 57435829357765689198701253918538231677782825819649130906117703766412930883719480639328241453985120284446411689340430788174994800799501628170332549761733355178989958217690176uwb
)
161 || f
!= int128_val ((unsigned int128
) 0xd2a8d84eae8410641083c38afaa549f0uwb
, int_val ((unsigned) 0xfaa549f0, (unsigned) 68293162525230683198259733780412465857512838547851599148675281799321655609025521589700201590382090814991866683206314611031638365073534992841269165042559760207061007793998320uwb
))
164 || s
.k
!= -0x1bddffff3afffeLL
165 || s
.l
!= int128_val ((int128
) 0xffb52493069ee4e254bf24bbba7a08b9uwb
, -1)
167 || s
.n
!= 0x1cbf11e26a3ULL
168 || s
.o
!= int128_val ((unsigned int128
) 0x12a63362222ec8f7f2c7e52793b49568uwb
, 0))