xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512-mask-op.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 -stack-symbol-ordering=0 -march=x86-64 -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s --check-prefix=CHECK --check-prefix=KNL
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -stack-symbol-ordering=0 -march=x86-64 -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine i16 @mask16(i16 %x) {
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mask16:
7*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k0
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    knotw %k0, %k0
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
13*9880d681SAndroid Build Coastguard Worker  %m0 = bitcast i16 %x to <16 x i1>
14*9880d681SAndroid Build Coastguard Worker  %m1 = xor <16 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
15*9880d681SAndroid Build Coastguard Worker  %ret = bitcast <16 x i1> %m1 to i16
16*9880d681SAndroid Build Coastguard Worker  ret i16 %ret
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine i32 @mask16_zext(i16 %x) {
20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mask16_zext:
21*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k0
23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    knotw %k0, %k0
24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
26*9880d681SAndroid Build Coastguard Worker  %m0 = bitcast i16 %x to <16 x i1>
27*9880d681SAndroid Build Coastguard Worker  %m1 = xor <16 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
28*9880d681SAndroid Build Coastguard Worker  %m2 = bitcast <16 x i1> %m1 to i16
29*9880d681SAndroid Build Coastguard Worker  %ret = zext i16 %m2 to i32
30*9880d681SAndroid Build Coastguard Worker  ret i32 %ret
31*9880d681SAndroid Build Coastguard Worker}
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Workerdefine i8 @mask8(i8 %x) {
34*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: mask8:
35*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
36*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %edi, %k0
37*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    knotw %k0, %k0
38*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
39*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
40*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
41*9880d681SAndroid Build Coastguard Worker;
42*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: mask8:
43*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
44*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %edi, %k0
45*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    knotb %k0, %k0
46*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, %eax
47*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
48*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
49*9880d681SAndroid Build Coastguard Worker  %m0 = bitcast i8 %x to <8 x i1>
50*9880d681SAndroid Build Coastguard Worker  %m1 = xor <8 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
51*9880d681SAndroid Build Coastguard Worker  %ret = bitcast <8 x i1> %m1 to i8
52*9880d681SAndroid Build Coastguard Worker  ret i8 %ret
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerdefine i32 @mask8_zext(i8 %x) {
56*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: mask8_zext:
57*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
58*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %edi, %k0
59*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    knotw %k0, %k0
60*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
61*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
62*9880d681SAndroid Build Coastguard Worker;
63*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: mask8_zext:
64*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
65*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %edi, %k0
66*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    knotb %k0, %k0
67*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, %eax
68*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
69*9880d681SAndroid Build Coastguard Worker  %m0 = bitcast i8 %x to <8 x i1>
70*9880d681SAndroid Build Coastguard Worker  %m1 = xor <8 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
71*9880d681SAndroid Build Coastguard Worker  %m2 = bitcast <8 x i1> %m1 to i8
72*9880d681SAndroid Build Coastguard Worker  %ret = zext i8 %m2 to i32
73*9880d681SAndroid Build Coastguard Worker  ret i32 %ret
74*9880d681SAndroid Build Coastguard Worker}
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Workerdefine void @mask16_mem(i16* %ptr) {
77*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mask16_mem:
78*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw (%rdi), %k0
80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    knotw %k0, %k0
81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, (%rdi)
82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
83*9880d681SAndroid Build Coastguard Worker  %x = load i16, i16* %ptr, align 4
84*9880d681SAndroid Build Coastguard Worker  %m0 = bitcast i16 %x to <16 x i1>
85*9880d681SAndroid Build Coastguard Worker  %m1 = xor <16 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
86*9880d681SAndroid Build Coastguard Worker  %ret = bitcast <16 x i1> %m1 to i16
87*9880d681SAndroid Build Coastguard Worker  store i16 %ret, i16* %ptr, align 4
88*9880d681SAndroid Build Coastguard Worker  ret void
89*9880d681SAndroid Build Coastguard Worker}
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Workerdefine void @mask8_mem(i8* %ptr) {
92*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: mask8_mem:
93*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
94*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl (%rdi), %eax
95*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %eax, %k0
96*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    knotw %k0, %k0
97*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
98*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rdi)
99*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
100*9880d681SAndroid Build Coastguard Worker;
101*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: mask8_mem:
102*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
103*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb (%rdi), %k0
104*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    knotb %k0, %k0
105*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rdi)
106*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
107*9880d681SAndroid Build Coastguard Worker  %x = load i8, i8* %ptr, align 4
108*9880d681SAndroid Build Coastguard Worker  %m0 = bitcast i8 %x to <8 x i1>
109*9880d681SAndroid Build Coastguard Worker  %m1 = xor <8 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
110*9880d681SAndroid Build Coastguard Worker  %ret = bitcast <8 x i1> %m1 to i8
111*9880d681SAndroid Build Coastguard Worker  store i8 %ret, i8* %ptr, align 4
112*9880d681SAndroid Build Coastguard Worker  ret void
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Workerdefine i16 @mand16(i16 %x, i16 %y) {
116*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mand16:
117*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movl %edi, %eax
119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    xorl %esi, %eax
120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl %esi, %edi
121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    orl %eax, %edi
122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movl %edi, %eax
123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
124*9880d681SAndroid Build Coastguard Worker  %ma = bitcast i16 %x to <16 x i1>
125*9880d681SAndroid Build Coastguard Worker  %mb = bitcast i16 %y to <16 x i1>
126*9880d681SAndroid Build Coastguard Worker  %mc = and <16 x i1> %ma, %mb
127*9880d681SAndroid Build Coastguard Worker  %md = xor <16 x i1> %ma, %mb
128*9880d681SAndroid Build Coastguard Worker  %me = or <16 x i1> %mc, %md
129*9880d681SAndroid Build Coastguard Worker  %ret = bitcast <16 x i1> %me to i16
130*9880d681SAndroid Build Coastguard Worker  ret i16 %ret
131*9880d681SAndroid Build Coastguard Worker}
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Workerdefine i16 @mand16_mem(<16 x i1>* %x, <16 x i1>* %y) {
134*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mand16_mem:
135*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw (%rdi), %k0
137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw (%rsi), %k1
138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kandw %k1, %k0, %k2
139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kxorw %k1, %k0, %k0
140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    korw %k0, %k2, %k0
141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
144*9880d681SAndroid Build Coastguard Worker  %ma = load <16 x i1>, <16 x i1>* %x
145*9880d681SAndroid Build Coastguard Worker  %mb = load <16 x i1>, <16 x i1>* %y
146*9880d681SAndroid Build Coastguard Worker  %mc = and <16 x i1> %ma, %mb
147*9880d681SAndroid Build Coastguard Worker  %md = xor <16 x i1> %ma, %mb
148*9880d681SAndroid Build Coastguard Worker  %me = or <16 x i1> %mc, %md
149*9880d681SAndroid Build Coastguard Worker  %ret = bitcast <16 x i1> %me to i16
150*9880d681SAndroid Build Coastguard Worker  ret i16 %ret
151*9880d681SAndroid Build Coastguard Worker}
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Workerdefine i8 @shuf_test1(i16 %v) nounwind {
154*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: shuf_test1:
155*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
156*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %edi, %k0
157*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $8, %k0, %k0
158*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
159*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
160*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
161*9880d681SAndroid Build Coastguard Worker;
162*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: shuf_test1:
163*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
164*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovw %edi, %k0
165*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftrw $8, %k0, %k0
166*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, %eax
167*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
168*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
169*9880d681SAndroid Build Coastguard Worker   %v1 = bitcast i16 %v to <16 x i1>
170*9880d681SAndroid Build Coastguard Worker   %mask = shufflevector <16 x i1> %v1, <16 x i1> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
171*9880d681SAndroid Build Coastguard Worker   %mask1 = bitcast <8 x i1> %mask to i8
172*9880d681SAndroid Build Coastguard Worker   ret i8 %mask1
173*9880d681SAndroid Build Coastguard Worker}
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerdefine i32 @zext_test1(<16 x i32> %a, <16 x i32> %b) {
176*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zext_test1:
177*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleud %zmm1, %zmm0, %k0
179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kshiftlw $10, %k0, %k0
180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kshiftrw $15, %k0, %k0
181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
183*9880d681SAndroid Build Coastguard Worker  %cmp_res = icmp ugt <16 x i32> %a, %b
184*9880d681SAndroid Build Coastguard Worker  %cmp_res.i1 = extractelement <16 x i1> %cmp_res, i32 5
185*9880d681SAndroid Build Coastguard Worker  %res = zext i1 %cmp_res.i1 to i32
186*9880d681SAndroid Build Coastguard Worker  ret i32 %res
187*9880d681SAndroid Build Coastguard Worker}
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard Workerdefine i16 @zext_test2(<16 x i32> %a, <16 x i32> %b) {
190*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zext_test2:
191*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleud %zmm1, %zmm0, %k0
193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kshiftlw $10, %k0, %k0
194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kshiftrw $15, %k0, %k0
195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
197*9880d681SAndroid Build Coastguard Worker  %cmp_res = icmp ugt <16 x i32> %a, %b
198*9880d681SAndroid Build Coastguard Worker  %cmp_res.i1 = extractelement <16 x i1> %cmp_res, i32 5
199*9880d681SAndroid Build Coastguard Worker  %res = zext i1 %cmp_res.i1 to i16
200*9880d681SAndroid Build Coastguard Worker  ret i16 %res
201*9880d681SAndroid Build Coastguard Worker}
202*9880d681SAndroid Build Coastguard Worker
203*9880d681SAndroid Build Coastguard Workerdefine i8 @zext_test3(<16 x i32> %a, <16 x i32> %b) {
204*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zext_test3:
205*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleud %zmm1, %zmm0, %k0
207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kshiftlw $10, %k0, %k0
208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kshiftrw $15, %k0, %k0
209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %AX<kill>
211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
212*9880d681SAndroid Build Coastguard Worker  %cmp_res = icmp ugt <16 x i32> %a, %b
213*9880d681SAndroid Build Coastguard Worker  %cmp_res.i1 = extractelement <16 x i1> %cmp_res, i32 5
214*9880d681SAndroid Build Coastguard Worker  %res = zext i1 %cmp_res.i1 to i8
215*9880d681SAndroid Build Coastguard Worker  ret i8 %res
216*9880d681SAndroid Build Coastguard Worker}
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Workerdefine i8 @conv1(<8 x i1>* %R) {
219*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: conv1:
220*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0: ## %entry
221*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kxnorw %k0, %k0, %k0
222*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
223*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rdi)
224*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb $-2, -{{[0-9]+}}(%rsp)
225*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb $-2, %al
226*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
227*9880d681SAndroid Build Coastguard Worker;
228*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: conv1:
229*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0: ## %entry
230*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kxnorw %k0, %k0, %k0
231*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rdi)
232*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movb $-2, -{{[0-9]+}}(%rsp)
233*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movb $-2, %al
234*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
235*9880d681SAndroid Build Coastguard Workerentry:
236*9880d681SAndroid Build Coastguard Worker  store <8 x i1> <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>, <8 x i1>* %R
237*9880d681SAndroid Build Coastguard Worker
238*9880d681SAndroid Build Coastguard Worker  %maskPtr = alloca <8 x i1>
239*9880d681SAndroid Build Coastguard Worker  store <8 x i1> <i1 0, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>, <8 x i1>* %maskPtr
240*9880d681SAndroid Build Coastguard Worker  %mask = load <8 x i1>, <8 x i1>* %maskPtr
241*9880d681SAndroid Build Coastguard Worker  %mask_convert = bitcast <8 x i1> %mask to i8
242*9880d681SAndroid Build Coastguard Worker  ret i8 %mask_convert
243*9880d681SAndroid Build Coastguard Worker}
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test4(<4 x i64> %x, <4 x i64> %y, <4 x i64> %x1, <4 x i64> %y1) {
246*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test4:
247*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
248*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm0
249*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovqd %zmm0, %ymm0
250*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %xmm0, %xmm0
251*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrad $31, %xmm0, %xmm0
252*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtq %ymm3, %ymm2, %ymm1
253*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovqd %zmm1, %ymm1
254*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %xmm1, %xmm1
255*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrad $31, %xmm1, %xmm1
256*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
257*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
258*9880d681SAndroid Build Coastguard Worker;
259*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test4:
260*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
261*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtq %ymm3, %ymm2, %k0
262*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    knotw %k0, %k1
263*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtq %ymm1, %ymm0, %k0 {%k1}
264*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2d %k0, %xmm0
265*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
266*9880d681SAndroid Build Coastguard Worker  %x_gt_y = icmp sgt <4 x i64> %x, %y
267*9880d681SAndroid Build Coastguard Worker  %x1_gt_y1 = icmp sgt <4 x i64> %x1, %y1
268*9880d681SAndroid Build Coastguard Worker  %res = icmp sgt <4 x i1>%x_gt_y, %x1_gt_y1
269*9880d681SAndroid Build Coastguard Worker  %resse = sext <4 x i1>%res to <4 x i32>
270*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %resse
271*9880d681SAndroid Build Coastguard Worker}
272*9880d681SAndroid Build Coastguard Worker
273*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test5(<2 x i64> %x, <2 x i64> %y, <2 x i64> %x1, <2 x i64> %y1) {
274*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test5:
275*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
276*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm0
277*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm1
278*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm0
279*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
280*9880d681SAndroid Build Coastguard Worker;
281*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test5:
282*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
283*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtq %xmm0, %xmm1, %k0
284*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    knotw %k0, %k1
285*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtq %xmm3, %xmm2, %k0 {%k1}
286*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2q %k0, %xmm0
287*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
288*9880d681SAndroid Build Coastguard Worker  %x_gt_y = icmp slt <2 x i64> %x, %y
289*9880d681SAndroid Build Coastguard Worker  %x1_gt_y1 = icmp sgt <2 x i64> %x1, %y1
290*9880d681SAndroid Build Coastguard Worker  %res = icmp slt <2 x i1>%x_gt_y, %x1_gt_y1
291*9880d681SAndroid Build Coastguard Worker  %resse = sext <2 x i1>%res to <2 x i64>
292*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %resse
293*9880d681SAndroid Build Coastguard Worker}define void @test6(<16 x i1> %mask)  {
294*9880d681SAndroid Build Coastguard Workerallocas:
295*9880d681SAndroid Build Coastguard Worker  %a= and <16 x i1> %mask, <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false>
296*9880d681SAndroid Build Coastguard Worker  %b = bitcast <16 x i1> %a to i16
297*9880d681SAndroid Build Coastguard Worker  %c = icmp eq i16 %b, 0
298*9880d681SAndroid Build Coastguard Worker  br i1 %c, label %true, label %false
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workertrue:
301*9880d681SAndroid Build Coastguard Worker  ret void
302*9880d681SAndroid Build Coastguard Worker
303*9880d681SAndroid Build Coastguard Workerfalse:
304*9880d681SAndroid Build Coastguard Worker  ret void
305*9880d681SAndroid Build Coastguard Worker}
306*9880d681SAndroid Build Coastguard Workerdefine void @test7(<8 x i1> %mask)  {
307*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test7:
308*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0: ## %allocas
309*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwq %xmm0, %zmm0
310*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm0, %zmm0
311*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm0, %zmm0, %k0
312*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb $85, %al
313*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %eax, %k1
314*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    korw %k1, %k0, %k0
315*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
316*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    testb %al, %al
317*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
318*9880d681SAndroid Build Coastguard Worker;
319*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test7:
320*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0: ## %allocas
321*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
322*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovw2m %xmm0, %k0
323*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movb $85, %al
324*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %eax, %k1
325*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    korb %k1, %k0, %k0
326*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    ktestb %k0, %k0
327*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
328*9880d681SAndroid Build Coastguard Workerallocas:
329*9880d681SAndroid Build Coastguard Worker  %a= or <8 x i1> %mask, <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false>
330*9880d681SAndroid Build Coastguard Worker  %b = bitcast <8 x i1> %a to i8
331*9880d681SAndroid Build Coastguard Worker  %c = icmp eq i8 %b, 0
332*9880d681SAndroid Build Coastguard Worker  br i1 %c, label %true, label %false
333*9880d681SAndroid Build Coastguard Worker
334*9880d681SAndroid Build Coastguard Workertrue:
335*9880d681SAndroid Build Coastguard Worker  ret void
336*9880d681SAndroid Build Coastguard Worker
337*9880d681SAndroid Build Coastguard Workerfalse:
338*9880d681SAndroid Build Coastguard Worker  ret void
339*9880d681SAndroid Build Coastguard Worker}
340*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test8(<16 x i32>%a, <16 x i32>%b, i32 %a1, i32 %b1) {
341*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test8:
342*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
343*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpxord %zmm2, %zmm2, %zmm2
344*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    cmpl %esi, %edi
345*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    jg LBB17_1
346*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  ## BB#2:
347*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpltud %zmm2, %zmm1, %k1
348*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    jmp LBB17_3
349*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  LBB17_1:
350*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtd %zmm2, %zmm0, %k1
351*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  LBB17_3:
352*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
353*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
354*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
355*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
356*9880d681SAndroid Build Coastguard Worker;
357*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test8:
358*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
359*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpxord %zmm2, %zmm2, %zmm2
360*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    cmpl %esi, %edi
361*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    jg LBB17_1
362*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  ## BB#2:
363*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpltud %zmm2, %zmm1, %k0
364*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %xmm0
365*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
366*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  LBB17_1:
367*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtd %zmm2, %zmm0, %k0
368*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %xmm0
369*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
370*9880d681SAndroid Build Coastguard Worker  %cond = icmp sgt i32 %a1, %b1
371*9880d681SAndroid Build Coastguard Worker  %cmp1 = icmp sgt <16 x i32> %a, zeroinitializer
372*9880d681SAndroid Build Coastguard Worker  %cmp2 = icmp ult <16 x i32> %b, zeroinitializer
373*9880d681SAndroid Build Coastguard Worker  %mix = select i1 %cond, <16 x i1> %cmp1, <16 x i1> %cmp2
374*9880d681SAndroid Build Coastguard Worker  %res = sext <16 x i1> %mix to <16 x i8>
375*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
376*9880d681SAndroid Build Coastguard Worker}
377*9880d681SAndroid Build Coastguard Workerdefine <16 x i1> @test9(<16 x i1>%a, <16 x i1>%b, i32 %a1, i32 %b1) {
378*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test9:
379*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
380*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    cmpl %esi, %edi
381*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    jg LBB18_1
382*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  ## BB#2:
383*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm1, %zmm0
384*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    jmp LBB18_3
385*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  LBB18_1:
386*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
387*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  LBB18_3:
388*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
389*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k1
390*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
391*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
392*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
393*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
394*9880d681SAndroid Build Coastguard Worker;
395*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test9:
396*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
397*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    cmpl %esi, %edi
398*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    jg LBB18_1
399*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  ## BB#2:
400*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $7, %xmm1, %xmm0
401*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    jmp LBB18_3
402*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  LBB18_1:
403*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
404*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  LBB18_3:
405*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovb2m %xmm0, %k0
406*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %xmm0
407*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
408*9880d681SAndroid Build Coastguard Worker  %mask = icmp sgt i32 %a1, %b1
409*9880d681SAndroid Build Coastguard Worker  %c = select i1 %mask, <16 x i1>%a, <16 x i1>%b
410*9880d681SAndroid Build Coastguard Worker  ret <16 x i1>%c
411*9880d681SAndroid Build Coastguard Worker}define <8 x i1> @test10(<8 x i1>%a, <8 x i1>%b, i32 %a1, i32 %b1) {
412*9880d681SAndroid Build Coastguard Worker  %mask = icmp sgt i32 %a1, %b1
413*9880d681SAndroid Build Coastguard Worker  %c = select i1 %mask, <8 x i1>%a, <8 x i1>%b
414*9880d681SAndroid Build Coastguard Worker  ret <8 x i1>%c
415*9880d681SAndroid Build Coastguard Worker}
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test11(<4 x i1>%a, <4 x i1>%b, i32 %a1, i32 %b1) {
418*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test11:
419*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
420*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    cmpl %esi, %edi
421*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    jg LBB20_2
422*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  ## BB#1:
423*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovaps %zmm1, %zmm0
424*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  LBB20_2:
425*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
426*9880d681SAndroid Build Coastguard Worker;
427*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test11:
428*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
429*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    cmpl %esi, %edi
430*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    jg LBB20_1
431*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  ## BB#2:
432*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpslld $31, %xmm1, %xmm0
433*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    jmp LBB20_3
434*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  LBB20_1:
435*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpslld $31, %xmm0, %xmm0
436*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  LBB20_3:
437*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vptestmd %xmm0, %xmm0, %k0
438*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2d %k0, %xmm0
439*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
440*9880d681SAndroid Build Coastguard Worker  %mask = icmp sgt i32 %a1, %b1
441*9880d681SAndroid Build Coastguard Worker  %c = select i1 %mask, <4 x i1>%a, <4 x i1>%b
442*9880d681SAndroid Build Coastguard Worker  ret <4 x i1>%c
443*9880d681SAndroid Build Coastguard Worker}
444*9880d681SAndroid Build Coastguard Worker
445*9880d681SAndroid Build Coastguard Workerdefine i32 @test12(i32 %x, i32 %y)  {
446*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test12:
447*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
448*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movl %edi, %eax
449*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
450*9880d681SAndroid Build Coastguard Worker  %a = bitcast i16 21845 to <16 x i1>
451*9880d681SAndroid Build Coastguard Worker  %b = extractelement <16 x i1> %a, i32 0
452*9880d681SAndroid Build Coastguard Worker  %c = select i1 %b, i32 %x, i32 %y
453*9880d681SAndroid Build Coastguard Worker  ret i32 %c
454*9880d681SAndroid Build Coastguard Worker}
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Workerdefine i32 @test13(i32 %x, i32 %y)  {
457*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test13:
458*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movl %esi, %eax
460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
461*9880d681SAndroid Build Coastguard Worker  %a = bitcast i16 21845 to <16 x i1>
462*9880d681SAndroid Build Coastguard Worker  %b = extractelement <16 x i1> %a, i32 3
463*9880d681SAndroid Build Coastguard Worker  %c = select i1 %b, i32 %x, i32 %y
464*9880d681SAndroid Build Coastguard Worker  ret i32 %c
465*9880d681SAndroid Build Coastguard Worker}define <4 x i1> @test14()  {
466*9880d681SAndroid Build Coastguard Worker  %a = bitcast i16 21845 to <16 x i1>
467*9880d681SAndroid Build Coastguard Worker  %b = extractelement <16 x i1> %a, i32 2
468*9880d681SAndroid Build Coastguard Worker  %c = insertelement <4 x i1> <i1 true, i1 false, i1 false, i1 true>, i1 %b, i32 1
469*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %c
470*9880d681SAndroid Build Coastguard Worker}
471*9880d681SAndroid Build Coastguard Worker
472*9880d681SAndroid Build Coastguard Workerdefine <16 x i1> @test15(i32 %x, i32 %y)  {
473*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test15:
474*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
475*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    cmpl %esi, %edi
476*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movw $21845, %ax ## imm = 0x5555
477*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movw $1, %cx
478*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    cmovgw %ax, %cx
479*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %ecx, %k1
480*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
481*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
482*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
483*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
484*9880d681SAndroid Build Coastguard Worker;
485*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test15:
486*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
487*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    cmpl %esi, %edi
488*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movw $21845, %ax ## imm = 0x5555
489*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movw $1, %cx
490*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    cmovgw %ax, %cx
491*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovw %ecx, %k0
492*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %xmm0
493*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
494*9880d681SAndroid Build Coastguard Worker  %a = bitcast i16 21845 to <16 x i1>
495*9880d681SAndroid Build Coastguard Worker  %b = bitcast i16 1 to <16 x i1>
496*9880d681SAndroid Build Coastguard Worker  %mask = icmp sgt i32 %x, %y
497*9880d681SAndroid Build Coastguard Worker  %c = select i1 %mask, <16 x i1> %a, <16 x i1> %b
498*9880d681SAndroid Build Coastguard Worker  ret <16 x i1> %c
499*9880d681SAndroid Build Coastguard Worker}
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test16(i64 %x) {
502*9880d681SAndroid Build Coastguard Worker;
503*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test16:
504*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
505*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rbp
506*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp0:
507*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 16
508*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp1:
509*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_offset %rbp, -16
510*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rsp, %rbp
511*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp2:
512*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_register %rbp
513*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andq $-32, %rsp
514*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    subq $64, %rsp
515*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl %edi, (%rsp)
516*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    shrq $32, %rdi
517*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl %edi, {{[0-9]+}}(%rsp)
518*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
519*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw (%rsp), %k1
520*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm1 {%k1} {z}
521*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm1, %xmm1
522*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw {{[0-9]+}}(%rsp), %k1
523*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm2 {%k1} {z}
524*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm2, %xmm2
525*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm2
526*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl $1, %eax
527*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm1, %xmm1
528*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpblendd {{.*#+}} ymm2 = ymm1[0,1,2,3],ymm2[4,5,6,7]
529*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw {{[0-9]+}}(%rsp), %k1
530*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm1 {%k1} {z}
531*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm1, %xmm1
532*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw {{[0-9]+}}(%rsp), %k1
533*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
534*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
535*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm1
536*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllw $7, %ymm2, %ymm0
537*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpand {{.*}}(%rip), %ymm0, %ymm0
538*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpxor %ymm2, %ymm2, %ymm2
539*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtb %ymm0, %ymm2, %ymm0
540*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rbp, %rsp
541*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rbp
542*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
543*9880d681SAndroid Build Coastguard Worker;
544*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test16:
545*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
546*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovq %rdi, %k0
547*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kxnorw %k0, %k0, %k1
548*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftrw $15, %k1, %k1
549*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftlq $5, %k1, %k1
550*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    korq %k1, %k0, %k0
551*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %zmm0
552*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
553*9880d681SAndroid Build Coastguard Worker  %a = bitcast i64 %x to <64 x i1>
554*9880d681SAndroid Build Coastguard Worker  %b = insertelement <64 x i1>%a, i1 true, i32 5
555*9880d681SAndroid Build Coastguard Worker  %c = sext <64 x i1>%b to <64 x i8>
556*9880d681SAndroid Build Coastguard Worker  ret <64 x i8>%c
557*9880d681SAndroid Build Coastguard Worker}
558*9880d681SAndroid Build Coastguard Worker
559*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test17(i64 %x, i32 %y, i32 %z) {
560*9880d681SAndroid Build Coastguard Worker;
561*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test17:
562*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
563*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rbp
564*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp3:
565*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 16
566*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp4:
567*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_offset %rbp, -16
568*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rsp, %rbp
569*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp5:
570*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_register %rbp
571*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andq $-32, %rsp
572*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    subq $64, %rsp
573*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl %edi, (%rsp)
574*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    shrq $32, %rdi
575*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl %edi, {{[0-9]+}}(%rsp)
576*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1
577*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw (%rsp), %k1
578*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm0 {%k1} {z}
579*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
580*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw {{[0-9]+}}(%rsp), %k1
581*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm2 {%k1} {z}
582*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm2, %xmm2
583*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
584*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
585*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    cmpl %edx, %esi
586*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setg %al
587*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
588*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7]
589*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllw $7, %ymm0, %ymm0
590*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpand {{.*}}(%rip), %ymm0, %ymm0
591*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpxor %ymm2, %ymm2, %ymm2
592*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtb %ymm0, %ymm2, %ymm0
593*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw {{[0-9]+}}(%rsp), %k1
594*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm2 {%k1} {z}
595*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm2, %xmm2
596*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw {{[0-9]+}}(%rsp), %k1
597*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm1 {%k1} {z}
598*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm1, %xmm1
599*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
600*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rbp, %rsp
601*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rbp
602*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
603*9880d681SAndroid Build Coastguard Worker;
604*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test17:
605*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
606*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovq %rdi, %k0
607*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    cmpl %edx, %esi
608*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    setg %al
609*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovw %eax, %k1
610*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftlq $5, %k1, %k1
611*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    korq %k1, %k0, %k0
612*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %zmm0
613*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
614*9880d681SAndroid Build Coastguard Worker  %a = bitcast i64 %x to <64 x i1>
615*9880d681SAndroid Build Coastguard Worker  %b = icmp sgt i32 %y, %z
616*9880d681SAndroid Build Coastguard Worker  %c = insertelement <64 x i1>%a, i1 %b, i32 5
617*9880d681SAndroid Build Coastguard Worker  %d = sext <64 x i1>%c to <64 x i8>
618*9880d681SAndroid Build Coastguard Worker  ret <64 x i8>%d
619*9880d681SAndroid Build Coastguard Worker}
620*9880d681SAndroid Build Coastguard Worker
621*9880d681SAndroid Build Coastguard Workerdefine <8 x i1> @test18(i8 %a, i16 %y) {
622*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test18:
623*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
624*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %edi, %k0
625*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %esi, %k1
626*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k1, %k2
627*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k2, %k2
628*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k1, %k1
629*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
630*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k1, %k1
631*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    korw %k1, %k0, %k0
632*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k2, %k1
633*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    korw %k1, %k0, %k1
634*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
635*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
636*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovqw %zmm0, %xmm0
637*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
638*9880d681SAndroid Build Coastguard Worker;
639*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test18:
640*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
641*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %edi, %k0
642*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovw %esi, %k1
643*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftlw $6, %k1, %k2
644*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftrw $15, %k2, %k2
645*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftlw $7, %k1, %k1
646*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftrw $15, %k1, %k1
647*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftlb $7, %k1, %k1
648*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftlb $6, %k2, %k2
649*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    korb %k2, %k0, %k0
650*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    korb %k1, %k0, %k0
651*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2w %k0, %xmm0
652*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
653*9880d681SAndroid Build Coastguard Worker  %b = bitcast i8 %a to <8 x i1>
654*9880d681SAndroid Build Coastguard Worker  %b1 = bitcast i16 %y to <16 x i1>
655*9880d681SAndroid Build Coastguard Worker  %el1 = extractelement <16 x i1>%b1, i32 8
656*9880d681SAndroid Build Coastguard Worker  %el2 = extractelement <16 x i1>%b1, i32 9
657*9880d681SAndroid Build Coastguard Worker  %c = insertelement <8 x i1>%b, i1 %el1, i32 7
658*9880d681SAndroid Build Coastguard Worker  %d = insertelement <8 x i1>%c, i1 %el2, i32 6
659*9880d681SAndroid Build Coastguard Worker  ret <8 x i1>%d
660*9880d681SAndroid Build Coastguard Worker}
661*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test21(<32 x i16> %x , <32 x i1> %mask) nounwind readnone {
662*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test21:
663*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
664*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovzxbw {{.*#+}} ymm3 = xmm2[0],zero,xmm2[1],zero,xmm2[2],zero,xmm2[3],zero,xmm2[4],zero,xmm2[5],zero,xmm2[6],zero,xmm2[7],zero,xmm2[8],zero,xmm2[9],zero,xmm2[10],zero,xmm2[11],zero,xmm2[12],zero,xmm2[13],zero,xmm2[14],zero,xmm2[15],zero
665*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllw $15, %ymm3, %ymm3
666*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsraw $15, %ymm3, %ymm3
667*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpand %ymm0, %ymm3, %ymm0
668*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vextracti128 $1, %ymm2, %xmm2
669*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovzxbw {{.*#+}} ymm2 = xmm2[0],zero,xmm2[1],zero,xmm2[2],zero,xmm2[3],zero,xmm2[4],zero,xmm2[5],zero,xmm2[6],zero,xmm2[7],zero,xmm2[8],zero,xmm2[9],zero,xmm2[10],zero,xmm2[11],zero,xmm2[12],zero,xmm2[13],zero,xmm2[14],zero,xmm2[15],zero
670*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllw $15, %ymm2, %ymm2
671*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsraw $15, %ymm2, %ymm2
672*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpand %ymm1, %ymm2, %ymm1
673*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
674*9880d681SAndroid Build Coastguard Worker;
675*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test21:
676*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
677*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $7, %ymm1, %ymm1
678*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovb2m %ymm1, %k1
679*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovdqu16 %zmm0, %zmm0 {%k1} {z}
680*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
681*9880d681SAndroid Build Coastguard Worker  %ret = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> zeroinitializer
682*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %ret
683*9880d681SAndroid Build Coastguard Worker}
684*9880d681SAndroid Build Coastguard Worker
685*9880d681SAndroid Build Coastguard Workerdefine void @test22(<4 x i1> %a, <4 x i1>* %addr) {
686*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test22:
687*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
688*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %YMM0<def>
689*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %ymm0, %ymm0
690*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
691*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
692*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rdi)
693*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
694*9880d681SAndroid Build Coastguard Worker;
695*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test22:
696*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
697*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpslld $31, %xmm0, %xmm0
698*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vptestmd %xmm0, %xmm0, %k0
699*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rdi)
700*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
701*9880d681SAndroid Build Coastguard Worker  store <4 x i1> %a, <4 x i1>* %addr
702*9880d681SAndroid Build Coastguard Worker  ret void
703*9880d681SAndroid Build Coastguard Worker}
704*9880d681SAndroid Build Coastguard Worker
705*9880d681SAndroid Build Coastguard Workerdefine void @test23(<2 x i1> %a, <2 x i1>* %addr) {
706*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test23:
707*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
708*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def>
709*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm0, %zmm0
710*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm0, %zmm0, %k0
711*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
712*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rdi)
713*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
714*9880d681SAndroid Build Coastguard Worker;
715*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test23:
716*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
717*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllq $63, %xmm0, %xmm0
718*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vptestmq %xmm0, %xmm0, %k0
719*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rdi)
720*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
721*9880d681SAndroid Build Coastguard Worker  store <2 x i1> %a, <2 x i1>* %addr
722*9880d681SAndroid Build Coastguard Worker  ret void
723*9880d681SAndroid Build Coastguard Worker}
724*9880d681SAndroid Build Coastguard Worker
725*9880d681SAndroid Build Coastguard Workerdefine void @store_v1i1(<1 x i1> %c , <1 x i1>* %ptr) {
726*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v1i1:
727*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
728*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andl $1, %edi
729*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %edi, %k0
730*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kxnorw %k0, %k0, %k1
731*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
732*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kxorw %k1, %k0, %k0
733*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
734*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rsi)
735*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
736*9880d681SAndroid Build Coastguard Worker;
737*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v1i1:
738*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
739*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    andl $1, %edi
740*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovw %edi, %k0
741*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kxnorw %k0, %k0, %k1
742*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftrw $15, %k1, %k1
743*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kxorw %k1, %k0, %k0
744*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rsi)
745*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
746*9880d681SAndroid Build Coastguard Worker  %x = xor <1 x i1> %c, <i1 1>
747*9880d681SAndroid Build Coastguard Worker  store <1 x i1> %x, <1 x i1>*  %ptr, align 4
748*9880d681SAndroid Build Coastguard Worker  ret void
749*9880d681SAndroid Build Coastguard Worker}
750*9880d681SAndroid Build Coastguard Worker
751*9880d681SAndroid Build Coastguard Workerdefine void @store_v2i1(<2 x i1> %c , <2 x i1>* %ptr) {
752*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v2i1:
753*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
754*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpxor {{.*}}(%rip), %xmm0, %xmm0
755*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm0, %zmm0
756*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm0, %zmm0, %k0
757*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
758*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rdi)
759*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
760*9880d681SAndroid Build Coastguard Worker;
761*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v2i1:
762*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
763*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllq $63, %xmm0, %xmm0
764*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vptestmq %xmm0, %xmm0, %k0
765*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    knotw %k0, %k0
766*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rdi)
767*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
768*9880d681SAndroid Build Coastguard Worker  %x = xor <2 x i1> %c, <i1 1, i1 1>
769*9880d681SAndroid Build Coastguard Worker  store <2 x i1> %x, <2 x i1>*  %ptr, align 4
770*9880d681SAndroid Build Coastguard Worker  ret void
771*9880d681SAndroid Build Coastguard Worker}
772*9880d681SAndroid Build Coastguard Worker
773*9880d681SAndroid Build Coastguard Workerdefine void @store_v4i1(<4 x i1> %c , <4 x i1>* %ptr) {
774*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v4i1:
775*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
776*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpbroadcastd {{.*}}(%rip), %xmm1
777*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpxor %xmm1, %xmm0, %xmm0
778*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %ymm0, %ymm0
779*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
780*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
781*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rdi)
782*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
783*9880d681SAndroid Build Coastguard Worker;
784*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v4i1:
785*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
786*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpslld $31, %xmm0, %xmm0
787*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vptestmd %xmm0, %xmm0, %k0
788*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    knotw %k0, %k0
789*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rdi)
790*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
791*9880d681SAndroid Build Coastguard Worker  %x = xor <4 x i1> %c, <i1 1, i1 1, i1 1, i1 1>
792*9880d681SAndroid Build Coastguard Worker  store <4 x i1> %x, <4 x i1>*  %ptr, align 4
793*9880d681SAndroid Build Coastguard Worker  ret void
794*9880d681SAndroid Build Coastguard Worker}
795*9880d681SAndroid Build Coastguard Worker
796*9880d681SAndroid Build Coastguard Workerdefine void @store_v8i1(<8 x i1> %c , <8 x i1>* %ptr) {
797*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v8i1:
798*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
799*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwq %xmm0, %zmm0
800*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm0, %zmm0
801*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm0, %zmm0, %k0
802*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    knotw %k0, %k0
803*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
804*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rdi)
805*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
806*9880d681SAndroid Build Coastguard Worker;
807*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v8i1:
808*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
809*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
810*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovw2m %xmm0, %k0
811*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    knotb %k0, %k0
812*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rdi)
813*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
814*9880d681SAndroid Build Coastguard Worker  %x = xor <8 x i1> %c, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>
815*9880d681SAndroid Build Coastguard Worker  store <8 x i1> %x, <8 x i1>*  %ptr, align 4
816*9880d681SAndroid Build Coastguard Worker  ret void
817*9880d681SAndroid Build Coastguard Worker}
818*9880d681SAndroid Build Coastguard Worker
819*9880d681SAndroid Build Coastguard Workerdefine void @store_v16i1(<16 x i1> %c , <16 x i1>* %ptr) {
820*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v16i1:
821*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
822*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
823*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
824*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
825*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    knotw %k0, %k0
826*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, (%rdi)
827*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
828*9880d681SAndroid Build Coastguard Worker;
829*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v16i1:
830*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
831*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
832*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovb2m %xmm0, %k0
833*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    knotw %k0, %k0
834*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovw %k0, (%rdi)
835*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
836*9880d681SAndroid Build Coastguard Worker  %x = xor <16 x i1> %c, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>
837*9880d681SAndroid Build Coastguard Worker  store <16 x i1> %x, <16 x i1>*  %ptr, align 4
838*9880d681SAndroid Build Coastguard Worker  ret void
839*9880d681SAndroid Build Coastguard Worker}
840*9880d681SAndroid Build Coastguard Worker
841*9880d681SAndroid Build Coastguard Worker;void f2(int);
842*9880d681SAndroid Build Coastguard Worker;void f1(int c)
843*9880d681SAndroid Build Coastguard Worker;{
844*9880d681SAndroid Build Coastguard Worker;  static int v = 0;
845*9880d681SAndroid Build Coastguard Worker;  if (v == 0)
846*9880d681SAndroid Build Coastguard Worker;    v = 1;
847*9880d681SAndroid Build Coastguard Worker;  else
848*9880d681SAndroid Build Coastguard Worker;    v = 0;
849*9880d681SAndroid Build Coastguard Worker;  f2(v);
850*9880d681SAndroid Build Coastguard Worker;}
851*9880d681SAndroid Build Coastguard Worker
852*9880d681SAndroid Build Coastguard Worker@f1.v = internal unnamed_addr global i1 false, align 4
853*9880d681SAndroid Build Coastguard Worker
854*9880d681SAndroid Build Coastguard Workerdefine void @f1(i32 %c) {
855*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: f1:
856*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0: ## %entry
857*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl {{.*}}(%rip), %edi
858*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl %edi, %eax
859*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andl $1, %eax
860*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %eax, %k0
861*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kxnorw %k0, %k0, %k1
862*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
863*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kxorw %k1, %k0, %k0
864*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
865*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, {{.*}}(%rip)
866*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl $1, %edi
867*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    jmp _f2 ## TAILCALL
868*9880d681SAndroid Build Coastguard Worker;
869*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: f1:
870*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0: ## %entry
871*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movzbl {{.*}}(%rip), %edi
872*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movl %edi, %eax
873*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    andl $1, %eax
874*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovw %eax, %k0
875*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kxnorw %k0, %k0, %k1
876*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kshiftrw $15, %k1, %k1
877*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kxorw %k1, %k0, %k0
878*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, {{.*}}(%rip)
879*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    xorl $1, %edi
880*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    jmp _f2 ## TAILCALL
881*9880d681SAndroid Build Coastguard Workerentry:
882*9880d681SAndroid Build Coastguard Worker  %.b1 = load i1, i1* @f1.v, align 4
883*9880d681SAndroid Build Coastguard Worker  %not..b1 = xor i1 %.b1, true
884*9880d681SAndroid Build Coastguard Worker  store i1 %not..b1, i1* @f1.v, align 4
885*9880d681SAndroid Build Coastguard Worker  %0 = zext i1 %not..b1 to i32
886*9880d681SAndroid Build Coastguard Worker  tail call void @f2(i32 %0) #2
887*9880d681SAndroid Build Coastguard Worker  ret void
888*9880d681SAndroid Build Coastguard Worker}
889*9880d681SAndroid Build Coastguard Worker
890*9880d681SAndroid Build Coastguard Workerdeclare void @f2(i32) #1
891*9880d681SAndroid Build Coastguard Worker
892*9880d681SAndroid Build Coastguard Workerdefine void @store_i16_i1(i16 %x, i1 *%y) {
893*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: store_i16_i1:
894*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
896*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movb %dil, (%rsi)
897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
898*9880d681SAndroid Build Coastguard Worker  %c = trunc i16 %x to i1
899*9880d681SAndroid Build Coastguard Worker  store i1 %c, i1* %y
900*9880d681SAndroid Build Coastguard Worker  ret void
901*9880d681SAndroid Build Coastguard Worker}
902*9880d681SAndroid Build Coastguard Worker
903*9880d681SAndroid Build Coastguard Workerdefine void @store_i8_i1(i8 %x, i1 *%y) {
904*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: store_i8_i1:
905*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
906*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
907*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movb %dil, (%rsi)
908*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
909*9880d681SAndroid Build Coastguard Worker  %c = trunc i8 %x to i1
910*9880d681SAndroid Build Coastguard Worker  store i1 %c, i1* %y
911*9880d681SAndroid Build Coastguard Worker  ret void
912*9880d681SAndroid Build Coastguard Worker}
913*9880d681SAndroid Build Coastguard Worker
914*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_build_vec_v32i1(<32 x i16> %x) {
915*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_build_vec_v32i1:
916*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
917*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovzxbw {{.*#+}} ymm2 = 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
918*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllw $15, %ymm2, %ymm2
919*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsraw $15, %ymm2, %ymm2
920*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpand %ymm0, %ymm2, %ymm0
921*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovzxbw {{.*#+}} ymm2 = 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
922*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllw $15, %ymm2, %ymm2
923*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsraw $15, %ymm2, %ymm2
924*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpand %ymm1, %ymm2, %ymm1
925*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
926*9880d681SAndroid Build Coastguard Worker;
927*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test_build_vec_v32i1:
928*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
929*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movl $1497715861, %eax ## imm = 0x59455495
930*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovd %eax, %k1
931*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovdqu16 %zmm0, %zmm0 {%k1} {z}
932*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
933*9880d681SAndroid Build Coastguard Worker  %ret = select <32 x i1> <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 true, i1 false, i1 true, i1 false>, <32 x i16> %x, <32 x i16> zeroinitializer
934*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %ret
935*9880d681SAndroid Build Coastguard Worker}
936*9880d681SAndroid Build Coastguard Worker
937*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_build_vec_v64i1(<64 x i8> %x) {
938*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_build_vec_v64i1:
939*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
940*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vandps {{.*}}(%rip), %ymm0, %ymm0
941*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vandps {{.*}}(%rip), %ymm1, %ymm1
942*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
943*9880d681SAndroid Build Coastguard Worker;
944*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test_build_vec_v64i1:
945*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
946*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movabsq $6432645796886517060, %rax ## imm = 0x5945594549549544
947*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovq %rax, %k1
948*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovdqu8 %zmm0, %zmm0 {%k1} {z}
949*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
950*9880d681SAndroid Build Coastguard Worker  %ret = select <64 x i1> <i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 true, i1 false, i1 true, i1 false>, <64 x i8> %x, <64 x i8> zeroinitializer
951*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %ret
952*9880d681SAndroid Build Coastguard Worker}
953*9880d681SAndroid Build Coastguard Worker
954*9880d681SAndroid Build Coastguard Workerdefine void @ktest_1(<8 x double> %in, double * %base) {
955*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: ktest_1:
956*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
957*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovupd (%rdi), %zmm1
958*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltpd %zmm0, %zmm1, %k1
959*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovupd 8(%rdi), %zmm1 {%k1} {z}
960*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltpd %zmm1, %zmm0, %k0 {%k1}
961*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
962*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    testb %al, %al
963*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    je LBB41_2
964*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  ## BB#1: ## %L1
965*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovapd %zmm0, (%rdi)
966*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
967*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  LBB41_2: ## %L2
968*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovapd %zmm0, 8(%rdi)
969*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
970*9880d681SAndroid Build Coastguard Worker;
971*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: ktest_1:
972*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
973*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovupd (%rdi), %zmm1
974*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltpd %zmm0, %zmm1, %k1
975*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovupd 8(%rdi), %zmm1 {%k1} {z}
976*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltpd %zmm1, %zmm0, %k0 {%k1}
977*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    ktestb %k0, %k0
978*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    je LBB41_2
979*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  ## BB#1: ## %L1
980*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovapd %zmm0, (%rdi)
981*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
982*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  LBB41_2: ## %L2
983*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovapd %zmm0, 8(%rdi)
984*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
985*9880d681SAndroid Build Coastguard Worker  %addr1 = getelementptr double, double * %base, i64 0
986*9880d681SAndroid Build Coastguard Worker  %addr2 = getelementptr double, double * %base, i64 1
987*9880d681SAndroid Build Coastguard Worker
988*9880d681SAndroid Build Coastguard Worker  %vaddr1 = bitcast double* %addr1 to <8 x double>*
989*9880d681SAndroid Build Coastguard Worker  %vaddr2 = bitcast double* %addr2 to <8 x double>*
990*9880d681SAndroid Build Coastguard Worker
991*9880d681SAndroid Build Coastguard Worker  %val1 = load <8 x double>, <8 x double> *%vaddr1, align 1
992*9880d681SAndroid Build Coastguard Worker  %val2 = load <8 x double>, <8 x double> *%vaddr2, align 1
993*9880d681SAndroid Build Coastguard Worker
994*9880d681SAndroid Build Coastguard Worker  %sel1 = fcmp ogt <8 x double>%in, %val1
995*9880d681SAndroid Build Coastguard Worker  %val3 = select <8 x i1> %sel1, <8 x double> %val2, <8 x double> zeroinitializer
996*9880d681SAndroid Build Coastguard Worker  %sel2 = fcmp olt <8 x double> %in, %val3
997*9880d681SAndroid Build Coastguard Worker  %sel3 = and <8 x i1> %sel1, %sel2
998*9880d681SAndroid Build Coastguard Worker
999*9880d681SAndroid Build Coastguard Worker  %int_sel3 = bitcast <8 x i1> %sel3 to i8
1000*9880d681SAndroid Build Coastguard Worker  %res = icmp eq i8 %int_sel3, zeroinitializer
1001*9880d681SAndroid Build Coastguard Worker  br i1 %res, label %L2, label %L1
1002*9880d681SAndroid Build Coastguard WorkerL1:
1003*9880d681SAndroid Build Coastguard Worker  store <8 x double> %in, <8 x double>* %vaddr1
1004*9880d681SAndroid Build Coastguard Worker  br label %End
1005*9880d681SAndroid Build Coastguard WorkerL2:
1006*9880d681SAndroid Build Coastguard Worker  store <8 x double> %in, <8 x double>* %vaddr2
1007*9880d681SAndroid Build Coastguard Worker  br label %End
1008*9880d681SAndroid Build Coastguard WorkerEnd:
1009*9880d681SAndroid Build Coastguard Worker  ret void
1010*9880d681SAndroid Build Coastguard Worker}
1011*9880d681SAndroid Build Coastguard Worker
1012*9880d681SAndroid Build Coastguard Workerdefine void @ktest_2(<32 x float> %in, float * %base) {
1013*9880d681SAndroid Build Coastguard Worker;
1014*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: ktest_2:
1015*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1016*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rbp
1017*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp6:
1018*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 16
1019*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp7:
1020*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_offset %rbp, -16
1021*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rsp, %rbp
1022*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp8:
1023*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_register %rbp
1024*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andq $-32, %rsp
1025*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    subq $32, %rsp
1026*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovups (%rdi), %zmm2
1027*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovups 64(%rdi), %zmm3
1028*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltps %zmm1, %zmm3, %k1
1029*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k1, %k0
1030*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1031*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1032*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k1, %k0
1033*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1034*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %ecx
1035*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm3
1036*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm3, %xmm3
1037*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k1, %k0
1038*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1039*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1040*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm3, %xmm3
1041*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k1, %k0
1042*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1043*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1044*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm3, %xmm3
1045*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k1, %k0
1046*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1047*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1048*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm3, %xmm3
1049*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k1, %k0
1050*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1051*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1052*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm3, %xmm3
1053*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k1, %k0
1054*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1055*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1056*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm3, %xmm3
1057*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k1, %k0
1058*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1059*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1060*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm3, %xmm3
1061*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k1, %k0
1062*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1063*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1064*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm3, %xmm3
1065*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k1, %k0
1066*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1067*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1068*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm3, %xmm3
1069*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k1, %k0
1070*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1071*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1072*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm3, %xmm3
1073*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k1, %k0
1074*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1075*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1076*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm3, %xmm3
1077*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k1, %k0
1078*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1079*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1080*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm3, %xmm3
1081*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k1, %k0
1082*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1083*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1084*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm3, %xmm3
1085*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k1, %k0
1086*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1087*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1088*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm3, %xmm3
1089*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k1, %k0
1090*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1091*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1092*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm3, %xmm3
1093*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltps %zmm0, %zmm2, %k2
1094*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k2, %k0
1095*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1096*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1097*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k2, %k0
1098*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1099*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %ecx
1100*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm2
1101*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm2, %xmm2
1102*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k2, %k0
1103*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1104*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1105*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm2, %xmm2
1106*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k2, %k0
1107*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1108*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1109*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm2, %xmm2
1110*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k2, %k0
1111*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1112*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1113*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm2, %xmm2
1114*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k2, %k0
1115*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1116*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1117*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm2, %xmm2
1118*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k2, %k0
1119*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1120*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1121*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm2, %xmm2
1122*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k2, %k0
1123*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1124*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1125*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm2, %xmm2
1126*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k2, %k0
1127*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1128*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1129*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm2, %xmm2
1130*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k2, %k0
1131*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1132*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1133*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm2, %xmm2
1134*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k2, %k0
1135*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1136*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1137*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm2, %xmm2
1138*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k2, %k0
1139*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1140*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1141*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm2, %xmm2
1142*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k2, %k0
1143*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1144*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1145*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm2, %xmm2
1146*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k2, %k0
1147*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1148*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1149*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm2, %xmm2
1150*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k2, %k0
1151*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1152*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1153*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm2, %xmm2
1154*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k2, %k0
1155*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1156*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1157*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm2, %xmm2
1158*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm2
1159*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllw $7, %ymm2, %ymm2
1160*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpand {{.*}}(%rip), %ymm2, %ymm2
1161*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpxor %ymm3, %ymm3, %ymm3
1162*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtb %ymm2, %ymm3, %ymm2
1163*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovups 4(%rdi), %zmm3 {%k2} {z}
1164*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovups 68(%rdi), %zmm4 {%k1} {z}
1165*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltps %zmm4, %zmm1, %k0
1166*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
1167*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1168*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1169*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
1170*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1171*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
1172*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm4
1173*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm4, %xmm4
1174*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
1175*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1176*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1177*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm4, %xmm4
1178*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
1179*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1180*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1181*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm4, %xmm4
1182*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
1183*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1184*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1185*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm4, %xmm4
1186*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
1187*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1188*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1189*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm4, %xmm4
1190*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
1191*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1192*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1193*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm4, %xmm4
1194*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
1195*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1196*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1197*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm4, %xmm4
1198*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
1199*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1200*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1201*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm4, %xmm4
1202*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
1203*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1204*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1205*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm4, %xmm4
1206*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
1207*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1208*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1209*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm4, %xmm4
1210*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
1211*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1212*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1213*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm4, %xmm4
1214*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
1215*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1216*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1217*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm4, %xmm4
1218*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
1219*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1220*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1221*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm4, %xmm4
1222*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
1223*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1224*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1225*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm4, %xmm4
1226*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
1227*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1228*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1229*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm4, %xmm4
1230*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltps %zmm3, %zmm0, %k0
1231*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
1232*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1233*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1234*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
1235*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1236*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
1237*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm3
1238*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm3, %xmm3
1239*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
1240*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1241*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1242*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm3, %xmm3
1243*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
1244*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1245*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1246*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm3, %xmm3
1247*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
1248*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1249*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1250*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm3, %xmm3
1251*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
1252*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1253*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1254*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm3, %xmm3
1255*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
1256*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1257*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1258*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm3, %xmm3
1259*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
1260*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1261*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1262*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm3, %xmm3
1263*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
1264*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1265*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1266*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm3, %xmm3
1267*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
1268*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1269*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1270*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm3, %xmm3
1271*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
1272*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1273*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1274*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm3, %xmm3
1275*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
1276*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1277*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1278*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm3, %xmm3
1279*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
1280*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1281*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1282*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm3, %xmm3
1283*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
1284*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1285*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1286*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm3, %xmm3
1287*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
1288*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1289*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1290*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm3, %xmm3
1291*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
1292*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1293*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1294*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm3, %xmm3
1295*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm3
1296*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpor %ymm3, %ymm2, %ymm2
1297*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vextracti128 $1, %ymm2, %xmm3
1298*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm3, %zmm3
1299*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm3, %zmm3
1300*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm3, %zmm3, %k0
1301*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, {{[0-9]+}}(%rsp)
1302*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm2, %zmm2
1303*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm2, %zmm2
1304*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm2, %zmm2, %k0
1305*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, (%rsp)
1306*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    cmpl $0, (%rsp)
1307*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    je LBB42_2
1308*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  ## BB#1: ## %L1
1309*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovaps %zmm0, (%rdi)
1310*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovaps %zmm1, 64(%rdi)
1311*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    jmp LBB42_3
1312*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  LBB42_2: ## %L2
1313*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovaps %zmm0, 4(%rdi)
1314*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovaps %zmm1, 68(%rdi)
1315*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  LBB42_3: ## %End
1316*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rbp, %rsp
1317*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rbp
1318*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1319*9880d681SAndroid Build Coastguard Worker;
1320*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: ktest_2:
1321*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1322*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovups 64(%rdi), %zmm2
1323*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovups (%rdi), %zmm3
1324*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltps %zmm0, %zmm3, %k1
1325*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltps %zmm1, %zmm2, %k2
1326*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kunpckwd %k1, %k2, %k0
1327*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovups 68(%rdi), %zmm2 {%k2} {z}
1328*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovups 4(%rdi), %zmm3 {%k1} {z}
1329*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltps %zmm3, %zmm0, %k1
1330*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltps %zmm2, %zmm1, %k2
1331*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kunpckwd %k1, %k2, %k1
1332*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kord %k1, %k0, %k0
1333*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    ktestd %k0, %k0
1334*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    je LBB42_2
1335*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  ## BB#1: ## %L1
1336*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovaps %zmm0, (%rdi)
1337*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovaps %zmm1, 64(%rdi)
1338*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1339*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  LBB42_2: ## %L2
1340*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovaps %zmm0, 4(%rdi)
1341*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovaps %zmm1, 68(%rdi)
1342*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1343*9880d681SAndroid Build Coastguard Worker  %addr1 = getelementptr float, float * %base, i64 0
1344*9880d681SAndroid Build Coastguard Worker  %addr2 = getelementptr float, float * %base, i64 1
1345*9880d681SAndroid Build Coastguard Worker
1346*9880d681SAndroid Build Coastguard Worker  %vaddr1 = bitcast float* %addr1 to <32 x float>*
1347*9880d681SAndroid Build Coastguard Worker  %vaddr2 = bitcast float* %addr2 to <32 x float>*
1348*9880d681SAndroid Build Coastguard Worker
1349*9880d681SAndroid Build Coastguard Worker  %val1 = load <32 x float>, <32 x float> *%vaddr1, align 1
1350*9880d681SAndroid Build Coastguard Worker  %val2 = load <32 x float>, <32 x float> *%vaddr2, align 1
1351*9880d681SAndroid Build Coastguard Worker
1352*9880d681SAndroid Build Coastguard Worker  %sel1 = fcmp ogt <32 x float>%in, %val1
1353*9880d681SAndroid Build Coastguard Worker  %val3 = select <32 x i1> %sel1, <32 x float> %val2, <32 x float> zeroinitializer
1354*9880d681SAndroid Build Coastguard Worker  %sel2 = fcmp olt <32 x float> %in, %val3
1355*9880d681SAndroid Build Coastguard Worker  %sel3 = or <32 x i1> %sel1, %sel2
1356*9880d681SAndroid Build Coastguard Worker
1357*9880d681SAndroid Build Coastguard Worker  %int_sel3 = bitcast <32 x i1> %sel3 to i32
1358*9880d681SAndroid Build Coastguard Worker  %res = icmp eq i32 %int_sel3, zeroinitializer
1359*9880d681SAndroid Build Coastguard Worker  br i1 %res, label %L2, label %L1
1360*9880d681SAndroid Build Coastguard WorkerL1:
1361*9880d681SAndroid Build Coastguard Worker  store <32 x float> %in, <32 x float>* %vaddr1
1362*9880d681SAndroid Build Coastguard Worker  br label %End
1363*9880d681SAndroid Build Coastguard WorkerL2:
1364*9880d681SAndroid Build Coastguard Worker  store <32 x float> %in, <32 x float>* %vaddr2
1365*9880d681SAndroid Build Coastguard Worker  br label %End
1366*9880d681SAndroid Build Coastguard WorkerEnd:
1367*9880d681SAndroid Build Coastguard Worker  ret void
1368*9880d681SAndroid Build Coastguard Worker}
1369*9880d681SAndroid Build Coastguard Worker
1370*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @load_8i1(<8 x i1>* %a) {
1371*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_8i1:
1372*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1373*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl (%rdi), %eax
1374*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %eax, %k1
1375*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
1376*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
1377*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1378*9880d681SAndroid Build Coastguard Worker;
1379*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_8i1:
1380*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1381*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb (%rdi), %k0
1382*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2q %k0, %zmm0
1383*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1384*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i1>, <8 x i1>* %a
1385*9880d681SAndroid Build Coastguard Worker  %c = sext <8 x i1> %b to <8 x i64>
1386*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %c
1387*9880d681SAndroid Build Coastguard Worker}
1388*9880d681SAndroid Build Coastguard Worker
1389*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @load_16i1(<16 x i1>* %a) {
1390*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_16i1:
1391*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1392*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw (%rdi), %k1
1393*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
1394*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
1395*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1396*9880d681SAndroid Build Coastguard Worker;
1397*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_16i1:
1398*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1399*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovw (%rdi), %k0
1400*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2d %k0, %zmm0
1401*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1402*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i1>, <16 x i1>* %a
1403*9880d681SAndroid Build Coastguard Worker  %c = sext <16 x i1> %b to <16 x i32>
1404*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %c
1405*9880d681SAndroid Build Coastguard Worker}
1406*9880d681SAndroid Build Coastguard Worker
1407*9880d681SAndroid Build Coastguard Workerdefine <2 x i16> @load_2i1(<2 x i1>* %a) {
1408*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_2i1:
1409*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1410*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl (%rdi), %eax
1411*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %eax, %k1
1412*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
1413*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
1414*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %ZMM0<kill>
1415*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1416*9880d681SAndroid Build Coastguard Worker;
1417*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_2i1:
1418*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1419*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb (%rdi), %k0
1420*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2q %k0, %xmm0
1421*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1422*9880d681SAndroid Build Coastguard Worker  %b = load <2 x i1>, <2 x i1>* %a
1423*9880d681SAndroid Build Coastguard Worker  %c = sext <2 x i1> %b to <2 x i16>
1424*9880d681SAndroid Build Coastguard Worker  ret <2 x i16> %c
1425*9880d681SAndroid Build Coastguard Worker}
1426*9880d681SAndroid Build Coastguard Worker
1427*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @load_4i1(<4 x i1>* %a) {
1428*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_4i1:
1429*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1430*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl (%rdi), %eax
1431*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %eax, %k1
1432*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
1433*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
1434*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovqd %zmm0, %ymm0
1435*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
1436*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1437*9880d681SAndroid Build Coastguard Worker;
1438*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_4i1:
1439*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1440*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb (%rdi), %k0
1441*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2d %k0, %xmm0
1442*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1443*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i1>, <4 x i1>* %a
1444*9880d681SAndroid Build Coastguard Worker  %c = sext <4 x i1> %b to <4 x i16>
1445*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %c
1446*9880d681SAndroid Build Coastguard Worker}
1447*9880d681SAndroid Build Coastguard Worker
1448*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @load_32i1(<32 x i1>* %a) {
1449*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_32i1:
1450*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1451*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw (%rdi), %k1
1452*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1
1453*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm0 {%k1} {z}
1454*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdw %zmm0, %ymm0
1455*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw 2(%rdi), %k1
1456*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm1 {%k1} {z}
1457*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdw %zmm1, %ymm1
1458*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1459*9880d681SAndroid Build Coastguard Worker;
1460*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_32i1:
1461*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1462*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovd (%rdi), %k0
1463*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2w %k0, %zmm0
1464*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1465*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i1>, <32 x i1>* %a
1466*9880d681SAndroid Build Coastguard Worker  %c = sext <32 x i1> %b to <32 x i16>
1467*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %c
1468*9880d681SAndroid Build Coastguard Worker}
1469*9880d681SAndroid Build Coastguard Worker
1470*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @load_64i1(<64 x i1>* %a) {
1471*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_64i1:
1472*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1473*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw (%rdi), %k1
1474*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm1, %zmm1, %zmm1
1475*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm0 {%k1} {z}
1476*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
1477*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw 2(%rdi), %k1
1478*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm2 {%k1} {z}
1479*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm2, %xmm2
1480*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1481*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw 4(%rdi), %k1
1482*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm2 {%k1} {z}
1483*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm2, %xmm2
1484*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw 6(%rdi), %k1
1485*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm1, %zmm1 {%k1} {z}
1486*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm1, %xmm1
1487*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
1488*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1489*9880d681SAndroid Build Coastguard Worker;
1490*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_64i1:
1491*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1492*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovq (%rdi), %k0
1493*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %zmm0
1494*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1495*9880d681SAndroid Build Coastguard Worker  %b = load <64 x i1>, <64 x i1>* %a
1496*9880d681SAndroid Build Coastguard Worker  %c = sext <64 x i1> %b to <64 x i8>
1497*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %c
1498*9880d681SAndroid Build Coastguard Worker}
1499*9880d681SAndroid Build Coastguard Worker
1500*9880d681SAndroid Build Coastguard Workerdefine void @store_8i1(<8 x i1>* %a, <8 x i1> %v) {
1501*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_8i1:
1502*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1503*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwq %xmm0, %zmm0
1504*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm0, %zmm0
1505*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm0, %zmm0, %k0
1506*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1507*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rdi)
1508*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1509*9880d681SAndroid Build Coastguard Worker;
1510*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_8i1:
1511*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1512*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
1513*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovw2m %xmm0, %k0
1514*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rdi)
1515*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1516*9880d681SAndroid Build Coastguard Worker  store <8 x i1> %v, <8 x i1>* %a
1517*9880d681SAndroid Build Coastguard Worker  ret void
1518*9880d681SAndroid Build Coastguard Worker}
1519*9880d681SAndroid Build Coastguard Worker
1520*9880d681SAndroid Build Coastguard Workerdefine void @store_8i1_1(<8 x i1>* %a, <8 x i16> %v) {
1521*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_8i1_1:
1522*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1523*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwq %xmm0, %zmm0
1524*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm0, %zmm0
1525*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm0, %zmm0, %k0
1526*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1527*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb %al, (%rdi)
1528*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1529*9880d681SAndroid Build Coastguard Worker;
1530*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_8i1_1:
1531*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1532*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
1533*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovw2m %xmm0, %k0
1534*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %k0, (%rdi)
1535*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1536*9880d681SAndroid Build Coastguard Worker  %v1 = trunc <8 x i16> %v to <8 x i1>
1537*9880d681SAndroid Build Coastguard Worker  store <8 x i1> %v1, <8 x i1>* %a
1538*9880d681SAndroid Build Coastguard Worker  ret void
1539*9880d681SAndroid Build Coastguard Worker}
1540*9880d681SAndroid Build Coastguard Worker
1541*9880d681SAndroid Build Coastguard Workerdefine void @store_16i1(<16 x i1>* %a, <16 x i1> %v) {
1542*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_16i1:
1543*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1544*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
1545*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
1546*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
1547*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, (%rdi)
1548*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1549*9880d681SAndroid Build Coastguard Worker;
1550*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_16i1:
1551*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1552*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
1553*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovb2m %xmm0, %k0
1554*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovw %k0, (%rdi)
1555*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1556*9880d681SAndroid Build Coastguard Worker  store <16 x i1> %v, <16 x i1>* %a
1557*9880d681SAndroid Build Coastguard Worker  ret void
1558*9880d681SAndroid Build Coastguard Worker}
1559*9880d681SAndroid Build Coastguard Worker
1560*9880d681SAndroid Build Coastguard Workerdefine void @store_32i1(<32 x i1>* %a, <32 x i1> %v) {
1561*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_32i1:
1562*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1563*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vextractf128 $1, %ymm0, %xmm1
1564*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm1, %zmm1
1565*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm1, %zmm1
1566*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm1, %zmm1, %k0
1567*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, 2(%rdi)
1568*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
1569*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
1570*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
1571*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, (%rdi)
1572*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1573*9880d681SAndroid Build Coastguard Worker;
1574*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_32i1:
1575*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1576*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $7, %ymm0, %ymm0
1577*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovb2m %ymm0, %k0
1578*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovd %k0, (%rdi)
1579*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1580*9880d681SAndroid Build Coastguard Worker  store <32 x i1> %v, <32 x i1>* %a
1581*9880d681SAndroid Build Coastguard Worker  ret void
1582*9880d681SAndroid Build Coastguard Worker}
1583*9880d681SAndroid Build Coastguard Worker
1584*9880d681SAndroid Build Coastguard Workerdefine void @store_32i1_1(<32 x i1>* %a, <32 x i16> %v) {
1585*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_32i1_1:
1586*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1587*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwd %ymm0, %zmm0
1588*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
1589*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwd %ymm1, %zmm1
1590*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm1, %xmm1
1591*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm1, %zmm1
1592*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm1, %zmm1
1593*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm1, %zmm1, %k0
1594*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, 2(%rdi)
1595*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
1596*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
1597*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
1598*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, (%rdi)
1599*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1600*9880d681SAndroid Build Coastguard Worker;
1601*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_32i1_1:
1602*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1603*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $15, %zmm0, %zmm0
1604*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovw2m %zmm0, %k0
1605*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovd %k0, (%rdi)
1606*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1607*9880d681SAndroid Build Coastguard Worker  %v1 = trunc <32 x i16> %v to <32 x i1>
1608*9880d681SAndroid Build Coastguard Worker  store <32 x i1> %v1, <32 x i1>* %a
1609*9880d681SAndroid Build Coastguard Worker  ret void
1610*9880d681SAndroid Build Coastguard Worker}
1611*9880d681SAndroid Build Coastguard Worker
1612*9880d681SAndroid Build Coastguard Worker
1613*9880d681SAndroid Build Coastguard Workerdefine void @store_64i1(<64 x i1>* %a, <64 x i1> %v) {
1614*9880d681SAndroid Build Coastguard Worker;
1615*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_64i1:
1616*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1617*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rbp
1618*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp9:
1619*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 16
1620*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %r15
1621*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp10:
1622*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 24
1623*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %r14
1624*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp11:
1625*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 32
1626*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %r13
1627*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp12:
1628*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 40
1629*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %r12
1630*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp13:
1631*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 48
1632*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rbx
1633*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp14:
1634*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 56
1635*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp15:
1636*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_offset %rbx, -56
1637*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp16:
1638*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_offset %r12, -48
1639*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp17:
1640*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_offset %r13, -40
1641*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp18:
1642*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_offset %r14, -32
1643*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp19:
1644*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_offset %r15, -24
1645*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp20:
1646*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_offset %rbp, -16
1647*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
1648*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
1649*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm1, %zmm1
1650*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm1, %zmm1
1651*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm2, %zmm2
1652*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm2, %zmm2
1653*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm3, %zmm3
1654*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm3, %zmm3
1655*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm3, %zmm3, %k0
1656*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
1657*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1658*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r8d
1659*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
1660*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1661*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r9d
1662*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
1663*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1664*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r10d
1665*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
1666*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1667*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r11d
1668*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
1669*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1670*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r14d
1671*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
1672*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1673*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r15d
1674*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
1675*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1676*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r12d
1677*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
1678*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1679*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r13d
1680*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
1681*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1682*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ebx
1683*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
1684*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1685*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ebp
1686*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
1687*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1688*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1689*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
1690*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1691*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
1692*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
1693*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1694*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %edx
1695*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
1696*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1697*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %esi
1698*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
1699*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1700*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %r9d, %xmm3
1701*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r9d
1702*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm2, %zmm2, %k2
1703*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
1704*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1705*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %r8d, %xmm3, %xmm2
1706*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %r10d, %xmm2, %xmm2
1707*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %r11d, %xmm2, %xmm2
1708*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %r14d, %xmm2, %xmm2
1709*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %r15d, %xmm2, %xmm2
1710*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %r12d, %xmm2, %xmm2
1711*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %r13d, %xmm2, %xmm2
1712*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %ebx, %xmm2, %xmm2
1713*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %ebp, %xmm2, %xmm2
1714*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm2, %xmm2
1715*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %ecx, %xmm2, %xmm2
1716*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %edx, %xmm2, %xmm2
1717*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %esi, %xmm2, %xmm2
1718*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %r9d, %xmm2, %xmm2
1719*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1720*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm2, %xmm2
1721*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm2, %zmm2
1722*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm2, %zmm2
1723*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm2, %zmm2, %k0
1724*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, 6(%rdi)
1725*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k2, %k0
1726*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1727*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r8d
1728*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k2, %k0
1729*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1730*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r10d
1731*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k2, %k0
1732*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1733*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r9d
1734*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k2, %k0
1735*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1736*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r11d
1737*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k2, %k0
1738*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1739*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r14d
1740*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k2, %k0
1741*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1742*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r15d
1743*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k2, %k0
1744*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1745*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r12d
1746*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k2, %k0
1747*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1748*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r13d
1749*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k2, %k0
1750*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1751*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %edx
1752*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k2, %k0
1753*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1754*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %esi
1755*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k2, %k0
1756*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1757*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %ebp
1758*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k2, %k0
1759*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1760*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %ebx
1761*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k2, %k0
1762*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1763*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1764*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k2, %k0
1765*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1766*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %ecx
1767*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k2, %k0
1768*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1769*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %r10d, %xmm2
1770*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r10d
1771*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm1, %zmm1, %k1
1772*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k2, %k0
1773*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1774*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %r8d, %xmm2, %xmm1
1775*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %r9d, %xmm1, %xmm1
1776*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %r11d, %xmm1, %xmm1
1777*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %r14d, %xmm1, %xmm1
1778*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %r15d, %xmm1, %xmm1
1779*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %r12d, %xmm1, %xmm1
1780*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %r13d, %xmm1, %xmm1
1781*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %edx, %xmm1, %xmm1
1782*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %esi, %xmm1, %xmm1
1783*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %ebp, %xmm1, %xmm1
1784*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %ebx, %xmm1, %xmm1
1785*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm1, %xmm1
1786*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %ecx, %xmm1, %xmm1
1787*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %r10d, %xmm1, %xmm1
1788*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1789*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
1790*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm1, %zmm1
1791*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm1, %zmm1
1792*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm1, %zmm1, %k0
1793*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, 4(%rdi)
1794*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k1, %k0
1795*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1796*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r8d
1797*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k1, %k0
1798*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1799*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r10d
1800*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k1, %k0
1801*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1802*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r9d
1803*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k1, %k0
1804*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1805*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r11d
1806*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k1, %k0
1807*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1808*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r14d
1809*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k1, %k0
1810*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1811*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r15d
1812*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k1, %k0
1813*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1814*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r12d
1815*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k1, %k0
1816*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1817*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r13d
1818*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k1, %k0
1819*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1820*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %edx
1821*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k1, %k0
1822*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1823*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %esi
1824*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k1, %k0
1825*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1826*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %ebp
1827*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k1, %k0
1828*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1829*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %ebx
1830*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k1, %k0
1831*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1832*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1833*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k1, %k0
1834*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1835*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %ecx
1836*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k1, %k0
1837*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1838*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %r10d, %xmm1
1839*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %r10d
1840*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
1841*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k1, %k1
1842*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1843*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %r8d, %xmm1, %xmm0
1844*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %r9d, %xmm0, %xmm0
1845*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %r11d, %xmm0, %xmm0
1846*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %r14d, %xmm0, %xmm0
1847*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %r15d, %xmm0, %xmm0
1848*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %r12d, %xmm0, %xmm0
1849*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %r13d, %xmm0, %xmm0
1850*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %edx, %xmm0, %xmm0
1851*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %esi, %xmm0, %xmm0
1852*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %ebp, %xmm0, %xmm0
1853*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %ebx, %xmm0, %xmm0
1854*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
1855*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %ecx, %xmm0, %xmm0
1856*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %r10d, %xmm0, %xmm0
1857*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1858*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
1859*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
1860*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
1861*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k1
1862*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, 2(%rdi)
1863*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
1864*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1865*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r8d
1866*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
1867*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1868*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r9d
1869*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
1870*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1871*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r10d
1872*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
1873*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1874*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r11d
1875*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
1876*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1877*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r14d
1878*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
1879*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1880*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r15d
1881*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
1882*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1883*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r12d
1884*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
1885*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1886*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r13d
1887*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
1888*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1889*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %edx
1890*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
1891*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1892*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %esi
1893*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
1894*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1895*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ebp
1896*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
1897*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1898*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ebx
1899*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
1900*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1901*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
1902*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
1903*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1904*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
1905*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
1906*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
1907*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %r9d, %xmm0
1908*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %r9d
1909*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %r8d, %xmm0, %xmm0
1910*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %r10d, %xmm0, %xmm0
1911*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %r11d, %xmm0, %xmm0
1912*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %r14d, %xmm0, %xmm0
1913*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %r15d, %xmm0, %xmm0
1914*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %r12d, %xmm0, %xmm0
1915*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %r13d, %xmm0, %xmm0
1916*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %edx, %xmm0, %xmm0
1917*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %esi, %xmm0, %xmm0
1918*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %ebp, %xmm0, %xmm0
1919*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %ebx, %xmm0, %xmm0
1920*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
1921*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
1922*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
1923*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %ecx, %xmm0, %xmm0
1924*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %r9d, %xmm0, %xmm0
1925*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
1926*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
1927*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
1928*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
1929*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
1930*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, (%rdi)
1931*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rbx
1932*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %r12
1933*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %r13
1934*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %r14
1935*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %r15
1936*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rbp
1937*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1938*9880d681SAndroid Build Coastguard Worker;
1939*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_64i1:
1940*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1941*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $7, %zmm0, %zmm0
1942*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovb2m %zmm0, %k0
1943*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovq %k0, (%rdi)
1944*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1945*9880d681SAndroid Build Coastguard Worker  store <64 x i1> %v, <64 x i1>* %a
1946*9880d681SAndroid Build Coastguard Worker  ret void
1947*9880d681SAndroid Build Coastguard Worker}
1948