xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/vector-zext.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 Workerdefine <8 x i16> @zext_16i8_to_8i16(<16 x i8> %A) nounwind uwtable readnone ssp {
10*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_8i16:
11*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
12*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
13*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]
14*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
15*9880d681SAndroid Build Coastguard Worker;
16*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_8i16:
17*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
18*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
19*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]
20*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
21*9880d681SAndroid Build Coastguard Worker;
22*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_8i16:
23*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
24*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
25*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
26*9880d681SAndroid Build Coastguard Worker;
27*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_16i8_to_8i16:
28*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
29*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
30*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
31*9880d681SAndroid Build Coastguard Workerentry:
32*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>
33*9880d681SAndroid Build Coastguard Worker  %C = zext <8 x i8> %B to <8 x i16>
34*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %C
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker; PR17654
38*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @zext_16i8_to_16i16(<16 x i8> %A) {
39*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_16i16:
40*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
41*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
42*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
43*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]
44*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
45*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
46*9880d681SAndroid Build Coastguard Worker;
47*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_16i16:
48*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
49*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
50*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
51*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]
52*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
53*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
54*9880d681SAndroid Build Coastguard Worker;
55*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_16i16:
56*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
57*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
58*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm2, %xmm2
59*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
60*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
61*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
62*9880d681SAndroid Build Coastguard Worker;
63*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_16i8_to_16i16:
64*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
65*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1
66*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhbw {{.*#+}} xmm1 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
67*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
68*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
69*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
70*9880d681SAndroid Build Coastguard Worker;
71*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_16i8_to_16i16:
72*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
73*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero
74*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
75*9880d681SAndroid Build Coastguard Worker;
76*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_16i8_to_16i16:
77*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
78*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero
79*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
80*9880d681SAndroid Build Coastguard Workerentry:
81*9880d681SAndroid Build Coastguard Worker  %B = zext <16 x i8> %A to <16 x i16>
82*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %B
83*9880d681SAndroid Build Coastguard Worker}
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @zext_16i8_to_4i32(<16 x i8> %A) nounwind uwtable readnone ssp {
86*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_4i32:
87*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
88*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
89*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]
90*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
91*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
92*9880d681SAndroid Build Coastguard Worker;
93*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_4i32:
94*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
95*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
96*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]
97*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
98*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
99*9880d681SAndroid Build Coastguard Worker;
100*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_4i32:
101*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
102*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
103*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
104*9880d681SAndroid Build Coastguard Worker;
105*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_16i8_to_4i32:
106*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
107*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
108*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
109*9880d681SAndroid Build Coastguard Workerentry:
110*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>
111*9880d681SAndroid Build Coastguard Worker  %C = zext <4 x i8> %B to <4 x i32>
112*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %C
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_16i8_to_8i32(<16 x i8> %A) nounwind uwtable readnone ssp {
116*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_8i32:
117*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
118*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
119*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
120*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]
121*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
122*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
123*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
124*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
125*9880d681SAndroid Build Coastguard Worker;
126*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_8i32:
127*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
128*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
129*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
130*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]
131*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
132*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
133*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
134*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
135*9880d681SAndroid Build Coastguard Worker;
136*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_8i32:
137*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
138*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm2 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
139*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
140*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
141*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
142*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
143*9880d681SAndroid Build Coastguard Worker;
144*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_16i8_to_8i32:
145*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
146*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
147*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
148*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
149*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
150*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
151*9880d681SAndroid Build Coastguard Worker;
152*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_16i8_to_8i32:
153*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
154*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbd {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero
155*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
156*9880d681SAndroid Build Coastguard Worker;
157*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_16i8_to_8i32:
158*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
159*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbd {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero
160*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
161*9880d681SAndroid Build Coastguard Workerentry:
162*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>
163*9880d681SAndroid Build Coastguard Worker  %C = zext <8 x i8> %B to <8 x i32>
164*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %C
165*9880d681SAndroid Build Coastguard Worker}
166*9880d681SAndroid Build Coastguard Worker
167*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_16i8_to_2i64(<16 x i8> %A) nounwind uwtable readnone ssp {
168*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_2i64:
169*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
170*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
171*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]
172*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
173*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
174*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
175*9880d681SAndroid Build Coastguard Worker;
176*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_2i64:
177*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
178*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
179*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
180*9880d681SAndroid Build Coastguard Worker;
181*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_2i64:
182*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
183*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
184*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
185*9880d681SAndroid Build Coastguard Worker;
186*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_16i8_to_2i64:
187*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
188*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
189*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
190*9880d681SAndroid Build Coastguard Workerentry:
191*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i8> %A, <16 x i8> undef, <2 x i32> <i32 0, i32 1>
192*9880d681SAndroid Build Coastguard Worker  %C = zext <2 x i8> %B to <2 x i64>
193*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %C
194*9880d681SAndroid Build Coastguard Worker}
195*9880d681SAndroid Build Coastguard Worker
196*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_16i8_to_4i64(<16 x i8> %A) nounwind uwtable readnone ssp {
197*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_16i8_to_4i64:
198*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
199*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
200*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
201*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]
202*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
203*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
204*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
205*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
206*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
207*9880d681SAndroid Build Coastguard Worker;
208*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_16i8_to_4i64:
209*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
210*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
211*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
212*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[2],zero,zero,zero,zero,zero,zero,zero,xmm1[3],zero,zero,zero,zero,zero,zero,zero
213*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
214*9880d681SAndroid Build Coastguard Worker;
215*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_16i8_to_4i64:
216*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
217*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm2 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
218*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrld $16, %xmm0
219*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
220*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
221*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
222*9880d681SAndroid Build Coastguard Worker;
223*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_16i8_to_4i64:
224*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
225*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
226*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrld $16, %xmm0, %xmm0
227*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
228*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
229*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
230*9880d681SAndroid Build Coastguard Worker;
231*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_16i8_to_4i64:
232*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
233*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbq {{.*#+}} ymm0 = 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
234*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
235*9880d681SAndroid Build Coastguard Worker;
236*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_16i8_to_4i64:
237*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
238*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbq {{.*#+}} ymm0 = 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
239*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
240*9880d681SAndroid Build Coastguard Workerentry:
241*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>
242*9880d681SAndroid Build Coastguard Worker  %C = zext <4 x i8> %B to <4 x i64>
243*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %C
244*9880d681SAndroid Build Coastguard Worker}
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @zext_8i16_to_4i32(<8 x i16> %A) nounwind uwtable readnone ssp {
247*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i16_to_4i32:
248*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
249*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
250*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
251*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
252*9880d681SAndroid Build Coastguard Worker;
253*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i16_to_4i32:
254*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
255*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
256*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
257*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
258*9880d681SAndroid Build Coastguard Worker;
259*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i16_to_4i32:
260*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
261*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
262*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
263*9880d681SAndroid Build Coastguard Worker;
264*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_8i16_to_4i32:
265*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
266*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
267*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
268*9880d681SAndroid Build Coastguard Workerentry:
269*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>
270*9880d681SAndroid Build Coastguard Worker  %C = zext <4 x i16> %B to <4 x i32>
271*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %C
272*9880d681SAndroid Build Coastguard Worker}
273*9880d681SAndroid Build Coastguard Worker
274*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_8i16_to_8i32(<8 x i16> %A) nounwind uwtable readnone ssp {
275*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i16_to_8i32:
276*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
277*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
278*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
279*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
280*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
281*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
282*9880d681SAndroid Build Coastguard Worker;
283*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i16_to_8i32:
284*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
285*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
286*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
287*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
288*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
289*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
290*9880d681SAndroid Build Coastguard Worker;
291*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i16_to_8i32:
292*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
293*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
294*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm2, %xmm2
295*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
296*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
297*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
298*9880d681SAndroid Build Coastguard Worker;
299*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_8i16_to_8i32:
300*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
301*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1
302*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
303*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
304*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
305*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
306*9880d681SAndroid Build Coastguard Worker;
307*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_8i16_to_8i32:
308*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
309*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
310*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
311*9880d681SAndroid Build Coastguard Worker;
312*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_8i16_to_8i32:
313*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
314*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
315*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
316*9880d681SAndroid Build Coastguard Workerentry:
317*9880d681SAndroid Build Coastguard Worker  %B = zext <8 x i16> %A to <8 x i32>
318*9880d681SAndroid Build Coastguard Worker  ret <8 x i32>%B
319*9880d681SAndroid Build Coastguard Worker}
320*9880d681SAndroid Build Coastguard Worker
321*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_8i16_to_2i64(<8 x i16> %A) nounwind uwtable readnone ssp {
322*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i16_to_2i64:
323*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
324*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
325*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
326*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
327*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
328*9880d681SAndroid Build Coastguard Worker;
329*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i16_to_2i64:
330*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
331*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
332*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
333*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
334*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
335*9880d681SAndroid Build Coastguard Worker;
336*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i16_to_2i64:
337*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
338*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
339*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
340*9880d681SAndroid Build Coastguard Worker;
341*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_8i16_to_2i64:
342*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
343*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
344*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
345*9880d681SAndroid Build Coastguard Workerentry:
346*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i16> %A, <8 x i16> undef, <2 x i32> <i32 0, i32 1>
347*9880d681SAndroid Build Coastguard Worker  %C = zext <2 x i16> %B to <2 x i64>
348*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %C
349*9880d681SAndroid Build Coastguard Worker}
350*9880d681SAndroid Build Coastguard Worker
351*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_8i16_to_4i64(<8 x i16> %A) nounwind uwtable readnone ssp {
352*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i16_to_4i64:
353*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
354*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
355*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
356*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
357*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
358*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
359*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
360*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
361*9880d681SAndroid Build Coastguard Worker;
362*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i16_to_4i64:
363*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
364*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
365*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
366*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
367*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
368*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
369*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
370*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
371*9880d681SAndroid Build Coastguard Worker;
372*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i16_to_4i64:
373*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
374*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm2 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
375*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
376*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
377*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
378*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
379*9880d681SAndroid Build Coastguard Worker;
380*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_8i16_to_4i64:
381*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
382*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
383*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
384*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
385*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
386*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
387*9880d681SAndroid Build Coastguard Worker;
388*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_8i16_to_4i64:
389*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
390*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
391*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
392*9880d681SAndroid Build Coastguard Worker;
393*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_8i16_to_4i64:
394*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
395*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
396*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
397*9880d681SAndroid Build Coastguard Workerentry:
398*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>
399*9880d681SAndroid Build Coastguard Worker  %C = zext <4 x i16> %B to <4 x i64>
400*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %C
401*9880d681SAndroid Build Coastguard Worker}
402*9880d681SAndroid Build Coastguard Worker
403*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @zext_4i32_to_2i64(<4 x i32> %A) nounwind uwtable readnone ssp {
404*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_4i32_to_2i64:
405*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
406*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
407*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
408*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
409*9880d681SAndroid Build Coastguard Worker;
410*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_4i32_to_2i64:
411*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
412*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
413*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
414*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
415*9880d681SAndroid Build Coastguard Worker;
416*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_4i32_to_2i64:
417*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
418*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
419*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
420*9880d681SAndroid Build Coastguard Worker;
421*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: zext_4i32_to_2i64:
422*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
423*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
424*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
425*9880d681SAndroid Build Coastguard Workerentry:
426*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <4 x i32> %A, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
427*9880d681SAndroid Build Coastguard Worker  %C = zext <2 x i32> %B to <2 x i64>
428*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %C
429*9880d681SAndroid Build Coastguard Worker}
430*9880d681SAndroid Build Coastguard Worker
431*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @zext_4i32_to_4i64(<4 x i32> %A) nounwind uwtable readnone ssp {
432*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_4i32_to_4i64:
433*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
434*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
435*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
436*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
437*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
438*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
439*9880d681SAndroid Build Coastguard Worker;
440*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_4i32_to_4i64:
441*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
442*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
443*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
444*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
445*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
446*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
447*9880d681SAndroid Build Coastguard Worker;
448*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_4i32_to_4i64:
449*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
450*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
451*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm2, %xmm2
452*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
453*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
454*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
455*9880d681SAndroid Build Coastguard Worker;
456*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_4i32_to_4i64:
457*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
458*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1
459*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhdq {{.*#+}} xmm1 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
460*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
461*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
462*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
463*9880d681SAndroid Build Coastguard Worker;
464*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_4i32_to_4i64:
465*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
466*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
467*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
468*9880d681SAndroid Build Coastguard Worker;
469*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_4i32_to_4i64:
470*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
471*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
472*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
473*9880d681SAndroid Build Coastguard Workerentry:
474*9880d681SAndroid Build Coastguard Worker  %B = zext <4 x i32> %A to <4 x i64>
475*9880d681SAndroid Build Coastguard Worker  ret <4 x i64>%B
476*9880d681SAndroid Build Coastguard Worker}
477*9880d681SAndroid Build Coastguard Worker
478*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_zext_2i8_to_2i64(<2 x i8> *%ptr) {
479*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_2i8_to_2i64:
480*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
481*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movzwl (%rdi), %eax
482*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %eax, %xmm0
483*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
484*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]
485*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
486*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
487*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
488*9880d681SAndroid Build Coastguard Worker;
489*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_2i8_to_2i64:
490*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
491*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movzwl (%rdi), %eax
492*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd %eax, %xmm0
493*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
494*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
495*9880d681SAndroid Build Coastguard Worker;
496*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_2i8_to_2i64:
497*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
498*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
499*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
500*9880d681SAndroid Build Coastguard Worker;
501*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_2i8_to_2i64:
502*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
503*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
504*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
505*9880d681SAndroid Build Coastguard Workerentry:
506*9880d681SAndroid Build Coastguard Worker %X = load <2 x i8>, <2 x i8>* %ptr
507*9880d681SAndroid Build Coastguard Worker %Y = zext <2 x i8> %X to <2 x i64>
508*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y
509*9880d681SAndroid Build Coastguard Worker}
510*9880d681SAndroid Build Coastguard Worker
511*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_zext_4i8_to_4i32(<4 x i8> *%ptr) {
512*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i8_to_4i32:
513*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
514*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
515*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
516*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]
517*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
518*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
519*9880d681SAndroid Build Coastguard Worker;
520*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i8_to_4i32:
521*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
522*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
523*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
524*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]
525*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
526*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
527*9880d681SAndroid Build Coastguard Worker;
528*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i8_to_4i32:
529*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
530*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero
531*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
532*9880d681SAndroid Build Coastguard Worker;
533*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_4i8_to_4i32:
534*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
535*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxbd {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero
536*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
537*9880d681SAndroid Build Coastguard Workerentry:
538*9880d681SAndroid Build Coastguard Worker %X = load <4 x i8>, <4 x i8>* %ptr
539*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i8> %X to <4 x i32>
540*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y
541*9880d681SAndroid Build Coastguard Worker}
542*9880d681SAndroid Build Coastguard Worker
543*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_zext_4i8_to_4i64(<4 x i8> *%ptr) {
544*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i8_to_4i64:
545*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
546*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
547*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
548*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]
549*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
550*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
551*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
552*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
553*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
554*9880d681SAndroid Build Coastguard Worker;
555*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i8_to_4i64:
556*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
557*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
558*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
559*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
560*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[2],zero,zero,zero,zero,zero,zero,zero,xmm1[3],zero,zero,zero,zero,zero,zero,zero
561*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
562*9880d681SAndroid Build Coastguard Worker;
563*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i8_to_4i64:
564*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
565*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
566*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
567*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
568*9880d681SAndroid Build Coastguard Worker;
569*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_4i8_to_4i64:
570*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
571*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
572*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
573*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
574*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
575*9880d681SAndroid Build Coastguard Worker;
576*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_4i8_to_4i64:
577*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
578*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbq {{.*#+}} ymm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero
579*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
580*9880d681SAndroid Build Coastguard Worker;
581*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_4i8_to_4i64:
582*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
583*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbq {{.*#+}} ymm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero
584*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
585*9880d681SAndroid Build Coastguard Workerentry:
586*9880d681SAndroid Build Coastguard Worker %X = load <4 x i8>, <4 x i8>* %ptr
587*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i8> %X to <4 x i64>
588*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y
589*9880d681SAndroid Build Coastguard Worker}
590*9880d681SAndroid Build Coastguard Worker
591*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @load_zext_8i8_to_8i16(<8 x i8> *%ptr) {
592*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_8i8_to_8i16:
593*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
594*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
595*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
596*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]
597*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
598*9880d681SAndroid Build Coastguard Worker;
599*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_8i8_to_8i16:
600*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
601*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
602*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
603*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]
604*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
605*9880d681SAndroid Build Coastguard Worker;
606*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_8i8_to_8i16:
607*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
608*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbw {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero
609*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
610*9880d681SAndroid Build Coastguard Worker;
611*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_8i8_to_8i16:
612*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
613*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxbw {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero
614*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
615*9880d681SAndroid Build Coastguard Workerentry:
616*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr
617*9880d681SAndroid Build Coastguard Worker %Y = zext <8 x i8> %X to <8 x i16>
618*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %Y
619*9880d681SAndroid Build Coastguard Worker}
620*9880d681SAndroid Build Coastguard Worker
621*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_zext_8i8_to_8i32(<8 x i8> *%ptr) {
622*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_8i8_to_8i32:
623*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
624*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
625*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
626*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]
627*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
628*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
629*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
630*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
631*9880d681SAndroid Build Coastguard Worker;
632*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_8i8_to_8i32:
633*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
634*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
635*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
636*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]
637*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
638*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
639*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
640*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
641*9880d681SAndroid Build Coastguard Worker;
642*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_8i8_to_8i32:
643*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
644*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero
645*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero
646*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
647*9880d681SAndroid Build Coastguard Worker;
648*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_8i8_to_8i32:
649*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
650*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero
651*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero
652*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
653*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
654*9880d681SAndroid Build Coastguard Worker;
655*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_8i8_to_8i32:
656*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
657*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbd {{.*#+}} ymm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero
658*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
659*9880d681SAndroid Build Coastguard Worker;
660*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_8i8_to_8i32:
661*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
662*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbd {{.*#+}} ymm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero
663*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
664*9880d681SAndroid Build Coastguard Workerentry:
665*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr
666*9880d681SAndroid Build Coastguard Worker %Y = zext <8 x i8> %X to <8 x i32>
667*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y
668*9880d681SAndroid Build Coastguard Worker}
669*9880d681SAndroid Build Coastguard Worker
670*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_zext_16i8_to_8i32(<16 x i8> *%ptr) {
671*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_16i8_to_8i32:
672*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
673*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa (%rdi), %xmm1
674*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
675*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]
676*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
677*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
678*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
679*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
680*9880d681SAndroid Build Coastguard Worker;
681*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_16i8_to_8i32:
682*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
683*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa (%rdi), %xmm1
684*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
685*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]
686*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
687*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
688*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
689*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
690*9880d681SAndroid Build Coastguard Worker;
691*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_16i8_to_8i32:
692*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
693*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa (%rdi), %xmm1
694*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm0 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
695*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,2,3]
696*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zero,zero,zero,xmm1[3],zero,zero,zero
697*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
698*9880d681SAndroid Build Coastguard Worker;
699*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_16i8_to_8i32:
700*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
701*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa (%rdi), %xmm0
702*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
703*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
704*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
705*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
706*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
707*9880d681SAndroid Build Coastguard Worker;
708*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_16i8_to_8i32:
709*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
710*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbd {{.*#+}} ymm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero
711*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
712*9880d681SAndroid Build Coastguard Worker;
713*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_16i8_to_8i32:
714*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
715*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbd {{.*#+}} ymm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero
716*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
717*9880d681SAndroid Build Coastguard Workerentry:
718*9880d681SAndroid Build Coastguard Worker %X = load <16 x i8>, <16 x i8>* %ptr
719*9880d681SAndroid Build Coastguard Worker %Y = shufflevector <16 x i8> %X, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
720*9880d681SAndroid Build Coastguard Worker %Z = zext <8 x i8> %Y to <8 x i32>
721*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Z
722*9880d681SAndroid Build Coastguard Worker}
723*9880d681SAndroid Build Coastguard Worker
724*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @load_zext_8i8_to_8i64(<8 x i8> *%ptr) {
725*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_8i8_to_8i64:
726*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
727*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
728*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm4, %xmm4
729*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[1,1,2,3]
730*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]
731*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3]
732*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
733*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
734*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm4[2],xmm1[3],xmm4[3]
735*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]
736*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
737*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm3, %xmm2
738*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
739*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm4[2],xmm3[3],xmm4[3]
740*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
741*9880d681SAndroid Build Coastguard Worker;
742*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_8i8_to_8i64:
743*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
744*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
745*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa {{.*#+}} xmm4 = [0,128,128,128,128,128,128,128,1,128,128,128,128,128,128,128]
746*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
747*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb %xmm4, %xmm0
748*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa {{.*#+}} xmm5 = [2,128,128,128,128,128,128,128,3,128,128,128,128,128,128,128]
749*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[1,1,2,3]
750*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb %xmm5, %xmm1
751*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm3, %xmm2
752*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb %xmm4, %xmm2
753*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb %xmm5, %xmm3
754*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
755*9880d681SAndroid Build Coastguard Worker;
756*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_8i8_to_8i64:
757*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
758*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
759*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
760*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
761*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm3 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
762*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
763*9880d681SAndroid Build Coastguard Worker;
764*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_8i8_to_8i64:
765*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
766*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
767*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
768*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
769*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
770*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero
771*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
772*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
773*9880d681SAndroid Build Coastguard Worker;
774*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_8i8_to_8i64:
775*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
776*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbq {{.*#+}} ymm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero
777*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbq {{.*#+}} ymm1 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero
778*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
779*9880d681SAndroid Build Coastguard Worker;
780*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_8i8_to_8i64:
781*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
782*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbq {{.*#+}} zmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero,mem[4],zero,zero,zero,zero,zero,zero,zero,mem[5],zero,zero,zero,zero,zero,zero,zero,mem[6],zero,zero,zero,zero,zero,zero,zero,mem[7],zero,zero,zero,zero,zero,zero,zero
783*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
784*9880d681SAndroid Build Coastguard Workerentry:
785*9880d681SAndroid Build Coastguard Worker %X = load <8 x i8>, <8 x i8>* %ptr
786*9880d681SAndroid Build Coastguard Worker %Y = zext <8 x i8> %X to <8 x i64>
787*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %Y
788*9880d681SAndroid Build Coastguard Worker}
789*9880d681SAndroid Build Coastguard Worker
790*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @load_zext_16i8_to_16i16(<16 x i8> *%ptr) {
791*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_16i8_to_16i16:
792*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
793*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa (%rdi), %xmm1
794*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
795*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
796*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]
797*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
798*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
799*9880d681SAndroid Build Coastguard Worker;
800*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_16i8_to_16i16:
801*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
802*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa (%rdi), %xmm1
803*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
804*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
805*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]
806*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
807*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
808*9880d681SAndroid Build Coastguard Worker;
809*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_16i8_to_16i16:
810*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
811*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbw {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero
812*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbw {{.*#+}} xmm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero
813*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
814*9880d681SAndroid Build Coastguard Worker;
815*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_16i8_to_16i16:
816*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
817*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbw {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero
818*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbw {{.*#+}} xmm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero
819*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
820*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
821*9880d681SAndroid Build Coastguard Worker;
822*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_16i8_to_16i16:
823*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
824*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbw {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero
825*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
826*9880d681SAndroid Build Coastguard Worker;
827*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_16i8_to_16i16:
828*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
829*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbw {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero
830*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
831*9880d681SAndroid Build Coastguard Workerentry:
832*9880d681SAndroid Build Coastguard Worker %X = load <16 x i8>, <16 x i8>* %ptr
833*9880d681SAndroid Build Coastguard Worker %Y = zext <16 x i8> %X to <16 x i16>
834*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %Y
835*9880d681SAndroid Build Coastguard Worker}
836*9880d681SAndroid Build Coastguard Worker
837*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_zext_2i16_to_2i64(<2 x i16> *%ptr) {
838*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_2i16_to_2i64:
839*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
840*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
841*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
842*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
843*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
844*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
845*9880d681SAndroid Build Coastguard Worker;
846*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_2i16_to_2i64:
847*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
848*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
849*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
850*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
851*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
852*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
853*9880d681SAndroid Build Coastguard Worker;
854*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_2i16_to_2i64:
855*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
856*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero
857*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
858*9880d681SAndroid Build Coastguard Worker;
859*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_2i16_to_2i64:
860*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
861*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxwq {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero
862*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
863*9880d681SAndroid Build Coastguard Workerentry:
864*9880d681SAndroid Build Coastguard Worker %X = load <2 x i16>, <2 x i16>* %ptr
865*9880d681SAndroid Build Coastguard Worker %Y = zext <2 x i16> %X to <2 x i64>
866*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y
867*9880d681SAndroid Build Coastguard Worker}
868*9880d681SAndroid Build Coastguard Worker
869*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @load_zext_4i16_to_4i32(<4 x i16> *%ptr) {
870*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i16_to_4i32:
871*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
872*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
873*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
874*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
875*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
876*9880d681SAndroid Build Coastguard Worker;
877*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i16_to_4i32:
878*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
879*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
880*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
881*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
882*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
883*9880d681SAndroid Build Coastguard Worker;
884*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i16_to_4i32:
885*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
886*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
887*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
888*9880d681SAndroid Build Coastguard Worker;
889*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_4i16_to_4i32:
890*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
891*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxwd {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
892*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
893*9880d681SAndroid Build Coastguard Workerentry:
894*9880d681SAndroid Build Coastguard Worker %X = load <4 x i16>, <4 x i16>* %ptr
895*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i16> %X to <4 x i32>
896*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %Y
897*9880d681SAndroid Build Coastguard Worker}
898*9880d681SAndroid Build Coastguard Worker
899*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_zext_4i16_to_4i64(<4 x i16> *%ptr) {
900*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i16_to_4i64:
901*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
902*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
903*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
904*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
905*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
906*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
907*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
908*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
909*9880d681SAndroid Build Coastguard Worker;
910*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i16_to_4i64:
911*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
912*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
913*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
914*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
915*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
916*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
917*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
918*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
919*9880d681SAndroid Build Coastguard Worker;
920*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i16_to_4i64:
921*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
922*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero
923*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero
924*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
925*9880d681SAndroid Build Coastguard Worker;
926*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_4i16_to_4i64:
927*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
928*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero
929*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm1 = mem[0],zero,zero,zero,mem[1],zero,zero,zero
930*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
931*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
932*9880d681SAndroid Build Coastguard Worker;
933*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_4i16_to_4i64:
934*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
935*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwq {{.*#+}} ymm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero
936*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
937*9880d681SAndroid Build Coastguard Worker;
938*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_4i16_to_4i64:
939*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
940*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxwq {{.*#+}} ymm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero
941*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
942*9880d681SAndroid Build Coastguard Workerentry:
943*9880d681SAndroid Build Coastguard Worker %X = load <4 x i16>, <4 x i16>* %ptr
944*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i16> %X to <4 x i64>
945*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y
946*9880d681SAndroid Build Coastguard Worker}
947*9880d681SAndroid Build Coastguard Worker
948*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @load_zext_8i16_to_8i32(<8 x i16> *%ptr) {
949*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_8i16_to_8i32:
950*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
951*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa (%rdi), %xmm1
952*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
953*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
954*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
955*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
956*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
957*9880d681SAndroid Build Coastguard Worker;
958*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_8i16_to_8i32:
959*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
960*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa (%rdi), %xmm1
961*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
962*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
963*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
964*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
965*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
966*9880d681SAndroid Build Coastguard Worker;
967*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_8i16_to_8i32:
968*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
969*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
970*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
971*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
972*9880d681SAndroid Build Coastguard Worker;
973*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_8i16_to_8i32:
974*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
975*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
976*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
977*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
978*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
979*9880d681SAndroid Build Coastguard Worker;
980*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_8i16_to_8i32:
981*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
982*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero
983*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
984*9880d681SAndroid Build Coastguard Worker;
985*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_8i16_to_8i32:
986*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
987*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxwd {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero
988*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
989*9880d681SAndroid Build Coastguard Workerentry:
990*9880d681SAndroid Build Coastguard Worker %X = load <8 x i16>, <8 x i16>* %ptr
991*9880d681SAndroid Build Coastguard Worker %Y = zext <8 x i16> %X to <8 x i32>
992*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %Y
993*9880d681SAndroid Build Coastguard Worker}
994*9880d681SAndroid Build Coastguard Worker
995*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @load_zext_2i32_to_2i64(<2 x i32> *%ptr) {
996*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_2i32_to_2i64:
997*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
998*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
999*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
1000*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1001*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1002*9880d681SAndroid Build Coastguard Worker;
1003*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_2i32_to_2i64:
1004*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1005*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
1006*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm1, %xmm1
1007*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1008*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1009*9880d681SAndroid Build Coastguard Worker;
1010*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_2i32_to_2i64:
1011*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1012*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero
1013*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1014*9880d681SAndroid Build Coastguard Worker;
1015*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: load_zext_2i32_to_2i64:
1016*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
1017*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero
1018*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1019*9880d681SAndroid Build Coastguard Workerentry:
1020*9880d681SAndroid Build Coastguard Worker %X = load <2 x i32>, <2 x i32>* %ptr
1021*9880d681SAndroid Build Coastguard Worker %Y = zext <2 x i32> %X to <2 x i64>
1022*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %Y
1023*9880d681SAndroid Build Coastguard Worker}
1024*9880d681SAndroid Build Coastguard Worker
1025*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @load_zext_4i32_to_4i64(<4 x i32> *%ptr) {
1026*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: load_zext_4i32_to_4i64:
1027*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1028*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa (%rdi), %xmm1
1029*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
1030*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
1031*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1032*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1033*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1034*9880d681SAndroid Build Coastguard Worker;
1035*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: load_zext_4i32_to_4i64:
1036*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1037*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa (%rdi), %xmm1
1038*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
1039*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
1040*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1041*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1042*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1043*9880d681SAndroid Build Coastguard Worker;
1044*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: load_zext_4i32_to_4i64:
1045*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1046*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero
1047*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero
1048*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1049*9880d681SAndroid Build Coastguard Worker;
1050*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: load_zext_4i32_to_4i64:
1051*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1052*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero
1053*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero
1054*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1055*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1056*9880d681SAndroid Build Coastguard Worker;
1057*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: load_zext_4i32_to_4i64:
1058*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1059*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxdq {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
1060*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1061*9880d681SAndroid Build Coastguard Worker;
1062*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: load_zext_4i32_to_4i64:
1063*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1064*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxdq {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
1065*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1066*9880d681SAndroid Build Coastguard Workerentry:
1067*9880d681SAndroid Build Coastguard Worker %X = load <4 x i32>, <4 x i32>* %ptr
1068*9880d681SAndroid Build Coastguard Worker %Y = zext <4 x i32> %X to <4 x i64>
1069*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %Y
1070*9880d681SAndroid Build Coastguard Worker}
1071*9880d681SAndroid Build Coastguard Worker
1072*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @zext_8i8_to_8i32(<8 x i8> %z) {
1073*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: zext_8i8_to_8i32:
1074*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1075*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1076*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand {{.*}}(%rip), %xmm1
1077*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
1078*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
1079*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1080*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1081*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1082*9880d681SAndroid Build Coastguard Worker;
1083*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: zext_8i8_to_8i32:
1084*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1085*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
1086*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pand {{.*}}(%rip), %xmm1
1087*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
1088*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
1089*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1090*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1091*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1092*9880d681SAndroid Build Coastguard Worker;
1093*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: zext_8i8_to_8i32:
1094*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1095*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
1096*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pand {{.*}}(%rip), %xmm1
1097*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm2, %xmm2
1098*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
1099*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1100*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1101*9880d681SAndroid Build Coastguard Worker;
1102*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: zext_8i8_to_8i32:
1103*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1104*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
1105*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1
1106*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1107*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1108*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1109*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1110*9880d681SAndroid Build Coastguard Worker;
1111*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: zext_8i8_to_8i32:
1112*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1113*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
1114*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
1115*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1116*9880d681SAndroid Build Coastguard Worker;
1117*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: zext_8i8_to_8i32:
1118*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1119*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
1120*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
1121*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1122*9880d681SAndroid Build Coastguard Workerentry:
1123*9880d681SAndroid Build Coastguard Worker  %t = zext <8 x i8> %z to <8 x i32>
1124*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %t
1125*9880d681SAndroid Build Coastguard Worker}
1126*9880d681SAndroid Build Coastguard Worker
1127*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @shuf_zext_8i16_to_8i32(<8 x i16> %A) nounwind uwtable readnone ssp {
1128*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i16_to_8i32:
1129*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1130*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1131*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
1132*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1133*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1134*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1135*9880d681SAndroid Build Coastguard Worker;
1136*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i16_to_8i32:
1137*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1138*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
1139*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
1140*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1141*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1142*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1143*9880d681SAndroid Build Coastguard Worker;
1144*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i16_to_8i32:
1145*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1146*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
1147*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm2, %xmm2
1148*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
1149*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1150*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1151*9880d681SAndroid Build Coastguard Worker;
1152*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_8i16_to_8i32:
1153*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1154*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1
1155*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1156*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1157*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1158*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1159*9880d681SAndroid Build Coastguard Worker;
1160*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_8i16_to_8i32:
1161*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1162*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
1163*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1164*9880d681SAndroid Build Coastguard Worker;
1165*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_8i16_to_8i32:
1166*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1167*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
1168*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1169*9880d681SAndroid Build Coastguard Workerentry:
1170*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <16 x i32> <i32 0, i32 8, i32 1, i32 8, i32 2, i32 8, i32 3, i32 8, i32 4, i32 8, i32 5, i32 8, i32 6, i32 8, i32 7, i32 8>
1171*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <16 x i16> %B to <8 x i32>
1172*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %Z
1173*9880d681SAndroid Build Coastguard Worker}
1174*9880d681SAndroid Build Coastguard Worker
1175*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @shuf_zext_4i32_to_4i64(<4 x i32> %A) nounwind uwtable readnone ssp {
1176*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_4i32_to_4i64:
1177*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1178*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1179*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
1180*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1181*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1182*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1183*9880d681SAndroid Build Coastguard Worker;
1184*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_4i32_to_4i64:
1185*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1186*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
1187*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
1188*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1189*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1190*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1191*9880d681SAndroid Build Coastguard Worker;
1192*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_4i32_to_4i64:
1193*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1194*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
1195*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm2, %xmm2
1196*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
1197*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1198*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1199*9880d681SAndroid Build Coastguard Worker;
1200*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_4i32_to_4i64:
1201*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1202*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertps {{.*#+}} xmm1 = xmm0[0],zero,xmm0[1],zero
1203*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vxorpd %xmm2, %xmm2, %xmm2
1204*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vblendpd {{.*#+}} xmm0 = xmm2[0],xmm0[1]
1205*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpermilps {{.*#+}} xmm0 = xmm0[2,0,3,0]
1206*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1207*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1208*9880d681SAndroid Build Coastguard Worker;
1209*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_4i32_to_4i64:
1210*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1211*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1212*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1213*9880d681SAndroid Build Coastguard Worker;
1214*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_4i32_to_4i64:
1215*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1216*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1217*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1218*9880d681SAndroid Build Coastguard Workerentry:
1219*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <4 x i32> %A, <4 x i32> zeroinitializer, <8 x i32> <i32 0, i32 4, i32 1, i32 4, i32 2, i32 4, i32 3, i32 4>
1220*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <8 x i32> %B to <4 x i64>
1221*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %Z
1222*9880d681SAndroid Build Coastguard Worker}
1223*9880d681SAndroid Build Coastguard Worker
1224*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @shuf_zext_8i8_to_8i32(<8 x i8> %A) {
1225*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i8_to_8i32:
1226*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1227*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1228*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand {{.*}}(%rip), %xmm1
1229*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    packuswb %xmm1, %xmm1
1230*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
1231*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]
1232*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
1233*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1234*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1235*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1236*9880d681SAndroid Build Coastguard Worker;
1237*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i8_to_8i32:
1238*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1239*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
1240*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[0],zero,xmm1[2],zero,xmm1[4],zero,xmm1[6],zero,xmm1[8],zero,xmm1[10],zero,xmm1[12],zero,xmm1[14],zero
1241*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
1242*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
1243*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1244*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1245*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1246*9880d681SAndroid Build Coastguard Worker;
1247*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i8_to_8i32:
1248*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1249*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u]
1250*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm2 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
1251*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
1252*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
1253*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
1254*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1255*9880d681SAndroid Build Coastguard Worker;
1256*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_8i8_to_8i32:
1257*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1258*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u]
1259*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
1260*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
1261*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
1262*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1263*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1264*9880d681SAndroid Build Coastguard Worker;
1265*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_8i8_to_8i32:
1266*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1267*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u]
1268*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbd {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero
1269*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1270*9880d681SAndroid Build Coastguard Worker;
1271*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_8i8_to_8i32:
1272*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1273*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u]
1274*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbd {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero
1275*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1276*9880d681SAndroid Build Coastguard Workerentry:
1277*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i8> %A, <8 x i8> zeroinitializer, <32 x i32> <i32 0, i32 8, i32 8, i32 8, i32 1, i32 8, i32 8, i32 8, i32 2, i32 8, i32 8, i32 8, i32 3, i32 8, i32 8, i32 8, i32 4, i32 8, i32 8, i32 8, i32 5, i32 8, i32 8, i32 8, i32 6, i32 8, i32 8, i32 8, i32 7, i32 8, i32 8, i32 8>
1278*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <32 x i8> %B to <8 x i32>
1279*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %Z
1280*9880d681SAndroid Build Coastguard Worker}
1281*9880d681SAndroid Build Coastguard Worker
1282*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shuf_zext_16i8_to_2i64_offset6(<16 x i8> %A) nounwind uwtable readnone ssp {
1283*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_16i8_to_2i64_offset6:
1284*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1285*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
1286*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]
1287*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1288*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1289*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1290*9880d681SAndroid Build Coastguard Worker;
1291*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_16i8_to_2i64_offset6:
1292*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1293*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero
1294*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1295*9880d681SAndroid Build Coastguard Worker;
1296*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_16i8_to_2i64_offset6:
1297*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1298*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlq $48, %xmm0
1299*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
1300*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1301*9880d681SAndroid Build Coastguard Worker;
1302*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuf_zext_16i8_to_2i64_offset6:
1303*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
1304*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlq $48, %xmm0, %xmm0
1305*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
1306*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1307*9880d681SAndroid Build Coastguard Workerentry:
1308*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i8> %A, <16 x i8> zeroinitializer, <16 x i32> <i32 6, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 7, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
1309*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <16 x i8> %B to <2 x i64>
1310*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %Z
1311*9880d681SAndroid Build Coastguard Worker}
1312*9880d681SAndroid Build Coastguard Worker
1313*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @shuf_zext_16i8_to_4i64_offset11(<16 x i8> %A) nounwind uwtable readnone ssp {
1314*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_16i8_to_4i64_offset11:
1315*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1316*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1317*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero
1318*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
1319*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
1320*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
1321*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1322*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1323*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1324*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1325*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1326*9880d681SAndroid Build Coastguard Worker;
1327*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_16i8_to_4i64_offset11:
1328*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1329*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
1330*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[11],zero,zero,zero,zero,zero,zero,zero,xmm0[12],zero,zero,zero,zero,zero,zero,zero
1331*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm1 = xmm1[13],zero,zero,zero,zero,zero,zero,zero,xmm1[14],zero,zero,zero,zero,zero,zero,zero
1332*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1333*9880d681SAndroid Build Coastguard Worker;
1334*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_16i8_to_4i64_offset11:
1335*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1336*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
1337*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1338*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm2 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero
1339*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1340*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxbq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
1341*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
1342*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1343*9880d681SAndroid Build Coastguard Worker;
1344*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_16i8_to_4i64_offset11:
1345*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1346*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm0[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1347*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero
1348*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1349*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
1350*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1351*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1352*9880d681SAndroid Build Coastguard Worker;
1353*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_16i8_to_4i64_offset11:
1354*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1355*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1356*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxbq {{.*#+}} ymm0 = 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
1357*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1358*9880d681SAndroid Build Coastguard Worker;
1359*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_16i8_to_4i64_offset11:
1360*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1361*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1362*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxbq {{.*#+}} ymm0 = 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
1363*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1364*9880d681SAndroid Build Coastguard Workerentry:
1365*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i8> %A, <16 x i8> zeroinitializer, <32 x i32> <i32 11, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 12, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 13, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 14, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
1366*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <32 x i8> %B to <4 x i64>
1367*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %Z
1368*9880d681SAndroid Build Coastguard Worker}
1369*9880d681SAndroid Build Coastguard Worker
1370*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shuf_zext_8i16_to_2i64_offset6(<8 x i16> %A) nounwind uwtable readnone ssp {
1371*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i16_to_2i64_offset6:
1372*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1373*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
1374*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm1, %xmm1
1375*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1376*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1377*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1378*9880d681SAndroid Build Coastguard Worker;
1379*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i16_to_2i64_offset6:
1380*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1381*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[6,7],zero,zero,zero,zero,zero,zero,xmm0[8,9],zero,zero,zero,zero,zero,zero
1382*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1383*9880d681SAndroid Build Coastguard Worker;
1384*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i16_to_2i64_offset6:
1385*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1386*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1387*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1388*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1389*9880d681SAndroid Build Coastguard Worker;
1390*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuf_zext_8i16_to_2i64_offset6:
1391*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
1392*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1393*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1394*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1395*9880d681SAndroid Build Coastguard Workerentry:
1396*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <8 x i32> <i32 3, i32 8, i32 8, i32 8, i32 4, i32 8, i32 8, i32 8>
1397*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <8 x i16> %B to <2 x i64>
1398*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %Z
1399*9880d681SAndroid Build Coastguard Worker}
1400*9880d681SAndroid Build Coastguard Worker
1401*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @shuf_zext_8i16_to_4i64_offset2(<8 x i16> %A) nounwind uwtable readnone ssp {
1402*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i16_to_4i64_offset2:
1403*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1404*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1405*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
1406*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1407*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1408*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1409*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1410*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1411*9880d681SAndroid Build Coastguard Worker;
1412*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i16_to_4i64_offset2:
1413*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1414*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
1415*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
1416*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1417*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1418*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1419*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1420*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1421*9880d681SAndroid Build Coastguard Worker;
1422*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i16_to_4i64_offset2:
1423*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1424*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
1425*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm2 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
1426*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
1427*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwq {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1428*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm0
1429*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1430*9880d681SAndroid Build Coastguard Worker;
1431*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_8i16_to_4i64_offset2:
1432*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1433*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
1434*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
1435*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
1436*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1437*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1438*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1439*9880d681SAndroid Build Coastguard Worker;
1440*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_8i16_to_4i64_offset2:
1441*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,2,2,3]
1443*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
1444*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1445*9880d681SAndroid Build Coastguard Worker;
1446*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_8i16_to_4i64_offset2:
1447*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1448*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,2,2,3]
1449*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
1450*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1451*9880d681SAndroid Build Coastguard Workerentry:
1452*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <16 x i32> <i32 2, i32 8, i32 8, i32 8, i32 3, i32 8, i32 8, i32 8, i32 4, i32 8, i32 8, i32 8, i32 5, i32 8, i32 8, i32 8>
1453*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <16 x i16> %B to <4 x i64>
1454*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %Z
1455*9880d681SAndroid Build Coastguard Worker}
1456*9880d681SAndroid Build Coastguard Worker
1457*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shuf_zext_8i16_to_4i32_offset1(<8 x i16> %A) nounwind uwtable readnone ssp {
1458*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuf_zext_8i16_to_4i32_offset1:
1459*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0: # %entry
1460*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
1461*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pxor %xmm1, %xmm1
1462*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1463*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1464*9880d681SAndroid Build Coastguard Worker;
1465*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuf_zext_8i16_to_4i32_offset1:
1466*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
1467*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
1468*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpxor %xmm1, %xmm1, %xmm1
1469*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1470*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1471*9880d681SAndroid Build Coastguard Workerentry:
1472*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <8 x i32> <i32 1, i32 8, i32 2, i32 8, i32 3, i32 8, i32 4, i32 8>
1473*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <8 x i16> %B to <4 x i32>
1474*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %Z
1475*9880d681SAndroid Build Coastguard Worker}
1476*9880d681SAndroid Build Coastguard Worker
1477*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @shuf_zext_8i16_to_8i32_offset3(<8 x i16> %A) nounwind uwtable readnone ssp {
1478*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_8i16_to_8i32_offset3:
1479*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1480*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1481*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1482*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
1483*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1484*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1485*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1486*9880d681SAndroid Build Coastguard Worker;
1487*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_8i16_to_8i32_offset3:
1488*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1489*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
1490*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1491*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
1492*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1493*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1494*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1495*9880d681SAndroid Build Coastguard Worker;
1496*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_8i16_to_8i32_offset3:
1497*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1498*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
1499*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1500*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm2, %xmm2
1501*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
1502*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1503*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1504*9880d681SAndroid Build Coastguard Worker;
1505*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_8i16_to_8i32_offset3:
1506*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1507*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1508*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
1509*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1510*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1511*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1512*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1513*9880d681SAndroid Build Coastguard Worker;
1514*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_8i16_to_8i32_offset3:
1515*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1516*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1517*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
1518*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1519*9880d681SAndroid Build Coastguard Worker;
1520*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_8i16_to_8i32_offset3:
1521*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1522*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero
1523*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
1524*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1525*9880d681SAndroid Build Coastguard Workerentry:
1526*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <8 x i16> %A, <8 x i16> zeroinitializer, <16 x i32> <i32 3, i32 8, i32 4, i32 8, i32 5, i32 8, i32 6, i32 8, i32 7, i32 8, i32 undef, i32 8, i32 undef, i32 8, i32 undef, i32 8>
1527*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <16 x i16> %B to <8 x i32>
1528*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %Z
1529*9880d681SAndroid Build Coastguard Worker}
1530*9880d681SAndroid Build Coastguard Worker
1531*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @shuf_zext_16i16_to_8i32_offset8(<16 x i16> %A) nounwind uwtable readnone ssp {
1532*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_16i16_to_8i32_offset8:
1533*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1534*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm2
1535*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
1536*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1537*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1538*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1539*9880d681SAndroid Build Coastguard Worker;
1540*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_16i16_to_8i32_offset8:
1541*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1542*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pxor %xmm2, %xmm2
1543*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm1, %xmm0
1544*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
1545*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1546*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1547*9880d681SAndroid Build Coastguard Worker;
1548*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_16i16_to_8i32_offset8:
1549*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1550*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[2,2,3,3]
1551*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm2, %xmm2
1552*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm2 = xmm0[0],xmm2[1,2,3],xmm0[4],xmm2[5,6,7]
1553*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
1554*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm2, %xmm1
1555*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1556*9880d681SAndroid Build Coastguard Worker;
1557*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_16i16_to_8i32_offset8:
1558*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1559*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm0
1560*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,2,3,3]
1561*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm2, %xmm2, %xmm2
1562*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1,2,3],xmm1[4],xmm2[5,6,7]
1563*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1564*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1565*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1566*9880d681SAndroid Build Coastguard Worker;
1567*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_16i16_to_8i32_offset8:
1568*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1569*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm0
1570*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
1571*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1572*9880d681SAndroid Build Coastguard Worker;
1573*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_16i16_to_8i32_offset8:
1574*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1575*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vextracti128 $1, %ymm0, %xmm0
1576*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
1577*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1578*9880d681SAndroid Build Coastguard Workerentry:
1579*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <16 x i16> %A, <16 x i16> zeroinitializer, <16 x i32> <i32 8, i32 16, i32 9, i32 16, i32 10, i32 16, i32 11, i32 16, i32 12, i32 16, i32 undef, i32 16, i32 14, i32 16, i32 undef, i32 16>
1580*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <16 x i16> %B to <8 x i32>
1581*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %Z
1582*9880d681SAndroid Build Coastguard Worker}
1583*9880d681SAndroid Build Coastguard Worker
1584*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shuf_zext_4i32_to_2i64_offset2(<4 x i32> %A) nounwind uwtable readnone ssp {
1585*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: shuf_zext_4i32_to_2i64_offset2:
1586*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0: # %entry
1587*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pxor %xmm1, %xmm1
1588*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1589*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
1590*9880d681SAndroid Build Coastguard Worker;
1591*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: shuf_zext_4i32_to_2i64_offset2:
1592*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0: # %entry
1593*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpxor %xmm1, %xmm1, %xmm1
1594*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
1595*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
1596*9880d681SAndroid Build Coastguard Workerentry:
1597*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <4 x i32> %A, <4 x i32> zeroinitializer, <4 x i32> <i32 2, i32 4, i32 3, i32 4>
1598*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <4 x i32> %B to <2 x i64>
1599*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %Z
1600*9880d681SAndroid Build Coastguard Worker}
1601*9880d681SAndroid Build Coastguard Worker
1602*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @shuf_zext_4i32_to_4i64_offset1(<4 x i32> %A) nounwind uwtable readnone ssp {
1603*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: shuf_zext_4i32_to_4i64_offset1:
1604*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0: # %entry
1605*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
1606*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm0 = [0,0,4294967295,0]
1607*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm1, %xmm0
1608*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1609*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
1610*9880d681SAndroid Build Coastguard Worker;
1611*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: shuf_zext_4i32_to_4i64_offset1:
1612*9880d681SAndroid Build Coastguard Worker; SSSE3:       # BB#0: # %entry
1613*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa %xmm0, %xmm1
1614*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    movdqa {{.*#+}} xmm0 = [0,0,4294967295,0]
1615*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    pand %xmm1, %xmm0
1616*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1617*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT:    retq
1618*9880d681SAndroid Build Coastguard Worker;
1619*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: shuf_zext_4i32_to_4i64_offset1:
1620*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0: # %entry
1621*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm0, %xmm1
1622*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm0, %xmm0
1623*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5],xmm0[6,7]
1624*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1625*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
1626*9880d681SAndroid Build Coastguard Worker;
1627*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: shuf_zext_4i32_to_4i64_offset1:
1628*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0: # %entry
1629*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertps {{.*#+}} xmm1 = xmm0[3],zero,zero,zero
1630*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vxorps %xmm2, %xmm2, %xmm2
1631*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vblendps {{.*#+}} xmm0 = xmm2[0,1],xmm0[2],xmm2[3]
1632*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1633*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
1634*9880d681SAndroid Build Coastguard Worker;
1635*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: shuf_zext_4i32_to_4i64_offset1:
1636*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0: # %entry
1637*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,2,3,3]
1638*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1639*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
1640*9880d681SAndroid Build Coastguard Worker;
1641*9880d681SAndroid Build Coastguard Worker; AVX512-LABEL: shuf_zext_4i32_to_4i64_offset1:
1642*9880d681SAndroid Build Coastguard Worker; AVX512:       # BB#0: # %entry
1643*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,2,3,3]
1644*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
1645*9880d681SAndroid Build Coastguard Worker; AVX512-NEXT:    retq
1646*9880d681SAndroid Build Coastguard Workerentry:
1647*9880d681SAndroid Build Coastguard Worker  %B = shufflevector <4 x i32> %A, <4 x i32> zeroinitializer, <8 x i32> <i32 undef, i32 4, i32 2, i32 4, i32 3, i32 4, i32 undef, i32 4>
1648*9880d681SAndroid Build Coastguard Worker  %Z = bitcast <8 x i32> %B to <4 x i64>
1649*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %Z
1650*9880d681SAndroid Build Coastguard Worker}
1651