877 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -passes=inline < %s | FileCheck %s3; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -passes='cgscc(inline)' < %s | FileCheck %s4 5define i32 @func_default() {6; CHECK-LABEL: @func_default(7; CHECK-NEXT: ret i32 08;9 ret i32 010}11 12define i32 @func_ieee_ieee() #0 {13; CHECK-LABEL: @func_ieee_ieee(14; CHECK-NEXT: ret i32 115;16 ret i32 117}18 19define i32 @func_psz_psz() #1 {20; CHECK-LABEL: @func_psz_psz(21; CHECK-NEXT: ret i32 222;23 ret i32 224}25 26define i32 @func_psz_ieee() #2 {27; CHECK-LABEL: @func_psz_ieee(28; CHECK-NEXT: ret i32 329;30 ret i32 331}32 33define i32 @func_ieee_psz() #3 {34; CHECK-LABEL: @func_ieee_psz(35; CHECK-NEXT: ret i32 436;37 ret i32 438}39 40define i32 @func_dynamic_dynamic() #4 {41; CHECK-LABEL: @func_dynamic_dynamic(42; CHECK-NEXT: ret i32 543;44 ret i32 545}46 47define i32 @func_dynamic_ieee() #5 {48; CHECK-LABEL: @func_dynamic_ieee(49; CHECK-NEXT: ret i32 650;51 ret i32 652}53 54define i32 @func_ieee_dynamic() #6 {55; CHECK-LABEL: @func_ieee_dynamic(56; CHECK-NEXT: ret i32 757;58 ret i32 759}60 61define i32 @func_psz_dynamic() #7 {62; CHECK-LABEL: @func_psz_dynamic(63; CHECK-NEXT: ret i32 864;65 ret i32 866}67 68define i32 @func_dynamic_psz() #8 {69; CHECK-LABEL: @func_dynamic_psz(70; CHECK-NEXT: ret i32 971;72 ret i32 973}74 75define i32 @call_default_from_psz_psz() #1 {76; CHECK-LABEL: @call_default_from_psz_psz(77; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_default()78; CHECK-NEXT: ret i32 [[CALL]]79;80 %call = call i32 @func_default()81 ret i32 %call82}83 84define i32 @call_ieee_ieee_from_ieee_ieee() #0 {85; CHECK-LABEL: @call_ieee_ieee_from_ieee_ieee(86; CHECK-NEXT: ret i32 187;88 %call = call i32 @func_ieee_ieee()89 ret i32 %call90}91 92define i32 @call_ieee_ieee_from_psz_psz() #1 {93; CHECK-LABEL: @call_ieee_ieee_from_psz_psz(94; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_ieee()95; CHECK-NEXT: ret i32 [[CALL]]96;97 %call = call i32 @func_ieee_ieee()98 ret i32 %call99}100 101define i32 @call_psz_psz_from_ieee_ieee() #0 {102; CHECK-LABEL: @call_psz_psz_from_ieee_ieee(103; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_psz()104; CHECK-NEXT: ret i32 [[CALL]]105;106 %call = call i32 @func_psz_psz()107 ret i32 %call108}109 110define i32 @call_psz_psz_from_psz_psz() #1 {111; CHECK-LABEL: @call_psz_psz_from_psz_psz(112; CHECK-NEXT: ret i32 2113;114 %call = call i32 @func_psz_psz()115 ret i32 %call116}117 118define i32 @call_psz_ieee_from_psz_psz() #1 {119; CHECK-LABEL: @call_psz_ieee_from_psz_psz(120; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_ieee()121; CHECK-NEXT: ret i32 [[CALL]]122;123 %call = call i32 @func_psz_ieee()124 ret i32 %call125}126 127define i32 @call_ieee_psz_from_psz_psz() #1 {128; CHECK-LABEL: @call_ieee_psz_from_psz_psz(129; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_psz()130; CHECK-NEXT: ret i32 [[CALL]]131;132 %call = call i32 @func_ieee_psz()133 ret i32 %call134}135 136define i32 @call_psz_ieee_from_ieee_ieee() #0 {137; CHECK-LABEL: @call_psz_ieee_from_ieee_ieee(138; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_ieee()139; CHECK-NEXT: ret i32 [[CALL]]140;141 %call = call i32 @func_psz_ieee()142 ret i32 %call143}144 145define i32 @call_ieee_psz_from_ieee_ieee() #0 {146; CHECK-LABEL: @call_ieee_psz_from_ieee_ieee(147; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_psz()148; CHECK-NEXT: ret i32 [[CALL]]149;150 %call = call i32 @func_ieee_psz()151 ret i32 %call152}153 154define i32 @call_ieee_ieee_from_psz_ieee() #2 {155; CHECK-LABEL: @call_ieee_ieee_from_psz_ieee(156; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_ieee()157; CHECK-NEXT: ret i32 [[CALL]]158;159 %call = call i32 @func_ieee_ieee()160 ret i32 %call161}162 163define i32 @call_psz_ieee_from_psz_ieee() #2 {164; CHECK-LABEL: @call_psz_ieee_from_psz_ieee(165; CHECK-NEXT: ret i32 3166;167 %call = call i32 @func_psz_ieee()168 ret i32 %call169}170 171define i32 @call_ieee_psz_from_psz_ieee() #2 {172; CHECK-LABEL: @call_ieee_psz_from_psz_ieee(173; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_psz()174; CHECK-NEXT: ret i32 [[CALL]]175;176 %call = call i32 @func_ieee_psz()177 ret i32 %call178}179 180define i32 @call_psz_psz_from_psz_ieee() #2 {181; CHECK-LABEL: @call_psz_psz_from_psz_ieee(182; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_psz()183; CHECK-NEXT: ret i32 [[CALL]]184;185 %call = call i32 @func_psz_psz()186 ret i32 %call187}188 189define i32 @call_ieee_ieee_from_ieee_psz() #3 {190; CHECK-LABEL: @call_ieee_ieee_from_ieee_psz(191; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_ieee()192; CHECK-NEXT: ret i32 [[CALL]]193;194 %call = call i32 @func_ieee_ieee()195 ret i32 %call196}197 198define i32 @call_psz_ieee_from_ieee_psz() #3 {199; CHECK-LABEL: @call_psz_ieee_from_ieee_psz(200; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_ieee()201; CHECK-NEXT: ret i32 [[CALL]]202;203 %call = call i32 @func_psz_ieee()204 ret i32 %call205}206 207define i32 @call_ieee_psz_from_ieee_psz() #3 {208; CHECK-LABEL: @call_ieee_psz_from_ieee_psz(209; CHECK-NEXT: ret i32 4210;211 %call = call i32 @func_ieee_psz()212 ret i32 %call213}214 215define i32 @call_psz_psz_from_ieee_psz() #3 {216; CHECK-LABEL: @call_psz_psz_from_ieee_psz(217; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_psz()218; CHECK-NEXT: ret i32 [[CALL]]219;220 %call = call i32 @func_psz_psz()221 ret i32 %call222}223 224define i32 @call_dynamic_dynamic_from_ieee_ieee() #0 {225; CHECK-LABEL: @call_dynamic_dynamic_from_ieee_ieee(226; CHECK-NEXT: ret i32 5227;228 %call = call i32 @func_dynamic_dynamic()229 ret i32 %call230}231 232define i32 @call_dynamic_ieee_from_ieee_ieee() #0 {233; CHECK-LABEL: @call_dynamic_ieee_from_ieee_ieee(234; CHECK-NEXT: ret i32 6235;236 %call = call i32 @func_dynamic_ieee()237 ret i32 %call238}239 240define i32 @call_ieee_dynamic_from_ieee_ieee() #0 {241; CHECK-LABEL: @call_ieee_dynamic_from_ieee_ieee(242; CHECK-NEXT: ret i32 7243;244 %call = call i32 @func_ieee_dynamic()245 ret i32 %call246}247 248define i32 @call_dynamic_psz_from_ieee_ieee() #0 {249; CHECK-LABEL: @call_dynamic_psz_from_ieee_ieee(250; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_psz()251; CHECK-NEXT: ret i32 [[CALL]]252;253 %call = call i32 @func_dynamic_psz()254 ret i32 %call255}256 257define i32 @call_psz_dynamic_from_ieee_ieee() #0 {258; CHECK-LABEL: @call_psz_dynamic_from_ieee_ieee(259; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_dynamic()260; CHECK-NEXT: ret i32 [[CALL]]261;262 %call = call i32 @func_psz_dynamic()263 ret i32 %call264}265 266define i32 @call_dynamic_dynamic_from_psz_psz() #1 {267; CHECK-LABEL: @call_dynamic_dynamic_from_psz_psz(268; CHECK-NEXT: ret i32 5269;270 %call = call i32 @func_dynamic_dynamic()271 ret i32 %call272}273 274define i32 @call_ieee_dynamic_from_psz_psz() #1 {275; CHECK-LABEL: @call_ieee_dynamic_from_psz_psz(276; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_dynamic()277; CHECK-NEXT: ret i32 [[CALL]]278;279 %call = call i32 @func_ieee_dynamic()280 ret i32 %call281}282 283define i32 @call_dynamic_ieee_from_psz_psz() #1 {284; CHECK-LABEL: @call_dynamic_ieee_from_psz_psz(285; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_ieee()286; CHECK-NEXT: ret i32 [[CALL]]287;288 %call = call i32 @func_dynamic_ieee()289 ret i32 %call290}291 292define i32 @call_psz_dynamic_from_psz_psz() #1 {293; CHECK-LABEL: @call_psz_dynamic_from_psz_psz(294; CHECK-NEXT: ret i32 8295;296 %call = call i32 @func_psz_dynamic()297 ret i32 %call298}299 300define i32 @call_dynamic_psz_from_psz_psz() #1 {301; CHECK-LABEL: @call_dynamic_psz_from_psz_psz(302; CHECK-NEXT: ret i32 9303;304 %call = call i32 @func_dynamic_psz()305 ret i32 %call306}307 308define i32 @call_dynamic_dynamic_from_psz_ieee() #2 {309; CHECK-LABEL: @call_dynamic_dynamic_from_psz_ieee(310; CHECK-NEXT: ret i32 5311;312 %call = call i32 @func_dynamic_dynamic()313 ret i32 %call314}315 316define i32 @call_dynamic_ieee_from_psz_ieee() #2 {317; CHECK-LABEL: @call_dynamic_ieee_from_psz_ieee(318; CHECK-NEXT: ret i32 6319;320 %call = call i32 @func_dynamic_ieee()321 ret i32 %call322}323 324define i32 @call_ieee_dynamic_from_psz_ieee() #2 {325; CHECK-LABEL: @call_ieee_dynamic_from_psz_ieee(326; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_dynamic()327; CHECK-NEXT: ret i32 [[CALL]]328;329 %call = call i32 @func_ieee_dynamic()330 ret i32 %call331}332 333define i32 @call_dynamic_psz_from_psz_ieee() #2 {334; CHECK-LABEL: @call_dynamic_psz_from_psz_ieee(335; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_psz()336; CHECK-NEXT: ret i32 [[CALL]]337;338 %call = call i32 @func_dynamic_psz()339 ret i32 %call340}341 342define i32 @call_psz_dynamic_from_psz_ieee() #2 {343; CHECK-LABEL: @call_psz_dynamic_from_psz_ieee(344; CHECK-NEXT: ret i32 8345;346 %call = call i32 @func_psz_dynamic()347 ret i32 %call348}349 350define i32 @call_dynamic_dynamic_from_ieee_psz() #3 {351; CHECK-LABEL: @call_dynamic_dynamic_from_ieee_psz(352; CHECK-NEXT: ret i32 5353;354 %call = call i32 @func_dynamic_dynamic()355 ret i32 %call356}357 358define i32 @call_ieee_dynamic_from_ieee_psz() #3 {359; CHECK-LABEL: @call_ieee_dynamic_from_ieee_psz(360; CHECK-NEXT: ret i32 7361;362 %call = call i32 @func_ieee_dynamic()363 ret i32 %call364}365 366define i32 @call_dynamic_ieee_from_ieee_psz() #3 {367; CHECK-LABEL: @call_dynamic_ieee_from_ieee_psz(368; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_ieee()369; CHECK-NEXT: ret i32 [[CALL]]370;371 %call = call i32 @func_dynamic_ieee()372 ret i32 %call373}374 375define i32 @call_dynamic_psz_from_ieee_psz() #3 {376; CHECK-LABEL: @call_dynamic_psz_from_ieee_psz(377; CHECK-NEXT: ret i32 9378;379 %call = call i32 @func_dynamic_psz()380 ret i32 %call381}382 383define i32 @call_psz_dynamic_from_ieee_psz() #3 {384; CHECK-LABEL: @call_psz_dynamic_from_ieee_psz(385; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_dynamic()386; CHECK-NEXT: ret i32 [[CALL]]387;388 %call = call i32 @func_psz_dynamic()389 ret i32 %call390}391 392define i32 @call_dynamic_dynamic_from_dynamic_dynamic() #4 {393; CHECK-LABEL: @call_dynamic_dynamic_from_dynamic_dynamic(394; CHECK-NEXT: ret i32 5395;396 %call = call i32 @func_dynamic_dynamic()397 ret i32 %call398}399 400define i32 @call_ieee_ieee_from_dynamic_dynamic() #4 {401; CHECK-LABEL: @call_ieee_ieee_from_dynamic_dynamic(402; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_ieee()403; CHECK-NEXT: ret i32 [[CALL]]404;405 %call = call i32 @func_ieee_ieee()406 ret i32 %call407}408 409define i32 @call_ieee_dynamic_from_dynamic_dynamic() #4 {410; CHECK-LABEL: @call_ieee_dynamic_from_dynamic_dynamic(411; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_dynamic()412; CHECK-NEXT: ret i32 [[CALL]]413;414 %call = call i32 @func_ieee_dynamic()415 ret i32 %call416}417 418define i32 @call_dynamic_ieee_from_dynamic_dynamic() #4 {419; CHECK-LABEL: @call_dynamic_ieee_from_dynamic_dynamic(420; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_ieee()421; CHECK-NEXT: ret i32 [[CALL]]422;423 %call = call i32 @func_dynamic_ieee()424 ret i32 %call425}426 427define i32 @call_psz_dynamic_from_dynamic_dynamic() #4 {428; CHECK-LABEL: @call_psz_dynamic_from_dynamic_dynamic(429; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_dynamic()430; CHECK-NEXT: ret i32 [[CALL]]431;432 %call = call i32 @func_psz_dynamic()433 ret i32 %call434}435 436define i32 @call_dynamic_psz_from_dynamic_dynamic() #4 {437; CHECK-LABEL: @call_dynamic_psz_from_dynamic_dynamic(438; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_psz()439; CHECK-NEXT: ret i32 [[CALL]]440;441 %call = call i32 @func_dynamic_psz()442 ret i32 %call443}444 445define i32 @call_psz_psz_from_dynamic_dynamic() #4 {446; CHECK-LABEL: @call_psz_psz_from_dynamic_dynamic(447; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_psz()448; CHECK-NEXT: ret i32 [[CALL]]449;450 %call = call i32 @func_psz_psz()451 ret i32 %call452}453 454define i32 @call_psz_ieee_from_dynamic_dynamic() #4 {455; CHECK-LABEL: @call_psz_ieee_from_dynamic_dynamic(456; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_ieee()457; CHECK-NEXT: ret i32 [[CALL]]458;459 %call = call i32 @func_psz_ieee()460 ret i32 %call461}462 463define i32 @call_ieee_psz_from_dynamic_dynamic() #4 {464; CHECK-LABEL: @call_ieee_psz_from_dynamic_dynamic(465; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_psz()466; CHECK-NEXT: ret i32 [[CALL]]467;468 %call = call i32 @func_ieee_psz()469 ret i32 %call470}471 472define i32 @call_ieee_ieee_from_dynamic_ieee() #5 {473; CHECK-LABEL: @call_ieee_ieee_from_dynamic_ieee(474; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_ieee()475; CHECK-NEXT: ret i32 [[CALL]]476;477 %call = call i32 @func_ieee_ieee()478 ret i32 %call479}480 481define i32 @call_ieee_dynamic_from_dynamic_ieee() #5 {482; CHECK-LABEL: @call_ieee_dynamic_from_dynamic_ieee(483; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_dynamic()484; CHECK-NEXT: ret i32 [[CALL]]485;486 %call = call i32 @func_ieee_dynamic()487 ret i32 %call488}489 490define i32 @call_dynamic_ieee_from_dynamic_ieee() #5 {491; CHECK-LABEL: @call_dynamic_ieee_from_dynamic_ieee(492; CHECK-NEXT: ret i32 6493;494 %call = call i32 @func_dynamic_ieee()495 ret i32 %call496}497 498define i32 @call_psz_dynamic_from_dynamic_ieee() #5 {499; CHECK-LABEL: @call_psz_dynamic_from_dynamic_ieee(500; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_dynamic()501; CHECK-NEXT: ret i32 [[CALL]]502;503 %call = call i32 @func_psz_dynamic()504 ret i32 %call505}506 507define i32 @call_dynamic_psz_from_dynamic_ieee() #5 {508; CHECK-LABEL: @call_dynamic_psz_from_dynamic_ieee(509; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_psz()510; CHECK-NEXT: ret i32 [[CALL]]511;512 %call = call i32 @func_dynamic_psz()513 ret i32 %call514}515 516define i32 @call_psz_psz_from_dynamic_ieee() #5 {517; CHECK-LABEL: @call_psz_psz_from_dynamic_ieee(518; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_psz()519; CHECK-NEXT: ret i32 [[CALL]]520;521 %call = call i32 @func_psz_psz()522 ret i32 %call523}524 525define i32 @call_psz_ieee_from_dynamic_ieee() #5 {526; CHECK-LABEL: @call_psz_ieee_from_dynamic_ieee(527; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_ieee()528; CHECK-NEXT: ret i32 [[CALL]]529;530 %call = call i32 @func_psz_ieee()531 ret i32 %call532}533 534define i32 @call_ieee_psz_from_dynamic_ieee() #5 {535; CHECK-LABEL: @call_ieee_psz_from_dynamic_ieee(536; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_psz()537; CHECK-NEXT: ret i32 [[CALL]]538;539 %call = call i32 @func_ieee_psz()540 ret i32 %call541}542 543define i32 @call_ieee_ieee_from_ieee_dynamic() #6 {544; CHECK-LABEL: @call_ieee_ieee_from_ieee_dynamic(545; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_ieee()546; CHECK-NEXT: ret i32 [[CALL]]547;548 %call = call i32 @func_ieee_ieee()549 ret i32 %call550}551 552define i32 @call_ieee_dynamic_from_ieee_dynamic() #6 {553; CHECK-LABEL: @call_ieee_dynamic_from_ieee_dynamic(554; CHECK-NEXT: ret i32 7555;556 %call = call i32 @func_ieee_dynamic()557 ret i32 %call558}559 560define i32 @call_dynamic_ieee_from_ieee_dynamic() #6 {561; CHECK-LABEL: @call_dynamic_ieee_from_ieee_dynamic(562; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_ieee()563; CHECK-NEXT: ret i32 [[CALL]]564;565 %call = call i32 @func_dynamic_ieee()566 ret i32 %call567}568 569define i32 @call_dynamic_dynamic_from_ieee_dynamic() #6 {570; CHECK-LABEL: @call_dynamic_dynamic_from_ieee_dynamic(571; CHECK-NEXT: ret i32 5572;573 %call = call i32 @func_dynamic_dynamic()574 ret i32 %call575}576 577define i32 @call_dynamic_psz_from_ieee_dynamic() #6 {578; CHECK-LABEL: @call_dynamic_psz_from_ieee_dynamic(579; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_psz()580; CHECK-NEXT: ret i32 [[CALL]]581;582 %call = call i32 @func_dynamic_psz()583 ret i32 %call584}585 586define i32 @call_psz_dynamic_from_ieee_dynamic() #6 {587; CHECK-LABEL: @call_psz_dynamic_from_ieee_dynamic(588; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_dynamic()589; CHECK-NEXT: ret i32 [[CALL]]590;591 %call = call i32 @func_psz_dynamic()592 ret i32 %call593}594 595define i32 @call_psz_psz_from_ieee_dynamic() #6 {596; CHECK-LABEL: @call_psz_psz_from_ieee_dynamic(597; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_psz()598; CHECK-NEXT: ret i32 [[CALL]]599;600 %call = call i32 @func_psz_psz()601 ret i32 %call602}603 604define i32 @call_psz_ieee_from_ieee_dynamic() #6 {605; CHECK-LABEL: @call_psz_ieee_from_ieee_dynamic(606; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_ieee()607; CHECK-NEXT: ret i32 [[CALL]]608;609 %call = call i32 @func_psz_ieee()610 ret i32 %call611}612 613define i32 @call_ieee_psz_from_ieee_dynamic() #6 {614; CHECK-LABEL: @call_ieee_psz_from_ieee_dynamic(615; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_psz()616; CHECK-NEXT: ret i32 [[CALL]]617;618 %call = call i32 @func_ieee_psz()619 ret i32 %call620}621 622define i32 @call_ieee_ieee_from_psz_dynamic() #7 {623; CHECK-LABEL: @call_ieee_ieee_from_psz_dynamic(624; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_ieee()625; CHECK-NEXT: ret i32 [[CALL]]626;627 %call = call i32 @func_ieee_ieee()628 ret i32 %call629}630 631define i32 @call_ieee_dynamic_from_psz_dynamic() #7 {632; CHECK-LABEL: @call_ieee_dynamic_from_psz_dynamic(633; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_dynamic()634; CHECK-NEXT: ret i32 [[CALL]]635;636 %call = call i32 @func_ieee_dynamic()637 ret i32 %call638}639 640define i32 @call_dynamic_ieee_from_psz_dynamic() #7 {641; CHECK-LABEL: @call_dynamic_ieee_from_psz_dynamic(642; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_ieee()643; CHECK-NEXT: ret i32 [[CALL]]644;645 %call = call i32 @func_dynamic_ieee()646 ret i32 %call647}648 649define i32 @call_dynamic_psz_from_psz_dynamic() #7 {650; CHECK-LABEL: @call_dynamic_psz_from_psz_dynamic(651; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_psz()652; CHECK-NEXT: ret i32 [[CALL]]653;654 %call = call i32 @func_dynamic_psz()655 ret i32 %call656}657 658define i32 @call_psz_dynamic_from_psz_dynamic() #7 {659; CHECK-LABEL: @call_psz_dynamic_from_psz_dynamic(660; CHECK-NEXT: ret i32 8661;662 %call = call i32 @func_psz_dynamic()663 ret i32 %call664}665 666define i32 @call_dynamic_dynamic_from_psz_dynamic() #7 {667; CHECK-LABEL: @call_dynamic_dynamic_from_psz_dynamic(668; CHECK-NEXT: ret i32 5669;670 %call = call i32 @func_dynamic_dynamic()671 ret i32 %call672}673 674define i32 @call_psz_ieee_from_psz_dynamic() #7 {675; CHECK-LABEL: @call_psz_ieee_from_psz_dynamic(676; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_ieee()677; CHECK-NEXT: ret i32 [[CALL]]678;679 %call = call i32 @func_psz_ieee()680 ret i32 %call681}682 683define i32 @call_ieee_psz_from_psz_dynamic() #7 {684; CHECK-LABEL: @call_ieee_psz_from_psz_dynamic(685; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_psz()686; CHECK-NEXT: ret i32 [[CALL]]687;688 %call = call i32 @func_ieee_psz()689 ret i32 %call690}691 692define i32 @call_psz_psz_from_psz_dynamic() #7 {693; CHECK-LABEL: @call_psz_psz_from_psz_dynamic(694; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_psz()695; CHECK-NEXT: ret i32 [[CALL]]696;697 %call = call i32 @func_psz_psz()698 ret i32 %call699}700 701define i32 @call_ieee_ieee_from_dynamic_psz() #8 {702; CHECK-LABEL: @call_ieee_ieee_from_dynamic_psz(703; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_ieee()704; CHECK-NEXT: ret i32 [[CALL]]705;706 %call = call i32 @func_ieee_ieee()707 ret i32 %call708}709 710define i32 @call_ieee_psz_from_dynamic_psz() #8 {711; CHECK-LABEL: @call_ieee_psz_from_dynamic_psz(712; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_psz()713; CHECK-NEXT: ret i32 [[CALL]]714;715 %call = call i32 @func_ieee_psz()716 ret i32 %call717}718 719define i32 @call_psz_ieee_from_dynamic_psz() #8 {720; CHECK-LABEL: @call_psz_ieee_from_dynamic_psz(721; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_ieee()722; CHECK-NEXT: ret i32 [[CALL]]723;724 %call = call i32 @func_psz_ieee()725 ret i32 %call726}727 728define i32 @call_dynamic_dynamic_from_dynamic_psz() #8 {729; CHECK-LABEL: @call_dynamic_dynamic_from_dynamic_psz(730; CHECK-NEXT: ret i32 5731;732 %call = call i32 @func_dynamic_dynamic()733 ret i32 %call734}735 736define i32 @call_dynamic_psz_from_dynamic_psz() #8 {737; CHECK-LABEL: @call_dynamic_psz_from_dynamic_psz(738; CHECK-NEXT: ret i32 9739;740 %call = call i32 @func_dynamic_psz()741 ret i32 %call742}743 744define i32 @call_psz_dynamic_from_dynamic_psz() #8 {745; CHECK-LABEL: @call_psz_dynamic_from_dynamic_psz(746; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_dynamic()747; CHECK-NEXT: ret i32 [[CALL]]748;749 %call = call i32 @func_psz_dynamic()750 ret i32 %call751}752 753define i32 @call_dynamic_ieee_from_dynamic_psz() #8 {754; CHECK-LABEL: @call_dynamic_ieee_from_dynamic_psz(755; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_dynamic_ieee()756; CHECK-NEXT: ret i32 [[CALL]]757;758 %call = call i32 @func_dynamic_ieee()759 ret i32 %call760}761 762define i32 @call_ieee_dynamic_from_dynamic_psz() #8 {763; CHECK-LABEL: @call_ieee_dynamic_from_dynamic_psz(764; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_ieee_dynamic()765; CHECK-NEXT: ret i32 [[CALL]]766;767 %call = call i32 @func_ieee_dynamic()768 ret i32 %call769}770 771define i32 @call_psz_psz_from_dynamic_psz() #8 {772; CHECK-LABEL: @call_psz_psz_from_dynamic_psz(773; CHECK-NEXT: [[CALL:%.*]] = call i32 @func_psz_psz()774; CHECK-NEXT: ret i32 [[CALL]]775;776 %call = call i32 @func_psz_psz()777 ret i32 %call778}779 780; --------------------------------------------------------------------781; denormal-fp-math-f32782; --------------------------------------------------------------------783 784define i32 @func_dynamic_dynamic_f32() #9 {785; CHECK-LABEL: @func_dynamic_dynamic_f32(786; CHECK-NEXT: ret i32 10787;788 ret i32 10789}790 791define i32 @func_psz_psz_f32() #10 {792; CHECK-LABEL: @func_psz_psz_f32(793; CHECK-NEXT: ret i32 11794;795 ret i32 11796}797 798define i32 @func_dynamic_dynamic_psz_psz_f32() #12 {799; CHECK-LABEL: @func_dynamic_dynamic_psz_psz_f32(800; CHECK-NEXT: ret i32 12801;802 ret i32 12803}804 805define i32 @call_dynamic_dynamic_f32_from_psz_psz_f32() #10 {806; CHECK-LABEL: @call_dynamic_dynamic_f32_from_psz_psz_f32(807; CHECK-NEXT: ret i32 10808;809 %result = call i32 @func_dynamic_dynamic_f32()810 ret i32 %result811}812 813define i32 @call_psz_psz_from_psz_psz_f32() #10 {814; CHECK-LABEL: @call_psz_psz_from_psz_psz_f32(815; CHECK-NEXT: ret i32 10816;817 %result = call i32 @func_dynamic_dynamic_f32()818 ret i32 %result819}820 821define i32 @call_psz_psz_from_ieee_ieee_f32() #11 {822; CHECK-LABEL: @call_psz_psz_from_ieee_ieee_f32(823; CHECK-NEXT: [[RESULT:%.*]] = call i32 @func_psz_psz_f32()824; CHECK-NEXT: ret i32 [[RESULT]]825;826 %result = call i32 @func_psz_psz_f32()827 ret i32 %result828}829 830define i32 @call_dynamic_dynamic_from_psz_psz_f32() #10 {831; CHECK-LABEL: @call_dynamic_dynamic_from_psz_psz_f32(832; CHECK-NEXT: ret i32 5833;834 %result = call i32 @func_dynamic_dynamic()835 ret i32 %result836}837 838define i32 @call_dynamic_dynamic_f32_from_psz_psz() #1 {839; CHECK-LABEL: @call_dynamic_dynamic_f32_from_psz_psz(840; CHECK-NEXT: [[RESULT:%.*]] = call i32 @func_dynamic_dynamic_f32()841; CHECK-NEXT: ret i32 [[RESULT]]842;843 %result = call i32 @func_dynamic_dynamic_f32()844 ret i32 %result845}846 847define i32 @call_psz_psz_f32_from_psz_psz() #1 {848; CHECK-LABEL: @call_psz_psz_f32_from_psz_psz(849; CHECK-NEXT: [[RESULT:%.*]] = call i32 @func_psz_psz_f32()850; CHECK-NEXT: ret i32 [[RESULT]]851;852 %result = call i32 @func_psz_psz_f32()853 ret i32 %result854}855 856define i32 @call_dynamic_dynamic_psz_psz_f32_from_psz_psz() #1 {857; CHECK-LABEL: @call_dynamic_dynamic_psz_psz_f32_from_psz_psz(858; CHECK-NEXT: ret i32 12859;860 %result = call i32 @func_dynamic_dynamic_psz_psz_f32()861 ret i32 %result862}863 864attributes #0 = { "denormal-fp-math"="ieee,ieee" }865attributes #1 = { "denormal-fp-math"="preserve-sign,preserve-sign" }866attributes #2 = { "denormal-fp-math"="preserve-sign,ieee" }867attributes #3 = { "denormal-fp-math"="ieee,preserve-sign" }868attributes #4 = { "denormal-fp-math"="dynamic,dynamic" }869attributes #5 = { "denormal-fp-math"="dynamic,ieee" }870attributes #6 = { "denormal-fp-math"="ieee,dynamic" }871attributes #7 = { "denormal-fp-math"="preserve-sign,dynamic" }872attributes #8 = { "denormal-fp-math"="dynamic,preserve-sign" }873attributes #9 = { "denormal-fp-math-f32"="dynamic,dynamic" }874attributes #10 = { "denormal-fp-math-f32"="preserve-sign,preserve-sign" }875attributes #11 = { "denormal-fp-math-f32"="ieee,ieee" "denormal-fp-math"="preserve-sign,preserve-sign" }876attributes #12 = { "denormal-fp-math"="dynamic,dynamic" "denormal-fp-math-f32"="preserve-sign,preserve-sign" }877