xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512-vec-cmp.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s --check-prefix=CHECK --check-prefix=KNL
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -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 <16 x float> @test1(<16 x float> %x, <16 x float> %y) nounwind {
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1:
7*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpleps %zmm1, %zmm0, %k1
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmps %zmm0, %zmm1, %zmm0 {%k1}
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
11*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ole <16 x float> %x, %y
12*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x float> %x, <16 x float> %y
13*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %max
14*9880d681SAndroid Build Coastguard Worker}
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test2(<8 x double> %x, <8 x double> %y) nounwind {
17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2:
18*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmplepd %zmm1, %zmm0, %k1
20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmpd %zmm0, %zmm1, %zmm0 {%k1}
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
22*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ole <8 x double> %x, %y
23*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x double> %x, <8 x double> %y
24*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %max
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test3(<16 x i32> %x, <16 x i32> %x1, <16 x i32>* %yp) nounwind {
28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test3:
29*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqd (%rdi), %zmm0, %k1
31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
33*9880d681SAndroid Build Coastguard Worker  %y = load <16 x i32>, <16 x i32>* %yp, align 4
34*9880d681SAndroid Build Coastguard Worker  %mask = icmp eq <16 x i32> %x, %y
35*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> %x1
36*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test4_unsigned(<16 x i32> %x, <16 x i32> %y, <16 x i32> %x1) nounwind {
40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test4_unsigned:
41*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltud %zmm1, %zmm0, %k1
43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm2, %zmm1, %zmm0 {%k1}
44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
45*9880d681SAndroid Build Coastguard Worker  %mask = icmp uge <16 x i32> %x, %y
46*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x1, <16 x i32> %y
47*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test5(<8 x i64> %x, <8 x i64> %y) nounwind {
51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test5:
52*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqq %zmm1, %zmm0, %k1
54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
56*9880d681SAndroid Build Coastguard Worker  %mask = icmp eq <8 x i64> %x, %y
57*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> %y
58*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %max
59*9880d681SAndroid Build Coastguard Worker}
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test6_unsigned(<8 x i64> %x, <8 x i64> %y, <8 x i64> %x1) nounwind {
62*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test6_unsigned:
63*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleuq %zmm1, %zmm0, %k1
65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq %zmm2, %zmm1, %zmm0 {%k1}
66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
67*9880d681SAndroid Build Coastguard Worker  %mask = icmp ugt <8 x i64> %x, %y
68*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x i64> %x1, <8 x i64> %y
69*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %max
70*9880d681SAndroid Build Coastguard Worker}
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test7(<4 x float> %a, <4 x float> %b) {
73*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test7:
74*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
75*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vxorps %xmm2, %xmm2, %xmm2
76*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltps %xmm2, %xmm0, %xmm2
77*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0
78*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
79*9880d681SAndroid Build Coastguard Worker;
80*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test7:
81*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
82*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
83*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltps %xmm2, %xmm0, %k1
84*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmps %xmm0, %xmm1, %xmm0 {%k1}
85*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Worker  %mask = fcmp olt <4 x float> %a, zeroinitializer
88*9880d681SAndroid Build Coastguard Worker  %c = select <4 x i1>%mask, <4 x float>%a, <4 x float>%b
89*9880d681SAndroid Build Coastguard Worker  ret <4 x float>%c
90*9880d681SAndroid Build Coastguard Worker}
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test8(<2 x double> %a, <2 x double> %b) {
93*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test8:
94*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
95*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vxorpd %xmm2, %xmm2, %xmm2
96*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltpd %xmm2, %xmm0, %xmm2
97*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
98*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
99*9880d681SAndroid Build Coastguard Worker;
100*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test8:
101*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
102*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
103*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltpd %xmm2, %xmm0, %k1
104*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmpd %xmm0, %xmm1, %xmm0 {%k1}
105*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
106*9880d681SAndroid Build Coastguard Worker  %mask = fcmp olt <2 x double> %a, zeroinitializer
107*9880d681SAndroid Build Coastguard Worker  %c = select <2 x i1>%mask, <2 x double>%a, <2 x double>%b
108*9880d681SAndroid Build Coastguard Worker  ret <2 x double>%c
109*9880d681SAndroid Build Coastguard Worker}
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test9(<8 x i32> %x, <8 x i32> %y) nounwind {
112*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test9:
113*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
114*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM1<def> %YMM1<kill> %ZMM1<def>
115*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
116*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpeqd %zmm1, %zmm0, %k1
117*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
118*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
119*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
120*9880d681SAndroid Build Coastguard Worker;
121*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test9:
122*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
123*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpeqd %ymm1, %ymm0, %k1
124*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
125*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
126*9880d681SAndroid Build Coastguard Worker  %mask = icmp eq <8 x i32> %x, %y
127*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %y
128*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %max
129*9880d681SAndroid Build Coastguard Worker}
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test10(<8 x float> %x, <8 x float> %y) nounwind {
132*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test10:
133*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
134*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM1<def> %YMM1<kill> %ZMM1<def>
135*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
136*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpeqps %zmm1, %zmm0, %k1
137*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendmps %zmm0, %zmm1, %zmm0 {%k1}
138*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
139*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
140*9880d681SAndroid Build Coastguard Worker;
141*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test10:
142*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
143*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpeqps %ymm1, %ymm0, %k1
144*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmps %ymm0, %ymm1, %ymm0 {%k1}
145*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Worker  %mask = fcmp oeq <8 x float> %x, %y
148*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x float> %x, <8 x float> %y
149*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %max
150*9880d681SAndroid Build Coastguard Worker}
151*9880d681SAndroid Build Coastguard Worker
152*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test11_unsigned(<8 x i32> %x, <8 x i32> %y) nounwind {
153*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test11_unsigned:
154*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxud %ymm1, %ymm0, %ymm0
156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
157*9880d681SAndroid Build Coastguard Worker  %mask = icmp ugt <8 x i32> %x, %y
158*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %y
159*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %max
160*9880d681SAndroid Build Coastguard Worker}
161*9880d681SAndroid Build Coastguard Worker
162*9880d681SAndroid Build Coastguard Workerdefine i16 @test12(<16 x i64> %a, <16 x i64> %b) nounwind {
163*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test12:
164*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqq %zmm2, %zmm0, %k0
166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqq %zmm3, %zmm1, %k1
167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kunpckbw %k0, %k1, %k0
168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
171*9880d681SAndroid Build Coastguard Worker  %res = icmp eq <16 x i64> %a, %b
172*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <16 x i1> %res to i16
173*9880d681SAndroid Build Coastguard Worker  ret i16 %res1
174*9880d681SAndroid Build Coastguard Worker}
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Workerdefine i32 @test12_v32i32(<32 x i32> %a, <32 x i32> %b) nounwind {
177*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test12_v32i32:
178*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
179*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rbp
180*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rsp, %rbp
181*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andq $-32, %rsp
182*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    subq $32, %rsp
183*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpeqd %zmm3, %zmm1, %k0
184*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
185*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
186*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
187*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
188*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
189*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
190*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm1
191*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm1, %xmm1
192*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
193*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
194*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
195*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm1, %xmm1
196*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
197*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
198*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
199*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm1, %xmm1
200*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
201*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
202*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
203*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm1, %xmm1
204*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
205*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
206*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
207*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm1, %xmm1
208*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
209*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
210*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
211*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm1, %xmm1
212*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
213*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
214*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
215*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm1, %xmm1
216*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
217*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
218*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
219*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm1, %xmm1
220*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
221*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
222*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
223*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm1, %xmm1
224*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
225*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
226*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
227*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm1, %xmm1
228*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
229*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
230*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
231*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm1, %xmm1
232*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
233*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
234*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
235*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm1, %xmm1
236*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
237*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
238*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
239*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm1, %xmm1
240*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
241*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
242*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
243*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm1, %xmm1
244*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
245*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
246*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
247*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
248*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm1, %zmm1
249*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm1, %zmm1
250*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm1, %zmm1, %k0
251*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, {{[0-9]+}}(%rsp)
252*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpeqd %zmm2, %zmm0, %k0
253*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
254*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
255*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
256*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
257*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
258*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
259*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm0
260*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0
261*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
262*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
263*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
264*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
265*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
266*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
267*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
268*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0
269*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
270*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
271*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
272*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
273*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
274*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
275*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
276*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
277*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
278*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
279*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
280*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
281*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
282*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
283*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
284*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0
285*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
286*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
287*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
288*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
289*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
290*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
291*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
292*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0
293*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
294*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
295*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
296*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
297*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
298*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
299*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
300*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0
301*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
302*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
303*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
304*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
305*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
306*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
307*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
308*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0
309*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
310*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
311*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
312*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
313*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
314*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
315*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
316*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
317*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
318*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
319*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
320*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, (%rsp)
321*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl (%rsp), %eax
322*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rbp, %rsp
323*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rbp
324*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
325*9880d681SAndroid Build Coastguard Worker;
326*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test12_v32i32:
327*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
328*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpeqd %zmm2, %zmm0, %k0
329*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpeqd %zmm3, %zmm1, %k1
330*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kunpckwd %k0, %k1, %k0
331*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovd %k0, %eax
332*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
333*9880d681SAndroid Build Coastguard Worker  %res = icmp eq <32 x i32> %a, %b
334*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <32 x i1> %res to i32
335*9880d681SAndroid Build Coastguard Worker  ret i32 %res1
336*9880d681SAndroid Build Coastguard Worker}
337*9880d681SAndroid Build Coastguard Worker
338*9880d681SAndroid Build Coastguard Workerdefine i64 @test12_v64i16(<64 x i16> %a, <64 x i16> %b) nounwind {
339*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test12_v64i16:
340*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
341*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rbp
342*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rsp, %rbp
343*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andq $-32, %rsp
344*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    subq $64, %rsp
345*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpeqw %ymm5, %ymm1, %ymm1
346*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwd %ymm1, %zmm1
347*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm1, %zmm1
348*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm1, %zmm1, %k0
349*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
350*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
351*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
352*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
353*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
354*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
355*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm1
356*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm1, %xmm1
357*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
358*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
359*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
360*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm1, %xmm1
361*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
362*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
363*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
364*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm1, %xmm1
365*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
366*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
367*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
368*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm1, %xmm1
369*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
370*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
371*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
372*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm1, %xmm1
373*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
374*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
375*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
376*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm1, %xmm1
377*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
378*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
379*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
380*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm1, %xmm1
381*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
382*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
383*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
384*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm1, %xmm1
385*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
386*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
387*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
388*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm1, %xmm1
389*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
390*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
391*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
392*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm1, %xmm1
393*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
394*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
395*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
396*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm1, %xmm1
397*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
398*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
399*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
400*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm1, %xmm1
401*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
402*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
403*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
404*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm1, %xmm1
405*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
406*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
407*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
408*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm1, %xmm1
409*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
410*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
411*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
412*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
413*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm1, %zmm1
414*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm1, %zmm1
415*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm1, %zmm1, %k0
416*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, {{[0-9]+}}(%rsp)
417*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpeqw %ymm4, %ymm0, %ymm0
418*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwd %ymm0, %zmm0
419*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
420*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
421*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
422*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
423*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
424*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
425*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
426*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
427*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm0
428*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0
429*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
430*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
431*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
432*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
433*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
434*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
435*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
436*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0
437*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
438*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
439*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
440*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
441*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
442*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
443*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
444*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
445*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
446*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
447*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
448*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
449*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
450*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
451*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
452*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0
453*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
454*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
455*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
456*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
457*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
458*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
459*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
460*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0
461*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
462*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
463*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
464*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
465*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
466*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
467*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
468*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0
469*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
470*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
471*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
472*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
473*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
474*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
475*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
476*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0
477*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
478*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
479*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
480*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
481*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
482*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
483*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
484*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
485*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
486*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
487*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
488*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, (%rsp)
489*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpeqw %ymm7, %ymm3, %ymm0
490*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwd %ymm0, %zmm0
491*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
492*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
493*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
494*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
495*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
496*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
497*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
498*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
499*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm0
500*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0
501*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
502*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
503*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
504*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
505*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
506*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
507*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
508*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0
509*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
510*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
511*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
512*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
513*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
514*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
515*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
516*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
517*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
518*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
519*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
520*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
521*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
522*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
523*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
524*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0
525*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
526*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
527*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
528*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
529*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
530*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
531*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
532*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0
533*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
534*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
535*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
536*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
537*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
538*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
539*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
540*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0
541*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
542*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
543*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
544*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
545*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
546*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
547*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
548*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0
549*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
550*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
551*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
552*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
553*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
554*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
555*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
556*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
557*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
558*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
559*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
560*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, {{[0-9]+}}(%rsp)
561*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpeqw %ymm6, %ymm2, %ymm0
562*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwd %ymm0, %zmm0
563*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
564*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
565*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $14, %k0, %k1
566*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
567*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
568*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $15, %k0, %k1
569*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
570*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %ecx
571*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovd %ecx, %xmm0
572*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0
573*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $13, %k0, %k1
574*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
575*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
576*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
577*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $12, %k0, %k1
578*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
579*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
580*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0
581*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $11, %k0, %k1
582*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
583*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
584*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
585*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $10, %k0, %k1
586*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
587*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
588*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
589*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $9, %k0, %k1
590*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
591*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
592*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
593*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $8, %k0, %k1
594*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
595*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
596*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0
597*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $7, %k0, %k1
598*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
599*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
600*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
601*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $6, %k0, %k1
602*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
603*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
604*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0
605*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $5, %k0, %k1
606*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
607*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
608*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
609*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $4, %k0, %k1
610*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
611*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
612*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0
613*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $3, %k0, %k1
614*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
615*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
616*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
617*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $2, %k0, %k1
618*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
619*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
620*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0
621*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $1, %k0, %k1
622*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k1, %k1
623*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k1, %eax
624*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
625*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftlw $0, %k0, %k0
626*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kshiftrw $15, %k0, %k0
627*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, %eax
628*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
629*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
630*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
631*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k0
632*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %k0, {{[0-9]+}}(%rsp)
633*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl (%rsp), %ecx
634*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
635*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    shlq $32, %rax
636*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    orq %rcx, %rax
637*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movq %rbp, %rsp
638*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rbp
639*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
640*9880d681SAndroid Build Coastguard Worker;
641*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test12_v64i16:
642*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
643*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpeqw %zmm2, %zmm0, %k0
644*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpeqw %zmm3, %zmm1, %k1
645*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kunpckdq %k0, %k1, %k0
646*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovq %k0, %rax
647*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
648*9880d681SAndroid Build Coastguard Worker  %res = icmp eq <64 x i16> %a, %b
649*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <64 x i1> %res to i64
650*9880d681SAndroid Build Coastguard Worker  ret i64 %res1
651*9880d681SAndroid Build Coastguard Worker}
652*9880d681SAndroid Build Coastguard Worker
653*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test13(<16 x float>%a, <16 x float>%b)
654*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test13:
655*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpeqps %zmm1, %zmm0, %k1
657*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastd {{.*}}(%rip), %zmm0 {%k1} {z}
658*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
659*9880d681SAndroid Build Coastguard Worker{
660*9880d681SAndroid Build Coastguard Worker  %cmpvector_i = fcmp oeq <16 x float> %a, %b
661*9880d681SAndroid Build Coastguard Worker  %conv = zext <16 x i1> %cmpvector_i to <16 x i32>
662*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %conv
663*9880d681SAndroid Build Coastguard Worker}
664*9880d681SAndroid Build Coastguard Worker
665*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test14(<16 x i32>%a, <16 x i32>%b) {
666*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test14:
667*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd %zmm1, %zmm0, %zmm1
669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtd %zmm0, %zmm1, %k1
670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa32 %zmm1, %zmm0 {%k1} {z}
671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
672*9880d681SAndroid Build Coastguard Worker  %sub_r = sub <16 x i32> %a, %b
673*9880d681SAndroid Build Coastguard Worker  %cmp.i2.i = icmp sgt <16 x i32> %sub_r, %a
674*9880d681SAndroid Build Coastguard Worker  %sext.i3.i = sext <16 x i1> %cmp.i2.i to <16 x i32>
675*9880d681SAndroid Build Coastguard Worker  %mask = icmp eq <16 x i32> %sext.i3.i, zeroinitializer
676*9880d681SAndroid Build Coastguard Worker  %res = select <16 x i1> %mask, <16 x i32> zeroinitializer, <16 x i32> %sub_r
677*9880d681SAndroid Build Coastguard Worker  ret <16 x i32>%res
678*9880d681SAndroid Build Coastguard Worker}
679*9880d681SAndroid Build Coastguard Worker
680*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test15(<8 x i64>%a, <8 x i64>%b) {
681*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test15:
682*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq %zmm1, %zmm0, %zmm1
684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtq %zmm0, %zmm1, %k1
685*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm0 {%k1} {z}
686*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
687*9880d681SAndroid Build Coastguard Worker  %sub_r = sub <8 x i64> %a, %b
688*9880d681SAndroid Build Coastguard Worker  %cmp.i2.i = icmp sgt <8 x i64> %sub_r, %a
689*9880d681SAndroid Build Coastguard Worker  %sext.i3.i = sext <8 x i1> %cmp.i2.i to <8 x i64>
690*9880d681SAndroid Build Coastguard Worker  %mask = icmp eq <8 x i64> %sext.i3.i, zeroinitializer
691*9880d681SAndroid Build Coastguard Worker  %res = select <8 x i1> %mask, <8 x i64> zeroinitializer, <8 x i64> %sub_r
692*9880d681SAndroid Build Coastguard Worker  ret <8 x i64>%res
693*9880d681SAndroid Build Coastguard Worker}
694*9880d681SAndroid Build Coastguard Worker
695*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test16(<16 x i32> %x, <16 x i32> %y, <16 x i32> %x1) nounwind {
696*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16:
697*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpled %zmm0, %zmm1, %k1
699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm2, %zmm1, %zmm0 {%k1}
700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
701*9880d681SAndroid Build Coastguard Worker  %mask = icmp sge <16 x i32> %x, %y
702*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x1, <16 x i32> %y
703*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
704*9880d681SAndroid Build Coastguard Worker}
705*9880d681SAndroid Build Coastguard Worker
706*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test17(<16 x i32> %x, <16 x i32> %x1, <16 x i32>* %y.ptr) nounwind {
707*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test17:
708*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
709*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtd (%rdi), %zmm0, %k1
710*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
711*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
712*9880d681SAndroid Build Coastguard Worker  %y = load <16 x i32>, <16 x i32>* %y.ptr, align 4
713*9880d681SAndroid Build Coastguard Worker  %mask = icmp sgt <16 x i32> %x, %y
714*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> %x1
715*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
716*9880d681SAndroid Build Coastguard Worker}
717*9880d681SAndroid Build Coastguard Worker
718*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test18(<16 x i32> %x, <16 x i32> %x1, <16 x i32>* %y.ptr) nounwind {
719*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test18:
720*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpled (%rdi), %zmm0, %k1
722*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
723*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
724*9880d681SAndroid Build Coastguard Worker  %y = load <16 x i32>, <16 x i32>* %y.ptr, align 4
725*9880d681SAndroid Build Coastguard Worker  %mask = icmp sle <16 x i32> %x, %y
726*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> %x1
727*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
728*9880d681SAndroid Build Coastguard Worker}
729*9880d681SAndroid Build Coastguard Worker
730*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test19(<16 x i32> %x, <16 x i32> %x1, <16 x i32>* %y.ptr) nounwind {
731*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test19:
732*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
733*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleud (%rdi), %zmm0, %k1
734*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
735*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
736*9880d681SAndroid Build Coastguard Worker  %y = load <16 x i32>, <16 x i32>* %y.ptr, align 4
737*9880d681SAndroid Build Coastguard Worker  %mask = icmp ule <16 x i32> %x, %y
738*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> %x1
739*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
740*9880d681SAndroid Build Coastguard Worker}
741*9880d681SAndroid Build Coastguard Worker
742*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test20(<16 x i32> %x, <16 x i32> %y, <16 x i32> %x1, <16 x i32> %y1) nounwind {
743*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test20:
744*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqd %zmm1, %zmm0, %k1
746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqd %zmm3, %zmm2, %k1 {%k1}
747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
749*9880d681SAndroid Build Coastguard Worker  %mask1 = icmp eq <16 x i32> %x1, %y1
750*9880d681SAndroid Build Coastguard Worker  %mask0 = icmp eq <16 x i32> %x, %y
751*9880d681SAndroid Build Coastguard Worker  %mask = select <16 x i1> %mask0, <16 x i1> %mask1, <16 x i1> zeroinitializer
752*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> %y
753*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
754*9880d681SAndroid Build Coastguard Worker}
755*9880d681SAndroid Build Coastguard Worker
756*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test21(<8 x i64> %x, <8 x i64> %y, <8 x i64> %x1, <8 x i64> %y1) nounwind {
757*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test21:
758*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
759*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleq %zmm1, %zmm0, %k1
760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleq %zmm2, %zmm3, %k1 {%k1}
761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq %zmm0, %zmm2, %zmm0 {%k1}
762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
763*9880d681SAndroid Build Coastguard Worker  %mask1 = icmp sge <8 x i64> %x1, %y1
764*9880d681SAndroid Build Coastguard Worker  %mask0 = icmp sle <8 x i64> %x, %y
765*9880d681SAndroid Build Coastguard Worker  %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer
766*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> %x1
767*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %max
768*9880d681SAndroid Build Coastguard Worker}
769*9880d681SAndroid Build Coastguard Worker
770*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test22(<8 x i64> %x, <8 x i64>* %y.ptr, <8 x i64> %x1, <8 x i64> %y1) nounwind {
771*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test22:
772*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
773*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtq %zmm2, %zmm1, %k1
774*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtq (%rdi), %zmm0, %k1 {%k1}
775*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
777*9880d681SAndroid Build Coastguard Worker  %mask1 = icmp sgt <8 x i64> %x1, %y1
778*9880d681SAndroid Build Coastguard Worker  %y = load <8 x i64>, <8 x i64>* %y.ptr, align 4
779*9880d681SAndroid Build Coastguard Worker  %mask0 = icmp sgt <8 x i64> %x, %y
780*9880d681SAndroid Build Coastguard Worker  %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer
781*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> %x1
782*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %max
783*9880d681SAndroid Build Coastguard Worker}
784*9880d681SAndroid Build Coastguard Worker
785*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test23(<16 x i32> %x, <16 x i32>* %y.ptr, <16 x i32> %x1, <16 x i32> %y1) nounwind {
786*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test23:
787*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
788*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpled %zmm1, %zmm2, %k1
789*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleud (%rdi), %zmm0, %k1 {%k1}
790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
792*9880d681SAndroid Build Coastguard Worker  %mask1 = icmp sge <16 x i32> %x1, %y1
793*9880d681SAndroid Build Coastguard Worker  %y = load <16 x i32>, <16 x i32>* %y.ptr, align 4
794*9880d681SAndroid Build Coastguard Worker  %mask0 = icmp ule <16 x i32> %x, %y
795*9880d681SAndroid Build Coastguard Worker  %mask = select <16 x i1> %mask0, <16 x i1> %mask1, <16 x i1> zeroinitializer
796*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> %x1
797*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
798*9880d681SAndroid Build Coastguard Worker}
799*9880d681SAndroid Build Coastguard Worker
800*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test24(<8 x i64> %x, <8 x i64> %x1, i64* %yb.ptr) nounwind {
801*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test24:
802*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
803*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqq (%rdi){1to8}, %zmm0, %k1
804*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
805*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
806*9880d681SAndroid Build Coastguard Worker  %yb = load i64, i64* %yb.ptr, align 4
807*9880d681SAndroid Build Coastguard Worker  %y.0 = insertelement <8 x i64> undef, i64 %yb, i32 0
808*9880d681SAndroid Build Coastguard Worker  %y = shufflevector <8 x i64> %y.0, <8 x i64> undef, <8 x i32> zeroinitializer
809*9880d681SAndroid Build Coastguard Worker  %mask = icmp eq <8 x i64> %x, %y
810*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> %x1
811*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %max
812*9880d681SAndroid Build Coastguard Worker}
813*9880d681SAndroid Build Coastguard Worker
814*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test25(<16 x i32> %x, i32* %yb.ptr, <16 x i32> %x1) nounwind {
815*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test25:
816*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpled (%rdi){1to16}, %zmm0, %k1
818*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
819*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
820*9880d681SAndroid Build Coastguard Worker  %yb = load i32, i32* %yb.ptr, align 4
821*9880d681SAndroid Build Coastguard Worker  %y.0 = insertelement <16 x i32> undef, i32 %yb, i32 0
822*9880d681SAndroid Build Coastguard Worker  %y = shufflevector <16 x i32> %y.0, <16 x i32> undef, <16 x i32> zeroinitializer
823*9880d681SAndroid Build Coastguard Worker  %mask = icmp sle <16 x i32> %x, %y
824*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> %x1
825*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
826*9880d681SAndroid Build Coastguard Worker}
827*9880d681SAndroid Build Coastguard Worker
828*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test26(<16 x i32> %x, i32* %yb.ptr, <16 x i32> %x1, <16 x i32> %y1) nounwind {
829*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test26:
830*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
831*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpled %zmm1, %zmm2, %k1
832*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtd (%rdi){1to16}, %zmm0, %k1 {%k1}
833*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
834*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
835*9880d681SAndroid Build Coastguard Worker  %mask1 = icmp sge <16 x i32> %x1, %y1
836*9880d681SAndroid Build Coastguard Worker  %yb = load i32, i32* %yb.ptr, align 4
837*9880d681SAndroid Build Coastguard Worker  %y.0 = insertelement <16 x i32> undef, i32 %yb, i32 0
838*9880d681SAndroid Build Coastguard Worker  %y = shufflevector <16 x i32> %y.0, <16 x i32> undef, <16 x i32> zeroinitializer
839*9880d681SAndroid Build Coastguard Worker  %mask0 = icmp sgt <16 x i32> %x, %y
840*9880d681SAndroid Build Coastguard Worker  %mask = select <16 x i1> %mask0, <16 x i1> %mask1, <16 x i1> zeroinitializer
841*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x i32> %x, <16 x i32> %x1
842*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %max
843*9880d681SAndroid Build Coastguard Worker}
844*9880d681SAndroid Build Coastguard Worker
845*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test27(<8 x i64> %x, i64* %yb.ptr, <8 x i64> %x1, <8 x i64> %y1) nounwind {
846*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test27:
847*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
848*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleq %zmm1, %zmm2, %k1
849*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleq (%rdi){1to8}, %zmm0, %k1 {%k1}
850*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
851*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
852*9880d681SAndroid Build Coastguard Worker  %mask1 = icmp sge <8 x i64> %x1, %y1
853*9880d681SAndroid Build Coastguard Worker  %yb = load i64, i64* %yb.ptr, align 4
854*9880d681SAndroid Build Coastguard Worker  %y.0 = insertelement <8 x i64> undef, i64 %yb, i32 0
855*9880d681SAndroid Build Coastguard Worker  %y = shufflevector <8 x i64> %y.0, <8 x i64> undef, <8 x i32> zeroinitializer
856*9880d681SAndroid Build Coastguard Worker  %mask0 = icmp sle <8 x i64> %x, %y
857*9880d681SAndroid Build Coastguard Worker  %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer
858*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x i64> %x, <8 x i64> %x1
859*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %max
860*9880d681SAndroid Build Coastguard Worker}
861*9880d681SAndroid Build Coastguard Worker
862*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test28(<8 x i64> %x, <8 x i64> %y, <8 x i64> %x1, <8 x i64> %y1) {
863*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test28:
864*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
865*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtq %zmm1, %zmm0, %k0
866*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtq %zmm3, %zmm2, %k1
867*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kxnorw %k1, %k0, %k1
868*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
869*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
870*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovqd %zmm0, %ymm0
871*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
872*9880d681SAndroid Build Coastguard Worker;
873*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test28:
874*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
875*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtq %zmm1, %zmm0, %k0
876*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtq %zmm3, %zmm2, %k1
877*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kxnorb %k1, %k0, %k0
878*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2d %k0, %ymm0
879*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
880*9880d681SAndroid Build Coastguard Worker  %x_gt_y = icmp sgt <8 x i64> %x, %y
881*9880d681SAndroid Build Coastguard Worker  %x1_gt_y1 = icmp sgt <8 x i64> %x1, %y1
882*9880d681SAndroid Build Coastguard Worker  %res = icmp eq <8 x i1>%x_gt_y, %x1_gt_y1
883*9880d681SAndroid Build Coastguard Worker  %resse = sext <8 x i1>%res to <8 x i32>
884*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %resse
885*9880d681SAndroid Build Coastguard Worker}
886*9880d681SAndroid Build Coastguard Worker
887*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test29(<16 x i32> %x, <16 x i32> %y, <16 x i32> %x1, <16 x i32> %y1) {
888*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test29:
889*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
890*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtd %zmm1, %zmm0, %k0
891*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtd %zmm3, %zmm2, %k1
892*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kxorw %k1, %k0, %k1
893*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
894*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
895*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
896*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
897*9880d681SAndroid Build Coastguard Worker;
898*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test29:
899*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
900*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtd %zmm1, %zmm0, %k0
901*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtd %zmm3, %zmm2, %k1
902*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kxorw %k1, %k0, %k0
903*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %xmm0
904*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
905*9880d681SAndroid Build Coastguard Worker  %x_gt_y = icmp sgt <16 x i32> %x, %y
906*9880d681SAndroid Build Coastguard Worker  %x1_gt_y1 = icmp sgt <16 x i32> %x1, %y1
907*9880d681SAndroid Build Coastguard Worker  %res = icmp ne <16 x i1>%x_gt_y, %x1_gt_y1
908*9880d681SAndroid Build Coastguard Worker  %resse = sext <16 x i1>%res to <16 x i8>
909*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %resse
910*9880d681SAndroid Build Coastguard Worker}
911*9880d681SAndroid Build Coastguard Worker
912*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test30(<4 x double> %x, <4 x double> %y) nounwind {
913*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test30:
914*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
915*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpeqpd %ymm1, %ymm0, %ymm2
916*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
917*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
918*9880d681SAndroid Build Coastguard Worker;
919*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test30:
920*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
921*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpeqpd %ymm1, %ymm0, %k1
922*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmpd %ymm0, %ymm1, %ymm0 {%k1}
923*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
924*9880d681SAndroid Build Coastguard Worker
925*9880d681SAndroid Build Coastguard Worker  %mask = fcmp oeq <4 x double> %x, %y
926*9880d681SAndroid Build Coastguard Worker  %max = select <4 x i1> %mask, <4 x double> %x, <4 x double> %y
927*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %max
928*9880d681SAndroid Build Coastguard Worker}
929*9880d681SAndroid Build Coastguard Worker
930*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test31(<2 x double> %x, <2 x double> %x1, <2 x double>* %yp) nounwind {
931*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test31:
932*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
933*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltpd (%rdi), %xmm0, %xmm2
934*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
935*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
936*9880d681SAndroid Build Coastguard Worker;
937*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test31:
938*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
939*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltpd (%rdi), %xmm0, %k1
940*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmpd %xmm0, %xmm1, %xmm0 {%k1}
941*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
942*9880d681SAndroid Build Coastguard Worker
943*9880d681SAndroid Build Coastguard Worker  %y = load <2 x double>, <2 x double>* %yp, align 4
944*9880d681SAndroid Build Coastguard Worker  %mask = fcmp olt <2 x double> %x, %y
945*9880d681SAndroid Build Coastguard Worker  %max = select <2 x i1> %mask, <2 x double> %x, <2 x double> %x1
946*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %max
947*9880d681SAndroid Build Coastguard Worker}
948*9880d681SAndroid Build Coastguard Worker
949*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test32(<4 x double> %x, <4 x double> %x1, <4 x double>* %yp) nounwind {
950*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test32:
951*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
952*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltpd (%rdi), %ymm0, %ymm2
953*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
954*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
955*9880d681SAndroid Build Coastguard Worker;
956*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test32:
957*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
958*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltpd (%rdi), %ymm0, %k1
959*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmpd %ymm0, %ymm1, %ymm0 {%k1}
960*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
961*9880d681SAndroid Build Coastguard Worker
962*9880d681SAndroid Build Coastguard Worker  %y = load <4 x double>, <4 x double>* %yp, align 4
963*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ogt <4 x double> %y, %x
964*9880d681SAndroid Build Coastguard Worker  %max = select <4 x i1> %mask, <4 x double> %x, <4 x double> %x1
965*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %max
966*9880d681SAndroid Build Coastguard Worker}
967*9880d681SAndroid Build Coastguard Worker
968*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test33(<8 x double> %x, <8 x double> %x1, <8 x double>* %yp) nounwind {
969*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test33:
970*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
971*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpltpd (%rdi), %zmm0, %k1
972*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmpd %zmm0, %zmm1, %zmm0 {%k1}
973*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
974*9880d681SAndroid Build Coastguard Worker  %y = load <8 x double>, <8 x double>* %yp, align 4
975*9880d681SAndroid Build Coastguard Worker  %mask = fcmp olt <8 x double> %x, %y
976*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x double> %x, <8 x double> %x1
977*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %max
978*9880d681SAndroid Build Coastguard Worker}
979*9880d681SAndroid Build Coastguard Worker
980*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test34(<4 x float> %x, <4 x float> %x1, <4 x float>* %yp) nounwind {
981*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test34:
982*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
983*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltps (%rdi), %xmm0, %xmm2
984*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0
985*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
986*9880d681SAndroid Build Coastguard Worker;
987*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test34:
988*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
989*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltps (%rdi), %xmm0, %k1
990*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmps %xmm0, %xmm1, %xmm0 {%k1}
991*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
992*9880d681SAndroid Build Coastguard Worker  %y = load <4 x float>, <4 x float>* %yp, align 4
993*9880d681SAndroid Build Coastguard Worker  %mask = fcmp olt <4 x float> %x, %y
994*9880d681SAndroid Build Coastguard Worker  %max = select <4 x i1> %mask, <4 x float> %x, <4 x float> %x1
995*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %max
996*9880d681SAndroid Build Coastguard Worker}
997*9880d681SAndroid Build Coastguard Worker
998*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test35(<8 x float> %x, <8 x float> %x1, <8 x float>* %yp) nounwind {
999*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test35:
1000*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1001*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM1<def> %YMM1<kill> %ZMM1<def>
1002*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
1003*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovups (%rdi), %ymm2
1004*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltps %zmm2, %zmm0, %k1
1005*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendmps %zmm0, %zmm1, %zmm0 {%k1}
1006*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
1007*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1008*9880d681SAndroid Build Coastguard Worker;
1009*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test35:
1010*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1011*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltps (%rdi), %ymm0, %k1
1012*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmps %ymm0, %ymm1, %ymm0 {%k1}
1013*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1014*9880d681SAndroid Build Coastguard Worker
1015*9880d681SAndroid Build Coastguard Worker  %y = load <8 x float>, <8 x float>* %yp, align 4
1016*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ogt <8 x float> %y, %x
1017*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x float> %x, <8 x float> %x1
1018*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %max
1019*9880d681SAndroid Build Coastguard Worker}
1020*9880d681SAndroid Build Coastguard Worker
1021*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test36(<16 x float> %x, <16 x float> %x1, <16 x float>* %yp) nounwind {
1022*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test36:
1023*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1024*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpltps (%rdi), %zmm0, %k1
1025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmps %zmm0, %zmm1, %zmm0 {%k1}
1026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1027*9880d681SAndroid Build Coastguard Worker  %y = load <16 x float>, <16 x float>* %yp, align 4
1028*9880d681SAndroid Build Coastguard Worker  %mask = fcmp olt <16 x float> %x, %y
1029*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16 x float> %x, <16 x float> %x1
1030*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %max
1031*9880d681SAndroid Build Coastguard Worker}
1032*9880d681SAndroid Build Coastguard Worker
1033*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test37(<8 x double> %x, <8 x double> %x1, double* %ptr) nounwind {
1034*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test37:
1035*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1036*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpltpd (%rdi){1to8}, %zmm0, %k1
1037*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmpd %zmm0, %zmm1, %zmm0 {%k1}
1038*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1039*9880d681SAndroid Build Coastguard Worker
1040*9880d681SAndroid Build Coastguard Worker  %a = load double, double* %ptr
1041*9880d681SAndroid Build Coastguard Worker  %v = insertelement <8 x double> undef, double %a, i32 0
1042*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x double> %v, <8 x double> undef, <8 x i32> zeroinitializer
1043*9880d681SAndroid Build Coastguard Worker
1044*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ogt <8 x double> %shuffle, %x
1045*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x double> %x, <8 x double> %x1
1046*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %max
1047*9880d681SAndroid Build Coastguard Worker}
1048*9880d681SAndroid Build Coastguard Worker
1049*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test38(<4 x double> %x, <4 x double> %x1, double* %ptr) nounwind {
1050*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test38:
1051*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1052*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vbroadcastsd (%rdi), %ymm2
1053*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltpd %ymm2, %ymm0, %ymm2
1054*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
1055*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1056*9880d681SAndroid Build Coastguard Worker;
1057*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test38:
1058*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1059*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltpd (%rdi){1to4}, %ymm0, %k1
1060*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmpd %ymm0, %ymm1, %ymm0 {%k1}
1061*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1062*9880d681SAndroid Build Coastguard Worker
1063*9880d681SAndroid Build Coastguard Worker  %a = load double, double* %ptr
1064*9880d681SAndroid Build Coastguard Worker  %v = insertelement <4 x double> undef, double %a, i32 0
1065*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <4 x double> %v, <4 x double> undef, <4 x i32> zeroinitializer
1066*9880d681SAndroid Build Coastguard Worker
1067*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ogt <4 x double> %shuffle, %x
1068*9880d681SAndroid Build Coastguard Worker  %max = select <4 x i1> %mask, <4 x double> %x, <4 x double> %x1
1069*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %max
1070*9880d681SAndroid Build Coastguard Worker}
1071*9880d681SAndroid Build Coastguard Worker
1072*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test39(<2 x double> %x, <2 x double> %x1, double* %ptr) nounwind {
1073*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test39:
1074*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1075*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovddup {{.*#+}} xmm2 = mem[0,0]
1076*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltpd %xmm2, %xmm0, %xmm2
1077*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
1078*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1079*9880d681SAndroid Build Coastguard Worker;
1080*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test39:
1081*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1082*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltpd (%rdi){1to2}, %xmm0, %k1
1083*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmpd %xmm0, %xmm1, %xmm0 {%k1}
1084*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1085*9880d681SAndroid Build Coastguard Worker
1086*9880d681SAndroid Build Coastguard Worker  %a = load double, double* %ptr
1087*9880d681SAndroid Build Coastguard Worker  %v = insertelement <2 x double> undef, double %a, i32 0
1088*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <2 x double> %v, <2 x double> undef, <2 x i32> <i32 0, i32 0>
1089*9880d681SAndroid Build Coastguard Worker
1090*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ogt <2 x double> %shuffle, %x
1091*9880d681SAndroid Build Coastguard Worker  %max = select <2 x i1> %mask, <2 x double> %x, <2 x double> %x1
1092*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %max
1093*9880d681SAndroid Build Coastguard Worker}
1094*9880d681SAndroid Build Coastguard Worker
1095*9880d681SAndroid Build Coastguard Worker
1096*9880d681SAndroid Build Coastguard Workerdefine <16  x float> @test40(<16  x float> %x, <16  x float> %x1, float* %ptr) nounwind {
1097*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test40:
1098*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpltps (%rdi){1to16}, %zmm0, %k1
1100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vblendmps %zmm0, %zmm1, %zmm0 {%k1}
1101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1102*9880d681SAndroid Build Coastguard Worker
1103*9880d681SAndroid Build Coastguard Worker  %a = load float, float* %ptr
1104*9880d681SAndroid Build Coastguard Worker  %v = insertelement <16  x float> undef, float %a, i32 0
1105*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <16  x float> %v, <16  x float> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
1106*9880d681SAndroid Build Coastguard Worker
1107*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ogt <16  x float> %shuffle, %x
1108*9880d681SAndroid Build Coastguard Worker  %max = select <16 x i1> %mask, <16  x float> %x, <16  x float> %x1
1109*9880d681SAndroid Build Coastguard Worker  ret <16  x float> %max
1110*9880d681SAndroid Build Coastguard Worker}
1111*9880d681SAndroid Build Coastguard Worker
1112*9880d681SAndroid Build Coastguard Workerdefine <8  x float> @test41(<8  x float> %x, <8  x float> %x1, float* %ptr) nounwind {
1113*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test41:
1114*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1115*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM1<def> %YMM1<kill> %ZMM1<def>
1116*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
1117*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vbroadcastss (%rdi), %ymm2
1118*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltps %zmm2, %zmm0, %k1
1119*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendmps %zmm0, %zmm1, %zmm0 {%k1}
1120*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<kill>
1121*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1122*9880d681SAndroid Build Coastguard Worker;
1123*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test41:
1124*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1125*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltps (%rdi){1to8}, %ymm0, %k1
1126*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmps %ymm0, %ymm1, %ymm0 {%k1}
1127*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1128*9880d681SAndroid Build Coastguard Worker
1129*9880d681SAndroid Build Coastguard Worker  %a = load float, float* %ptr
1130*9880d681SAndroid Build Coastguard Worker  %v = insertelement <8  x float> undef, float %a, i32 0
1131*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8  x float> %v, <8  x float> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
1132*9880d681SAndroid Build Coastguard Worker
1133*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ogt <8  x float> %shuffle, %x
1134*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8  x float> %x, <8  x float> %x1
1135*9880d681SAndroid Build Coastguard Worker  ret <8  x float> %max
1136*9880d681SAndroid Build Coastguard Worker}
1137*9880d681SAndroid Build Coastguard Worker
1138*9880d681SAndroid Build Coastguard Workerdefine <4  x float> @test42(<4  x float> %x, <4  x float> %x1, float* %ptr) nounwind {
1139*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test42:
1140*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1141*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vbroadcastss (%rdi), %xmm2
1142*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltps %xmm2, %xmm0, %xmm2
1143*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0
1144*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1145*9880d681SAndroid Build Coastguard Worker;
1146*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test42:
1147*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1148*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltps (%rdi){1to4}, %xmm0, %k1
1149*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmps %xmm0, %xmm1, %xmm0 {%k1}
1150*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1151*9880d681SAndroid Build Coastguard Worker
1152*9880d681SAndroid Build Coastguard Worker  %a = load float, float* %ptr
1153*9880d681SAndroid Build Coastguard Worker  %v = insertelement <4  x float> undef, float %a, i32 0
1154*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <4  x float> %v, <4  x float> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 0>
1155*9880d681SAndroid Build Coastguard Worker
1156*9880d681SAndroid Build Coastguard Worker  %mask = fcmp ogt <4  x float> %shuffle, %x
1157*9880d681SAndroid Build Coastguard Worker  %max = select <4 x i1> %mask, <4  x float> %x, <4  x float> %x1
1158*9880d681SAndroid Build Coastguard Worker  ret <4  x float> %max
1159*9880d681SAndroid Build Coastguard Worker}
1160*9880d681SAndroid Build Coastguard Worker
1161*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test43(<8 x double> %x, <8 x double> %x1, double* %ptr,<8 x i1> %mask_in) nounwind {
1162*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test43:
1163*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1164*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwq %xmm2, %zmm2
1165*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm2, %zmm2
1166*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm2, %zmm2, %k1
1167*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpltpd (%rdi){1to8}, %zmm0, %k1 {%k1}
1168*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vblendmpd %zmm0, %zmm1, %zmm0 {%k1}
1169*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1170*9880d681SAndroid Build Coastguard Worker;
1171*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test43:
1172*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1173*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $15, %xmm2, %xmm2
1174*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovw2m %xmm2, %k1
1175*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpltpd (%rdi){1to8}, %zmm0, %k1 {%k1}
1176*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vblendmpd %zmm0, %zmm1, %zmm0 {%k1}
1177*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1178*9880d681SAndroid Build Coastguard Worker
1179*9880d681SAndroid Build Coastguard Worker  %a = load double, double* %ptr
1180*9880d681SAndroid Build Coastguard Worker  %v = insertelement <8 x double> undef, double %a, i32 0
1181*9880d681SAndroid Build Coastguard Worker  %shuffle = shufflevector <8 x double> %v, <8 x double> undef, <8 x i32> zeroinitializer
1182*9880d681SAndroid Build Coastguard Worker
1183*9880d681SAndroid Build Coastguard Worker  %mask_cmp = fcmp ogt <8 x double> %shuffle, %x
1184*9880d681SAndroid Build Coastguard Worker  %mask = and <8 x i1> %mask_cmp, %mask_in
1185*9880d681SAndroid Build Coastguard Worker  %max = select <8 x i1> %mask, <8 x double> %x, <8 x double> %x1
1186*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %max
1187*9880d681SAndroid Build Coastguard Worker}
1188*9880d681SAndroid Build Coastguard Worker
1189*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test44(<4 x i16> %x, <4 x i16> %y) #0 {
1190*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test44:
1191*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1192*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpxor %xmm2, %xmm2, %xmm2
1193*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3],xmm1[4],xmm2[5],xmm1[6],xmm2[7]
1194*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3],xmm0[4],xmm2[5],xmm0[6],xmm2[7]
1195*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0
1196*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1197*9880d681SAndroid Build Coastguard Worker;
1198*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test44:
1199*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1200*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
1201*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3],xmm1[4],xmm2[5],xmm1[6],xmm2[7]
1202*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3],xmm0[4],xmm2[5],xmm0[6],xmm2[7]
1203*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpeqd %xmm1, %xmm0, %k0
1204*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2d %k0, %xmm0
1205*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1206*9880d681SAndroid Build Coastguard Worker  %mask = icmp eq <4 x i16> %x, %y
1207*9880d681SAndroid Build Coastguard Worker  %1 = sext <4 x i1> %mask to <4 x i32>
1208*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %1
1209*9880d681SAndroid Build Coastguard Worker}
1210*9880d681SAndroid Build Coastguard Worker
1211*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test45(<2 x i16> %x, <2 x i16> %y) #0 {
1212*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test45:
1213*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1214*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpxor %xmm2, %xmm2, %xmm2
1215*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1,2,3],xmm1[4],xmm2[5,6,7]
1216*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm2[1,2,3],xmm0[4],xmm2[5,6,7]
1217*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpeqq %xmm1, %xmm0, %xmm0
1218*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrlq $63, %xmm0, %xmm0
1219*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1220*9880d681SAndroid Build Coastguard Worker;
1221*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test45:
1222*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1223*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpxord %xmm2, %xmm2, %xmm2
1224*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1,2,3],xmm1[4],xmm2[5,6,7]
1225*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm2[1,2,3],xmm0[4],xmm2[5,6,7]
1226*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpeqq %xmm1, %xmm0, %k1
1227*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovdqa64 {{.*}}(%rip), %xmm0 {%k1} {z}
1228*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1229*9880d681SAndroid Build Coastguard Worker  %mask = icmp eq <2 x i16> %x, %y
1230*9880d681SAndroid Build Coastguard Worker  %1 = zext <2 x i1> %mask to <2 x i64>
1231*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %1
1232*9880d681SAndroid Build Coastguard Worker}
1233*9880d681SAndroid Build Coastguard Worker
1234*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test46(<2 x float> %x, <2 x float> %y) #0 {
1235*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test46:
1236*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1237*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpeqps %xmm1, %xmm0, %xmm0
1238*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
1239*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $32, %xmm0, %xmm0
1240*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrad $31, %xmm0, %xmm1
1241*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1242*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
1243*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
1244*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
1245*9880d681SAndroid Build Coastguard Worker;
1246*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test46:
1247*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
1248*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vcmpeqps %xmm1, %xmm0, %k1
1249*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vmovdqa64 {{.*}}(%rip), %xmm0 {%k1} {z}
1250*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
1251*9880d681SAndroid Build Coastguard Worker  %mask = fcmp oeq <2 x float> %x, %y
1252*9880d681SAndroid Build Coastguard Worker  %1 = zext <2 x i1> %mask to <2 x i64>
1253*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %1
1254*9880d681SAndroid Build Coastguard Worker}
1255