12ab44989SMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 22ab44989SMatt Arsenault; RUN: opt -S -passes=instcombine < %s | FileCheck %s 32ab44989SMatt Arsenault 42ab44989SMatt Arsenault; Test that floating point operations are not treated as sources of 52ab44989SMatt Arsenault; poison. 62ab44989SMatt Arsenault 72ab44989SMatt Arsenaultdefine float @freeze_fneg(float %arg) { 82ab44989SMatt Arsenault; CHECK-LABEL: @freeze_fneg( 92ab44989SMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 102ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = fneg float [[ARG_FR]] 112ab44989SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 122ab44989SMatt Arsenault; 132ab44989SMatt Arsenault %op = fneg float %arg 142ab44989SMatt Arsenault %freeze = freeze float %op 152ab44989SMatt Arsenault ret float %freeze 162ab44989SMatt Arsenault} 172ab44989SMatt Arsenault 182ab44989SMatt Arsenaultdefine float @freeze_fadd(float %arg0, float noundef %arg1) { 192ab44989SMatt Arsenault; CHECK-LABEL: @freeze_fadd( 202ab44989SMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 212ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = fadd float [[ARG0_FR]], [[ARG1:%.*]] 222ab44989SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 232ab44989SMatt Arsenault; 242ab44989SMatt Arsenault %op = fadd float %arg0, %arg1 252ab44989SMatt Arsenault %freeze = freeze float %op 262ab44989SMatt Arsenault ret float %freeze 272ab44989SMatt Arsenault} 282ab44989SMatt Arsenault 292ab44989SMatt Arsenaultdefine float @freeze_fsub(float %arg0, float noundef %arg1) { 302ab44989SMatt Arsenault; CHECK-LABEL: @freeze_fsub( 312ab44989SMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 322ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = fsub float [[ARG0_FR]], [[ARG1:%.*]] 332ab44989SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 342ab44989SMatt Arsenault; 352ab44989SMatt Arsenault %op = fsub float %arg0, %arg1 362ab44989SMatt Arsenault %freeze = freeze float %op 372ab44989SMatt Arsenault ret float %freeze 382ab44989SMatt Arsenault} 392ab44989SMatt Arsenault 402ab44989SMatt Arsenaultdefine float @freeze_fmul(float %arg0, float noundef %arg1) { 412ab44989SMatt Arsenault; CHECK-LABEL: @freeze_fmul( 422ab44989SMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 432ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = fmul float [[ARG0_FR]], [[ARG1:%.*]] 442ab44989SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 452ab44989SMatt Arsenault; 462ab44989SMatt Arsenault %op = fmul float %arg0, %arg1 472ab44989SMatt Arsenault %freeze = freeze float %op 482ab44989SMatt Arsenault ret float %freeze 492ab44989SMatt Arsenault} 502ab44989SMatt Arsenault 512ab44989SMatt Arsenaultdefine float @freeze_fdiv(float %arg0, float noundef %arg1) { 522ab44989SMatt Arsenault; CHECK-LABEL: @freeze_fdiv( 532ab44989SMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 542ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = fdiv float [[ARG0_FR]], [[ARG1:%.*]] 552ab44989SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 562ab44989SMatt Arsenault; 572ab44989SMatt Arsenault %op = fdiv float %arg0, %arg1 582ab44989SMatt Arsenault %freeze = freeze float %op 592ab44989SMatt Arsenault ret float %freeze 602ab44989SMatt Arsenault} 612ab44989SMatt Arsenault 622ab44989SMatt Arsenaultdefine float @freeze_frem(float %arg0, float noundef %arg1) { 632ab44989SMatt Arsenault; CHECK-LABEL: @freeze_frem( 642ab44989SMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 652ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = fdiv float [[ARG0_FR]], [[ARG1:%.*]] 662ab44989SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 672ab44989SMatt Arsenault; 682ab44989SMatt Arsenault %op = fdiv float %arg0, %arg1 692ab44989SMatt Arsenault %freeze = freeze float %op 702ab44989SMatt Arsenault ret float %freeze 712ab44989SMatt Arsenault} 722ab44989SMatt Arsenault 732ab44989SMatt Arsenaultdefine double @fpext(float %arg) { 742ab44989SMatt Arsenault; CHECK-LABEL: @fpext( 752ab44989SMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 762ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = fpext float [[ARG_FR]] to double 772ab44989SMatt Arsenault; CHECK-NEXT: ret double [[OP]] 782ab44989SMatt Arsenault; 792ab44989SMatt Arsenault %op = fpext float %arg to double 802ab44989SMatt Arsenault %freeze = freeze double %op 812ab44989SMatt Arsenault ret double %freeze 822ab44989SMatt Arsenault} 832ab44989SMatt Arsenault 842ab44989SMatt Arsenaultdefine float @fptrunc(double %arg) { 852ab44989SMatt Arsenault; CHECK-LABEL: @fptrunc( 862ab44989SMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze double [[ARG:%.*]] 872ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = fptrunc double [[ARG_FR]] to float 882ab44989SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 892ab44989SMatt Arsenault; 902ab44989SMatt Arsenault %op = fptrunc double %arg to float 912ab44989SMatt Arsenault %freeze = freeze float %op 922ab44989SMatt Arsenault ret float %freeze 932ab44989SMatt Arsenault} 942ab44989SMatt Arsenault 952ab44989SMatt Arsenaultdefine float @sitofp(i32 %arg) { 962ab44989SMatt Arsenault; CHECK-LABEL: @sitofp( 972ab44989SMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze i32 [[ARG:%.*]] 982ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = sitofp i32 [[ARG_FR]] to float 992ab44989SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 1002ab44989SMatt Arsenault; 1012ab44989SMatt Arsenault %op = sitofp i32 %arg to float 1022ab44989SMatt Arsenault %freeze = freeze float %op 1032ab44989SMatt Arsenault ret float %freeze 1042ab44989SMatt Arsenault} 1052ab44989SMatt Arsenault 1062ab44989SMatt Arsenaultdefine float @uitofp(i32 %arg) { 1072ab44989SMatt Arsenault; CHECK-LABEL: @uitofp( 1082ab44989SMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze i32 [[ARG:%.*]] 1092ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = uitofp i32 [[ARG_FR]] to float 1102ab44989SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 1112ab44989SMatt Arsenault; 1122ab44989SMatt Arsenault %op = uitofp i32 %arg to float 1132ab44989SMatt Arsenault %freeze = freeze float %op 1142ab44989SMatt Arsenault ret float %freeze 1152ab44989SMatt Arsenault} 1162ab44989SMatt Arsenault 1172ab44989SMatt Arsenaultdefine float @freeze_fma(float %arg0, float noundef %arg1, float noundef %arg2) { 1182ab44989SMatt Arsenault; CHECK-LABEL: @freeze_fma( 11928e3220aSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 12028e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fma.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]], float noundef [[ARG2:%.*]]) 12128e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 1222ab44989SMatt Arsenault; 1232ab44989SMatt Arsenault %op = call float @llvm.fma.f32(float %arg0, float noundef %arg1, float noundef %arg2) 1242ab44989SMatt Arsenault %freeze = freeze float %op 1252ab44989SMatt Arsenault ret float %freeze 1262ab44989SMatt Arsenault} 1272ab44989SMatt Arsenault 1282ab44989SMatt Arsenaultdefine float @freeze_fmuladd(float %arg0, float noundef %arg1, float noundef %arg2) { 1292ab44989SMatt Arsenault; CHECK-LABEL: @freeze_fmuladd( 13028e3220aSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 13128e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fmuladd.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]], float noundef [[ARG2:%.*]]) 13228e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 1332ab44989SMatt Arsenault; 1342ab44989SMatt Arsenault %op = call float @llvm.fmuladd.f32(float %arg0, float noundef %arg1, float noundef %arg2) 1352ab44989SMatt Arsenault %freeze = freeze float %op 1362ab44989SMatt Arsenault ret float %freeze 1372ab44989SMatt Arsenault} 1382ab44989SMatt Arsenault 1392ab44989SMatt Arsenaultdefine float @freeze_sqrt(float %arg) { 1402ab44989SMatt Arsenault; CHECK-LABEL: @freeze_sqrt( 14128e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 14228e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.sqrt.f32(float [[ARG_FR]]) 14328e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 1442ab44989SMatt Arsenault; 1452ab44989SMatt Arsenault %op = call float @llvm.sqrt.f32(float %arg) 1462ab44989SMatt Arsenault %freeze = freeze float %op 1472ab44989SMatt Arsenault ret float %freeze 1482ab44989SMatt Arsenault} 1492ab44989SMatt Arsenault 1502ab44989SMatt Arsenaultdefine float @freeze_powi(float %arg0, i32 %arg1) { 1512ab44989SMatt Arsenault; CHECK-LABEL: @freeze_powi( 1522ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.powi.f32.i32(float [[ARG0:%.*]], i32 [[ARG1:%.*]]) 1532ab44989SMatt Arsenault; CHECK-NEXT: [[FREEZE:%.*]] = freeze float [[OP]] 1542ab44989SMatt Arsenault; CHECK-NEXT: ret float [[FREEZE]] 1552ab44989SMatt Arsenault; 1562ab44989SMatt Arsenault %op = call float @llvm.powi.f32.i32(float %arg0, i32 %arg1) 1572ab44989SMatt Arsenault %freeze = freeze float %op 1582ab44989SMatt Arsenault ret float %freeze 1592ab44989SMatt Arsenault} 1602ab44989SMatt Arsenault 1612ab44989SMatt Arsenaultdefine float @freeze_sin(float %arg) { 1622ab44989SMatt Arsenault; CHECK-LABEL: @freeze_sin( 16328e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 16428e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.sin.f32(float [[ARG_FR]]) 16528e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 1662ab44989SMatt Arsenault; 1672ab44989SMatt Arsenault %op = call float @llvm.sin.f32(float %arg) 1682ab44989SMatt Arsenault %freeze = freeze float %op 1692ab44989SMatt Arsenault ret float %freeze 1702ab44989SMatt Arsenault} 1712ab44989SMatt Arsenault 1722ab44989SMatt Arsenaultdefine float @freeze_cos(float %arg) { 1732ab44989SMatt Arsenault; CHECK-LABEL: @freeze_cos( 17428e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 17528e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.cos.f32(float [[ARG_FR]]) 17628e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 1772ab44989SMatt Arsenault; 1782ab44989SMatt Arsenault %op = call float @llvm.cos.f32(float %arg) 1792ab44989SMatt Arsenault %freeze = freeze float %op 1802ab44989SMatt Arsenault ret float %freeze 1812ab44989SMatt Arsenault} 1822ab44989SMatt Arsenault 1832ab44989SMatt Arsenaultdefine float @freeze_pow(float %arg0, float noundef %arg1) { 1842ab44989SMatt Arsenault; CHECK-LABEL: @freeze_pow( 18528e3220aSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 18628e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.pow.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) 18728e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 1882ab44989SMatt Arsenault; 1892ab44989SMatt Arsenault %op = call float @llvm.pow.f32(float %arg0, float noundef %arg1) 1902ab44989SMatt Arsenault %freeze = freeze float %op 1912ab44989SMatt Arsenault ret float %freeze 1922ab44989SMatt Arsenault} 1932ab44989SMatt Arsenault 1942ab44989SMatt Arsenaultdefine float @freeze_log(float %arg) { 1952ab44989SMatt Arsenault; CHECK-LABEL: @freeze_log( 19628e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 19728e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.log.f32(float [[ARG_FR]]) 19828e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 1992ab44989SMatt Arsenault; 2002ab44989SMatt Arsenault %op = call float @llvm.log.f32(float %arg) 2012ab44989SMatt Arsenault %freeze = freeze float %op 2022ab44989SMatt Arsenault ret float %freeze 2032ab44989SMatt Arsenault} 2042ab44989SMatt Arsenault 2052ab44989SMatt Arsenaultdefine float @freeze_log10(float %arg) { 2062ab44989SMatt Arsenault; CHECK-LABEL: @freeze_log10( 20728e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 20828e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.log10.f32(float [[ARG_FR]]) 20928e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 2102ab44989SMatt Arsenault; 2112ab44989SMatt Arsenault %op = call float @llvm.log10.f32(float %arg) 2122ab44989SMatt Arsenault %freeze = freeze float %op 2132ab44989SMatt Arsenault ret float %freeze 2142ab44989SMatt Arsenault} 2152ab44989SMatt Arsenault 2162ab44989SMatt Arsenaultdefine float @freeze_log2(float %arg) { 2172ab44989SMatt Arsenault; CHECK-LABEL: @freeze_log2( 21828e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 21928e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.log2.f32(float [[ARG_FR]]) 22028e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 2212ab44989SMatt Arsenault; 2222ab44989SMatt Arsenault %op = call float @llvm.log2.f32(float %arg) 2232ab44989SMatt Arsenault %freeze = freeze float %op 2242ab44989SMatt Arsenault ret float %freeze 2252ab44989SMatt Arsenault} 2262ab44989SMatt Arsenault 2272ab44989SMatt Arsenaultdefine float @freeze_exp(float %arg) { 2282ab44989SMatt Arsenault; CHECK-LABEL: @freeze_exp( 22928e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 23028e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.exp.f32(float [[ARG_FR]]) 23128e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 2322ab44989SMatt Arsenault; 2332ab44989SMatt Arsenault %op = call float @llvm.exp.f32(float %arg) 2342ab44989SMatt Arsenault %freeze = freeze float %op 2352ab44989SMatt Arsenault ret float %freeze 2362ab44989SMatt Arsenault} 2372ab44989SMatt Arsenault 2382ab44989SMatt Arsenaultdefine float @freeze_exp2(float %arg) { 2392ab44989SMatt Arsenault; CHECK-LABEL: @freeze_exp2( 24028e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 24128e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.exp2.f32(float [[ARG_FR]]) 24228e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 2432ab44989SMatt Arsenault; 2442ab44989SMatt Arsenault %op = call float @llvm.exp2.f32(float %arg) 2452ab44989SMatt Arsenault %freeze = freeze float %op 2462ab44989SMatt Arsenault ret float %freeze 2472ab44989SMatt Arsenault} 2482ab44989SMatt Arsenault 249*d3c46db4SMatt Arsenaultdefine float @freeze_exp10(float %arg) { 250*d3c46db4SMatt Arsenault; CHECK-LABEL: @freeze_exp10( 251*d3c46db4SMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 252*d3c46db4SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.exp10.f32(float [[ARG_FR]]) 253*d3c46db4SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 254*d3c46db4SMatt Arsenault; 255*d3c46db4SMatt Arsenault %op = call float @llvm.exp10.f32(float %arg) 256*d3c46db4SMatt Arsenault %freeze = freeze float %op 257*d3c46db4SMatt Arsenault ret float %freeze 258*d3c46db4SMatt Arsenault} 259*d3c46db4SMatt Arsenault 2602ab44989SMatt Arsenaultdefine float @freeze_fabs(float %arg) { 2612ab44989SMatt Arsenault; CHECK-LABEL: @freeze_fabs( 26228e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 26328e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fabs.f32(float [[ARG_FR]]) 26428e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 2652ab44989SMatt Arsenault; 2662ab44989SMatt Arsenault %op = call float @llvm.fabs.f32(float %arg) 2672ab44989SMatt Arsenault %freeze = freeze float %op 2682ab44989SMatt Arsenault ret float %freeze 2692ab44989SMatt Arsenault} 2702ab44989SMatt Arsenault 2712ab44989SMatt Arsenaultdefine float @freeze_copysign(float %arg0, float noundef %arg1) { 2722ab44989SMatt Arsenault; CHECK-LABEL: @freeze_copysign( 27328e3220aSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 27428e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.copysign.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) 27528e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 2762ab44989SMatt Arsenault; 2772ab44989SMatt Arsenault %op = call float @llvm.copysign.f32(float %arg0, float noundef %arg1) 2782ab44989SMatt Arsenault %freeze = freeze float %op 2792ab44989SMatt Arsenault ret float %freeze 2802ab44989SMatt Arsenault} 2812ab44989SMatt Arsenault 2822ab44989SMatt Arsenaultdefine float @freeze_floor(float %arg) { 2832ab44989SMatt Arsenault; CHECK-LABEL: @freeze_floor( 28428e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 28528e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.floor.f32(float [[ARG_FR]]) 28628e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 2872ab44989SMatt Arsenault; 2882ab44989SMatt Arsenault %op = call float @llvm.floor.f32(float %arg) 2892ab44989SMatt Arsenault %freeze = freeze float %op 2902ab44989SMatt Arsenault ret float %freeze 2912ab44989SMatt Arsenault} 2922ab44989SMatt Arsenault 2932ab44989SMatt Arsenaultdefine float @freeze_ceil(float %arg) { 2942ab44989SMatt Arsenault; CHECK-LABEL: @freeze_ceil( 29528e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 29628e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.ceil.f32(float [[ARG_FR]]) 29728e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 2982ab44989SMatt Arsenault; 2992ab44989SMatt Arsenault %op = call float @llvm.ceil.f32(float %arg) 3002ab44989SMatt Arsenault %freeze = freeze float %op 3012ab44989SMatt Arsenault ret float %freeze 3022ab44989SMatt Arsenault} 3032ab44989SMatt Arsenault 3042ab44989SMatt Arsenaultdefine float @freeze_trunc(float %arg) { 3052ab44989SMatt Arsenault; CHECK-LABEL: @freeze_trunc( 30628e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 30728e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.trunc.f32(float [[ARG_FR]]) 30828e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 3092ab44989SMatt Arsenault; 3102ab44989SMatt Arsenault %op = call float @llvm.trunc.f32(float %arg) 3112ab44989SMatt Arsenault %freeze = freeze float %op 3122ab44989SMatt Arsenault ret float %freeze 3132ab44989SMatt Arsenault} 3142ab44989SMatt Arsenault 3152ab44989SMatt Arsenaultdefine float @freeze_rint(float %arg) { 3162ab44989SMatt Arsenault; CHECK-LABEL: @freeze_rint( 31728e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 31828e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.rint.f32(float [[ARG_FR]]) 31928e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 3202ab44989SMatt Arsenault; 3212ab44989SMatt Arsenault %op = call float @llvm.rint.f32(float %arg) 3222ab44989SMatt Arsenault %freeze = freeze float %op 3232ab44989SMatt Arsenault ret float %freeze 3242ab44989SMatt Arsenault} 3252ab44989SMatt Arsenault 3262ab44989SMatt Arsenaultdefine float @freeze_nearbyint(float %arg) { 3272ab44989SMatt Arsenault; CHECK-LABEL: @freeze_nearbyint( 32828e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 32928e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.nearbyint.f32(float [[ARG_FR]]) 33028e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 3312ab44989SMatt Arsenault; 3322ab44989SMatt Arsenault %op = call float @llvm.nearbyint.f32(float %arg) 3332ab44989SMatt Arsenault %freeze = freeze float %op 3342ab44989SMatt Arsenault ret float %freeze 3352ab44989SMatt Arsenault} 3362ab44989SMatt Arsenault 3372ab44989SMatt Arsenaultdefine float @freeze_round(float %arg) { 3382ab44989SMatt Arsenault; CHECK-LABEL: @freeze_round( 33928e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 34028e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.round.f32(float [[ARG_FR]]) 34128e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 3422ab44989SMatt Arsenault; 3432ab44989SMatt Arsenault %op = call float @llvm.round.f32(float %arg) 3442ab44989SMatt Arsenault %freeze = freeze float %op 3452ab44989SMatt Arsenault ret float %freeze 3462ab44989SMatt Arsenault} 3472ab44989SMatt Arsenault 3482ab44989SMatt Arsenaultdefine float @freeze_roundeven(float %arg) { 3492ab44989SMatt Arsenault; CHECK-LABEL: @freeze_roundeven( 35028e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 35128e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.roundeven.f32(float [[ARG_FR]]) 35228e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 3532ab44989SMatt Arsenault; 3542ab44989SMatt Arsenault %op = call float @llvm.roundeven.f32(float %arg) 3552ab44989SMatt Arsenault %freeze = freeze float %op 3562ab44989SMatt Arsenault ret float %freeze 3572ab44989SMatt Arsenault} 3582ab44989SMatt Arsenault 3592ab44989SMatt Arsenaultdefine float @freeze_canonicalize(float %arg) { 3602ab44989SMatt Arsenault; CHECK-LABEL: @freeze_canonicalize( 36128e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 36228e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.canonicalize.f32(float [[ARG_FR]]) 36328e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 3642ab44989SMatt Arsenault; 3652ab44989SMatt Arsenault %op = call float @llvm.canonicalize.f32(float %arg) 3662ab44989SMatt Arsenault %freeze = freeze float %op 3672ab44989SMatt Arsenault ret float %freeze 3682ab44989SMatt Arsenault} 3692ab44989SMatt Arsenault 3702ab44989SMatt Arsenaultdefine float @freeze_arithmetic_fence(float %arg) { 3712ab44989SMatt Arsenault; CHECK-LABEL: @freeze_arithmetic_fence( 37228e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 37328e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.arithmetic.fence.f32(float [[ARG_FR]]) 37428e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 3752ab44989SMatt Arsenault; 3762ab44989SMatt Arsenault %op = call float @llvm.arithmetic.fence.f32(float %arg) 3772ab44989SMatt Arsenault %freeze = freeze float %op 3782ab44989SMatt Arsenault ret float %freeze 3792ab44989SMatt Arsenault} 3802ab44989SMatt Arsenault 3812ab44989SMatt Arsenaultdefine i32 @freeze_lround(float %arg) { 3822ab44989SMatt Arsenault; CHECK-LABEL: @freeze_lround( 38328e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 38428e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call i32 @llvm.lround.i32.f32(float [[ARG_FR]]) 38528e3220aSMatt Arsenault; CHECK-NEXT: ret i32 [[OP]] 3862ab44989SMatt Arsenault; 3872ab44989SMatt Arsenault %op = call i32 @llvm.lround.i32.f32(float %arg) 3882ab44989SMatt Arsenault %freeze = freeze i32 %op 3892ab44989SMatt Arsenault ret i32 %freeze 3902ab44989SMatt Arsenault} 3912ab44989SMatt Arsenault 3922ab44989SMatt Arsenaultdefine i32 @freeze_llround(float %arg) { 3932ab44989SMatt Arsenault; CHECK-LABEL: @freeze_llround( 39428e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 39528e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call i32 @llvm.llround.i32.f32(float [[ARG_FR]]) 39628e3220aSMatt Arsenault; CHECK-NEXT: ret i32 [[OP]] 3972ab44989SMatt Arsenault; 3982ab44989SMatt Arsenault %op = call i32 @llvm.llround.i32.f32(float %arg) 3992ab44989SMatt Arsenault %freeze = freeze i32 %op 4002ab44989SMatt Arsenault ret i32 %freeze 4012ab44989SMatt Arsenault} 4022ab44989SMatt Arsenault 4032ab44989SMatt Arsenaultdefine i32 @freeze_lrint(float %arg) { 4042ab44989SMatt Arsenault; CHECK-LABEL: @freeze_lrint( 40528e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 40628e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call i32 @llvm.lrint.i32.f32(float [[ARG_FR]]) 40728e3220aSMatt Arsenault; CHECK-NEXT: ret i32 [[OP]] 4082ab44989SMatt Arsenault; 4092ab44989SMatt Arsenault %op = call i32 @llvm.lrint.i32.f32(float %arg) 4102ab44989SMatt Arsenault %freeze = freeze i32 %op 4112ab44989SMatt Arsenault ret i32 %freeze 4122ab44989SMatt Arsenault} 4132ab44989SMatt Arsenault 4142ab44989SMatt Arsenaultdefine i32 @freeze_llrint(float %arg) { 4152ab44989SMatt Arsenault; CHECK-LABEL: @freeze_llrint( 41628e3220aSMatt Arsenault; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] 41728e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call i32 @llvm.llrint.i32.f32(float [[ARG_FR]]) 41828e3220aSMatt Arsenault; CHECK-NEXT: ret i32 [[OP]] 4192ab44989SMatt Arsenault; 4202ab44989SMatt Arsenault %op = call i32 @llvm.llrint.i32.f32(float %arg) 4212ab44989SMatt Arsenault %freeze = freeze i32 %op 4222ab44989SMatt Arsenault ret i32 %freeze 4232ab44989SMatt Arsenault} 4242ab44989SMatt Arsenault 4252ab44989SMatt Arsenaultdefine i32 @freeze_noundef_lround(float %arg) { 4262ab44989SMatt Arsenault; CHECK-LABEL: @freeze_noundef_lround( 4272ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.lround.i32.f32(float [[ARG:%.*]]) 4282ab44989SMatt Arsenault; CHECK-NEXT: ret i32 [[OP]] 4292ab44989SMatt Arsenault; 4302ab44989SMatt Arsenault %op = call noundef i32 @llvm.lround.i32.f32(float %arg) 4312ab44989SMatt Arsenault %freeze = freeze i32 %op 4322ab44989SMatt Arsenault ret i32 %freeze 4332ab44989SMatt Arsenault} 4342ab44989SMatt Arsenault 4352ab44989SMatt Arsenaultdefine i32 @freeze_noundef_llround(float %arg) { 4362ab44989SMatt Arsenault; CHECK-LABEL: @freeze_noundef_llround( 4372ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.llround.i32.f32(float [[ARG:%.*]]) 4382ab44989SMatt Arsenault; CHECK-NEXT: ret i32 [[OP]] 4392ab44989SMatt Arsenault; 4402ab44989SMatt Arsenault %op = call noundef i32 @llvm.llround.i32.f32(float %arg) 4412ab44989SMatt Arsenault %freeze = freeze i32 %op 4422ab44989SMatt Arsenault ret i32 %freeze 4432ab44989SMatt Arsenault} 4442ab44989SMatt Arsenault 4452ab44989SMatt Arsenaultdefine i32 @freeze_noundef_lrint(float %arg) { 4462ab44989SMatt Arsenault; CHECK-LABEL: @freeze_noundef_lrint( 4472ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.lrint.i32.f32(float [[ARG:%.*]]) 4482ab44989SMatt Arsenault; CHECK-NEXT: ret i32 [[OP]] 4492ab44989SMatt Arsenault; 4502ab44989SMatt Arsenault %op = call noundef i32 @llvm.lrint.i32.f32(float %arg) 4512ab44989SMatt Arsenault %freeze = freeze i32 %op 4522ab44989SMatt Arsenault ret i32 %freeze 4532ab44989SMatt Arsenault} 4542ab44989SMatt Arsenault 4552ab44989SMatt Arsenaultdefine i32 @freeze_noundef_llrint(float %arg) { 4562ab44989SMatt Arsenault; CHECK-LABEL: @freeze_noundef_llrint( 4572ab44989SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.llrint.i32.f32(float [[ARG:%.*]]) 4582ab44989SMatt Arsenault; CHECK-NEXT: ret i32 [[OP]] 4592ab44989SMatt Arsenault; 4602ab44989SMatt Arsenault %op = call noundef i32 @llvm.llrint.i32.f32(float %arg) 4612ab44989SMatt Arsenault %freeze = freeze i32 %op 4622ab44989SMatt Arsenault ret i32 %freeze 4632ab44989SMatt Arsenault} 4642ab44989SMatt Arsenault 4652ab44989SMatt Arsenaultdefine float @freeze_minnum(float %arg0, float noundef %arg1) { 4662ab44989SMatt Arsenault; CHECK-LABEL: @freeze_minnum( 46728e3220aSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 46828e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.minnum.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) 46928e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 4702ab44989SMatt Arsenault; 4712ab44989SMatt Arsenault %op = call float @llvm.minnum.f32(float %arg0, float noundef %arg1) 4722ab44989SMatt Arsenault %freeze = freeze float %op 4732ab44989SMatt Arsenault ret float %freeze 4742ab44989SMatt Arsenault} 4752ab44989SMatt Arsenault 4762ab44989SMatt Arsenaultdefine float @freeze_maxnum(float %arg0, float noundef %arg1) { 4772ab44989SMatt Arsenault; CHECK-LABEL: @freeze_maxnum( 47828e3220aSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 47928e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.maxnum.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) 48028e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 4812ab44989SMatt Arsenault; 4822ab44989SMatt Arsenault %op = call float @llvm.maxnum.f32(float %arg0, float noundef %arg1) 4832ab44989SMatt Arsenault %freeze = freeze float %op 4842ab44989SMatt Arsenault ret float %freeze 4852ab44989SMatt Arsenault} 4862ab44989SMatt Arsenault 4872ab44989SMatt Arsenaultdefine float @freeze_minimum(float %arg0, float noundef %arg1) { 4882ab44989SMatt Arsenault; CHECK-LABEL: @freeze_minimum( 48928e3220aSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 49028e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.minimum.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) 49128e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 4922ab44989SMatt Arsenault; 4932ab44989SMatt Arsenault %op = call float @llvm.minimum.f32(float %arg0, float noundef %arg1) 4942ab44989SMatt Arsenault %freeze = freeze float %op 4952ab44989SMatt Arsenault ret float %freeze 4962ab44989SMatt Arsenault} 4972ab44989SMatt Arsenault 4982ab44989SMatt Arsenaultdefine float @freeze_maximum(float %arg0, float noundef %arg1) { 4992ab44989SMatt Arsenault; CHECK-LABEL: @freeze_maximum( 50028e3220aSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 50128e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.maximum.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) 50228e3220aSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 5032ab44989SMatt Arsenault; 5042ab44989SMatt Arsenault %op = call float @llvm.maximum.f32(float %arg0, float noundef %arg1) 5052ab44989SMatt Arsenault %freeze = freeze float %op 5062ab44989SMatt Arsenault ret float %freeze 5072ab44989SMatt Arsenault} 5082ab44989SMatt Arsenault 5092ab44989SMatt Arsenaultdefine i1 @freeze_isfpclass(float %arg0) { 5102ab44989SMatt Arsenault; CHECK-LABEL: @freeze_isfpclass( 51128e3220aSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 51228e3220aSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call i1 @llvm.is.fpclass.f32(float [[ARG0_FR]], i32 27) 51328e3220aSMatt Arsenault; CHECK-NEXT: ret i1 [[OP]] 5142ab44989SMatt Arsenault; 5152ab44989SMatt Arsenault %op = call i1 @llvm.is.fpclass.f32(float %arg0, i32 27) 5162ab44989SMatt Arsenault %freeze = freeze i1 %op 5172ab44989SMatt Arsenault ret i1 %freeze 5182ab44989SMatt Arsenault} 5192ab44989SMatt Arsenault 5202ab44989SMatt Arsenaultdefine float @freeze_fptrunc_round(double %arg0) { 5212ab44989SMatt Arsenault; CHECK-LABEL: @freeze_fptrunc_round( 5221bf261c8SMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze double [[ARG0:%.*]] 5231bf261c8SMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fptrunc.round.f32.f64(double [[ARG0_FR]], metadata !"round.downward") 5241bf261c8SMatt Arsenault; CHECK-NEXT: ret float [[OP]] 5252ab44989SMatt Arsenault; 5262ab44989SMatt Arsenault %op = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward") 5272ab44989SMatt Arsenault %freeze = freeze float %op 5282ab44989SMatt Arsenault ret float %freeze 5292ab44989SMatt Arsenault} 5302ab44989SMatt Arsenault 5315dbeed2eSMatt Arsenaultdefine float @freeze_ldexp(float %arg0, i32 noundef %arg1) { 5325dbeed2eSMatt Arsenault; CHECK-LABEL: @freeze_ldexp( 5335dbeed2eSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 5345dbeed2eSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call float @llvm.ldexp.f32.i32(float [[ARG0_FR]], i32 [[ARG1:%.*]]) 5355dbeed2eSMatt Arsenault; CHECK-NEXT: ret float [[OP]] 5365dbeed2eSMatt Arsenault; 5375dbeed2eSMatt Arsenault %op = call float @llvm.ldexp.f32.i32(float %arg0, i32 %arg1) 5385dbeed2eSMatt Arsenault %freeze = freeze float %op 5395dbeed2eSMatt Arsenault ret float %freeze 5405dbeed2eSMatt Arsenault} 5415dbeed2eSMatt Arsenault 542e86be1fdSMatt Arsenaultdefine { float, i32 } @freeze_frexp(float %arg0) { 543e86be1fdSMatt Arsenault; CHECK-LABEL: @freeze_frexp( 544e86be1fdSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 545e86be1fdSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[ARG0_FR]]) 546e86be1fdSMatt Arsenault; CHECK-NEXT: ret { float, i32 } [[OP]] 547e86be1fdSMatt Arsenault; 548e86be1fdSMatt Arsenault %op = call { float, i32 } @llvm.frexp.f32.i32(float %arg0) 549e86be1fdSMatt Arsenault %freeze = freeze { float, i32 } %op 550e86be1fdSMatt Arsenault ret { float, i32 } %freeze 551e86be1fdSMatt Arsenault} 552e86be1fdSMatt Arsenault 553e86be1fdSMatt Arsenaultdefine float @freeze_frexp_0(float %arg0) { 554e86be1fdSMatt Arsenault; CHECK-LABEL: @freeze_frexp_0( 555e86be1fdSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 556e86be1fdSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[ARG0_FR]]) 557e86be1fdSMatt Arsenault; CHECK-NEXT: [[EXTRACT_0:%.*]] = extractvalue { float, i32 } [[OP]], 0 558e86be1fdSMatt Arsenault; CHECK-NEXT: ret float [[EXTRACT_0]] 559e86be1fdSMatt Arsenault; 560e86be1fdSMatt Arsenault %op = call { float, i32 } @llvm.frexp.f32.i32(float %arg0) 561e86be1fdSMatt Arsenault %extract.0 = extractvalue { float, i32 } %op, 0 562e86be1fdSMatt Arsenault %freeze = freeze float %extract.0 563e86be1fdSMatt Arsenault ret float %freeze 564e86be1fdSMatt Arsenault} 565e86be1fdSMatt Arsenault 566e86be1fdSMatt Arsenaultdefine i32 @freeze_frexp_1(float %arg0) { 567e86be1fdSMatt Arsenault; CHECK-LABEL: @freeze_frexp_1( 568e86be1fdSMatt Arsenault; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] 569e86be1fdSMatt Arsenault; CHECK-NEXT: [[OP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[ARG0_FR]]) 570e86be1fdSMatt Arsenault; CHECK-NEXT: [[EXTRACT_1:%.*]] = extractvalue { float, i32 } [[OP]], 1 571e86be1fdSMatt Arsenault; CHECK-NEXT: ret i32 [[EXTRACT_1]] 572e86be1fdSMatt Arsenault; 573e86be1fdSMatt Arsenault %op = call { float, i32 } @llvm.frexp.f32.i32(float %arg0) 574e86be1fdSMatt Arsenault %extract.1 = extractvalue { float, i32 } %op, 1 575e86be1fdSMatt Arsenault %freeze = freeze i32 %extract.1 576e86be1fdSMatt Arsenault ret i32 %freeze 577e86be1fdSMatt Arsenault} 578e86be1fdSMatt Arsenault 5792ab44989SMatt Arsenaultdeclare float @llvm.fma.f32(float, float, float) 5802ab44989SMatt Arsenaultdeclare float @llvm.fmuladd.f32(float, float, float) 5812ab44989SMatt Arsenaultdeclare float @llvm.sqrt.f32(float) 5822ab44989SMatt Arsenaultdeclare float @llvm.powi.f32.i32(float, i32) 5832ab44989SMatt Arsenaultdeclare float @llvm.sin.f32(float) 5842ab44989SMatt Arsenaultdeclare float @llvm.cos.f32(float) 5852ab44989SMatt Arsenaultdeclare float @llvm.pow.f32(float, float) 5862ab44989SMatt Arsenaultdeclare float @llvm.log.f32(float) 5872ab44989SMatt Arsenaultdeclare float @llvm.log10.f32(float) 5882ab44989SMatt Arsenaultdeclare float @llvm.log2.f32(float) 5892ab44989SMatt Arsenaultdeclare float @llvm.exp.f32(float) 5902ab44989SMatt Arsenaultdeclare float @llvm.exp2.f32(float) 591*d3c46db4SMatt Arsenaultdeclare float @llvm.exp10.f32(float) 5922ab44989SMatt Arsenaultdeclare float @llvm.fabs.f32(float) 5932ab44989SMatt Arsenaultdeclare float @llvm.copysign.f32(float, float) 5942ab44989SMatt Arsenaultdeclare float @llvm.floor.f32(float) 5952ab44989SMatt Arsenaultdeclare float @llvm.ceil.f32(float) 5962ab44989SMatt Arsenaultdeclare float @llvm.trunc.f32(float) 5972ab44989SMatt Arsenaultdeclare float @llvm.rint.f32(float) 5982ab44989SMatt Arsenaultdeclare float @llvm.nearbyint.f32(float) 5992ab44989SMatt Arsenaultdeclare float @llvm.round.f32(float) 6002ab44989SMatt Arsenaultdeclare float @llvm.roundeven.f32(float) 6012ab44989SMatt Arsenaultdeclare float @llvm.canonicalize.f32(float) 6022ab44989SMatt Arsenaultdeclare float @llvm.arithmetic.fence.f32(float) 6032ab44989SMatt Arsenaultdeclare i32 @llvm.lround.i32.f32(float) 6042ab44989SMatt Arsenaultdeclare i32 @llvm.llround.i32.f32(float) 6052ab44989SMatt Arsenaultdeclare i32 @llvm.lrint.i32.f32(float) 6062ab44989SMatt Arsenaultdeclare i32 @llvm.llrint.i32.f32(float) 6072ab44989SMatt Arsenaultdeclare float @llvm.minnum.f32(float, float) 6082ab44989SMatt Arsenaultdeclare float @llvm.maxnum.f32(float, float) 6092ab44989SMatt Arsenaultdeclare float @llvm.minimum.f32(float, float) 6102ab44989SMatt Arsenaultdeclare float @llvm.maximum.f32(float, float) 6112ab44989SMatt Arsenaultdeclare i1 @llvm.is.fpclass.f32(float, i32 immarg) 6122ab44989SMatt Arsenaultdeclare float @llvm.fptrunc.round.f32.f64(double, metadata) 6135dbeed2eSMatt Arsenaultdeclare float @llvm.ldexp.f32.i32(float, i32) 614e86be1fdSMatt Arsenaultdeclare { float, i32 } @llvm.frexp.f32.i32(float) 615