@@ -12,13 +12,11 @@ define void @zext_v4i8_all_lanes_used(<4 x i8> %src) {
1212; CHECK-NEXT: [[TMP0:%.*]] = freeze <4 x i8> [[SRC]]
1313; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i8> [[TMP0]] to i32
1414; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[TMP1]], 24
15- ; CHECK-NEXT: [[TMP3:%.*]] = and i32 [[TMP2]], 255
1615; CHECK-NEXT: [[TMP4:%.*]] = lshr i32 [[TMP1]], 16
1716; CHECK-NEXT: [[TMP5:%.*]] = and i32 [[TMP4]], 255
1817; CHECK-NEXT: [[TMP6:%.*]] = lshr i32 [[TMP1]], 8
1918; 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
2220; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i8> [[SRC]] to <4 x i32>
2321; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i32> [[EXT9]], i64 0
2422; 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) {
2725; CHECK-NEXT: call void @use.i32(i32 [[TMP9]])
2826; CHECK-NEXT: call void @use.i32(i32 [[TMP7]])
2927; 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 ]])
3129; CHECK-NEXT: ret void
3230;
3331entry:
@@ -81,7 +79,6 @@ define void @zext_v4i8_3_lanes_used_1(<4 x i8> %src) {
8179; CHECK-NEXT: [[TMP0:%.*]] = freeze <4 x i8> [[SRC]]
8280; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i8> [[TMP0]] to i32
8381; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[TMP1]], 24
84- ; CHECK-NEXT: [[TMP3:%.*]] = and i32 [[TMP2]], 255
8582; CHECK-NEXT: [[TMP4:%.*]] = lshr i32 [[TMP1]], 16
8683; CHECK-NEXT: [[TMP5:%.*]] = and i32 [[TMP4]], 255
8784; CHECK-NEXT: [[TMP6:%.*]] = lshr i32 [[TMP1]], 8
@@ -92,7 +89,7 @@ define void @zext_v4i8_3_lanes_used_1(<4 x i8> %src) {
9289; CHECK-NEXT: [[EXT_3:%.*]] = extractelement <4 x i32> [[EXT9]], i64 3
9390; CHECK-NEXT: call void @use.i32(i32 [[TMP7]])
9491; 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 ]])
9693; CHECK-NEXT: ret void
9794;
9895entry:
@@ -114,18 +111,16 @@ define void @zext_v4i8_3_lanes_used_2(<4 x i8> %src) {
114111; CHECK-NEXT: [[TMP0:%.*]] = freeze <4 x i8> [[SRC]]
115112; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i8> [[TMP0]] to i32
116113; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[TMP1]], 24
117- ; CHECK-NEXT: [[TMP3:%.*]] = and i32 [[TMP2]], 255
118114; CHECK-NEXT: [[TMP4:%.*]] = lshr i32 [[TMP1]], 8
119115; 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
122117; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i8> [[SRC]] to <4 x i32>
123118; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i32> [[EXT9]], i64 0
124119; CHECK-NEXT: [[EXT_1:%.*]] = extractelement <4 x i32> [[EXT9]], i64 1
125120; CHECK-NEXT: [[EXT_3:%.*]] = extractelement <4 x i32> [[EXT9]], i64 3
126121; CHECK-NEXT: call void @use.i32(i32 [[TMP7]])
127122; 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 ]])
129124; CHECK-NEXT: ret void
130125;
131126entry:
@@ -175,8 +170,7 @@ define void @zext_v4i8_2_lanes_used_2(<4 x i8> %src) {
175170; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i8> [[TMP0]] to i32
176171; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[TMP1]], 16
177172; 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
180174; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i8> [[SRC]] to <4 x i32>
181175; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i32> [[EXT9]], i64 0
182176; 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) {
200194; CHECK-NEXT: [[ENTRY:.*:]]
201195; CHECK-NEXT: [[TMP0:%.*]] = bitcast <4 x i8> [[SRC]] to i32
202196; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[TMP0]], 24
203- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], 255
204197; CHECK-NEXT: [[TMP3:%.*]] = lshr i32 [[TMP0]], 16
205198; CHECK-NEXT: [[TMP4:%.*]] = and i32 [[TMP3]], 255
206199; CHECK-NEXT: [[TMP5:%.*]] = lshr i32 [[TMP0]], 8
207200; 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
210202; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i8> [[SRC]] to <4 x i32>
211203; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i32> [[EXT9]], i64 0
212204; 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) {
215207; CHECK-NEXT: call void @use.i32(i32 [[TMP8]])
216208; CHECK-NEXT: call void @use.i32(i32 [[TMP6]])
217209; 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 ]])
219211; CHECK-NEXT: ret void
220212;
221213entry:
@@ -271,13 +263,11 @@ define void @zext_v4i16_all_lanes_used(<4 x i16> %src) {
271263; CHECK-NEXT: [[TMP0:%.*]] = freeze <4 x i16> [[SRC]]
272264; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i16> [[TMP0]] to i64
273265; CHECK-NEXT: [[TMP2:%.*]] = lshr i64 [[TMP1]], 48
274- ; CHECK-NEXT: [[TMP3:%.*]] = and i64 [[TMP2]], 65535
275266; CHECK-NEXT: [[TMP4:%.*]] = lshr i64 [[TMP1]], 32
276267; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 65535
277268; CHECK-NEXT: [[TMP6:%.*]] = lshr i64 [[TMP1]], 16
278269; 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
281271; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <4 x i16> [[SRC]] to <4 x i64>
282272; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <4 x i64> [[EXT9]], i64 0
283273; 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) {
286276; CHECK-NEXT: call void @use.i64(i64 [[TMP9]])
287277; CHECK-NEXT: call void @use.i64(i64 [[TMP7]])
288278; 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 ]])
290280; CHECK-NEXT: ret void
291281;
292282entry:
@@ -310,14 +300,12 @@ define void @zext_v2i32_all_lanes_used(<2 x i32> %src) {
310300; CHECK-NEXT: [[TMP0:%.*]] = freeze <2 x i32> [[SRC]]
311301; CHECK-NEXT: [[TMP1:%.*]] = bitcast <2 x i32> [[TMP0]] to i64
312302; 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
316304; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <2 x i32> [[SRC]] to <2 x i64>
317305; CHECK-NEXT: [[EXT_0:%.*]] = extractelement <2 x i64> [[EXT9]], i64 0
318306; CHECK-NEXT: [[EXT_1:%.*]] = extractelement <2 x i64> [[EXT9]], i64 1
319307; 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 ]])
321309; CHECK-NEXT: ret void
322310;
323311entry:
@@ -330,8 +318,8 @@ entry:
330318 ret void
331319}
332320
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 (
335323; CHECK-SAME: <vscale x 4 x i8> [[SRC:%.*]]) {
336324; CHECK-NEXT: [[ENTRY:.*:]]
337325; CHECK-NEXT: [[EXT9:%.*]] = zext nneg <vscale x 4 x i8> [[SRC]] to <vscale x 4 x i32>
0 commit comments