@@ -263,6 +263,84 @@ define <8 x i16> @v8i16_371115(<16 x i8> %a, <16 x i8> %b) {
263
263
}
264
264
265
265
266
+ define <8 x i32 > @v8i32_0246 (<16 x i8 > %a , <16 x i8 > %b ) {
267
+ ; CHECK-LABEL: v8i32_0246:
268
+ ; CHECK: // %bb.0:
269
+ ; CHECK-NEXT: bic v0.8h, #255, lsl #8
270
+ ; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
271
+ ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
272
+ ; CHECK-NEXT: ret
273
+ %c = shufflevector <16 x i8 > %a , <16 x i8 > %b , <8 x i32 > <i32 0 , i32 2 , i32 4 , i32 6 , i32 8 , i32 10 , i32 12 , i32 14 >
274
+ %d = zext <8 x i8 > %c to <8 x i32 >
275
+ ret <8 x i32 > %d
276
+ }
277
+
278
+ define <8 x i32 > @v8i32_1357 (<16 x i8 > %a , <16 x i8 > %b ) {
279
+ ; CHECK-LABEL: v8i32_1357:
280
+ ; CHECK: // %bb.0:
281
+ ; CHECK-NEXT: uzp2 v0.16b, v0.16b, v0.16b
282
+ ; CHECK-NEXT: ushll v0.8h, v0.8b, #0
283
+ ; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
284
+ ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
285
+ ; CHECK-NEXT: ret
286
+ %c = shufflevector <16 x i8 > %a , <16 x i8 > %b , <8 x i32 > <i32 1 , i32 3 , i32 5 , i32 7 , i32 9 , i32 11 , i32 13 , i32 15 >
287
+ %d = zext <8 x i8 > %c to <8 x i32 >
288
+ ret <8 x i32 > %d
289
+ }
290
+
291
+ define <8 x i32 > @v8i32_04812 (<16 x i8 > %a , <16 x i8 > %b ) {
292
+ ; CHECK-LABEL: v8i32_04812:
293
+ ; CHECK: // %bb.0:
294
+ ; CHECK-NEXT: uzp1 v0.8h, v0.8h, v1.8h
295
+ ; CHECK-NEXT: bic v0.8h, #255, lsl #8
296
+ ; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
297
+ ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
298
+ ; CHECK-NEXT: ret
299
+ %c = shufflevector <16 x i8 > %a , <16 x i8 > %b , <8 x i32 > <i32 0 , i32 4 , i32 8 , i32 12 , i32 16 , i32 20 , i32 24 , i32 28 >
300
+ %d = zext <8 x i8 > %c to <8 x i32 >
301
+ ret <8 x i32 > %d
302
+ }
303
+
304
+ define <8 x i32 > @v8i32_15913 (<16 x i8 > %a , <16 x i8 > %b ) {
305
+ ; CHECK-LABEL: v8i32_15913:
306
+ ; CHECK: // %bb.0:
307
+ ; CHECK-NEXT: uzp1 v0.8h, v0.8h, v1.8h
308
+ ; CHECK-NEXT: ushr v0.8h, v0.8h, #8
309
+ ; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
310
+ ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
311
+ ; CHECK-NEXT: ret
312
+ %c = shufflevector <16 x i8 > %a , <16 x i8 > %b , <8 x i32 > <i32 1 , i32 5 , i32 9 , i32 13 , i32 17 , i32 21 , i32 25 , i32 29 >
313
+ %d = zext <8 x i8 > %c to <8 x i32 >
314
+ ret <8 x i32 > %d
315
+ }
316
+
317
+ define <8 x i32 > @v8i32_261014 (<16 x i8 > %a , <16 x i8 > %b ) {
318
+ ; CHECK-LABEL: v8i32_261014:
319
+ ; CHECK: // %bb.0:
320
+ ; CHECK-NEXT: uzp2 v0.8h, v0.8h, v1.8h
321
+ ; CHECK-NEXT: bic v0.8h, #255, lsl #8
322
+ ; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
323
+ ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
324
+ ; CHECK-NEXT: ret
325
+ %c = shufflevector <16 x i8 > %a , <16 x i8 > %b , <8 x i32 > <i32 2 , i32 6 , i32 10 , i32 14 , i32 18 , i32 22 , i32 26 , i32 30 >
326
+ %d = zext <8 x i8 > %c to <8 x i32 >
327
+ ret <8 x i32 > %d
328
+ }
329
+
330
+ define <8 x i32 > @v8i32_371115 (<16 x i8 > %a , <16 x i8 > %b ) {
331
+ ; CHECK-LABEL: v8i32_371115:
332
+ ; CHECK: // %bb.0:
333
+ ; CHECK-NEXT: uzp2 v0.8h, v0.8h, v1.8h
334
+ ; CHECK-NEXT: ushr v0.8h, v0.8h, #8
335
+ ; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
336
+ ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
337
+ ; CHECK-NEXT: ret
338
+ %c = shufflevector <16 x i8 > %a , <16 x i8 > %b , <8 x i32 > <i32 3 , i32 7 , i32 11 , i32 15 , i32 19 , i32 23 , i32 27 , i32 31 >
339
+ %d = zext <8 x i8 > %c to <8 x i32 >
340
+ ret <8 x i32 > %d
341
+ }
342
+
343
+
266
344
define <8 x i64 > @zext_add (<32 x i16 > %l ) {
267
345
; CHECK-LABEL: zext_add:
268
346
; CHECK: // %bb.0:
0 commit comments