diff --git a/llvm/test/Transforms/InstCombine/and-fcmp.ll b/llvm/test/Transforms/InstCombine/and-fcmp.ll index a398307f869e..23062b73abaa 100644 --- a/llvm/test/Transforms/InstCombine/and-fcmp.ll +++ b/llvm/test/Transforms/InstCombine/and-fcmp.ll @@ -1,100 +1,104 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -instcombine -S | FileCheck %s -define zeroext i8 @t1(float %x, float %y) nounwind { - %a = fcmp ueq float %x, %y - %b = fcmp ord float %x, %y - %c = and i1 %a, %b - %retval = zext i1 %c to i8 - ret i8 %retval -; CHECK: t1 -; CHECK: fcmp oeq float %x, %y -; CHECK-NOT: fcmp ueq float %x, %y -; CHECK-NOT: fcmp ord float %x, %y -; CHECK-NOT: and +define i1 @t1(float %x, float %y) { +; CHECK-LABEL: @t1( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq float %x, %y +; CHECK-NEXT: ret i1 [[TMP1]] +; + %a = fcmp ueq float %x, %y + %b = fcmp ord float %x, %y + %c = and i1 %a, %b + ret i1 %c } -define zeroext i8 @t2(float %x, float %y) nounwind { - %a = fcmp olt float %x, %y - %b = fcmp ord float %x, %y - %c = and i1 %a, %b - %retval = zext i1 %c to i8 - ret i8 %retval -; CHECK: t2 -; CHECK: fcmp olt float %x, %y -; CHECK-NOT: fcmp ord float %x, %y -; CHECK-NOT: and +define i1 @t2(float %x, float %y) { +; CHECK-LABEL: @t2( +; CHECK-NEXT: [[A:%.*]] = fcmp olt float %x, %y +; CHECK-NEXT: ret i1 [[A]] +; + %a = fcmp olt float %x, %y + %b = fcmp ord float %x, %y + %c = and i1 %a, %b + ret i1 %c } -define zeroext i8 @t3(float %x, float %y) nounwind { - %a = fcmp oge float %x, %y - %b = fcmp uno float %x, %y - %c = and i1 %a, %b - %retval = zext i1 %c to i8 - ret i8 %retval -; CHECK: t3 -; CHECK: ret i8 0 +define i1 @t3(float %x, float %y) { +; CHECK-LABEL: @t3( +; CHECK-NEXT: ret i1 false +; + %a = fcmp oge float %x, %y + %b = fcmp uno float %x, %y + %c = and i1 %a, %b + ret i1 %c } -define zeroext i8 @t4(float %x, float %y) nounwind { - %a = fcmp one float %y, %x - %b = fcmp ord float %x, %y - %c = and i1 %a, %b - %retval = zext i1 %c to i8 - ret i8 %retval -; CHECK: t4 -; CHECK: fcmp one float %y, %x -; CHECK-NOT: fcmp ord float %x, %y -; CHECK-NOT: and +define i1 @t4(float %x, float %y) { +; CHECK-LABEL: @t4( +; CHECK-NEXT: [[A:%.*]] = fcmp one float %y, %x +; CHECK-NEXT: ret i1 [[A]] +; + %a = fcmp one float %y, %x + %b = fcmp ord float %x, %y + %c = and i1 %a, %b + ret i1 %c } -define zeroext i8 @t5(float %x, float %y) nounwind { - %a = fcmp ord float %x, %y - %b = fcmp uno float %x, %y - %c = and i1 %a, %b - %retval = zext i1 %c to i8 - ret i8 %retval -; CHECK: t5 -; CHECK: ret i8 0 +define i1 @t5(float %x, float %y) { +; CHECK-LABEL: @t5( +; CHECK-NEXT: ret i1 false +; + %a = fcmp ord float %x, %y + %b = fcmp uno float %x, %y + %c = and i1 %a, %b + ret i1 %c } -define zeroext i8 @t6(float %x, float %y) nounwind { - %a = fcmp uno float %x, %y - %b = fcmp ord float %x, %y - %c = and i1 %a, %b - %retval = zext i1 %c to i8 - ret i8 %retval -; CHECK: t6 -; CHECK: ret i8 0 +define i1 @t6(float %x, float %y) { +; CHECK-LABEL: @t6( +; CHECK-NEXT: ret i1 false +; + %a = fcmp uno float %x, %y + %b = fcmp ord float %x, %y + %c = and i1 %a, %b + ret i1 %c } -define zeroext i8 @t7(float %x, float %y) nounwind { - %a = fcmp uno float %x, %y - %b = fcmp ult float %x, %y - %c = and i1 %a, %b - %retval = zext i1 %c to i8 - ret i8 %retval -; CHECK: t7 -; CHECK: fcmp uno -; CHECK-NOT: fcmp ult +define i1 @t7(float %x, float %y) { +; CHECK-LABEL: @t7( +; CHECK-NEXT: [[A:%.*]] = fcmp uno float %x, %y +; CHECK-NEXT: ret i1 [[A]] +; + %a = fcmp uno float %x, %y + %b = fcmp ult float %x, %y + %c = and i1 %a, %b + ret i1 %c } ; PR15737 define i1 @t8(float %a, double %b) { +; CHECK-LABEL: @t8( +; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float %a, 0.000000e+00 +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %b, 0.000000e+00 +; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP1]] +; CHECK-NEXT: ret i1 [[AND]] +; %cmp = fcmp ord float %a, 0.000000e+00 %cmp1 = fcmp ord double %b, 0.000000e+00 %and = and i1 %cmp, %cmp1 ret i1 %and -; CHECK: t8 -; CHECK: fcmp ord -; CHECK: fcmp ord } define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) { +; CHECK-LABEL: @t9( +; CHECK-NEXT: [[CMP:%.*]] = fcmp ord <2 x float> %a, zeroinitializer +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord <2 x double> %b, zeroinitializer +; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[CMP]], [[CMP1]] +; CHECK-NEXT: ret <2 x i1> [[AND]] +; %cmp = fcmp ord <2 x float> %a, zeroinitializer %cmp1 = fcmp ord <2 x double> %b, zeroinitializer %and = and <2 x i1> %cmp, %cmp1 ret <2 x i1> %and -; CHECK: t9 -; CHECK: fcmp ord -; CHECK: fcmp ord } +