diff options
Diffstat (limited to 'llvm/test/Transforms/InstCombine/freeze-fp-ops.ll')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/freeze-fp-ops.ll | 313 |
1 files changed, 184 insertions, 129 deletions
diff --git a/llvm/test/Transforms/InstCombine/freeze-fp-ops.ll b/llvm/test/Transforms/InstCombine/freeze-fp-ops.ll index d1a36dcef4d6..b1c6fc05e864 100644 --- a/llvm/test/Transforms/InstCombine/freeze-fp-ops.ll +++ b/llvm/test/Transforms/InstCombine/freeze-fp-ops.ll @@ -1,12 +1,13 @@ -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 ; RUN: opt -S -passes=instcombine < %s | FileCheck %s ; Test that floating point operations are not treated as sources of ; poison. define float @freeze_fneg(float %arg) { -; CHECK-LABEL: @freeze_fneg( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_fneg( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = fneg float [[ARG_FR]] ; CHECK-NEXT: ret float [[OP]] ; @@ -16,9 +17,10 @@ define float @freeze_fneg(float %arg) { } define float @freeze_fadd(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_fadd( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = fadd float [[ARG0_FR]], [[ARG1:%.*]] +; CHECK-LABEL: define float @freeze_fadd( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = fadd float [[ARG0_FR]], [[ARG1]] ; CHECK-NEXT: ret float [[OP]] ; %op = fadd float %arg0, %arg1 @@ -27,9 +29,10 @@ define float @freeze_fadd(float %arg0, float noundef %arg1) { } define float @freeze_fsub(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_fsub( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = fsub float [[ARG0_FR]], [[ARG1:%.*]] +; CHECK-LABEL: define float @freeze_fsub( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = fsub float [[ARG0_FR]], [[ARG1]] ; CHECK-NEXT: ret float [[OP]] ; %op = fsub float %arg0, %arg1 @@ -38,9 +41,10 @@ define float @freeze_fsub(float %arg0, float noundef %arg1) { } define float @freeze_fmul(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_fmul( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = fmul float [[ARG0_FR]], [[ARG1:%.*]] +; CHECK-LABEL: define float @freeze_fmul( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = fmul float [[ARG0_FR]], [[ARG1]] ; CHECK-NEXT: ret float [[OP]] ; %op = fmul float %arg0, %arg1 @@ -49,9 +53,10 @@ define float @freeze_fmul(float %arg0, float noundef %arg1) { } define float @freeze_fdiv(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_fdiv( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = fdiv float [[ARG0_FR]], [[ARG1:%.*]] +; CHECK-LABEL: define float @freeze_fdiv( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = fdiv float [[ARG0_FR]], [[ARG1]] ; CHECK-NEXT: ret float [[OP]] ; %op = fdiv float %arg0, %arg1 @@ -60,9 +65,10 @@ define float @freeze_fdiv(float %arg0, float noundef %arg1) { } define float @freeze_frem(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_frem( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = fdiv float [[ARG0_FR]], [[ARG1:%.*]] +; CHECK-LABEL: define float @freeze_frem( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = fdiv float [[ARG0_FR]], [[ARG1]] ; CHECK-NEXT: ret float [[OP]] ; %op = fdiv float %arg0, %arg1 @@ -71,8 +77,9 @@ define float @freeze_frem(float %arg0, float noundef %arg1) { } define double @fpext(float %arg) { -; CHECK-LABEL: @fpext( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define double @fpext( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = fpext float [[ARG_FR]] to double ; CHECK-NEXT: ret double [[OP]] ; @@ -82,8 +89,9 @@ define double @fpext(float %arg) { } define float @fptrunc(double %arg) { -; CHECK-LABEL: @fptrunc( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze double [[ARG:%.*]] +; CHECK-LABEL: define float @fptrunc( +; CHECK-SAME: double [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze double [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = fptrunc double [[ARG_FR]] to float ; CHECK-NEXT: ret float [[OP]] ; @@ -93,8 +101,9 @@ define float @fptrunc(double %arg) { } define float @sitofp(i32 %arg) { -; CHECK-LABEL: @sitofp( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze i32 [[ARG:%.*]] +; CHECK-LABEL: define float @sitofp( +; CHECK-SAME: i32 [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze i32 [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = sitofp i32 [[ARG_FR]] to float ; CHECK-NEXT: ret float [[OP]] ; @@ -104,8 +113,9 @@ define float @sitofp(i32 %arg) { } define float @uitofp(i32 %arg) { -; CHECK-LABEL: @uitofp( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze i32 [[ARG:%.*]] +; CHECK-LABEL: define float @uitofp( +; CHECK-SAME: i32 [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze i32 [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = uitofp i32 [[ARG_FR]] to float ; CHECK-NEXT: ret float [[OP]] ; @@ -115,9 +125,10 @@ define float @uitofp(i32 %arg) { } define float @freeze_fma(float %arg0, float noundef %arg1, float noundef %arg2) { -; CHECK-LABEL: @freeze_fma( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fma.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]], float noundef [[ARG2:%.*]]) +; CHECK-LABEL: define float @freeze_fma( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]], float noundef [[ARG2:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fma.f32(float [[ARG0_FR]], float noundef [[ARG1]], float noundef [[ARG2]]) ; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.fma.f32(float %arg0, float noundef %arg1, float noundef %arg2) @@ -126,9 +137,10 @@ define float @freeze_fma(float %arg0, float noundef %arg1, float noundef %arg2) } define float @freeze_fmuladd(float %arg0, float noundef %arg1, float noundef %arg2) { -; CHECK-LABEL: @freeze_fmuladd( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fmuladd.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]], float noundef [[ARG2:%.*]]) +; CHECK-LABEL: define float @freeze_fmuladd( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]], float noundef [[ARG2:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fmuladd.f32(float [[ARG0_FR]], float noundef [[ARG1]], float noundef [[ARG2]]) ; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.fmuladd.f32(float %arg0, float noundef %arg1, float noundef %arg2) @@ -137,8 +149,9 @@ define float @freeze_fmuladd(float %arg0, float noundef %arg1, float noundef %ar } define float @freeze_sqrt(float %arg) { -; CHECK-LABEL: @freeze_sqrt( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_sqrt( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.sqrt.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -148,10 +161,12 @@ define float @freeze_sqrt(float %arg) { } define float @freeze_powi(float %arg0, i32 %arg1) { -; CHECK-LABEL: @freeze_powi( -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.powi.f32.i32(float [[ARG0:%.*]], i32 [[ARG1:%.*]]) -; CHECK-NEXT: [[FREEZE:%.*]] = freeze float [[OP]] -; CHECK-NEXT: ret float [[FREEZE]] +; CHECK-LABEL: define float @freeze_powi( +; CHECK-SAME: float [[ARG0:%.*]], i32 [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[ARG1_FR:%.*]] = freeze i32 [[ARG1]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.powi.f32.i32(float [[ARG0_FR]], i32 [[ARG1_FR]]) +; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.powi.f32.i32(float %arg0, i32 %arg1) %freeze = freeze float %op @@ -159,8 +174,9 @@ define float @freeze_powi(float %arg0, i32 %arg1) { } define float @freeze_sin(float %arg) { -; CHECK-LABEL: @freeze_sin( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_sin( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.sin.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -170,8 +186,9 @@ define float @freeze_sin(float %arg) { } define float @freeze_cos(float %arg) { -; CHECK-LABEL: @freeze_cos( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_cos( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.cos.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -181,9 +198,10 @@ define float @freeze_cos(float %arg) { } define float @freeze_pow(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_pow( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.pow.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) +; CHECK-LABEL: define float @freeze_pow( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.pow.f32(float [[ARG0_FR]], float noundef [[ARG1]]) ; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.pow.f32(float %arg0, float noundef %arg1) @@ -192,8 +210,9 @@ define float @freeze_pow(float %arg0, float noundef %arg1) { } define float @freeze_log(float %arg) { -; CHECK-LABEL: @freeze_log( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_log( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.log.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -203,8 +222,9 @@ define float @freeze_log(float %arg) { } define float @freeze_log10(float %arg) { -; CHECK-LABEL: @freeze_log10( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_log10( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.log10.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -214,8 +234,9 @@ define float @freeze_log10(float %arg) { } define float @freeze_log2(float %arg) { -; CHECK-LABEL: @freeze_log2( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_log2( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.log2.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -225,8 +246,9 @@ define float @freeze_log2(float %arg) { } define float @freeze_exp(float %arg) { -; CHECK-LABEL: @freeze_exp( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_exp( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.exp.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -236,8 +258,9 @@ define float @freeze_exp(float %arg) { } define float @freeze_exp2(float %arg) { -; CHECK-LABEL: @freeze_exp2( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_exp2( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.exp2.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -247,8 +270,9 @@ define float @freeze_exp2(float %arg) { } define float @freeze_exp10(float %arg) { -; CHECK-LABEL: @freeze_exp10( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_exp10( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.exp10.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -258,8 +282,9 @@ define float @freeze_exp10(float %arg) { } define float @freeze_fabs(float %arg) { -; CHECK-LABEL: @freeze_fabs( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_fabs( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fabs.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -269,9 +294,10 @@ define float @freeze_fabs(float %arg) { } define float @freeze_copysign(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_copysign( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.copysign.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) +; CHECK-LABEL: define float @freeze_copysign( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.copysign.f32(float [[ARG0_FR]], float noundef [[ARG1]]) ; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.copysign.f32(float %arg0, float noundef %arg1) @@ -280,8 +306,9 @@ define float @freeze_copysign(float %arg0, float noundef %arg1) { } define float @freeze_floor(float %arg) { -; CHECK-LABEL: @freeze_floor( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_floor( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.floor.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -291,8 +318,9 @@ define float @freeze_floor(float %arg) { } define float @freeze_ceil(float %arg) { -; CHECK-LABEL: @freeze_ceil( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_ceil( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.ceil.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -302,8 +330,9 @@ define float @freeze_ceil(float %arg) { } define float @freeze_trunc(float %arg) { -; CHECK-LABEL: @freeze_trunc( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_trunc( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.trunc.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -313,8 +342,9 @@ define float @freeze_trunc(float %arg) { } define float @freeze_rint(float %arg) { -; CHECK-LABEL: @freeze_rint( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_rint( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.rint.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -324,8 +354,9 @@ define float @freeze_rint(float %arg) { } define float @freeze_nearbyint(float %arg) { -; CHECK-LABEL: @freeze_nearbyint( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_nearbyint( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.nearbyint.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -335,8 +366,9 @@ define float @freeze_nearbyint(float %arg) { } define float @freeze_round(float %arg) { -; CHECK-LABEL: @freeze_round( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_round( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.round.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -346,8 +378,9 @@ define float @freeze_round(float %arg) { } define float @freeze_roundeven(float %arg) { -; CHECK-LABEL: @freeze_roundeven( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_roundeven( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.roundeven.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -357,8 +390,9 @@ define float @freeze_roundeven(float %arg) { } define float @freeze_canonicalize(float %arg) { -; CHECK-LABEL: @freeze_canonicalize( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_canonicalize( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.canonicalize.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -368,8 +402,9 @@ define float @freeze_canonicalize(float %arg) { } define float @freeze_arithmetic_fence(float %arg) { -; CHECK-LABEL: @freeze_arithmetic_fence( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define float @freeze_arithmetic_fence( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.arithmetic.fence.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret float [[OP]] ; @@ -379,8 +414,9 @@ define float @freeze_arithmetic_fence(float %arg) { } define i32 @freeze_lround(float %arg) { -; CHECK-LABEL: @freeze_lround( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define i32 @freeze_lround( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call i32 @llvm.lround.i32.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret i32 [[OP]] ; @@ -390,8 +426,9 @@ define i32 @freeze_lround(float %arg) { } define i32 @freeze_llround(float %arg) { -; CHECK-LABEL: @freeze_llround( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define i32 @freeze_llround( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call i32 @llvm.llround.i32.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret i32 [[OP]] ; @@ -401,8 +438,9 @@ define i32 @freeze_llround(float %arg) { } define i32 @freeze_lrint(float %arg) { -; CHECK-LABEL: @freeze_lrint( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define i32 @freeze_lrint( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call i32 @llvm.lrint.i32.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret i32 [[OP]] ; @@ -412,8 +450,9 @@ define i32 @freeze_lrint(float %arg) { } define i32 @freeze_llrint(float %arg) { -; CHECK-LABEL: @freeze_llrint( -; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG:%.*]] +; CHECK-LABEL: define i32 @freeze_llrint( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[ARG_FR:%.*]] = freeze float [[ARG]] ; CHECK-NEXT: [[OP:%.*]] = call i32 @llvm.llrint.i32.f32(float [[ARG_FR]]) ; CHECK-NEXT: ret i32 [[OP]] ; @@ -423,8 +462,9 @@ define i32 @freeze_llrint(float %arg) { } define i32 @freeze_noundef_lround(float %arg) { -; CHECK-LABEL: @freeze_noundef_lround( -; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.lround.i32.f32(float [[ARG:%.*]]) +; CHECK-LABEL: define i32 @freeze_noundef_lround( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.lround.i32.f32(float [[ARG]]) ; CHECK-NEXT: ret i32 [[OP]] ; %op = call noundef i32 @llvm.lround.i32.f32(float %arg) @@ -433,8 +473,9 @@ define i32 @freeze_noundef_lround(float %arg) { } define i32 @freeze_noundef_llround(float %arg) { -; CHECK-LABEL: @freeze_noundef_llround( -; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.llround.i32.f32(float [[ARG:%.*]]) +; CHECK-LABEL: define i32 @freeze_noundef_llround( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.llround.i32.f32(float [[ARG]]) ; CHECK-NEXT: ret i32 [[OP]] ; %op = call noundef i32 @llvm.llround.i32.f32(float %arg) @@ -443,8 +484,9 @@ define i32 @freeze_noundef_llround(float %arg) { } define i32 @freeze_noundef_lrint(float %arg) { -; CHECK-LABEL: @freeze_noundef_lrint( -; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.lrint.i32.f32(float [[ARG:%.*]]) +; CHECK-LABEL: define i32 @freeze_noundef_lrint( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.lrint.i32.f32(float [[ARG]]) ; CHECK-NEXT: ret i32 [[OP]] ; %op = call noundef i32 @llvm.lrint.i32.f32(float %arg) @@ -453,8 +495,9 @@ define i32 @freeze_noundef_lrint(float %arg) { } define i32 @freeze_noundef_llrint(float %arg) { -; CHECK-LABEL: @freeze_noundef_llrint( -; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.llrint.i32.f32(float [[ARG:%.*]]) +; CHECK-LABEL: define i32 @freeze_noundef_llrint( +; CHECK-SAME: float [[ARG:%.*]]) { +; CHECK-NEXT: [[OP:%.*]] = call noundef i32 @llvm.llrint.i32.f32(float [[ARG]]) ; CHECK-NEXT: ret i32 [[OP]] ; %op = call noundef i32 @llvm.llrint.i32.f32(float %arg) @@ -463,9 +506,10 @@ define i32 @freeze_noundef_llrint(float %arg) { } define float @freeze_minnum(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_minnum( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.minnum.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) +; CHECK-LABEL: define float @freeze_minnum( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.minnum.f32(float [[ARG0_FR]], float noundef [[ARG1]]) ; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.minnum.f32(float %arg0, float noundef %arg1) @@ -474,9 +518,10 @@ define float @freeze_minnum(float %arg0, float noundef %arg1) { } define float @freeze_maxnum(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_maxnum( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.maxnum.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) +; CHECK-LABEL: define float @freeze_maxnum( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.maxnum.f32(float [[ARG0_FR]], float noundef [[ARG1]]) ; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.maxnum.f32(float %arg0, float noundef %arg1) @@ -485,9 +530,10 @@ define float @freeze_maxnum(float %arg0, float noundef %arg1) { } define float @freeze_minimum(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_minimum( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.minimum.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) +; CHECK-LABEL: define float @freeze_minimum( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.minimum.f32(float [[ARG0_FR]], float noundef [[ARG1]]) ; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.minimum.f32(float %arg0, float noundef %arg1) @@ -496,9 +542,10 @@ define float @freeze_minimum(float %arg0, float noundef %arg1) { } define float @freeze_maximum(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_maximum( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.maximum.f32(float [[ARG0_FR]], float noundef [[ARG1:%.*]]) +; CHECK-LABEL: define float @freeze_maximum( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.maximum.f32(float [[ARG0_FR]], float noundef [[ARG1]]) ; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.maximum.f32(float %arg0, float noundef %arg1) @@ -507,10 +554,11 @@ define float @freeze_maximum(float %arg0, float noundef %arg1) { } define float @freeze_minimumnum(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_minimumnum( -; CHECK-NEXT: [[FREEZE:%.*]] = freeze float [[OP:%.*]] -; CHECK-NEXT: [[OP1:%.*]] = call float @llvm.minimumnum.f32(float [[FREEZE]], float noundef [[ARG1:%.*]]) -; CHECK-NEXT: ret float [[OP1]] +; CHECK-LABEL: define float @freeze_minimumnum( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.minimumnum.f32(float [[ARG0_FR]], float noundef [[ARG1]]) +; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.minimumnum.f32(float %arg0, float noundef %arg1) %freeze = freeze float %op @@ -518,10 +566,11 @@ define float @freeze_minimumnum(float %arg0, float noundef %arg1) { } define float @freeze_maximumnum(float %arg0, float noundef %arg1) { -; CHECK-LABEL: @freeze_maximumnum( -; CHECK-NEXT: [[FREEZE:%.*]] = freeze float [[OP:%.*]] -; CHECK-NEXT: [[OP1:%.*]] = call float @llvm.maximumnum.f32(float [[FREEZE]], float noundef [[ARG1:%.*]]) -; CHECK-NEXT: ret float [[OP1]] +; CHECK-LABEL: define float @freeze_maximumnum( +; CHECK-SAME: float [[ARG0:%.*]], float noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.maximumnum.f32(float [[ARG0_FR]], float noundef [[ARG1]]) +; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.maximumnum.f32(float %arg0, float noundef %arg1) %freeze = freeze float %op @@ -529,8 +578,9 @@ define float @freeze_maximumnum(float %arg0, float noundef %arg1) { } define i1 @freeze_isfpclass(float %arg0) { -; CHECK-LABEL: @freeze_isfpclass( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] +; CHECK-LABEL: define i1 @freeze_isfpclass( +; CHECK-SAME: float [[ARG0:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] ; CHECK-NEXT: [[OP:%.*]] = call i1 @llvm.is.fpclass.f32(float [[ARG0_FR]], i32 27) ; CHECK-NEXT: ret i1 [[OP]] ; @@ -540,8 +590,9 @@ define i1 @freeze_isfpclass(float %arg0) { } define float @freeze_fptrunc_round(double %arg0) { -; CHECK-LABEL: @freeze_fptrunc_round( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze double [[ARG0:%.*]] +; CHECK-LABEL: define float @freeze_fptrunc_round( +; CHECK-SAME: double [[ARG0:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze double [[ARG0]] ; CHECK-NEXT: [[OP:%.*]] = call float @llvm.fptrunc.round.f32.f64(double [[ARG0_FR]], metadata !"round.downward") ; CHECK-NEXT: ret float [[OP]] ; @@ -551,9 +602,10 @@ define float @freeze_fptrunc_round(double %arg0) { } define float @freeze_ldexp(float %arg0, i32 noundef %arg1) { -; CHECK-LABEL: @freeze_ldexp( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] -; CHECK-NEXT: [[OP:%.*]] = call float @llvm.ldexp.f32.i32(float [[ARG0_FR]], i32 [[ARG1:%.*]]) +; CHECK-LABEL: define float @freeze_ldexp( +; CHECK-SAME: float [[ARG0:%.*]], i32 noundef [[ARG1:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] +; CHECK-NEXT: [[OP:%.*]] = call float @llvm.ldexp.f32.i32(float [[ARG0_FR]], i32 [[ARG1]]) ; CHECK-NEXT: ret float [[OP]] ; %op = call float @llvm.ldexp.f32.i32(float %arg0, i32 %arg1) @@ -562,8 +614,9 @@ define float @freeze_ldexp(float %arg0, i32 noundef %arg1) { } define { float, i32 } @freeze_frexp(float %arg0) { -; CHECK-LABEL: @freeze_frexp( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] +; CHECK-LABEL: define { float, i32 } @freeze_frexp( +; CHECK-SAME: float [[ARG0:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] ; CHECK-NEXT: [[OP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[ARG0_FR]]) ; CHECK-NEXT: ret { float, i32 } [[OP]] ; @@ -573,8 +626,9 @@ define { float, i32 } @freeze_frexp(float %arg0) { } define float @freeze_frexp_0(float %arg0) { -; CHECK-LABEL: @freeze_frexp_0( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] +; CHECK-LABEL: define float @freeze_frexp_0( +; CHECK-SAME: float [[ARG0:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] ; CHECK-NEXT: [[OP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[ARG0_FR]]) ; CHECK-NEXT: [[EXTRACT_0:%.*]] = extractvalue { float, i32 } [[OP]], 0 ; CHECK-NEXT: ret float [[EXTRACT_0]] @@ -586,8 +640,9 @@ define float @freeze_frexp_0(float %arg0) { } define i32 @freeze_frexp_1(float %arg0) { -; CHECK-LABEL: @freeze_frexp_1( -; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0:%.*]] +; CHECK-LABEL: define i32 @freeze_frexp_1( +; CHECK-SAME: float [[ARG0:%.*]]) { +; CHECK-NEXT: [[ARG0_FR:%.*]] = freeze float [[ARG0]] ; CHECK-NEXT: [[OP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[ARG0_FR]]) ; CHECK-NEXT: [[EXTRACT_1:%.*]] = extractvalue { float, i32 } [[OP]], 1 ; CHECK-NEXT: ret i32 [[EXTRACT_1]] |
