@@ -255,3 +255,31 @@ define <64 x i8> @concat_trunc_packuswb_512(<32 x i16> %a0, <32 x i16> %a1) noun
255
255
%5 = shufflevector <32 x i8 > %3 , <32 x i8 > %4 , <64 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 32 , i32 33 , i32 34 , i32 35 , i32 36 , i32 37 , i32 38 , i32 39 , i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 40 , i32 41 , i32 42 , i32 43 , i32 44 , i32 45 , i32 46 , i32 47 , i32 16 , i32 17 , i32 18 , i32 19 , i32 20 , i32 21 , i32 22 , i32 23 , i32 48 , i32 49 , i32 50 , i32 51 , i32 52 , i32 53 , i32 54 , i32 55 , i32 24 , i32 25 , i32 26 , i32 27 , i32 28 , i32 29 , i32 30 , i32 31 , i32 56 , i32 57 , i32 58 , i32 59 , i32 60 , i32 61 , i32 62 , i32 63 >
256
256
ret <64 x i8 > %5
257
257
}
258
+
259
+ define <32 x i16 > @concat_packsswd_int_2x256 (<8 x i32 > %a0 , <8 x i32 > %a1 , <8 x i32 > %a2 , <8 x i32 > %a3 ) {
260
+ ; AVX512-LABEL: concat_packsswd_int_2x256:
261
+ ; AVX512: # %bb.0:
262
+ ; AVX512-NEXT: vpackssdw %ymm1, %ymm0, %ymm0
263
+ ; AVX512-NEXT: vpackssdw %ymm3, %ymm2, %ymm1
264
+ ; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
265
+ ; AVX512-NEXT: retq
266
+ %lo = tail call <16 x i16 > @llvm.x86.avx2.packssdw (<8 x i32 > %a0 , <8 x i32 > %a1 )
267
+ %hi = tail call <16 x i16 > @llvm.x86.avx2.packssdw (<8 x i32 > %a2 , <8 x i32 > %a3 )
268
+ %res = shufflevector <16 x i16 > %lo , <16 x i16 > %hi , <32 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 16 , i32 17 , i32 18 , i32 19 , i32 20 , i32 21 , i32 22 , i32 23 , i32 24 , i32 25 , i32 26 , i32 27 , i32 28 , i32 29 , i32 30 , i32 31 >
269
+ ret <32 x i16 > %res
270
+ }
271
+ declare <16 x i16 > @llvm.x86.avx2.packssdw (<8 x i32 >, <8 x i32 >)
272
+
273
+ define <32 x i16 > @concat_packuswd_int_2x256 (<8 x i32 > %a0 , <8 x i32 > %a1 , <8 x i32 > %a2 , <8 x i32 > %a3 ) {
274
+ ; AVX512-LABEL: concat_packuswd_int_2x256:
275
+ ; AVX512: # %bb.0:
276
+ ; AVX512-NEXT: vpackusdw %ymm1, %ymm0, %ymm0
277
+ ; AVX512-NEXT: vpackusdw %ymm3, %ymm2, %ymm1
278
+ ; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
279
+ ; AVX512-NEXT: retq
280
+ %lo = tail call <16 x i16 > @llvm.x86.avx2.packusdw (<8 x i32 > %a0 , <8 x i32 > %a1 )
281
+ %hi = tail call <16 x i16 > @llvm.x86.avx2.packusdw (<8 x i32 > %a2 , <8 x i32 > %a3 )
282
+ %res = shufflevector <16 x i16 > %lo , <16 x i16 > %hi , <32 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 16 , i32 17 , i32 18 , i32 19 , i32 20 , i32 21 , i32 22 , i32 23 , i32 24 , i32 25 , i32 26 , i32 27 , i32 28 , i32 29 , i32 30 , i32 31 >
283
+ ret <32 x i16 > %res
284
+ }
285
+ declare <16 x i16 > @llvm.x86.avx2.packusdw (<8 x i32 >, <8 x i32 >)
0 commit comments