xref: /llvm-project/llvm/test/Transforms/InstCombine/freeze-fp-ops.ll (revision d3c46db494de331fb49ea7aaeb1ab16c0259d539)
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