|
@@ -36,14 +36,10 @@ exit:
|
|
|
define i32 @compare_against_zero(i32 %x) {
|
|
|
; CHECK-LABEL: @compare_against_zero(
|
|
|
; CHECK-NEXT: entry:
|
|
|
-; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i32 [[X:%.*]], 0
|
|
|
-; CHECK-NEXT: [[CMP2_INV:%.*]] = icmp sgt i32 [[X]], -1
|
|
|
-; CHECK-NEXT: [[SELECT1:%.*]] = select i1 [[CMP2_INV]], i32 1, i32 -1
|
|
|
-; CHECK-NEXT: [[SELECT2:%.*]] = select i1 [[CMP1]], i32 0, i32 [[SELECT1]]
|
|
|
-; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SELECT2]], 0
|
|
|
-; CHECK-NEXT: br i1 [[COND]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
+; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[X:%.*]], 0
|
|
|
+; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
; CHECK: callfoo:
|
|
|
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
|
|
|
+; CHECK-NEXT: call void @foo(i32 1)
|
|
|
; CHECK-NEXT: br label [[EXIT]]
|
|
|
; CHECK: exit:
|
|
|
; CHECK-NEXT: ret i32 42
|
|
@@ -96,14 +92,10 @@ exit:
|
|
|
define i32 @compare_against_two(i32 %x) {
|
|
|
; CHECK-LABEL: @compare_against_two(
|
|
|
; CHECK-NEXT: entry:
|
|
|
-; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i32 [[X:%.*]], 2
|
|
|
-; CHECK-NEXT: [[CMP2_INV:%.*]] = icmp sgt i32 [[X]], 1
|
|
|
-; CHECK-NEXT: [[SELECT1:%.*]] = select i1 [[CMP2_INV]], i32 1, i32 -1
|
|
|
-; CHECK-NEXT: [[SELECT2:%.*]] = select i1 [[CMP1]], i32 0, i32 [[SELECT1]]
|
|
|
-; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SELECT2]], 0
|
|
|
-; CHECK-NEXT: br i1 [[COND]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
+; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[X:%.*]], 2
|
|
|
+; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
; CHECK: callfoo:
|
|
|
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
|
|
|
+; CHECK-NEXT: call void @foo(i32 1)
|
|
|
; CHECK-NEXT: br label [[EXIT]]
|
|
|
; CHECK: exit:
|
|
|
; CHECK-NEXT: ret i32 42
|
|
@@ -497,13 +489,10 @@ define i32 @compare_against_fortytwo_commutatibility_1(i32 %x) {
|
|
|
; CHECK-NEXT: entry:
|
|
|
; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i32 [[X:%.*]], 42
|
|
|
; CHECK-NEXT: call void @use1(i1 [[CMP1]])
|
|
|
-; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i32 [[X]], 42
|
|
|
-; CHECK-NEXT: [[SELECT1:%.*]] = select i1 [[CMP2]], i32 -1, i32 1
|
|
|
-; CHECK-NEXT: [[SELECT2:%.*]] = select i1 [[CMP1]], i32 [[SELECT1]], i32 0
|
|
|
-; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SELECT2]], 0
|
|
|
-; CHECK-NEXT: br i1 [[COND]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
+; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[X]], 42
|
|
|
+; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
; CHECK: callfoo:
|
|
|
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
|
|
|
+; CHECK-NEXT: call void @foo(i32 1)
|
|
|
; CHECK-NEXT: br label [[EXIT]]
|
|
|
; CHECK: exit:
|
|
|
; CHECK-NEXT: ret i32 84
|
|
@@ -527,14 +516,10 @@ exit:
|
|
|
define i32 @compare_against_fortytwo_commutatibility_2(i32 %x) {
|
|
|
; CHECK-LABEL: @compare_against_fortytwo_commutatibility_2(
|
|
|
; CHECK-NEXT: entry:
|
|
|
-; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i32 [[X:%.*]], 42
|
|
|
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[X]], 41
|
|
|
-; CHECK-NEXT: [[SELECT1:%.*]] = select i1 [[CMP2]], i32 1, i32 -1
|
|
|
-; CHECK-NEXT: [[SELECT2:%.*]] = select i1 [[CMP1]], i32 0, i32 [[SELECT1]]
|
|
|
-; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SELECT2]], 0
|
|
|
-; CHECK-NEXT: br i1 [[COND]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
+; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[X:%.*]], 42
|
|
|
+; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
; CHECK: callfoo:
|
|
|
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
|
|
|
+; CHECK-NEXT: call void @foo(i32 1)
|
|
|
; CHECK-NEXT: br label [[EXIT]]
|
|
|
; CHECK: exit:
|
|
|
; CHECK-NEXT: ret i32 84
|
|
@@ -559,13 +544,10 @@ define i32 @compare_against_fortytwo_commutatibility_3(i32 %x) {
|
|
|
; CHECK-NEXT: entry:
|
|
|
; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i32 [[X:%.*]], 42
|
|
|
; CHECK-NEXT: call void @use1(i1 [[CMP1]])
|
|
|
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[X]], 41
|
|
|
-; CHECK-NEXT: [[SELECT1:%.*]] = select i1 [[CMP2]], i32 1, i32 -1
|
|
|
-; CHECK-NEXT: [[SELECT2:%.*]] = select i1 [[CMP1]], i32 [[SELECT1]], i32 0
|
|
|
-; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SELECT2]], 0
|
|
|
-; CHECK-NEXT: br i1 [[COND]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
+; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[X]], 42
|
|
|
+; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
; CHECK: callfoo:
|
|
|
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
|
|
|
+; CHECK-NEXT: call void @foo(i32 1)
|
|
|
; CHECK-NEXT: br label [[EXIT]]
|
|
|
; CHECK: exit:
|
|
|
; CHECK-NEXT: ret i32 84
|
|
@@ -616,14 +598,10 @@ exit:
|
|
|
define i32 @compare_against_arbitrary_value_commutativity1(i32 %x, i32 %c) {
|
|
|
; CHECK-LABEL: @compare_against_arbitrary_value_commutativity1(
|
|
|
; CHECK-NEXT: entry:
|
|
|
-; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i32 [[X:%.*]], [[C:%.*]]
|
|
|
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[C]], [[X]]
|
|
|
-; CHECK-NEXT: [[SELECT1:%.*]] = select i1 [[CMP2]], i32 -1, i32 1
|
|
|
-; CHECK-NEXT: [[SELECT2:%.*]] = select i1 [[CMP1]], i32 0, i32 [[SELECT1]]
|
|
|
-; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SELECT2]], 0
|
|
|
-; CHECK-NEXT: br i1 [[COND]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
+; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[X:%.*]], [[C:%.*]]
|
|
|
+; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
; CHECK: callfoo:
|
|
|
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
|
|
|
+; CHECK-NEXT: call void @foo(i32 1)
|
|
|
; CHECK-NEXT: br label [[EXIT]]
|
|
|
; CHECK: exit:
|
|
|
; CHECK-NEXT: ret i32 42
|
|
@@ -648,13 +626,10 @@ define i32 @compare_against_arbitrary_value_commutativity2(i32 %x, i32 %c) {
|
|
|
; CHECK-NEXT: entry:
|
|
|
; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i32 [[X:%.*]], [[C:%.*]]
|
|
|
; CHECK-NEXT: call void @use1(i1 [[CMP1]])
|
|
|
-; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i32 [[X]], [[C]]
|
|
|
-; CHECK-NEXT: [[SELECT1:%.*]] = select i1 [[CMP2]], i32 -1, i32 1
|
|
|
-; CHECK-NEXT: [[SELECT2:%.*]] = select i1 [[CMP1]], i32 [[SELECT1]], i32 0
|
|
|
-; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SELECT2]], 0
|
|
|
-; CHECK-NEXT: br i1 [[COND]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
+; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[X]], [[C]]
|
|
|
+; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
; CHECK: callfoo:
|
|
|
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
|
|
|
+; CHECK-NEXT: call void @foo(i32 1)
|
|
|
; CHECK-NEXT: br label [[EXIT]]
|
|
|
; CHECK: exit:
|
|
|
; CHECK-NEXT: ret i32 42
|
|
@@ -680,13 +655,10 @@ define i32 @compare_against_arbitrary_value_commutativity3(i32 %x, i32 %c) {
|
|
|
; CHECK-NEXT: entry:
|
|
|
; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i32 [[X:%.*]], [[C:%.*]]
|
|
|
; CHECK-NEXT: call void @use1(i1 [[CMP1]])
|
|
|
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[C]], [[X]]
|
|
|
-; CHECK-NEXT: [[SELECT1:%.*]] = select i1 [[CMP2]], i32 -1, i32 1
|
|
|
-; CHECK-NEXT: [[SELECT2:%.*]] = select i1 [[CMP1]], i32 [[SELECT1]], i32 0
|
|
|
-; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SELECT2]], 0
|
|
|
-; CHECK-NEXT: br i1 [[COND]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
+; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[X]], [[C]]
|
|
|
+; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
|
|
|
; CHECK: callfoo:
|
|
|
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
|
|
|
+; CHECK-NEXT: call void @foo(i32 1)
|
|
|
; CHECK-NEXT: br label [[EXIT]]
|
|
|
; CHECK: exit:
|
|
|
; CHECK-NEXT: ret i32 42
|