7
7
define i8 @src_and_bit (i8 %x , i8 %y ) {
8
8
; CHECK-LABEL: @src_and_bit(
9
9
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 3
10
- ; CHECK-NEXT: [[AND1:%.*]] = and i8 [[X]], 2
11
10
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[AND]], 2
12
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[AND1]] , i8 1
11
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 2 , i8 1
13
12
; CHECK-NEXT: ret i8 [[COND]]
14
13
;
15
14
%and = and i8 %x , 3
@@ -23,9 +22,8 @@ define i8 @src_and_bit(i8 %x, i8 %y) {
23
22
define <2 x i8 > @src_and_bit_vec (<2 x i8 > %x , <2 x i8 > %y ) {
24
23
; CHECK-LABEL: @src_and_bit_vec(
25
24
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[X:%.*]], <i8 3, i8 3>
26
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 2, i8 2>
27
25
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[AND]], <i8 2, i8 2>
28
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]] , <2 x i8> <i8 1, i8 1>
26
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 2, i8 2> , <2 x i8> <i8 1, i8 1>
29
27
; CHECK-NEXT: ret <2 x i8> [[COND]]
30
28
;
31
29
%and = and <2 x i8 > %x , <i8 3 , i8 3 >
@@ -39,9 +37,8 @@ define <2 x i8> @src_and_bit_vec(<2 x i8> %x, <2 x i8> %y) {
39
37
define <2 x i8 > @src_and_bit_vec_poison (<2 x i8 > %x , <2 x i8 > %y ) {
40
38
; CHECK-LABEL: @src_and_bit_vec_poison(
41
39
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[X:%.*]], <i8 poison, i8 3>
42
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 poison, i8 2>
43
40
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[AND]], <i8 2, i8 2>
44
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]] , <2 x i8> <i8 1, i8 1>
41
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 2, i8 2> , <2 x i8> <i8 1, i8 1>
45
42
; CHECK-NEXT: ret <2 x i8> [[COND]]
46
43
;
47
44
%and = and <2 x i8 > %x , <i8 poison, i8 3 >
@@ -55,9 +52,8 @@ define <2 x i8> @src_and_bit_vec_poison(<2 x i8> %x, <2 x i8> %y) {
55
52
define <2 x i8 > @src_and_bit_vec_poison2 (<2 x i8 > %x , <2 x i8 > %y ) {
56
53
; CHECK-LABEL: @src_and_bit_vec_poison2(
57
54
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[X:%.*]], <i8 poison, i8 3>
58
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 poison, i8 2>
59
55
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[AND]], <i8 2, i8 2>
60
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]] , <2 x i8> <i8 1, i8 1>
56
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 2, i8 2> , <2 x i8> <i8 1, i8 1>
61
57
; CHECK-NEXT: ret <2 x i8> [[COND]]
62
58
;
63
59
%and = and <2 x i8 > %x , <i8 poison, i8 3 >
@@ -71,9 +67,8 @@ define <2 x i8> @src_and_bit_vec_poison2(<2 x i8> %x, <2 x i8> %y) {
71
67
define i8 @src_and_bit_ne (i8 %x , i8 %y ) {
72
68
; CHECK-LABEL: @src_and_bit_ne(
73
69
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 3
74
- ; CHECK-NEXT: [[AND1:%.*]] = and i8 [[X]], 2
75
70
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq i8 [[AND]], 2
76
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP_NOT]], i8 [[AND1]] , i8 1
71
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP_NOT]], i8 2 , i8 1
77
72
; CHECK-NEXT: ret i8 [[COND]]
78
73
;
79
74
%and = and i8 %x , 3
@@ -87,9 +82,8 @@ define i8 @src_and_bit_ne(i8 %x, i8 %y) {
87
82
define <2 x i8 > @src_and_bit_vec_ne (<2 x i8 > %x , <2 x i8 > %y ) {
88
83
; CHECK-LABEL: @src_and_bit_vec_ne(
89
84
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[X:%.*]], <i8 3, i8 3>
90
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 2, i8 2>
91
85
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq <2 x i8> [[AND]], <i8 2, i8 2>
92
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> [[AND1]] , <2 x i8> <i8 1, i8 1>
86
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> <i8 2, i8 2> , <2 x i8> <i8 1, i8 1>
93
87
; CHECK-NEXT: ret <2 x i8> [[COND]]
94
88
;
95
89
%and = and <2 x i8 > %x , <i8 3 , i8 3 >
@@ -103,9 +97,8 @@ define <2 x i8> @src_and_bit_vec_ne(<2 x i8> %x, <2 x i8> %y) {
103
97
define <2 x i8 > @src_and_bit_vec_poison_ne (<2 x i8 > %x , <2 x i8 > %y ) {
104
98
; CHECK-LABEL: @src_and_bit_vec_poison_ne(
105
99
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[X:%.*]], <i8 poison, i8 3>
106
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 poison, i8 2>
107
100
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq <2 x i8> [[AND]], <i8 2, i8 2>
108
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> [[AND1]] , <2 x i8> <i8 1, i8 1>
101
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> <i8 2, i8 2> , <2 x i8> <i8 1, i8 1>
109
102
; CHECK-NEXT: ret <2 x i8> [[COND]]
110
103
;
111
104
%and = and <2 x i8 > %x , <i8 poison, i8 3 >
@@ -119,9 +112,8 @@ define <2 x i8> @src_and_bit_vec_poison_ne(<2 x i8> %x, <2 x i8> %y) {
119
112
define <2 x i8 > @src_and_bit_vec_poison2_ne (<2 x i8 > %x , <2 x i8 > %y ) {
120
113
; CHECK-LABEL: @src_and_bit_vec_poison2_ne(
121
114
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[X:%.*]], <i8 poison, i8 3>
122
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 poison, i8 2>
123
115
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq <2 x i8> [[AND]], <i8 2, i8 2>
124
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> [[AND1]] , <2 x i8> <i8 1, i8 1>
116
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> <i8 2, i8 2> , <2 x i8> <i8 1, i8 1>
125
117
; CHECK-NEXT: ret <2 x i8> [[COND]]
126
118
;
127
119
%and = and <2 x i8 > %x , <i8 poison, i8 3 >
@@ -135,13 +127,11 @@ define <2 x i8> @src_and_bit_vec_poison2_ne(<2 x i8> %x, <2 x i8> %y) {
135
127
; ====================== OR =======================
136
128
define i8 @src_or_bit (i8 %x , i8 %y , i8 %z ) {
137
129
; CHECK-LABEL: @src_or_bit(
138
- ; CHECK-NEXT: [[AND:%.*]] = and i8 [[Z:%.*]], 3
139
130
; CHECK-NEXT: [[AND1:%.*]] = shl i8 [[Y:%.*]], 2
140
131
; CHECK-NEXT: [[SHL:%.*]] = and i8 [[AND1]], 12
141
132
; CHECK-NEXT: [[OR:%.*]] = or i8 [[SHL]], [[X:%.*]]
142
133
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[OR]], 3
143
- ; CHECK-NEXT: [[OR2:%.*]] = or i8 [[AND]], [[X]]
144
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[OR2]], i8 1
134
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 3, i8 1
145
135
; CHECK-NEXT: ret i8 [[COND]]
146
136
;
147
137
%and = and i8 %z , 3
@@ -156,13 +146,11 @@ define i8 @src_or_bit(i8 %x, i8 %y, i8 %z) {
156
146
157
147
define <2 x i8 > @src_or_bit_vec (<2 x i8 > %x , <2 x i8 > %y , <2 x i8 > %z ) {
158
148
; CHECK-LABEL: @src_or_bit_vec(
159
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Z:%.*]], <i8 3, i8 3>
160
149
; CHECK-NEXT: [[AND1:%.*]] = shl <2 x i8> [[Y:%.*]], <i8 2, i8 2>
161
150
; CHECK-NEXT: [[SHL:%.*]] = and <2 x i8> [[AND1]], <i8 12, i8 12>
162
151
; CHECK-NEXT: [[OR:%.*]] = or <2 x i8> [[SHL]], [[X:%.*]]
163
152
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[OR]], <i8 3, i8 3>
164
- ; CHECK-NEXT: [[OR2:%.*]] = or <2 x i8> [[AND]], [[X]]
165
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[OR2]], <2 x i8> <i8 1, i8 1>
153
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
166
154
; CHECK-NEXT: ret <2 x i8> [[COND]]
167
155
;
168
156
%and = and <2 x i8 > %z , <i8 3 , i8 3 >
@@ -177,13 +165,11 @@ define <2 x i8> @src_or_bit_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) {
177
165
178
166
define <2 x i8 > @src_or_bit_vec_poison (<2 x i8 > %x , <2 x i8 > %y , <2 x i8 > %z ) {
179
167
; CHECK-LABEL: @src_or_bit_vec_poison(
180
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Z:%.*]], <i8 3, i8 poison>
181
168
; CHECK-NEXT: [[AND1:%.*]] = shl <2 x i8> [[Y:%.*]], <i8 2, i8 poison>
182
169
; CHECK-NEXT: [[SHL:%.*]] = and <2 x i8> [[AND1]], <i8 12, i8 poison>
183
170
; CHECK-NEXT: [[OR:%.*]] = or <2 x i8> [[SHL]], [[X:%.*]]
184
171
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[OR]], <i8 3, i8 3>
185
- ; CHECK-NEXT: [[OR2:%.*]] = or <2 x i8> [[AND]], [[X]]
186
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[OR2]], <2 x i8> <i8 1, i8 1>
172
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
187
173
; CHECK-NEXT: ret <2 x i8> [[COND]]
188
174
;
189
175
%and = and <2 x i8 > %z , <i8 3 , i8 poison>
@@ -198,13 +184,11 @@ define <2 x i8> @src_or_bit_vec_poison(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) {
198
184
199
185
define <2 x i8 > @src_or_bit_vec_poison2 (<2 x i8 > %x , <2 x i8 > %y , <2 x i8 > %z ) {
200
186
; CHECK-LABEL: @src_or_bit_vec_poison2(
201
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Z:%.*]], <i8 poison, i8 3>
202
187
; CHECK-NEXT: [[AND1:%.*]] = shl <2 x i8> [[Y:%.*]], <i8 poison, i8 2>
203
188
; CHECK-NEXT: [[SHL:%.*]] = and <2 x i8> [[AND1]], <i8 poison, i8 12>
204
189
; CHECK-NEXT: [[OR:%.*]] = or <2 x i8> [[SHL]], [[X:%.*]]
205
190
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[OR]], <i8 3, i8 3>
206
- ; CHECK-NEXT: [[OR2:%.*]] = or <2 x i8> [[AND]], [[X]]
207
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[OR2]], <2 x i8> <i8 1, i8 1>
191
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
208
192
; CHECK-NEXT: ret <2 x i8> [[COND]]
209
193
;
210
194
%and = and <2 x i8 > %z , <i8 poison, i8 3 >
@@ -219,13 +203,11 @@ define <2 x i8> @src_or_bit_vec_poison2(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) {
219
203
220
204
define i8 @src_or_bit_ne (i8 %x , i8 %y , i8 %z ) {
221
205
; CHECK-LABEL: @src_or_bit_ne(
222
- ; CHECK-NEXT: [[AND:%.*]] = and i8 [[Z:%.*]], 3
223
206
; CHECK-NEXT: [[AND1:%.*]] = shl i8 [[Y:%.*]], 2
224
207
; CHECK-NEXT: [[SHL:%.*]] = and i8 [[AND1]], 12
225
208
; CHECK-NEXT: [[OR:%.*]] = or i8 [[SHL]], [[X:%.*]]
226
209
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq i8 [[OR]], 3
227
- ; CHECK-NEXT: [[OR2:%.*]] = or i8 [[AND]], [[X]]
228
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP_NOT]], i8 [[OR2]], i8 1
210
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP_NOT]], i8 3, i8 1
229
211
; CHECK-NEXT: ret i8 [[COND]]
230
212
;
231
213
%and = and i8 %z , 3
@@ -240,13 +222,11 @@ define i8 @src_or_bit_ne(i8 %x, i8 %y, i8 %z) {
240
222
241
223
define <2 x i8 > @src_or_bit_vec_ne (<2 x i8 > %x , <2 x i8 > %y , <2 x i8 > %z ) {
242
224
; CHECK-LABEL: @src_or_bit_vec_ne(
243
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Z:%.*]], <i8 3, i8 3>
244
225
; CHECK-NEXT: [[AND1:%.*]] = shl <2 x i8> [[Y:%.*]], <i8 2, i8 2>
245
226
; CHECK-NEXT: [[SHL:%.*]] = and <2 x i8> [[AND1]], <i8 12, i8 12>
246
227
; CHECK-NEXT: [[OR:%.*]] = or <2 x i8> [[SHL]], [[X:%.*]]
247
228
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq <2 x i8> [[OR]], <i8 3, i8 3>
248
- ; CHECK-NEXT: [[OR2:%.*]] = or <2 x i8> [[AND]], [[X]]
249
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> [[OR2]], <2 x i8> <i8 1, i8 1>
229
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
250
230
; CHECK-NEXT: ret <2 x i8> [[COND]]
251
231
;
252
232
%and = and <2 x i8 > %z , <i8 3 , i8 3 >
@@ -261,13 +241,11 @@ define <2 x i8> @src_or_bit_vec_ne(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) {
261
241
262
242
define <2 x i8 > @src_or_bit_vec_poison_ne (<2 x i8 > %x , <2 x i8 > %y , <2 x i8 > %z ) {
263
243
; CHECK-LABEL: @src_or_bit_vec_poison_ne(
264
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Z:%.*]], <i8 3, i8 poison>
265
244
; CHECK-NEXT: [[AND1:%.*]] = shl <2 x i8> [[Y:%.*]], <i8 2, i8 poison>
266
245
; CHECK-NEXT: [[SHL:%.*]] = and <2 x i8> [[AND1]], <i8 12, i8 poison>
267
246
; CHECK-NEXT: [[OR:%.*]] = or <2 x i8> [[SHL]], [[X:%.*]]
268
247
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq <2 x i8> [[OR]], <i8 3, i8 3>
269
- ; CHECK-NEXT: [[OR2:%.*]] = or <2 x i8> [[AND]], [[X]]
270
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> [[OR2]], <2 x i8> <i8 1, i8 1>
248
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
271
249
; CHECK-NEXT: ret <2 x i8> [[COND]]
272
250
;
273
251
%and = and <2 x i8 > %z , <i8 3 , i8 poison>
@@ -282,13 +260,11 @@ define <2 x i8> @src_or_bit_vec_poison_ne(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z)
282
260
283
261
define <2 x i8 > @src_or_bit_vec_poison2_ne (<2 x i8 > %x , <2 x i8 > %y , <2 x i8 > %z ) {
284
262
; CHECK-LABEL: @src_or_bit_vec_poison2_ne(
285
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Z:%.*]], <i8 poison, i8 3>
286
263
; CHECK-NEXT: [[AND1:%.*]] = shl <2 x i8> [[Y:%.*]], <i8 poison, i8 2>
287
264
; CHECK-NEXT: [[SHL:%.*]] = and <2 x i8> [[AND1]], <i8 poison, i8 12>
288
265
; CHECK-NEXT: [[OR:%.*]] = or <2 x i8> [[SHL]], [[X:%.*]]
289
266
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq <2 x i8> [[OR]], <i8 3, i8 3>
290
- ; CHECK-NEXT: [[OR2:%.*]] = or <2 x i8> [[AND]], [[X]]
291
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> [[OR2]], <2 x i8> <i8 1, i8 1>
267
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
292
268
; CHECK-NEXT: ret <2 x i8> [[COND]]
293
269
;
294
270
%and = and <2 x i8 > %z , <i8 poison, i8 3 >
@@ -307,8 +283,7 @@ define i8 @src_xor_bit(i8 %x, i8 %y) {
307
283
; CHECK-NEXT: [[AND:%.*]] = and i8 [[Y:%.*]], 12
308
284
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[AND]], [[X:%.*]]
309
285
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[XOR]], 3
310
- ; CHECK-NEXT: [[AND1:%.*]] = and i8 [[X]], 3
311
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[AND1]], i8 1
286
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 3, i8 1
312
287
; CHECK-NEXT: ret i8 [[COND]]
313
288
;
314
289
%and = and i8 %y , 12
@@ -324,8 +299,7 @@ define <2 x i8> @src_xor_bit_vec(<2 x i8> %x, <2 x i8> %y) {
324
299
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Y:%.*]], <i8 12, i8 12>
325
300
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i8> [[AND]], [[X:%.*]]
326
301
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[XOR]], <i8 3, i8 3>
327
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 3, i8 3>
328
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]], <2 x i8> <i8 1, i8 1>
302
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
329
303
; CHECK-NEXT: ret <2 x i8> [[COND]]
330
304
;
331
305
%and = and <2 x i8 > %y , <i8 12 , i8 12 >
@@ -341,8 +315,7 @@ define <2 x i8> @src_xor_bit_vec_poison(<2 x i8> %x, <2 x i8> %y) {
341
315
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Y:%.*]], <i8 poison, i8 12>
342
316
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i8> [[AND]], [[X:%.*]]
343
317
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[XOR]], <i8 3, i8 3>
344
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 poison, i8 3>
345
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]], <2 x i8> <i8 1, i8 1>
318
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
346
319
; CHECK-NEXT: ret <2 x i8> [[COND]]
347
320
;
348
321
%and = and <2 x i8 > %y , <i8 poison, i8 12 >
@@ -358,8 +331,7 @@ define <2 x i8> @src_xor_bit_vec_poison2(<2 x i8> %x, <2 x i8> %y) {
358
331
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Y:%.*]], <i8 poison, i8 12>
359
332
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i8> [[AND]], [[X:%.*]]
360
333
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[XOR]], <i8 3, i8 3>
361
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 3, i8 3>
362
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]], <2 x i8> <i8 1, i8 1>
334
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
363
335
; CHECK-NEXT: ret <2 x i8> [[COND]]
364
336
;
365
337
%and = and <2 x i8 > %y , <i8 poison, i8 12 >
@@ -375,8 +347,7 @@ define i8 @src_xor_bit_ne(i8 %x, i8 %y) {
375
347
; CHECK-NEXT: [[AND:%.*]] = and i8 [[Y:%.*]], 12
376
348
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[AND]], [[X:%.*]]
377
349
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq i8 [[XOR]], 3
378
- ; CHECK-NEXT: [[AND1:%.*]] = and i8 [[X]], 3
379
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP_NOT]], i8 [[AND1]], i8 1
350
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP_NOT]], i8 3, i8 1
380
351
; CHECK-NEXT: ret i8 [[COND]]
381
352
;
382
353
%and = and i8 %y , 12
@@ -392,8 +363,7 @@ define <2 x i8> @src_xor_bit_vec_ne(<2 x i8> %x, <2 x i8> %y) {
392
363
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Y:%.*]], <i8 12, i8 12>
393
364
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i8> [[AND]], [[X:%.*]]
394
365
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq <2 x i8> [[XOR]], <i8 3, i8 3>
395
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 3, i8 3>
396
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> [[AND1]], <2 x i8> <i8 1, i8 1>
366
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
397
367
; CHECK-NEXT: ret <2 x i8> [[COND]]
398
368
;
399
369
%and = and <2 x i8 > %y , <i8 12 , i8 12 >
@@ -409,8 +379,7 @@ define <2 x i8> @src_xor_bit_vec_poison_ne(<2 x i8> %x, <2 x i8> %y) {
409
379
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Y:%.*]], <i8 poison, i8 12>
410
380
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i8> [[AND]], [[X:%.*]]
411
381
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq <2 x i8> [[XOR]], <i8 3, i8 3>
412
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 poison, i8 3>
413
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> [[AND1]], <2 x i8> <i8 1, i8 1>
382
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
414
383
; CHECK-NEXT: ret <2 x i8> [[COND]]
415
384
;
416
385
%and = and <2 x i8 > %y , <i8 poison, i8 12 >
@@ -426,8 +395,7 @@ define <2 x i8> @src_xor_bit_vec_poison2_ne(<2 x i8> %x, <2 x i8> %y) {
426
395
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Y:%.*]], <i8 poison, i8 12>
427
396
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i8> [[AND]], [[X:%.*]]
428
397
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq <2 x i8> [[XOR]], <i8 3, i8 3>
429
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 3, i8 3>
430
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> [[AND1]], <2 x i8> <i8 1, i8 1>
398
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP_NOT]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
431
399
; CHECK-NEXT: ret <2 x i8> [[COND]]
432
400
;
433
401
%and = and <2 x i8 > %y , <i8 poison, i8 12 >
0 commit comments