@@ -159,13 +159,11 @@ define <4 x i32> @shuffle_8_add_32_masks_are_eq_and_can_be_converted_up(<16 x i8
159
159
}
160
160
161
161
; shuffle<8 x i16>( bitcast<8 x i16>( shuffle<4 x i32>(v)))
162
- ; TODO: Squash shuffles and widen type?
163
162
164
163
define <8 x i16 > @shuffle_32_bitcast_16_shuffle_16_can_be_converted_up (<4 x i32 > %v1 ) {
165
164
; CHECK-LABEL: @shuffle_32_bitcast_16_shuffle_16_can_be_converted_up(
166
165
; 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>
169
167
; CHECK-NEXT: ret <8 x i16> [[SHUFFLE2]]
170
168
;
171
169
%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>
175
173
}
176
174
177
175
; shuffle<8 x i16>( bitcast<8 x i16>( shuffle<4 x i32>(v)))
178
- ; TODO: Squash shuffles?
179
176
180
177
define <8 x i16 > @shuffle_32_bitcast_16_shuffle_16_can_not_be_converted_up (<4 x i32 > %v1 ) {
181
178
; CHECK-LABEL: @shuffle_32_bitcast_16_shuffle_16_can_not_be_converted_up(
182
179
; 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>
185
181
; CHECK-NEXT: ret <8 x i16> [[SHUFFLE2]]
186
182
;
187
183
%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
191
187
}
192
188
193
189
; shuffle<16 x i8>( bitcast<16 x i8>( shuffle<4 x i32>(v)))
194
- ; TODO: Squash shuffles and widen type?
195
190
196
191
define <16 x i8 > @shuffle_32_bitcast_8_shuffle_8_can_be_converted_up (<4 x i32 > %v1 ) {
197
192
; CHECK-LABEL: @shuffle_32_bitcast_8_shuffle_8_can_be_converted_up(
198
193
; 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>
201
195
; CHECK-NEXT: ret <16 x i8> [[SHUFFLE2]]
202
196
;
203
197
%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> %
207
201
}
208
202
209
203
; shuffle<16 x i8>( bitcast<16 x i8>( shuffle<4 x i32>(v)))
210
- ; TODO: Squash shuffles?
211
204
212
205
define <16 x i8 > @shuffle_32_bitcast_8_shuffle_8_can_not_be_converted_up (<4 x i32 > %v1 ) {
213
206
; CHECK-LABEL: @shuffle_32_bitcast_8_shuffle_8_can_not_be_converted_up(
214
207
; 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>
217
209
; CHECK-NEXT: ret <16 x i8> [[SHUFFLE2]]
218
210
;
219
211
%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
223
215
}
224
216
225
217
; shuffle<4 x i32>( bitcast<4 x i32>( shuffle<16 x i8>(v)))
226
- ; TODO: squash shuffles?
227
218
228
219
define <4 x i32 > @shuffle_8_bitcast_32_shuffle_32_can_be_converted_up (<16 x i8 > %v1 ) {
229
220
; CHECK-LABEL: @shuffle_8_bitcast_32_shuffle_32_can_be_converted_up(
230
221
; 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>
233
223
; CHECK-NEXT: ret <4 x i32> [[SHUFFLE2]]
234
224
;
235
225
%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>
239
229
}
240
230
241
231
; shuffle<4 x i32>( bitcast<4 x i32>( shuffle<8 x i16>(v)))
242
- ; TODO: squash shuffles?
243
232
244
233
define <4 x i32 > @shuffle_16_bitcast_32_shuffle_32_can_be_converted_up (<8 x i16 > %v1 ) {
245
234
; CHECK-LABEL: @shuffle_16_bitcast_32_shuffle_32_can_be_converted_up(
246
235
; 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>
249
237
; CHECK-NEXT: ret <4 x i32> [[SHUFFLE2]]
250
238
;
251
239
%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
287
275
}
288
276
289
277
; shuffle<8 x i16>( bitcast<8 x i16>( shuffle<16 x i8>(v)))
290
- ; TODO: squash shuffles and widen type?
291
278
292
279
define <8 x i16 > @shuffle_8_bitcast_16_shuffle_16_can__be_converted_up (<16 x i8 > %v1 ) {
293
280
; CHECK-LABEL: @shuffle_8_bitcast_16_shuffle_16_can__be_converted_up(
294
281
; 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>
297
283
; CHECK-NEXT: ret <8 x i16> [[SHUFFLE2]]
298
284
;
299
285
%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