+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -instcombine -S | FileCheck %s
+define i1 @t1(float %x, float %y) {
; CHECK-LABEL: @t1(
-define zeroext i8 @t1(float %x, float %y) nounwind {
- %a = fcmp ueq float %x, %y ; <i1> [#uses=1]
- %b = fcmp uno float %x, %y ; <i1> [#uses=1]
- %c = or i1 %a, %b
-; CHECK-NOT: fcmp uno
-; CHECK: fcmp ueq
- %retval = zext i1 %c to i8
- ret i8 %retval
+; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq float %x, %y
+; CHECK-NEXT: ret i1 [[TMP1]]
+;
+ %a = fcmp ueq float %x, %y
+ %b = fcmp uno float %x, %y
+ %c = or i1 %a, %b
+ ret i1 %c
}
+define i1 @t2(float %x, float %y) {
; CHECK-LABEL: @t2(
-define zeroext i8 @t2(float %x, float %y) nounwind {
- %a = fcmp olt float %x, %y ; <i1> [#uses=1]
- %b = fcmp oeq float %x, %y ; <i1> [#uses=1]
-; CHECK-NOT: fcmp olt
-; CHECK-NOT: fcmp oeq
-; CHECK: fcmp ole
- %c = or i1 %a, %b
- %retval = zext i1 %c to i8
- ret i8 %retval
+; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole float %x, %y
+; CHECK-NEXT: ret i1 [[TMP1]]
+;
+ %a = fcmp olt float %x, %y
+ %b = fcmp oeq float %x, %y
+ %c = or i1 %a, %b
+ ret i1 %c
}
+define i1 @t3(float %x, float %y) {
; CHECK-LABEL: @t3(
-define zeroext i8 @t3(float %x, float %y) nounwind {
- %a = fcmp ult float %x, %y ; <i1> [#uses=1]
- %b = fcmp uge float %x, %y ; <i1> [#uses=1]
- %c = or i1 %a, %b
- %retval = zext i1 %c to i8
-; CHECK: ret i8 1
- ret i8 %retval
+; CHECK-NEXT: ret i1 true
+;
+ %a = fcmp ult float %x, %y
+ %b = fcmp uge float %x, %y
+ %c = or i1 %a, %b
+ ret i1 %c
}
+define i1 @t4(float %x, float %y) {
; CHECK-LABEL: @t4(
-define zeroext i8 @t4(float %x, float %y) nounwind {
- %a = fcmp ult float %x, %y ; <i1> [#uses=1]
- %b = fcmp ugt float %x, %y ; <i1> [#uses=1]
- %c = or i1 %a, %b
-; CHECK-NOT: fcmp ult
-; CHECK-NOT: fcmp ugt
-; CHECK: fcmp une
- %retval = zext i1 %c to i8
- ret i8 %retval
+; CHECK-NEXT: [[TMP1:%.*]] = fcmp une float %x, %y
+; CHECK-NEXT: ret i1 [[TMP1]]
+;
+ %a = fcmp ult float %x, %y
+ %b = fcmp ugt float %x, %y
+ %c = or i1 %a, %b
+ ret i1 %c
}
+define i1 @t5(float %x, float %y) {
; CHECK-LABEL: @t5(
-define zeroext i8 @t5(float %x, float %y) nounwind {
- %a = fcmp olt float %x, %y ; <i1> [#uses=1]
- %b = fcmp oge float %x, %y ; <i1> [#uses=1]
- %c = or i1 %a, %b
-; CHECK-NOT: fcmp olt
-; CHECK-NOT: fcmp oge
-; CHECK: fcmp ord
- %retval = zext i1 %c to i8
- ret i8 %retval
+; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord float %x, %y
+; CHECK-NEXT: ret i1 [[TMP1]]
+;
+ %a = fcmp olt float %x, %y
+ %b = fcmp oge float %x, %y
+ %c = or i1 %a, %b
+ ret i1 %c
}