xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/vector-sext.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=+sse2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE2
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefix=SSE --check-prefix=SSSE3
4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE --check-prefix=SSE41
5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX --check-prefix=AVX1
6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --check-prefix=AVX2
7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512F
8*9880d681SAndroid Build Coastguard Worker;
9*9880d681SAndroid Build Coastguard Worker; Just one 32-bit run to make sure we do reasonable things there.
10*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=X32-SSE41
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sext_16i8_to_8i16(<16 x i8> %A) nounwind uwtable readnone ssp {
13*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_8i16:
14*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
15*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
16*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm0
17*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
18*9880d681SAndroid Build Coastguard Worker;
19*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_8i16:
20*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
21*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
22*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psraw $8, %xmm0
23*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
24*9880d681SAndroid Build Coastguard Worker;
25*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_8i16:
26*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
27*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm0, %xmm0
28*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
29*9880d681SAndroid Build Coastguard Worker;
30*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_16i8_to_8i16:
31*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
32*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxbw %xmm0, %xmm0
33*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
34*9880d681SAndroid Build Coastguard Worker;
35*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_8i16:
36*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
37*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbw %xmm0, %xmm0
38*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
39*9880d681SAndroid Build Coastguard Workerentry:
40*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i8> %A, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
41*9880d681SAndroid Build Coastguard Worker  %C = sext <8 x i8> %B to <8 x i16>
42*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %C
43*9880d681SAndroid Build Coastguard Worker}
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @sext_16i8_to_16i16(<16 x i8> %A) nounwind uwtable readnone ssp {
46*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_16i16:
47*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
48*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
49*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm2
50*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]
51*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm1
52*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm0
53*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
54*9880d681SAndroid Build Coastguard Worker;
55*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_16i16:
56*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
57*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
58*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psraw $8, %xmm2
59*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]
60*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psraw $8, %xmm1
61*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm2, %xmm0
62*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
63*9880d681SAndroid Build Coastguard Worker;
64*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_16i16:
65*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
66*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm0, %xmm2
67*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
68*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm0, %xmm1
69*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
70*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
71*9880d681SAndroid Build Coastguard Worker;
72*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_16i8_to_16i16:
73*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
74*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw %xmm0, %xmm1
75*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
76*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw %xmm0, %xmm0
77*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
78*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
79*9880d681SAndroid Build Coastguard Worker;
80*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_16i8_to_16i16:
81*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
82*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbw %xmm0, %ymm0
83*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
84*9880d681SAndroid Build Coastguard Worker;
85*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_16i8_to_16i16:
86*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
87*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxbw %xmm0, %ymm0
88*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
89*9880d681SAndroid Build Coastguard Worker;
90*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_16i16:
91*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
92*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbw %xmm0, %xmm2
93*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
94*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbw %xmm0, %xmm1
95*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm2, %xmm0
96*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
97*9880d681SAndroid Build Coastguard Workerentry:
98*9880d681SAndroid Build Coastguard Worker  %B = sext <16 x i8> %A to <16 x i16>
99*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %B
100*9880d681SAndroid Build Coastguard Worker}
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sext_16i8_to_4i32(<16 x i8> %A) nounwind uwtable readnone ssp {
103*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_4i32:
104*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
105*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
106*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
107*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm0
108*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
109*9880d681SAndroid Build Coastguard Worker;
110*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_4i32:
111*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
112*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
113*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
114*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm0
115*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
116*9880d681SAndroid Build Coastguard Worker;
117*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_4i32:
118*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
119*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbd %xmm0, %xmm0
120*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
121*9880d681SAndroid Build Coastguard Worker;
122*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_16i8_to_4i32:
123*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
124*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxbd %xmm0, %xmm0
125*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
126*9880d681SAndroid Build Coastguard Worker;
127*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_4i32:
128*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
129*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbd %xmm0, %xmm0
130*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
131*9880d681SAndroid Build Coastguard Workerentry:
132*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i8> %A, <16 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
133*9880d681SAndroid Build Coastguard Worker  %C = sext <4 x i8> %B to <4 x i32>
134*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %C
135*9880d681SAndroid Build Coastguard Worker}
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @sext_16i8_to_8i32(<16 x i8> %A) nounwind uwtable readnone ssp {
138*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_8i32:
139*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
140*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
141*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
142*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm2
143*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
144*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
145*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
146*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm1
147*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm0
148*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
149*9880d681SAndroid Build Coastguard Worker;
150*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_8i32:
151*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
152*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
153*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
154*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
155*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm0
156*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[u,u,u,4,u,u,u,5,u,u,u,6,u,u,u,7]
157*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm1
158*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
159*9880d681SAndroid Build Coastguard Worker;
160*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_8i32:
161*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
162*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbd %xmm0, %xmm2
163*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
164*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbd %xmm0, %xmm1
165*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
166*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
167*9880d681SAndroid Build Coastguard Worker;
168*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_16i8_to_8i32:
169*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
170*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbd %xmm0, %xmm1
171*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
172*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbd %xmm0, %xmm0
173*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
174*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
175*9880d681SAndroid Build Coastguard Worker;
176*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_16i8_to_8i32:
177*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
178*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbd %xmm0, %ymm0
179*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
180*9880d681SAndroid Build Coastguard Worker;
181*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_16i8_to_8i32:
182*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
183*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxbd %xmm0, %ymm0
184*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
185*9880d681SAndroid Build Coastguard Worker;
186*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_8i32:
187*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
188*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbd %xmm0, %xmm2
189*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
190*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbd %xmm0, %xmm1
191*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm2, %xmm0
192*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
193*9880d681SAndroid Build Coastguard Workerentry:
194*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i8> %A, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
195*9880d681SAndroid Build Coastguard Worker  %C = sext <8 x i8> %B to <8 x i32>
196*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %C
197*9880d681SAndroid Build Coastguard Worker}
198*9880d681SAndroid Build Coastguard Worker
199*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_16i8_to_2i64(<16 x i8> %A) nounwind uwtable readnone ssp {
200*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_2i64:
201*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
202*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
203*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
204*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
205*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
206*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm0
207*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
208*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
209*9880d681SAndroid Build Coastguard Worker;
210*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_2i64:
211*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
212*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
213*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
214*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
215*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
216*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm0
217*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
218*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
219*9880d681SAndroid Build Coastguard Worker;
220*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_2i64:
221*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
222*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq %xmm0, %xmm0
223*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
224*9880d681SAndroid Build Coastguard Worker;
225*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_16i8_to_2i64:
226*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
227*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxbq %xmm0, %xmm0
228*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
229*9880d681SAndroid Build Coastguard Worker;
230*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_2i64:
231*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
232*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq %xmm0, %xmm0
233*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
234*9880d681SAndroid Build Coastguard Workerentry:
235*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i8> %A, <16 x i8> undef, <2 x i32> <i32 0, i32 1>
236*9880d681SAndroid Build Coastguard Worker  %C = sext <2 x i8> %B to <2 x i64>
237*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %C
238*9880d681SAndroid Build Coastguard Worker}
239*9880d681SAndroid Build Coastguard Worker
240*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_16i8_to_4i64(<16 x i8> %A) nounwind uwtable readnone ssp {
241*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_4i64:
242*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
243*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
244*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
245*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm1
246*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
247*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm2
248*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
249*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrld $16, %xmm0
250*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
251*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
252*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
253*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm0
254*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm1
255*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
256*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm0
257*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
258*9880d681SAndroid Build Coastguard Worker;
259*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_4i64:
260*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
261*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
262*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
263*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm2, %xmm1
264*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
265*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm2
266*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
267*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrld $16, %xmm0
268*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
269*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
270*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
271*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm0
272*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm1
273*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
274*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm2, %xmm0
275*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
276*9880d681SAndroid Build Coastguard Worker;
277*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_4i64:
278*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
279*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq %xmm0, %xmm2
280*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrld $16, %xmm0
281*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq %xmm0, %xmm1
282*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
283*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
284*9880d681SAndroid Build Coastguard Worker;
285*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_16i8_to_4i64:
286*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
287*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbq %xmm0, %xmm1
288*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrld $16, %xmm0, %xmm0
289*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbq %xmm0, %xmm0
290*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
291*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
292*9880d681SAndroid Build Coastguard Worker;
293*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_16i8_to_4i64:
294*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
295*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbq %xmm0, %ymm0
296*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
297*9880d681SAndroid Build Coastguard Worker;
298*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_16i8_to_4i64:
299*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
300*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxbq %xmm0, %ymm0
301*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
302*9880d681SAndroid Build Coastguard Worker;
303*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_4i64:
304*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
305*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq %xmm0, %xmm2
306*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psrld $16, %xmm0
307*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq %xmm0, %xmm1
308*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm2, %xmm0
309*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
310*9880d681SAndroid Build Coastguard Workerentry:
311*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i8> %A, <16 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
312*9880d681SAndroid Build Coastguard Worker  %C = sext <4 x i8> %B to <4 x i64>
313*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %C
314*9880d681SAndroid Build Coastguard Worker}
315*9880d681SAndroid Build Coastguard Worker
316*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @sext_16i8_to_8i64(<16 x i8> %A) nounwind uwtable readnone ssp {
317*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_16i8_to_8i64:
318*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
319*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
320*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
321*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
322*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm2
323*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
324*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm0
325*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
326*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[1,1,2,3]
327*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrld $16, %xmm1
328*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
329*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3]
330*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm2
331*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
332*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm1
333*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
334*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
335*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3]
336*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm4
337*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm4
338*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm2
339*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
340*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrld $16, %xmm3
341*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
342*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3]
343*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm3, %xmm4
344*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm4
345*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm3
346*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
347*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
348*9880d681SAndroid Build Coastguard Worker;
349*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_16i8_to_8i64:
350*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
351*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
352*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
353*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
354*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm2
355*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
356*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm0
357*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
358*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[1,1,2,3]
359*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrld $16, %xmm1
360*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
361*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3]
362*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm2
363*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
364*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm1
365*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
366*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
367*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3]
368*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm2, %xmm4
369*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm4
370*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm2
371*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
372*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrld $16, %xmm3
373*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
374*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3]
375*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm3, %xmm4
376*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm4
377*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm3
378*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
379*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
380*9880d681SAndroid Build Coastguard Worker;
381*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_16i8_to_8i64:
382*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
383*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq %xmm0, %xmm4
384*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
385*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrld $16, %xmm1
386*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq %xmm1, %xmm1
387*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
388*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq %xmm2, %xmm2
389*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlq $48, %xmm0
390*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq %xmm0, %xmm3
391*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm4, %xmm0
392*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
393*9880d681SAndroid Build Coastguard Worker;
394*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_16i8_to_8i64:
395*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbq %xmm0, %xmm1
397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrld $16, %xmm0, %xmm2
398*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbq %xmm2, %xmm2
399*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm2
400*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
401*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbq %xmm1, %xmm1
402*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrlq $48, %xmm0, %xmm0
403*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbq %xmm0, %xmm0
404*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm1
405*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovaps %ymm2, %ymm0
406*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
407*9880d681SAndroid Build Coastguard Worker;
408*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_16i8_to_8i64:
409*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
410*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
411*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpslld $24, %xmm1, %xmm1
412*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrad $24, %xmm1, %xmm1
413*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxdq %xmm1, %ymm2
414*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
415*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
416*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpslld $24, %xmm0, %xmm0
417*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrad $24, %xmm0, %xmm0
418*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm1
419*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa %ymm2, %ymm0
420*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
421*9880d681SAndroid Build Coastguard Worker;
422*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_16i8_to_8i64:
423*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
424*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbq {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero
425*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsllq $56, %zmm0, %zmm0
426*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsraq $56, %zmm0, %zmm0
427*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
428*9880d681SAndroid Build Coastguard Worker;
429*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_16i8_to_8i64:
430*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
431*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq %xmm0, %xmm4
432*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm0, %xmm1
433*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psrld $16, %xmm1
434*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq %xmm1, %xmm1
435*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
436*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq %xmm2, %xmm2
437*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psrlq $48, %xmm0
438*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq %xmm0, %xmm3
439*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm4, %xmm0
440*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
441*9880d681SAndroid Build Coastguard Workerentry:
442*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i8> %A, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
443*9880d681SAndroid Build Coastguard Worker  %C = sext <8 x i8> %B to <8 x i64>
444*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %C
445*9880d681SAndroid Build Coastguard Worker}
446*9880d681SAndroid Build Coastguard Worker
447*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sext_8i16_to_4i32(<8 x i16> %A) nounwind uwtable readnone ssp {
448*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_8i16_to_4i32:
449*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
450*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
451*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm0
452*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
453*9880d681SAndroid Build Coastguard Worker;
454*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_8i16_to_4i32:
455*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
456*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
457*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm0
458*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
459*9880d681SAndroid Build Coastguard Worker;
460*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_8i16_to_4i32:
461*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
462*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwd %xmm0, %xmm0
463*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
464*9880d681SAndroid Build Coastguard Worker;
465*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_8i16_to_4i32:
466*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
467*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxwd %xmm0, %xmm0
468*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
469*9880d681SAndroid Build Coastguard Worker;
470*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_8i16_to_4i32:
471*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
472*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwd %xmm0, %xmm0
473*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
474*9880d681SAndroid Build Coastguard Workerentry:
475*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i16> %A, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
476*9880d681SAndroid Build Coastguard Worker  %C = sext <4 x i16> %B to <4 x i32>
477*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %C
478*9880d681SAndroid Build Coastguard Worker}
479*9880d681SAndroid Build Coastguard Worker
480*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @sext_8i16_to_8i32(<8 x i16> %A) nounwind uwtable readnone ssp {
481*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_8i16_to_8i32:
482*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
483*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
484*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm2
485*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
486*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm1
487*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm0
488*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
489*9880d681SAndroid Build Coastguard Worker;
490*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_8i16_to_8i32:
491*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
492*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
493*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm2
494*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
495*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm1
496*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm2, %xmm0
497*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
498*9880d681SAndroid Build Coastguard Worker;
499*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_8i16_to_8i32:
500*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
501*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwd %xmm0, %xmm2
502*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
503*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwd %xmm0, %xmm1
504*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
505*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
506*9880d681SAndroid Build Coastguard Worker;
507*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_8i16_to_8i32:
508*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
509*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxwd %xmm0, %xmm1
510*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
511*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxwd %xmm0, %xmm0
512*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
513*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
514*9880d681SAndroid Build Coastguard Worker;
515*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_8i16_to_8i32:
516*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
517*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxwd %xmm0, %ymm0
518*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
519*9880d681SAndroid Build Coastguard Worker;
520*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_8i16_to_8i32:
521*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
522*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxwd %xmm0, %ymm0
523*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
524*9880d681SAndroid Build Coastguard Worker;
525*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_8i16_to_8i32:
526*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
527*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwd %xmm0, %xmm2
528*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
529*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwd %xmm0, %xmm1
530*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm2, %xmm0
531*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
532*9880d681SAndroid Build Coastguard Workerentry:
533*9880d681SAndroid Build Coastguard Worker  %B = sext <8 x i16> %A to <8 x i32>
534*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %B
535*9880d681SAndroid Build Coastguard Worker}
536*9880d681SAndroid Build Coastguard Worker
537*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_8i16_to_2i64(<8 x i16> %A) nounwind uwtable readnone ssp {
538*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_8i16_to_2i64:
539*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
540*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
541*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
542*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
543*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm0
544*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
545*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
546*9880d681SAndroid Build Coastguard Worker;
547*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_8i16_to_2i64:
548*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
549*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
550*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
551*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
552*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm0
553*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
554*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
555*9880d681SAndroid Build Coastguard Worker;
556*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_8i16_to_2i64:
557*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
558*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwq %xmm0, %xmm0
559*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
560*9880d681SAndroid Build Coastguard Worker;
561*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_8i16_to_2i64:
562*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
563*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxwq %xmm0, %xmm0
564*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
565*9880d681SAndroid Build Coastguard Worker;
566*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_8i16_to_2i64:
567*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
568*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwq %xmm0, %xmm0
569*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
570*9880d681SAndroid Build Coastguard Workerentry:
571*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i16> %A, <8 x i16> undef, <2 x i32> <i32 0, i32 1>
572*9880d681SAndroid Build Coastguard Worker  %C = sext <2 x i16> %B to <2 x i64>
573*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %C
574*9880d681SAndroid Build Coastguard Worker}
575*9880d681SAndroid Build Coastguard Worker
576*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_8i16_to_4i64(<8 x i16> %A) nounwind uwtable readnone ssp {
577*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_8i16_to_4i64:
578*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
579*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
580*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm1
581*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
582*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm2
583*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
584*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
585*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
586*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
587*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm0
588*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm1
589*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
590*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm2, %xmm0
591*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
592*9880d681SAndroid Build Coastguard Worker;
593*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_8i16_to_4i64:
594*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
595*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
596*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm2, %xmm1
597*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
598*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm2
599*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
600*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
601*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
602*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
603*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm0
604*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm1
605*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
606*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm2, %xmm0
607*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
608*9880d681SAndroid Build Coastguard Worker;
609*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_8i16_to_4i64:
610*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
611*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwq %xmm0, %xmm2
612*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
613*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwq %xmm0, %xmm1
614*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
615*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
616*9880d681SAndroid Build Coastguard Worker;
617*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_8i16_to_4i64:
618*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
619*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxwq %xmm0, %xmm1
620*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
621*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxwq %xmm0, %xmm0
622*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
623*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
624*9880d681SAndroid Build Coastguard Worker;
625*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_8i16_to_4i64:
626*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
627*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxwq %xmm0, %ymm0
628*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
629*9880d681SAndroid Build Coastguard Worker;
630*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_8i16_to_4i64:
631*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
632*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxwq %xmm0, %ymm0
633*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
634*9880d681SAndroid Build Coastguard Worker;
635*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_8i16_to_4i64:
636*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
637*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwq %xmm0, %xmm2
638*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
639*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwq %xmm0, %xmm1
640*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm2, %xmm0
641*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
642*9880d681SAndroid Build Coastguard Workerentry:
643*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i16> %A, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
644*9880d681SAndroid Build Coastguard Worker  %C = sext <4 x i16> %B to <4 x i64>
645*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %C
646*9880d681SAndroid Build Coastguard Worker}
647*9880d681SAndroid Build Coastguard Worker
648*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sext_4i32_to_2i64(<4 x i32> %A) nounwind uwtable readnone ssp {
649*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_4i32_to_2i64:
650*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
651*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
652*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
653*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
654*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
655*9880d681SAndroid Build Coastguard Worker;
656*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_4i32_to_2i64:
657*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
658*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
659*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
660*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
661*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
662*9880d681SAndroid Build Coastguard Worker;
663*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_4i32_to_2i64:
664*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
665*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq %xmm0, %xmm0
666*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
667*9880d681SAndroid Build Coastguard Worker;
668*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_4i32_to_2i64:
669*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
670*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxdq %xmm0, %xmm0
671*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
672*9880d681SAndroid Build Coastguard Worker;
673*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_4i32_to_2i64:
674*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
675*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq %xmm0, %xmm0
676*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
677*9880d681SAndroid Build Coastguard Workerentry:
678*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <4 x i32> %A, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
679*9880d681SAndroid Build Coastguard Worker  %C = sext <2 x i32> %B to <2 x i64>
680*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %C
681*9880d681SAndroid Build Coastguard Worker}
682*9880d681SAndroid Build Coastguard Worker
683*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4i32_to_4i64(<4 x i32> %A) nounwind uwtable readnone ssp {
684*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_4i32_to_4i64:
685*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
686*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm2
687*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
688*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
689*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
690*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm2
691*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
692*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
693*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
694*9880d681SAndroid Build Coastguard Worker;
695*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_4i32_to_4i64:
696*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
697*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm2
698*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
699*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
700*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
701*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm2
702*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
703*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
704*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
705*9880d681SAndroid Build Coastguard Worker;
706*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_4i32_to_4i64:
707*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
708*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq %xmm0, %xmm2
709*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
710*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq %xmm0, %xmm1
711*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
712*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
713*9880d681SAndroid Build Coastguard Worker;
714*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_4i32_to_4i64:
715*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
716*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
717*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
718*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
719*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
720*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
721*9880d681SAndroid Build Coastguard Worker;
722*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_4i32_to_4i64:
723*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
724*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
725*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
726*9880d681SAndroid Build Coastguard Worker;
727*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_4i32_to_4i64:
728*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
729*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxdq %xmm0, %ymm0
730*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
731*9880d681SAndroid Build Coastguard Worker;
732*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_4i32_to_4i64:
733*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
734*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq %xmm0, %xmm2
735*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
736*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq %xmm0, %xmm1
737*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm2, %xmm0
738*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
739*9880d681SAndroid Build Coastguard Workerentry:
740*9880d681SAndroid Build Coastguard Worker  %B = sext <4 x i32> %A to <4 x i64>
741*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %B
742*9880d681SAndroid Build Coastguard Worker}
743*9880d681SAndroid Build Coastguard Worker
744*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_sext_2i1_to_2i64(<2 x i1> *%ptr) {
745*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: load_sext_2i1_to_2i64:
746*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0: # %entry
747*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movzbl (%rdi), %eax
748*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movq %rax, %rcx
749*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    shlq $62, %rcx
750*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    sarq $63, %rcx
751*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movd %rcx, %xmm1
752*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    shlq $63, %rax
753*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    sarq $63, %rax
754*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movd %rax, %xmm0
755*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
756*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
757*9880d681SAndroid Build Coastguard Worker;
758*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_2i1_to_2i64:
759*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
760*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movzbl (%rdi), %eax
761*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
762*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $62, %rcx
763*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
764*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovq %rcx, %xmm0
765*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $63, %rax
766*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rax
767*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovq %rax, %xmm1
768*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
769*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
770*9880d681SAndroid Build Coastguard Worker;
771*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_2i1_to_2i64:
772*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
773*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movzbl (%rdi), %eax
774*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
775*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $62, %rcx
776*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
777*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovq %rcx, %xmm0
778*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $63, %rax
779*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rax
780*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovq %rax, %xmm1
781*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
782*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
783*9880d681SAndroid Build Coastguard Worker;
784*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_2i1_to_2i64:
785*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
786*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    movzbl (%rdi), %eax
787*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    kmovw %eax, %k1
788*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
789*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
790*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    # kill: %XMM0<def> %XMM0<kill> %ZMM0<kill>
791*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
792*9880d681SAndroid Build Coastguard Worker;
793*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_2i1_to_2i64:
794*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
795*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
796*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movzbl (%eax), %eax
797*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
798*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $31, %ecx
799*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
800*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %ecx, %xmm0
801*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrd $1, %ecx, %xmm0
802*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $30, %eax
803*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %eax
804*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrd $2, %eax, %xmm0
805*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrd $3, %eax, %xmm0
806*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
807*9880d681SAndroid Build Coastguard Workerentry:
808*9880d681SAndroid Build Coastguard Worker %X = load <2 x i1>, <2 x i1>* %ptr
809*9880d681SAndroid Build Coastguard Worker %Y = sext <2 x i1> %X to <2 x i64>
810*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y
811*9880d681SAndroid Build Coastguard Worker}
812*9880d681SAndroid Build Coastguard Worker
813*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_sext_2i8_to_2i64(<2 x i8> *%ptr) {
814*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_2i8_to_2i64:
815*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
816*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movzwl (%rdi), %eax
817*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm0
818*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
819*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
820*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
821*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
822*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm0
823*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
824*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
825*9880d681SAndroid Build Coastguard Worker;
826*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_2i8_to_2i64:
827*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
828*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movzwl (%rdi), %eax
829*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm0
830*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
831*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
832*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
833*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
834*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm0
835*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
836*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
837*9880d681SAndroid Build Coastguard Worker;
838*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_2i8_to_2i64:
839*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
840*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq (%rdi), %xmm0
841*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
842*9880d681SAndroid Build Coastguard Worker;
843*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_2i8_to_2i64:
844*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
845*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxbq (%rdi), %xmm0
846*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
847*9880d681SAndroid Build Coastguard Worker;
848*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_2i8_to_2i64:
849*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
850*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
851*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq (%eax), %xmm0
852*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
853*9880d681SAndroid Build Coastguard Workerentry:
854*9880d681SAndroid Build Coastguard Worker %X = load <2 x i8>, <2 x i8>* %ptr
855*9880d681SAndroid Build Coastguard Worker %Y = sext <2 x i8> %X to <2 x i64>
856*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y
857*9880d681SAndroid Build Coastguard Worker}
858*9880d681SAndroid Build Coastguard Worker
859*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_sext_4i1_to_4i32(<4 x i1> *%ptr) {
860*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i1_to_4i32:
861*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
862*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movzbl (%rdi), %eax
863*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
864*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $60, %rcx
865*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
866*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
867*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
868*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $62, %rcx
869*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
870*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm1
871*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
872*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
873*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $61, %rcx
874*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
875*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm2
876*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $63, %rax
877*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rax
878*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm0
879*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
880*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
881*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
882*9880d681SAndroid Build Coastguard Worker;
883*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i1_to_4i32:
884*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
885*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movzbl (%rdi), %eax
886*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
887*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $60, %rcx
888*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
889*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
890*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
891*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $62, %rcx
892*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
893*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm1
894*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
895*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
896*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $61, %rcx
897*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
898*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm2
899*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $63, %rax
900*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rax
901*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm0
902*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
903*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
904*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
905*9880d681SAndroid Build Coastguard Worker;
906*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i1_to_4i32:
907*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
908*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movzbl (%rdi), %eax
909*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
910*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $62, %rcx
911*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
912*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rdx
913*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $63, %rdx
914*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rdx
915*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %edx, %xmm0
916*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrd $1, %ecx, %xmm0
917*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
918*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $61, %rcx
919*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
920*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrd $2, %ecx, %xmm0
921*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $60, %rax
922*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rax
923*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrd $3, %eax, %xmm0
924*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
925*9880d681SAndroid Build Coastguard Worker;
926*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i1_to_4i32:
927*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
928*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movzbl (%rdi), %eax
929*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
930*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $62, %rcx
931*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
932*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
933*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $63, %rdx
934*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
935*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %edx, %xmm0
936*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $1, %ecx, %xmm0, %xmm0
937*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
938*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $61, %rcx
939*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
940*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0
941*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $60, %rax
942*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rax
943*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $3, %eax, %xmm0, %xmm0
944*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
945*9880d681SAndroid Build Coastguard Worker;
946*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i1_to_4i32:
947*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
948*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movzbl (%rdi), %eax
949*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
950*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $62, %rcx
951*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
952*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdx
953*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $63, %rdx
954*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdx
955*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %edx, %xmm0
956*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrd $1, %ecx, %xmm0, %xmm0
957*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
958*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $61, %rcx
959*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
960*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0
961*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $60, %rax
962*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rax
963*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrd $3, %eax, %xmm0, %xmm0
964*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
965*9880d681SAndroid Build Coastguard Worker;
966*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i1_to_4i32:
967*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
968*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    movzbl (%rdi), %eax
969*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    kmovw %eax, %k1
970*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
971*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
972*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovqd %zmm0, %ymm0
973*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
974*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
975*9880d681SAndroid Build Coastguard Worker;
976*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i1_to_4i32:
977*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
978*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
979*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl (%eax), %eax
980*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
981*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $30, %ecx
982*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
983*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %edx
984*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $31, %edx
985*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
986*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %edx, %xmm0
987*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrd $1, %ecx, %xmm0
988*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
989*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $29, %ecx
990*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
991*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrd $2, %ecx, %xmm0
992*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $28, %eax
993*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %eax
994*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrd $3, %eax, %xmm0
995*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
996*9880d681SAndroid Build Coastguard Workerentry:
997*9880d681SAndroid Build Coastguard Worker %X = load <4 x i1>, <4 x i1>* %ptr
998*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i1> %X to <4 x i32>
999*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y
1000*9880d681SAndroid Build Coastguard Worker}
1001*9880d681SAndroid Build Coastguard Worker
1002*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_sext_4i8_to_4i32(<4 x i8> *%ptr) {
1003*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i8_to_4i32:
1004*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1005*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
1006*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1007*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1008*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm0
1009*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1010*9880d681SAndroid Build Coastguard Worker;
1011*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i8_to_4i32:
1012*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1013*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
1014*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1015*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1016*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm0
1017*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1018*9880d681SAndroid Build Coastguard Worker;
1019*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i8_to_4i32:
1020*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1021*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbd (%rdi), %xmm0
1022*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1023*9880d681SAndroid Build Coastguard Worker;
1024*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_4i8_to_4i32:
1025*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
1026*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxbd (%rdi), %xmm0
1027*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1028*9880d681SAndroid Build Coastguard Worker;
1029*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i8_to_4i32:
1030*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
1031*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
1032*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbd (%eax), %xmm0
1033*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
1034*9880d681SAndroid Build Coastguard Workerentry:
1035*9880d681SAndroid Build Coastguard Worker %X = load <4 x i8>, <4 x i8>* %ptr
1036*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i8> %X to <4 x i32>
1037*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y
1038*9880d681SAndroid Build Coastguard Worker}
1039*9880d681SAndroid Build Coastguard Worker
1040*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_sext_4i1_to_4i64(<4 x i1> *%ptr) {
1041*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i1_to_4i64:
1042*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1043*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl (%rdi), %eax
1044*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
1045*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $3, %ecx
1046*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
1047*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
1048*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl %ecx
1049*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm1
1050*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1051*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm2
1052*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $2, %eax
1053*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm0
1054*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
1055*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
1056*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand {{.*}}(%rip), %xmm2
1057*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,1,1,3]
1058*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psllq $63, %xmm0
1059*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm0
1060*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1061*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[2,1,3,3]
1062*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psllq $63, %xmm1
1063*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
1064*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1065*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1066*9880d681SAndroid Build Coastguard Worker;
1067*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i1_to_4i64:
1068*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1069*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl (%rdi), %eax
1070*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
1071*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $3, %ecx
1072*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
1073*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
1074*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl %ecx
1075*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm1
1076*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1077*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm2
1078*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $2, %eax
1079*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm0
1080*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
1081*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
1082*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pand {{.*}}(%rip), %xmm2
1083*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,1,1,3]
1084*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psllq $63, %xmm0
1085*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm0
1086*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1087*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[2,1,3,3]
1088*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psllq $63, %xmm1
1089*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
1090*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1091*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1092*9880d681SAndroid Build Coastguard Worker;
1093*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i1_to_4i64:
1094*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1095*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl (%rdi), %eax
1096*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
1097*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl %ecx
1098*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %eax, %xmm1
1099*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrd $1, %ecx, %xmm1
1100*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
1101*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $2, %ecx
1102*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrd $2, %ecx, %xmm1
1103*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $3, %eax
1104*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrd $3, %eax, %xmm1
1105*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pand {{.*}}(%rip), %xmm1
1106*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
1107*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psllq $63, %xmm0
1108*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrad $31, %xmm0
1109*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1110*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1111*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psllq $63, %xmm1
1112*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrad $31, %xmm1
1113*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1114*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1115*9880d681SAndroid Build Coastguard Worker;
1116*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i1_to_4i64:
1117*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1118*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movzbl (%rdi), %eax
1119*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1120*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $62, %rcx
1121*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1122*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
1123*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $63, %rdx
1124*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
1125*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %edx, %xmm0
1126*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $1, %ecx, %xmm0, %xmm0
1127*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1128*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $61, %rcx
1129*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1130*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0
1131*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $60, %rax
1132*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rax
1133*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $3, %eax, %xmm0, %xmm0
1134*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
1135*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
1136*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
1137*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1138*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1139*9880d681SAndroid Build Coastguard Worker;
1140*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i1_to_4i64:
1141*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1142*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movzbl (%rdi), %eax
1143*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1144*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $60, %rcx
1145*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1146*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovq %rcx, %xmm0
1147*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1148*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $61, %rcx
1149*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1150*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovq %rcx, %xmm1
1151*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
1152*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1153*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $62, %rcx
1154*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1155*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovq %rcx, %xmm1
1156*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $63, %rax
1157*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rax
1158*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovq %rax, %xmm2
1159*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
1160*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
1161*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1162*9880d681SAndroid Build Coastguard Worker;
1163*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i1_to_4i64:
1164*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1165*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    movzbl (%rdi), %eax
1166*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    kmovw %eax, %k1
1167*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
1168*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
1169*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    # kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
1170*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1171*9880d681SAndroid Build Coastguard Worker;
1172*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i1_to_4i64:
1173*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
1174*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
1175*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movzbl (%eax), %eax
1176*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1177*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl %ecx
1178*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %eax, %xmm1
1179*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrd $1, %ecx, %xmm1
1180*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1181*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $2, %ecx
1182*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrd $2, %ecx, %xmm1
1183*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $3, %eax
1184*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrd $3, %eax, %xmm1
1185*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pand {{\.LCPI.*}}, %xmm1
1186*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
1187*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psllq $63, %xmm0
1188*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psrad $31, %xmm0
1189*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1190*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1191*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psllq $63, %xmm1
1192*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psrad $31, %xmm1
1193*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1194*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
1195*9880d681SAndroid Build Coastguard Workerentry:
1196*9880d681SAndroid Build Coastguard Worker %X = load <4 x i1>, <4 x i1>* %ptr
1197*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i1> %X to <4 x i64>
1198*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y
1199*9880d681SAndroid Build Coastguard Worker}
1200*9880d681SAndroid Build Coastguard Worker
1201*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_sext_4i8_to_4i64(<4 x i8> *%ptr) {
1202*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i8_to_4i64:
1203*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1204*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 1(%rdi), %rax
1205*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm1
1206*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq (%rdi), %rax
1207*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm0
1208*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1209*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 3(%rdi), %rax
1210*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm2
1211*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 2(%rdi), %rax
1212*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm1
1213*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1214*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1215*9880d681SAndroid Build Coastguard Worker;
1216*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i8_to_4i64:
1217*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1218*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 1(%rdi), %rax
1219*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm1
1220*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq (%rdi), %rax
1221*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm0
1222*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1223*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 3(%rdi), %rax
1224*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm2
1225*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 2(%rdi), %rax
1226*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm1
1227*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1228*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1229*9880d681SAndroid Build Coastguard Worker;
1230*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i8_to_4i64:
1231*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1232*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq (%rdi), %xmm0
1233*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq 2(%rdi), %xmm1
1234*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1235*9880d681SAndroid Build Coastguard Worker;
1236*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i8_to_4i64:
1237*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1238*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbd (%rdi), %xmm0
1239*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
1240*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
1241*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
1242*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1243*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1244*9880d681SAndroid Build Coastguard Worker;
1245*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i8_to_4i64:
1246*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1247*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbq (%rdi), %ymm0
1248*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1249*9880d681SAndroid Build Coastguard Worker;
1250*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i8_to_4i64:
1251*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1252*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxbq (%rdi), %ymm0
1253*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1254*9880d681SAndroid Build Coastguard Worker;
1255*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i8_to_4i64:
1256*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
1257*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
1258*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq (%eax), %xmm0
1259*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq 2(%eax), %xmm1
1260*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
1261*9880d681SAndroid Build Coastguard Workerentry:
1262*9880d681SAndroid Build Coastguard Worker %X = load <4 x i8>, <4 x i8>* %ptr
1263*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i8> %X to <4 x i64>
1264*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y
1265*9880d681SAndroid Build Coastguard Worker}
1266*9880d681SAndroid Build Coastguard Worker
1267*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @load_sext_8i1_to_8i16(<8 x i1> *%ptr) {
1268*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i1_to_8i16:
1269*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1270*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq (%rdi), %rax
1271*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
1272*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $7, %rcx
1273*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
1274*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
1275*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $60, %rcx
1276*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
1277*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm2
1278*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1279*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
1280*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $58, %rcx
1281*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
1282*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
1283*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
1284*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $62, %rcx
1285*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
1286*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm1
1287*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
1288*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1289*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
1290*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $57, %rcx
1291*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
1292*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
1293*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
1294*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $61, %rcx
1295*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
1296*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm2
1297*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1298*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
1299*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $59, %rcx
1300*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
1301*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm3
1302*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $63, %rax
1303*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rax
1304*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm0
1305*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
1306*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1307*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1308*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1309*9880d681SAndroid Build Coastguard Worker;
1310*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i1_to_8i16:
1311*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1312*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq (%rdi), %rax
1313*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
1314*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrq $7, %rcx
1315*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
1316*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
1317*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $60, %rcx
1318*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
1319*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm2
1320*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1321*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
1322*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $58, %rcx
1323*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
1324*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
1325*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
1326*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $62, %rcx
1327*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
1328*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm1
1329*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
1330*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1331*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
1332*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $57, %rcx
1333*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
1334*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
1335*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
1336*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $61, %rcx
1337*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
1338*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm2
1339*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1340*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
1341*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $59, %rcx
1342*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
1343*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm3
1344*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $63, %rax
1345*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rax
1346*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm0
1347*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
1348*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1349*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1350*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1351*9880d681SAndroid Build Coastguard Worker;
1352*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i1_to_8i16:
1353*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1354*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movsbq (%rdi), %rax
1355*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
1356*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $62, %rcx
1357*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
1358*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rdx
1359*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $63, %rdx
1360*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rdx
1361*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %edx, %xmm0
1362*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $1, %ecx, %xmm0
1363*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
1364*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $61, %rcx
1365*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
1366*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $2, %ecx, %xmm0
1367*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
1368*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $60, %rcx
1369*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
1370*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $3, %ecx, %xmm0
1371*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
1372*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $59, %rcx
1373*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
1374*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $4, %ecx, %xmm0
1375*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
1376*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $58, %rcx
1377*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
1378*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $5, %ecx, %xmm0
1379*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
1380*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $57, %rcx
1381*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
1382*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $6, %ecx, %xmm0
1383*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $7, %rax
1384*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $7, %eax, %xmm0
1385*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1386*9880d681SAndroid Build Coastguard Worker;
1387*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i1_to_8i16:
1388*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1389*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movsbq (%rdi), %rax
1390*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1391*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $62, %rcx
1392*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1393*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
1394*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $63, %rdx
1395*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
1396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %edx, %xmm0
1397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $1, %ecx, %xmm0, %xmm0
1398*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1399*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $61, %rcx
1400*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1401*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $2, %ecx, %xmm0, %xmm0
1402*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1403*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $60, %rcx
1404*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1405*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $3, %ecx, %xmm0, %xmm0
1406*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1407*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $59, %rcx
1408*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1409*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $4, %ecx, %xmm0, %xmm0
1410*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1411*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $58, %rcx
1412*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1413*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $5, %ecx, %xmm0, %xmm0
1414*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1415*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $57, %rcx
1416*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1417*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $6, %ecx, %xmm0, %xmm0
1418*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shrq $7, %rax
1419*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0
1420*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1421*9880d681SAndroid Build Coastguard Worker;
1422*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i1_to_8i16:
1423*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1424*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movsbq (%rdi), %rax
1425*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1426*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $62, %rcx
1427*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1428*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdx
1429*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $63, %rdx
1430*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdx
1431*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %edx, %xmm0
1432*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $1, %ecx, %xmm0, %xmm0
1433*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1434*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $61, %rcx
1435*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1436*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $2, %ecx, %xmm0, %xmm0
1437*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1438*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $60, %rcx
1439*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1440*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $3, %ecx, %xmm0, %xmm0
1441*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $59, %rcx
1443*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1444*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $4, %ecx, %xmm0, %xmm0
1445*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1446*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $58, %rcx
1447*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1448*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $5, %ecx, %xmm0, %xmm0
1449*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1450*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $57, %rcx
1451*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1452*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $6, %ecx, %xmm0, %xmm0
1453*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrq $7, %rax
1454*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0
1455*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1456*9880d681SAndroid Build Coastguard Worker;
1457*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i1_to_8i16:
1458*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1459*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    movzbl (%rdi), %eax
1460*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    kmovw %eax, %k1
1461*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
1462*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
1463*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovqw %zmm0, %xmm0
1464*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1465*9880d681SAndroid Build Coastguard Worker;
1466*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i1_to_8i16:
1467*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
1468*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
1469*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movsbl (%eax), %eax
1470*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1471*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $30, %ecx
1472*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
1473*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %edx
1474*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $31, %edx
1475*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
1476*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %edx, %xmm0
1477*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $1, %ecx, %xmm0
1478*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1479*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $29, %ecx
1480*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
1481*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $2, %ecx, %xmm0
1482*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1483*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $28, %ecx
1484*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
1485*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $3, %ecx, %xmm0
1486*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1487*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $27, %ecx
1488*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
1489*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $4, %ecx, %xmm0
1490*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1491*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $26, %ecx
1492*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
1493*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $5, %ecx, %xmm0
1494*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1495*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $25, %ecx
1496*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
1497*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $6, %ecx, %xmm0
1498*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $7, %eax
1499*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $7, %eax, %xmm0
1500*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
1501*9880d681SAndroid Build Coastguard Workerentry:
1502*9880d681SAndroid Build Coastguard Worker %X = load <8 x i1>, <8 x i1>* %ptr
1503*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i1> %X to <8 x i16>
1504*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %Y
1505*9880d681SAndroid Build Coastguard Worker}
1506*9880d681SAndroid Build Coastguard Worker
1507*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @load_sext_8i8_to_8i16(<8 x i8> *%ptr) {
1508*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i8_to_8i16:
1509*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1510*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
1511*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1512*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm0
1513*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1514*9880d681SAndroid Build Coastguard Worker;
1515*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i8_to_8i16:
1516*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1517*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
1518*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1519*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psraw $8, %xmm0
1520*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1521*9880d681SAndroid Build Coastguard Worker;
1522*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i8_to_8i16:
1523*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1524*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw (%rdi), %xmm0
1525*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1526*9880d681SAndroid Build Coastguard Worker;
1527*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_8i8_to_8i16:
1528*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
1529*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxbw (%rdi), %xmm0
1530*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1531*9880d681SAndroid Build Coastguard Worker;
1532*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i8_to_8i16:
1533*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
1534*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
1535*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbw (%eax), %xmm0
1536*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
1537*9880d681SAndroid Build Coastguard Workerentry:
1538*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr
1539*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i8> %X to <8 x i16>
1540*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %Y
1541*9880d681SAndroid Build Coastguard Worker}
1542*9880d681SAndroid Build Coastguard Worker
1543*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @load_sext_8i8_to_8i64(<8 x i8> *%ptr) {
1544*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i8_to_8i64:
1545*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1546*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 1(%rdi), %rax
1547*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm1
1548*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq (%rdi), %rax
1549*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm0
1550*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1551*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 3(%rdi), %rax
1552*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm2
1553*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 2(%rdi), %rax
1554*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm1
1555*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1556*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 5(%rdi), %rax
1557*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm3
1558*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 4(%rdi), %rax
1559*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm2
1560*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
1561*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 7(%rdi), %rax
1562*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm4
1563*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq 6(%rdi), %rax
1564*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm3
1565*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0]
1566*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1567*9880d681SAndroid Build Coastguard Worker;
1568*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i8_to_8i64:
1569*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1570*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 1(%rdi), %rax
1571*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm1
1572*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq (%rdi), %rax
1573*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm0
1574*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1575*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 3(%rdi), %rax
1576*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm2
1577*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 2(%rdi), %rax
1578*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm1
1579*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1580*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 5(%rdi), %rax
1581*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm3
1582*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 4(%rdi), %rax
1583*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm2
1584*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
1585*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 7(%rdi), %rax
1586*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm4
1587*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq 6(%rdi), %rax
1588*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm3
1589*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm4[0]
1590*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1591*9880d681SAndroid Build Coastguard Worker;
1592*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i8_to_8i64:
1593*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1594*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq (%rdi), %xmm0
1595*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq 2(%rdi), %xmm1
1596*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq 4(%rdi), %xmm2
1597*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbq 6(%rdi), %xmm3
1598*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1599*9880d681SAndroid Build Coastguard Worker;
1600*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i8_to_8i64:
1601*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1602*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbd (%rdi), %xmm0
1603*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
1604*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
1605*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
1606*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1607*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbd 4(%rdi), %xmm1
1608*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm2
1609*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
1610*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm1, %xmm1
1611*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
1612*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1613*9880d681SAndroid Build Coastguard Worker;
1614*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i8_to_8i64:
1615*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1616*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbq (%rdi), %ymm0
1617*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbq 4(%rdi), %ymm1
1618*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1619*9880d681SAndroid Build Coastguard Worker;
1620*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i8_to_8i64:
1621*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1622*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxbq (%rdi), %zmm0
1623*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1624*9880d681SAndroid Build Coastguard Worker;
1625*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i8_to_8i64:
1626*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
1627*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
1628*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq (%eax), %xmm0
1629*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq 2(%eax), %xmm1
1630*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq 4(%eax), %xmm2
1631*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbq 6(%eax), %xmm3
1632*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
1633*9880d681SAndroid Build Coastguard Workerentry:
1634*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr
1635*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i8> %X to <8 x i64>
1636*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %Y
1637*9880d681SAndroid Build Coastguard Worker}
1638*9880d681SAndroid Build Coastguard Worker
1639*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_sext_8i1_to_8i32(<8 x i1> *%ptr) {
1640*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i1_to_8i32:
1641*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1642*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movzbl (%rdi), %eax
1643*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
1644*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $6, %ecx
1645*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
1646*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
1647*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
1648*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $2, %ecx
1649*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
1650*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm2
1651*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1652*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
1653*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
1654*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm1
1655*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
1656*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $4, %ecx
1657*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
1658*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
1659*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
1660*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1661*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
1662*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $5, %ecx
1663*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
1664*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
1665*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
1666*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl %ecx
1667*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
1668*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm2
1669*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1670*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
1671*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $3, %ecx
1672*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
1673*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
1674*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $7, %eax
1675*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movzwl %ax, %eax
1676*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm3
1677*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
1678*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1679*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1680*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
1681*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1682*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslld $31, %xmm0
1683*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm0
1684*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1685*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslld $31, %xmm1
1686*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
1687*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1688*9880d681SAndroid Build Coastguard Worker;
1689*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i1_to_8i32:
1690*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1691*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movzbl (%rdi), %eax
1692*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
1693*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $6, %ecx
1694*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
1695*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
1696*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
1697*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $2, %ecx
1698*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
1699*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm2
1700*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1701*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
1702*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
1703*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm1
1704*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
1705*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $4, %ecx
1706*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
1707*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
1708*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
1709*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1710*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
1711*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $5, %ecx
1712*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
1713*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
1714*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
1715*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl %ecx
1716*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
1717*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm2
1718*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1719*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
1720*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $3, %ecx
1721*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
1722*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
1723*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $7, %eax
1724*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movzwl %ax, %eax
1725*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm3
1726*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
1727*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
1728*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1729*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
1730*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1731*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pslld $31, %xmm0
1732*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm0
1733*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1734*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pslld $31, %xmm1
1735*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
1736*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1737*9880d681SAndroid Build Coastguard Worker;
1738*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i1_to_8i32:
1739*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1740*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movzbl (%rdi), %eax
1741*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
1742*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl %ecx
1743*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
1744*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %edx
1745*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %edx
1746*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %edx, %xmm1
1747*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $1, %ecx, %xmm1
1748*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
1749*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $2, %ecx
1750*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
1751*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $2, %ecx, %xmm1
1752*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
1753*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $3, %ecx
1754*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
1755*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $3, %ecx, %xmm1
1756*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
1757*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $4, %ecx
1758*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
1759*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $4, %ecx, %xmm1
1760*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
1761*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $5, %ecx
1762*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
1763*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $5, %ecx, %xmm1
1764*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
1765*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $6, %ecx
1766*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
1767*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $6, %ecx, %xmm1
1768*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $7, %eax
1769*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movzwl %ax, %eax
1770*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrw $7, %eax, %xmm1
1771*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
1772*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pslld $31, %xmm0
1773*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrad $31, %xmm0
1774*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1775*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pslld $31, %xmm1
1776*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrad $31, %xmm1
1777*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1778*9880d681SAndroid Build Coastguard Worker;
1779*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i1_to_8i32:
1780*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1781*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movsbq (%rdi), %rax
1782*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1783*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $58, %rcx
1784*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1785*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
1786*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $59, %rdx
1787*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
1788*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %edx, %xmm0
1789*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $1, %ecx, %xmm0, %xmm0
1790*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1791*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $57, %rcx
1792*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1793*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0
1794*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1795*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shrq $7, %rcx
1796*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $3, %ecx, %xmm0, %xmm0
1797*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1798*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $62, %rcx
1799*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1800*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
1801*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $63, %rdx
1802*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
1803*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %edx, %xmm1
1804*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $1, %ecx, %xmm1, %xmm1
1805*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
1806*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $61, %rcx
1807*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
1808*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $2, %ecx, %xmm1, %xmm1
1809*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $60, %rax
1810*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rax
1811*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrd $3, %eax, %xmm1, %xmm1
1812*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1813*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1814*9880d681SAndroid Build Coastguard Worker;
1815*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i1_to_8i32:
1816*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1817*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movsbq (%rdi), %rax
1818*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1819*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $58, %rcx
1820*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1821*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdx
1822*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $59, %rdx
1823*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdx
1824*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %edx, %xmm0
1825*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrd $1, %ecx, %xmm0, %xmm0
1826*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1827*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $57, %rcx
1828*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1829*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0
1830*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1831*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrq $7, %rcx
1832*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrd $3, %ecx, %xmm0, %xmm0
1833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1834*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $62, %rcx
1835*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1836*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdx
1837*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $63, %rdx
1838*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdx
1839*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %edx, %xmm1
1840*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrd $1, %ecx, %xmm1, %xmm1
1841*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
1842*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $61, %rcx
1843*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
1844*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrd $2, %ecx, %xmm1, %xmm1
1845*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $60, %rax
1846*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rax
1847*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrd $3, %eax, %xmm1, %xmm1
1848*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
1849*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1850*9880d681SAndroid Build Coastguard Worker;
1851*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i1_to_8i32:
1852*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1853*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    movzbl (%rdi), %eax
1854*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    kmovw %eax, %k1
1855*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
1856*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
1857*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovqd %zmm0, %ymm0
1858*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1859*9880d681SAndroid Build Coastguard Worker;
1860*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i1_to_8i32:
1861*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
1862*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
1863*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movzbl (%eax), %eax
1864*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1865*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl %ecx
1866*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
1867*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %edx
1868*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %edx
1869*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %edx, %xmm1
1870*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $1, %ecx, %xmm1
1871*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1872*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $2, %ecx
1873*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
1874*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $2, %ecx, %xmm1
1875*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1876*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $3, %ecx
1877*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
1878*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $3, %ecx, %xmm1
1879*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1880*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $4, %ecx
1881*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
1882*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $4, %ecx, %xmm1
1883*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1884*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $5, %ecx
1885*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
1886*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $5, %ecx, %xmm1
1887*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
1888*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $6, %ecx
1889*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
1890*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $6, %ecx, %xmm1
1891*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $7, %eax
1892*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrw $7, %eax, %xmm1
1893*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
1894*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pslld $31, %xmm0
1895*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psrad $31, %xmm0
1896*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1897*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pslld $31, %xmm1
1898*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psrad $31, %xmm1
1899*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
1900*9880d681SAndroid Build Coastguard Workerentry:
1901*9880d681SAndroid Build Coastguard Worker %X = load <8 x i1>, <8 x i1>* %ptr
1902*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i1> %X to <8 x i32>
1903*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y
1904*9880d681SAndroid Build Coastguard Worker}
1905*9880d681SAndroid Build Coastguard Worker
1906*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_sext_8i8_to_8i32(<8 x i8> *%ptr) {
1907*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i8_to_8i32:
1908*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1909*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
1910*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1911*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1912*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm0
1913*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
1914*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1915*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3]
1916*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm1
1917*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1918*9880d681SAndroid Build Coastguard Worker;
1919*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i8_to_8i32:
1920*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1921*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
1922*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1923*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1924*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm0
1925*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
1926*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1927*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3]
1928*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm1
1929*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1930*9880d681SAndroid Build Coastguard Worker;
1931*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i8_to_8i32:
1932*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1933*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbd (%rdi), %xmm0
1934*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbd 4(%rdi), %xmm1
1935*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1936*9880d681SAndroid Build Coastguard Worker;
1937*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i8_to_8i32:
1938*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1939*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw (%rdi), %xmm0
1940*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxwd %xmm0, %xmm1
1941*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
1942*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxwd %xmm0, %xmm0
1943*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1944*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1945*9880d681SAndroid Build Coastguard Worker;
1946*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i8_to_8i32:
1947*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1948*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbd (%rdi), %ymm0
1949*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1950*9880d681SAndroid Build Coastguard Worker;
1951*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i8_to_8i32:
1952*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1953*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxbd (%rdi), %ymm0
1954*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1955*9880d681SAndroid Build Coastguard Worker;
1956*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i8_to_8i32:
1957*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
1958*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
1959*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbd (%eax), %xmm0
1960*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbd 4(%eax), %xmm1
1961*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
1962*9880d681SAndroid Build Coastguard Workerentry:
1963*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr
1964*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i8> %X to <8 x i32>
1965*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y
1966*9880d681SAndroid Build Coastguard Worker}
1967*9880d681SAndroid Build Coastguard Worker
1968*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @load_sext_16i1_to_16i8(<16 x i1> *%ptr) nounwind readnone {
1969*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_16i1_to_16i8:
1970*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1971*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %rbp
1972*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %r15
1973*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %r14
1974*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %r13
1975*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %r12
1976*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %rbx
1977*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswq (%rdi), %rax
1978*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %r8
1979*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %r9
1980*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %r10
1981*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %r11
1982*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %r14
1983*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %r15
1984*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %r12
1985*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %r13
1986*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rbx
1987*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rcx
1988*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rdx
1989*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rsi
1990*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rdi
1991*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rbp
1992*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $49, %rbp
1993*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rbp
1994*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ebp, %xmm0
1995*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rax, %rbp
1996*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq %al, %rax
1997*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $57, %r8
1998*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r8
1999*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r8d, %xmm1
2000*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $53, %r9
2001*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r9
2002*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r9d, %xmm2
2003*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $61, %r10
2004*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r10
2005*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r10d, %xmm3
2006*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $51, %r11
2007*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r11
2008*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r11d, %xmm4
2009*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2010*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $59, %r14
2011*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r14
2012*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r14d, %xmm5
2013*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2014*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $55, %r15
2015*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r15
2016*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r15d, %xmm2
2017*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3],xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]
2018*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $63, %r12
2019*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r12
2020*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r12d, %xmm0
2021*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]
2022*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $50, %r13
2023*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r13
2024*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r13d, %xmm1
2025*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2026*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $58, %rbx
2027*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rbx
2028*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ebx, %xmm2
2029*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
2030*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $54, %rcx
2031*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
2032*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm4
2033*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2034*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $62, %rdx
2035*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rdx
2036*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %edx, %xmm3
2037*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2038*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $52, %rsi
2039*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rsi
2040*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %esi, %xmm1
2041*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
2042*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $60, %rdi
2043*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rdi
2044*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %edi, %xmm4
2045*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2046*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3],xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]
2047*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $15, %rbp
2048*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ebp, %xmm1
2049*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $7, %rax
2050*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm2
2051*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2052*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3],xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]
2053*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
2054*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2055*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %rbx
2056*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %r12
2057*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %r13
2058*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %r14
2059*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %r15
2060*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %rbp
2061*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2062*9880d681SAndroid Build Coastguard Worker;
2063*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_16i1_to_16i8:
2064*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
2065*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %rbp
2066*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %r15
2067*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %r14
2068*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %r13
2069*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %r12
2070*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %rbx
2071*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswq (%rdi), %rax
2072*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %r8
2073*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %r9
2074*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %r10
2075*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %r11
2076*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %r14
2077*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %r15
2078*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %r12
2079*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %r13
2080*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rbx
2081*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rcx
2082*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rdx
2083*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rsi
2084*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rdi
2085*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rbp
2086*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $49, %rbp
2087*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rbp
2088*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ebp, %xmm0
2089*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rax, %rbp
2090*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq %al, %rax
2091*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $57, %r8
2092*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r8
2093*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r8d, %xmm1
2094*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $53, %r9
2095*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r9
2096*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r9d, %xmm2
2097*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $61, %r10
2098*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r10
2099*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r10d, %xmm3
2100*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $51, %r11
2101*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r11
2102*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r11d, %xmm4
2103*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2104*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $59, %r14
2105*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r14
2106*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r14d, %xmm5
2107*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2108*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $55, %r15
2109*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r15
2110*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r15d, %xmm2
2111*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3],xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]
2112*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $63, %r12
2113*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r12
2114*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r12d, %xmm0
2115*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]
2116*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $50, %r13
2117*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r13
2118*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r13d, %xmm1
2119*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2120*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $58, %rbx
2121*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rbx
2122*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ebx, %xmm2
2123*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
2124*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $54, %rcx
2125*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
2126*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm4
2127*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2128*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $62, %rdx
2129*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rdx
2130*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %edx, %xmm3
2131*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2132*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $52, %rsi
2133*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rsi
2134*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %esi, %xmm1
2135*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
2136*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $60, %rdi
2137*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rdi
2138*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %edi, %xmm4
2139*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2140*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3],xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]
2141*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrq $15, %rbp
2142*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ebp, %xmm1
2143*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrq $7, %rax
2144*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm2
2145*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2146*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3],xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]
2147*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
2148*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2149*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %rbx
2150*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %r12
2151*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %r13
2152*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %r14
2153*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %r15
2154*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %rbp
2155*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2156*9880d681SAndroid Build Coastguard Worker;
2157*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_16i1_to_16i8:
2158*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
2159*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movswq (%rdi), %rax
2160*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2161*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $62, %rcx
2162*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2163*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rdx
2164*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $63, %rdx
2165*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rdx
2166*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %edx, %xmm0
2167*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $1, %ecx, %xmm0
2168*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2169*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $61, %rcx
2170*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2171*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $2, %ecx, %xmm0
2172*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2173*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $60, %rcx
2174*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2175*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $3, %ecx, %xmm0
2176*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2177*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $59, %rcx
2178*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2179*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $4, %ecx, %xmm0
2180*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2181*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $58, %rcx
2182*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2183*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $5, %ecx, %xmm0
2184*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2185*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $57, %rcx
2186*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2187*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $6, %ecx, %xmm0
2188*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movsbq %al, %rcx
2189*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $7, %rcx
2190*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $7, %ecx, %xmm0
2191*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2192*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $55, %rcx
2193*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2194*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $8, %ecx, %xmm0
2195*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2196*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $54, %rcx
2197*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2198*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $9, %ecx, %xmm0
2199*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2200*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $53, %rcx
2201*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2202*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $10, %ecx, %xmm0
2203*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2204*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $52, %rcx
2205*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2206*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $11, %ecx, %xmm0
2207*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2208*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $51, %rcx
2209*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2210*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $12, %ecx, %xmm0
2211*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2212*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $50, %rcx
2213*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2214*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $13, %ecx, %xmm0
2215*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
2216*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $49, %rcx
2217*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
2218*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $14, %ecx, %xmm0
2219*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $15, %rax
2220*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $15, %eax, %xmm0
2221*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2222*9880d681SAndroid Build Coastguard Worker;
2223*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_16i1_to_16i8:
2224*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
2225*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movswq (%rdi), %rax
2226*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2227*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $62, %rcx
2228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
2230*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $63, %rdx
2231*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
2232*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %edx, %xmm0
2233*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $1, %ecx, %xmm0, %xmm0
2234*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2235*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $61, %rcx
2236*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2237*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $2, %ecx, %xmm0, %xmm0
2238*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2239*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $60, %rcx
2240*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2241*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $3, %ecx, %xmm0, %xmm0
2242*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2243*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $59, %rcx
2244*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2245*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $4, %ecx, %xmm0, %xmm0
2246*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2247*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $58, %rcx
2248*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2249*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $5, %ecx, %xmm0, %xmm0
2250*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2251*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $57, %rcx
2252*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2253*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $6, %ecx, %xmm0, %xmm0
2254*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movsbq %al, %rcx
2255*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shrq $7, %rcx
2256*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $7, %ecx, %xmm0, %xmm0
2257*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2258*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $55, %rcx
2259*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2260*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $8, %ecx, %xmm0, %xmm0
2261*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2262*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $54, %rcx
2263*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2264*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $9, %ecx, %xmm0, %xmm0
2265*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2266*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $53, %rcx
2267*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2268*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $10, %ecx, %xmm0, %xmm0
2269*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2270*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $52, %rcx
2271*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2272*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $11, %ecx, %xmm0, %xmm0
2273*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2274*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $51, %rcx
2275*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2276*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $12, %ecx, %xmm0, %xmm0
2277*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2278*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $50, %rcx
2279*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2280*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $13, %ecx, %xmm0, %xmm0
2281*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2282*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $49, %rcx
2283*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2284*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $14, %ecx, %xmm0, %xmm0
2285*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shrq $15, %rax
2286*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
2287*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2288*9880d681SAndroid Build Coastguard Worker;
2289*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_16i1_to_16i8:
2290*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
2291*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movswq (%rdi), %rax
2292*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2293*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $62, %rcx
2294*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2295*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdx
2296*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $63, %rdx
2297*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdx
2298*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %edx, %xmm0
2299*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $1, %ecx, %xmm0, %xmm0
2300*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2301*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $61, %rcx
2302*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2303*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $2, %ecx, %xmm0, %xmm0
2304*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2305*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $60, %rcx
2306*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2307*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $3, %ecx, %xmm0, %xmm0
2308*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2309*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $59, %rcx
2310*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2311*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $4, %ecx, %xmm0, %xmm0
2312*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2313*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $58, %rcx
2314*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2315*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $5, %ecx, %xmm0, %xmm0
2316*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2317*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $57, %rcx
2318*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2319*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $6, %ecx, %xmm0, %xmm0
2320*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movsbq %al, %rcx
2321*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrq $7, %rcx
2322*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $7, %ecx, %xmm0, %xmm0
2323*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2324*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $55, %rcx
2325*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2326*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $8, %ecx, %xmm0, %xmm0
2327*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2328*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $54, %rcx
2329*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2330*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $9, %ecx, %xmm0, %xmm0
2331*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2332*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $53, %rcx
2333*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2334*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $10, %ecx, %xmm0, %xmm0
2335*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2336*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $52, %rcx
2337*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2338*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $11, %ecx, %xmm0, %xmm0
2339*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2340*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $51, %rcx
2341*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2342*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $12, %ecx, %xmm0, %xmm0
2343*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2344*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $50, %rcx
2345*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2346*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $13, %ecx, %xmm0, %xmm0
2347*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2348*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $49, %rcx
2349*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2350*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $14, %ecx, %xmm0, %xmm0
2351*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrq $15, %rax
2352*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
2353*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2354*9880d681SAndroid Build Coastguard Worker;
2355*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_16i1_to_16i8:
2356*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
2357*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    kmovw (%rdi), %k1
2358*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
2359*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
2360*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
2361*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
2362*9880d681SAndroid Build Coastguard Worker;
2363*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_16i1_to_16i8:
2364*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
2365*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
2366*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movswl (%eax), %eax
2367*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2368*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $30, %ecx
2369*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2370*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %edx
2371*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $31, %edx
2372*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
2373*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %edx, %xmm0
2374*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $1, %ecx, %xmm0
2375*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2376*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $29, %ecx
2377*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2378*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $2, %ecx, %xmm0
2379*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2380*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $28, %ecx
2381*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2382*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $3, %ecx, %xmm0
2383*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2384*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $27, %ecx
2385*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2386*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $4, %ecx, %xmm0
2387*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2388*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $26, %ecx
2389*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2390*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $5, %ecx, %xmm0
2391*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2392*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $25, %ecx
2393*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2394*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $6, %ecx, %xmm0
2395*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movsbl %al, %ecx
2396*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $7, %ecx
2397*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $7, %ecx, %xmm0
2398*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2399*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $23, %ecx
2400*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2401*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $8, %ecx, %xmm0
2402*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2403*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $22, %ecx
2404*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2405*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $9, %ecx, %xmm0
2406*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2407*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $21, %ecx
2408*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2409*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $10, %ecx, %xmm0
2410*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2411*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $20, %ecx
2412*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2413*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $11, %ecx, %xmm0
2414*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2415*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $19, %ecx
2416*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2417*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $12, %ecx, %xmm0
2418*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2419*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $18, %ecx
2420*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2421*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $13, %ecx, %xmm0
2422*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2423*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $17, %ecx
2424*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
2425*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $14, %ecx, %xmm0
2426*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $15, %eax
2427*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $15, %eax, %xmm0
2428*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
2429*9880d681SAndroid Build Coastguard Workerentry:
2430*9880d681SAndroid Build Coastguard Worker %X = load <16 x i1>, <16 x i1>* %ptr
2431*9880d681SAndroid Build Coastguard Worker %Y = sext <16 x i1> %X to <16 x i8>
2432*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %Y
2433*9880d681SAndroid Build Coastguard Worker}
2434*9880d681SAndroid Build Coastguard Worker
2435*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @load_sext_16i1_to_16i16(<16 x i1> *%ptr) {
2436*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_16i1_to_16i16:
2437*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
2438*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movzwl (%rdi), %eax
2439*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2440*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $14, %ecx
2441*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2442*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
2443*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2444*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $6, %ecx
2445*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2446*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm1
2447*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2448*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2449*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $10, %ecx
2450*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2451*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
2452*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2453*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $2, %ecx
2454*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2455*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm2
2456*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2457*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2458*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2459*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $12, %ecx
2460*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2461*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
2462*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2463*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $4, %ecx
2464*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2465*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm3
2466*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2467*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2468*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2469*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm1
2470*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2471*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $8, %ecx
2472*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2473*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
2474*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2475*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2476*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
2477*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2478*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $13, %ecx
2479*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2480*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
2481*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2482*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $5, %ecx
2483*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2484*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm2
2485*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2486*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2487*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $9, %ecx
2488*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2489*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm3
2490*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2491*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl %ecx
2492*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2493*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm0
2494*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2495*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2496*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2497*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $11, %ecx
2498*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2499*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm2
2500*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2501*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $3, %ecx
2502*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2503*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm3
2504*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2505*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movl %eax, %ecx
2506*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $7, %ecx
2507*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    andl $1, %ecx
2508*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm2
2509*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrl $15, %eax
2510*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movzwl %ax, %eax
2511*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm4
2512*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]
2513*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2514*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2515*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2516*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
2517*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2518*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psllw $15, %xmm0
2519*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $15, %xmm0
2520*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]
2521*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psllw $15, %xmm1
2522*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $15, %xmm1
2523*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
2524*9880d681SAndroid Build Coastguard Worker;
2525*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_16i1_to_16i16:
2526*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
2527*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movzwl (%rdi), %eax
2528*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2529*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $14, %ecx
2530*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2531*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
2532*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2533*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $6, %ecx
2534*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2535*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm1
2536*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2537*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2538*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $10, %ecx
2539*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2540*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
2541*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2542*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $2, %ecx
2543*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2544*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm2
2545*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2546*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2547*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2548*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $12, %ecx
2549*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2550*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
2551*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2552*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $4, %ecx
2553*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2554*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm3
2555*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2556*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2557*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2558*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm1
2559*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2560*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $8, %ecx
2561*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2562*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
2563*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2564*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2565*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
2566*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2567*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $13, %ecx
2568*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2569*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
2570*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2571*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $5, %ecx
2572*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2573*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm2
2574*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2575*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2576*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $9, %ecx
2577*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2578*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm3
2579*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2580*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl %ecx
2581*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2582*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm0
2583*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2584*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
2585*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2586*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $11, %ecx
2587*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2588*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm2
2589*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2590*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $3, %ecx
2591*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2592*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm3
2593*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2594*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movl %eax, %ecx
2595*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $7, %ecx
2596*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    andl $1, %ecx
2597*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm2
2598*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrl $15, %eax
2599*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movzwl %ax, %eax
2600*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm4
2601*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]
2602*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
2603*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2604*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2605*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
2606*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2607*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psllw $15, %xmm0
2608*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psraw $15, %xmm0
2609*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]
2610*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psllw $15, %xmm1
2611*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psraw $15, %xmm1
2612*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
2613*9880d681SAndroid Build Coastguard Worker;
2614*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_16i1_to_16i16:
2615*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
2616*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movzwl (%rdi), %eax
2617*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2618*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl %ecx
2619*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2620*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %edx
2621*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %edx
2622*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %edx, %xmm1
2623*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $1, %ecx, %xmm1
2624*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2625*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $2, %ecx
2626*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2627*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $2, %ecx, %xmm1
2628*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2629*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $3, %ecx
2630*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2631*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $3, %ecx, %xmm1
2632*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2633*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $4, %ecx
2634*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2635*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $4, %ecx, %xmm1
2636*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2637*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $5, %ecx
2638*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2639*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $5, %ecx, %xmm1
2640*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2641*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $6, %ecx
2642*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2643*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $6, %ecx, %xmm1
2644*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2645*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $7, %ecx
2646*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2647*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $7, %ecx, %xmm1
2648*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2649*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $8, %ecx
2650*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2651*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $8, %ecx, %xmm1
2652*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2653*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $9, %ecx
2654*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2655*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $9, %ecx, %xmm1
2656*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2657*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $10, %ecx
2658*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2659*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $10, %ecx, %xmm1
2660*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2661*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $11, %ecx
2662*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2663*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $11, %ecx, %xmm1
2664*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2665*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $12, %ecx
2666*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2667*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $12, %ecx, %xmm1
2668*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2669*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $13, %ecx
2670*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2671*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $13, %ecx, %xmm1
2672*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movl %eax, %ecx
2673*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $14, %ecx
2674*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    andl $1, %ecx
2675*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $14, %ecx, %xmm1
2676*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrl $15, %eax
2677*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movzwl %ax, %eax
2678*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $15, %eax, %xmm1
2679*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbw {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero
2680*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psllw $15, %xmm0
2681*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psraw $15, %xmm0
2682*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2683*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psllw $15, %xmm1
2684*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psraw $15, %xmm1
2685*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
2686*9880d681SAndroid Build Coastguard Worker;
2687*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_16i1_to_16i16:
2688*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
2689*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %rbp
2690*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp0:
2691*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_def_cfa_offset 16
2692*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %r15
2693*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp1:
2694*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_def_cfa_offset 24
2695*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %r14
2696*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp2:
2697*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_def_cfa_offset 32
2698*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %r13
2699*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp3:
2700*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_def_cfa_offset 40
2701*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %r12
2702*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp4:
2703*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_def_cfa_offset 48
2704*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %rbx
2705*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp5:
2706*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_def_cfa_offset 56
2707*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp6:
2708*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_offset %rbx, -56
2709*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp7:
2710*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_offset %r12, -48
2711*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp8:
2712*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_offset %r13, -40
2713*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp9:
2714*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_offset %r14, -32
2715*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp10:
2716*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_offset %r15, -24
2717*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:  .Ltmp11:
2718*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    .cfi_offset %rbp, -16
2719*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movswq (%rdi), %rax
2720*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2721*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $55, %rcx
2722*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2723*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %ecx, %xmm0
2724*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r8
2725*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r10
2726*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r11
2727*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r14
2728*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r15
2729*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r9
2730*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r12
2731*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r13
2732*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rbx
2733*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdi
2734*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
2735*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
2736*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rsi
2737*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movsbq %al, %rbp
2738*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $54, %rax
2739*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rax
2740*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
2741*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $53, %r8
2742*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r8
2743*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $2, %r8d, %xmm0, %xmm0
2744*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $52, %r10
2745*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r10
2746*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $3, %r10d, %xmm0, %xmm0
2747*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $51, %r11
2748*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r11
2749*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $4, %r11d, %xmm0, %xmm0
2750*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $50, %r14
2751*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r14
2752*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $5, %r14d, %xmm0, %xmm0
2753*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $49, %r15
2754*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r15
2755*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $6, %r15d, %xmm0, %xmm0
2756*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shrq $15, %r9
2757*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $7, %r9d, %xmm0, %xmm0
2758*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $63, %r13
2759*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r13
2760*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %r13d, %xmm1
2761*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $62, %r12
2762*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r12
2763*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $1, %r12d, %xmm1, %xmm1
2764*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $61, %rbx
2765*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rbx
2766*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $2, %ebx, %xmm1, %xmm1
2767*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $60, %rdi
2768*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdi
2769*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $3, %edi, %xmm1, %xmm1
2770*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $59, %rcx
2771*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
2772*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $4, %ecx, %xmm1, %xmm1
2773*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $58, %rdx
2774*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
2775*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $5, %edx, %xmm1, %xmm1
2776*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $57, %rsi
2777*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rsi
2778*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $6, %esi, %xmm1, %xmm1
2779*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shrq $7, %rbp
2780*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrw $7, %ebp, %xmm1, %xmm1
2781*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2782*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %rbx
2783*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %r12
2784*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %r13
2785*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %r14
2786*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %r15
2787*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %rbp
2788*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
2789*9880d681SAndroid Build Coastguard Worker;
2790*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_16i1_to_16i16:
2791*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
2792*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %rbp
2793*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp0:
2794*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_def_cfa_offset 16
2795*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %r15
2796*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp1:
2797*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_def_cfa_offset 24
2798*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %r14
2799*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp2:
2800*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_def_cfa_offset 32
2801*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %r13
2802*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp3:
2803*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_def_cfa_offset 40
2804*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %r12
2805*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp4:
2806*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_def_cfa_offset 48
2807*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %rbx
2808*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp5:
2809*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_def_cfa_offset 56
2810*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp6:
2811*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_offset %rbx, -56
2812*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp7:
2813*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_offset %r12, -48
2814*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp8:
2815*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_offset %r13, -40
2816*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp9:
2817*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_offset %r14, -32
2818*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp10:
2819*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_offset %r15, -24
2820*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:  .Ltmp11:
2821*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    .cfi_offset %rbp, -16
2822*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movswq (%rdi), %rax
2823*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2824*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $55, %rcx
2825*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2826*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %ecx, %xmm0
2827*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r8
2828*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r10
2829*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r11
2830*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r14
2831*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r15
2832*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r9
2833*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r12
2834*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r13
2835*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rbx
2836*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdi
2837*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
2838*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdx
2839*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rsi
2840*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movsbq %al, %rbp
2841*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $54, %rax
2842*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rax
2843*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
2844*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $53, %r8
2845*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r8
2846*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $2, %r8d, %xmm0, %xmm0
2847*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $52, %r10
2848*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r10
2849*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $3, %r10d, %xmm0, %xmm0
2850*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $51, %r11
2851*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r11
2852*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $4, %r11d, %xmm0, %xmm0
2853*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $50, %r14
2854*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r14
2855*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $5, %r14d, %xmm0, %xmm0
2856*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $49, %r15
2857*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r15
2858*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $6, %r15d, %xmm0, %xmm0
2859*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrq $15, %r9
2860*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $7, %r9d, %xmm0, %xmm0
2861*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $63, %r13
2862*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r13
2863*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %r13d, %xmm1
2864*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $62, %r12
2865*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r12
2866*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $1, %r12d, %xmm1, %xmm1
2867*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $61, %rbx
2868*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rbx
2869*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $2, %ebx, %xmm1, %xmm1
2870*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $60, %rdi
2871*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdi
2872*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $3, %edi, %xmm1, %xmm1
2873*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $59, %rcx
2874*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
2875*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $4, %ecx, %xmm1, %xmm1
2876*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $58, %rdx
2877*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdx
2878*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $5, %edx, %xmm1, %xmm1
2879*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $57, %rsi
2880*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rsi
2881*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $6, %esi, %xmm1, %xmm1
2882*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrq $7, %rbp
2883*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrw $7, %ebp, %xmm1, %xmm1
2884*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
2885*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %rbx
2886*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %r12
2887*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %r13
2888*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %r14
2889*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %r15
2890*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %rbp
2891*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
2892*9880d681SAndroid Build Coastguard Worker;
2893*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_16i1_to_16i16:
2894*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
2895*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    kmovw (%rdi), %k1
2896*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
2897*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
2898*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovdw %zmm0, %ymm0
2899*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
2900*9880d681SAndroid Build Coastguard Worker;
2901*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_16i1_to_16i16:
2902*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
2903*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
2904*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movzwl (%eax), %eax
2905*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2906*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl %ecx
2907*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2908*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %edx
2909*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %edx
2910*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %edx, %xmm1
2911*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $1, %ecx, %xmm1
2912*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2913*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $2, %ecx
2914*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2915*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $2, %ecx, %xmm1
2916*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2917*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $3, %ecx
2918*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2919*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $3, %ecx, %xmm1
2920*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2921*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $4, %ecx
2922*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2923*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $4, %ecx, %xmm1
2924*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2925*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $5, %ecx
2926*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2927*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $5, %ecx, %xmm1
2928*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2929*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $6, %ecx
2930*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2931*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $6, %ecx, %xmm1
2932*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2933*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $7, %ecx
2934*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2935*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $7, %ecx, %xmm1
2936*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2937*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $8, %ecx
2938*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2939*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $8, %ecx, %xmm1
2940*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2941*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $9, %ecx
2942*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2943*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $9, %ecx, %xmm1
2944*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2945*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $10, %ecx
2946*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2947*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $10, %ecx, %xmm1
2948*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2949*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $11, %ecx
2950*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2951*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $11, %ecx, %xmm1
2952*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2953*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $12, %ecx
2954*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2955*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $12, %ecx, %xmm1
2956*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2957*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $13, %ecx
2958*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2959*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $13, %ecx, %xmm1
2960*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
2961*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $14, %ecx
2962*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    andl $1, %ecx
2963*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $14, %ecx, %xmm1
2964*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $15, %eax
2965*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $15, %eax, %xmm1
2966*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovzxbw {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero
2967*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psllw $15, %xmm0
2968*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psraw $15, %xmm0
2969*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2970*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psllw $15, %xmm1
2971*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psraw $15, %xmm1
2972*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
2973*9880d681SAndroid Build Coastguard Workerentry:
2974*9880d681SAndroid Build Coastguard Worker %X = load <16 x i1>, <16 x i1>* %ptr
2975*9880d681SAndroid Build Coastguard Worker %Y = sext <16 x i1> %X to <16 x i16>
2976*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %Y
2977*9880d681SAndroid Build Coastguard Worker}
2978*9880d681SAndroid Build Coastguard Worker
2979*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @load_sext_32i1_to_32i8(<32 x i1> *%ptr) nounwind readnone {
2980*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_32i1_to_32i8:
2981*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
2982*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %rbp
2983*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %r15
2984*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %r14
2985*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %r13
2986*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %r12
2987*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pushq %rbx
2988*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswq (%rdi), %rbx
2989*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %r10
2990*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %r8
2991*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %r9
2992*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %r11
2993*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %r14
2994*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %r15
2995*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %r12
2996*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %r13
2997*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %rdx
2998*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %rsi
2999*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %rcx
3000*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %rbp
3001*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %rax
3002*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $49, %rax
3003*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rax
3004*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm0
3005*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %rax
3006*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $57, %r10
3007*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r10
3008*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r10d, %xmm15
3009*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rbx, %r10
3010*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq %bl, %rbx
3011*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm0[0],xmm15[1],xmm0[1],xmm15[2],xmm0[2],xmm15[3],xmm0[3],xmm15[4],xmm0[4],xmm15[5],xmm0[5],xmm15[6],xmm0[6],xmm15[7],xmm0[7]
3012*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $53, %r8
3013*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r8
3014*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r8d, %xmm8
3015*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $61, %r9
3016*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r9
3017*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r9d, %xmm2
3018*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $51, %r11
3019*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r11
3020*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r11d, %xmm9
3021*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $59, %r14
3022*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r14
3023*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r14d, %xmm5
3024*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $55, %r15
3025*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r15
3026*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r15d, %xmm10
3027*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $63, %r12
3028*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r12
3029*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r12d, %xmm0
3030*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $50, %r13
3031*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r13
3032*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r13d, %xmm11
3033*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $58, %rdx
3034*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rdx
3035*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %edx, %xmm4
3036*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $54, %rsi
3037*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rsi
3038*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %esi, %xmm12
3039*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $62, %rcx
3040*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
3041*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm6
3042*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $52, %rbp
3043*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rbp
3044*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ebp, %xmm13
3045*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $60, %rax
3046*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rax
3047*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm7
3048*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $15, %r10
3049*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r10d, %xmm14
3050*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $7, %rbx
3051*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ebx, %xmm3
3052*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswq 2(%rdi), %rdx
3053*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %r8
3054*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %r9
3055*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %r10
3056*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %r11
3057*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %r14
3058*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %r15
3059*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %r12
3060*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %r13
3061*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rbx
3062*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rax
3063*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rcx
3064*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rsi
3065*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rdi
3066*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rbp
3067*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $49, %rbp
3068*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rbp
3069*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ebp, %xmm1
3070*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rbp
3071*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movsbq %dl, %rdx
3072*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3],xmm2[4],xmm8[4],xmm2[5],xmm8[5],xmm2[6],xmm8[6],xmm2[7],xmm8[7]
3073*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm15[0],xmm2[1],xmm15[1],xmm2[2],xmm15[2],xmm2[3],xmm15[3],xmm2[4],xmm15[4],xmm2[5],xmm15[5],xmm2[6],xmm15[6],xmm2[7],xmm15[7]
3074*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1],xmm5[2],xmm9[2],xmm5[3],xmm9[3],xmm5[4],xmm9[4],xmm5[5],xmm9[5],xmm5[6],xmm9[6],xmm5[7],xmm9[7]
3075*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3],xmm0[4],xmm10[4],xmm0[5],xmm10[5],xmm0[6],xmm10[6],xmm0[7],xmm10[7]
3076*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
3077*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
3078*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm11[0],xmm4[1],xmm11[1],xmm4[2],xmm11[2],xmm4[3],xmm11[3],xmm4[4],xmm11[4],xmm4[5],xmm11[5],xmm4[6],xmm11[6],xmm4[7],xmm11[7]
3079*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1],xmm6[2],xmm12[2],xmm6[3],xmm12[3],xmm6[4],xmm12[4],xmm6[5],xmm12[5],xmm6[6],xmm12[6],xmm6[7],xmm12[7]
3080*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3],xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]
3081*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm13[0],xmm7[1],xmm13[1],xmm7[2],xmm13[2],xmm7[3],xmm13[3],xmm7[4],xmm13[4],xmm7[5],xmm13[5],xmm7[6],xmm13[6],xmm7[7],xmm13[7]
3082*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm14[0],xmm3[1],xmm14[1],xmm3[2],xmm14[2],xmm3[3],xmm14[3],xmm3[4],xmm14[4],xmm3[5],xmm14[5],xmm3[6],xmm14[6],xmm3[7],xmm14[7]
3083*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $57, %r8
3084*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r8
3085*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r8d, %xmm2
3086*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3],xmm7[4],xmm3[4],xmm7[5],xmm3[5],xmm7[6],xmm3[6],xmm7[7],xmm3[7]
3087*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $53, %r9
3088*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r9
3089*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r9d, %xmm3
3090*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1],xmm6[2],xmm7[2],xmm6[3],xmm7[3],xmm6[4],xmm7[4],xmm6[5],xmm7[5],xmm6[6],xmm7[6],xmm6[7],xmm7[7]
3091*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $61, %r10
3092*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r10
3093*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r10d, %xmm4
3094*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3],xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]
3095*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $51, %r11
3096*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r11
3097*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r11d, %xmm5
3098*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
3099*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $59, %r14
3100*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r14
3101*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r14d, %xmm6
3102*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]
3103*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $55, %r15
3104*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r15
3105*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r15d, %xmm3
3106*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3],xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]
3107*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $63, %r12
3108*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r12
3109*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r12d, %xmm1
3110*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3],xmm6[4],xmm5[4],xmm6[5],xmm5[5],xmm6[6],xmm5[6],xmm6[7],xmm5[7]
3111*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $50, %r13
3112*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %r13
3113*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %r13d, %xmm2
3114*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
3115*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $58, %rbx
3116*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rbx
3117*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ebx, %xmm3
3118*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
3119*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $54, %rax
3120*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rax
3121*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm5
3122*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3],xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7]
3123*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $62, %rcx
3124*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rcx
3125*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ecx, %xmm4
3126*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
3127*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $52, %rsi
3128*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rsi
3129*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %esi, %xmm2
3130*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3],xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7]
3131*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]
3132*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shlq $60, %rdi
3133*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq $63, %rdi
3134*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %edi, %xmm3
3135*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
3136*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $15, %rbp
3137*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %ebp, %xmm2
3138*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $7, %rdx
3139*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %edx, %xmm5
3140*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
3141*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7]
3142*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]
3143*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3],xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7]
3144*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %rbx
3145*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %r12
3146*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %r13
3147*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %r14
3148*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %r15
3149*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    popq %rbp
3150*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
3151*9880d681SAndroid Build Coastguard Worker;
3152*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_32i1_to_32i8:
3153*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
3154*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %rbp
3155*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %r15
3156*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %r14
3157*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %r13
3158*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %r12
3159*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pushq %rbx
3160*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswq (%rdi), %rbx
3161*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %r10
3162*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %r8
3163*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %r9
3164*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %r11
3165*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %r14
3166*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %r15
3167*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %r12
3168*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %r13
3169*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %rdx
3170*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %rsi
3171*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %rcx
3172*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %rbp
3173*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %rax
3174*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $49, %rax
3175*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rax
3176*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm0
3177*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %rax
3178*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $57, %r10
3179*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r10
3180*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r10d, %xmm15
3181*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rbx, %r10
3182*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq %bl, %rbx
3183*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm0[0],xmm15[1],xmm0[1],xmm15[2],xmm0[2],xmm15[3],xmm0[3],xmm15[4],xmm0[4],xmm15[5],xmm0[5],xmm15[6],xmm0[6],xmm15[7],xmm0[7]
3184*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $53, %r8
3185*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r8
3186*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r8d, %xmm8
3187*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $61, %r9
3188*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r9
3189*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r9d, %xmm2
3190*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $51, %r11
3191*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r11
3192*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r11d, %xmm9
3193*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $59, %r14
3194*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r14
3195*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r14d, %xmm5
3196*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $55, %r15
3197*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r15
3198*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r15d, %xmm10
3199*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $63, %r12
3200*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r12
3201*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r12d, %xmm0
3202*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $50, %r13
3203*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r13
3204*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r13d, %xmm11
3205*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $58, %rdx
3206*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rdx
3207*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %edx, %xmm4
3208*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $54, %rsi
3209*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rsi
3210*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %esi, %xmm12
3211*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $62, %rcx
3212*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
3213*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm6
3214*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $52, %rbp
3215*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rbp
3216*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ebp, %xmm13
3217*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $60, %rax
3218*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rax
3219*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm7
3220*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrq $15, %r10
3221*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r10d, %xmm14
3222*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrq $7, %rbx
3223*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ebx, %xmm3
3224*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswq 2(%rdi), %rdx
3225*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %r8
3226*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %r9
3227*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %r10
3228*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %r11
3229*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %r14
3230*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %r15
3231*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %r12
3232*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %r13
3233*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %rbx
3234*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %rax
3235*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %rcx
3236*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %rsi
3237*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %rdi
3238*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %rbp
3239*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $49, %rbp
3240*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rbp
3241*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ebp, %xmm1
3242*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq %rdx, %rbp
3243*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movsbq %dl, %rdx
3244*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3],xmm2[4],xmm8[4],xmm2[5],xmm8[5],xmm2[6],xmm8[6],xmm2[7],xmm8[7]
3245*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm15[0],xmm2[1],xmm15[1],xmm2[2],xmm15[2],xmm2[3],xmm15[3],xmm2[4],xmm15[4],xmm2[5],xmm15[5],xmm2[6],xmm15[6],xmm2[7],xmm15[7]
3246*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1],xmm5[2],xmm9[2],xmm5[3],xmm9[3],xmm5[4],xmm9[4],xmm5[5],xmm9[5],xmm5[6],xmm9[6],xmm5[7],xmm9[7]
3247*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3],xmm0[4],xmm10[4],xmm0[5],xmm10[5],xmm0[6],xmm10[6],xmm0[7],xmm10[7]
3248*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
3249*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
3250*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm11[0],xmm4[1],xmm11[1],xmm4[2],xmm11[2],xmm4[3],xmm11[3],xmm4[4],xmm11[4],xmm4[5],xmm11[5],xmm4[6],xmm11[6],xmm4[7],xmm11[7]
3251*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1],xmm6[2],xmm12[2],xmm6[3],xmm12[3],xmm6[4],xmm12[4],xmm6[5],xmm12[5],xmm6[6],xmm12[6],xmm6[7],xmm12[7]
3252*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3],xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]
3253*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm13[0],xmm7[1],xmm13[1],xmm7[2],xmm13[2],xmm7[3],xmm13[3],xmm7[4],xmm13[4],xmm7[5],xmm13[5],xmm7[6],xmm13[6],xmm7[7],xmm13[7]
3254*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm14[0],xmm3[1],xmm14[1],xmm3[2],xmm14[2],xmm3[3],xmm14[3],xmm3[4],xmm14[4],xmm3[5],xmm14[5],xmm3[6],xmm14[6],xmm3[7],xmm14[7]
3255*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $57, %r8
3256*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r8
3257*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r8d, %xmm2
3258*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3],xmm7[4],xmm3[4],xmm7[5],xmm3[5],xmm7[6],xmm3[6],xmm7[7],xmm3[7]
3259*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $53, %r9
3260*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r9
3261*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r9d, %xmm3
3262*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1],xmm6[2],xmm7[2],xmm6[3],xmm7[3],xmm6[4],xmm7[4],xmm6[5],xmm7[5],xmm6[6],xmm7[6],xmm6[7],xmm7[7]
3263*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $61, %r10
3264*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r10
3265*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r10d, %xmm4
3266*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3],xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]
3267*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $51, %r11
3268*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r11
3269*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r11d, %xmm5
3270*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
3271*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $59, %r14
3272*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r14
3273*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r14d, %xmm6
3274*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]
3275*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $55, %r15
3276*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r15
3277*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r15d, %xmm3
3278*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3],xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]
3279*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $63, %r12
3280*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r12
3281*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r12d, %xmm1
3282*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3],xmm6[4],xmm5[4],xmm6[5],xmm5[5],xmm6[6],xmm5[6],xmm6[7],xmm5[7]
3283*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $50, %r13
3284*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %r13
3285*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %r13d, %xmm2
3286*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
3287*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $58, %rbx
3288*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rbx
3289*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ebx, %xmm3
3290*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
3291*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $54, %rax
3292*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rax
3293*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm5
3294*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3],xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7]
3295*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $62, %rcx
3296*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rcx
3297*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ecx, %xmm4
3298*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
3299*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $52, %rsi
3300*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rsi
3301*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %esi, %xmm2
3302*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3],xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7]
3303*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]
3304*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shlq $60, %rdi
3305*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    sarq $63, %rdi
3306*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %edi, %xmm3
3307*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
3308*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrq $15, %rbp
3309*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %ebp, %xmm2
3310*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    shrq $7, %rdx
3311*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %edx, %xmm5
3312*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
3313*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7]
3314*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7]
3315*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3],xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7]
3316*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %rbx
3317*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %r12
3318*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %r13
3319*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %r14
3320*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %r15
3321*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    popq %rbp
3322*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
3323*9880d681SAndroid Build Coastguard Worker;
3324*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_32i1_to_32i8:
3325*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
3326*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movswq (%rdi), %rax
3327*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3328*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $62, %rcx
3329*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3330*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rdx
3331*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $63, %rdx
3332*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rdx
3333*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %edx, %xmm0
3334*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $1, %ecx, %xmm0
3335*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3336*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $61, %rcx
3337*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3338*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $2, %ecx, %xmm0
3339*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3340*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $60, %rcx
3341*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3342*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $3, %ecx, %xmm0
3343*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3344*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $59, %rcx
3345*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3346*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $4, %ecx, %xmm0
3347*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3348*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $58, %rcx
3349*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3350*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $5, %ecx, %xmm0
3351*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3352*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $57, %rcx
3353*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3354*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $6, %ecx, %xmm0
3355*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movsbq %al, %rcx
3356*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $7, %rcx
3357*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $7, %ecx, %xmm0
3358*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3359*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $55, %rcx
3360*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3361*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $8, %ecx, %xmm0
3362*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3363*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $54, %rcx
3364*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3365*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $9, %ecx, %xmm0
3366*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3367*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $53, %rcx
3368*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3369*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $10, %ecx, %xmm0
3370*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3371*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $52, %rcx
3372*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3373*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $11, %ecx, %xmm0
3374*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3375*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $51, %rcx
3376*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3377*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $12, %ecx, %xmm0
3378*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3379*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $50, %rcx
3380*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3381*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $13, %ecx, %xmm0
3382*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3383*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $49, %rcx
3384*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3385*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $14, %ecx, %xmm0
3386*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $15, %rax
3387*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $15, %eax, %xmm0
3388*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movswq 2(%rdi), %rax
3389*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3390*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $62, %rcx
3391*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3392*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rdx
3393*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $63, %rdx
3394*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rdx
3395*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %edx, %xmm1
3396*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $1, %ecx, %xmm1
3397*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3398*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $61, %rcx
3399*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3400*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $2, %ecx, %xmm1
3401*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3402*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $60, %rcx
3403*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3404*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $3, %ecx, %xmm1
3405*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3406*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $59, %rcx
3407*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3408*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $4, %ecx, %xmm1
3409*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3410*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $58, %rcx
3411*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3412*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $5, %ecx, %xmm1
3413*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3414*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $57, %rcx
3415*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3416*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $6, %ecx, %xmm1
3417*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movsbq %al, %rcx
3418*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $7, %rcx
3419*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $7, %ecx, %xmm1
3420*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3421*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $55, %rcx
3422*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3423*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $8, %ecx, %xmm1
3424*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3425*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $54, %rcx
3426*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3427*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $9, %ecx, %xmm1
3428*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3429*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $53, %rcx
3430*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3431*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $10, %ecx, %xmm1
3432*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3433*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $52, %rcx
3434*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3435*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $11, %ecx, %xmm1
3436*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3437*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $51, %rcx
3438*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3439*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $12, %ecx, %xmm1
3440*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3441*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $50, %rcx
3442*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3443*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $13, %ecx, %xmm1
3444*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rax, %rcx
3445*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shlq $49, %rcx
3446*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq $63, %rcx
3447*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $14, %ecx, %xmm1
3448*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $15, %rax
3449*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pinsrb $15, %eax, %xmm1
3450*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
3451*9880d681SAndroid Build Coastguard Worker;
3452*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_32i1_to_32i8:
3453*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
3454*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %rbp
3455*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %r15
3456*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %r14
3457*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %r13
3458*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %r12
3459*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    pushq %rbx
3460*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movslq (%rdi), %rax
3461*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
3462*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $47, %rcx
3463*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
3464*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %ecx, %xmm0
3465*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r8
3466*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
3467*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
3468*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdi
3469*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r13
3470*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rsi
3471*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r10
3472*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r11
3473*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r9
3474*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rbx
3475*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r14
3476*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r15
3477*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r12
3478*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rbp
3479*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $46, %rbp
3480*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rbp
3481*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $1, %ebp, %xmm0, %xmm0
3482*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rbp
3483*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $45, %r8
3484*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r8
3485*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $2, %r8d, %xmm0, %xmm0
3486*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r8
3487*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $44, %rdx
3488*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
3489*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $3, %edx, %xmm0, %xmm0
3490*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
3491*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $43, %rcx
3492*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
3493*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $4, %ecx, %xmm0, %xmm0
3494*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rcx
3495*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $42, %rdi
3496*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdi
3497*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $5, %edi, %xmm0, %xmm0
3498*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdi
3499*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $41, %r13
3500*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r13
3501*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $6, %r13d, %xmm0, %xmm0
3502*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r13
3503*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $40, %rsi
3504*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rsi
3505*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $7, %esi, %xmm0, %xmm0
3506*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rsi
3507*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $39, %r10
3508*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r10
3509*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $8, %r10d, %xmm0, %xmm0
3510*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r10
3511*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $38, %r11
3512*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r11
3513*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $9, %r11d, %xmm0, %xmm0
3514*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movsbq %al, %r11
3515*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $37, %r9
3516*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r9
3517*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $10, %r9d, %xmm0, %xmm0
3518*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r9
3519*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $36, %rbx
3520*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rbx
3521*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $11, %ebx, %xmm0, %xmm0
3522*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rbx
3523*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $35, %r14
3524*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r14
3525*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $12, %r14d, %xmm0, %xmm0
3526*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r14
3527*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $34, %r15
3528*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r15
3529*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $13, %r15d, %xmm0, %xmm0
3530*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r15
3531*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $33, %r12
3532*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r12
3533*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $14, %r12d, %xmm0, %xmm0
3534*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %r12
3535*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shrq $31, %rbp
3536*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $15, %ebp, %xmm0, %xmm0
3537*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rbp
3538*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $63, %rdx
3539*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
3540*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovd %edx, %xmm1
3541*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movq %rax, %rdx
3542*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    movswq %ax, %rax
3543*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $62, %r8
3544*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r8
3545*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $1, %r8d, %xmm1, %xmm1
3546*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $61, %rcx
3547*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rcx
3548*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $2, %ecx, %xmm1, %xmm1
3549*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $60, %rdi
3550*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdi
3551*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $3, %edi, %xmm1, %xmm1
3552*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $59, %r13
3553*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r13
3554*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $4, %r13d, %xmm1, %xmm1
3555*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $58, %rsi
3556*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rsi
3557*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $5, %esi, %xmm1, %xmm1
3558*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $57, %r10
3559*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r10
3560*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $6, %r10d, %xmm1, %xmm1
3561*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shrq $7, %r11
3562*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $7, %r11d, %xmm1, %xmm1
3563*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $55, %r9
3564*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r9
3565*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $8, %r9d, %xmm1, %xmm1
3566*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $54, %rbx
3567*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rbx
3568*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $9, %ebx, %xmm1, %xmm1
3569*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $53, %r14
3570*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r14
3571*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $10, %r14d, %xmm1, %xmm1
3572*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $52, %r15
3573*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r15
3574*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $11, %r15d, %xmm1, %xmm1
3575*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $51, %r12
3576*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %r12
3577*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $12, %r12d, %xmm1, %xmm1
3578*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $50, %rbp
3579*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rbp
3580*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $13, %ebp, %xmm1, %xmm1
3581*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shlq $49, %rdx
3582*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    sarq $63, %rdx
3583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $14, %edx, %xmm1, %xmm1
3584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    shrq $15, %rax
3585*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
3586*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
3587*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %rbx
3588*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %r12
3589*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %r13
3590*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %r14
3591*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %r15
3592*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    popq %rbp
3593*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3594*9880d681SAndroid Build Coastguard Worker;
3595*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_32i1_to_32i8:
3596*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
3597*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %rbp
3598*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %r15
3599*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %r14
3600*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %r13
3601*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %r12
3602*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    pushq %rbx
3603*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movslq (%rdi), %rax
3604*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
3605*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $47, %rcx
3606*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
3607*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %ecx, %xmm0
3608*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r8
3609*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdx
3610*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
3611*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdi
3612*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r13
3613*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rsi
3614*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r10
3615*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r11
3616*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r9
3617*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rbx
3618*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r14
3619*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r15
3620*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r12
3621*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rbp
3622*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $46, %rbp
3623*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rbp
3624*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $1, %ebp, %xmm0, %xmm0
3625*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rbp
3626*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $45, %r8
3627*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r8
3628*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $2, %r8d, %xmm0, %xmm0
3629*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r8
3630*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $44, %rdx
3631*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdx
3632*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $3, %edx, %xmm0, %xmm0
3633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdx
3634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $43, %rcx
3635*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
3636*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $4, %ecx, %xmm0, %xmm0
3637*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rcx
3638*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $42, %rdi
3639*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdi
3640*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $5, %edi, %xmm0, %xmm0
3641*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdi
3642*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $41, %r13
3643*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r13
3644*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $6, %r13d, %xmm0, %xmm0
3645*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r13
3646*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $40, %rsi
3647*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rsi
3648*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $7, %esi, %xmm0, %xmm0
3649*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rsi
3650*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $39, %r10
3651*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r10
3652*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $8, %r10d, %xmm0, %xmm0
3653*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r10
3654*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $38, %r11
3655*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r11
3656*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $9, %r11d, %xmm0, %xmm0
3657*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movsbq %al, %r11
3658*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $37, %r9
3659*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r9
3660*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $10, %r9d, %xmm0, %xmm0
3661*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r9
3662*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $36, %rbx
3663*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rbx
3664*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $11, %ebx, %xmm0, %xmm0
3665*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rbx
3666*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $35, %r14
3667*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r14
3668*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $12, %r14d, %xmm0, %xmm0
3669*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r14
3670*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $34, %r15
3671*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r15
3672*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $13, %r15d, %xmm0, %xmm0
3673*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r15
3674*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $33, %r12
3675*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r12
3676*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $14, %r12d, %xmm0, %xmm0
3677*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %r12
3678*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrq $31, %rbp
3679*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $15, %ebp, %xmm0, %xmm0
3680*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rbp
3681*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $63, %rdx
3682*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdx
3683*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovd %edx, %xmm1
3684*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movq %rax, %rdx
3685*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    movswq %ax, %rax
3686*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $62, %r8
3687*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r8
3688*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $1, %r8d, %xmm1, %xmm1
3689*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $61, %rcx
3690*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rcx
3691*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $2, %ecx, %xmm1, %xmm1
3692*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $60, %rdi
3693*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdi
3694*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $3, %edi, %xmm1, %xmm1
3695*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $59, %r13
3696*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r13
3697*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $4, %r13d, %xmm1, %xmm1
3698*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $58, %rsi
3699*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rsi
3700*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $5, %esi, %xmm1, %xmm1
3701*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $57, %r10
3702*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r10
3703*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $6, %r10d, %xmm1, %xmm1
3704*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrq $7, %r11
3705*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $7, %r11d, %xmm1, %xmm1
3706*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $55, %r9
3707*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r9
3708*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $8, %r9d, %xmm1, %xmm1
3709*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $54, %rbx
3710*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rbx
3711*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $9, %ebx, %xmm1, %xmm1
3712*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $53, %r14
3713*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r14
3714*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $10, %r14d, %xmm1, %xmm1
3715*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $52, %r15
3716*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r15
3717*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $11, %r15d, %xmm1, %xmm1
3718*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $51, %r12
3719*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %r12
3720*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $12, %r12d, %xmm1, %xmm1
3721*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $50, %rbp
3722*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rbp
3723*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $13, %ebp, %xmm1, %xmm1
3724*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shlq $49, %rdx
3725*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    sarq $63, %rdx
3726*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $14, %edx, %xmm1, %xmm1
3727*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    shrq $15, %rax
3728*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
3729*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0
3730*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %rbx
3731*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %r12
3732*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %r13
3733*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %r14
3734*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %r15
3735*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    popq %rbp
3736*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3737*9880d681SAndroid Build Coastguard Worker;
3738*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_32i1_to_32i8:
3739*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
3740*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    kmovw (%rdi), %k1
3741*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
3742*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa32 %zmm0, %zmm1 {%k1} {z}
3743*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovdb %zmm1, %xmm1
3744*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    kmovw 2(%rdi), %k1
3745*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
3746*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovdb %zmm0, %xmm0
3747*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
3748*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
3749*9880d681SAndroid Build Coastguard Worker;
3750*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_32i1_to_32i8:
3751*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
3752*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pushl %esi
3753*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
3754*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movswl (%eax), %ecx
3755*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3756*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $30, %edx
3757*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3758*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %esi
3759*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $31, %esi
3760*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %esi
3761*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %esi, %xmm0
3762*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $1, %edx, %xmm0
3763*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3764*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $29, %edx
3765*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3766*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $2, %edx, %xmm0
3767*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3768*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $28, %edx
3769*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3770*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $3, %edx, %xmm0
3771*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3772*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $27, %edx
3773*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3774*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $4, %edx, %xmm0
3775*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3776*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $26, %edx
3777*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3778*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $5, %edx, %xmm0
3779*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3780*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $25, %edx
3781*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3782*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $6, %edx, %xmm0
3783*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movsbl %cl, %edx
3784*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $7, %edx
3785*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $7, %edx, %xmm0
3786*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3787*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $23, %edx
3788*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3789*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $8, %edx, %xmm0
3790*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3791*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $22, %edx
3792*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3793*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $9, %edx, %xmm0
3794*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3795*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $21, %edx
3796*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3797*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $10, %edx, %xmm0
3798*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3799*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $20, %edx
3800*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3801*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $11, %edx, %xmm0
3802*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3803*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $19, %edx
3804*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3805*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $12, %edx, %xmm0
3806*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3807*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $18, %edx
3808*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3809*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $13, %edx, %xmm0
3810*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %ecx, %edx
3811*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $17, %edx
3812*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3813*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $14, %edx, %xmm0
3814*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $15, %ecx
3815*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $15, %ecx, %xmm0
3816*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movswl 2(%eax), %eax
3817*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3818*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $30, %ecx
3819*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3820*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %edx
3821*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $31, %edx
3822*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %edx
3823*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %edx, %xmm1
3824*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $1, %ecx, %xmm1
3825*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3826*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $29, %ecx
3827*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3828*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $2, %ecx, %xmm1
3829*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3830*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $28, %ecx
3831*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3832*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $3, %ecx, %xmm1
3833*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3834*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $27, %ecx
3835*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3836*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $4, %ecx, %xmm1
3837*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3838*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $26, %ecx
3839*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3840*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $5, %ecx, %xmm1
3841*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3842*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $25, %ecx
3843*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3844*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $6, %ecx, %xmm1
3845*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movsbl %al, %ecx
3846*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $7, %ecx
3847*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $7, %ecx, %xmm1
3848*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3849*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $23, %ecx
3850*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3851*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $8, %ecx, %xmm1
3852*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3853*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $22, %ecx
3854*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3855*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $9, %ecx, %xmm1
3856*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3857*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $21, %ecx
3858*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3859*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $10, %ecx, %xmm1
3860*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3861*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $20, %ecx
3862*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3863*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $11, %ecx, %xmm1
3864*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3865*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $19, %ecx
3866*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3867*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $12, %ecx, %xmm1
3868*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3869*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $18, %ecx
3870*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3871*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $13, %ecx, %xmm1
3872*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl %eax, %ecx
3873*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shll $17, %ecx
3874*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    sarl $31, %ecx
3875*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $14, %ecx, %xmm1
3876*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    shrl $15, %eax
3877*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pinsrb $15, %eax, %xmm1
3878*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    popl %esi
3879*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
3880*9880d681SAndroid Build Coastguard Workerentry:
3881*9880d681SAndroid Build Coastguard Worker %X = load <32 x i1>, <32 x i1>* %ptr
3882*9880d681SAndroid Build Coastguard Worker %Y = sext <32 x i1> %X to <32 x i8>
3883*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %Y
3884*9880d681SAndroid Build Coastguard Worker}
3885*9880d681SAndroid Build Coastguard Worker
3886*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @load_sext_16i8_to_16i16(<16 x i8> *%ptr) {
3887*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_16i8_to_16i16:
3888*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
3889*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
3890*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3891*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm0
3892*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
3893*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3894*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm1
3895*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
3896*9880d681SAndroid Build Coastguard Worker;
3897*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_16i8_to_16i16:
3898*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
3899*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
3900*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3901*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psraw $8, %xmm0
3902*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
3903*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3904*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psraw $8, %xmm1
3905*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
3906*9880d681SAndroid Build Coastguard Worker;
3907*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_16i8_to_16i16:
3908*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
3909*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw (%rdi), %xmm0
3910*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw 8(%rdi), %xmm1
3911*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
3912*9880d681SAndroid Build Coastguard Worker;
3913*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_16i8_to_16i16:
3914*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
3915*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw (%rdi), %xmm0
3916*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw 8(%rdi), %xmm1
3917*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
3918*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
3919*9880d681SAndroid Build Coastguard Worker;
3920*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_16i8_to_16i16:
3921*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
3922*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbw (%rdi), %ymm0
3923*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
3924*9880d681SAndroid Build Coastguard Worker;
3925*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_16i8_to_16i16:
3926*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
3927*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxbw (%rdi), %ymm0
3928*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
3929*9880d681SAndroid Build Coastguard Worker;
3930*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_16i8_to_16i16:
3931*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
3932*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
3933*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbw (%eax), %xmm0
3934*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbw 8(%eax), %xmm1
3935*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
3936*9880d681SAndroid Build Coastguard Workerentry:
3937*9880d681SAndroid Build Coastguard Worker %X = load <16 x i8>, <16 x i8>* %ptr
3938*9880d681SAndroid Build Coastguard Worker %Y = sext <16 x i8> %X to <16 x i16>
3939*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %Y
3940*9880d681SAndroid Build Coastguard Worker}
3941*9880d681SAndroid Build Coastguard Worker
3942*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_sext_2i16_to_2i64(<2 x i16> *%ptr) {
3943*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_2i16_to_2i64:
3944*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
3945*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
3946*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
3947*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
3948*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
3949*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm0
3950*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3951*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
3952*9880d681SAndroid Build Coastguard Worker;
3953*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_2i16_to_2i64:
3954*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
3955*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
3956*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
3957*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
3958*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
3959*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm0
3960*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3961*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
3962*9880d681SAndroid Build Coastguard Worker;
3963*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_2i16_to_2i64:
3964*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
3965*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwq (%rdi), %xmm0
3966*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
3967*9880d681SAndroid Build Coastguard Worker;
3968*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_2i16_to_2i64:
3969*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
3970*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxwq (%rdi), %xmm0
3971*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
3972*9880d681SAndroid Build Coastguard Worker;
3973*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_2i16_to_2i64:
3974*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
3975*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
3976*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwq (%eax), %xmm0
3977*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
3978*9880d681SAndroid Build Coastguard Workerentry:
3979*9880d681SAndroid Build Coastguard Worker %X = load <2 x i16>, <2 x i16>* %ptr
3980*9880d681SAndroid Build Coastguard Worker %Y = sext <2 x i16> %X to <2 x i64>
3981*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y
3982*9880d681SAndroid Build Coastguard Worker}
3983*9880d681SAndroid Build Coastguard Worker
3984*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_sext_4i16_to_4i32(<4 x i16> *%ptr) {
3985*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i16_to_4i32:
3986*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
3987*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
3988*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
3989*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm0
3990*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
3991*9880d681SAndroid Build Coastguard Worker;
3992*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i16_to_4i32:
3993*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
3994*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
3995*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
3996*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm0
3997*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
3998*9880d681SAndroid Build Coastguard Worker;
3999*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i16_to_4i32:
4000*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
4001*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwd (%rdi), %xmm0
4002*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
4003*9880d681SAndroid Build Coastguard Worker;
4004*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_4i16_to_4i32:
4005*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
4006*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxwd (%rdi), %xmm0
4007*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
4008*9880d681SAndroid Build Coastguard Worker;
4009*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i16_to_4i32:
4010*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
4011*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
4012*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwd (%eax), %xmm0
4013*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
4014*9880d681SAndroid Build Coastguard Workerentry:
4015*9880d681SAndroid Build Coastguard Worker %X = load <4 x i16>, <4 x i16>* %ptr
4016*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i16> %X to <4 x i32>
4017*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y
4018*9880d681SAndroid Build Coastguard Worker}
4019*9880d681SAndroid Build Coastguard Worker
4020*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_sext_4i16_to_4i64(<4 x i16> *%ptr) {
4021*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i16_to_4i64:
4022*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
4023*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswq 2(%rdi), %rax
4024*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm1
4025*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswq (%rdi), %rax
4026*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm0
4027*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
4028*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswq 6(%rdi), %rax
4029*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm2
4030*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movswq 4(%rdi), %rax
4031*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rax, %xmm1
4032*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
4033*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
4034*9880d681SAndroid Build Coastguard Worker;
4035*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i16_to_4i64:
4036*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
4037*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswq 2(%rdi), %rax
4038*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm1
4039*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswq (%rdi), %rax
4040*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm0
4041*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
4042*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswq 6(%rdi), %rax
4043*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm2
4044*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movswq 4(%rdi), %rax
4045*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %rax, %xmm1
4046*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
4047*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
4048*9880d681SAndroid Build Coastguard Worker;
4049*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i16_to_4i64:
4050*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
4051*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwq (%rdi), %xmm0
4052*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwq 4(%rdi), %xmm1
4053*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
4054*9880d681SAndroid Build Coastguard Worker;
4055*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i16_to_4i64:
4056*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
4057*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxwd (%rdi), %xmm0
4058*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
4059*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4060*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
4061*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
4062*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
4063*9880d681SAndroid Build Coastguard Worker;
4064*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i16_to_4i64:
4065*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
4066*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxwq (%rdi), %ymm0
4067*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
4068*9880d681SAndroid Build Coastguard Worker;
4069*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i16_to_4i64:
4070*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
4071*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxwq (%rdi), %ymm0
4072*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
4073*9880d681SAndroid Build Coastguard Worker;
4074*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i16_to_4i64:
4075*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
4076*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
4077*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwq (%eax), %xmm0
4078*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwq 4(%eax), %xmm1
4079*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
4080*9880d681SAndroid Build Coastguard Workerentry:
4081*9880d681SAndroid Build Coastguard Worker %X = load <4 x i16>, <4 x i16>* %ptr
4082*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i16> %X to <4 x i64>
4083*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y
4084*9880d681SAndroid Build Coastguard Worker}
4085*9880d681SAndroid Build Coastguard Worker
4086*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_sext_8i16_to_8i32(<8 x i16> *%ptr) {
4087*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_8i16_to_8i32:
4088*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
4089*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
4090*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
4091*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm0
4092*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
4093*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3]
4094*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $16, %xmm1
4095*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
4096*9880d681SAndroid Build Coastguard Worker;
4097*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_8i16_to_8i32:
4098*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
4099*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
4100*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
4101*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm0
4102*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
4103*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3]
4104*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $16, %xmm1
4105*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
4106*9880d681SAndroid Build Coastguard Worker;
4107*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_8i16_to_8i32:
4108*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
4109*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwd (%rdi), %xmm0
4110*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxwd 8(%rdi), %xmm1
4111*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
4112*9880d681SAndroid Build Coastguard Worker;
4113*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_8i16_to_8i32:
4114*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
4115*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxwd (%rdi), %xmm0
4116*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxwd 8(%rdi), %xmm1
4117*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
4118*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
4119*9880d681SAndroid Build Coastguard Worker;
4120*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_8i16_to_8i32:
4121*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
4122*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxwd (%rdi), %ymm0
4123*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
4124*9880d681SAndroid Build Coastguard Worker;
4125*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_8i16_to_8i32:
4126*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
4127*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxwd (%rdi), %ymm0
4128*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
4129*9880d681SAndroid Build Coastguard Worker;
4130*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_8i16_to_8i32:
4131*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
4132*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
4133*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwd (%eax), %xmm0
4134*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxwd 8(%eax), %xmm1
4135*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
4136*9880d681SAndroid Build Coastguard Workerentry:
4137*9880d681SAndroid Build Coastguard Worker %X = load <8 x i16>, <8 x i16>* %ptr
4138*9880d681SAndroid Build Coastguard Worker %Y = sext <8 x i16> %X to <8 x i32>
4139*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y
4140*9880d681SAndroid Build Coastguard Worker}
4141*9880d681SAndroid Build Coastguard Worker
4142*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_sext_2i32_to_2i64(<2 x i32> *%ptr) {
4143*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_2i32_to_2i64:
4144*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
4145*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
4146*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
4147*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
4148*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
4149*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
4150*9880d681SAndroid Build Coastguard Worker;
4151*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_2i32_to_2i64:
4152*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
4153*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
4154*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
4155*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm1
4156*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
4157*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
4158*9880d681SAndroid Build Coastguard Worker;
4159*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_2i32_to_2i64:
4160*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
4161*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq (%rdi), %xmm0
4162*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
4163*9880d681SAndroid Build Coastguard Worker;
4164*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_sext_2i32_to_2i64:
4165*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
4166*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxdq (%rdi), %xmm0
4167*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
4168*9880d681SAndroid Build Coastguard Worker;
4169*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_2i32_to_2i64:
4170*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
4171*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
4172*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq (%eax), %xmm0
4173*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
4174*9880d681SAndroid Build Coastguard Workerentry:
4175*9880d681SAndroid Build Coastguard Worker %X = load <2 x i32>, <2 x i32>* %ptr
4176*9880d681SAndroid Build Coastguard Worker %Y = sext <2 x i32> %X to <2 x i64>
4177*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y
4178*9880d681SAndroid Build Coastguard Worker}
4179*9880d681SAndroid Build Coastguard Worker
4180*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_sext_4i32_to_4i64(<4 x i32> *%ptr) {
4181*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_sext_4i32_to_4i64:
4182*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
4183*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa (%rdi), %xmm0
4184*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm2
4185*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
4186*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
4187*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
4188*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm2
4189*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
4190*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
4191*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
4192*9880d681SAndroid Build Coastguard Worker;
4193*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_sext_4i32_to_4i64:
4194*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
4195*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa (%rdi), %xmm0
4196*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm2
4197*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
4198*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
4199*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
4200*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm2
4201*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
4202*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
4203*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
4204*9880d681SAndroid Build Coastguard Worker;
4205*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_sext_4i32_to_4i64:
4206*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
4207*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq (%rdi), %xmm0
4208*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq 8(%rdi), %xmm1
4209*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
4210*9880d681SAndroid Build Coastguard Worker;
4211*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_sext_4i32_to_4i64:
4212*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
4213*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq (%rdi), %xmm0
4214*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq 8(%rdi), %xmm1
4215*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
4216*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
4217*9880d681SAndroid Build Coastguard Worker;
4218*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_sext_4i32_to_4i64:
4219*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
4220*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxdq (%rdi), %ymm0
4221*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
4222*9880d681SAndroid Build Coastguard Worker;
4223*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_sext_4i32_to_4i64:
4224*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
4225*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxdq (%rdi), %ymm0
4226*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
4227*9880d681SAndroid Build Coastguard Worker;
4228*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: load_sext_4i32_to_4i64:
4229*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
4230*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movl {{[0-9]+}}(%esp), %eax
4231*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq (%eax), %xmm0
4232*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq 8(%eax), %xmm1
4233*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
4234*9880d681SAndroid Build Coastguard Workerentry:
4235*9880d681SAndroid Build Coastguard Worker %X = load <4 x i32>, <4 x i32>* %ptr
4236*9880d681SAndroid Build Coastguard Worker %Y = sext <4 x i32> %X to <4 x i64>
4237*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y
4238*9880d681SAndroid Build Coastguard Worker}
4239*9880d681SAndroid Build Coastguard Worker
4240*9880d681SAndroid Build Coastguard Workerdefine i32 @sext_2i8_to_i32(<16 x i8> %A) nounwind uwtable readnone ssp {
4241*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_2i8_to_i32:
4242*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
4243*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
4244*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm0
4245*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %xmm0, %eax
4246*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
4247*9880d681SAndroid Build Coastguard Worker;
4248*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_2i8_to_i32:
4249*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
4250*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
4251*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psraw $8, %xmm0
4252*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %xmm0, %eax
4253*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
4254*9880d681SAndroid Build Coastguard Worker;
4255*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_2i8_to_i32:
4256*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
4257*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm0, %xmm0
4258*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %xmm0, %eax
4259*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
4260*9880d681SAndroid Build Coastguard Worker;
4261*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sext_2i8_to_i32:
4262*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
4263*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovsxbw %xmm0, %xmm0
4264*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovd %xmm0, %eax
4265*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
4266*9880d681SAndroid Build Coastguard Worker;
4267*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_2i8_to_i32:
4268*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0: # %entry
4269*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pushl %eax
4270*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:  .Ltmp0:
4271*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    .cfi_def_cfa_offset 8
4272*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxbw %xmm0, %xmm0
4273*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movd %xmm0, %eax
4274*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    popl %ecx
4275*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
4276*9880d681SAndroid Build Coastguard Workerentry:
4277*9880d681SAndroid Build Coastguard Worker  %Shuf = shufflevector <16 x i8> %A, <16 x i8> undef, <2 x i32> <i32 0, i32 1>
4278*9880d681SAndroid Build Coastguard Worker  %Ex = sext <2 x i8> %Shuf to <2 x i16>
4279*9880d681SAndroid Build Coastguard Worker  %Bc = bitcast <2 x i16> %Ex to i32
4280*9880d681SAndroid Build Coastguard Worker  ret i32 %Bc
4281*9880d681SAndroid Build Coastguard Worker}
4282*9880d681SAndroid Build Coastguard Worker
4283*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4i1_to_4i64(<4 x i1> %mask) {
4284*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_4i1_to_4i64:
4285*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
4286*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslld $31, %xmm0
4287*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm0
4288*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm2
4289*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
4290*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
4291*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
4292*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm2
4293*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
4294*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
4295*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
4296*9880d681SAndroid Build Coastguard Worker;
4297*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_4i1_to_4i64:
4298*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
4299*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pslld $31, %xmm0
4300*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm0
4301*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm2
4302*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
4303*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
4304*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
4305*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm2
4306*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
4307*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
4308*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
4309*9880d681SAndroid Build Coastguard Worker;
4310*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_4i1_to_4i64:
4311*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
4312*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pslld $31, %xmm0
4313*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrad $31, %xmm0
4314*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq %xmm0, %xmm2
4315*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4316*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq %xmm0, %xmm1
4317*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
4318*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
4319*9880d681SAndroid Build Coastguard Worker;
4320*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_4i1_to_4i64:
4321*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
4322*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld $31, %xmm0, %xmm0
4323*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrad $31, %xmm0, %xmm0
4324*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
4325*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4326*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
4327*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
4328*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
4329*9880d681SAndroid Build Coastguard Worker;
4330*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_4i1_to_4i64:
4331*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
4332*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpslld $31, %xmm0, %xmm0
4333*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrad $31, %xmm0, %xmm0
4334*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
4335*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
4336*9880d681SAndroid Build Coastguard Worker;
4337*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_4i1_to_4i64:
4338*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0:
4339*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpslld $31, %xmm0, %xmm0
4340*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsrad $31, %xmm0, %xmm0
4341*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxdq %xmm0, %ymm0
4342*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
4343*9880d681SAndroid Build Coastguard Worker;
4344*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_4i1_to_4i64:
4345*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0:
4346*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pslld $31, %xmm0
4347*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psrad $31, %xmm0
4348*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq %xmm0, %xmm2
4349*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4350*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq %xmm0, %xmm1
4351*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm2, %xmm0
4352*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
4353*9880d681SAndroid Build Coastguard Worker  %extmask = sext <4 x i1> %mask to <4 x i64>
4354*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %extmask
4355*9880d681SAndroid Build Coastguard Worker}
4356*9880d681SAndroid Build Coastguard Worker
4357*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @sext_4i8_to_4i64(<4 x i8> %mask) {
4358*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: sext_4i8_to_4i64:
4359*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
4360*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pslld $24, %xmm0
4361*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $24, %xmm0
4362*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm2
4363*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
4364*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
4365*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
4366*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm2
4367*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
4368*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
4369*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
4370*9880d681SAndroid Build Coastguard Worker;
4371*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: sext_4i8_to_4i64:
4372*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0:
4373*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pslld $24, %xmm0
4374*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $24, %xmm0
4375*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm2
4376*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
4377*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
4378*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
4379*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm2
4380*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrad $31, %xmm2
4381*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
4382*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
4383*9880d681SAndroid Build Coastguard Worker;
4384*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: sext_4i8_to_4i64:
4385*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
4386*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pslld $24, %xmm0
4387*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrad $24, %xmm0
4388*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq %xmm0, %xmm2
4389*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4390*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxdq %xmm0, %xmm1
4391*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
4392*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
4393*9880d681SAndroid Build Coastguard Worker;
4394*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: sext_4i8_to_4i64:
4395*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
4396*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslld $24, %xmm0, %xmm0
4397*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrad $24, %xmm0, %xmm0
4398*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm1
4399*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4400*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxdq %xmm0, %xmm0
4401*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
4402*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
4403*9880d681SAndroid Build Coastguard Worker;
4404*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: sext_4i8_to_4i64:
4405*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
4406*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpslld $24, %xmm0, %xmm0
4407*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrad $24, %xmm0, %xmm0
4408*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxdq %xmm0, %ymm0
4409*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
4410*9880d681SAndroid Build Coastguard Worker;
4411*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: sext_4i8_to_4i64:
4412*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0:
4413*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpslld $24, %xmm0, %xmm0
4414*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsrad $24, %xmm0, %xmm0
4415*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovsxdq %xmm0, %ymm0
4416*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
4417*9880d681SAndroid Build Coastguard Worker;
4418*9880d681SAndroid Build Coastguard Worker; X32-SSE41-LABEL: sext_4i8_to_4i64:
4419*9880d681SAndroid Build Coastguard Worker; X32-SSE41:       # BB#0:
4420*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pslld $24, %xmm0
4421*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    psrad $24, %xmm0
4422*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq %xmm0, %xmm2
4423*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4424*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    pmovsxdq %xmm0, %xmm1
4425*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    movdqa %xmm2, %xmm0
4426*9880d681SAndroid Build Coastguard Worker; X32-SSE41-NEXT:    retl
4427*9880d681SAndroid Build Coastguard Worker  %extmask = sext <4 x i8> %mask to <4 x i64>
4428*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %extmask
4429*9880d681SAndroid Build Coastguard Worker}
4430