@@ -12,13 +12,11 @@ define void @zext_v4i8_all_lanes_used(<4 x i8> %src) {
12
12
; CHECK-NEXT: [[TMP0:%.*]] = freeze <4 x i8> [[SRC]]
13
13
; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i8> [[TMP0]] to i32
14
14
; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[TMP1]], 24
15
- ; CHECK-NEXT: [[TMP3:%.*]] = and i32 [[TMP2]], 255
16
15
; CHECK-NEXT: [[TMP4:%.*]] = lshr i32 [[TMP1]], 16
17
16
; CHECK-NEXT: [[TMP5:%.*]] = and i32 [[TMP4]], 255
18
17
; CHECK-NEXT: [[TMP6:%.*]] = lshr i32 [[TMP1]], 8
19
18
; CHECK-NEXT: [[TMP7:%.*]] = and i32 [[TMP6]], 255
20
- ; CHECK-NEXT: [[TMP8:%.*]] = lshr i32 [[TMP1]], 0
21
- ; CHECK-NEXT: [[TMP9:%.*]] = and i32 [[TMP8]], 255
19
+ ; CHECK-NEXT: [[TMP9:%.*]] = and i32 [[TMP1]], 255
22
20
; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i8> [[SRC]] to <4 x i32>
23
21
; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i32> [[EXT9]], i64 0
24
22
; CHECK-NEXT: [[EXT_1:%.*]] = extractelement <4 x i32> [[EXT9]], i64 1
@@ -27,7 +25,7 @@ define void @zext_v4i8_all_lanes_used(<4 x i8> %src) {
27
25
; CHECK-NEXT: call void @use.i32(i32 [[TMP9]])
28
26
; CHECK-NEXT: call void @use.i32(i32 [[TMP7]])
29
27
; CHECK-NEXT: call void @use.i32(i32 [[TMP5]])
30
- ; CHECK-NEXT: call void @use.i32(i32 [[TMP3 ]])
28
+ ; CHECK-NEXT: call void @use.i32(i32 [[TMP2 ]])
31
29
; CHECK-NEXT: ret void
32
30
;
33
31
entry:
@@ -81,7 +79,6 @@ define void @zext_v4i8_3_lanes_used_1(<4 x i8> %src) {
81
79
; CHECK-NEXT: [[TMP0:%.*]] = freeze <4 x i8> [[SRC]]
82
80
; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i8> [[TMP0]] to i32
83
81
; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[TMP1]], 24
84
- ; CHECK-NEXT: [[TMP3:%.*]] = and i32 [[TMP2]], 255
85
82
; CHECK-NEXT: [[TMP4:%.*]] = lshr i32 [[TMP1]], 16
86
83
; CHECK-NEXT: [[TMP5:%.*]] = and i32 [[TMP4]], 255
87
84
; CHECK-NEXT: [[TMP6:%.*]] = lshr i32 [[TMP1]], 8
@@ -92,7 +89,7 @@ define void @zext_v4i8_3_lanes_used_1(<4 x i8> %src) {
92
89
; CHECK-NEXT: [[EXT_3:%.*]] = extractelement <4 x i32> [[EXT9]], i64 3
93
90
; CHECK-NEXT: call void @use.i32(i32 [[TMP7]])
94
91
; CHECK-NEXT: call void @use.i32(i32 [[TMP5]])
95
- ; CHECK-NEXT: call void @use.i32(i32 [[TMP3 ]])
92
+ ; CHECK-NEXT: call void @use.i32(i32 [[TMP2 ]])
96
93
; CHECK-NEXT: ret void
97
94
;
98
95
entry:
@@ -114,18 +111,16 @@ define void @zext_v4i8_3_lanes_used_2(<4 x i8> %src) {
114
111
; CHECK-NEXT: [[TMP0:%.*]] = freeze <4 x i8> [[SRC]]
115
112
; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i8> [[TMP0]] to i32
116
113
; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[TMP1]], 24
117
- ; CHECK-NEXT: [[TMP3:%.*]] = and i32 [[TMP2]], 255
118
114
; CHECK-NEXT: [[TMP4:%.*]] = lshr i32 [[TMP1]], 8
119
115
; CHECK-NEXT: [[TMP5:%.*]] = and i32 [[TMP4]], 255
120
- ; CHECK-NEXT: [[TMP6:%.*]] = lshr i32 [[TMP1]], 0
121
- ; CHECK-NEXT: [[TMP7:%.*]] = and i32 [[TMP6]], 255
116
+ ; CHECK-NEXT: [[TMP7:%.*]] = and i32 [[TMP1]], 255
122
117
; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i8> [[SRC]] to <4 x i32>
123
118
; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i32> [[EXT9]], i64 0
124
119
; CHECK-NEXT: [[EXT_1:%.*]] = extractelement <4 x i32> [[EXT9]], i64 1
125
120
; CHECK-NEXT: [[EXT_3:%.*]] = extractelement <4 x i32> [[EXT9]], i64 3
126
121
; CHECK-NEXT: call void @use.i32(i32 [[TMP7]])
127
122
; CHECK-NEXT: call void @use.i32(i32 [[TMP5]])
128
- ; CHECK-NEXT: call void @use.i32(i32 [[TMP3 ]])
123
+ ; CHECK-NEXT: call void @use.i32(i32 [[TMP2 ]])
129
124
; CHECK-NEXT: ret void
130
125
;
131
126
entry:
@@ -175,8 +170,7 @@ define void @zext_v4i8_2_lanes_used_2(<4 x i8> %src) {
175
170
; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i8> [[TMP0]] to i32
176
171
; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[TMP1]], 16
177
172
; CHECK-NEXT: [[TMP3:%.*]] = and i32 [[TMP2]], 255
178
- ; CHECK-NEXT: [[TMP4:%.*]] = lshr i32 [[TMP1]], 0
179
- ; CHECK-NEXT: [[TMP5:%.*]] = and i32 [[TMP4]], 255
173
+ ; CHECK-NEXT: [[TMP5:%.*]] = and i32 [[TMP1]], 255
180
174
; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i8> [[SRC]] to <4 x i32>
181
175
; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i32> [[EXT9]], i64 0
182
176
; CHECK-NEXT: [[EXT_2:%.*]] = extractelement <4 x i32> [[EXT9]], i64 2
@@ -200,13 +194,11 @@ define void @zext_v4i8_all_lanes_used_noundef(<4 x i8> noundef %src) {
200
194
; CHECK-NEXT: [[ENTRY:.*:]]
201
195
; CHECK-NEXT: [[TMP0:%.*]] = bitcast <4 x i8> [[SRC]] to i32
202
196
; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[TMP0]], 24
203
- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], 255
204
197
; CHECK-NEXT: [[TMP3:%.*]] = lshr i32 [[TMP0]], 16
205
198
; CHECK-NEXT: [[TMP4:%.*]] = and i32 [[TMP3]], 255
206
199
; CHECK-NEXT: [[TMP5:%.*]] = lshr i32 [[TMP0]], 8
207
200
; CHECK-NEXT: [[TMP6:%.*]] = and i32 [[TMP5]], 255
208
- ; CHECK-NEXT: [[TMP7:%.*]] = lshr i32 [[TMP0]], 0
209
- ; CHECK-NEXT: [[TMP8:%.*]] = and i32 [[TMP7]], 255
201
+ ; CHECK-NEXT: [[TMP8:%.*]] = and i32 [[TMP0]], 255
210
202
; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i8> [[SRC]] to <4 x i32>
211
203
; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i32> [[EXT9]], i64 0
212
204
; CHECK-NEXT: [[EXT_1:%.*]] = extractelement <4 x i32> [[EXT9]], i64 1
@@ -215,7 +207,7 @@ define void @zext_v4i8_all_lanes_used_noundef(<4 x i8> noundef %src) {
215
207
; CHECK-NEXT: call void @use.i32(i32 [[TMP8]])
216
208
; CHECK-NEXT: call void @use.i32(i32 [[TMP6]])
217
209
; CHECK-NEXT: call void @use.i32(i32 [[TMP4]])
218
- ; CHECK-NEXT: call void @use.i32(i32 [[TMP2 ]])
210
+ ; CHECK-NEXT: call void @use.i32(i32 [[TMP1 ]])
219
211
; CHECK-NEXT: ret void
220
212
;
221
213
entry:
@@ -271,13 +263,11 @@ define void @zext_v4i16_all_lanes_used(<4 x i16> %src) {
271
263
; CHECK-NEXT: [[TMP0:%.*]] = freeze <4 x i16> [[SRC]]
272
264
; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i16> [[TMP0]] to i64
273
265
; CHECK-NEXT: [[TMP2:%.*]] = lshr i64 [[TMP1]], 48
274
- ; CHECK-NEXT: [[TMP3:%.*]] = and i64 [[TMP2]], 65535
275
266
; CHECK-NEXT: [[TMP4:%.*]] = lshr i64 [[TMP1]], 32
276
267
; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 65535
277
268
; CHECK-NEXT: [[TMP6:%.*]] = lshr i64 [[TMP1]], 16
278
269
; CHECK-NEXT: [[TMP7:%.*]] = and i64 [[TMP6]], 65535
279
- ; CHECK-NEXT: [[TMP8:%.*]] = lshr i64 [[TMP1]], 0
280
- ; CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], 65535
270
+ ; CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP1]], 65535
281
271
; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i16> [[SRC]] to <4 x i64>
282
272
; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i64> [[EXT9]], i64 0
283
273
; CHECK-NEXT: [[EXT_1:%.*]] = extractelement <4 x i64> [[EXT9]], i64 1
@@ -286,7 +276,7 @@ define void @zext_v4i16_all_lanes_used(<4 x i16> %src) {
286
276
; CHECK-NEXT: call void @use.i64(i64 [[TMP9]])
287
277
; CHECK-NEXT: call void @use.i64(i64 [[TMP7]])
288
278
; CHECK-NEXT: call void @use.i64(i64 [[TMP5]])
289
- ; CHECK-NEXT: call void @use.i64(i64 [[TMP3 ]])
279
+ ; CHECK-NEXT: call void @use.i64(i64 [[TMP2 ]])
290
280
; CHECK-NEXT: ret void
291
281
;
292
282
entry:
@@ -310,14 +300,12 @@ define void @zext_v2i32_all_lanes_used(<2 x i32> %src) {
310
300
; CHECK-NEXT: [[TMP0:%.*]] = freeze <2 x i32> [[SRC]]
311
301
; CHECK-NEXT: [[TMP1:%.*]] = bitcast <2 x i32> [[TMP0]] to i64
312
302
; CHECK-NEXT: [[TMP2:%.*]] = lshr i64 [[TMP1]], 32
313
- ; CHECK-NEXT: [[TMP3:%.*]] = and i64 [[TMP2]], 4294967295
314
- ; CHECK-NEXT: [[TMP4:%.*]] = lshr i64 [[TMP1]], 0
315
- ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 4294967295
303
+ ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP1]], 4294967295
316
304
; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <2 x i32> [[SRC]] to <2 x i64>
317
305
; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <2 x i64> [[EXT9]], i64 0
318
306
; CHECK-NEXT: [[EXT_1:%.*]] = extractelement <2 x i64> [[EXT9]], i64 1
319
307
; CHECK-NEXT: call void @use.i64(i64 [[TMP5]])
320
- ; CHECK-NEXT: call void @use.i64(i64 [[TMP3 ]])
308
+ ; CHECK-NEXT: call void @use.i64(i64 [[TMP2 ]])
321
309
; CHECK-NEXT: ret void
322
310
;
323
311
entry:
@@ -330,8 +318,8 @@ entry:
330
318
ret void
331
319
}
332
320
333
- define void @zext_nv4i8_all_lanes_used (<vscale x 4 x i8 > %src ) {
334
- ; CHECK-LABEL: define void @zext_nv4i8_all_lanes_used (
321
+ define void @zext_nxv4i8_all_lanes_used (<vscale x 4 x i8 > %src ) {
322
+ ; CHECK-LABEL: define void @zext_nxv4i8_all_lanes_used (
335
323
; CHECK-SAME: <vscale x 4 x i8> [[SRC:%.*]]) {
336
324
; CHECK-NEXT: [[ENTRY:.*:]]
337
325
; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <vscale x 4 x i8> [[SRC]] to <vscale x 4 x i32>
0 commit comments