Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/X86/vector-shift-ashr-512.ll @ 100:7d135dc70f03 LLVM 3.9
LLVM 3.9
author | Miyagi Mitsuki <e135756@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2016 22:53:40 +0900 |
parents | afa8332a0e37 |
children | 1172e4bd9c6f |
comparison
equal
deleted
inserted
replaced
96:6418606d0ead | 100:7d135dc70f03 |
---|---|
1 ; TODO: Add AVX512BW shift support | 1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
2 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl -mattr=+avx512dq | FileCheck %s --check-prefix=ALL --check-prefix=AVX512 --check-prefix=AVX512DQ | 2 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl -mattr=+avx512dq | FileCheck %s --check-prefix=ALL --check-prefix=AVX512 --check-prefix=AVX512DQ |
3 | 3 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl -mattr=+avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=AVX512 --check-prefix=AVX512BW |
4 ; | 4 ; |
5 ; Variable Shifts | 5 ; Variable Shifts |
6 ; | 6 ; |
7 | 7 |
8 define <8 x i64> @var_shift_v8i64(<8 x i64> %a, <8 x i64> %b) nounwind { | 8 define <8 x i64> @var_shift_v8i64(<8 x i64> %a, <8 x i64> %b) nounwind { |
22 %shift = ashr <16 x i32> %a, %b | 22 %shift = ashr <16 x i32> %a, %b |
23 ret <16 x i32> %shift | 23 ret <16 x i32> %shift |
24 } | 24 } |
25 | 25 |
26 define <32 x i16> @var_shift_v32i16(<32 x i16> %a, <32 x i16> %b) nounwind { | 26 define <32 x i16> @var_shift_v32i16(<32 x i16> %a, <32 x i16> %b) nounwind { |
27 ; ALL-LABEL: var_shift_v32i16: | 27 ; AVX512DQ-LABEL: var_shift_v32i16: |
28 ; ALL: ## BB#0: | 28 ; AVX512DQ: ## BB#0: |
29 ; ALL-NEXT: vpxor %ymm4, %ymm4, %ymm4 | 29 ; AVX512DQ-NEXT: vpxor %ymm4, %ymm4, %ymm4 |
30 ; ALL-NEXT: vpunpckhwd {{.*#+}} ymm5 = ymm2[4],ymm4[4],ymm2[5],ymm4[5],ymm2[6],ymm4[6],ymm2[7],ymm4[7],ymm2[12],ymm4[12],ymm2[13],ymm4[13],ymm2[14],ymm4[14],ymm2[15],ymm4[15] | 30 ; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} ymm5 = ymm2[4],ymm4[4],ymm2[5],ymm4[5],ymm2[6],ymm4[6],ymm2[7],ymm4[7],ymm2[12],ymm4[12],ymm2[13],ymm4[13],ymm2[14],ymm4[14],ymm2[15],ymm4[15] |
31 ; ALL-NEXT: vpunpckhwd {{.*#+}} ymm6 = ymm0[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15] | 31 ; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} ymm6 = ymm0[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15] |
32 ; ALL-NEXT: vpsravd %ymm5, %ymm6, %ymm5 | 32 ; AVX512DQ-NEXT: vpsravd %ymm5, %ymm6, %ymm5 |
33 ; ALL-NEXT: vpsrld $16, %ymm5, %ymm5 | 33 ; AVX512DQ-NEXT: vpsrld $16, %ymm5, %ymm5 |
34 ; ALL-NEXT: vpunpcklwd {{.*#+}} ymm2 = ymm2[0],ymm4[0],ymm2[1],ymm4[1],ymm2[2],ymm4[2],ymm2[3],ymm4[3],ymm2[8],ymm4[8],ymm2[9],ymm4[9],ymm2[10],ymm4[10],ymm2[11],ymm4[11] | 34 ; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} ymm2 = ymm2[0],ymm4[0],ymm2[1],ymm4[1],ymm2[2],ymm4[2],ymm2[3],ymm4[3],ymm2[8],ymm4[8],ymm2[9],ymm4[9],ymm2[10],ymm4[10],ymm2[11],ymm4[11] |
35 ; ALL-NEXT: vpunpcklwd {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11] | 35 ; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11] |
36 ; ALL-NEXT: vpsravd %ymm2, %ymm0, %ymm0 | 36 ; AVX512DQ-NEXT: vpsravd %ymm2, %ymm0, %ymm0 |
37 ; ALL-NEXT: vpsrld $16, %ymm0, %ymm0 | 37 ; AVX512DQ-NEXT: vpsrld $16, %ymm0, %ymm0 |
38 ; ALL-NEXT: vpackusdw %ymm5, %ymm0, %ymm0 | 38 ; AVX512DQ-NEXT: vpackusdw %ymm5, %ymm0, %ymm0 |
39 ; ALL-NEXT: vpunpckhwd {{.*#+}} ymm2 = ymm3[4],ymm4[4],ymm3[5],ymm4[5],ymm3[6],ymm4[6],ymm3[7],ymm4[7],ymm3[12],ymm4[12],ymm3[13],ymm4[13],ymm3[14],ymm4[14],ymm3[15],ymm4[15] | 39 ; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} ymm2 = ymm3[4],ymm4[4],ymm3[5],ymm4[5],ymm3[6],ymm4[6],ymm3[7],ymm4[7],ymm3[12],ymm4[12],ymm3[13],ymm4[13],ymm3[14],ymm4[14],ymm3[15],ymm4[15] |
40 ; ALL-NEXT: vpunpckhwd {{.*#+}} ymm5 = ymm1[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15] | 40 ; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} ymm5 = ymm1[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15] |
41 ; ALL-NEXT: vpsravd %ymm2, %ymm5, %ymm2 | 41 ; AVX512DQ-NEXT: vpsravd %ymm2, %ymm5, %ymm2 |
42 ; ALL-NEXT: vpsrld $16, %ymm2, %ymm2 | 42 ; AVX512DQ-NEXT: vpsrld $16, %ymm2, %ymm2 |
43 ; ALL-NEXT: vpunpcklwd {{.*#+}} ymm3 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[8],ymm4[8],ymm3[9],ymm4[9],ymm3[10],ymm4[10],ymm3[11],ymm4[11] | 43 ; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} ymm3 = ymm3[0],ymm4[0],ymm3[1],ymm4[1],ymm3[2],ymm4[2],ymm3[3],ymm4[3],ymm3[8],ymm4[8],ymm3[9],ymm4[9],ymm3[10],ymm4[10],ymm3[11],ymm4[11] |
44 ; ALL-NEXT: vpunpcklwd {{.*#+}} ymm1 = ymm1[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11] | 44 ; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} ymm1 = ymm1[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11] |
45 ; ALL-NEXT: vpsravd %ymm3, %ymm1, %ymm1 | 45 ; AVX512DQ-NEXT: vpsravd %ymm3, %ymm1, %ymm1 |
46 ; ALL-NEXT: vpsrld $16, %ymm1, %ymm1 | 46 ; AVX512DQ-NEXT: vpsrld $16, %ymm1, %ymm1 |
47 ; ALL-NEXT: vpackusdw %ymm2, %ymm1, %ymm1 | 47 ; AVX512DQ-NEXT: vpackusdw %ymm2, %ymm1, %ymm1 |
48 ; ALL-NEXT: retq | 48 ; AVX512DQ-NEXT: retq |
49 ; | |
50 ; AVX512BW-LABEL: var_shift_v32i16: | |
51 ; AVX512BW: ## BB#0: | |
52 ; AVX512BW-NEXT: vpsravw %zmm1, %zmm0, %zmm0 | |
53 ; AVX512BW-NEXT: retq | |
49 %shift = ashr <32 x i16> %a, %b | 54 %shift = ashr <32 x i16> %a, %b |
50 ret <32 x i16> %shift | 55 ret <32 x i16> %shift |
51 } | 56 } |
52 | 57 |
53 define <64 x i8> @var_shift_v64i8(<64 x i8> %a, <64 x i8> %b) nounwind { | 58 define <64 x i8> @var_shift_v64i8(<64 x i8> %a, <64 x i8> %b) nounwind { |
54 ; ALL-LABEL: var_shift_v64i8: | 59 ; AVX512DQ-LABEL: var_shift_v64i8: |
55 ; ALL: ## BB#0: | 60 ; AVX512DQ: ## BB#0: |
56 ; ALL-NEXT: vpsllw $5, %ymm2, %ymm2 | 61 ; AVX512DQ-NEXT: vpsllw $5, %ymm2, %ymm2 |
57 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11],ymm0[12],ymm2[12],ymm0[13],ymm2[13],ymm0[14],ymm2[14],ymm0[15],ymm2[15],ymm0[24],ymm2[24],ymm0[25],ymm2[25],ymm0[26],ymm2[26],ymm0[27],ymm2[27],ymm0[28],ymm2[28],ymm0[29],ymm2[29],ymm0[30],ymm2[30],ymm0[31],ymm2[31] | 62 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11],ymm0[12],ymm2[12],ymm0[13],ymm2[13],ymm0[14],ymm2[14],ymm0[15],ymm2[15],ymm0[24],ymm2[24],ymm0[25],ymm2[25],ymm0[26],ymm2[26],ymm0[27],ymm2[27],ymm0[28],ymm2[28],ymm0[29],ymm2[29],ymm0[30],ymm2[30],ymm0[31],ymm2[31] |
58 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm5 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] | 63 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm5 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] |
59 ; ALL-NEXT: vpsraw $4, %ymm5, %ymm6 | 64 ; AVX512DQ-NEXT: vpsraw $4, %ymm5, %ymm6 |
60 ; ALL-NEXT: vpblendvb %ymm4, %ymm6, %ymm5, %ymm5 | 65 ; AVX512DQ-NEXT: vpblendvb %ymm4, %ymm6, %ymm5, %ymm5 |
61 ; ALL-NEXT: vpsraw $2, %ymm5, %ymm6 | 66 ; AVX512DQ-NEXT: vpsraw $2, %ymm5, %ymm6 |
62 ; ALL-NEXT: vpaddw %ymm4, %ymm4, %ymm4 | 67 ; AVX512DQ-NEXT: vpaddw %ymm4, %ymm4, %ymm4 |
63 ; ALL-NEXT: vpblendvb %ymm4, %ymm6, %ymm5, %ymm5 | 68 ; AVX512DQ-NEXT: vpblendvb %ymm4, %ymm6, %ymm5, %ymm5 |
64 ; ALL-NEXT: vpsraw $1, %ymm5, %ymm6 | 69 ; AVX512DQ-NEXT: vpsraw $1, %ymm5, %ymm6 |
65 ; ALL-NEXT: vpaddw %ymm4, %ymm4, %ymm4 | 70 ; AVX512DQ-NEXT: vpaddw %ymm4, %ymm4, %ymm4 |
66 ; ALL-NEXT: vpblendvb %ymm4, %ymm6, %ymm5, %ymm4 | 71 ; AVX512DQ-NEXT: vpblendvb %ymm4, %ymm6, %ymm5, %ymm4 |
67 ; ALL-NEXT: vpsrlw $8, %ymm4, %ymm4 | 72 ; AVX512DQ-NEXT: vpsrlw $8, %ymm4, %ymm4 |
68 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23] | 73 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23] |
69 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] | 74 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] |
70 ; ALL-NEXT: vpsraw $4, %ymm0, %ymm5 | 75 ; AVX512DQ-NEXT: vpsraw $4, %ymm0, %ymm5 |
71 ; ALL-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 | 76 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 |
72 ; ALL-NEXT: vpsraw $2, %ymm0, %ymm5 | 77 ; AVX512DQ-NEXT: vpsraw $2, %ymm0, %ymm5 |
73 ; ALL-NEXT: vpaddw %ymm2, %ymm2, %ymm2 | 78 ; AVX512DQ-NEXT: vpaddw %ymm2, %ymm2, %ymm2 |
74 ; ALL-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 | 79 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 |
75 ; ALL-NEXT: vpsraw $1, %ymm0, %ymm5 | 80 ; AVX512DQ-NEXT: vpsraw $1, %ymm0, %ymm5 |
76 ; ALL-NEXT: vpaddw %ymm2, %ymm2, %ymm2 | 81 ; AVX512DQ-NEXT: vpaddw %ymm2, %ymm2, %ymm2 |
77 ; ALL-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 | 82 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 |
78 ; ALL-NEXT: vpsrlw $8, %ymm0, %ymm0 | 83 ; AVX512DQ-NEXT: vpsrlw $8, %ymm0, %ymm0 |
79 ; ALL-NEXT: vpackuswb %ymm4, %ymm0, %ymm0 | 84 ; AVX512DQ-NEXT: vpackuswb %ymm4, %ymm0, %ymm0 |
80 ; ALL-NEXT: vpsllw $5, %ymm3, %ymm2 | 85 ; AVX512DQ-NEXT: vpsllw $5, %ymm3, %ymm2 |
81 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11],ymm0[12],ymm2[12],ymm0[13],ymm2[13],ymm0[14],ymm2[14],ymm0[15],ymm2[15],ymm0[24],ymm2[24],ymm0[25],ymm2[25],ymm0[26],ymm2[26],ymm0[27],ymm2[27],ymm0[28],ymm2[28],ymm0[29],ymm2[29],ymm0[30],ymm2[30],ymm0[31],ymm2[31] | 86 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11],ymm0[12],ymm2[12],ymm0[13],ymm2[13],ymm0[14],ymm2[14],ymm0[15],ymm2[15],ymm0[24],ymm2[24],ymm0[25],ymm2[25],ymm0[26],ymm2[26],ymm0[27],ymm2[27],ymm0[28],ymm2[28],ymm0[29],ymm2[29],ymm0[30],ymm2[30],ymm0[31],ymm2[31] |
82 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31] | 87 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31] |
83 ; ALL-NEXT: vpsraw $4, %ymm4, %ymm5 | 88 ; AVX512DQ-NEXT: vpsraw $4, %ymm4, %ymm5 |
84 ; ALL-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm4 | 89 ; AVX512DQ-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm4 |
85 ; ALL-NEXT: vpsraw $2, %ymm4, %ymm5 | 90 ; AVX512DQ-NEXT: vpsraw $2, %ymm4, %ymm5 |
86 ; ALL-NEXT: vpaddw %ymm3, %ymm3, %ymm3 | 91 ; AVX512DQ-NEXT: vpaddw %ymm3, %ymm3, %ymm3 |
87 ; ALL-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm4 | 92 ; AVX512DQ-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm4 |
88 ; ALL-NEXT: vpsraw $1, %ymm4, %ymm5 | 93 ; AVX512DQ-NEXT: vpsraw $1, %ymm4, %ymm5 |
89 ; ALL-NEXT: vpaddw %ymm3, %ymm3, %ymm3 | 94 ; AVX512DQ-NEXT: vpaddw %ymm3, %ymm3, %ymm3 |
90 ; ALL-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm3 | 95 ; AVX512DQ-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm3 |
91 ; ALL-NEXT: vpsrlw $8, %ymm3, %ymm3 | 96 ; AVX512DQ-NEXT: vpsrlw $8, %ymm3, %ymm3 |
92 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23] | 97 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23] |
93 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23] | 98 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23] |
94 ; ALL-NEXT: vpsraw $4, %ymm1, %ymm4 | 99 ; AVX512DQ-NEXT: vpsraw $4, %ymm1, %ymm4 |
95 ; ALL-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 | 100 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 |
96 ; ALL-NEXT: vpsraw $2, %ymm1, %ymm4 | 101 ; AVX512DQ-NEXT: vpsraw $2, %ymm1, %ymm4 |
97 ; ALL-NEXT: vpaddw %ymm2, %ymm2, %ymm2 | 102 ; AVX512DQ-NEXT: vpaddw %ymm2, %ymm2, %ymm2 |
98 ; ALL-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 | 103 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 |
99 ; ALL-NEXT: vpsraw $1, %ymm1, %ymm4 | 104 ; AVX512DQ-NEXT: vpsraw $1, %ymm1, %ymm4 |
100 ; ALL-NEXT: vpaddw %ymm2, %ymm2, %ymm2 | 105 ; AVX512DQ-NEXT: vpaddw %ymm2, %ymm2, %ymm2 |
101 ; ALL-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 | 106 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 |
102 ; ALL-NEXT: vpsrlw $8, %ymm1, %ymm1 | 107 ; AVX512DQ-NEXT: vpsrlw $8, %ymm1, %ymm1 |
103 ; ALL-NEXT: vpackuswb %ymm3, %ymm1, %ymm1 | 108 ; AVX512DQ-NEXT: vpackuswb %ymm3, %ymm1, %ymm1 |
104 ; ALL-NEXT: retq | 109 ; AVX512DQ-NEXT: retq |
105 %shift = ashr <64 x i8> %a, %b | 110 %shift = ashr <64 x i8> %a, %b |
106 ret <64 x i8> %shift | 111 ret <64 x i8> %shift |
107 } | 112 } |
108 | 113 |
109 ; | 114 ; |
131 %shift = ashr <16 x i32> %a, %splat | 136 %shift = ashr <16 x i32> %a, %splat |
132 ret <16 x i32> %shift | 137 ret <16 x i32> %shift |
133 } | 138 } |
134 | 139 |
135 define <32 x i16> @splatvar_shift_v32i16(<32 x i16> %a, <32 x i16> %b) nounwind { | 140 define <32 x i16> @splatvar_shift_v32i16(<32 x i16> %a, <32 x i16> %b) nounwind { |
136 ; ALL-LABEL: splatvar_shift_v32i16: | 141 ; AVX512DQ-LABEL: splatvar_shift_v32i16: |
137 ; ALL: ## BB#0: | 142 ; AVX512DQ: ## BB#0: |
138 ; ALL-NEXT: vmovd %xmm2, %eax | 143 ; AVX512DQ-NEXT: vmovd %xmm2, %eax |
139 ; ALL-NEXT: movzwl %ax, %eax | 144 ; AVX512DQ-NEXT: movzwl %ax, %eax |
140 ; ALL-NEXT: vmovd %eax, %xmm2 | 145 ; AVX512DQ-NEXT: vmovd %eax, %xmm2 |
141 ; ALL-NEXT: vpsraw %xmm2, %ymm0, %ymm0 | 146 ; AVX512DQ-NEXT: vpsraw %xmm2, %ymm0, %ymm0 |
142 ; ALL-NEXT: vpsraw %xmm2, %ymm1, %ymm1 | 147 ; AVX512DQ-NEXT: vpsraw %xmm2, %ymm1, %ymm1 |
143 ; ALL-NEXT: retq | 148 ; AVX512DQ-NEXT: retq |
149 ; | |
150 ; AVX512BW-LABEL: splatvar_shift_v32i16: | |
151 ; AVX512BW: ## BB#0: | |
152 ; AVX512BW-NEXT: vmovd %xmm1, %eax | |
153 ; AVX512BW-NEXT: movzwl %ax, %eax | |
154 ; AVX512BW-NEXT: vmovd %eax, %xmm1 | |
155 ; AVX512BW-NEXT: vpsraw %xmm1, %zmm0, %zmm0 | |
156 ; AVX512BW-NEXT: retq | |
144 %splat = shufflevector <32 x i16> %b, <32 x i16> undef, <32 x i32> zeroinitializer | 157 %splat = shufflevector <32 x i16> %b, <32 x i16> undef, <32 x i32> zeroinitializer |
145 %shift = ashr <32 x i16> %a, %splat | 158 %shift = ashr <32 x i16> %a, %splat |
146 ret <32 x i16> %shift | 159 ret <32 x i16> %shift |
147 } | 160 } |
148 | 161 |
149 define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, <64 x i8> %b) nounwind { | 162 define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, <64 x i8> %b) nounwind { |
150 ; ALL-LABEL: splatvar_shift_v64i8: | 163 ; AVX512DQ-LABEL: splatvar_shift_v64i8: |
151 ; ALL: ## BB#0: | 164 ; AVX512DQ: ## BB#0: |
152 ; ALL-NEXT: vpbroadcastb %xmm2, %ymm2 | 165 ; AVX512DQ-NEXT: vpbroadcastb %xmm2, %ymm2 |
153 ; ALL-NEXT: vpsllw $5, %ymm2, %ymm2 | 166 ; AVX512DQ-NEXT: vpsllw $5, %ymm2, %ymm2 |
154 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11],ymm0[12],ymm2[12],ymm0[13],ymm2[13],ymm0[14],ymm2[14],ymm0[15],ymm2[15],ymm0[24],ymm2[24],ymm0[25],ymm2[25],ymm0[26],ymm2[26],ymm0[27],ymm2[27],ymm0[28],ymm2[28],ymm0[29],ymm2[29],ymm0[30],ymm2[30],ymm0[31],ymm2[31] | 167 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11],ymm0[12],ymm2[12],ymm0[13],ymm2[13],ymm0[14],ymm2[14],ymm0[15],ymm2[15],ymm0[24],ymm2[24],ymm0[25],ymm2[25],ymm0[26],ymm2[26],ymm0[27],ymm2[27],ymm0[28],ymm2[28],ymm0[29],ymm2[29],ymm0[30],ymm2[30],ymm0[31],ymm2[31] |
155 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] | 168 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] |
156 ; ALL-NEXT: vpsraw $4, %ymm4, %ymm5 | 169 ; AVX512DQ-NEXT: vpsraw $4, %ymm4, %ymm5 |
157 ; ALL-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm4 | 170 ; AVX512DQ-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm4 |
158 ; ALL-NEXT: vpsraw $2, %ymm4, %ymm5 | 171 ; AVX512DQ-NEXT: vpsraw $2, %ymm4, %ymm5 |
159 ; ALL-NEXT: vpaddw %ymm3, %ymm3, %ymm6 | 172 ; AVX512DQ-NEXT: vpaddw %ymm3, %ymm3, %ymm6 |
160 ; ALL-NEXT: vpblendvb %ymm6, %ymm5, %ymm4, %ymm4 | 173 ; AVX512DQ-NEXT: vpblendvb %ymm6, %ymm5, %ymm4, %ymm4 |
161 ; ALL-NEXT: vpsraw $1, %ymm4, %ymm5 | 174 ; AVX512DQ-NEXT: vpsraw $1, %ymm4, %ymm5 |
162 ; ALL-NEXT: vpaddw %ymm6, %ymm6, %ymm7 | 175 ; AVX512DQ-NEXT: vpaddw %ymm6, %ymm6, %ymm7 |
163 ; ALL-NEXT: vpblendvb %ymm7, %ymm5, %ymm4, %ymm4 | 176 ; AVX512DQ-NEXT: vpblendvb %ymm7, %ymm5, %ymm4, %ymm4 |
164 ; ALL-NEXT: vpsrlw $8, %ymm4, %ymm4 | 177 ; AVX512DQ-NEXT: vpsrlw $8, %ymm4, %ymm4 |
165 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23] | 178 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23] |
166 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] | 179 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] |
167 ; ALL-NEXT: vpsraw $4, %ymm0, %ymm5 | 180 ; AVX512DQ-NEXT: vpsraw $4, %ymm0, %ymm5 |
168 ; ALL-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 | 181 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 |
169 ; ALL-NEXT: vpsraw $2, %ymm0, %ymm5 | 182 ; AVX512DQ-NEXT: vpsraw $2, %ymm0, %ymm5 |
170 ; ALL-NEXT: vpaddw %ymm2, %ymm2, %ymm8 | 183 ; AVX512DQ-NEXT: vpaddw %ymm2, %ymm2, %ymm8 |
171 ; ALL-NEXT: vpblendvb %ymm8, %ymm5, %ymm0, %ymm0 | 184 ; AVX512DQ-NEXT: vpblendvb %ymm8, %ymm5, %ymm0, %ymm0 |
172 ; ALL-NEXT: vpsraw $1, %ymm0, %ymm5 | 185 ; AVX512DQ-NEXT: vpsraw $1, %ymm0, %ymm5 |
173 ; ALL-NEXT: vpaddw %ymm8, %ymm8, %ymm9 | 186 ; AVX512DQ-NEXT: vpaddw %ymm8, %ymm8, %ymm9 |
174 ; ALL-NEXT: vpblendvb %ymm9, %ymm5, %ymm0, %ymm0 | 187 ; AVX512DQ-NEXT: vpblendvb %ymm9, %ymm5, %ymm0, %ymm0 |
175 ; ALL-NEXT: vpsrlw $8, %ymm0, %ymm0 | 188 ; AVX512DQ-NEXT: vpsrlw $8, %ymm0, %ymm0 |
176 ; ALL-NEXT: vpackuswb %ymm4, %ymm0, %ymm0 | 189 ; AVX512DQ-NEXT: vpackuswb %ymm4, %ymm0, %ymm0 |
177 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31] | 190 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31] |
178 ; ALL-NEXT: vpsraw $4, %ymm4, %ymm5 | 191 ; AVX512DQ-NEXT: vpsraw $4, %ymm4, %ymm5 |
179 ; ALL-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm3 | 192 ; AVX512DQ-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm3 |
180 ; ALL-NEXT: vpsraw $2, %ymm3, %ymm4 | 193 ; AVX512DQ-NEXT: vpsraw $2, %ymm3, %ymm4 |
181 ; ALL-NEXT: vpblendvb %ymm6, %ymm4, %ymm3, %ymm3 | 194 ; AVX512DQ-NEXT: vpblendvb %ymm6, %ymm4, %ymm3, %ymm3 |
182 ; ALL-NEXT: vpsraw $1, %ymm3, %ymm4 | 195 ; AVX512DQ-NEXT: vpsraw $1, %ymm3, %ymm4 |
183 ; ALL-NEXT: vpblendvb %ymm7, %ymm4, %ymm3, %ymm3 | 196 ; AVX512DQ-NEXT: vpblendvb %ymm7, %ymm4, %ymm3, %ymm3 |
184 ; ALL-NEXT: vpsrlw $8, %ymm3, %ymm3 | 197 ; AVX512DQ-NEXT: vpsrlw $8, %ymm3, %ymm3 |
185 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23] | 198 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23] |
186 ; ALL-NEXT: vpsraw $4, %ymm1, %ymm4 | 199 ; AVX512DQ-NEXT: vpsraw $4, %ymm1, %ymm4 |
187 ; ALL-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 | 200 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 |
188 ; ALL-NEXT: vpsraw $2, %ymm1, %ymm2 | 201 ; AVX512DQ-NEXT: vpsraw $2, %ymm1, %ymm2 |
189 ; ALL-NEXT: vpblendvb %ymm8, %ymm2, %ymm1, %ymm1 | 202 ; AVX512DQ-NEXT: vpblendvb %ymm8, %ymm2, %ymm1, %ymm1 |
190 ; ALL-NEXT: vpsraw $1, %ymm1, %ymm2 | 203 ; AVX512DQ-NEXT: vpsraw $1, %ymm1, %ymm2 |
191 ; ALL-NEXT: vpblendvb %ymm9, %ymm2, %ymm1, %ymm1 | 204 ; AVX512DQ-NEXT: vpblendvb %ymm9, %ymm2, %ymm1, %ymm1 |
192 ; ALL-NEXT: vpsrlw $8, %ymm1, %ymm1 | 205 ; AVX512DQ-NEXT: vpsrlw $8, %ymm1, %ymm1 |
193 ; ALL-NEXT: vpackuswb %ymm3, %ymm1, %ymm1 | 206 ; AVX512DQ-NEXT: vpackuswb %ymm3, %ymm1, %ymm1 |
194 ; ALL-NEXT: retq | 207 ; AVX512DQ-NEXT: retq |
195 %splat = shufflevector <64 x i8> %b, <64 x i8> undef, <64 x i32> zeroinitializer | 208 %splat = shufflevector <64 x i8> %b, <64 x i8> undef, <64 x i32> zeroinitializer |
196 %shift = ashr <64 x i8> %a, %splat | 209 %shift = ashr <64 x i8> %a, %splat |
197 ret <64 x i8> %shift | 210 ret <64 x i8> %shift |
198 } | 211 } |
199 | 212 |
218 %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 8, i32 7, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 8, i32 7> | 231 %shift = ashr <16 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 8, i32 7, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 8, i32 7> |
219 ret <16 x i32> %shift | 232 ret <16 x i32> %shift |
220 } | 233 } |
221 | 234 |
222 define <32 x i16> @constant_shift_v32i16(<32 x i16> %a) nounwind { | 235 define <32 x i16> @constant_shift_v32i16(<32 x i16> %a) nounwind { |
223 ; ALL-LABEL: constant_shift_v32i16: | 236 ; AVX512DQ-LABEL: constant_shift_v32i16: |
224 ; ALL: ## BB#0: | 237 ; AVX512DQ: ## BB#0: |
225 ; ALL-NEXT: vpxor %ymm2, %ymm2, %ymm2 | 238 ; AVX512DQ-NEXT: vpxor %ymm2, %ymm2, %ymm2 |
226 ; ALL-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] | 239 ; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] |
227 ; ALL-NEXT: vpunpckhwd {{.*#+}} ymm4 = ymm3[4],ymm2[4],ymm3[5],ymm2[5],ymm3[6],ymm2[6],ymm3[7],ymm2[7],ymm3[12],ymm2[12],ymm3[13],ymm2[13],ymm3[14],ymm2[14],ymm3[15],ymm2[15] | 240 ; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} ymm4 = ymm3[4],ymm2[4],ymm3[5],ymm2[5],ymm3[6],ymm2[6],ymm3[7],ymm2[7],ymm3[12],ymm2[12],ymm3[13],ymm2[13],ymm3[14],ymm2[14],ymm3[15],ymm2[15] |
228 ; ALL-NEXT: vpunpckhwd {{.*#+}} ymm5 = ymm0[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15] | 241 ; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} ymm5 = ymm0[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15] |
229 ; ALL-NEXT: vpsravd %ymm4, %ymm5, %ymm5 | 242 ; AVX512DQ-NEXT: vpsravd %ymm4, %ymm5, %ymm5 |
230 ; ALL-NEXT: vpsrld $16, %ymm5, %ymm5 | 243 ; AVX512DQ-NEXT: vpsrld $16, %ymm5, %ymm5 |
231 ; ALL-NEXT: vpunpcklwd {{.*#+}} ymm2 = ymm3[0],ymm2[0],ymm3[1],ymm2[1],ymm3[2],ymm2[2],ymm3[3],ymm2[3],ymm3[8],ymm2[8],ymm3[9],ymm2[9],ymm3[10],ymm2[10],ymm3[11],ymm2[11] | 244 ; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} ymm2 = ymm3[0],ymm2[0],ymm3[1],ymm2[1],ymm3[2],ymm2[2],ymm3[3],ymm2[3],ymm3[8],ymm2[8],ymm3[9],ymm2[9],ymm3[10],ymm2[10],ymm3[11],ymm2[11] |
232 ; ALL-NEXT: vpunpcklwd {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11] | 245 ; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11] |
233 ; ALL-NEXT: vpsravd %ymm2, %ymm0, %ymm0 | 246 ; AVX512DQ-NEXT: vpsravd %ymm2, %ymm0, %ymm0 |
234 ; ALL-NEXT: vpsrld $16, %ymm0, %ymm0 | 247 ; AVX512DQ-NEXT: vpsrld $16, %ymm0, %ymm0 |
235 ; ALL-NEXT: vpackusdw %ymm5, %ymm0, %ymm0 | 248 ; AVX512DQ-NEXT: vpackusdw %ymm5, %ymm0, %ymm0 |
236 ; ALL-NEXT: vpunpckhwd {{.*#+}} ymm3 = ymm1[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15] | 249 ; AVX512DQ-NEXT: vpunpckhwd {{.*#+}} ymm3 = ymm1[4,4,5,5,6,6,7,7,12,12,13,13,14,14,15,15] |
237 ; ALL-NEXT: vpsravd %ymm4, %ymm3, %ymm3 | 250 ; AVX512DQ-NEXT: vpsravd %ymm4, %ymm3, %ymm3 |
238 ; ALL-NEXT: vpsrld $16, %ymm3, %ymm3 | 251 ; AVX512DQ-NEXT: vpsrld $16, %ymm3, %ymm3 |
239 ; ALL-NEXT: vpunpcklwd {{.*#+}} ymm1 = ymm1[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11] | 252 ; AVX512DQ-NEXT: vpunpcklwd {{.*#+}} ymm1 = ymm1[0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11] |
240 ; ALL-NEXT: vpsravd %ymm2, %ymm1, %ymm1 | 253 ; AVX512DQ-NEXT: vpsravd %ymm2, %ymm1, %ymm1 |
241 ; ALL-NEXT: vpsrld $16, %ymm1, %ymm1 | 254 ; AVX512DQ-NEXT: vpsrld $16, %ymm1, %ymm1 |
242 ; ALL-NEXT: vpackusdw %ymm3, %ymm1, %ymm1 | 255 ; AVX512DQ-NEXT: vpackusdw %ymm3, %ymm1, %ymm1 |
243 ; ALL-NEXT: retq | 256 ; AVX512DQ-NEXT: retq |
257 ; | |
258 ; AVX512BW-LABEL: constant_shift_v32i16: | |
259 ; AVX512BW: ## BB#0: | |
260 ; AVX512BW-NEXT: vpsravw {{.*}}(%rip), %zmm0, %zmm0 | |
261 ; AVX512BW-NEXT: retq | |
244 %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15> | 262 %shift = ashr <32 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15> |
245 ret <32 x i16> %shift | 263 ret <32 x i16> %shift |
246 } | 264 } |
247 | 265 |
248 define <64 x i8> @constant_shift_v64i8(<64 x i8> %a) nounwind { | 266 define <64 x i8> @constant_shift_v64i8(<64 x i8> %a) nounwind { |
249 ; ALL-LABEL: constant_shift_v64i8: | 267 ; AVX512DQ-LABEL: constant_shift_v64i8: |
250 ; ALL: ## BB#0: | 268 ; AVX512DQ: ## BB#0: |
251 ; ALL-NEXT: vmovdqa {{.*#+}} ymm2 = [0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0] | 269 ; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm2 = [0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0] |
252 ; ALL-NEXT: vpsllw $5, %ymm2, %ymm2 | 270 ; AVX512DQ-NEXT: vpsllw $5, %ymm2, %ymm2 |
253 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11],ymm0[12],ymm2[12],ymm0[13],ymm2[13],ymm0[14],ymm2[14],ymm0[15],ymm2[15],ymm0[24],ymm2[24],ymm0[25],ymm2[25],ymm0[26],ymm2[26],ymm0[27],ymm2[27],ymm0[28],ymm2[28],ymm0[29],ymm2[29],ymm0[30],ymm2[30],ymm0[31],ymm2[31] | 271 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11],ymm0[12],ymm2[12],ymm0[13],ymm2[13],ymm0[14],ymm2[14],ymm0[15],ymm2[15],ymm0[24],ymm2[24],ymm0[25],ymm2[25],ymm0[26],ymm2[26],ymm0[27],ymm2[27],ymm0[28],ymm2[28],ymm0[29],ymm2[29],ymm0[30],ymm2[30],ymm0[31],ymm2[31] |
254 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] | 272 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] |
255 ; ALL-NEXT: vpsraw $4, %ymm4, %ymm5 | 273 ; AVX512DQ-NEXT: vpsraw $4, %ymm4, %ymm5 |
256 ; ALL-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm4 | 274 ; AVX512DQ-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm4 |
257 ; ALL-NEXT: vpsraw $2, %ymm4, %ymm5 | 275 ; AVX512DQ-NEXT: vpsraw $2, %ymm4, %ymm5 |
258 ; ALL-NEXT: vpaddw %ymm3, %ymm3, %ymm6 | 276 ; AVX512DQ-NEXT: vpaddw %ymm3, %ymm3, %ymm6 |
259 ; ALL-NEXT: vpblendvb %ymm6, %ymm5, %ymm4, %ymm4 | 277 ; AVX512DQ-NEXT: vpblendvb %ymm6, %ymm5, %ymm4, %ymm4 |
260 ; ALL-NEXT: vpsraw $1, %ymm4, %ymm5 | 278 ; AVX512DQ-NEXT: vpsraw $1, %ymm4, %ymm5 |
261 ; ALL-NEXT: vpaddw %ymm6, %ymm6, %ymm7 | 279 ; AVX512DQ-NEXT: vpaddw %ymm6, %ymm6, %ymm7 |
262 ; ALL-NEXT: vpblendvb %ymm7, %ymm5, %ymm4, %ymm4 | 280 ; AVX512DQ-NEXT: vpblendvb %ymm7, %ymm5, %ymm4, %ymm4 |
263 ; ALL-NEXT: vpsrlw $8, %ymm4, %ymm4 | 281 ; AVX512DQ-NEXT: vpsrlw $8, %ymm4, %ymm4 |
264 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23] | 282 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm0[0],ymm2[0],ymm0[1],ymm2[1],ymm0[2],ymm2[2],ymm0[3],ymm2[3],ymm0[4],ymm2[4],ymm0[5],ymm2[5],ymm0[6],ymm2[6],ymm0[7],ymm2[7],ymm0[16],ymm2[16],ymm0[17],ymm2[17],ymm0[18],ymm2[18],ymm0[19],ymm2[19],ymm0[20],ymm2[20],ymm0[21],ymm2[21],ymm0[22],ymm2[22],ymm0[23],ymm2[23] |
265 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] | 283 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] |
266 ; ALL-NEXT: vpsraw $4, %ymm0, %ymm5 | 284 ; AVX512DQ-NEXT: vpsraw $4, %ymm0, %ymm5 |
267 ; ALL-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 | 285 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm5, %ymm0, %ymm0 |
268 ; ALL-NEXT: vpsraw $2, %ymm0, %ymm5 | 286 ; AVX512DQ-NEXT: vpsraw $2, %ymm0, %ymm5 |
269 ; ALL-NEXT: vpaddw %ymm2, %ymm2, %ymm8 | 287 ; AVX512DQ-NEXT: vpaddw %ymm2, %ymm2, %ymm8 |
270 ; ALL-NEXT: vpblendvb %ymm8, %ymm5, %ymm0, %ymm0 | 288 ; AVX512DQ-NEXT: vpblendvb %ymm8, %ymm5, %ymm0, %ymm0 |
271 ; ALL-NEXT: vpsraw $1, %ymm0, %ymm5 | 289 ; AVX512DQ-NEXT: vpsraw $1, %ymm0, %ymm5 |
272 ; ALL-NEXT: vpaddw %ymm8, %ymm8, %ymm9 | 290 ; AVX512DQ-NEXT: vpaddw %ymm8, %ymm8, %ymm9 |
273 ; ALL-NEXT: vpblendvb %ymm9, %ymm5, %ymm0, %ymm0 | 291 ; AVX512DQ-NEXT: vpblendvb %ymm9, %ymm5, %ymm0, %ymm0 |
274 ; ALL-NEXT: vpsrlw $8, %ymm0, %ymm0 | 292 ; AVX512DQ-NEXT: vpsrlw $8, %ymm0, %ymm0 |
275 ; ALL-NEXT: vpackuswb %ymm4, %ymm0, %ymm0 | 293 ; AVX512DQ-NEXT: vpackuswb %ymm4, %ymm0, %ymm0 |
276 ; ALL-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31] | 294 ; AVX512DQ-NEXT: vpunpckhbw {{.*#+}} ymm4 = ymm0[8],ymm1[8],ymm0[9],ymm1[9],ymm0[10],ymm1[10],ymm0[11],ymm1[11],ymm0[12],ymm1[12],ymm0[13],ymm1[13],ymm0[14],ymm1[14],ymm0[15],ymm1[15],ymm0[24],ymm1[24],ymm0[25],ymm1[25],ymm0[26],ymm1[26],ymm0[27],ymm1[27],ymm0[28],ymm1[28],ymm0[29],ymm1[29],ymm0[30],ymm1[30],ymm0[31],ymm1[31] |
277 ; ALL-NEXT: vpsraw $4, %ymm4, %ymm5 | 295 ; AVX512DQ-NEXT: vpsraw $4, %ymm4, %ymm5 |
278 ; ALL-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm3 | 296 ; AVX512DQ-NEXT: vpblendvb %ymm3, %ymm5, %ymm4, %ymm3 |
279 ; ALL-NEXT: vpsraw $2, %ymm3, %ymm4 | 297 ; AVX512DQ-NEXT: vpsraw $2, %ymm3, %ymm4 |
280 ; ALL-NEXT: vpblendvb %ymm6, %ymm4, %ymm3, %ymm3 | 298 ; AVX512DQ-NEXT: vpblendvb %ymm6, %ymm4, %ymm3, %ymm3 |
281 ; ALL-NEXT: vpsraw $1, %ymm3, %ymm4 | 299 ; AVX512DQ-NEXT: vpsraw $1, %ymm3, %ymm4 |
282 ; ALL-NEXT: vpblendvb %ymm7, %ymm4, %ymm3, %ymm3 | 300 ; AVX512DQ-NEXT: vpblendvb %ymm7, %ymm4, %ymm3, %ymm3 |
283 ; ALL-NEXT: vpsrlw $8, %ymm3, %ymm3 | 301 ; AVX512DQ-NEXT: vpsrlw $8, %ymm3, %ymm3 |
284 ; ALL-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23] | 302 ; AVX512DQ-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[4],ymm1[4],ymm0[5],ymm1[5],ymm0[6],ymm1[6],ymm0[7],ymm1[7],ymm0[16],ymm1[16],ymm0[17],ymm1[17],ymm0[18],ymm1[18],ymm0[19],ymm1[19],ymm0[20],ymm1[20],ymm0[21],ymm1[21],ymm0[22],ymm1[22],ymm0[23],ymm1[23] |
285 ; ALL-NEXT: vpsraw $4, %ymm1, %ymm4 | 303 ; AVX512DQ-NEXT: vpsraw $4, %ymm1, %ymm4 |
286 ; ALL-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 | 304 ; AVX512DQ-NEXT: vpblendvb %ymm2, %ymm4, %ymm1, %ymm1 |
287 ; ALL-NEXT: vpsraw $2, %ymm1, %ymm2 | 305 ; AVX512DQ-NEXT: vpsraw $2, %ymm1, %ymm2 |
288 ; ALL-NEXT: vpblendvb %ymm8, %ymm2, %ymm1, %ymm1 | 306 ; AVX512DQ-NEXT: vpblendvb %ymm8, %ymm2, %ymm1, %ymm1 |
289 ; ALL-NEXT: vpsraw $1, %ymm1, %ymm2 | 307 ; AVX512DQ-NEXT: vpsraw $1, %ymm1, %ymm2 |
290 ; ALL-NEXT: vpblendvb %ymm9, %ymm2, %ymm1, %ymm1 | 308 ; AVX512DQ-NEXT: vpblendvb %ymm9, %ymm2, %ymm1, %ymm1 |
291 ; ALL-NEXT: vpsrlw $8, %ymm1, %ymm1 | 309 ; AVX512DQ-NEXT: vpsrlw $8, %ymm1, %ymm1 |
292 ; ALL-NEXT: vpackuswb %ymm3, %ymm1, %ymm1 | 310 ; AVX512DQ-NEXT: vpackuswb %ymm3, %ymm1, %ymm1 |
293 ; ALL-NEXT: retq | 311 ; AVX512DQ-NEXT: retq |
294 %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0> | 312 %shift = ashr <64 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0> |
295 ret <64 x i8> %shift | 313 ret <64 x i8> %shift |
296 } | 314 } |
297 | 315 |
298 ; | 316 ; |
316 %shift = ashr <16 x i32> %a, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5> | 334 %shift = ashr <16 x i32> %a, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5> |
317 ret <16 x i32> %shift | 335 ret <16 x i32> %shift |
318 } | 336 } |
319 | 337 |
320 define <32 x i16> @splatconstant_shift_v32i16(<32 x i16> %a) nounwind { | 338 define <32 x i16> @splatconstant_shift_v32i16(<32 x i16> %a) nounwind { |
321 ; ALL-LABEL: splatconstant_shift_v32i16: | 339 ; AVX512DQ-LABEL: splatconstant_shift_v32i16: |
322 ; ALL: ## BB#0: | 340 ; AVX512DQ: ## BB#0: |
323 ; ALL-NEXT: vpsraw $3, %ymm0, %ymm0 | 341 ; AVX512DQ-NEXT: vpsraw $3, %ymm0, %ymm0 |
324 ; ALL-NEXT: vpsraw $3, %ymm1, %ymm1 | 342 ; AVX512DQ-NEXT: vpsraw $3, %ymm1, %ymm1 |
325 ; ALL-NEXT: retq | 343 ; AVX512DQ-NEXT: retq |
344 ; | |
345 ; AVX512BW-LABEL: splatconstant_shift_v32i16: | |
346 ; AVX512BW: ## BB#0: | |
347 ; AVX512BW-NEXT: vpsraw $3, %zmm0, %zmm0 | |
348 ; AVX512BW-NEXT: retq | |
326 %shift = ashr <32 x i16> %a, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3> | 349 %shift = ashr <32 x i16> %a, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3> |
327 ret <32 x i16> %shift | 350 ret <32 x i16> %shift |
328 } | 351 } |
329 | 352 |
330 define <64 x i8> @splatconstant_shift_v64i8(<64 x i8> %a) nounwind { | 353 define <64 x i8> @splatconstant_shift_v64i8(<64 x i8> %a) nounwind { |
331 ; ALL-LABEL: splatconstant_shift_v64i8: | 354 ; AVX512DQ-LABEL: splatconstant_shift_v64i8: |
332 ; ALL: ## BB#0: | 355 ; AVX512DQ: ## BB#0: |
333 ; ALL-NEXT: vpsrlw $3, %ymm0, %ymm0 | 356 ; AVX512DQ-NEXT: vpsrlw $3, %ymm0, %ymm0 |
334 ; ALL-NEXT: vmovdqa {{.*#+}} ymm2 = [31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31] | 357 ; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm2 = [31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31] |
335 ; ALL-NEXT: vpand %ymm2, %ymm0, %ymm0 | 358 ; AVX512DQ-NEXT: vpand %ymm2, %ymm0, %ymm0 |
336 ; ALL-NEXT: vmovdqa {{.*#+}} ymm3 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16] | 359 ; AVX512DQ-NEXT: vmovdqa {{.*#+}} ymm3 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16] |
337 ; ALL-NEXT: vpxor %ymm3, %ymm0, %ymm0 | 360 ; AVX512DQ-NEXT: vpxor %ymm3, %ymm0, %ymm0 |
338 ; ALL-NEXT: vpsubb %ymm3, %ymm0, %ymm0 | 361 ; AVX512DQ-NEXT: vpsubb %ymm3, %ymm0, %ymm0 |
339 ; ALL-NEXT: vpsrlw $3, %ymm1, %ymm1 | 362 ; AVX512DQ-NEXT: vpsrlw $3, %ymm1, %ymm1 |
340 ; ALL-NEXT: vpand %ymm2, %ymm1, %ymm1 | 363 ; AVX512DQ-NEXT: vpand %ymm2, %ymm1, %ymm1 |
341 ; ALL-NEXT: vpxor %ymm3, %ymm1, %ymm1 | 364 ; AVX512DQ-NEXT: vpxor %ymm3, %ymm1, %ymm1 |
342 ; ALL-NEXT: vpsubb %ymm3, %ymm1, %ymm1 | 365 ; AVX512DQ-NEXT: vpsubb %ymm3, %ymm1, %ymm1 |
343 ; ALL-NEXT: retq | 366 ; AVX512DQ-NEXT: retq |
367 ; | |
368 ; AVX512BW-LABEL: splatconstant_shift_v64i8: | |
369 ; AVX512BW: ## BB#0: | |
370 ; AVX512BW-NEXT: vpsrlw $3, %zmm0, %zmm0 | |
371 ; AVX512BW-NEXT: vpandq {{.*}}(%rip), %zmm0, %zmm0 | |
372 ; AVX512BW-NEXT: vmovdqu8 {{.*#+}} zmm1 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16] | |
373 ; AVX512BW-NEXT: vpxorq %zmm1, %zmm0, %zmm0 | |
374 ; AVX512BW-NEXT: vpsubb %zmm1, %zmm0, %zmm0 | |
375 ; AVX512BW-NEXT: retq | |
344 %shift = ashr <64 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3> | 376 %shift = ashr <64 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3> |
345 ret <64 x i8> %shift | 377 ret <64 x i8> %shift |
346 } | 378 } |