@@ -7,11 +7,7 @@ define i1 @f_and(i32 %x, i32 %y) {
7
7
; CHECK-LABEL: define i1 @f_and(
8
8
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
9
9
; CHECK-NEXT: entry:
10
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[X]], 0
11
- ; CHECK-NEXT: [[TMP0:%.*]] = or i32 [[X]], [[Y]]
12
- ; CHECK-NEXT: [[AND14:%.*]] = icmp eq i32 [[TMP0]], 0
13
- ; CHECK-NEXT: [[AND1115:%.*]] = and i1 [[CMP]], [[AND14]]
14
- ; CHECK-NEXT: ret i1 [[AND1115]]
10
+ ; CHECK-NEXT: ret i1 false
15
11
;
16
12
entry:
17
13
%cmp = icmp ne i32 %x , 0
@@ -25,11 +21,7 @@ define i1 @f_or(i32 %x, i32 %y) {
25
21
; CHECK-LABEL: define i1 @f_or(
26
22
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
27
23
; CHECK-NEXT: entry:
28
- ; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq i32 [[X]], 0
29
- ; CHECK-NEXT: [[TMP0:%.*]] = or i32 [[X]], [[Y]]
30
- ; CHECK-NEXT: [[OR14:%.*]] = icmp ne i32 [[TMP0]], 0
31
- ; CHECK-NEXT: [[OR1115:%.*]] = or i1 [[CMP_NOT]], [[OR14]]
32
- ; CHECK-NEXT: ret i1 [[OR1115]]
24
+ ; CHECK-NEXT: ret i1 true
33
25
;
34
26
entry:
35
27
%cmp.not = icmp eq i32 %x , 0
@@ -45,12 +37,7 @@ define i1 @f_add(i32 %x, i32 %y) {
45
37
; CHECK-LABEL: define i1 @f_add(
46
38
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
47
39
; CHECK-NEXT: entry:
48
- ; CHECK-NEXT: [[YR:%.*]] = and i32 [[Y]], 7
49
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[X]], 8
50
- ; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[YR]], [[X]]
51
- ; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt i32 [[TMP0]], 16
52
- ; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP2]]
53
- ; CHECK-NEXT: ret i1 [[AND]]
40
+ ; CHECK-NEXT: ret i1 false
54
41
;
55
42
entry:
56
43
%yr = and i32 %y , 7
@@ -65,12 +52,7 @@ define i1 @f_add_nsw(i32 %x, i32 %y) {
65
52
; CHECK-LABEL: define i1 @f_add_nsw(
66
53
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
67
54
; CHECK-NEXT: entry:
68
- ; CHECK-NEXT: [[YR:%.*]] = and i32 [[Y]], 2147483647
69
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X]], 5
70
- ; CHECK-NEXT: [[TMP0:%.*]] = add nsw i32 [[YR]], [[X]]
71
- ; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i32 [[TMP0]], 5
72
- ; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP2]]
73
- ; CHECK-NEXT: ret i1 [[AND]]
55
+ ; CHECK-NEXT: ret i1 false
74
56
;
75
57
entry:
76
58
%yr = and i32 %y , 2147483647
@@ -85,11 +67,7 @@ define i1 @f_add_nuw(i32 %x, i32 %y) {
85
67
; CHECK-LABEL: define i1 @f_add_nuw(
86
68
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
87
69
; CHECK-NEXT: entry:
88
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[X]], 1
89
- ; CHECK-NEXT: [[TMP0:%.*]] = add nuw i32 [[X]], [[Y]]
90
- ; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i32 [[TMP0]], 1
91
- ; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP2]]
92
- ; CHECK-NEXT: ret i1 [[AND]]
70
+ ; CHECK-NEXT: ret i1 false
93
71
;
94
72
entry:
95
73
%cmp = icmp ugt i32 %x , 1
@@ -103,12 +81,8 @@ define i1 @f_sub_nsw(i32 %x, i32 %y) {
103
81
; CHECK-LABEL: define i1 @f_sub_nsw(
104
82
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
105
83
; CHECK-NEXT: entry:
106
- ; CHECK-NEXT: [[YR:%.*]] = and i32 [[Y]], 2147483647
107
84
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[X]], 5
108
- ; CHECK-NEXT: [[TMP0:%.*]] = sub nsw i32 [[X]], [[YR]]
109
- ; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i32 [[TMP0]], 5
110
- ; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP2]]
111
- ; CHECK-NEXT: ret i1 [[AND]]
85
+ ; CHECK-NEXT: ret i1 [[CMP]]
112
86
;
113
87
entry:
114
88
%yr = and i32 %y , 2147483647
@@ -123,11 +97,7 @@ define i1 @f_sub_nuw(i32 %x, i32 %y) {
123
97
; CHECK-LABEL: define i1 @f_sub_nuw(
124
98
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
125
99
; CHECK-NEXT: entry:
126
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[X]], 5
127
- ; CHECK-NEXT: [[TMP0:%.*]] = sub nuw i32 [[X]], [[Y]]
128
- ; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i32 [[TMP0]], 6
129
- ; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP2]]
130
- ; CHECK-NEXT: ret i1 [[AND]]
100
+ ; CHECK-NEXT: ret i1 false
131
101
;
132
102
entry:
133
103
%cmp = icmp ult i32 %x , 5
@@ -226,10 +196,7 @@ define i1 @pr69038(i32 %a, i32 %b) {
226
196
; CHECK-LABEL: define i1 @pr69038(
227
197
; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]]) {
228
198
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp ne i32 [[A]], 0
229
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[A]], [[B]]
230
- ; CHECK-NEXT: [[TOBOOL1:%.*]] = icmp ne i32 [[OR]], 0
231
- ; CHECK-NEXT: [[AND:%.*]] = and i1 [[TOBOOL]], [[TOBOOL1]]
232
- ; CHECK-NEXT: ret i1 [[AND]]
199
+ ; CHECK-NEXT: ret i1 [[TOBOOL]]
233
200
;
234
201
%tobool = icmp ne i32 %a , 0
235
202
%or = or i32 %a , %b
0 commit comments