brintos

brintos / llvm-project-archived public Read only

0
0
Text · 28.3 KiB · 66f966c Raw
735 lines · plain
1; RUN: llc -mtriple=mips -mcpu=mips32r2 < %s | FileCheck %s -check-prefixes=CHECK,CHECK-R22; RUN: llc -mtriple=mips -mcpu=mips32r6 < %s | FileCheck %s -check-prefixes=CHECK,CHECK-R63; RUN: llc -mtriple=mips -mcpu=mips32r2 -mattr=+fp64,+fpxx -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-R24; RUN: llc -mtriple=mips -mcpu=mips64r2 -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-R25 6; Single-precision intrinsics7 8define float @add_f32(float %x, float %y) #0 {9; CHECK-LABEL: add_f32:10; CHECK: add.s11  %val = call float @llvm.experimental.constrained.fadd.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #012  ret float %val13}14 15define float @sub_f32(float %x, float %y) #0 {16; CHECK-LABEL: sub_f32:17; CHECK: sub.s18  %val = call float @llvm.experimental.constrained.fsub.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #019  ret float %val20}21 22define float @mul_f32(float %x, float %y) #0 {23; CHECK-LABEL: mul_f32:24; CHECK: mul.s25  %val = call float @llvm.experimental.constrained.fmul.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #026  ret float %val27}28 29define float @div_f32(float %x, float %y) #0 {30; CHECK-LABEL: div_f32:31; CHECK: div.s32  %val = call float @llvm.experimental.constrained.fdiv.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #033  ret float %val34}35 36define float @frem_f32(float %x, float %y) #0 {37; CHECK-LABEL: frem_f32:38; CHECK: jal fmodf39  %val = call float @llvm.experimental.constrained.frem.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #040  ret float %val41}42 43define float @fma_f32(float %x, float %y, float %z) #0 {44; CHECK-LABEL: fma_f32:45; CHECK: jal fmaf46  %val = call float @llvm.experimental.constrained.fma.f32(float %x, float %y, float %z, metadata !"round.tonearest", metadata !"fpexcept.strict") #047  ret float %val48}49 50define i32 @fptosi_f32(float %x) #0 {51; CHECK-LABEL: fptosi_f32:52; CHECK: trunc.w.s53  %val = call i32 @llvm.experimental.constrained.fptosi.i32.f32(float %x, metadata !"fpexcept.strict") #054  ret i32 %val55}56 57define i32 @fptoui_f32(float %x) #0 {58; CHECK-LABEL: fptoui_f32:59; CHECK: trunc.w.s60; CHECK: trunc.w.s61  %val = call i32 @llvm.experimental.constrained.fptoui.i32.f32(float %x, metadata !"fpexcept.strict") #062  ret i32 %val63}64 65define float @sqrt_f32(float %x) #0 {66; CHECK-LABEL: sqrt_f32:67; CHECK: sqrt.s68  %val = call float @llvm.experimental.constrained.sqrt.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #069  ret float %val70}71 72define float @powi_f32(float %x, i32 %y) #0 {73; CHECK-LABEL: powi_f32:74; CHECK: jal __powisf275  %val = call float @llvm.experimental.constrained.powi.f32(float %x, i32 %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #076  ret float %val77}78 79define float @sin_f32(float %x) #0 {80; CHECK-LABEL: sin_f32:81; CHECK: jal sinf82  %val = call float @llvm.experimental.constrained.sin.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #083  ret float %val84}85 86define float @cos_f32(float %x) #0 {87; CHECK-LABEL: cos_f32:88; CHECK: jal cosf89  %val = call float @llvm.experimental.constrained.cos.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #090  ret float %val91}92 93define float @tan_f32(float %x) #0 {94; CHECK-LABEL: tan_f32:95; CHECK: jal tanf96  %val = call float @llvm.experimental.constrained.tan.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #097  ret float %val98}99 100define float @acos_f32(float %x, float %y) #0 {101; CHECK-LABEL: acos_f32:102; CHECK: jal acosf103  %val = call float @llvm.experimental.constrained.acos.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0104  ret float %val105}106 107define float @asin_f32(float %x, float %y) #0 {108; CHECK-LABEL: asin_f32:109; CHECK: jal asinf110  %val = call float @llvm.experimental.constrained.asin.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0111  ret float %val112}113 114define float @atan_f32(float %x, float %y) #0 {115; CHECK-LABEL: atan_f32:116; CHECK: jal atanf117  %val = call float @llvm.experimental.constrained.atan.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0118  ret float %val119}120 121define float @cosh_f32(float %x, float %y) #0 {122; CHECK-LABEL: cosh_f32:123; CHECK: jal coshf124  %val = call float @llvm.experimental.constrained.cosh.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0125  ret float %val126}127 128define float @sinh_f32(float %x, float %y) #0 {129; CHECK-LABEL: sinh_f32:130; CHECK: jal sinhf131  %val = call float @llvm.experimental.constrained.sinh.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0132  ret float %val133}134 135define float @tanh_f32(float %x, float %y) #0 {136; CHECK-LABEL: tanh_f32:137; CHECK: jal tanhf138  %val = call float @llvm.experimental.constrained.tanh.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0139  ret float %val140}141 142define float @fmuladd_f32(float %x, float %y, float %z) #0 {143; CHECK-LABEL: fmuladd_f32:144; CHECK-R2: madd.s145; CHECK-R6: mul.s146; CHECK-R6: add.s147  %val = call float @llvm.experimental.constrained.fmuladd.f32(float %x, float %y, float %z, metadata !"round.tonearest", metadata !"fpexcept.strict") #0148  ret float %val149}150 151define float @ldexp_f32(float %x, i32 %y) #0 {152; CHECK-LABEL: ldexp_f32:153; CHECK: jal ldexpf154  %val = call float @llvm.experimental.constrained.ldexp.f32.i32(float %x, i32 %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0155  ret float %val156}157 158define float @roundeven_f32(float %x) #0 {159; CHECK-LABEL: roundeven_f32:160; CHECK: jal roundevenf161  %val = call float @llvm.experimental.constrained.roundeven.f32(float %x, metadata !"fpexcept.strict") #0162  ret float %val163}164 165define float @uitofp_f32_i32(i32 %x) #0 {166; CHECK-LABEL: uitofp_f32_i32:167; CHECK: ldc1168; CHECK: ldc1169; CHECK: cvt.s.d170  %val = call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0171  ret float %val172}173 174define float @atan2_f32(float %x, float %y) #0 {175; CHECK-LABEL: atan2_f32:176; CHECK: jal atan2f177  %val = call float @llvm.experimental.constrained.atan2.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0178  ret float %val179}180 181define float @pow_f32(float %x, float %y) #0 {182; CHECK-LABEL: pow_f32:183; CHECK: jal powf184  %val = call float @llvm.experimental.constrained.pow.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0185  ret float %val186}187 188define float @log_f32(float %x) #0 {189; CHECK-LABEL: log_f32:190; CHECK: jal logf191  %val = call float @llvm.experimental.constrained.log.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0192  ret float %val193}194 195define float @log10_f32(float %x) #0 {196; CHECK-LABEL: log10_f32:197; CHECK: jal log10f198  %val = call float @llvm.experimental.constrained.log10.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0199  ret float %val200}201 202define float @log2_f32(float %x) #0 {203; CHECK-LABEL: log2_f32:204; CHECK: jal log2f205  %val = call float @llvm.experimental.constrained.log2.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0206  ret float %val207}208 209define float @exp_f32(float %x) #0 {210; CHECK-LABEL: exp_f32:211; CHECK: jr $ra212  %val = call float @llvm.experimental.constrained.exp.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0213  ret float %val214}215 216define float @exp2_f32(float %x) #0 {217; CHECK-LABEL: exp2_f32:218; CHECK: jal exp2f219  %val = call float @llvm.experimental.constrained.exp2.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0220  ret float %val221}222 223define float @rint_f32(float %x) #0 {224; CHECK-LABEL: rint_f32:225; CHECK: jal rintf226  %val = call float @llvm.experimental.constrained.rint.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0227  ret float %val228}229 230define float @nearbyint_f32(float %x) #0 {231; CHECK-LABEL: nearbyint_f32:232; CHECK: jal nearbyintf233  %val = call float @llvm.experimental.constrained.nearbyint.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0234  ret float %val235}236 237define i32 @lrint_f32(float %x) #0 {238; CHECK-LABEL: lrint_f32:239; CHECK: jal lrintf240  %val = call i32 @llvm.experimental.constrained.lrint.i32.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0241  ret i32 %val242}243 244define i32 @llrint_f32(float %x) #0 {245; CHECK-LABEL: llrint_f32:246; CHECK: jal llrintf247  %val = call i32 @llvm.experimental.constrained.llrint.i32.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0248  ret i32 %val249}250 251define float @maxnum_f32(float %x, float %y) #0 {252; CHECK-LABEL: maxnum_f32:253; CHECK-R2: jal fmaxf254; CHECK-R6: max.s255  %val = call float @llvm.experimental.constrained.maxnum.f32(float %x, float %y, metadata !"fpexcept.strict") #0256  ret float %val257}258 259define float @minnum_f32(float %x, float %y) #0 {260; CHECK-LABEL: minnum_f32:261; CHECK-R2: jal fminf262; CHECK-R6: min.s263  %val = call float @llvm.experimental.constrained.minnum.f32(float %x, float %y, metadata !"fpexcept.strict") #0264  ret float %val265}266 267define float @ceil_f32(float %x) #0 {268; CHECK-LABEL: ceil_f32:269; CHECK: jal ceilf270  %val = call float @llvm.experimental.constrained.ceil.f32(float %x, metadata !"fpexcept.strict") #0271  ret float %val272}273 274define float @floor_f32(float %x) #0 {275; CHECK-LABEL: floor_f32:276; CHECK: jal floorf277  %val = call float @llvm.experimental.constrained.floor.f32(float %x, metadata !"fpexcept.strict") #0278  ret float %val279}280 281define i32 @lround_f32(float %x) #0 {282; CHECK-LABEL: lround_f32:283; CHECK: jal lroundf284  %val = call i32 @llvm.experimental.constrained.lround.i32.f32(float %x, metadata !"fpexcept.strict") #0285  ret i32 %val286}287 288define i32 @llround_f32(float %x) #0 {289; CHECK-LABEL: llround_f32:290; CHECK: jal llroundf291  %val = call i32 @llvm.experimental.constrained.llround.i32.f32(float %x, metadata !"fpexcept.strict") #0292  ret i32 %val293}294 295define float @round_f32(float %x) #0 {296; CHECK-LABEL: round_f32:297; CHECK: jal roundf298  %val = call float @llvm.experimental.constrained.round.f32(float %x, metadata !"fpexcept.strict") #0299  ret float %val300}301 302define float @trunc_f32(float %x) #0 {303; CHECK-LABEL: trunc_f32:304; CHECK: jal truncf305  %val = call float @llvm.experimental.constrained.trunc.f32(float %x, metadata !"fpexcept.strict") #0306  ret float %val307}308 309; Double-precision intrinsics310 311define double @add_f64(double %x, double %y) #0 {312; CHECK-LABEL: add_f64:313; CHECK: add.d314  %val = call double @llvm.experimental.constrained.fadd.f64(double %x, double %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0315  ret double %val316}317 318define double @sub_f64(double %x, double %y) #0 {319; CHECK-LABEL: sub_f64:320; CHECK: sub.d321  %val = call double @llvm.experimental.constrained.fsub.f64(double %x, double %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0322  ret double %val323}324 325define double @mul_f64(double %x, double %y) #0 {326; CHECK-LABEL: mul_f64:327; CHECK: mul.d328  %val = call double @llvm.experimental.constrained.fmul.f64(double %x, double %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0329  ret double %val330}331 332define double @div_f64(double %x, double %y) #0 {333; CHECK-LABEL: div_f64:334; CHECK: div.d335  %val = call double @llvm.experimental.constrained.fdiv.f64(double %x, double %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0336  ret double %val337}338 339define double @frem_f64(double %x, double %y) #0 {340; CHECK-LABEL: frem_f64:341; CHECK: jal fmod342  %val = call double @llvm.experimental.constrained.frem.f64(double %x, double %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0343  ret double %val344}345 346define double @fma_f64(double %x, double %y, double %z) #0 {347; CHECK-LABEL: fma_f64:348; CHECK: jal fma349  %val = call double @llvm.experimental.constrained.fma.f64(double %x, double %y, double %z, metadata !"round.tonearest", metadata !"fpexcept.strict") #0350  ret double %val351}352 353define i32 @fptosi_f64(double %x) #0 {354; CHECK-LABEL: fptosi_f64:355; CHECK: trunc.w.d356  %val = call i32 @llvm.experimental.constrained.fptosi.i32.f64(double %x, metadata !"fpexcept.strict") #0357  ret i32 %val358}359 360define i32 @fptoui_f64(double %x) #0 {361; CHECK-LABEL: fptoui_f64:362; CHECK: trunc.w.d 363; CHECK: trunc.w.d364  %val = call i32 @llvm.experimental.constrained.fptoui.i32.f64(double %x, metadata !"fpexcept.strict") #0365  ret i32 %val366}367 368define double @sqrt_f64(double %x) #0 {369; CHECK-LABEL: sqrt_f64:370; CHECK: sqrt.d371  %val = call double @llvm.experimental.constrained.sqrt.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0372  ret double %val373}374 375define double @powi_f64(double %x, i32 %y) #0 {376; CHECK-LABEL: powi_f64:377; CHECK: jal __powidf2378  %val = call double @llvm.experimental.constrained.powi.f64(double %x, i32 %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0379  ret double %val380}381 382define double @sin_f64(double %x) #0 {383; CHECK-LABEL: sin_f64:384; CHECK: jal sin385  %val = call double @llvm.experimental.constrained.sin.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0386  ret double %val387}388 389define double @cos_f64(double %x) #0 {390; CHECK-LABEL: cos_f64:391; CHECK: jal cos392  %val = call double @llvm.experimental.constrained.cos.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0393  ret double %val394}395 396define double @tan_f64(double %x) #0 {397; CHECK-LABEL: tan_f64:398; CHECK: jal tan399  %val = call double @llvm.experimental.constrained.tan.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0400  ret double %val401}402 403define double @acos_f64(double %x, double %y) #0 {404; CHECK-LABEL: acos_f64:405; CHECK: jal acos406  %val = call double @llvm.experimental.constrained.acos.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0407  ret double %val408}409 410define double @asin_f64(double %x, double %y) #0 {411; CHECK-LABEL: asin_f64:412; CHECK: jal asin413  %val = call double @llvm.experimental.constrained.asin.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0414  ret double %val415}416 417define double @atan_f64(double %x, double %y) #0 {418; CHECK-LABEL: atan_f64:419; CHECK: jal atan420  %val = call double @llvm.experimental.constrained.atan.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0421  ret double %val422}423 424define double @cosh_f64(double %x, double %y) #0 {425; CHECK-LABEL: cosh_f64:426; CHECK: jal cosh427  %val = call double @llvm.experimental.constrained.cosh.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0428  ret double %val429}430 431define double @sinh_f64(double %x, double %y) #0 {432; CHECK-LABEL: sinh_f64:433; CHECK: jal sinh434  %val = call double @llvm.experimental.constrained.sinh.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0435  ret double %val436}437 438define double @tanh_f64(double %x, double %y) #0 {439; CHECK-LABEL: tanh_f64:440; CHECK: jal tanh441  %val = call double @llvm.experimental.constrained.tanh.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0442  ret double %val443}444 445define double @fmuladd_f64(double %x, double %y, double %z) #0 {446; CHECK-LABEL: fmuladd_f64:447; CHECK-R2: madd.d448; CHECK-R6: mul.d449; CHECK-R6: add.d450  %val = call double @llvm.experimental.constrained.fmuladd.f64(double %x, double %y, double %z, metadata !"round.tonearest", metadata !"fpexcept.strict") #0451  ret double %val452}453 454define double @ldexp_f64(double %x, i32 %y) #0 {455; CHECK-LABEL: ldexp_f64:456; CHECK: jal ldexp457  %val = call double @llvm.experimental.constrained.ldexp.f64.i32(double %x, i32 %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0458  ret double %val459}460 461define double @roundeven_f64(double %x) #0 {462; CHECK-LABEL: roundeven_f64:463; CHECK: jal roundeven464  %val = call double @llvm.experimental.constrained.roundeven.f64(double %x, metadata !"fpexcept.strict") #0465  ret double %val466}467 468define double @uitofp_f64_i32(i32 %x) #0 {469; CHECK-LABEL: uitofp_f64_i32:470; CHECK: ldc1 471; CHECK: ldc1472  %val = call double @llvm.experimental.constrained.uitofp.f64.i32(i32 %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0473  ret double %val474}475 476define double @atan2_f64(double %x, double %y) #0 {477; CHECK-LABEL: atan2_f64:478; CHECK: jal atan2479  %val = call double @llvm.experimental.constrained.atan2.f64(double %x, double %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0480  ret double %val481}482 483define double @pow_f64(double %x, double %y) #0 {484; CHECK-LABEL: pow_f64:485; CHECK: jal pow486  %val = call double @llvm.experimental.constrained.pow.f64(double %x, double %y, metadata !"round.tonearest", metadata !"fpexcept.strict") #0487  ret double %val488}489 490define double @log_f64(double %x) #0 {491; CHECK-LABEL: log_f64:492; CHECK: jal log493  %val = call double @llvm.experimental.constrained.log.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0494  ret double %val495}496 497define double @log10_f64(double %x) #0 {498; CHECK-LABEL: log10_f64:499; CHECK: jal log10500  %val = call double @llvm.experimental.constrained.log10.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0501  ret double %val502}503 504define double @log2_f64(double %x) #0 {505; CHECK-LABEL: log2_f64:506; CHECK: jal log2507  %val = call double @llvm.experimental.constrained.log2.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0508  ret double %val509}510 511define double @exp_f64(double %x) #0 {512; CHECK-LABEL: exp_f64:513; CHECK: jal exp514  %val = call double @llvm.experimental.constrained.exp.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0515  ret double %val516}517 518define double @exp2_f64(double %x) #0 {519; CHECK-LABEL: exp2_f64:520; CHECK: jal exp2521  %val = call double @llvm.experimental.constrained.exp2.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0522  ret double %val523}524 525define double @rint_f64(double %x) #0 {526; CHECK-LABEL: rint_f64:527; CHECK: jal rint528  %val = call double @llvm.experimental.constrained.rint.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0529  ret double %val530}531 532define double @nearbyint_f64(double %x) #0 {533; CHECK-LABEL: nearbyint_f64:534; CHECK: jal nearbyint535  %val = call double @llvm.experimental.constrained.nearbyint.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0536  ret double %val537}538 539define i32 @lrint_f64(double %x) #0 {540; CHECK-LABEL: lrint_f64:541; CHECK: jal lrint542  %val = call i32 @llvm.experimental.constrained.lrint.i32.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0543  ret i32 %val544}545 546define i32 @llrint_f64(double %x) #0 {547; CHECK-LABEL: llrint_f64:548; CHECK: jal llrint549  %val = call i32 @llvm.experimental.constrained.llrint.i32.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0550  ret i32 %val551}552 553define double @maxnum_f64(double %x, double %y) #0 {554; CHECK-LABEL: maxnum_f64:555; CHECK-R2: jal fmax556; CHECK-R6: max.d557  %val = call double @llvm.experimental.constrained.maxnum.f64(double %x, double %y, metadata !"fpexcept.strict") #0558  ret double %val559}560 561define double @minnum_f64(double %x, double %y) #0 {562; CHECK-LABEL: minnum_f64:563; CHECK-R2: jal fmin564; CHECK-R6: min.d565  %val = call double @llvm.experimental.constrained.minnum.f64(double %x, double %y, metadata !"fpexcept.strict") #0566  ret double %val567}568 569define double @ceil_f64(double %x) #0 {570; CHECK-LABEL: ceil_f64:571; CHECK: jal ceil572  %val = call double @llvm.experimental.constrained.ceil.f64(double %x, metadata !"fpexcept.strict") #0573  ret double %val574}575 576define double @floor_f64(double %x) #0 {577; CHECK-LABEL: floor_f64:578; CHECK: jal floor579  %val = call double @llvm.experimental.constrained.floor.f64(double %x, metadata !"fpexcept.strict") #0580  ret double %val581}582 583define i32 @lround_f64(double %x) #0 {584; CHECK-LABEL: lround_f64:585; CHECK: jal lround586  %val = call i32 @llvm.experimental.constrained.lround.i32.f64(double %x, metadata !"fpexcept.strict") #0587  ret i32 %val588}589 590define i32 @llround_f64(double %x) #0 {591; CHECK-LABEL: llround_f64:592; CHECK: jal llround593  %val = call i32 @llvm.experimental.constrained.llround.i32.f64(double %x, metadata !"fpexcept.strict") #0594  ret i32 %val595}596 597define double @round_f64(double %x) #0 {598; CHECK-LABEL: round_f64:599; CHECK: jal round600  %val = call double @llvm.experimental.constrained.round.f64(double %x, metadata !"fpexcept.strict") #0601  ret double %val602}603 604define double @trunc_f64(double %x) #0 {605; CHECK-LABEL: trunc_f64:606; CHECK: jal trunc607  %val = call double @llvm.experimental.constrained.trunc.f64(double %x, metadata !"fpexcept.strict") #0608  ret double %val609}610 611define float @fptrunc_f32(double %x) #0 {612; CHECK-LABEL: fptrunc_f32:613; CHECK: cvt.s.d614  %val = call float @llvm.experimental.constrained.fptrunc.f32.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0615  ret float %val616}617 618define double @fpext_f32(float %x) #0 {619; CHECK-LABEL: fpext_f32:620; CHECK: cvt.d.s621  %val = call double @llvm.experimental.constrained.fpext.f64.f32(float %x, metadata !"fpexcept.strict") #0622  ret double %val623}624 625define float @sitofp_f32_i32(i32 %x) #0 {626; CHECK-LABEL: sitofp_f32_i32:627; CHECK: ldc1628; CHECK: ldc1629; CHECK: cvt.s.d630  %val = call float @llvm.experimental.constrained.sitofp.f32.i32(i32 %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0631  ret float %val632}633 634define double @sitofp_f64_i32(i32 %x) #0 {635; CHECK-LABEL: sitofp_f64_i32:636; CHECK: ldc1637; CHECK: ldc1638  %val = call double @llvm.experimental.constrained.sitofp.f64.i32(i32 %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0639  ret double %val640}641 642 643attributes #0 = { strictfp }644 645declare float @llvm.experimental.constrained.fadd.f32(float, float, metadata, metadata)646declare float @llvm.experimental.constrained.fsub.f32(float, float, metadata, metadata)647declare float @llvm.experimental.constrained.fmul.f32(float, float, metadata, metadata)648declare float @llvm.experimental.constrained.fdiv.f32(float, float, metadata, metadata)649declare float @llvm.experimental.constrained.frem.f32(float, float, metadata, metadata)650declare float @llvm.experimental.constrained.fma.f32(float, float, float, metadata, metadata)651declare i32 @llvm.experimental.constrained.fptosi.i32.f32(float, metadata)652declare i32 @llvm.experimental.constrained.fptoui.i32.f32(float, metadata)653declare float @llvm.experimental.constrained.sqrt.f32(float, metadata, metadata)654declare float @llvm.experimental.constrained.powi.f32(float, i32, metadata, metadata)655declare float @llvm.experimental.constrained.sin.f32(float, metadata, metadata)656declare float @llvm.experimental.constrained.cos.f32(float, metadata, metadata)657declare float @llvm.experimental.constrained.tan.f32(float, metadata, metadata)658declare float @llvm.experimental.constrained.acos.f32(float, metadata, metadata)659declare float @llvm.experimental.constrained.asin.f32(float, metadata, metadata)660declare float @llvm.experimental.constrained.atan.f32(float, metadata, metadata)661declare float @llvm.experimental.constrained.cosh.f32(float, metadata, metadata)662declare float @llvm.experimental.constrained.sinh.f32(float, metadata, metadata)663declare float @llvm.experimental.constrained.tanh.f32(float, metadata, metadata)664declare float @llvm.experimental.constrained.fmuladd.f32(float, float, float, metadata, metadata)665declare float @llvm.experimental.constrained.ldexp.f32.i32(float, i32, metadata, metadata)666declare float @llvm.experimental.constrained.roundeven.f32(float, metadata)667declare float @llvm.experimental.constrained.uitofp.f32.i32(i32, metadata, metadata)668declare float @llvm.experimental.constrained.atan2.f32(float, float, metadata, metadata)669declare float @llvm.experimental.constrained.pow.f32(float, float, metadata, metadata)670declare float @llvm.experimental.constrained.log.f32(float, metadata, metadata)671declare float @llvm.experimental.constrained.log10.f32(float, metadata, metadata)672declare float @llvm.experimental.constrained.log2.f32(float, metadata, metadata)673declare float @llvm.experimental.constrained.exp.f32(float, metadata, metadata)674declare float @llvm.experimental.constrained.exp2.f32(float, metadata, metadata)675declare float @llvm.experimental.constrained.rint.f32(float, metadata, metadata)676declare float @llvm.experimental.constrained.nearbyint.f32(float, metadata, metadata)677declare i32 @llvm.experimental.constrained.lrint.i32.f32(float, metadata, metadata)678declare i32 @llvm.experimental.constrained.llrint.i32.f32(float, metadata, metadata)679declare float @llvm.experimental.constrained.maxnum.f32(float, float, metadata)680declare float @llvm.experimental.constrained.minnum.f32(float, float, metadata)681declare float @llvm.experimental.constrained.ceil.f32(float, metadata)682declare float @llvm.experimental.constrained.floor.f32(float, metadata)683declare i32 @llvm.experimental.constrained.lround.i32.f32(float, metadata)684declare i32 @llvm.experimental.constrained.llround.i32.f32(float, metadata)685declare float @llvm.experimental.constrained.round.f32(float, metadata)686declare float @llvm.experimental.constrained.trunc.f32(float, metadata)687 688declare double @llvm.experimental.constrained.fadd.f64(double, double, metadata, metadata)689declare double @llvm.experimental.constrained.fsub.f64(double, double, metadata, metadata)690declare double @llvm.experimental.constrained.fmul.f64(double, double, metadata, metadata)691declare double @llvm.experimental.constrained.fdiv.f64(double, double, metadata, metadata)692declare double @llvm.experimental.constrained.frem.f64(double, double, metadata, metadata)693declare double @llvm.experimental.constrained.fma.f64(double, double, double, metadata, metadata)694declare i32 @llvm.experimental.constrained.fptosi.i32.f64(double, metadata)695declare i32 @llvm.experimental.constrained.fptoui.i32.f64(double, metadata)696declare double @llvm.experimental.constrained.sqrt.f64(double, metadata, metadata)697declare double @llvm.experimental.constrained.powi.f64(double, i32, metadata, metadata)698declare double @llvm.experimental.constrained.sin.f64(double, metadata, metadata)699declare double @llvm.experimental.constrained.cos.f64(double, metadata, metadata)700declare double @llvm.experimental.constrained.tan.f64(double, metadata, metadata)701declare double @llvm.experimental.constrained.acos.f64(double, metadata, metadata)702declare double @llvm.experimental.constrained.asin.f64(double, metadata, metadata)703declare double @llvm.experimental.constrained.atan.f64(double, metadata, metadata)704declare double @llvm.experimental.constrained.cosh.f64(double, metadata, metadata)705declare double @llvm.experimental.constrained.sinh.f64(double, metadata, metadata)706declare double @llvm.experimental.constrained.tanh.f64(double, metadata, metadata)707declare double @llvm.experimental.constrained.fmuladd.f64(double, double, double, metadata, metadata)708declare double @llvm.experimental.constrained.ldexp.f64.i32(double, i32, metadata, metadata)709declare double @llvm.experimental.constrained.roundeven.f64(double, metadata)710declare double @llvm.experimental.constrained.uitofp.f64.i32(i32, metadata, metadata)711declare double @llvm.experimental.constrained.atan2.f64(double, double, metadata, metadata)712declare double @llvm.experimental.constrained.pow.f64(double, double, metadata, metadata)713declare double @llvm.experimental.constrained.log.f64(double, metadata, metadata)714declare double @llvm.experimental.constrained.log10.f64(double, metadata, metadata)715declare double @llvm.experimental.constrained.log2.f64(double, metadata, metadata)716declare double @llvm.experimental.constrained.exp.f64(double, metadata, metadata)717declare double @llvm.experimental.constrained.exp2.f64(double, metadata, metadata)718declare double @llvm.experimental.constrained.rint.f64(double, metadata, metadata)719declare double @llvm.experimental.constrained.nearbyint.f64(double, metadata, metadata)720declare i32 @llvm.experimental.constrained.lrint.i32.f64(double, metadata, metadata)721declare i32 @llvm.experimental.constrained.llrint.i32.f64(double, metadata, metadata)722declare double @llvm.experimental.constrained.maxnum.f64(double, double, metadata)723declare double @llvm.experimental.constrained.minnum.f64(double, double, metadata)724declare double @llvm.experimental.constrained.ceil.f64(double, metadata)725declare double @llvm.experimental.constrained.floor.f64(double, metadata)726declare i32 @llvm.experimental.constrained.lround.i32.f64(double, metadata)727declare i32 @llvm.experimental.constrained.llround.i32.f64(double, metadata)728declare double @llvm.experimental.constrained.round.f64(double, metadata)729declare double @llvm.experimental.constrained.trunc.f64(double, metadata)730 731declare float @llvm.experimental.constrained.fptrunc.f32.f64(double, metadata, metadata)732declare double @llvm.experimental.constrained.fpext.f64.f32(float, metadata)733declare float @llvm.experimental.constrained.sitofp.f32.i32(i32, metadata, metadata)734declare double @llvm.experimental.constrained.sitofp.f64.i32(i32, metadata, metadata)735