@@ -5,9 +5,8 @@ define void @or(i64 %a) {
5
5
; CHECK-LABEL: define void @or(
6
6
; CHECK-SAME: i64 [[A:%.*]]) {
7
7
; CHECK-NEXT: entry:
8
- ; CHECK-NEXT: [[OR:%.*]] = or i64 [[A]], 3
9
- ; CHECK-NEXT: [[RET1:%.*]] = and i64 [[OR]], 8
10
- ; CHECK-NEXT: [[RET2:%.*]] = and i64 [[OR]], 16
8
+ ; CHECK-NEXT: [[RET1:%.*]] = and i64 [[A]], 8
9
+ ; CHECK-NEXT: [[RET2:%.*]] = and i64 [[A]], 16
11
10
; CHECK-NEXT: call void @use(i64 [[RET1]])
12
11
; CHECK-NEXT: call void @use(i64 [[RET2]])
13
12
; CHECK-NEXT: ret void
@@ -25,9 +24,8 @@ define void @xor(i64 %a) {
25
24
; CHECK-LABEL: define void @xor(
26
25
; CHECK-SAME: i64 [[A:%.*]]) {
27
26
; CHECK-NEXT: entry:
28
- ; CHECK-NEXT: [[XOR:%.*]] = xor i64 [[A]], 3
29
- ; CHECK-NEXT: [[RET1:%.*]] = and i64 [[XOR]], 8
30
- ; CHECK-NEXT: [[RET2:%.*]] = and i64 [[XOR]], 16
27
+ ; CHECK-NEXT: [[RET1:%.*]] = and i64 [[A]], 8
28
+ ; CHECK-NEXT: [[RET2:%.*]] = and i64 [[A]], 16
31
29
; CHECK-NEXT: call void @use(i64 [[RET1]])
32
30
; CHECK-NEXT: call void @use(i64 [[RET2]])
33
31
; CHECK-NEXT: ret void
@@ -45,9 +43,8 @@ define void @and(i64 %a) {
45
43
; CHECK-LABEL: define void @and(
46
44
; CHECK-SAME: i64 [[A:%.*]]) {
47
45
; CHECK-NEXT: entry:
48
- ; CHECK-NEXT: [[AND:%.*]] = and i64 [[A]], 24
49
- ; CHECK-NEXT: [[RET1:%.*]] = and i64 [[AND]], 8
50
- ; CHECK-NEXT: [[RET2:%.*]] = and i64 [[AND]], 16
46
+ ; CHECK-NEXT: [[RET1:%.*]] = and i64 [[A]], 8
47
+ ; CHECK-NEXT: [[RET2:%.*]] = and i64 [[A]], 16
51
48
; CHECK-NEXT: call void @use(i64 [[RET1]])
52
49
; CHECK-NEXT: call void @use(i64 [[RET2]])
53
50
; CHECK-NEXT: ret void
@@ -65,9 +62,7 @@ define void @or_of_and(i64 %a, i64 %b) {
65
62
; CHECK-LABEL: define void @or_of_and(
66
63
; CHECK-SAME: i64 [[A:%.*]], i64 [[B:%.*]]) {
67
64
; CHECK-NEXT: entry:
68
- ; CHECK-NEXT: [[AND1:%.*]] = and i64 [[A]], 24
69
- ; CHECK-NEXT: [[AND2:%.*]] = and i64 [[B]], 25
70
- ; CHECK-NEXT: [[OR:%.*]] = or i64 [[AND1]], [[AND2]]
65
+ ; CHECK-NEXT: [[OR:%.*]] = or i64 [[A]], [[B]]
71
66
; CHECK-NEXT: [[RET1:%.*]] = and i64 [[OR]], 8
72
67
; CHECK-NEXT: [[RET2:%.*]] = and i64 [[OR]], 16
73
68
; CHECK-NEXT: call void @use(i64 [[RET1]])
@@ -89,9 +84,7 @@ define void @or_disjoint_of_and(i64 %a, i64 %b) {
89
84
; CHECK-LABEL: define void @or_disjoint_of_and(
90
85
; CHECK-SAME: i64 [[A:%.*]], i64 [[B:%.*]]) {
91
86
; CHECK-NEXT: entry:
92
- ; CHECK-NEXT: [[AND1:%.*]] = and i64 [[A]], 56
93
- ; CHECK-NEXT: [[AND2:%.*]] = and i64 [[B]], 25
94
- ; CHECK-NEXT: [[OR:%.*]] = or disjoint i64 [[AND1]], [[AND2]]
87
+ ; CHECK-NEXT: [[OR:%.*]] = or i64 [[A]], [[B]]
95
88
; CHECK-NEXT: [[RET1:%.*]] = and i64 [[OR]], 8
96
89
; CHECK-NEXT: [[RET2:%.*]] = and i64 [[OR]], 16
97
90
; CHECK-NEXT: call void @use(i64 [[RET1]])
@@ -113,9 +106,7 @@ define void @select_of_and(i1 %c, i64 %a, i64 %b) {
113
106
; CHECK-LABEL: define void @select_of_and(
114
107
; CHECK-SAME: i1 [[C:%.*]], i64 [[A:%.*]], i64 [[B:%.*]]) {
115
108
; CHECK-NEXT: entry:
116
- ; CHECK-NEXT: [[AND1:%.*]] = and i64 [[A]], 24
117
- ; CHECK-NEXT: [[AND2:%.*]] = and i64 [[B]], 25
118
- ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[AND1]], i64 [[AND2]]
109
+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[A]], i64 [[B]]
119
110
; CHECK-NEXT: [[RET1:%.*]] = and i64 [[S]], 8
120
111
; CHECK-NEXT: [[RET2:%.*]] = and i64 [[S]], 16
121
112
; CHECK-NEXT: call void @use(i64 [[RET1]])
@@ -137,9 +128,8 @@ define void @select_of_and_2(i1 %c, i64 %a, i64 %b) {
137
128
; CHECK-LABEL: define void @select_of_and_2(
138
129
; CHECK-SAME: i1 [[C:%.*]], i64 [[A:%.*]], i64 [[B:%.*]]) {
139
130
; CHECK-NEXT: entry:
140
- ; CHECK-NEXT: [[AND1:%.*]] = and i64 [[A]], 25
141
131
; CHECK-NEXT: [[AND2:%.*]] = and i64 [[B]], 23
142
- ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[AND1 ]], i64 [[AND2]]
132
+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[A ]], i64 [[AND2]]
143
133
; CHECK-NEXT: [[RET1:%.*]] = and i64 [[S]], 8
144
134
; CHECK-NEXT: [[RET2:%.*]] = and i64 [[S]], 16
145
135
; CHECK-NEXT: call void @use(i64 [[RET1]])
@@ -161,9 +151,8 @@ define void @select_of_and_multiuse(i1 %c, i64 %a, i64 %b) {
161
151
; CHECK-LABEL: define void @select_of_and_multiuse(
162
152
; CHECK-SAME: i1 [[C:%.*]], i64 [[A:%.*]], i64 [[B:%.*]]) {
163
153
; CHECK-NEXT: entry:
164
- ; CHECK-NEXT: [[AND1:%.*]] = and i64 [[A]], 24
165
154
; CHECK-NEXT: [[AND2:%.*]] = and i64 [[B]], 25
166
- ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[AND1 ]], i64 [[AND2]]
155
+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[A ]], i64 [[AND2]]
167
156
; CHECK-NEXT: [[RET1:%.*]] = and i64 [[S]], 8
168
157
; CHECK-NEXT: [[RET2:%.*]] = and i64 [[S]], 16
169
158
; CHECK-NEXT: call void @use(i64 [[RET1]])
@@ -209,9 +198,7 @@ define void @select_of_or(i1 %c, i64 %a, i64 %b) {
209
198
; CHECK-LABEL: define void @select_of_or(
210
199
; CHECK-SAME: i1 [[C:%.*]], i64 [[A:%.*]], i64 [[B:%.*]]) {
211
200
; CHECK-NEXT: entry:
212
- ; CHECK-NEXT: [[OR1:%.*]] = or i64 [[A]], 3
213
- ; CHECK-NEXT: [[OR2:%.*]] = or i64 [[B]], 192
214
- ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[OR1]], i64 [[OR2]]
201
+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[A]], i64 [[B]]
215
202
; CHECK-NEXT: [[RET1:%.*]] = and i64 [[S]], 8
216
203
; CHECK-NEXT: [[RET2:%.*]] = and i64 [[S]], 16
217
204
; CHECK-NEXT: call void @use(i64 [[RET1]])
@@ -233,9 +220,7 @@ define void @select_of_xor(i1 %c, i64 %a, i64 %b) {
233
220
; CHECK-LABEL: define void @select_of_xor(
234
221
; CHECK-SAME: i1 [[C:%.*]], i64 [[A:%.*]], i64 [[B:%.*]]) {
235
222
; CHECK-NEXT: entry:
236
- ; CHECK-NEXT: [[XOR1:%.*]] = xor i64 [[A]], 128
237
- ; CHECK-NEXT: [[XOR2:%.*]] = xor i64 [[B]], 36
238
- ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[XOR1]], i64 [[XOR2]]
223
+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i64 [[A]], i64 [[B]]
239
224
; CHECK-NEXT: [[RET1:%.*]] = and i64 [[S]], 8
240
225
; CHECK-NEXT: [[RET2:%.*]] = and i64 [[S]], 16
241
226
; CHECK-NEXT: call void @use(i64 [[RET1]])
@@ -257,9 +242,7 @@ define void @select_vectorized(i1 %c, <2 x i8> %a, <2 x i8> %b) {
257
242
; CHECK-LABEL: define void @select_vectorized(
258
243
; CHECK-SAME: i1 [[C:%.*]], <2 x i8> [[A:%.*]], <2 x i8> [[B:%.*]]) {
259
244
; CHECK-NEXT: entry:
260
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[A]], <i8 28, i8 28>
261
- ; CHECK-NEXT: [[AND2:%.*]] = and <2 x i8> [[B]], <i8 29, i8 29>
262
- ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], <2 x i8> [[AND1]], <2 x i8> [[AND2]]
245
+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], <2 x i8> [[A]], <2 x i8> [[B]]
263
246
; CHECK-NEXT: [[RET1:%.*]] = and <2 x i8> [[S]], <i8 4, i8 4>
264
247
; CHECK-NEXT: [[RET2:%.*]] = and <2 x i8> [[S]], <i8 12, i8 12>
265
248
; CHECK-NEXT: call void @use3(<2 x i8> [[RET1]])
0 commit comments