middle-end: copy STMT_VINFO_STRIDED_P when DR is replaced [PR116956]
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / bitint-13.c
blob30bee083baa4fd6b4cef364148462bb55806d969
1 /* PR c/102989 */
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
11 #else
12 #define int128_val(x, y) y
13 #define int128_bitfld(x) 1
14 #define int128 int
15 #endif
16 #if __SIZEOF_SHORT__ * __CHAR_BIT__ == 16
17 #define shrt_val(x, y) x
18 #else
19 #define shrt_val(x, y) y
20 #endif
21 #if __SIZEOF_INT__ * __CHAR_BIT__ == 32
22 #define int_val(x, y) x
23 #else
24 #define int_val(x, y) y
25 #endif
26 #if __SIZEOF_LONG_LONG__ * __CHAR_BIT__ == 64
27 #define llong_val(x, y) x
28 #else
29 #define llong_val(x, y) y
30 #endif
32 struct S {
33 int i : 1;
34 int j : 27;
35 long long k : 56;
36 int128 l : int128_bitfld (120);
37 unsigned m : 3;
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,
46 struct S *p)
48 *a = g[0] + g[1];
49 *b = (_BitInt(188)) ((unsigned _BitInt(188)) g[2] - g[3]);
50 *c = g[4];
51 *d = (_BitInt(188)) ((unsigned _BitInt(188)) g[5] << 3);
52 *e = (unsigned _BitInt(188)) g[6];
53 *f = -g[7];
54 p->i = g[8] | 256wb;
55 p->j = g[9] ^ 513wb;
56 p->k = g[10] & g[11];
57 p->l = g[12];
58 p->m = (g[13] | g[14]) + g[15];
59 p->n = g[16];
60 p->o = g[17];
62 #endif
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,
68 struct S *p)
70 *a = g[0] + g[1];
71 *b = g[2] - g[3];
72 *c = g[4];
73 *d = g[5] << 3;
74 *e = (unsigned _BitInt(575)) g[6];
75 *f = -g[7];
76 p->i = g[8] | 256wb;
77 p->j = g[9] ^ 513wb;
78 p->k = g[10] & g[11];
79 p->l = g[12];
80 p->m = (g[13] | g[14]) + g[15];
81 p->n = g[16];
82 p->o = g[17];
84 #endif
86 int
87 main ()
89 struct S s;
90 int a;
91 long long b;
92 int128 c;
93 unsigned short d;
94 unsigned long long e;
95 unsigned int128 f;
96 (void) &s;
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))
125 || s.i != -1
126 || s.j != 0x3150a60
127 || s.k != 0x0501922b16326fLL
128 || s.l != int128_val ((int128) 0xffa05b2a80ae9f589ff82df4ec30377auwb, 0)
129 || s.m != 0
130 || s.n != 0xbea55655f7ULL
131 || s.o != int128_val ((unsigned int128) 0x11424021a09eb39f0078be56f505dac5uwb, 1))
132 __builtin_abort ();
133 #endif
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))
162 || s.i != 0
163 || s.j != -0x2920c20
164 || s.k != -0x1bddffff3afffeLL
165 || s.l != int128_val ((int128) 0xffb52493069ee4e254bf24bbba7a08b9uwb, -1)
166 || s.m != 7
167 || s.n != 0x1cbf11e26a3ULL
168 || s.o != int128_val ((unsigned int128) 0x12a63362222ec8f7f2c7e52793b49568uwb, 0))
169 __builtin_abort ();
170 #endif