@@ -159,13 +159,11 @@ define <4 x i32> @shuffle_8_add_32_masks_are_eq_and_can_be_converted_up(<16 x i8
159159}
160160
161161; shuffle<8 x i16>( bitcast<8 x i16>( shuffle<4 x i32>(v)))
162- ; TODO: Squash shuffles and widen type?
163162
164163define <8 x i16 > @shuffle_32_bitcast_16_shuffle_16_can_be_converted_up (<4 x i32 > %v1 ) {
165164; CHECK-LABEL: @shuffle_32_bitcast_16_shuffle_16_can_be_converted_up(
166165; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i32> [[V1:%.*]] to <8 x i16>
167- ; CHECK-NEXT: [[BC1:%.*]] = shufflevector <8 x i16> [[TMP1]], <8 x i16> poison, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 2, i32 3, i32 0, i32 1>
168- ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <8 x i16> [[BC1]], <8 x i16> poison, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 2, i32 3, i32 0, i32 1>
166+ ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <8 x i16> [[TMP1]], <8 x i16> poison, <8 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 5>
169167; CHECK-NEXT: ret <8 x i16> [[SHUFFLE2]]
170168;
171169 %shuffle1 = shufflevector <4 x i32 > %v1 , <4 x i32 > poison, <4 x i32 > <i32 2 , i32 3 , i32 1 , i32 0 >
@@ -175,13 +173,11 @@ define <8 x i16> @shuffle_32_bitcast_16_shuffle_16_can_be_converted_up(<4 x i32>
175173}
176174
177175; shuffle<8 x i16>( bitcast<8 x i16>( shuffle<4 x i32>(v)))
178- ; TODO: Squash shuffles?
179176
180177define <8 x i16 > @shuffle_32_bitcast_16_shuffle_16_can_not_be_converted_up (<4 x i32 > %v1 ) {
181178; CHECK-LABEL: @shuffle_32_bitcast_16_shuffle_16_can_not_be_converted_up(
182179; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i32> [[V1:%.*]] to <8 x i16>
183- ; CHECK-NEXT: [[BC1:%.*]] = shufflevector <8 x i16> [[TMP1]], <8 x i16> poison, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 2, i32 3, i32 0, i32 1>
184- ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <8 x i16> [[BC1]], <8 x i16> poison, <8 x i32> <i32 5, i32 4, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>
180+ ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <8 x i16> [[TMP1]], <8 x i16> poison, <8 x i32> <i32 3, i32 2, i32 0, i32 1, i32 4, i32 5, i32 6, i32 7>
185181; CHECK-NEXT: ret <8 x i16> [[SHUFFLE2]]
186182;
187183 %shuffle1 = shufflevector <4 x i32 > %v1 , <4 x i32 > poison, <4 x i32 > <i32 2 , i32 3 , i32 1 , i32 0 >
@@ -191,13 +187,11 @@ define <8 x i16> @shuffle_32_bitcast_16_shuffle_16_can_not_be_converted_up(<4 x
191187}
192188
193189; shuffle<16 x i8>( bitcast<16 x i8>( shuffle<4 x i32>(v)))
194- ; TODO: Squash shuffles and widen type?
195190
196191define <16 x i8 > @shuffle_32_bitcast_8_shuffle_8_can_be_converted_up (<4 x i32 > %v1 ) {
197192; CHECK-LABEL: @shuffle_32_bitcast_8_shuffle_8_can_be_converted_up(
198193; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i32> [[V1:%.*]] to <16 x i8>
199- ; CHECK-NEXT: [[BC1:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> poison, <16 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>
200- ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <16 x i8> [[BC1]], <16 x i8> poison, <16 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>
194+ ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> poison, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11>
201195; CHECK-NEXT: ret <16 x i8> [[SHUFFLE2]]
202196;
203197 %shuffle1 = shufflevector <4 x i32 > %v1 , <4 x i32 > poison, <4 x i32 > <i32 2 , i32 3 , i32 1 , i32 0 >
@@ -207,13 +201,11 @@ define <16 x i8> @shuffle_32_bitcast_8_shuffle_8_can_be_converted_up(<4 x i32> %
207201}
208202
209203; shuffle<16 x i8>( bitcast<16 x i8>( shuffle<4 x i32>(v)))
210- ; TODO: Squash shuffles?
211204
212205define <16 x i8 > @shuffle_32_bitcast_8_shuffle_8_can_not_be_converted_up (<4 x i32 > %v1 ) {
213206; CHECK-LABEL: @shuffle_32_bitcast_8_shuffle_8_can_not_be_converted_up(
214207; CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x i32> [[V1:%.*]] to <16 x i8>
215- ; CHECK-NEXT: [[BC1:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> poison, <16 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>
216- ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <16 x i8> [[BC1]], <16 x i8> poison, <16 x i32> <i32 5, i32 4, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
208+ ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> poison, <16 x i32> <i32 13, i32 12, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>
217209; CHECK-NEXT: ret <16 x i8> [[SHUFFLE2]]
218210;
219211 %shuffle1 = shufflevector <4 x i32 > %v1 , <4 x i32 > poison, <4 x i32 > <i32 2 , i32 3 , i32 1 , i32 0 >
@@ -223,13 +215,11 @@ define <16 x i8> @shuffle_32_bitcast_8_shuffle_8_can_not_be_converted_up(<4 x i3
223215}
224216
225217; shuffle<4 x i32>( bitcast<4 x i32>( shuffle<16 x i8>(v)))
226- ; TODO: squash shuffles?
227218
228219define <4 x i32 > @shuffle_8_bitcast_32_shuffle_32_can_be_converted_up (<16 x i8 > %v1 ) {
229220; CHECK-LABEL: @shuffle_8_bitcast_32_shuffle_32_can_be_converted_up(
230221; CHECK-NEXT: [[TMP1:%.*]] = bitcast <16 x i8> [[V1:%.*]] to <4 x i32>
231- ; CHECK-NEXT: [[BC1:%.*]] = shufflevector <4 x i32> [[TMP1]], <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
232- ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <4 x i32> [[BC1]], <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
222+ ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <4 x i32> [[TMP1]], <4 x i32> poison, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
233223; CHECK-NEXT: ret <4 x i32> [[SHUFFLE2]]
234224;
235225 %shuffle1 = shufflevector <16 x i8 > %v1 , <16 x i8 > poison, <16 x i32 > <i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 4 , i32 5 , i32 6 , i32 7 , i32 0 , i32 1 , i32 2 , i32 3 >
@@ -239,13 +229,11 @@ define <4 x i32> @shuffle_8_bitcast_32_shuffle_32_can_be_converted_up(<16 x i8>
239229}
240230
241231; shuffle<4 x i32>( bitcast<4 x i32>( shuffle<8 x i16>(v)))
242- ; TODO: squash shuffles?
243232
244233define <4 x i32 > @shuffle_16_bitcast_32_shuffle_32_can_be_converted_up (<8 x i16 > %v1 ) {
245234; CHECK-LABEL: @shuffle_16_bitcast_32_shuffle_32_can_be_converted_up(
246235; CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x i16> [[V1:%.*]] to <4 x i32>
247- ; CHECK-NEXT: [[BC1:%.*]] = shufflevector <4 x i32> [[TMP1]], <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
248- ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <4 x i32> [[BC1]], <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
236+ ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <4 x i32> [[TMP1]], <4 x i32> poison, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
249237; CHECK-NEXT: ret <4 x i32> [[SHUFFLE2]]
250238;
251239 %shuffle1 = shufflevector <8 x i16 > %v1 , <8 x i16 > poison, <8 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 , i32 2 , i32 3 , i32 0 , i32 1 >
@@ -287,13 +275,11 @@ define <4 x i32> @shuffle_16_bitcast_32_shuffle_32_can_not_be_converted_up(<8 x
287275}
288276
289277; shuffle<8 x i16>( bitcast<8 x i16>( shuffle<16 x i8>(v)))
290- ; TODO: squash shuffles and widen type?
291278
292279define <8 x i16 > @shuffle_8_bitcast_16_shuffle_16_can__be_converted_up (<16 x i8 > %v1 ) {
293280; CHECK-LABEL: @shuffle_8_bitcast_16_shuffle_16_can__be_converted_up(
294281; CHECK-NEXT: [[TMP1:%.*]] = bitcast <16 x i8> [[V1:%.*]] to <8 x i16>
295- ; CHECK-NEXT: [[BC1:%.*]] = shufflevector <8 x i16> [[TMP1]], <8 x i16> poison, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 2, i32 3, i32 0, i32 1>
296- ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <8 x i16> [[BC1]], <8 x i16> poison, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 2, i32 3, i32 0, i32 1>
282+ ; CHECK-NEXT: [[SHUFFLE2:%.*]] = shufflevector <8 x i16> [[TMP1]], <8 x i16> poison, <8 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 5>
297283; CHECK-NEXT: ret <8 x i16> [[SHUFFLE2]]
298284;
299285 %shuffle1 = shufflevector <16 x i8 > %v1 , <16 x i8 > poison, <16 x i32 > <i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 4 , i32 5 , i32 6 , i32 7 , i32 0 , i32 1 , i32 2 , i32 3 >
0 commit comments