xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/vector-shift-shl-256.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=ALL --check-prefix=AVX --check-prefix=AVX1
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=ALL --check-prefix=AVX --check-prefix=AVX2
4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+xop,+avx | FileCheck %s --check-prefix=ALL --check-prefix=XOP --check-prefix=XOPAVX1
5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+xop,+avx2 | FileCheck %s --check-prefix=ALL --check-prefix=XOP --check-prefix=XOPAVX2
6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl -mattr=+avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=AVX512 --check-prefix=AVX512BW
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker;
9*9880d681SAndroid Build Coastguard Worker; Variable Shifts
10*9880d681SAndroid Build Coastguard Worker;
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @var_shift_v4i64(<4 x i64> %a, <4 x i64> %b) nounwind {
13*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: var_shift_v4i64:
14*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
15*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
16*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
17*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq %xmm2, %xmm3, %xmm4
18*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
19*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq %xmm2, %xmm3, %xmm2
20*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm2 = xmm4[0,1,2,3],xmm2[4,5,6,7]
21*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq %xmm1, %xmm0, %xmm3
22*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
23*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq %xmm1, %xmm0, %xmm0
24*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm3[0,1,2,3],xmm0[4,5,6,7]
25*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
26*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
27*9880d681SAndroid Build Coastguard Worker;
28*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: var_shift_v4i64:
29*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
30*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllvq %ymm1, %ymm0, %ymm0
31*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
32*9880d681SAndroid Build Coastguard Worker;
33*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: var_shift_v4i64:
34*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
35*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
36*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
37*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlq %xmm2, %xmm3, %xmm2
38*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlq %xmm1, %xmm0, %xmm0
39*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
40*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
41*9880d681SAndroid Build Coastguard Worker;
42*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: var_shift_v4i64:
43*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
44*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpsllvq %ymm1, %ymm0, %ymm0
45*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
46*9880d681SAndroid Build Coastguard Worker;
47*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: var_shift_v4i64:
48*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
49*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllvq %ymm1, %ymm0, %ymm0
50*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
51*9880d681SAndroid Build Coastguard Worker  %shift = shl <4 x i64> %a, %b
52*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %shift
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @var_shift_v8i32(<8 x i32> %a, <8 x i32> %b) nounwind {
56*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: var_shift_v8i32:
57*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
58*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
59*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld $23, %xmm2, %xmm2
60*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [1065353216,1065353216,1065353216,1065353216]
61*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddd %xmm3, %xmm2, %xmm2
62*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vcvttps2dq %xmm2, %xmm2
63*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
64*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmulld %xmm4, %xmm2, %xmm2
65*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld $23, %xmm1, %xmm1
66*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddd %xmm3, %xmm1, %xmm1
67*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vcvttps2dq %xmm1, %xmm1
68*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmulld %xmm0, %xmm1, %xmm0
69*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
70*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
71*9880d681SAndroid Build Coastguard Worker;
72*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: var_shift_v8i32:
73*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
74*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllvd %ymm1, %ymm0, %ymm0
75*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
76*9880d681SAndroid Build Coastguard Worker;
77*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: var_shift_v8i32:
78*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
79*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
80*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
81*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshld %xmm2, %xmm3, %xmm2
82*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshld %xmm1, %xmm0, %xmm0
83*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
84*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
85*9880d681SAndroid Build Coastguard Worker;
86*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: var_shift_v8i32:
87*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
88*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpsllvd %ymm1, %ymm0, %ymm0
89*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
90*9880d681SAndroid Build Coastguard Worker;
91*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: var_shift_v8i32:
92*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
93*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllvd %ymm1, %ymm0, %ymm0
94*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
95*9880d681SAndroid Build Coastguard Worker  %shift = shl <8 x i32> %a, %b
96*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %shift
97*9880d681SAndroid Build Coastguard Worker}
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @var_shift_v16i16(<16 x i16> %a, <16 x i16> %b) nounwind {
100*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: var_shift_v16i16:
101*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
102*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
103*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $12, %xmm2, %xmm3
104*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm2, %xmm2
105*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpor %xmm3, %xmm2, %xmm2
106*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddw %xmm2, %xmm2, %xmm3
107*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm4
108*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $8, %xmm4, %xmm5
109*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm2, %xmm5, %xmm4, %xmm2
110*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm2, %xmm4
111*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm3, %xmm4, %xmm2, %xmm2
112*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $2, %xmm2, %xmm4
113*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddw %xmm3, %xmm3, %xmm3
114*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm3, %xmm4, %xmm2, %xmm2
115*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $1, %xmm2, %xmm4
116*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddw %xmm3, %xmm3, %xmm3
117*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm3, %xmm4, %xmm2, %xmm2
118*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $12, %xmm1, %xmm3
119*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm1, %xmm1
120*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpor %xmm3, %xmm1, %xmm1
121*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddw %xmm1, %xmm1, %xmm3
122*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $8, %xmm0, %xmm4
123*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm1, %xmm4, %xmm0, %xmm0
124*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm0, %xmm1
125*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm3, %xmm1, %xmm0, %xmm0
126*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $2, %xmm0, %xmm1
127*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddw %xmm3, %xmm3, %xmm3
128*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm3, %xmm1, %xmm0, %xmm0
129*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $1, %xmm0, %xmm1
130*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddw %xmm3, %xmm3, %xmm3
131*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm3, %xmm1, %xmm0, %xmm0
132*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
133*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
134*9880d681SAndroid Build Coastguard Worker;
135*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: var_shift_v16i16:
136*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
137*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpxor %ymm2, %ymm2, %ymm2
138*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} ymm3 = ymm1[4],ymm2[4],ymm1[5],ymm2[5],ymm1[6],ymm2[6],ymm1[7],ymm2[7],ymm1[12],ymm2[12],ymm1[13],ymm2[13],ymm1[14],ymm2[14],ymm1[15],ymm2[15]
139*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpckhwd {{.*#+}} ymm4 = ymm2[4],ymm0[4],ymm2[5],ymm0[5],ymm2[6],ymm0[6],ymm2[7],ymm0[7],ymm2[12],ymm0[12],ymm2[13],ymm0[13],ymm2[14],ymm0[14],ymm2[15],ymm0[15]
140*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllvd %ymm3, %ymm4, %ymm3
141*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrld $16, %ymm3, %ymm3
142*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} ymm1 = ymm1[0],ymm2[0],ymm1[1],ymm2[1],ymm1[2],ymm2[2],ymm1[3],ymm2[3],ymm1[8],ymm2[8],ymm1[9],ymm2[9],ymm1[10],ymm2[10],ymm1[11],ymm2[11]
143*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklwd {{.*#+}} ymm0 = ymm2[0],ymm0[0],ymm2[1],ymm0[1],ymm2[2],ymm0[2],ymm2[3],ymm0[3],ymm2[8],ymm0[8],ymm2[9],ymm0[9],ymm2[10],ymm0[10],ymm2[11],ymm0[11]
144*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllvd %ymm1, %ymm0, %ymm0
145*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrld $16, %ymm0, %ymm0
146*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpackusdw %ymm3, %ymm0, %ymm0
147*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
148*9880d681SAndroid Build Coastguard Worker;
149*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: var_shift_v16i16:
150*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
151*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
152*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
153*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlw %xmm2, %xmm3, %xmm2
154*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlw %xmm1, %xmm0, %xmm0
155*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
156*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
157*9880d681SAndroid Build Coastguard Worker;
158*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: var_shift_v16i16:
159*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
160*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
161*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vextracti128 $1, %ymm0, %xmm3
162*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpshlw %xmm2, %xmm3, %xmm2
163*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpshlw %xmm1, %xmm0, %xmm0
164*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
165*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
166*9880d681SAndroid Build Coastguard Worker;
167*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: var_shift_v16i16:
168*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
169*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    ## kill: %YMM1<def> %YMM1<kill> %ZMM1<def>
170*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
171*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllvw %zmm1, %zmm0, %zmm0
172*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
173*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
174*9880d681SAndroid Build Coastguard Worker  %shift = shl <16 x i16> %a, %b
175*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shift
176*9880d681SAndroid Build Coastguard Worker}
177*9880d681SAndroid Build Coastguard Worker
178*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @var_shift_v32i8(<32 x i8> %a, <32 x i8> %b) nounwind {
179*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: var_shift_v32i8:
180*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
181*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
182*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm2, %xmm3
183*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm4 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
184*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm4, %xmm3, %xmm3
185*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm5
186*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $5, %xmm5, %xmm5
187*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm5, %xmm3, %xmm2, %xmm2
188*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $2, %xmm2, %xmm3
189*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm6 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
190*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm6, %xmm3, %xmm3
191*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm5, %xmm5, %xmm5
192*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm5, %xmm3, %xmm2, %xmm2
193*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm2, %xmm2, %xmm3
194*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm5, %xmm5, %xmm5
195*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm5, %xmm3, %xmm2, %xmm2
196*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm0, %xmm3
197*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm4, %xmm3, %xmm3
198*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $5, %xmm1, %xmm1
199*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm1, %xmm3, %xmm0, %xmm0
200*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $2, %xmm0, %xmm3
201*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm6, %xmm3, %xmm3
202*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm1, %xmm1, %xmm1
203*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm1, %xmm3, %xmm0, %xmm0
204*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm0, %xmm0, %xmm3
205*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm1, %xmm1, %xmm1
206*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm1, %xmm3, %xmm0, %xmm0
207*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
208*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
209*9880d681SAndroid Build Coastguard Worker;
210*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: var_shift_v32i8:
211*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
212*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $5, %ymm1, %ymm1
213*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $4, %ymm0, %ymm2
214*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
215*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
216*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $2, %ymm0, %ymm2
217*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
218*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
219*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
220*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %ymm0, %ymm0, %ymm2
221*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
222*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
223*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
224*9880d681SAndroid Build Coastguard Worker;
225*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: var_shift_v32i8:
226*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
227*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
228*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3
229*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlb %xmm2, %xmm3, %xmm2
230*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlb %xmm1, %xmm0, %xmm0
231*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
232*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
233*9880d681SAndroid Build Coastguard Worker;
234*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: var_shift_v32i8:
235*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
236*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
237*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vextracti128 $1, %ymm0, %xmm3
238*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpshlb %xmm2, %xmm3, %xmm2
239*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpshlb %xmm1, %xmm0, %xmm0
240*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
241*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
242*9880d681SAndroid Build Coastguard Worker;
243*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: var_shift_v32i8:
244*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
245*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $5, %ymm1, %ymm1
246*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $4, %ymm0, %ymm2
247*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
248*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
249*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $2, %ymm0, %ymm2
250*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
251*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
252*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
253*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpaddb %ymm0, %ymm0, %ymm2
254*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
255*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
256*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
257*9880d681SAndroid Build Coastguard Worker  %shift = shl <32 x i8> %a, %b
258*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %shift
259*9880d681SAndroid Build Coastguard Worker}
260*9880d681SAndroid Build Coastguard Worker
261*9880d681SAndroid Build Coastguard Worker;
262*9880d681SAndroid Build Coastguard Worker; Uniform Variable Shifts
263*9880d681SAndroid Build Coastguard Worker;
264*9880d681SAndroid Build Coastguard Worker
265*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, <4 x i64> %b) nounwind {
266*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: splatvar_shift_v4i64:
267*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
268*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
269*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq %xmm1, %xmm2, %xmm2
270*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq %xmm1, %xmm0, %xmm0
271*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
272*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
273*9880d681SAndroid Build Coastguard Worker;
274*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: splatvar_shift_v4i64:
275*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
276*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq %xmm1, %ymm0, %ymm0
277*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
278*9880d681SAndroid Build Coastguard Worker;
279*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: splatvar_shift_v4i64:
280*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
281*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
282*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpsllq %xmm1, %xmm2, %xmm2
283*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpsllq %xmm1, %xmm0, %xmm0
284*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
285*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
286*9880d681SAndroid Build Coastguard Worker;
287*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: splatvar_shift_v4i64:
288*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
289*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpsllq %xmm1, %ymm0, %ymm0
290*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
291*9880d681SAndroid Build Coastguard Worker;
292*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: splatvar_shift_v4i64:
293*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
294*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllq %xmm1, %ymm0, %ymm0
295*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
296*9880d681SAndroid Build Coastguard Worker  %splat = shufflevector <4 x i64> %b, <4 x i64> undef, <4 x i32> zeroinitializer
297*9880d681SAndroid Build Coastguard Worker  %shift = shl <4 x i64> %a, %splat
298*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %shift
299*9880d681SAndroid Build Coastguard Worker}
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, <8 x i32> %b) nounwind {
302*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: splatvar_shift_v8i32:
303*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
304*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
305*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3,4,5,6,7]
306*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
307*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld %xmm1, %xmm2, %xmm2
308*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld %xmm1, %xmm0, %xmm0
309*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
310*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
311*9880d681SAndroid Build Coastguard Worker;
312*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: splatvar_shift_v8i32:
313*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
314*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
315*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3,4,5,6,7]
316*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpslld %xmm1, %ymm0, %ymm0
317*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
318*9880d681SAndroid Build Coastguard Worker;
319*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: splatvar_shift_v8i32:
320*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
321*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
322*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3,4,5,6,7]
323*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
324*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpslld %xmm1, %xmm2, %xmm2
325*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpslld %xmm1, %xmm0, %xmm0
326*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
327*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
328*9880d681SAndroid Build Coastguard Worker;
329*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: splatvar_shift_v8i32:
330*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
331*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
332*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3,4,5,6,7]
333*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpslld %xmm1, %ymm0, %ymm0
334*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
335*9880d681SAndroid Build Coastguard Worker;
336*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: splatvar_shift_v8i32:
337*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
338*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vxorps %xmm2, %xmm2, %xmm2
339*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovss {{.*#+}} xmm1 = xmm1[0],xmm2[1,2,3]
340*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpslld %xmm1, %ymm0, %ymm0
341*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
342*9880d681SAndroid Build Coastguard Worker  %splat = shufflevector <8 x i32> %b, <8 x i32> undef, <8 x i32> zeroinitializer
343*9880d681SAndroid Build Coastguard Worker  %shift = shl <8 x i32> %a, %splat
344*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %shift
345*9880d681SAndroid Build Coastguard Worker}
346*9880d681SAndroid Build Coastguard Worker
347*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, <16 x i16> %b) nounwind {
348*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: splatvar_shift_v16i16:
349*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
350*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
351*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %xmm1, %eax
352*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movzwl %ax, %eax
353*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %eax, %xmm1
354*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw %xmm1, %xmm2, %xmm2
355*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw %xmm1, %xmm0, %xmm0
356*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
357*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
358*9880d681SAndroid Build Coastguard Worker;
359*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: splatvar_shift_v16i16:
360*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
361*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %xmm1, %eax
362*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movzwl %ax, %eax
363*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %eax, %xmm1
364*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw %xmm1, %ymm0, %ymm0
365*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
366*9880d681SAndroid Build Coastguard Worker;
367*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: splatvar_shift_v16i16:
368*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
369*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
370*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vmovd %xmm1, %eax
371*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    movzwl %ax, %eax
372*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vmovd %eax, %xmm1
373*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpsllw %xmm1, %xmm2, %xmm2
374*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpsllw %xmm1, %xmm0, %xmm0
375*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
376*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
377*9880d681SAndroid Build Coastguard Worker;
378*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: splatvar_shift_v16i16:
379*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
380*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vmovd %xmm1, %eax
381*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    movzwl %ax, %eax
382*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vmovd %eax, %xmm1
383*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpsllw %xmm1, %ymm0, %ymm0
384*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
385*9880d681SAndroid Build Coastguard Worker;
386*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: splatvar_shift_v16i16:
387*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
388*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovd %xmm1, %eax
389*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    movzwl %ax, %eax
390*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovd %eax, %xmm1
391*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw %xmm1, %ymm0, %ymm0
392*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
393*9880d681SAndroid Build Coastguard Worker  %splat = shufflevector <16 x i16> %b, <16 x i16> undef, <16 x i32> zeroinitializer
394*9880d681SAndroid Build Coastguard Worker  %shift = shl <16 x i16> %a, %splat
395*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shift
396*9880d681SAndroid Build Coastguard Worker}
397*9880d681SAndroid Build Coastguard Worker
398*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, <32 x i8> %b) nounwind {
399*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: splatvar_shift_v32i8:
400*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
401*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
402*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
403*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
404*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm2, %xmm3
405*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm4 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
406*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm4, %xmm3, %xmm3
407*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $5, %xmm1, %xmm1
408*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm1, %xmm3, %xmm2, %xmm2
409*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $2, %xmm2, %xmm3
410*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm5 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
411*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm5, %xmm3, %xmm3
412*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm1, %xmm1, %xmm6
413*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm6, %xmm3, %xmm2, %xmm2
414*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm2, %xmm2, %xmm3
415*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm6, %xmm6, %xmm7
416*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm7, %xmm3, %xmm2, %xmm2
417*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm0, %xmm3
418*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm4, %xmm3, %xmm3
419*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm1, %xmm3, %xmm0, %xmm0
420*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $2, %xmm0, %xmm1
421*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm5, %xmm1, %xmm1
422*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm6, %xmm1, %xmm0, %xmm0
423*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm0, %xmm0, %xmm1
424*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm7, %xmm1, %xmm0, %xmm0
425*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
426*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
427*9880d681SAndroid Build Coastguard Worker;
428*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: splatvar_shift_v32i8:
429*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
430*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastb %xmm1, %ymm1
431*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $4, %ymm0, %ymm2
432*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
433*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $5, %ymm1, %ymm1
434*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
435*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $2, %ymm0, %ymm2
436*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
437*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
438*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
439*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %ymm0, %ymm0, %ymm2
440*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
441*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
443*9880d681SAndroid Build Coastguard Worker;
444*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: splatvar_shift_v32i8:
445*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
446*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
447*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
448*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2
449*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlb %xmm1, %xmm2, %xmm2
450*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlb %xmm1, %xmm0, %xmm0
451*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
452*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
453*9880d681SAndroid Build Coastguard Worker;
454*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: splatvar_shift_v32i8:
455*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
456*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpbroadcastb %xmm1, %ymm1
457*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vextracti128 $1, %ymm0, %xmm2
458*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vextracti128 $1, %ymm1, %xmm3
459*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpshlb %xmm3, %xmm2, %xmm2
460*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpshlb %xmm1, %xmm0, %xmm0
461*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm0
462*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
463*9880d681SAndroid Build Coastguard Worker;
464*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: splatvar_shift_v32i8:
465*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
466*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpbroadcastb %xmm1, %ymm1
467*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $4, %ymm0, %ymm2
468*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
469*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $5, %ymm1, %ymm1
470*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
471*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $2, %ymm0, %ymm2
472*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
473*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
474*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
475*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpaddb %ymm0, %ymm0, %ymm2
476*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
477*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
478*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
479*9880d681SAndroid Build Coastguard Worker  %splat = shufflevector <32 x i8> %b, <32 x i8> undef, <32 x i32> zeroinitializer
480*9880d681SAndroid Build Coastguard Worker  %shift = shl <32 x i8> %a, %splat
481*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %shift
482*9880d681SAndroid Build Coastguard Worker}
483*9880d681SAndroid Build Coastguard Worker
484*9880d681SAndroid Build Coastguard Worker;
485*9880d681SAndroid Build Coastguard Worker; Constant Shifts
486*9880d681SAndroid Build Coastguard Worker;
487*9880d681SAndroid Build Coastguard Worker
488*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @constant_shift_v4i64(<4 x i64> %a) nounwind {
489*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: constant_shift_v4i64:
490*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
491*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
492*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $62, %xmm1, %xmm2
493*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $31, %xmm1, %xmm1
494*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3],xmm2[4,5,6,7]
495*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $7, %xmm0, %xmm2
496*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $1, %xmm0, %xmm0
497*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm2[4,5,6,7]
498*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
499*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
500*9880d681SAndroid Build Coastguard Worker;
501*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: constant_shift_v4i64:
502*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
503*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllvq {{.*}}(%rip), %ymm0, %ymm0
504*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
505*9880d681SAndroid Build Coastguard Worker;
506*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: constant_shift_v4i64:
507*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
508*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlq {{.*}}(%rip), %xmm0, %xmm1
509*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
510*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlq {{.*}}(%rip), %xmm0, %xmm0
511*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
512*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
513*9880d681SAndroid Build Coastguard Worker;
514*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: constant_shift_v4i64:
515*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
516*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpsllvq {{.*}}(%rip), %ymm0, %ymm0
517*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
518*9880d681SAndroid Build Coastguard Worker;
519*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: constant_shift_v4i64:
520*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
521*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllvq {{.*}}(%rip), %ymm0, %ymm0
522*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
523*9880d681SAndroid Build Coastguard Worker  %shift = shl <4 x i64> %a, <i64 1, i64 7, i64 31, i64 62>
524*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %shift
525*9880d681SAndroid Build Coastguard Worker}
526*9880d681SAndroid Build Coastguard Worker
527*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @constant_shift_v8i32(<8 x i32> %a) nounwind {
528*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: constant_shift_v8i32:
529*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
530*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmulld {{.*}}(%rip), %xmm0, %xmm1
531*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
532*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmulld {{.*}}(%rip), %xmm0, %xmm0
533*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
534*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
535*9880d681SAndroid Build Coastguard Worker;
536*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: constant_shift_v8i32:
537*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
538*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllvd {{.*}}(%rip), %ymm0, %ymm0
539*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
540*9880d681SAndroid Build Coastguard Worker;
541*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: constant_shift_v8i32:
542*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
543*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshld {{.*}}(%rip), %xmm0, %xmm1
544*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
545*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshld {{.*}}(%rip), %xmm0, %xmm0
546*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
547*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
548*9880d681SAndroid Build Coastguard Worker;
549*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: constant_shift_v8i32:
550*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
551*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpsllvd {{.*}}(%rip), %ymm0, %ymm0
552*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
553*9880d681SAndroid Build Coastguard Worker;
554*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: constant_shift_v8i32:
555*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
556*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllvd {{.*}}(%rip), %ymm0, %ymm0
557*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
558*9880d681SAndroid Build Coastguard Worker  %shift = shl <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 8, i32 7>
559*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %shift
560*9880d681SAndroid Build Coastguard Worker}
561*9880d681SAndroid Build Coastguard Worker
562*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @constant_shift_v16i16(<16 x i16> %a) nounwind {
563*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: constant_shift_v16i16:
564*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
565*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmullw {{.*}}(%rip), %xmm0, %xmm1
566*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
567*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmullw {{.*}}(%rip), %xmm0, %xmm0
568*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
569*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
570*9880d681SAndroid Build Coastguard Worker;
571*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: constant_shift_v16i16:
572*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
573*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmullw {{.*}}(%rip), %ymm0, %ymm0
574*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
575*9880d681SAndroid Build Coastguard Worker;
576*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: constant_shift_v16i16:
577*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
578*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlw {{.*}}(%rip), %xmm0, %xmm1
579*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
580*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlw {{.*}}(%rip), %xmm0, %xmm0
581*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
582*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
583*9880d681SAndroid Build Coastguard Worker;
584*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: constant_shift_v16i16:
585*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
586*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpmullw {{.*}}(%rip), %ymm0, %ymm0
587*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
588*9880d681SAndroid Build Coastguard Worker;
589*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: constant_shift_v16i16:
590*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
591*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
592*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
593*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllvw %zmm1, %zmm0, %zmm0
594*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
595*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
596*9880d681SAndroid Build Coastguard Worker  %shift = shl <16 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>
597*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shift
598*9880d681SAndroid Build Coastguard Worker}
599*9880d681SAndroid Build Coastguard Worker
600*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @constant_shift_v32i8(<32 x i8> %a) nounwind {
601*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: constant_shift_v32i8:
602*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
603*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
604*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm1, %xmm2
605*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
606*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm3, %xmm2, %xmm2
607*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm4 = [0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0]
608*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $5, %xmm4, %xmm4
609*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm4, %xmm2, %xmm1, %xmm1
610*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $2, %xmm1, %xmm2
611*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm5 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
612*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm5, %xmm2, %xmm2
613*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm4, %xmm4, %xmm6
614*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm6, %xmm2, %xmm1, %xmm1
615*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm1, %xmm1, %xmm2
616*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm6, %xmm6, %xmm7
617*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm7, %xmm2, %xmm1, %xmm1
618*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $4, %xmm0, %xmm2
619*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm3, %xmm2, %xmm2
620*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm4, %xmm2, %xmm0, %xmm0
621*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $2, %xmm0, %xmm2
622*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm5, %xmm2, %xmm2
623*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm6, %xmm2, %xmm0, %xmm0
624*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm0, %xmm0, %xmm2
625*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendvb %xmm7, %xmm2, %xmm0, %xmm0
626*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
627*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
628*9880d681SAndroid Build Coastguard Worker;
629*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: constant_shift_v32i8:
630*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
631*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} ymm1 = [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]
632*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $5, %ymm1, %ymm1
633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $4, %ymm0, %ymm2
634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
635*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
636*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $2, %ymm0, %ymm2
637*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
638*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
639*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
640*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %ymm0, %ymm0, %ymm2
641*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
642*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
643*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
644*9880d681SAndroid Build Coastguard Worker;
645*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: constant_shift_v32i8:
646*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
647*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
648*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0]
649*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlb %xmm2, %xmm1, %xmm1
650*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlb %xmm2, %xmm0, %xmm0
651*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
652*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
653*9880d681SAndroid Build Coastguard Worker;
654*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: constant_shift_v32i8:
655*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
656*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
657*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0]
658*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpshlb %xmm2, %xmm1, %xmm1
659*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpshlb %xmm2, %xmm0, %xmm0
660*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
661*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
662*9880d681SAndroid Build Coastguard Worker;
663*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: constant_shift_v32i8:
664*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
665*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa {{.*#+}} ymm1 = [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]
666*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $5, %ymm1, %ymm1
667*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $4, %ymm0, %ymm2
668*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
669*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
670*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $2, %ymm0, %ymm2
671*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
672*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
673*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
674*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpaddb %ymm0, %ymm0, %ymm2
675*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpaddb %ymm1, %ymm1, %ymm1
676*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
677*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
678*9880d681SAndroid Build Coastguard Worker  %shift = shl <32 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>
679*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %shift
680*9880d681SAndroid Build Coastguard Worker}
681*9880d681SAndroid Build Coastguard Worker
682*9880d681SAndroid Build Coastguard Worker;
683*9880d681SAndroid Build Coastguard Worker; Uniform Constant Shifts
684*9880d681SAndroid Build Coastguard Worker;
685*9880d681SAndroid Build Coastguard Worker
686*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @splatconstant_shift_v4i64(<4 x i64> %a) nounwind {
687*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: splatconstant_shift_v4i64:
688*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
689*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $7, %xmm0, %xmm1
690*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
691*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllq $7, %xmm0, %xmm0
692*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
693*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
694*9880d681SAndroid Build Coastguard Worker;
695*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: splatconstant_shift_v4i64:
696*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
697*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllq $7, %ymm0, %ymm0
698*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
699*9880d681SAndroid Build Coastguard Worker;
700*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: splatconstant_shift_v4i64:
701*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
702*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpsllq $7, %xmm0, %xmm1
703*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
704*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpsllq $7, %xmm0, %xmm0
705*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
706*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
707*9880d681SAndroid Build Coastguard Worker;
708*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: splatconstant_shift_v4i64:
709*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
710*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpsllq $7, %ymm0, %ymm0
711*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
712*9880d681SAndroid Build Coastguard Worker;
713*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: splatconstant_shift_v4i64:
714*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
715*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllq $7, %ymm0, %ymm0
716*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
717*9880d681SAndroid Build Coastguard Worker  %shift = shl <4 x i64> %a, <i64 7, i64 7, i64 7, i64 7>
718*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %shift
719*9880d681SAndroid Build Coastguard Worker}
720*9880d681SAndroid Build Coastguard Worker
721*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @splatconstant_shift_v8i32(<8 x i32> %a) nounwind {
722*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: splatconstant_shift_v8i32:
723*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
724*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld $5, %xmm0, %xmm1
725*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
726*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld $5, %xmm0, %xmm0
727*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
728*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
729*9880d681SAndroid Build Coastguard Worker;
730*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: splatconstant_shift_v8i32:
731*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
732*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpslld $5, %ymm0, %ymm0
733*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
734*9880d681SAndroid Build Coastguard Worker;
735*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: splatconstant_shift_v8i32:
736*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
737*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpslld $5, %xmm0, %xmm1
738*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
739*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpslld $5, %xmm0, %xmm0
740*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
741*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
742*9880d681SAndroid Build Coastguard Worker;
743*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: splatconstant_shift_v8i32:
744*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
745*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpslld $5, %ymm0, %ymm0
746*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
747*9880d681SAndroid Build Coastguard Worker;
748*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: splatconstant_shift_v8i32:
749*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
750*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpslld $5, %ymm0, %ymm0
751*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
752*9880d681SAndroid Build Coastguard Worker  %shift = shl <8 x i32> %a, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>
753*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %shift
754*9880d681SAndroid Build Coastguard Worker}
755*9880d681SAndroid Build Coastguard Worker
756*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @splatconstant_shift_v16i16(<16 x i16> %a) nounwind {
757*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: splatconstant_shift_v16i16:
758*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
759*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $3, %xmm0, %xmm1
760*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
761*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $3, %xmm0, %xmm0
762*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
763*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
764*9880d681SAndroid Build Coastguard Worker;
765*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: splatconstant_shift_v16i16:
766*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
767*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $3, %ymm0, %ymm0
768*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
769*9880d681SAndroid Build Coastguard Worker;
770*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: splatconstant_shift_v16i16:
771*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
772*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpsllw $3, %xmm0, %xmm1
773*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
774*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpsllw $3, %xmm0, %xmm0
775*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
776*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
777*9880d681SAndroid Build Coastguard Worker;
778*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: splatconstant_shift_v16i16:
779*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
780*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpsllw $3, %ymm0, %ymm0
781*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
782*9880d681SAndroid Build Coastguard Worker;
783*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: splatconstant_shift_v16i16:
784*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
785*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $3, %ymm0, %ymm0
786*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
787*9880d681SAndroid Build Coastguard Worker  %shift = shl <16 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>
788*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %shift
789*9880d681SAndroid Build Coastguard Worker}
790*9880d681SAndroid Build Coastguard Worker
791*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @splatconstant_shift_v32i8(<32 x i8> %a) nounwind {
792*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: splatconstant_shift_v32i8:
793*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
794*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
795*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $3, %xmm1, %xmm1
796*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248]
797*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm2, %xmm1, %xmm1
798*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsllw $3, %xmm0, %xmm0
799*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm2, %xmm0, %xmm0
800*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
801*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
802*9880d681SAndroid Build Coastguard Worker;
803*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: splatconstant_shift_v32i8:
804*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
805*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsllw $3, %ymm0, %ymm0
806*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %ymm0, %ymm0
807*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
808*9880d681SAndroid Build Coastguard Worker;
809*9880d681SAndroid Build Coastguard Worker; XOPAVX1-LABEL: splatconstant_shift_v32i8:
810*9880d681SAndroid Build Coastguard Worker; XOPAVX1:       # BB#0:
811*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vextractf128 $1, %ymm0, %xmm1
812*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]
813*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlb %xmm2, %xmm1, %xmm1
814*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vpshlb %xmm2, %xmm0, %xmm0
815*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
816*9880d681SAndroid Build Coastguard Worker; XOPAVX1-NEXT:    retq
817*9880d681SAndroid Build Coastguard Worker;
818*9880d681SAndroid Build Coastguard Worker; XOPAVX2-LABEL: splatconstant_shift_v32i8:
819*9880d681SAndroid Build Coastguard Worker; XOPAVX2:       # BB#0:
820*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpsllw $3, %ymm0, %ymm0
821*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    vpand {{.*}}(%rip), %ymm0, %ymm0
822*9880d681SAndroid Build Coastguard Worker; XOPAVX2-NEXT:    retq
823*9880d681SAndroid Build Coastguard Worker;
824*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: splatconstant_shift_v32i8:
825*9880d681SAndroid Build Coastguard Worker; AVX512:       ## BB#0:
826*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllw $3, %ymm0, %ymm0
827*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpand {{.*}}(%rip), %ymm0, %ymm0
828*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
829*9880d681SAndroid Build Coastguard Worker  %shift = shl <32 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>
830*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %shift
831*9880d681SAndroid Build Coastguard Worker}
832