/* PR c/102989 */ /* { dg-do run { target bitint } } */ /* { dg-options "-std=c23 -pedantic-errors" } */ /* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } } */ /* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */ #if __BITINT_MAXWIDTH__ >= 192 __attribute__((noipa)) void test135_171_192 (_BitInt(135) *p, _BitInt(171) *q, _BitInt(192) *r, unsigned _BitInt(135) *s, unsigned _BitInt(171) *t, unsigned _BitInt(192) *u, int n) { p[5] = q[0]; q[5] = p[0] + p[1]; p[6] = r[0]; r[5] = p[1]; q[6] = r[1] + r[0]; r[6] = q[1]; p[7] = (unsigned _BitInt(135)) t[0] + (_BitInt(135)) t[1]; q[7] = s[0]; p[8] = u[0]; r[7] = s[1]; q[8] = u[1]; r[8] = t[1]; s[5] = q[2] - q[3]; t[5] = p[2]; s[6] = r[2]; u[5] = p[3]; t[6] = r[3]; u[6] = q[3]; s[7] = t[2]; t[7] = s[2]; s[8] = u[2]; u[7] = s[3]; t[8] = u[3]; u[8] = t[3]; u[9] = ((_BitInt(171)) (p[2] + p[3]) + q[2]) + u[2]; p[9] = q[4] < p[4]; q[9] = t[4] >= u[4]; s[9] = ((_BitInt(171)) p[4]) << n; t[9] = ((_BitInt(171)) s[4]) >> n; } #endif #if __BITINT_MAXWIDTH__ >= 575 __attribute__((noipa)) void test522_547_575 (_BitInt(522) *p, _BitInt(547) *q, _BitInt(575) *r, unsigned _BitInt(522) *s, unsigned _BitInt(547) *t, unsigned _BitInt(575) *u, int n) { p[5] = q[0]; q[5] = p[0] + p[1]; p[6] = r[0]; r[5] = p[1]; q[6] = r[1] + r[0]; r[6] = q[1]; p[7] = (unsigned _BitInt(522)) t[0] + (_BitInt(522)) t[1]; q[7] = s[0]; p[8] = u[0]; r[7] = s[1]; q[8] = u[1]; r[8] = t[1]; s[5] = q[2] - q[3]; t[5] = p[2]; s[6] = r[2]; u[5] = p[3]; t[6] = r[3]; u[6] = q[3]; s[7] = t[2]; t[7] = s[2]; s[8] = u[2]; u[7] = s[3]; t[8] = u[3]; u[8] = t[3]; u[9] = ((_BitInt(547)) (p[2] + p[3]) + q[2]) + u[2]; p[9] = q[4] < p[4]; q[9] = t[4] >= u[4]; s[9] = ((_BitInt(547)) p[4]) << n; t[9] = ((_BitInt(547)) s[4]) >> n; } #endif int main () { #if __BITINT_MAXWIDTH__ >= 192 static _BitInt(135) p135[15] = { -21017626881393060962682831099345275646127wb, 3694296893212130938499913614460066245857wb, -346978153630491292366720842786572608600wb, -12051883812785324688960115817645360041052wb, 894554736479161756765856528934783wb, 0, 0, 0, 0, 0, -10126751695395432170173641758862456728384wb, 5972941260331487493885375988782293547456wb, 1994359513041991206938472369666304432410wb, -6563811307898601259032789037472160962572wb, 0wb }; static _BitInt(171) q171[15] = { -625366993761622480400669212262678861717858330946368wb, 824211109381944261174032176940659654188131012437179wb, 546292738086463798921197562372110173424343217923278wb, 511148834019524346739032507408677732131367119592267wb, 347611384453999342493570524785293850801864814800614wb, 0, 0, 0, 0, 0, -17323329988180930024182917484885209400270wb, -1427703038865092853121951937517407564490420667866520wb, 38147269358417182782171905780014948953272wb, 467958077036848086326034408503276340843337835865495wb, 0wb }; static _BitInt(192) r192[15] = { 1392184189278706283348529493736576751111606618688367065536wb, 1141852629791713898948497335488732622599274881068663548072wb, -2714462128387415582772926191122594432964111301268533078042wb, 2425769388758313376333650042373508250767256770936531653671wb, 2720431110756499648348639705956093809255126267584967484234wb, 0, 0, 0, 0, 0, 3694296893212130938499913614460066245857wb, 824211109381944261174032176940659654188131012437179wb, 24158489198104933635096197097903724015499wb, 606766803137851050688065717544996275384988908585315wb, 0wb }; static unsigned _BitInt(135) s135[15] = { 38147269358417182782171905780014948953272uwb, 24158489198104933635096197097903724015499uwb, 15056704170354189252536066857287800623071uwb, 25206995790075003034339862074263410882988uwb, 19207954769547491779143235037830592504231uwb, 0, 0, 0, 0, 0, 31754930256886813275958100253331871451523uwb, 15245728220153286789447947809930478163942uwb, 9156112246512545688879043617340759142722uwb, 40264644850602433398431024975343109499285uwb, 41168227647461841063600478959378800574464uwb }; static unsigned _BitInt(171) t171[15] = { 485349495244621624686447991535899196145754495768503uwb, 606766803137851050688065717544996275384988908585315uwb, 333199438528630292656855934377866394553406065406274uwb, 2139385105954223838532102833374805075850015235549769uwb, 1678008128571185237771726930519720682651619103697237uwb, 0, 0, 0, 0, 0, 2993155353253342198327516046110580903412563275406248uwb, 2550578100027524622604893738184060999550811074270247uwb, 15056704170354189252536066857287800623071uwb, 699234106698292061166730462199993896682394735156989uwb, 4367383273699372643737486905uwb }; static unsigned _BitInt(192) u192[15] = { 4671639464410605725298192070070307015392908693211956881396uwb, 715636974522854835742140132808616653707176693849553888663uwb, 457579096729186368426895847730802215502050535098936945045uwb, 1103175995161405903311011421434916994075193954478175624957uwb, 5439093776557462873830329048469734037495210381156250832820uwb, 0, 0, 0, 0, 0, 6277101735386680751783905610422341727142239626818674471844uwb, 511148834019524346739032507408677732131367119592267uwb, 25206995790075003034339862074263410882988uwb, 2139385105954223838532102833374805075850015235549769uwb, 457579643021924442491832802512548606285387299010222218671uwb }; test135_171_192 (p135, q171, r192, s135, t171, u192, 42); for (int i = 5; i < 10; ++i) if (p135[i] != p135[i + 5] || q171[i] != q171[i + 5] || r192[i] != r192[i + 5] || s135[i] != s135[i + 5] || t171[i] != t171[i + 5] || u192[i] != u192[i + 5]) __builtin_abort (); #endif #if __BITINT_MAXWIDTH__ >= 575 static _BitInt(522) p522[15] = { 1688583697238081957015024340932764748327491668109158685467058555721380506305071231550264349039164029945469865795968233973631543964236809100573066960995245177wb, 150663282285775450662414365350419405945541820765219523130929531002923088277160545114254251148525286476983773283235468282002045173141196158353616014355287094wb, -479060863800931266429781304885104017131749664329186246406335179483194313801808166262041921602861985862332756318078499039394820190197870580545316549380449074wb, 1359131269843466711194682581441372588504604777186075559309941421522168913086212721229905012023237380094986736934464910421922092415050027946837562847761546642wb, 38005189198839309539384162035472227153066377585338581102543574055575777451369497515143095968263424053357137645031423561696064649082930963wb, 0, 0, 0, 0, 0, 1911076617401423887269840833410267237705130466676958152037861477885277722749139605040038160132075189228439111066941630564324402605816835862488337890450123441wb, 2143747820933189266943449152733920616973804237879618575235243631855378946947754007625444647681930476713800905339559157073740302180956472245149919774437085550wb, 3020328738802050781697314194154464021447637901030508296205170033161531452424686777206896481266404991349073132253866303142608091273541629412071886412132279688wb, 3548552946267883916132218767540000478942702862442658213517298532968411704728913569849574500607350293984423898514369017381981825383513090204371793724097677500wb, 0wb }; static _BitInt(547) q547[15] = { -165353820935998006231385303476800492106677276950834360813262262140867129737290132086107434762098834639119492256272880571578714556242252134191835397505691625332102479wb, 183695555784071631934553514377048200879108759149452364923958570648444896373196632060114376244737698247102365620343713172199496472928539579603161884440477984840044187wb, 139975743565335456314316356647588328869546947948448304225648231332737456493208842047425843515598984558359834966436458515450535075922755618635258426884425597017306862wb, -68977268331926408936317559581002324220146009615687701127254186456806021645364222184642001923334926042747842307638529875034306779796443629804024646337944171607895438wb, 91932189605038085807227077574075596679601857184786010334359253878486168031464536332131456527844457578512045265477412819469725001337530261064906167819503147594853366wb, 0, 0, 0, 0, 0, 1839246979523857407677438706283184154273033488874378208597988086724303594582231776664518600187689316422453639079203702255633589137378005258926682975350532271wb, 49151230401218799957130323446282917069028231656715550463945235235623430774823230155689924560414670278246826717504404635655151576036315823360722825188858286217308439wb, 9553161692302515408090681902990032962274757557255101236499698228392460650767938620693069133770230123184487473131034348424915457011452743114281594442529356918wb, 148466349169509850971880825885649862512888667929683428885486286008574376924695036417770580112507292038258577594242665019379719515779240480203475588034326681778827837wb, 0wb }; static _BitInt(575) r575[15] = { 26826731245669206245461391126964073367685598786847623620556904941634299886033194729072082303506281733460775551098898854360334228479162479457887049265892154734615530822766958wb, -17252637235610200065109317402231975926530699783926188946291304643884915080832768297094963378392971235218154081350840664198841060114648240981027529664968282740385246545569879wb, -52927846040946009564438022882734367309063070035915874157090678963969555482365010516321242268874731309847996546526357803037049653154886399755465425844249799943139498370138356wb, 43797192926762436278400269352553576566711887692587698009480808423919842536790683665562833898774167035902777714908510813261288364232387952547718429572231820909634939092793538wb, 20234448725793738746286884524404371396011280587539411448314107254021820060093226611203035940379115510914907477160212849326875709895927134019157662749025851187493640146044781wb, 0, 0, 0, 0, 0, 150663282285775450662414365350419405945541820765219523130929531002923088277160545114254251148525286476983773283235468282002045173141196158353616014355287094wb, 183695555784071631934553514377048200879108759149452364923958570648444896373196632060114376244737698247102365620343713172199496472928539579603161884440477984840044187wb, 4851258619379431619519122339214063398230494067942295987016754503060997355109186638667322723996572842157209194651881355085513631695628096402419719096882984119wb, 270940858229872855030935066513853051367534588484589172383739756326100509416298021769516239928911004114519037087137992976731526127660469862578530915810061315551592797wb, 0wb }; static unsigned _BitInt(522) s522[15] = { 9553161692302515408090681902990032962274757557255101236499698228392460650767938620693069133770230123184487473131034348424915457011452743114281594442529356918uwb, 4851258619379431619519122339214063398230494067942295987016754503060997355109186638667322723996572842157209194651881355085513631695628096402419719096882984119uwb, 6042770678215430693640419990277820504092375118859355031950453294245655804901016852383090438332300632578629742514358616423826815593825261808316937209844323511uwb, 12051208019451501933403724997574202861308205865422702777923943166771946439789370797531339169859679650622650974816793351928749417853531441599839154382248843947uwb, 4221662083598509731422820533439331938122897651286500598721158769592271101088973546986107452648130743363570867708770978567950497328105753210259754199339698436uwb, 0, 0, 0, 0, 0, 7875787883122370015751284313157111317906983827437747001268058546750891954500439966161560575930887369730973089278944338386239832138713121400371960426603537532uwb, 1744137654875073805109882450938570695232931878270397801451971688045434401366666192926859108662009962657770297731676696275736871955838688525022864084574797580uwb, 1384759081458967898144776881134701550216992364037761109180860974761009009582780990796335747812536429464522433496147744197656107248393986692577240524935263967uwb, 5124843933530741349702512002787631405197501632531242713014934699385673582868823319052853705098680028945536856890553829308345383420583019490169170519445809329uwb, 167148589759802650246016819120863239719632156514525854640607511535259699817887971573240690630534000867480233158226351195963838422746014594980644913152uwb }; static unsigned _BitInt(547) t547[15] = { 118704181285368794475444886856018739380810770111464325340905883331118179085356913273672350794295633026214255802587734669771992302197074150034392332589894477800891435uwb, 270940858229872855030935066513853051367534588484589172383739756326100509416298021769516239928911004114519037087137992976731526127660469862578530915810061315551592797uwb, 148318595435099152643319192673870560615622574014851374282185242873863044665507345404380126683143560616100080924441878075099797842853873146415865873849906128482858719uwb, 400009336874533540769201404797235801738671871521831649835366524748844548359672560304665337919920648881530376390480880285772783211641574132727624581374918623770667162uwb, 312402853341542293879363014443999872603984243465217297921316340174779530859340793778010030453656373118302384722907441723040044092150534190429029290814183834885671793uwb, 0, 0, 0, 0, 0, 460688772082162445798867876757263237463152967782366598900331124229116988777566044118861599994996502169289915386539783342538027404687796097956601373975276229385346254uwb, 110154623692678850196652173379922527637463658741605878515537649114990721104784513051339522805651918716345423521491055109328010793688754512750702811781309047768676546uwb, 6042770678215430693640419990277820504092375118859355031950453294245655804901016852383090438332300632578629742514358616423826815593825261808316937209844323511uwb, 399932168246430744543441055162559648552560119213629719844739099564504242321283467689573394637126627461985951275205392441444721842415628268892060247464270805433239423uwb, 959894824427126361893629230835206712554940543506404673899205310952372906533349475236288402049497277258426690357003048704416527773015730692863997uwb }; static unsigned _BitInt(575) u575[15] = { 99465403292080375994166564143758974423715332054535509951564765439354460753284837794651681099567775806058182781885452212314717097157170419602135858778485292072068230160566460uwb, 88608049883790202897201248133818379667781926476953929504091250051759382873398323059272759974739854128718622623196375150866798266503497028016169226040920220555730755500552765uwb, 109996629797150279215121425420517668082012320009431263010584742106213909329388552729870453505045429145144806346761163201752908500506299217142569716987778685190706093716744369uwb, 79085012468256116329498575277619682348270018511342269619476165669326091481750859826134218624634485255862979362030324907252864643018828592244764325998135532395602379128096639uwb, 66159275290347502690275324386397674256469688848451250551469155682688473691401346605236603803735518810344975633814051516285290687587632060625865757225821322257077271128705141uwb, 0, 0, 0, 0, 0, 1359131269843466711194682581441372588504604777186075559309941421522168913086212721229905012023237380094986736934464910421922092415050027946837562847761546642uwb, 123665200667574998698324851573506035436563350330459910341343826919194426096459911939793978345979520571463909670260227362037152642119068825187329447746921937620359214466454130uwb, 12051208019451501933403724997574202861308205865422702777923943166771946439789370797531339169859679650622650974816793351928749417853531441599839154382248843947uwb, 400009336874533540769201404797235801738671871521831649835366524748844548359672560304665337919920648881530376390480880285772783211641574132727624581374918623770667162uwb, 109996629937126023660527287777369469494501925435246782331888159188751453565732251262053894836875827628606881325496392400843347632343245675592597560475194478367377989115148799uwb }; test522_547_575 (p522, q547, r575, s522, t547, u575, 42); for (int i = 5; i < 10; ++i) if (p522[i] != p522[i + 5] || q547[i] != q547[i + 5] || r575[i] != r575[i + 5] || s522[i] != s522[i + 5] || t547[i] != t547[i + 5] || u575[i] != u575[i + 5]) __builtin_abort (); #endif }