xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512-intrinsics.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
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.kortestz.w(i16, i16) nounwind readnone
5*9880d681SAndroid Build Coastguard Workerdefine i32 @test_kortestz(i16 %a0, i16 %a1) {
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_kortestz:
7*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k0
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    xorl %eax, %eax
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kortestw %k0, %k1
12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    sete %al
13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
14*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.kortestz.w(i16 %a0, i16 %a1)
15*9880d681SAndroid Build Coastguard Worker  ret i32 %res
16*9880d681SAndroid Build Coastguard Worker}
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.kortestc.w(i16, i16) nounwind readnone
19*9880d681SAndroid Build Coastguard Workerdefine i32 @test_kortestc(i16 %a0, i16 %a1) {
20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_kortestc:
21*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k0
23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kortestw %k0, %k1
25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    sbbl %eax, %eax
26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %eax
27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
28*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.kortestc.w(i16 %a0, i16 %a1)
29*9880d681SAndroid Build Coastguard Worker  ret i32 %res
30*9880d681SAndroid Build Coastguard Worker}
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.kand.w(i16, i16) nounwind readnone
33*9880d681SAndroid Build Coastguard Workerdefine i16 @test_kand(i16 %a0, i16 %a1) {
34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_kand:
35*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movw $8, %ax
37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %eax, %k0
38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kandw %k0, %k1, %k0
40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kandw %k1, %k0, %k0
42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
44*9880d681SAndroid Build Coastguard Worker  %t1 = call i16 @llvm.x86.avx512.kand.w(i16 %a0, i16 8)
45*9880d681SAndroid Build Coastguard Worker  %t2 = call i16 @llvm.x86.avx512.kand.w(i16 %t1, i16 %a1)
46*9880d681SAndroid Build Coastguard Worker  ret i16 %t2
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.knot.w(i16) nounwind readnone
50*9880d681SAndroid Build Coastguard Workerdefine i16 @test_knot(i16 %a0) {
51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_knot:
52*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k0
54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    knotw %k0, %k0
55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
57*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.knot.w(i16 %a0)
58*9880d681SAndroid Build Coastguard Worker  ret i16 %res
59*9880d681SAndroid Build Coastguard Worker}
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.kunpck.bw(i16, i16) nounwind readnone
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Workerdefine i16 @unpckbw_test(i16 %a0, i16 %a1) {
64*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: unpckbw_test:
65*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k0
67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kunpckbw %k1, %k0, %k0
69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
72*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.kunpck.bw(i16 %a0, i16 %a1)
73*9880d681SAndroid Build Coastguard Worker  ret i16 %res
74*9880d681SAndroid Build Coastguard Worker}
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_rcp_ps_512(<16 x float> %a0) {
77*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_rcp_ps_512:
78*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrcp14ps %zmm0, %zmm0
80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
81*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.rcp14.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1) ; <<16 x float>> [#uses=1]
82*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
83*9880d681SAndroid Build Coastguard Worker}
84*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.rcp14.ps.512(<16 x float>, <16 x float>, i16) nounwind readnone
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_rcp_pd_512(<8 x double> %a0) {
87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_rcp_pd_512:
88*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrcp14pd %zmm0, %zmm0
90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
91*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.rcp14.pd.512(<8 x double> %a0, <8 x double> zeroinitializer, i8 -1) ; <<8 x double>> [#uses=1]
92*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
93*9880d681SAndroid Build Coastguard Worker}
94*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.rcp14.pd.512(<8 x double>, <8 x double>, i8) nounwind readnone
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.rndscale.pd.512(<8 x double>, i32, <8 x double>, i8, i32)
97*9880d681SAndroid Build Coastguard Worker
98*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test7(<8 x double> %a) {
99*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test7:
100*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrndscalepd $11, %zmm0, %zmm0
102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
103*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.rndscale.pd.512(<8 x double> %a, i32 11, <8 x double> %a, i8 -1, i32 4)
104*9880d681SAndroid Build Coastguard Worker  ret <8 x double>%res
105*9880d681SAndroid Build Coastguard Worker}
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.rndscale.ps.512(<16 x float>, i32, <16 x float>, i16, i32)
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test8(<16 x float> %a) {
110*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8:
111*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrndscaleps $11, %zmm0, %zmm0
113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
114*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.rndscale.ps.512(<16 x float> %a, i32 11, <16 x float> %a, i16 -1, i32 4)
115*9880d681SAndroid Build Coastguard Worker  ret <16 x float>%res
116*9880d681SAndroid Build Coastguard Worker}
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_rsqrt_ps_512(<16 x float> %a0) {
119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_rsqrt_ps_512:
120*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrsqrt14ps %zmm0, %zmm0
122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
123*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.rsqrt14.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1) ; <<16 x float>> [#uses=1]
124*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
125*9880d681SAndroid Build Coastguard Worker}
126*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.rsqrt14.ps.512(<16 x float>, <16 x float>, i16) nounwind readnone
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_sqrt_pd_512(<8 x double> %a0) {
129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_pd_512:
130*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtpd %zmm0, %zmm0
132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
133*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.sqrt.pd.512(<8 x double> %a0,  <8 x double> zeroinitializer, i8 -1, i32 4)
134*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
135*9880d681SAndroid Build Coastguard Worker}
136*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.sqrt.pd.512(<8 x double>, <8 x double>, i8, i32) nounwind readnone
137*9880d681SAndroid Build Coastguard Worker
138*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_sqrt_ps_512(<16 x float> %a0) {
139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_ps_512:
140*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtps %zmm0, %zmm0
142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
143*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sqrt.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1, i32 4)
144*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
145*9880d681SAndroid Build Coastguard Worker}
146*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_sqrt_round_ps_512(<16 x float> %a0) {
147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_round_ps_512:
148*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtps {rz-sae}, %zmm0, %zmm0
150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
151*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sqrt.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1, i32 3)
152*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
153*9880d681SAndroid Build Coastguard Worker}
154*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.sqrt.ps.512(<16 x float>, <16 x float>, i16, i32) nounwind readnone
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_getexp_pd_512(<8 x double> %a0) {
157*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_pd_512:
158*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexppd %zmm0, %zmm0
160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
161*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.getexp.pd.512(<8 x double> %a0,  <8 x double> zeroinitializer, i8 -1, i32 4)
162*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
163*9880d681SAndroid Build Coastguard Worker}
164*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_getexp_round_pd_512(<8 x double> %a0) {
165*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_round_pd_512:
166*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexppd {sae}, %zmm0, %zmm0
168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
169*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.getexp.pd.512(<8 x double> %a0,  <8 x double> zeroinitializer, i8 -1, i32 8)
170*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
171*9880d681SAndroid Build Coastguard Worker}
172*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.getexp.pd.512(<8 x double>, <8 x double>, i8, i32) nounwind readnone
173*9880d681SAndroid Build Coastguard Worker
174*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_getexp_ps_512(<16 x float> %a0) {
175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_ps_512:
176*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpps %zmm0, %zmm0
178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
179*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.getexp.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1, i32 4)
180*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
181*9880d681SAndroid Build Coastguard Worker}
182*9880d681SAndroid Build Coastguard Worker
183*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_getexp_round_ps_512(<16 x float> %a0) {
184*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_round_ps_512:
185*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpps {sae}, %zmm0, %zmm0
187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
188*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.getexp.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1, i32 8)
189*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
190*9880d681SAndroid Build Coastguard Worker}
191*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.getexp.ps.512(<16 x float>, <16 x float>, i16, i32) nounwind readnone
192*9880d681SAndroid Build Coastguard Worker
193*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) nounwind readnone
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_sqrt_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
196*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_ss:
197*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtss %xmm1, %xmm0, %xmm3 {%k1}
202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtss {rd-sae}, %xmm1, %xmm0, %xmm2 {%k1}
203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtss {ru-sae}, %xmm1, %xmm0, %xmm4 {%k1} {z}
204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtss {rz-sae}, %xmm1, %xmm0, %xmm0
205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm2, %xmm3, %xmm1
206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm4, %xmm0
207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm1, %xmm0
208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
209*9880d681SAndroid Build Coastguard Worker  %res0 = call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 4)
210*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 1)
211*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 2)
212*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 3)
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard Worker  %res.1 = fadd <4 x float> %res0, %res1
215*9880d681SAndroid Build Coastguard Worker  %res.2 = fadd <4 x float> %res2, %res3
216*9880d681SAndroid Build Coastguard Worker  %res   = fadd <4 x float> %res.1, %res.2
217*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
218*9880d681SAndroid Build Coastguard Worker}
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) nounwind readnone
221*9880d681SAndroid Build Coastguard Worker
222*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_sqrt_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_sd:
224*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtsd %xmm1, %xmm0, %xmm3 {%k1}
229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtsd {rd-sae}, %xmm1, %xmm0, %xmm2 {%k1}
230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtsd {ru-sae}, %xmm1, %xmm0, %xmm4 {%k1} {z}
231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsqrtsd {rz-sae}, %xmm1, %xmm0, %xmm0
232*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm2, %xmm3, %xmm1
233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm4, %xmm0
234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm1, %xmm0
235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
236*9880d681SAndroid Build Coastguard Worker  %res0 = call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 4)
237*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 1)
238*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 2)
239*9880d681SAndroid Build Coastguard Worker  %res3 = call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 3)
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Worker  %res.1 = fadd <2 x double> %res0, %res1
242*9880d681SAndroid Build Coastguard Worker  %res.2 = fadd <2 x double> %res2, %res3
243*9880d681SAndroid Build Coastguard Worker  %res   = fadd <2 x double> %res.1, %res.2
244*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
245*9880d681SAndroid Build Coastguard Worker}
246*9880d681SAndroid Build Coastguard Worker
247*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_sse2_cvtsd2si64(<2 x double> %a0) {
248*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse2_cvtsd2si64:
249*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2si %xmm0, %rax
251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
252*9880d681SAndroid Build Coastguard Worker  %res = call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %a0) ; <i64> [#uses=1]
253*9880d681SAndroid Build Coastguard Worker  ret i64 %res
254*9880d681SAndroid Build Coastguard Worker}
255*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse2.cvtsd2si64(<2 x double>) nounwind readnone
256*9880d681SAndroid Build Coastguard Worker
257*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cvtsi642sd(<2 x double> %a0, i64 %a1) {
258*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse2_cvtsi642sd:
259*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsi2sdq %rdi, %xmm0, %xmm0
261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
262*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cvtsi642sd(<2 x double> %a0, i64 %a1) ; <<2 x double>> [#uses=1]
263*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
264*9880d681SAndroid Build Coastguard Worker}
265*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtsi642sd(<2 x double>, i64) nounwind readnone
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvttsd2si64(<2 x double> %a0) {
268*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttsd2si64:
269*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttsd2si %xmm0, %rcx
271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttsd2si {sae}, %xmm0, %rax
272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rcx, %rax
273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
274*9880d681SAndroid Build Coastguard Worker  %res0 = call i64 @llvm.x86.avx512.cvttsd2si64(<2 x double> %a0, i32 4) ;
275*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.cvttsd2si64(<2 x double> %a0, i32 8) ;
276*9880d681SAndroid Build Coastguard Worker  %res2 = add i64 %res0, %res1
277*9880d681SAndroid Build Coastguard Worker  ret i64 %res2
278*9880d681SAndroid Build Coastguard Worker}
279*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvttsd2si64(<2 x double>, i32) nounwind readnone
280*9880d681SAndroid Build Coastguard Worker
281*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvttsd2usi(<2 x double> %a0) {
282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttsd2usi:
283*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttsd2usi %xmm0, %ecx
285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttsd2usi {sae}, %xmm0, %eax
286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
288*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.cvttsd2usi(<2 x double> %a0, i32 4) ;
289*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.cvttsd2usi(<2 x double> %a0, i32 8) ;
290*9880d681SAndroid Build Coastguard Worker  %res2 = add i32 %res0, %res1
291*9880d681SAndroid Build Coastguard Worker  ret i32 %res2
292*9880d681SAndroid Build Coastguard Worker}
293*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvttsd2usi(<2 x double>, i32) nounwind readnone
294*9880d681SAndroid Build Coastguard Worker
295*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvttsd2si(<2 x double> %a0) {
296*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttsd2si:
297*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttsd2si %xmm0, %ecx
299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttsd2si {sae}, %xmm0, %eax
300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
302*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.cvttsd2si(<2 x double> %a0, i32 4) ;
303*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.cvttsd2si(<2 x double> %a0, i32 8) ;
304*9880d681SAndroid Build Coastguard Worker  %res2 = add i32 %res0, %res1
305*9880d681SAndroid Build Coastguard Worker  ret i32 %res2
306*9880d681SAndroid Build Coastguard Worker}
307*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvttsd2si(<2 x double>, i32) nounwind readnone
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Worker
310*9880d681SAndroid Build Coastguard Worker
311*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvttsd2usi64(<2 x double> %a0) {
312*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttsd2usi64:
313*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttsd2usi %xmm0, %rcx
315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttsd2usi {sae}, %xmm0, %rax
316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rcx, %rax
317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
318*9880d681SAndroid Build Coastguard Worker  %res0 = call i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double> %a0, i32 4) ;
319*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double> %a0, i32 8) ;
320*9880d681SAndroid Build Coastguard Worker  %res2 = add i64 %res0, %res1
321*9880d681SAndroid Build Coastguard Worker  ret i64 %res2
322*9880d681SAndroid Build Coastguard Worker}
323*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double>, i32) nounwind readnone
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_sse_cvtss2si64(<4 x float> %a0) {
326*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse_cvtss2si64:
327*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2si %xmm0, %rax
329*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
330*9880d681SAndroid Build Coastguard Worker  %res = call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %a0) ; <i64> [#uses=1]
331*9880d681SAndroid Build Coastguard Worker  ret i64 %res
332*9880d681SAndroid Build Coastguard Worker}
333*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse.cvtss2si64(<4 x float>) nounwind readnone
334*9880d681SAndroid Build Coastguard Worker
335*9880d681SAndroid Build Coastguard Worker
336*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cvtsi642ss(<4 x float> %a0, i64 %a1) {
337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse_cvtsi642ss:
338*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsi2ssq %rdi, %xmm0, %xmm0
340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
341*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.cvtsi642ss(<4 x float> %a0, i64 %a1) ; <<4 x float>> [#uses=1]
342*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
343*9880d681SAndroid Build Coastguard Worker}
344*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi642ss(<4 x float>, i64) nounwind readnone
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Worker
347*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvttss2si(<4 x float> %a0) {
348*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttss2si:
349*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
350*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttss2si {sae}, %xmm0, %ecx
351*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttss2si %xmm0, %eax
352*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
354*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.cvttss2si(<4 x float> %a0, i32 8) ;
355*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.cvttss2si(<4 x float> %a0, i32 4) ;
356*9880d681SAndroid Build Coastguard Worker  %res2 = add i32 %res0, %res1
357*9880d681SAndroid Build Coastguard Worker  ret i32 %res2
358*9880d681SAndroid Build Coastguard Worker}
359*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvttss2si(<4 x float>, i32) nounwind readnone
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvttss2si64(<4 x float> %a0) {
362*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttss2si64:
363*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
364*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttss2si %xmm0, %rcx
365*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttss2si {sae}, %xmm0, %rax
366*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rcx, %rax
367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
368*9880d681SAndroid Build Coastguard Worker  %res0 = call i64 @llvm.x86.avx512.cvttss2si64(<4 x float> %a0, i32 4) ;
369*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.cvttss2si64(<4 x float> %a0, i32 8) ;
370*9880d681SAndroid Build Coastguard Worker  %res2 = add i64 %res0, %res1
371*9880d681SAndroid Build Coastguard Worker  ret i64 %res2
372*9880d681SAndroid Build Coastguard Worker}
373*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvttss2si64(<4 x float>, i32) nounwind readnone
374*9880d681SAndroid Build Coastguard Worker
375*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvttss2usi(<4 x float> %a0) {
376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttss2usi:
377*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttss2usi {sae}, %xmm0, %ecx
379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttss2usi %xmm0, %eax
380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
382*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.cvttss2usi(<4 x float> %a0, i32 8) ;
383*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.cvttss2usi(<4 x float> %a0, i32 4) ;
384*9880d681SAndroid Build Coastguard Worker  %res2 = add i32 %res0, %res1
385*9880d681SAndroid Build Coastguard Worker  ret i32 %res2
386*9880d681SAndroid Build Coastguard Worker}
387*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvttss2usi(<4 x float>, i32) nounwind readnone
388*9880d681SAndroid Build Coastguard Worker
389*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvttss2usi64(<4 x float> %a0) {
390*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttss2usi64:
391*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
392*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttss2usi %xmm0, %rcx
393*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttss2usi {sae}, %xmm0, %rax
394*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rcx, %rax
395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
396*9880d681SAndroid Build Coastguard Worker  %res0 = call i64 @llvm.x86.avx512.cvttss2usi64(<4 x float> %a0, i32 4) ;
397*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.cvttss2usi64(<4 x float> %a0, i32 8) ;
398*9880d681SAndroid Build Coastguard Worker  %res2 = add i64 %res0, %res1
399*9880d681SAndroid Build Coastguard Worker  ret i64 %res2
400*9880d681SAndroid Build Coastguard Worker}
401*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvttss2usi64(<4 x float>, i32) nounwind readnone
402*9880d681SAndroid Build Coastguard Worker
403*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvtsd2usi64(<2 x double> %a0) {
404*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsd2usi64:
405*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2usi %xmm0, %rcx
407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2usi {rz-sae}, %xmm0, %rax
408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2usi {rd-sae}, %xmm0, %rdx
409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rcx, %rax
410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rdx, %rax
411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
412*9880d681SAndroid Build Coastguard Worker
413*9880d681SAndroid Build Coastguard Worker  %res = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> %a0, i32 4)
414*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> %a0, i32 3)
415*9880d681SAndroid Build Coastguard Worker  %res2 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> %a0, i32 1)
416*9880d681SAndroid Build Coastguard Worker  %res3 = add i64 %res, %res1
417*9880d681SAndroid Build Coastguard Worker  %res4 = add i64 %res3, %res2
418*9880d681SAndroid Build Coastguard Worker  ret i64 %res4
419*9880d681SAndroid Build Coastguard Worker}
420*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double>, i32) nounwind readnone
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvtsd2si64(<2 x double> %a0) {
423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsd2si64:
424*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
425*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2si %xmm0, %rcx
426*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2si {rz-sae}, %xmm0, %rax
427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2si {rd-sae}, %xmm0, %rdx
428*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rcx, %rax
429*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rdx, %rax
430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
431*9880d681SAndroid Build Coastguard Worker
432*9880d681SAndroid Build Coastguard Worker  %res = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> %a0, i32 4)
433*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> %a0, i32 3)
434*9880d681SAndroid Build Coastguard Worker  %res2 = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> %a0, i32 1)
435*9880d681SAndroid Build Coastguard Worker  %res3 = add i64 %res, %res1
436*9880d681SAndroid Build Coastguard Worker  %res4 = add i64 %res3, %res2
437*9880d681SAndroid Build Coastguard Worker  ret i64 %res4
438*9880d681SAndroid Build Coastguard Worker}
439*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double>, i32) nounwind readnone
440*9880d681SAndroid Build Coastguard Worker
441*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvtss2usi64(<4 x float> %a0) {
442*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtss2usi64:
443*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2usi %xmm0, %rcx
445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2usi {rz-sae}, %xmm0, %rax
446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2usi {rd-sae}, %xmm0, %rdx
447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rcx, %rax
448*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rdx, %rax
449*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
450*9880d681SAndroid Build Coastguard Worker
451*9880d681SAndroid Build Coastguard Worker  %res = call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> %a0, i32 4)
452*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> %a0, i32 3)
453*9880d681SAndroid Build Coastguard Worker  %res2 = call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> %a0, i32 1)
454*9880d681SAndroid Build Coastguard Worker  %res3 = add i64 %res, %res1
455*9880d681SAndroid Build Coastguard Worker  %res4 = add i64 %res3, %res2
456*9880d681SAndroid Build Coastguard Worker  ret i64 %res4
457*9880d681SAndroid Build Coastguard Worker}
458*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float>, i32) nounwind readnone
459*9880d681SAndroid Build Coastguard Worker
460*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvtss2si64(<4 x float> %a0) {
461*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtss2si64:
462*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
463*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2si %xmm0, %rcx
464*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2si {rz-sae}, %xmm0, %rax
465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2si {rd-sae}, %xmm0, %rdx
466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rcx, %rax
467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addq %rdx, %rax
468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Worker  %res = call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> %a0, i32 4)
471*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> %a0, i32 3)
472*9880d681SAndroid Build Coastguard Worker  %res2 = call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> %a0, i32 1)
473*9880d681SAndroid Build Coastguard Worker  %res3 = add i64 %res, %res1
474*9880d681SAndroid Build Coastguard Worker  %res4 = add i64 %res3, %res2
475*9880d681SAndroid Build Coastguard Worker  ret i64 %res4
476*9880d681SAndroid Build Coastguard Worker}
477*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.vcvtss2si64(<4 x float>, i32) nounwind readnone
478*9880d681SAndroid Build Coastguard Worker
479*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvtsd2usi32(<2 x double> %a0) {
480*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsd2usi32:
481*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
482*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2usi %xmm0, %ecx
483*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2usi {rz-sae}, %xmm0, %eax
484*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2usi {rd-sae}, %xmm0, %edx
485*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %edx, %eax
487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
488*9880d681SAndroid Build Coastguard Worker
489*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> %a0, i32 4)
490*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> %a0, i32 3)
491*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> %a0, i32 1)
492*9880d681SAndroid Build Coastguard Worker  %res3 = add i32 %res, %res1
493*9880d681SAndroid Build Coastguard Worker  %res4 = add i32 %res3, %res2
494*9880d681SAndroid Build Coastguard Worker  ret i32 %res4
495*9880d681SAndroid Build Coastguard Worker}
496*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double>, i32) nounwind readnone
497*9880d681SAndroid Build Coastguard Worker
498*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvtsd2si32(<2 x double> %a0) {
499*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsd2si32:
500*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
501*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2si %xmm0, %ecx
502*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2si {rz-sae}, %xmm0, %eax
503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2si {rd-sae}, %xmm0, %edx
504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %edx, %eax
506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
507*9880d681SAndroid Build Coastguard Worker
508*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> %a0, i32 4)
509*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> %a0, i32 3)
510*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> %a0, i32 1)
511*9880d681SAndroid Build Coastguard Worker  %res3 = add i32 %res, %res1
512*9880d681SAndroid Build Coastguard Worker  %res4 = add i32 %res3, %res2
513*9880d681SAndroid Build Coastguard Worker  ret i32 %res4
514*9880d681SAndroid Build Coastguard Worker}
515*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double>, i32) nounwind readnone
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvtss2usi32(<4 x float> %a0) {
518*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtss2usi32:
519*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
520*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2usi %xmm0, %ecx
521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2usi {rz-sae}, %xmm0, %eax
522*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2usi {rd-sae}, %xmm0, %edx
523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
524*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %edx, %eax
525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
526*9880d681SAndroid Build Coastguard Worker
527*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> %a0, i32 4)
528*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> %a0, i32 3)
529*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> %a0, i32 1)
530*9880d681SAndroid Build Coastguard Worker  %res3 = add i32 %res, %res1
531*9880d681SAndroid Build Coastguard Worker  %res4 = add i32 %res3, %res2
532*9880d681SAndroid Build Coastguard Worker  ret i32 %res4
533*9880d681SAndroid Build Coastguard Worker}
534*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float>, i32) nounwind readnone
535*9880d681SAndroid Build Coastguard Worker
536*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvtss2si32(<4 x float> %a0) {
537*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtss2si32:
538*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2si %xmm0, %ecx
540*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2si {rz-sae}, %xmm0, %eax
541*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2si {rd-sae}, %xmm0, %edx
542*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
543*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %edx, %eax
544*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
545*9880d681SAndroid Build Coastguard Worker
546*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> %a0, i32 4)
547*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> %a0, i32 3)
548*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> %a0, i32 1)
549*9880d681SAndroid Build Coastguard Worker  %res3 = add i32 %res, %res1
550*9880d681SAndroid Build Coastguard Worker  %res4 = add i32 %res3, %res2
551*9880d681SAndroid Build Coastguard Worker  ret i32 %res4
552*9880d681SAndroid Build Coastguard Worker}
553*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcvtss2si32(<4 x float>, i32) nounwind readnone
554*9880d681SAndroid Build Coastguard Worker
555*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512(<16 x i16> %a0) {
556*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512:
557*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtph2ps %ymm0, %zmm0
559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
560*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> zeroinitializer, i16 -1, i32 4)
561*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
562*9880d681SAndroid Build Coastguard Worker}
563*9880d681SAndroid Build Coastguard Worker
564*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512_sae(<16 x i16> %a0) {
565*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512_sae:
566*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtph2ps {sae}, %ymm0, %zmm0
568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
569*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> zeroinitializer, i16 -1, i32 8)
570*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
571*9880d681SAndroid Build Coastguard Worker}
572*9880d681SAndroid Build Coastguard Worker
573*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512_rrk(<16 x i16> %a0,<16 x float> %a1, i16 %mask) {
574*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512_rrk:
575*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
577*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtph2ps %ymm0, %zmm1 {%k1}
578*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
579*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
580*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> %a1, i16 %mask, i32 4)
581*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
582*9880d681SAndroid Build Coastguard Worker}
583*9880d681SAndroid Build Coastguard Worker
584*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512_sae_rrkz(<16 x i16> %a0, i16 %mask) {
585*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512_sae_rrkz:
586*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
587*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
588*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtph2ps {sae}, %ymm0, %zmm0 {%k1} {z}
589*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
590*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> zeroinitializer, i16 %mask, i32 8)
591*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
592*9880d681SAndroid Build Coastguard Worker}
593*9880d681SAndroid Build Coastguard Worker
594*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512_rrkz(<16 x i16> %a0, i16 %mask) {
595*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512_rrkz:
596*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtph2ps %ymm0, %zmm0 {%k1} {z}
599*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
600*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> zeroinitializer, i16 %mask, i32 4)
601*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
602*9880d681SAndroid Build Coastguard Worker}
603*9880d681SAndroid Build Coastguard Worker
604*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16>, <16 x float>, i16, i32) nounwind readonly
605*9880d681SAndroid Build Coastguard Worker
606*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_vcvtps2ph_256(<16 x float> %a0, <16 x i16> %src, i16 %mask, <16 x i16> * %dst) {
607*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtps2ph_256:
608*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
609*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
610*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2ph $2, %zmm0, %ymm1 {%k1}
611*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2ph $2, %zmm0, %ymm2 {%k1} {z}
612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2ph $2, %zmm0, (%rsi)
613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm2, %ymm0
614*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
615*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.vcvtps2ph.512(<16 x float> %a0, i32 2, <16 x i16> zeroinitializer, i16 -1)
616*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.vcvtps2ph.512(<16 x float> %a0, i32 2, <16 x i16> zeroinitializer, i16 %mask)
617*9880d681SAndroid Build Coastguard Worker  %res3 = call <16 x i16> @llvm.x86.avx512.mask.vcvtps2ph.512(<16 x float> %a0, i32 2, <16 x i16> %src, i16 %mask)
618*9880d681SAndroid Build Coastguard Worker  store <16 x i16> %res1, <16 x i16> * %dst
619*9880d681SAndroid Build Coastguard Worker  %res  = add <16 x i16> %res2, %res3
620*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
621*9880d681SAndroid Build Coastguard Worker}
622*9880d681SAndroid Build Coastguard Worker
623*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.vcvtps2ph.512(<16 x float>, i32, <16 x i16>, i16) nounwind readonly
624*9880d681SAndroid Build Coastguard Worker
625*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vbroadcast_ss_512(i8* %a0) {
626*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vbroadcast_ss_512:
627*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
628*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastss (%rdi), %zmm0
629*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
630*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.vbroadcast.ss.512(i8* %a0) ; <<16 x float>> [#uses=1]
631*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
632*9880d681SAndroid Build Coastguard Worker}
633*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.vbroadcast.ss.512(i8*) nounwind readonly
634*9880d681SAndroid Build Coastguard Worker
635*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_x86_vbroadcast_sd_512(i8* %a0) {
636*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vbroadcast_sd_512:
637*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
638*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastsd (%rdi), %zmm0
639*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
640*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.vbroadcast.sd.512(i8* %a0) ; <<8 x double>> [#uses=1]
641*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
642*9880d681SAndroid Build Coastguard Worker}
643*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.vbroadcast.sd.512(i8*) nounwind readonly
644*9880d681SAndroid Build Coastguard Worker
645*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_conflict_d(<16 x i32> %a) {
646*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_conflict_d:
647*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpconflictd %zmm0, %zmm0
649*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
650*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32> %a, <16 x i32> zeroinitializer, i16 -1)
651*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
652*9880d681SAndroid Build Coastguard Worker}
653*9880d681SAndroid Build Coastguard Worker
654*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32>, <16 x i32>, i16) nounwind readonly
655*9880d681SAndroid Build Coastguard Worker
656*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_conflict_q(<8 x i64> %a) {
657*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_conflict_q:
658*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
659*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpconflictq %zmm0, %zmm0
660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
661*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64> %a, <8 x i64> zeroinitializer, i8 -1)
662*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
663*9880d681SAndroid Build Coastguard Worker}
664*9880d681SAndroid Build Coastguard Worker
665*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64>, <8 x i64>, i8) nounwind readonly
666*9880d681SAndroid Build Coastguard Worker
667*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_maskz_conflict_d(<16 x i32> %a, i16 %mask) {
668*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_conflict_d:
669*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpconflictd %zmm0, %zmm0 {%k1} {z}
672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
673*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32> %a, <16 x i32> zeroinitializer, i16 %mask)
674*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
675*9880d681SAndroid Build Coastguard Worker}
676*9880d681SAndroid Build Coastguard Worker
677*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_conflict_q(<8 x i64> %a, <8 x i64> %b, i8 %mask) {
678*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_conflict_q:
679*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
680*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpconflictq %zmm0, %zmm1 {%k1}
682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
684*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64> %a, <8 x i64> %b, i8 %mask)
685*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
686*9880d681SAndroid Build Coastguard Worker}
687*9880d681SAndroid Build Coastguard Worker
688*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_lzcnt_d(<16 x i32> %a) {
689*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_lzcnt_d:
690*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
691*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vplzcntd %zmm0, %zmm0
692*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
693*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.lzcnt.d.512(<16 x i32> %a, <16 x i32> zeroinitializer, i16 -1)
694*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
695*9880d681SAndroid Build Coastguard Worker}
696*9880d681SAndroid Build Coastguard Worker
697*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.lzcnt.d.512(<16 x i32>, <16 x i32>, i16) nounwind readonly
698*9880d681SAndroid Build Coastguard Worker
699*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_lzcnt_q(<8 x i64> %a) {
700*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_lzcnt_q:
701*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
702*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vplzcntq %zmm0, %zmm0
703*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
704*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.lzcnt.q.512(<8 x i64> %a, <8 x i64> zeroinitializer, i8 -1)
705*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
706*9880d681SAndroid Build Coastguard Worker}
707*9880d681SAndroid Build Coastguard Worker
708*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.lzcnt.q.512(<8 x i64>, <8 x i64>, i8) nounwind readonly
709*9880d681SAndroid Build Coastguard Worker
710*9880d681SAndroid Build Coastguard Worker
711*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_lzcnt_d(<16 x i32> %a, <16 x i32> %b, i16 %mask) {
712*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_lzcnt_d:
713*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vplzcntd %zmm0, %zmm1 {%k1}
716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
717*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
718*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.lzcnt.d.512(<16 x i32> %a, <16 x i32> %b, i16 %mask)
719*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
720*9880d681SAndroid Build Coastguard Worker}
721*9880d681SAndroid Build Coastguard Worker
722*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_lzcnt_q(<8 x i64> %a, <8 x i64> %b, i8 %mask) {
723*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_lzcnt_q:
724*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
725*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
726*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vplzcntq %zmm0, %zmm1 {%k1}
727*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
728*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
729*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.lzcnt.q.512(<8 x i64> %a, <8 x i64> %b, i8 %mask)
730*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
731*9880d681SAndroid Build Coastguard Worker}
732*9880d681SAndroid Build Coastguard Worker
733*9880d681SAndroid Build Coastguard Worker define i16 @test_cmpps(<16 x float> %a, <16 x float> %b) {
734*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmpps:
735*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
736*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpleps {sae}, %zmm1, %zmm0, %k0
737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
739*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
740*9880d681SAndroid Build Coastguard Worker   %res = call i16 @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> %a, <16 x float> %b, i32 2, i16 -1, i32 8)
741*9880d681SAndroid Build Coastguard Worker   ret i16 %res
742*9880d681SAndroid Build Coastguard Worker }
743*9880d681SAndroid Build Coastguard Worker declare i16 @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> , <16 x float> , i32, i16, i32)
744*9880d681SAndroid Build Coastguard Worker
745*9880d681SAndroid Build Coastguard Worker define i8 @test_cmppd(<8 x double> %a, <8 x double> %b) {
746*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmppd:
747*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqpd %zmm1, %zmm0, %k0
749*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
750*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
751*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
752*9880d681SAndroid Build Coastguard Worker   %res = call i8 @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> %a, <8 x double> %b, i32 4, i8 -1, i32 4)
753*9880d681SAndroid Build Coastguard Worker   ret i8 %res
754*9880d681SAndroid Build Coastguard Worker }
755*9880d681SAndroid Build Coastguard Worker declare i8 @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> , <8 x double> , i32, i8, i32)
756*9880d681SAndroid Build Coastguard Worker
757*9880d681SAndroid Build Coastguard Worker ; fp min - max
758*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmaxpd(<8 x double> %a0, <8 x double> %a1) {
759*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmaxpd:
760*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxpd %zmm1, %zmm0, %zmm0
762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
763*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.max.pd.512(<8 x double> %a0, <8 x double> %a1,
764*9880d681SAndroid Build Coastguard Worker                    <8 x double>zeroinitializer, i8 -1, i32 4)
765*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
766*9880d681SAndroid Build Coastguard Worker}
767*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.max.pd.512(<8 x double>, <8 x double>,
768*9880d681SAndroid Build Coastguard Worker                    <8 x double>, i8, i32)
769*9880d681SAndroid Build Coastguard Worker
770*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vminpd(<8 x double> %a0, <8 x double> %a1) {
771*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vminpd:
772*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
773*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vminpd %zmm1, %zmm0, %zmm0
774*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
775*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.min.pd.512(<8 x double> %a0, <8 x double> %a1,
776*9880d681SAndroid Build Coastguard Worker                    <8 x double>zeroinitializer, i8 -1, i32 4)
777*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
778*9880d681SAndroid Build Coastguard Worker}
779*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.min.pd.512(<8 x double>, <8 x double>,
780*9880d681SAndroid Build Coastguard Worker                    <8 x double>, i8, i32)
781*9880d681SAndroid Build Coastguard Worker
782*9880d681SAndroid Build Coastguard Worker declare <16 x i32> @llvm.x86.avx512.mask.pabs.d.512(<16 x i32>, <16 x i32>, i16)
783*9880d681SAndroid Build Coastguard Worker
784*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pabs_d_512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2) {
785*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pabs_d_512:
786*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
787*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
788*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsd %zmm0, %zmm1 {%k1}
789*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsd %zmm0, %zmm0
790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
792*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pabs.d.512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2)
793*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pabs.d.512(<16 x i32> %x0, <16 x i32> %x1, i16 -1)
794*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
795*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
796*9880d681SAndroid Build Coastguard Worker}
797*9880d681SAndroid Build Coastguard Worker
798*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pabs.q.512(<8 x i64>, <8 x i64>, i8)
799*9880d681SAndroid Build Coastguard Worker
800*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pabs_q_512(<8 x i64> %x0, <8 x i64> %x1, i8 %x2) {
801*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pabs_q_512:
802*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
803*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
804*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsq %zmm0, %zmm1 {%k1}
805*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsq %zmm0, %zmm0
806*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
807*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
808*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pabs.q.512(<8 x i64> %x0, <8 x i64> %x1, i8 %x2)
809*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pabs.q.512(<8 x i64> %x0, <8 x i64> %x1, i8 -1)
810*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
811*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
812*9880d681SAndroid Build Coastguard Worker}
813*9880d681SAndroid Build Coastguard Worker
814*9880d681SAndroid Build Coastguard Workerdefine i8 @test_vptestmq(<8 x i64> %a0, <8 x i64> %a1, i8 %m) {
815*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vptestmq:
816*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
818*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmq %zmm1, %zmm0, %k0 {%k1}
819*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
820*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmq %zmm1, %zmm0, %k0
821*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
822*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al
823*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
824*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
825*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.ptestm.q.512(<8 x i64> %a0, <8 x i64> %a1, i8 -1)
826*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.ptestm.q.512(<8 x i64> %a0, <8 x i64> %a1, i8 %m)
827*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res1, %res
828*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
829*9880d681SAndroid Build Coastguard Worker}
830*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.ptestm.q.512(<8 x i64>, <8 x i64>, i8)
831*9880d681SAndroid Build Coastguard Worker
832*9880d681SAndroid Build Coastguard Workerdefine i16 @test_vptestmd(<16 x i32> %a0, <16 x i32> %a1, i16 %m) {
833*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vptestmd:
834*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmd %zmm1, %zmm0, %k0 {%k1}
837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmd %zmm1, %zmm0, %k0
839*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
840*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
841*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
842*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
843*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.ptestm.d.512(<16 x i32> %a0, <16 x i32> %a1, i16 -1)
844*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.ptestm.d.512(<16 x i32> %a0, <16 x i32> %a1, i16 %m)
845*9880d681SAndroid Build Coastguard Worker  %res2 = add i16 %res1, %res
846*9880d681SAndroid Build Coastguard Worker  ret i16 %res2
847*9880d681SAndroid Build Coastguard Worker}
848*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.ptestm.d.512(<16 x i32>, <16 x i32>, i16)
849*9880d681SAndroid Build Coastguard Worker
850*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_valign_q(<8 x i64> %a, <8 x i64> %b) {
851*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_valign_q:
852*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
853*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    valignq $2, %zmm1, %zmm0, %zmm0
854*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
855*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.valign.q.512(<8 x i64> %a, <8 x i64> %b, i32 2, <8 x i64> zeroinitializer, i8 -1)
856*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
857*9880d681SAndroid Build Coastguard Worker}
858*9880d681SAndroid Build Coastguard Worker
859*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_valign_q(<8 x i64> %a, <8 x i64> %b, <8 x i64> %src, i8 %mask) {
860*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_valign_q:
861*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
862*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
863*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    valignq $2, %zmm1, %zmm0, %zmm2 {%k1}
864*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
865*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
866*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.valign.q.512(<8 x i64> %a, <8 x i64> %b, i32 2, <8 x i64> %src, i8 %mask)
867*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
868*9880d681SAndroid Build Coastguard Worker}
869*9880d681SAndroid Build Coastguard Worker
870*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.valign.q.512(<8 x i64>, <8 x i64>, i32, <8 x i64>, i8)
871*9880d681SAndroid Build Coastguard Worker
872*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_maskz_valign_d(<16 x i32> %a, <16 x i32> %b, i16 %mask) {
873*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_valign_d:
874*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
875*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
876*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    valignd $5, %zmm1, %zmm0, %zmm0 {%k1} {z}
877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
878*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.valign.d.512(<16 x i32> %a, <16 x i32> %b, i32 5, <16 x i32> zeroinitializer, i16 %mask)
879*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
880*9880d681SAndroid Build Coastguard Worker}
881*9880d681SAndroid Build Coastguard Worker
882*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.valign.d.512(<16 x i32>, <16 x i32>, i32, <16 x i32>, i16)
883*9880d681SAndroid Build Coastguard Worker
884*9880d681SAndroid Build Coastguard Workerdefine void @test_mask_store_ss(i8* %ptr, <4 x float> %data, i8 %mask) {
885*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_store_ss:
886*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
887*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
888*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovss %xmm0, (%rdi) {%k1}
889*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
890*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.store.ss(i8* %ptr, <4 x float> %data, i8 %mask)
891*9880d681SAndroid Build Coastguard Worker ret void
892*9880d681SAndroid Build Coastguard Worker}
893*9880d681SAndroid Build Coastguard Worker
894*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.store.ss(i8*, <4 x float>, i8 )
895*9880d681SAndroid Build Coastguard Worker
896*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_cmp_d_512(<16 x i32> %a0, <16 x i32> %a1) {
897*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmp_d_512:
898*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
899*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqd %zmm1, %zmm0, %k0
900*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltd %zmm1, %zmm0, %k1
901*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpled %zmm1, %zmm0, %k2
902*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordd %zmm1, %zmm0, %k3
903*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %zmm1, %zmm0, %k4
904*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltd %zmm1, %zmm0, %k5
905*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnled %zmm1, %zmm0, %k6
906*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordd %zmm1, %zmm0, %k7
907*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax
908*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
909*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0
910*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
911*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax
912*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0
913*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax
914*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0
915*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax
916*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0
917*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax
918*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0
919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax
920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0
921*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax
922*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0
923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
924*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 -1)
925*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
926*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 1, i16 -1)
927*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
928*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 2, i16 -1)
929*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
930*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 3, i16 -1)
931*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
932*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 4, i16 -1)
933*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
934*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 5, i16 -1)
935*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
936*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 6, i16 -1)
937*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
938*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 7, i16 -1)
939*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
940*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
941*9880d681SAndroid Build Coastguard Worker}
942*9880d681SAndroid Build Coastguard Worker
943*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_cmp_d_512(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {
944*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_cmp_d_512:
945*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
946*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
947*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqd %zmm1, %zmm0, %k0 {%k1}
948*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltd %zmm1, %zmm0, %k2 {%k1}
949*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpled %zmm1, %zmm0, %k3 {%k1}
950*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordd %zmm1, %zmm0, %k4 {%k1}
951*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqd %zmm1, %zmm0, %k5 {%k1}
952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltd %zmm1, %zmm0, %k6 {%k1}
953*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnled %zmm1, %zmm0, %k7 {%k1}
954*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordd %zmm1, %zmm0, %k1 {%k1}
955*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax
956*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0
958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax
960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0
961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax
962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0
963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax
964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0
965*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax
966*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0
967*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax
968*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0
969*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax
970*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0
971*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
972*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 %mask)
973*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
974*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 1, i16 %mask)
975*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
976*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 2, i16 %mask)
977*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
978*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 3, i16 %mask)
979*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
980*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 4, i16 %mask)
981*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
982*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 5, i16 %mask)
983*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
984*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 6, i16 %mask)
985*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
986*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 7, i16 %mask)
987*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
988*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
989*9880d681SAndroid Build Coastguard Worker}
990*9880d681SAndroid Build Coastguard Worker
991*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32>, <16 x i32>, i32, i16) nounwind readnone
992*9880d681SAndroid Build Coastguard Worker
993*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_ucmp_d_512(<16 x i32> %a0, <16 x i32> %a1) {
994*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ucmp_d_512:
995*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
996*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequd %zmm1, %zmm0, %k0
997*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltud %zmm1, %zmm0, %k1
998*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleud %zmm1, %zmm0, %k2
999*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordud %zmm1, %zmm0, %k3
1000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequd %zmm1, %zmm0, %k4
1001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltud %zmm1, %zmm0, %k5
1002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleud %zmm1, %zmm0, %k6
1003*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordud %zmm1, %zmm0, %k7
1004*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax
1005*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
1006*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0
1007*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
1008*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax
1009*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0
1010*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax
1011*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0
1012*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax
1013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0
1014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax
1015*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0
1016*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax
1017*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0
1018*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax
1019*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0
1020*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1021*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 -1)
1022*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
1023*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 1, i16 -1)
1024*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
1025*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 2, i16 -1)
1026*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
1027*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 3, i16 -1)
1028*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
1029*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 4, i16 -1)
1030*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
1031*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 5, i16 -1)
1032*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
1033*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 6, i16 -1)
1034*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
1035*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 7, i16 -1)
1036*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
1037*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
1038*9880d681SAndroid Build Coastguard Worker}
1039*9880d681SAndroid Build Coastguard Worker
1040*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_ucmp_d_512(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {
1041*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_ucmp_d_512:
1042*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1044*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequd %zmm1, %zmm0, %k0 {%k1}
1045*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltud %zmm1, %zmm0, %k2 {%k1}
1046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleud %zmm1, %zmm0, %k3 {%k1}
1047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordud %zmm1, %zmm0, %k4 {%k1}
1048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequd %zmm1, %zmm0, %k5 {%k1}
1049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltud %zmm1, %zmm0, %k6 {%k1}
1050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleud %zmm1, %zmm0, %k7 {%k1}
1051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordud %zmm1, %zmm0, %k1 {%k1}
1052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax
1053*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
1054*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0
1055*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
1056*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax
1057*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0
1058*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax
1059*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0
1060*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax
1061*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0
1062*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax
1063*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0
1064*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax
1065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0
1066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax
1067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0
1068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1069*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 %mask)
1070*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
1071*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 1, i16 %mask)
1072*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
1073*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 2, i16 %mask)
1074*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
1075*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 3, i16 %mask)
1076*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
1077*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 4, i16 %mask)
1078*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
1079*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 5, i16 %mask)
1080*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
1081*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 6, i16 %mask)
1082*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
1083*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 7, i16 %mask)
1084*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
1085*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
1086*9880d681SAndroid Build Coastguard Worker}
1087*9880d681SAndroid Build Coastguard Worker
1088*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32>, <16 x i32>, i32, i16) nounwind readnone
1089*9880d681SAndroid Build Coastguard Worker
1090*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_cmp_q_512(<8 x i64> %a0, <8 x i64> %a1) {
1091*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmp_q_512:
1092*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1093*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqq %zmm1, %zmm0, %k0
1094*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltq %zmm1, %zmm0, %k1
1095*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleq %zmm1, %zmm0, %k2
1096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordq %zmm1, %zmm0, %k3
1097*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %zmm1, %zmm0, %k4
1098*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltq %zmm1, %zmm0, %k5
1099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleq %zmm1, %zmm0, %k6
1100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordq %zmm1, %zmm0, %k7
1101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
1102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $0, %eax, %xmm0, %xmm0
1103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax
1104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
1105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax
1106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
1107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax
1108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
1109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax
1110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
1111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax
1112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
1113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax
1114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
1115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax
1116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
1117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1118*9880d681SAndroid Build Coastguard Worker  %res0 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 -1)
1119*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0
1120*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 1, i8 -1)
1121*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1
1122*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 2, i8 -1)
1123*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2
1124*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 3, i8 -1)
1125*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3
1126*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 4, i8 -1)
1127*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4
1128*9880d681SAndroid Build Coastguard Worker  %res5 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 5, i8 -1)
1129*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5
1130*9880d681SAndroid Build Coastguard Worker  %res6 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 6, i8 -1)
1131*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6
1132*9880d681SAndroid Build Coastguard Worker  %res7 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 7, i8 -1)
1133*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7
1134*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vec7
1135*9880d681SAndroid Build Coastguard Worker}
1136*9880d681SAndroid Build Coastguard Worker
1137*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_mask_cmp_q_512(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {
1138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_cmp_q_512:
1139*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqq %zmm1, %zmm0, %k0 {%k1}
1142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltq %zmm1, %zmm0, %k2 {%k1}
1143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleq %zmm1, %zmm0, %k3 {%k1}
1144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordq %zmm1, %zmm0, %k4 {%k1}
1145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqq %zmm1, %zmm0, %k5 {%k1}
1146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltq %zmm1, %zmm0, %k6 {%k1}
1147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleq %zmm1, %zmm0, %k7 {%k1}
1148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordq %zmm1, %zmm0, %k1 {%k1}
1149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
1150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $0, %eax, %xmm0, %xmm0
1151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax
1152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
1153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax
1154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
1155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax
1156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
1157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax
1158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
1159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax
1160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
1161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax
1162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
1163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax
1164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
1165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1166*9880d681SAndroid Build Coastguard Worker  %res0 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 %mask)
1167*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0
1168*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 1, i8 %mask)
1169*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1
1170*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 2, i8 %mask)
1171*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2
1172*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 3, i8 %mask)
1173*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3
1174*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 4, i8 %mask)
1175*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4
1176*9880d681SAndroid Build Coastguard Worker  %res5 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 5, i8 %mask)
1177*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5
1178*9880d681SAndroid Build Coastguard Worker  %res6 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 6, i8 %mask)
1179*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6
1180*9880d681SAndroid Build Coastguard Worker  %res7 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 7, i8 %mask)
1181*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7
1182*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vec7
1183*9880d681SAndroid Build Coastguard Worker}
1184*9880d681SAndroid Build Coastguard Worker
1185*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64>, <8 x i64>, i32, i8) nounwind readnone
1186*9880d681SAndroid Build Coastguard Worker
1187*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_ucmp_q_512(<8 x i64> %a0, <8 x i64> %a1) {
1188*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ucmp_q_512:
1189*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequq %zmm1, %zmm0, %k0
1191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltuq %zmm1, %zmm0, %k1
1192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleuq %zmm1, %zmm0, %k2
1193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunorduq %zmm1, %zmm0, %k3
1194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequq %zmm1, %zmm0, %k4
1195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltuq %zmm1, %zmm0, %k5
1196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleuq %zmm1, %zmm0, %k6
1197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmporduq %zmm1, %zmm0, %k7
1198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
1199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $0, %eax, %xmm0, %xmm0
1200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax
1201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
1202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax
1203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
1204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax
1205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
1206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax
1207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
1208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax
1209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
1210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax
1211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
1212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax
1213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
1214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1215*9880d681SAndroid Build Coastguard Worker  %res0 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 -1)
1216*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0
1217*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 1, i8 -1)
1218*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1
1219*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 2, i8 -1)
1220*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2
1221*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 3, i8 -1)
1222*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3
1223*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 4, i8 -1)
1224*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4
1225*9880d681SAndroid Build Coastguard Worker  %res5 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 5, i8 -1)
1226*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5
1227*9880d681SAndroid Build Coastguard Worker  %res6 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 6, i8 -1)
1228*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6
1229*9880d681SAndroid Build Coastguard Worker  %res7 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 7, i8 -1)
1230*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7
1231*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vec7
1232*9880d681SAndroid Build Coastguard Worker}
1233*9880d681SAndroid Build Coastguard Worker
1234*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_mask_ucmp_q_512(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {
1235*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_ucmp_q_512:
1236*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequq %zmm1, %zmm0, %k0 {%k1}
1239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltuq %zmm1, %zmm0, %k2 {%k1}
1240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleuq %zmm1, %zmm0, %k3 {%k1}
1241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunorduq %zmm1, %zmm0, %k4 {%k1}
1242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequq %zmm1, %zmm0, %k5 {%k1}
1243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltuq %zmm1, %zmm0, %k6 {%k1}
1244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleuq %zmm1, %zmm0, %k7 {%k1}
1245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmporduq %zmm1, %zmm0, %k1 {%k1}
1246*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
1247*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $0, %eax, %xmm0, %xmm0
1248*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax
1249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
1250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax
1251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
1252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax
1253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
1254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax
1255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
1256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax
1257*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
1258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax
1259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
1260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax
1261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
1262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1263*9880d681SAndroid Build Coastguard Worker  %res0 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 %mask)
1264*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0
1265*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 1, i8 %mask)
1266*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1
1267*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 2, i8 %mask)
1268*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2
1269*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 3, i8 %mask)
1270*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3
1271*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 4, i8 %mask)
1272*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4
1273*9880d681SAndroid Build Coastguard Worker  %res5 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 5, i8 %mask)
1274*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5
1275*9880d681SAndroid Build Coastguard Worker  %res6 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 6, i8 %mask)
1276*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6
1277*9880d681SAndroid Build Coastguard Worker  %res7 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 7, i8 %mask)
1278*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7
1279*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vec7
1280*9880d681SAndroid Build Coastguard Worker}
1281*9880d681SAndroid Build Coastguard Worker
1282*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64>, <8 x i64>, i32, i8) nounwind readnone
1283*9880d681SAndroid Build Coastguard Worker
1284*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vextractf32x4(<4 x float> %b, <16 x float> %a, i8 %mask) {
1285*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vextractf32x4:
1286*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf32x4 $2, %zmm1, %xmm0 {%k1}
1289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1290*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vextractf32x4.512(<16 x float> %a, i32 2, <4 x float> %b, i8 %mask)
1291*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1292*9880d681SAndroid Build Coastguard Worker}
1293*9880d681SAndroid Build Coastguard Worker
1294*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.vextractf32x4.512(<16 x float>, i32, <4 x float>, i8)
1295*9880d681SAndroid Build Coastguard Worker
1296*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_vextracti64x4(<4 x i64> %b, <8 x i64> %a, i8 %mask) {
1297*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vextracti64x4:
1298*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextracti64x4 $2, %zmm1, %ymm0 {%k1}
1301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1302*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.vextracti64x4.512(<8 x i64> %a, i32 2, <4 x i64> %b, i8 %mask)
1303*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
1304*9880d681SAndroid Build Coastguard Worker}
1305*9880d681SAndroid Build Coastguard Worker
1306*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.vextracti64x4.512(<8 x i64>, i32, <4 x i64>, i8)
1307*9880d681SAndroid Build Coastguard Worker
1308*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_maskz_vextracti32x4(<16 x i32> %a, i8 %mask) {
1309*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_vextracti32x4:
1310*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextracti32x4 $2, %zmm0, %xmm0 {%k1} {z}
1313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1314*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.avx512.mask.vextracti32x4.512(<16 x i32> %a, i32 2, <4 x i32> zeroinitializer, i8 %mask)
1315*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
1316*9880d681SAndroid Build Coastguard Worker}
1317*9880d681SAndroid Build Coastguard Worker
1318*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx512.mask.vextracti32x4.512(<16 x i32>, i32, <4 x i32>, i8)
1319*9880d681SAndroid Build Coastguard Worker
1320*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_vextractf64x4(<8 x double> %a) {
1321*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextractf64x4:
1322*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf64x4 $2, %zmm0, %ymm0
1324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1325*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vextractf64x4.512(<8 x double> %a, i32 2, <4 x double> zeroinitializer, i8 -1)
1326*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1327*9880d681SAndroid Build Coastguard Worker}
1328*9880d681SAndroid Build Coastguard Worker
1329*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.vextractf64x4.512(<8 x double>, i32, <4 x double>, i8)
1330*9880d681SAndroid Build Coastguard Worker
1331*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psll_d(<16 x i32> %a0, <4 x i32> %a1) {
1332*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psll_d:
1333*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1334*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpslld %xmm1, %zmm0, %zmm0
1335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1336*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psll.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 -1)
1337*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1338*9880d681SAndroid Build Coastguard Worker}
1339*9880d681SAndroid Build Coastguard Worker
1340*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psll_d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask) {
1341*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psll_d:
1342*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1343*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1344*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpslld %xmm1, %zmm0, %zmm2 {%k1}
1345*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1346*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1347*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psll.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask)
1348*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1349*9880d681SAndroid Build Coastguard Worker}
1350*9880d681SAndroid Build Coastguard Worker
1351*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psll_d(<16 x i32> %a0, <4 x i32> %a1, i16 %mask) {
1352*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psll_d:
1353*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpslld %xmm1, %zmm0, %zmm0 {%k1} {z}
1356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1357*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psll.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask)
1358*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1359*9880d681SAndroid Build Coastguard Worker}
1360*9880d681SAndroid Build Coastguard Worker
1361*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psll.d(<16 x i32>, <4 x i32>, <16 x i32>, i16) nounwind readnone
1362*9880d681SAndroid Build Coastguard Worker
1363*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psll_q(<8 x i64> %a0, <2 x i64> %a1) {
1364*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psll_q:
1365*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1366*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllq %xmm1, %zmm0, %zmm0
1367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1368*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psll.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 -1)
1369*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1370*9880d681SAndroid Build Coastguard Worker}
1371*9880d681SAndroid Build Coastguard Worker
1372*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psll_q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask) {
1373*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psll_q:
1374*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1376*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllq %xmm1, %zmm0, %zmm2 {%k1}
1377*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1379*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psll.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask)
1380*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1381*9880d681SAndroid Build Coastguard Worker}
1382*9880d681SAndroid Build Coastguard Worker
1383*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psll_q(<8 x i64> %a0, <2 x i64> %a1, i8 %mask) {
1384*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psll_q:
1385*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllq %xmm1, %zmm0, %zmm0 {%k1} {z}
1388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1389*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psll.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask)
1390*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1391*9880d681SAndroid Build Coastguard Worker}
1392*9880d681SAndroid Build Coastguard Worker
1393*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psll.q(<8 x i64>, <2 x i64>, <8 x i64>, i8) nounwind readnone
1394*9880d681SAndroid Build Coastguard Worker
1395*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psrl_d(<16 x i32> %a0, <4 x i32> %a1) {
1396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrl_d:
1397*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrld %xmm1, %zmm0, %zmm0
1399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1400*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrl.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 -1)
1401*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1402*9880d681SAndroid Build Coastguard Worker}
1403*9880d681SAndroid Build Coastguard Worker
1404*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psrl_d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask) {
1405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrl_d:
1406*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrld %xmm1, %zmm0, %zmm2 {%k1}
1409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1411*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrl.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask)
1412*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1413*9880d681SAndroid Build Coastguard Worker}
1414*9880d681SAndroid Build Coastguard Worker
1415*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psrl_d(<16 x i32> %a0, <4 x i32> %a1, i16 %mask) {
1416*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrl_d:
1417*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrld %xmm1, %zmm0, %zmm0 {%k1} {z}
1420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1421*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrl.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask)
1422*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1423*9880d681SAndroid Build Coastguard Worker}
1424*9880d681SAndroid Build Coastguard Worker
1425*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psrl.d(<16 x i32>, <4 x i32>, <16 x i32>, i16) nounwind readnone
1426*9880d681SAndroid Build Coastguard Worker
1427*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psrl_q(<8 x i64> %a0, <2 x i64> %a1) {
1428*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrl_q:
1429*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlq %xmm1, %zmm0, %zmm0
1431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1432*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrl.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 -1)
1433*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1434*9880d681SAndroid Build Coastguard Worker}
1435*9880d681SAndroid Build Coastguard Worker
1436*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psrl_q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask) {
1437*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrl_q:
1438*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1439*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1440*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlq %xmm1, %zmm0, %zmm2 {%k1}
1441*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1443*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrl.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask)
1444*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1445*9880d681SAndroid Build Coastguard Worker}
1446*9880d681SAndroid Build Coastguard Worker
1447*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psrl_q(<8 x i64> %a0, <2 x i64> %a1, i8 %mask) {
1448*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrl_q:
1449*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1450*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1451*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlq %xmm1, %zmm0, %zmm0 {%k1} {z}
1452*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1453*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrl.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask)
1454*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1455*9880d681SAndroid Build Coastguard Worker}
1456*9880d681SAndroid Build Coastguard Worker
1457*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psrl.q(<8 x i64>, <2 x i64>, <8 x i64>, i8) nounwind readnone
1458*9880d681SAndroid Build Coastguard Worker
1459*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psra_d(<16 x i32> %a0, <4 x i32> %a1) {
1460*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psra_d:
1461*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1462*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrad %xmm1, %zmm0, %zmm0
1463*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1464*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psra.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 -1)
1465*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1466*9880d681SAndroid Build Coastguard Worker}
1467*9880d681SAndroid Build Coastguard Worker
1468*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psra_d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask) {
1469*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psra_d:
1470*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1471*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrad %xmm1, %zmm0, %zmm2 {%k1}
1473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1475*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psra.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask)
1476*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1477*9880d681SAndroid Build Coastguard Worker}
1478*9880d681SAndroid Build Coastguard Worker
1479*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psra_d(<16 x i32> %a0, <4 x i32> %a1, i16 %mask) {
1480*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psra_d:
1481*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1482*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1483*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrad %xmm1, %zmm0, %zmm0 {%k1} {z}
1484*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1485*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psra.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask)
1486*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1487*9880d681SAndroid Build Coastguard Worker}
1488*9880d681SAndroid Build Coastguard Worker
1489*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psra.d(<16 x i32>, <4 x i32>, <16 x i32>, i16) nounwind readnone
1490*9880d681SAndroid Build Coastguard Worker
1491*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psra_q(<8 x i64> %a0, <2 x i64> %a1) {
1492*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psra_q:
1493*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1494*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraq %xmm1, %zmm0, %zmm0
1495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1496*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psra.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 -1)
1497*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1498*9880d681SAndroid Build Coastguard Worker}
1499*9880d681SAndroid Build Coastguard Worker
1500*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psra_q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask) {
1501*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psra_q:
1502*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraq %xmm1, %zmm0, %zmm2 {%k1}
1505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1507*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psra.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask)
1508*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1509*9880d681SAndroid Build Coastguard Worker}
1510*9880d681SAndroid Build Coastguard Worker
1511*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psra_q(<8 x i64> %a0, <2 x i64> %a1, i8 %mask) {
1512*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psra_q:
1513*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1514*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraq %xmm1, %zmm0, %zmm0 {%k1} {z}
1516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1517*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psra.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask)
1518*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1519*9880d681SAndroid Build Coastguard Worker}
1520*9880d681SAndroid Build Coastguard Worker
1521*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psra.q(<8 x i64>, <2 x i64>, <8 x i64>, i8) nounwind readnone
1522*9880d681SAndroid Build Coastguard Worker
1523*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psllv_d(<16 x i32> %a0, <16 x i32> %a1) {
1524*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psllv_d:
1525*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvd %zmm1, %zmm0, %zmm0
1527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1528*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psllv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 -1)
1529*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1530*9880d681SAndroid Build Coastguard Worker}
1531*9880d681SAndroid Build Coastguard Worker
1532*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psllv_d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask) {
1533*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psllv_d:
1534*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvd %zmm1, %zmm0, %zmm2 {%k1}
1537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1539*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psllv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask)
1540*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1541*9880d681SAndroid Build Coastguard Worker}
1542*9880d681SAndroid Build Coastguard Worker
1543*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psllv_d(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {
1544*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psllv_d:
1545*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1547*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvd %zmm1, %zmm0, %zmm0 {%k1} {z}
1548*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1549*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psllv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask)
1550*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1551*9880d681SAndroid Build Coastguard Worker}
1552*9880d681SAndroid Build Coastguard Worker
1553*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psllv.d(<16 x i32>, <16 x i32>, <16 x i32>, i16) nounwind readnone
1554*9880d681SAndroid Build Coastguard Worker
1555*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psllv_q(<8 x i64> %a0, <8 x i64> %a1) {
1556*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psllv_q:
1557*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvq %zmm1, %zmm0, %zmm0
1559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1560*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psllv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 -1)
1561*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1562*9880d681SAndroid Build Coastguard Worker}
1563*9880d681SAndroid Build Coastguard Worker
1564*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psllv_q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask) {
1565*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psllv_q:
1566*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvq %zmm1, %zmm0, %zmm2 {%k1}
1569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1571*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psllv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask)
1572*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1573*9880d681SAndroid Build Coastguard Worker}
1574*9880d681SAndroid Build Coastguard Worker
1575*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psllv_q(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {
1576*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psllv_q:
1577*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1578*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1579*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvq %zmm1, %zmm0, %zmm0 {%k1} {z}
1580*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1581*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psllv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask)
1582*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1583*9880d681SAndroid Build Coastguard Worker}
1584*9880d681SAndroid Build Coastguard Worker
1585*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psllv.q(<8 x i64>, <8 x i64>, <8 x i64>, i8) nounwind readnone
1586*9880d681SAndroid Build Coastguard Worker
1587*9880d681SAndroid Build Coastguard Worker
1588*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psrav_d(<16 x i32> %a0, <16 x i32> %a1) {
1589*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrav_d:
1590*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravd %zmm1, %zmm0, %zmm0
1592*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1593*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrav.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 -1)
1594*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1595*9880d681SAndroid Build Coastguard Worker}
1596*9880d681SAndroid Build Coastguard Worker
1597*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psrav_d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask) {
1598*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrav_d:
1599*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravd %zmm1, %zmm0, %zmm2 {%k1}
1602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1603*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1604*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrav.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask)
1605*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1606*9880d681SAndroid Build Coastguard Worker}
1607*9880d681SAndroid Build Coastguard Worker
1608*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psrav_d(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {
1609*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrav_d:
1610*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1611*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravd %zmm1, %zmm0, %zmm0 {%k1} {z}
1613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1614*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrav.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask)
1615*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1616*9880d681SAndroid Build Coastguard Worker}
1617*9880d681SAndroid Build Coastguard Worker
1618*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psrav.d(<16 x i32>, <16 x i32>, <16 x i32>, i16) nounwind readnone
1619*9880d681SAndroid Build Coastguard Worker
1620*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psrav_q(<8 x i64> %a0, <8 x i64> %a1) {
1621*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrav_q:
1622*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravq %zmm1, %zmm0, %zmm0
1624*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1625*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrav.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 -1)
1626*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1627*9880d681SAndroid Build Coastguard Worker}
1628*9880d681SAndroid Build Coastguard Worker
1629*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psrav_q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask) {
1630*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrav_q:
1631*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1632*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravq %zmm1, %zmm0, %zmm2 {%k1}
1634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1636*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrav.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask)
1637*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1638*9880d681SAndroid Build Coastguard Worker}
1639*9880d681SAndroid Build Coastguard Worker
1640*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psrav_q(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {
1641*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrav_q:
1642*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1643*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1644*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravq %zmm1, %zmm0, %zmm0 {%k1} {z}
1645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1646*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrav.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask)
1647*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1648*9880d681SAndroid Build Coastguard Worker}
1649*9880d681SAndroid Build Coastguard Worker
1650*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psrav.q(<8 x i64>, <8 x i64>, <8 x i64>, i8) nounwind readnone
1651*9880d681SAndroid Build Coastguard Worker
1652*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psrlv_d(<16 x i32> %a0, <16 x i32> %a1) {
1653*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrlv_d:
1654*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvd %zmm1, %zmm0, %zmm0
1656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1657*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrlv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 -1)
1658*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1659*9880d681SAndroid Build Coastguard Worker}
1660*9880d681SAndroid Build Coastguard Worker
1661*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psrlv_d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask) {
1662*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrlv_d:
1663*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvd %zmm1, %zmm0, %zmm2 {%k1}
1666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1668*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrlv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask)
1669*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1670*9880d681SAndroid Build Coastguard Worker}
1671*9880d681SAndroid Build Coastguard Worker
1672*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psrlv_d(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {
1673*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrlv_d:
1674*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1675*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1676*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvd %zmm1, %zmm0, %zmm0 {%k1} {z}
1677*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1678*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrlv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask)
1679*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
1680*9880d681SAndroid Build Coastguard Worker}
1681*9880d681SAndroid Build Coastguard Worker
1682*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psrlv.d(<16 x i32>, <16 x i32>, <16 x i32>, i16) nounwind readnone
1683*9880d681SAndroid Build Coastguard Worker
1684*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psrlv_q(<8 x i64> %a0, <8 x i64> %a1) {
1685*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrlv_q:
1686*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1687*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvq %zmm1, %zmm0, %zmm0
1688*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1689*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 -1)
1690*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1691*9880d681SAndroid Build Coastguard Worker}
1692*9880d681SAndroid Build Coastguard Worker
1693*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psrlv_q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask) {
1694*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrlv_q:
1695*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvq %zmm1, %zmm0, %zmm2 {%k1}
1698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1700*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask)
1701*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1702*9880d681SAndroid Build Coastguard Worker}
1703*9880d681SAndroid Build Coastguard Worker
1704*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psrlv_q(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {
1705*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrlv_q:
1706*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1707*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1708*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvq %zmm1, %zmm0, %zmm0 {%k1} {z}
1709*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1710*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask)
1711*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1712*9880d681SAndroid Build Coastguard Worker}
1713*9880d681SAndroid Build Coastguard Worker
1714*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64>, <8 x i64>, <8 x i64>, i8) nounwind readnone
1715*9880d681SAndroid Build Coastguard Worker
1716*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psrlv_q_memop(<8 x i64> %a0, <8 x i64>* %ptr) {
1717*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrlv_q_memop:
1718*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvq (%rdi), %zmm0, %zmm0
1720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1721*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr
1722*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64> %a0, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
1723*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
1724*9880d681SAndroid Build Coastguard Worker}
1725*9880d681SAndroid Build Coastguard Worker
1726*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
1727*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
1728*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
1729*9880d681SAndroid Build Coastguard Worker
1730*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vsubps_rn(<16 x float> %a0, <16 x float> %a1) {
1731*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vsubps_rn:
1732*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1733*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {rn-sae}, %zmm1, %zmm0, %zmm0
1734*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1735*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1,
1736*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 -1, i32 0)
1737*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1738*9880d681SAndroid Build Coastguard Worker}
1739*9880d681SAndroid Build Coastguard Worker
1740*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vsubps_rd(<16 x float> %a0, <16 x float> %a1) {
1741*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vsubps_rd:
1742*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1743*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {rd-sae}, %zmm1, %zmm0, %zmm0
1744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1745*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1,
1746*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 -1, i32 1)
1747*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1748*9880d681SAndroid Build Coastguard Worker}
1749*9880d681SAndroid Build Coastguard Worker
1750*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vsubps_ru(<16 x float> %a0, <16 x float> %a1) {
1751*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vsubps_ru:
1752*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1753*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {ru-sae}, %zmm1, %zmm0, %zmm0
1754*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1755*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1,
1756*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 -1, i32 2)
1757*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1758*9880d681SAndroid Build Coastguard Worker}
1759*9880d681SAndroid Build Coastguard Worker
1760*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vsubps_rz(<16 x float> %a0, <16 x float> %a1) {
1761*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vsubps_rz:
1762*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1763*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {rz-sae}, %zmm1, %zmm0, %zmm0
1764*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1765*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1,
1766*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 -1, i32 3)
1767*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1768*9880d681SAndroid Build Coastguard Worker}
1769*9880d681SAndroid Build Coastguard Worker
1770*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_rn(<16 x float> %a0, <16 x float> %a1) {
1771*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_rn:
1772*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1773*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {rn-sae}, %zmm1, %zmm0, %zmm0
1774*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1775*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1776*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 -1, i32 0)
1777*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1778*9880d681SAndroid Build Coastguard Worker}
1779*9880d681SAndroid Build Coastguard Worker
1780*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_rd(<16 x float> %a0, <16 x float> %a1) {
1781*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_rd:
1782*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1783*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {rd-sae}, %zmm1, %zmm0, %zmm0
1784*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1785*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1786*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 -1, i32 1)
1787*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1788*9880d681SAndroid Build Coastguard Worker}
1789*9880d681SAndroid Build Coastguard Worker
1790*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_ru(<16 x float> %a0, <16 x float> %a1) {
1791*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_ru:
1792*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {ru-sae}, %zmm1, %zmm0, %zmm0
1794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1795*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1796*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 -1, i32 2)
1797*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1798*9880d681SAndroid Build Coastguard Worker}
1799*9880d681SAndroid Build Coastguard Worker
1800*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_rz(<16 x float> %a0, <16 x float> %a1) {
1801*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_rz:
1802*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1803*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {rz-sae}, %zmm1, %zmm0, %zmm0
1804*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1805*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1806*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 -1, i32 3)
1807*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1808*9880d681SAndroid Build Coastguard Worker}
1809*9880d681SAndroid Build Coastguard Worker
1810*9880d681SAndroid Build Coastguard Worker;; mask float
1811*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_rn(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
1812*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_rn:
1813*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1814*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {rn-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
1816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1817*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1818*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 %mask, i32 0)
1819*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1820*9880d681SAndroid Build Coastguard Worker}
1821*9880d681SAndroid Build Coastguard Worker
1822*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_rd(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
1823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_rd:
1824*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1826*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {rd-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
1827*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1828*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1829*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 %mask, i32 1)
1830*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1831*9880d681SAndroid Build Coastguard Worker}
1832*9880d681SAndroid Build Coastguard Worker
1833*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_ru(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
1834*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_ru:
1835*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {ru-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
1838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1839*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1840*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 %mask, i32 2)
1841*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1842*9880d681SAndroid Build Coastguard Worker}
1843*9880d681SAndroid Build Coastguard Worker
1844*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_rz(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
1845*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_rz:
1846*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1847*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1848*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
1849*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1850*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1851*9880d681SAndroid Build Coastguard Worker                    <16 x float> zeroinitializer, i16 %mask, i32 3)
1852*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1853*9880d681SAndroid Build Coastguard Worker}
1854*9880d681SAndroid Build Coastguard Worker
1855*9880d681SAndroid Build Coastguard Worker;; With Passthru value
1856*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_passthru_rn(<16 x float> %a0, <16 x float> %a1, <16 x float> %passthru, i16 %mask) {
1857*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_passthru_rn:
1858*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1}
1861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1862*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1863*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1864*9880d681SAndroid Build Coastguard Worker                    <16 x float> %passthru, i16 %mask, i32 0)
1865*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1866*9880d681SAndroid Build Coastguard Worker}
1867*9880d681SAndroid Build Coastguard Worker
1868*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_passthru_rd(<16 x float> %a0, <16 x float> %a1, <16 x float> %passthru, i16 %mask) {
1869*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_passthru_rd:
1870*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1871*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1872*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {rd-sae}, %zmm1, %zmm0, %zmm2 {%k1}
1873*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1874*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1875*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1876*9880d681SAndroid Build Coastguard Worker                    <16 x float> %passthru, i16 %mask, i32 1)
1877*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1878*9880d681SAndroid Build Coastguard Worker}
1879*9880d681SAndroid Build Coastguard Worker
1880*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_passthru_ru(<16 x float> %a0, <16 x float> %a1, <16 x float> %passthru, i16 %mask) {
1881*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_passthru_ru:
1882*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1883*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1884*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1}
1885*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1886*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1887*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1888*9880d681SAndroid Build Coastguard Worker                    <16 x float> %passthru, i16 %mask, i32 2)
1889*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1890*9880d681SAndroid Build Coastguard Worker}
1891*9880d681SAndroid Build Coastguard Worker
1892*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_passthru_rz(<16 x float> %a0, <16 x float> %a1, <16 x float> %passthru, i16 %mask) {
1893*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_passthru_rz:
1894*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1896*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulps {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1}
1897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1898*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1899*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1,
1900*9880d681SAndroid Build Coastguard Worker                    <16 x float> %passthru, i16 %mask, i32 3)
1901*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1902*9880d681SAndroid Build Coastguard Worker}
1903*9880d681SAndroid Build Coastguard Worker
1904*9880d681SAndroid Build Coastguard Worker;; mask double
1905*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmulpd_mask_rn(<8 x double> %a0, <8 x double> %a1, i8 %mask) {
1906*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulpd_mask_rn:
1907*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1908*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1909*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulpd {rn-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
1910*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1911*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double> %a0, <8 x double> %a1,
1912*9880d681SAndroid Build Coastguard Worker                    <8 x double> zeroinitializer, i8 %mask, i32 0)
1913*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
1914*9880d681SAndroid Build Coastguard Worker}
1915*9880d681SAndroid Build Coastguard Worker
1916*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmulpd_mask_rd(<8 x double> %a0, <8 x double> %a1, i8 %mask) {
1917*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulpd_mask_rd:
1918*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulpd {rd-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
1921*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1922*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double> %a0, <8 x double> %a1,
1923*9880d681SAndroid Build Coastguard Worker                    <8 x double> zeroinitializer, i8 %mask, i32 1)
1924*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
1925*9880d681SAndroid Build Coastguard Worker}
1926*9880d681SAndroid Build Coastguard Worker
1927*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmulpd_mask_ru(<8 x double> %a0, <8 x double> %a1, i8 %mask) {
1928*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulpd_mask_ru:
1929*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1930*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1931*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulpd {ru-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
1932*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1933*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double> %a0, <8 x double> %a1,
1934*9880d681SAndroid Build Coastguard Worker                    <8 x double> zeroinitializer, i8 %mask, i32 2)
1935*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
1936*9880d681SAndroid Build Coastguard Worker}
1937*9880d681SAndroid Build Coastguard Worker
1938*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmulpd_mask_rz(<8 x double> %a0, <8 x double> %a1, i8 %mask) {
1939*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulpd_mask_rz:
1940*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmulpd {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
1943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1944*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double> %a0, <8 x double> %a1,
1945*9880d681SAndroid Build Coastguard Worker                    <8 x double> zeroinitializer, i8 %mask, i32 3)
1946*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
1947*9880d681SAndroid Build Coastguard Worker}
1948*9880d681SAndroid Build Coastguard Worker
1949*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rr(<16 x i32> %a, <16 x i32> %b) {
1950*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rr:
1951*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm1, %zmm0, %zmm0
1953*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1954*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1)
1955*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
1956*9880d681SAndroid Build Coastguard Worker}
1957*9880d681SAndroid Build Coastguard Worker
1958*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rrk(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) {
1959*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rrk:
1960*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm1, %zmm0, %zmm2 {%k1}
1963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
1964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1965*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask)
1966*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
1967*9880d681SAndroid Build Coastguard Worker}
1968*9880d681SAndroid Build Coastguard Worker
1969*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rrkz(<16 x i32> %a, <16 x i32> %b, i16 %mask) {
1970*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rrkz:
1971*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1972*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
1973*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm1, %zmm0, %zmm0 {%k1} {z}
1974*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1975*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask)
1976*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
1977*9880d681SAndroid Build Coastguard Worker}
1978*9880d681SAndroid Build Coastguard Worker
1979*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rm(<16 x i32> %a, <16 x i32>* %ptr_b) {
1980*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rm:
1981*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd (%rdi), %zmm0, %zmm0
1983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1984*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
1985*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1)
1986*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
1987*9880d681SAndroid Build Coastguard Worker}
1988*9880d681SAndroid Build Coastguard Worker
1989*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmk(<16 x i32> %a, <16 x i32>* %ptr_b, <16 x i32> %passThru, i16 %mask) {
1990*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmk:
1991*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
1993*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd (%rdi), %zmm0, %zmm1 {%k1}
1994*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
1995*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
1996*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
1997*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask)
1998*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
1999*9880d681SAndroid Build Coastguard Worker}
2000*9880d681SAndroid Build Coastguard Worker
2001*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmkz(<16 x i32> %a, <16 x i32>* %ptr_b, i16 %mask) {
2002*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmkz:
2003*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2004*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2005*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd (%rdi), %zmm0, %zmm0 {%k1} {z}
2006*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2007*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2008*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask)
2009*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2010*9880d681SAndroid Build Coastguard Worker}
2011*9880d681SAndroid Build Coastguard Worker
2012*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmb(<16 x i32> %a, i32* %ptr_b) {
2013*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmb:
2014*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2015*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd (%rdi){1to16}, %zmm0, %zmm0
2016*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2017*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2018*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
2019*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
2020*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1)
2021*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2022*9880d681SAndroid Build Coastguard Worker}
2023*9880d681SAndroid Build Coastguard Worker
2024*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmbk(<16 x i32> %a, i32* %ptr_b, <16 x i32> %passThru, i16 %mask) {
2025*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmbk:
2026*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2027*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2028*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd (%rdi){1to16}, %zmm0, %zmm1 {%k1}
2029*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2030*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2031*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2032*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
2033*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
2034*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask)
2035*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2036*9880d681SAndroid Build Coastguard Worker}
2037*9880d681SAndroid Build Coastguard Worker
2038*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmbkz(<16 x i32> %a, i32* %ptr_b, i16 %mask) {
2039*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmbkz:
2040*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2041*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z}
2043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2044*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2045*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
2046*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
2047*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask)
2048*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2049*9880d681SAndroid Build Coastguard Worker}
2050*9880d681SAndroid Build Coastguard Worker
2051*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
2052*9880d681SAndroid Build Coastguard Worker
2053*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rr(<16 x i32> %a, <16 x i32> %b) {
2054*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rr:
2055*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2056*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd %zmm1, %zmm0, %zmm0
2057*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2058*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1)
2059*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2060*9880d681SAndroid Build Coastguard Worker}
2061*9880d681SAndroid Build Coastguard Worker
2062*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rrk(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) {
2063*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rrk:
2064*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd %zmm1, %zmm0, %zmm2 {%k1}
2067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2069*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask)
2070*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2071*9880d681SAndroid Build Coastguard Worker}
2072*9880d681SAndroid Build Coastguard Worker
2073*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rrkz(<16 x i32> %a, <16 x i32> %b, i16 %mask) {
2074*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rrkz:
2075*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2076*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2077*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd %zmm1, %zmm0, %zmm0 {%k1} {z}
2078*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2079*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask)
2080*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2081*9880d681SAndroid Build Coastguard Worker}
2082*9880d681SAndroid Build Coastguard Worker
2083*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rm(<16 x i32> %a, <16 x i32>* %ptr_b) {
2084*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rm:
2085*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd (%rdi), %zmm0, %zmm0
2087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2088*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2089*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1)
2090*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2091*9880d681SAndroid Build Coastguard Worker}
2092*9880d681SAndroid Build Coastguard Worker
2093*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmk(<16 x i32> %a, <16 x i32>* %ptr_b, <16 x i32> %passThru, i16 %mask) {
2094*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmk:
2095*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2097*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd (%rdi), %zmm0, %zmm1 {%k1}
2098*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2100*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2101*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask)
2102*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2103*9880d681SAndroid Build Coastguard Worker}
2104*9880d681SAndroid Build Coastguard Worker
2105*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmkz(<16 x i32> %a, <16 x i32>* %ptr_b, i16 %mask) {
2106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmkz:
2107*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd (%rdi), %zmm0, %zmm0 {%k1} {z}
2110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2111*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2112*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask)
2113*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2114*9880d681SAndroid Build Coastguard Worker}
2115*9880d681SAndroid Build Coastguard Worker
2116*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmb(<16 x i32> %a, i32* %ptr_b) {
2117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmb:
2118*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd (%rdi){1to16}, %zmm0, %zmm0
2120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2121*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2122*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
2123*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
2124*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1)
2125*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2126*9880d681SAndroid Build Coastguard Worker}
2127*9880d681SAndroid Build Coastguard Worker
2128*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmbk(<16 x i32> %a, i32* %ptr_b, <16 x i32> %passThru, i16 %mask) {
2129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmbk:
2130*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd (%rdi){1to16}, %zmm0, %zmm1 {%k1}
2133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2135*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2136*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
2137*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
2138*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask)
2139*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2140*9880d681SAndroid Build Coastguard Worker}
2141*9880d681SAndroid Build Coastguard Worker
2142*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmbkz(<16 x i32> %a, i32* %ptr_b, i16 %mask) {
2143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmbkz:
2144*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubd (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z}
2147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2148*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2149*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
2150*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
2151*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask)
2152*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2153*9880d681SAndroid Build Coastguard Worker}
2154*9880d681SAndroid Build Coastguard Worker
2155*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
2156*9880d681SAndroid Build Coastguard Worker
2157*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rr(<8 x i64> %a, <8 x i64> %b) {
2158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rr:
2159*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm1, %zmm0, %zmm0
2161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2162*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
2163*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2164*9880d681SAndroid Build Coastguard Worker}
2165*9880d681SAndroid Build Coastguard Worker
2166*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rrk(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) {
2167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rrk:
2168*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm1, %zmm0, %zmm2 {%k1}
2171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2173*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask)
2174*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2175*9880d681SAndroid Build Coastguard Worker}
2176*9880d681SAndroid Build Coastguard Worker
2177*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rrkz(<8 x i64> %a, <8 x i64> %b, i8 %mask) {
2178*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rrkz:
2179*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm1, %zmm0, %zmm0 {%k1} {z}
2182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2183*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask)
2184*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2185*9880d681SAndroid Build Coastguard Worker}
2186*9880d681SAndroid Build Coastguard Worker
2187*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rm(<8 x i64> %a, <8 x i64>* %ptr_b) {
2188*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rm:
2189*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq (%rdi), %zmm0, %zmm0
2191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2192*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr_b
2193*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
2194*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2195*9880d681SAndroid Build Coastguard Worker}
2196*9880d681SAndroid Build Coastguard Worker
2197*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmk(<8 x i64> %a, <8 x i64>* %ptr_b, <8 x i64> %passThru, i8 %mask) {
2198*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmk:
2199*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq (%rdi), %zmm0, %zmm1 {%k1}
2202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2204*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr_b
2205*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask)
2206*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2207*9880d681SAndroid Build Coastguard Worker}
2208*9880d681SAndroid Build Coastguard Worker
2209*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmkz(<8 x i64> %a, <8 x i64>* %ptr_b, i8 %mask) {
2210*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmkz:
2211*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq (%rdi), %zmm0, %zmm0 {%k1} {z}
2214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2215*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr_b
2216*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask)
2217*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2218*9880d681SAndroid Build Coastguard Worker}
2219*9880d681SAndroid Build Coastguard Worker
2220*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmb(<8 x i64> %a, i64* %ptr_b) {
2221*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmb:
2222*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq (%rdi){1to8}, %zmm0, %zmm0
2224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2225*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2226*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2227*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2228*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
2229*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2230*9880d681SAndroid Build Coastguard Worker}
2231*9880d681SAndroid Build Coastguard Worker
2232*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmbk(<8 x i64> %a, i64* %ptr_b, <8 x i64> %passThru, i8 %mask) {
2233*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmbk:
2234*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq (%rdi){1to8}, %zmm0, %zmm1 {%k1}
2237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2239*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2240*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2241*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2242*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask)
2243*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2244*9880d681SAndroid Build Coastguard Worker}
2245*9880d681SAndroid Build Coastguard Worker
2246*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmbkz(<8 x i64> %a, i64* %ptr_b, i8 %mask) {
2247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmbkz:
2248*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z}
2251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2252*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2253*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2254*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2255*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask)
2256*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2257*9880d681SAndroid Build Coastguard Worker}
2258*9880d681SAndroid Build Coastguard Worker
2259*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
2260*9880d681SAndroid Build Coastguard Worker
2261*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rr(<8 x i64> %a, <8 x i64> %b) {
2262*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rr:
2263*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq %zmm1, %zmm0, %zmm0
2265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2266*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
2267*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2268*9880d681SAndroid Build Coastguard Worker}
2269*9880d681SAndroid Build Coastguard Worker
2270*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rrk(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) {
2271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rrk:
2272*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq %zmm1, %zmm0, %zmm2 {%k1}
2275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2277*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask)
2278*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2279*9880d681SAndroid Build Coastguard Worker}
2280*9880d681SAndroid Build Coastguard Worker
2281*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rrkz(<8 x i64> %a, <8 x i64> %b, i8 %mask) {
2282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rrkz:
2283*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq %zmm1, %zmm0, %zmm0 {%k1} {z}
2286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2287*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask)
2288*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2289*9880d681SAndroid Build Coastguard Worker}
2290*9880d681SAndroid Build Coastguard Worker
2291*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rm(<8 x i64> %a, <8 x i64>* %ptr_b) {
2292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rm:
2293*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq (%rdi), %zmm0, %zmm0
2295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2296*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr_b
2297*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
2298*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2299*9880d681SAndroid Build Coastguard Worker}
2300*9880d681SAndroid Build Coastguard Worker
2301*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmk(<8 x i64> %a, <8 x i64>* %ptr_b, <8 x i64> %passThru, i8 %mask) {
2302*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmk:
2303*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq (%rdi), %zmm0, %zmm1 {%k1}
2306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2308*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr_b
2309*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask)
2310*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2311*9880d681SAndroid Build Coastguard Worker}
2312*9880d681SAndroid Build Coastguard Worker
2313*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmkz(<8 x i64> %a, <8 x i64>* %ptr_b, i8 %mask) {
2314*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmkz:
2315*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq (%rdi), %zmm0, %zmm0 {%k1} {z}
2318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2319*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr_b
2320*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask)
2321*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2322*9880d681SAndroid Build Coastguard Worker}
2323*9880d681SAndroid Build Coastguard Worker
2324*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmb(<8 x i64> %a, i64* %ptr_b) {
2325*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmb:
2326*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq (%rdi){1to8}, %zmm0, %zmm0
2328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2329*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2330*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2331*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2332*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
2333*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2334*9880d681SAndroid Build Coastguard Worker}
2335*9880d681SAndroid Build Coastguard Worker
2336*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmbk(<8 x i64> %a, i64* %ptr_b, <8 x i64> %passThru, i8 %mask) {
2337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmbk:
2338*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq (%rdi){1to8}, %zmm0, %zmm1 {%k1}
2341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2343*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2344*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2345*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2346*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask)
2347*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2348*9880d681SAndroid Build Coastguard Worker}
2349*9880d681SAndroid Build Coastguard Worker
2350*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmbkz(<8 x i64> %a, i64* %ptr_b, i8 %mask) {
2351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmbkz:
2352*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubq (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z}
2355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2356*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2357*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2358*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2359*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask)
2360*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2361*9880d681SAndroid Build Coastguard Worker}
2362*9880d681SAndroid Build Coastguard Worker
2363*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
2364*9880d681SAndroid Build Coastguard Worker
2365*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rr(<16 x i32> %a, <16 x i32> %b) {
2366*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rr:
2367*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuldq %zmm1, %zmm0, %zmm0
2369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2370*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1)
2371*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2372*9880d681SAndroid Build Coastguard Worker}
2373*9880d681SAndroid Build Coastguard Worker
2374*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rrk(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) {
2375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rrk:
2376*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2377*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuldq %zmm1, %zmm0, %zmm2 {%k1}
2379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2381*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask)
2382*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2383*9880d681SAndroid Build Coastguard Worker}
2384*9880d681SAndroid Build Coastguard Worker
2385*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rrkz(<16 x i32> %a, <16 x i32> %b, i8 %mask) {
2386*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rrkz:
2387*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuldq %zmm1, %zmm0, %zmm0 {%k1} {z}
2390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2391*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask)
2392*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2393*9880d681SAndroid Build Coastguard Worker}
2394*9880d681SAndroid Build Coastguard Worker
2395*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rm(<16 x i32> %a, <16 x i32>* %ptr_b) {
2396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rm:
2397*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuldq (%rdi), %zmm0, %zmm0
2399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2400*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2401*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1)
2402*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2403*9880d681SAndroid Build Coastguard Worker}
2404*9880d681SAndroid Build Coastguard Worker
2405*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmk(<16 x i32> %a, <16 x i32>* %ptr_b, <8 x i64> %passThru, i8 %mask) {
2406*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmk:
2407*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuldq (%rdi), %zmm0, %zmm1 {%k1}
2410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2412*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2413*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask)
2414*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2415*9880d681SAndroid Build Coastguard Worker}
2416*9880d681SAndroid Build Coastguard Worker
2417*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmkz(<16 x i32> %a, <16 x i32>* %ptr_b, i8 %mask) {
2418*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmkz:
2419*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2421*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuldq (%rdi), %zmm0, %zmm0 {%k1} {z}
2422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2423*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2424*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask)
2425*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2426*9880d681SAndroid Build Coastguard Worker}
2427*9880d681SAndroid Build Coastguard Worker
2428*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmb(<16 x i32> %a, i64* %ptr_b) {
2429*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmb:
2430*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuldq (%rdi){1to8}, %zmm0, %zmm0
2432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2433*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2434*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2435*9880d681SAndroid Build Coastguard Worker  %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2436*9880d681SAndroid Build Coastguard Worker  %b = bitcast <8 x i64> %b64 to <16 x i32>
2437*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1)
2438*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2439*9880d681SAndroid Build Coastguard Worker}
2440*9880d681SAndroid Build Coastguard Worker
2441*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmbk(<16 x i32> %a, i64* %ptr_b, <8 x i64> %passThru, i8 %mask) {
2442*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmbk:
2443*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuldq (%rdi){1to8}, %zmm0, %zmm1 {%k1}
2446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2448*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2449*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2450*9880d681SAndroid Build Coastguard Worker  %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2451*9880d681SAndroid Build Coastguard Worker  %b = bitcast <8 x i64> %b64 to <16 x i32>
2452*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask)
2453*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2454*9880d681SAndroid Build Coastguard Worker}
2455*9880d681SAndroid Build Coastguard Worker
2456*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmbkz(<16 x i32> %a, i64* %ptr_b, i8 %mask) {
2457*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmbkz:
2458*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuldq (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z}
2461*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2462*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2463*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2464*9880d681SAndroid Build Coastguard Worker  %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2465*9880d681SAndroid Build Coastguard Worker  %b = bitcast <8 x i64> %b64 to <16 x i32>
2466*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask)
2467*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2468*9880d681SAndroid Build Coastguard Worker}
2469*9880d681SAndroid Build Coastguard Worker
2470*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32>, <16 x i32>, <8 x i64>, i8)
2471*9880d681SAndroid Build Coastguard Worker
2472*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rr(<16 x i32> %a, <16 x i32> %b) {
2473*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rr:
2474*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuludq %zmm1, %zmm0, %zmm0
2476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2477*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1)
2478*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2479*9880d681SAndroid Build Coastguard Worker}
2480*9880d681SAndroid Build Coastguard Worker
2481*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rrk(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) {
2482*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rrk:
2483*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2484*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2485*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuludq %zmm1, %zmm0, %zmm2 {%k1}
2486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2488*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask)
2489*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2490*9880d681SAndroid Build Coastguard Worker}
2491*9880d681SAndroid Build Coastguard Worker
2492*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rrkz(<16 x i32> %a, <16 x i32> %b, i8 %mask) {
2493*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rrkz:
2494*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuludq %zmm1, %zmm0, %zmm0 {%k1} {z}
2497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2498*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask)
2499*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2500*9880d681SAndroid Build Coastguard Worker}
2501*9880d681SAndroid Build Coastguard Worker
2502*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rm(<16 x i32> %a, <16 x i32>* %ptr_b) {
2503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rm:
2504*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuludq (%rdi), %zmm0, %zmm0
2506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2507*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2508*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1)
2509*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2510*9880d681SAndroid Build Coastguard Worker}
2511*9880d681SAndroid Build Coastguard Worker
2512*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmk(<16 x i32> %a, <16 x i32>* %ptr_b, <8 x i64> %passThru, i8 %mask) {
2513*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmk:
2514*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuludq (%rdi), %zmm0, %zmm1 {%k1}
2517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2518*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2519*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2520*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask)
2521*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2522*9880d681SAndroid Build Coastguard Worker}
2523*9880d681SAndroid Build Coastguard Worker
2524*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmkz(<16 x i32> %a, <16 x i32>* %ptr_b, i8 %mask) {
2525*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmkz:
2526*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2528*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuludq (%rdi), %zmm0, %zmm0 {%k1} {z}
2529*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2530*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2531*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask)
2532*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2533*9880d681SAndroid Build Coastguard Worker}
2534*9880d681SAndroid Build Coastguard Worker
2535*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmb(<16 x i32> %a, i64* %ptr_b) {
2536*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmb:
2537*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuludq (%rdi){1to8}, %zmm0, %zmm0
2539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2540*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2541*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2542*9880d681SAndroid Build Coastguard Worker  %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2543*9880d681SAndroid Build Coastguard Worker  %b = bitcast <8 x i64> %b64 to <16 x i32>
2544*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1)
2545*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2546*9880d681SAndroid Build Coastguard Worker}
2547*9880d681SAndroid Build Coastguard Worker
2548*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmbk(<16 x i32> %a, i64* %ptr_b, <8 x i64> %passThru, i8 %mask) {
2549*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmbk:
2550*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2551*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2552*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuludq (%rdi){1to8}, %zmm0, %zmm1 {%k1}
2553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2554*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2555*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2556*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2557*9880d681SAndroid Build Coastguard Worker  %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2558*9880d681SAndroid Build Coastguard Worker  %b = bitcast <8 x i64> %b64 to <16 x i32>
2559*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask)
2560*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2561*9880d681SAndroid Build Coastguard Worker}
2562*9880d681SAndroid Build Coastguard Worker
2563*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmbkz(<16 x i32> %a, i64* %ptr_b, i8 %mask) {
2564*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmbkz:
2565*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2566*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmuludq (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z}
2568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2569*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
2570*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
2571*9880d681SAndroid Build Coastguard Worker  %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
2572*9880d681SAndroid Build Coastguard Worker  %b = bitcast <8 x i64> %b64 to <16 x i32>
2573*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask)
2574*9880d681SAndroid Build Coastguard Worker  ret < 8 x i64> %res
2575*9880d681SAndroid Build Coastguard Worker}
2576*9880d681SAndroid Build Coastguard Worker
2577*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32>, <16 x i32>, <8 x i64>, i8)
2578*9880d681SAndroid Build Coastguard Worker
2579*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rr_512(<16 x i32> %a, <16 x i32> %b) {
2580*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rr_512:
2581*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2582*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulld %zmm1, %zmm0, %zmm0
2583*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2584*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1)
2585*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
2586*9880d681SAndroid Build Coastguard Worker}
2587*9880d681SAndroid Build Coastguard Worker
2588*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rrk_512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) {
2589*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rrk_512:
2590*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2592*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulld %zmm1, %zmm0, %zmm2 {%k1}
2593*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2594*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2595*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask)
2596*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2597*9880d681SAndroid Build Coastguard Worker}
2598*9880d681SAndroid Build Coastguard Worker
2599*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rrkz_512(<16 x i32> %a, <16 x i32> %b, i16 %mask) {
2600*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rrkz_512:
2601*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2603*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulld %zmm1, %zmm0, %zmm0 {%k1} {z}
2604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2605*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask)
2606*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2607*9880d681SAndroid Build Coastguard Worker}
2608*9880d681SAndroid Build Coastguard Worker
2609*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rm_512(<16 x i32> %a, <16 x i32>* %ptr_b) {
2610*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rm_512:
2611*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulld (%rdi), %zmm0, %zmm0
2613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2614*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2615*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1)
2616*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2617*9880d681SAndroid Build Coastguard Worker}
2618*9880d681SAndroid Build Coastguard Worker
2619*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmk_512(<16 x i32> %a, <16 x i32>* %ptr_b, <16 x i32> %passThru, i16 %mask) {
2620*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmk_512:
2621*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2622*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulld (%rdi), %zmm0, %zmm1 {%k1}
2624*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2625*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2626*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2627*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask)
2628*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2629*9880d681SAndroid Build Coastguard Worker}
2630*9880d681SAndroid Build Coastguard Worker
2631*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmkz_512(<16 x i32> %a, <16 x i32>* %ptr_b, i16 %mask) {
2632*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmkz_512:
2633*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulld (%rdi), %zmm0, %zmm0 {%k1} {z}
2636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2637*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
2638*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask)
2639*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2640*9880d681SAndroid Build Coastguard Worker}
2641*9880d681SAndroid Build Coastguard Worker
2642*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmb_512(<16 x i32> %a, i32* %ptr_b) {
2643*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmb_512:
2644*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulld (%rdi){1to16}, %zmm0, %zmm0
2646*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2647*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2648*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
2649*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
2650*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1)
2651*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2652*9880d681SAndroid Build Coastguard Worker}
2653*9880d681SAndroid Build Coastguard Worker
2654*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmbk_512(<16 x i32> %a, i32* %ptr_b, <16 x i32> %passThru, i16 %mask) {
2655*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmbk_512:
2656*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2657*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2658*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulld (%rdi){1to16}, %zmm0, %zmm1 {%k1}
2659*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
2660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2661*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2662*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
2663*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
2664*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask)
2665*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2666*9880d681SAndroid Build Coastguard Worker}
2667*9880d681SAndroid Build Coastguard Worker
2668*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmbkz_512(<16 x i32> %a, i32* %ptr_b, i16 %mask) {
2669*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmbkz_512:
2670*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
2672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulld (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z}
2673*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2674*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2675*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
2676*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
2677*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask)
2678*9880d681SAndroid Build Coastguard Worker  ret < 16 x i32> %res
2679*9880d681SAndroid Build Coastguard Worker}
2680*9880d681SAndroid Build Coastguard Worker
2681*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
2682*9880d681SAndroid Build Coastguard Worker
2683*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2684*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_rn_sae:
2685*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2686*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2687*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {rn-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
2688*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2689*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 0)
2690*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2691*9880d681SAndroid Build Coastguard Worker}
2692*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2693*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_rd_sae:
2694*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2695*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {rd-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
2697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2698*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 1)
2699*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2700*9880d681SAndroid Build Coastguard Worker}
2701*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2702*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_ru_sae:
2703*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2704*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2705*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {ru-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
2706*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2707*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 2)
2708*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2709*9880d681SAndroid Build Coastguard Worker}
2710*9880d681SAndroid Build Coastguard Worker
2711*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2712*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_rz_sae:
2713*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
2716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2717*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 3)
2718*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2719*9880d681SAndroid Build Coastguard Worker}
2720*9880d681SAndroid Build Coastguard Worker
2721*9880d681SAndroid Build Coastguard Worker
2722*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2723*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_current:
2724*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2725*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2726*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm1, %zmm0, %zmm0 {%k1} {z}
2727*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2728*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 4)
2729*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2730*9880d681SAndroid Build Coastguard Worker}
2731*9880d681SAndroid Build Coastguard Worker
2732*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2733*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_rn_sae:
2734*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2735*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2736*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2739*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 0)
2740*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2741*9880d681SAndroid Build Coastguard Worker}
2742*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2743*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_rd_sae:
2744*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {rd-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2749*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 1)
2750*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2751*9880d681SAndroid Build Coastguard Worker}
2752*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2753*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_ru_sae:
2754*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2756*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2757*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2758*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2759*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 2)
2760*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2761*9880d681SAndroid Build Coastguard Worker}
2762*9880d681SAndroid Build Coastguard Worker
2763*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2764*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_rz_sae:
2765*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2766*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2767*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2768*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2769*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2770*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 3)
2771*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2772*9880d681SAndroid Build Coastguard Worker}
2773*9880d681SAndroid Build Coastguard Worker
2774*9880d681SAndroid Build Coastguard Worker
2775*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2776*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_current:
2777*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2778*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2779*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm1, %zmm0, %zmm2 {%k1}
2780*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2781*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2782*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4)
2783*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2784*9880d681SAndroid Build Coastguard Worker}
2785*9880d681SAndroid Build Coastguard Worker
2786*9880d681SAndroid Build Coastguard Worker
2787*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2788*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_rn_sae:
2789*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {rn-sae}, %zmm1, %zmm0, %zmm0
2791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2792*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 0)
2793*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2794*9880d681SAndroid Build Coastguard Worker}
2795*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2796*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_rd_sae:
2797*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2798*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {rd-sae}, %zmm1, %zmm0, %zmm0
2799*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2800*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 1)
2801*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2802*9880d681SAndroid Build Coastguard Worker}
2803*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2804*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_ru_sae:
2805*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2806*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {ru-sae}, %zmm1, %zmm0, %zmm0
2807*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2808*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 2)
2809*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2810*9880d681SAndroid Build Coastguard Worker}
2811*9880d681SAndroid Build Coastguard Worker
2812*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2813*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_rz_sae:
2814*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps {rz-sae}, %zmm1, %zmm0, %zmm0
2816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2817*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 3)
2818*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2819*9880d681SAndroid Build Coastguard Worker}
2820*9880d681SAndroid Build Coastguard Worker
2821*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2822*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_current:
2823*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2824*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm1, %zmm0, %zmm0
2825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2826*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4)
2827*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2828*9880d681SAndroid Build Coastguard Worker}
2829*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
2830*9880d681SAndroid Build Coastguard Worker
2831*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2832*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_rn_sae:
2833*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2834*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2838*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 0)
2839*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2840*9880d681SAndroid Build Coastguard Worker}
2841*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2842*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_rd_sae:
2843*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2844*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2845*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {rd-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2846*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2847*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2848*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 1)
2849*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2850*9880d681SAndroid Build Coastguard Worker}
2851*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2852*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_ru_sae:
2853*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2854*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2855*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2858*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 2)
2859*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2860*9880d681SAndroid Build Coastguard Worker}
2861*9880d681SAndroid Build Coastguard Worker
2862*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2863*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_rz_sae:
2864*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2865*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2866*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2867*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2868*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2869*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 3)
2870*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2871*9880d681SAndroid Build Coastguard Worker}
2872*9880d681SAndroid Build Coastguard Worker
2873*9880d681SAndroid Build Coastguard Worker
2874*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2875*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_current:
2876*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps %zmm1, %zmm0, %zmm2 {%k1}
2879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2881*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4)
2882*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2883*9880d681SAndroid Build Coastguard Worker}
2884*9880d681SAndroid Build Coastguard Worker
2885*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2886*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_rn_sae:
2887*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2888*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {rn-sae}, %zmm1, %zmm0, %zmm0
2889*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2890*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 0)
2891*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2892*9880d681SAndroid Build Coastguard Worker}
2893*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2894*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_rd_sae:
2895*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2896*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {rd-sae}, %zmm1, %zmm0, %zmm0
2897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2898*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 1)
2899*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2900*9880d681SAndroid Build Coastguard Worker}
2901*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2902*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_ru_sae:
2903*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2904*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {ru-sae}, %zmm1, %zmm0, %zmm0
2905*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2906*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 2)
2907*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2908*9880d681SAndroid Build Coastguard Worker}
2909*9880d681SAndroid Build Coastguard Worker
2910*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2911*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_rz_sae:
2912*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2913*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps {rz-sae}, %zmm1, %zmm0, %zmm0
2914*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2915*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 3)
2916*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2917*9880d681SAndroid Build Coastguard Worker}
2918*9880d681SAndroid Build Coastguard Worker
2919*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2920*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_current:
2921*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2922*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vsubps %zmm1, %zmm0, %zmm0
2923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2924*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4)
2925*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2926*9880d681SAndroid Build Coastguard Worker}
2927*9880d681SAndroid Build Coastguard Worker
2928*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2929*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_rn_sae:
2930*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2931*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2932*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {rn-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
2933*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2934*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 0)
2935*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2936*9880d681SAndroid Build Coastguard Worker}
2937*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2938*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_rd_sae:
2939*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2940*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {rd-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
2942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2943*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 1)
2944*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2945*9880d681SAndroid Build Coastguard Worker}
2946*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2947*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_ru_sae:
2948*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2949*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2950*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {ru-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
2951*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2952*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 2)
2953*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2954*9880d681SAndroid Build Coastguard Worker}
2955*9880d681SAndroid Build Coastguard Worker
2956*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2957*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_rz_sae:
2958*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
2961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2962*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 3)
2963*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2964*9880d681SAndroid Build Coastguard Worker}
2965*9880d681SAndroid Build Coastguard Worker
2966*9880d681SAndroid Build Coastguard Worker
2967*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
2968*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_current:
2969*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2970*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2971*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps %zmm1, %zmm0, %zmm0 {%k1} {z}
2972*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2973*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 4)
2974*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2975*9880d681SAndroid Build Coastguard Worker}
2976*9880d681SAndroid Build Coastguard Worker
2977*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2978*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_rn_sae:
2979*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2981*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2984*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 0)
2985*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2986*9880d681SAndroid Build Coastguard Worker}
2987*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2988*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_rd_sae:
2989*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
2991*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {rd-sae}, %zmm1, %zmm0, %zmm2 {%k1}
2992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
2993*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
2994*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 1)
2995*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
2996*9880d681SAndroid Build Coastguard Worker}
2997*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
2998*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_ru_sae:
2999*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1}
3002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3003*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3004*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 2)
3005*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3006*9880d681SAndroid Build Coastguard Worker}
3007*9880d681SAndroid Build Coastguard Worker
3008*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
3009*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_rz_sae:
3010*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3011*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3012*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1}
3013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3015*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 3)
3016*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3017*9880d681SAndroid Build Coastguard Worker}
3018*9880d681SAndroid Build Coastguard Worker
3019*9880d681SAndroid Build Coastguard Worker
3020*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
3021*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_current:
3022*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3023*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3024*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps %zmm1, %zmm0, %zmm2 {%k1}
3025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3027*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4)
3028*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3029*9880d681SAndroid Build Coastguard Worker}
3030*9880d681SAndroid Build Coastguard Worker
3031*9880d681SAndroid Build Coastguard Worker
3032*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3033*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_rn_sae:
3034*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3035*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {rn-sae}, %zmm1, %zmm0, %zmm0
3036*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3037*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 0)
3038*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3039*9880d681SAndroid Build Coastguard Worker}
3040*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3041*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_rd_sae:
3042*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {rd-sae}, %zmm1, %zmm0, %zmm0
3044*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3045*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 1)
3046*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3047*9880d681SAndroid Build Coastguard Worker}
3048*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3049*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_ru_sae:
3050*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {ru-sae}, %zmm1, %zmm0, %zmm0
3052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3053*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 2)
3054*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3055*9880d681SAndroid Build Coastguard Worker}
3056*9880d681SAndroid Build Coastguard Worker
3057*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3058*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_rz_sae:
3059*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3060*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps {rz-sae}, %zmm1, %zmm0, %zmm0
3061*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3062*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 3)
3063*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3064*9880d681SAndroid Build Coastguard Worker}
3065*9880d681SAndroid Build Coastguard Worker
3066*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3067*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_current:
3068*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdivps %zmm1, %zmm0, %zmm0
3070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3071*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4)
3072*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3073*9880d681SAndroid Build Coastguard Worker}
3074*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
3075*9880d681SAndroid Build Coastguard Worker
3076*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_min_round_ps_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3077*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_min_round_ps_sae:
3078*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3079*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3080*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vminps {sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
3081*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3082*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 8)
3083*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3084*9880d681SAndroid Build Coastguard Worker}
3085*9880d681SAndroid Build Coastguard Worker
3086*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_min_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3087*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_min_round_ps_current:
3088*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3089*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3090*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vminps %zmm1, %zmm0, %zmm0 {%k1} {z}
3091*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3092*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 4)
3093*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3094*9880d681SAndroid Build Coastguard Worker}
3095*9880d681SAndroid Build Coastguard Worker
3096*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_min_round_ps_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
3097*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_min_round_ps_sae:
3098*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vminps {sae}, %zmm1, %zmm0, %zmm2 {%k1}
3101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3103*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 8)
3104*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3105*9880d681SAndroid Build Coastguard Worker}
3106*9880d681SAndroid Build Coastguard Worker
3107*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_min_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
3108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_min_round_ps_current:
3109*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vminps %zmm1, %zmm0, %zmm2 {%k1}
3112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3114*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4)
3115*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3116*9880d681SAndroid Build Coastguard Worker}
3117*9880d681SAndroid Build Coastguard Worker
3118*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_min_round_ps_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_min_round_ps_sae:
3120*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vminps {sae}, %zmm1, %zmm0, %zmm0
3122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3123*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 8)
3124*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3125*9880d681SAndroid Build Coastguard Worker}
3126*9880d681SAndroid Build Coastguard Worker
3127*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_min_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3128*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_min_round_ps_current:
3129*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vminps %zmm1, %zmm0, %zmm0
3131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3132*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4)
3133*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3134*9880d681SAndroid Build Coastguard Worker}
3135*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
3136*9880d681SAndroid Build Coastguard Worker
3137*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_max_round_ps_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_max_round_ps_sae:
3139*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxps {sae}, %zmm1, %zmm0, %zmm0 {%k1} {z}
3142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3143*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 8)
3144*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3145*9880d681SAndroid Build Coastguard Worker}
3146*9880d681SAndroid Build Coastguard Worker
3147*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_max_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3148*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_max_round_ps_current:
3149*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxps %zmm1, %zmm0, %zmm0 {%k1} {z}
3152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3153*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 4)
3154*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3155*9880d681SAndroid Build Coastguard Worker}
3156*9880d681SAndroid Build Coastguard Worker
3157*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_max_round_ps_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
3158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_max_round_ps_sae:
3159*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxps {sae}, %zmm1, %zmm0, %zmm2 {%k1}
3162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3164*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 8)
3165*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3166*9880d681SAndroid Build Coastguard Worker}
3167*9880d681SAndroid Build Coastguard Worker
3168*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_max_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) {
3169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_max_round_ps_current:
3170*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxps %zmm1, %zmm0, %zmm2 {%k1}
3173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3175*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4)
3176*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3177*9880d681SAndroid Build Coastguard Worker}
3178*9880d681SAndroid Build Coastguard Worker
3179*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_max_round_ps_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3180*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_max_round_ps_sae:
3181*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxps {sae}, %zmm1, %zmm0, %zmm0
3183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3184*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 8)
3185*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3186*9880d681SAndroid Build Coastguard Worker}
3187*9880d681SAndroid Build Coastguard Worker
3188*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_max_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) {
3189*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_max_round_ps_current:
3190*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxps %zmm1, %zmm0, %zmm0
3192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3193*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4)
3194*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
3195*9880d681SAndroid Build Coastguard Worker}
3196*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
3197*9880d681SAndroid Build Coastguard Worker
3198*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>, <4 x float>, <4 x float>, i8, i32) nounwind readnone
3199*9880d681SAndroid Build Coastguard Worker
3200*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_rn(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
3201*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_rn:
3202*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddss {rn-sae}, %xmm1, %xmm0, %xmm2 {%k1}
3206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3208*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 0)
3209*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3210*9880d681SAndroid Build Coastguard Worker}
3211*9880d681SAndroid Build Coastguard Worker
3212*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_rd(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
3213*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_rd:
3214*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddss {rd-sae}, %xmm1, %xmm0, %xmm2 {%k1}
3218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3220*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 1)
3221*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3222*9880d681SAndroid Build Coastguard Worker}
3223*9880d681SAndroid Build Coastguard Worker
3224*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_ru(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
3225*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_ru:
3226*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddss {ru-sae}, %xmm1, %xmm0, %xmm2 {%k1}
3230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3232*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 2)
3233*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3234*9880d681SAndroid Build Coastguard Worker}
3235*9880d681SAndroid Build Coastguard Worker
3236*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_rz(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
3237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_rz:
3238*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddss {rz-sae}, %xmm1, %xmm0, %xmm2 {%k1}
3242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3244*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 3)
3245*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3246*9880d681SAndroid Build Coastguard Worker}
3247*9880d681SAndroid Build Coastguard Worker
3248*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_current(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
3249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_current:
3250*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddss %xmm1, %xmm0, %xmm2 {%k1}
3254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3256*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 4)
3257*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3258*9880d681SAndroid Build Coastguard Worker}
3259*9880d681SAndroid Build Coastguard Worker
3260*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_maskz_add_ss_rn(<4 x float> %a0, <4 x float> %a1, i8 %mask) {
3261*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_add_ss_rn:
3262*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddss {rn-sae}, %xmm1, %xmm0, %xmm0 {%k1} {z}
3266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3267*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 0)
3268*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3269*9880d681SAndroid Build Coastguard Worker}
3270*9880d681SAndroid Build Coastguard Worker
3271*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_add_ss_rn(<4 x float> %a0, <4 x float> %a1) {
3272*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_add_ss_rn:
3273*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddss {rn-sae}, %xmm1, %xmm0, %xmm0
3275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3276*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 0)
3277*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3278*9880d681SAndroid Build Coastguard Worker}
3279*9880d681SAndroid Build Coastguard Worker
3280*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>, <2 x double>, <2 x double>, i8, i32) nounwind readnone
3281*9880d681SAndroid Build Coastguard Worker
3282*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_rn(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
3283*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_rn:
3284*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddsd {rn-sae}, %xmm1, %xmm0, %xmm2 {%k1}
3288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3290*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 0)
3291*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3292*9880d681SAndroid Build Coastguard Worker}
3293*9880d681SAndroid Build Coastguard Worker
3294*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_rd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
3295*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_rd:
3296*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddsd {rd-sae}, %xmm1, %xmm0, %xmm2 {%k1}
3300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3302*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 1)
3303*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3304*9880d681SAndroid Build Coastguard Worker}
3305*9880d681SAndroid Build Coastguard Worker
3306*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_ru(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
3307*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_ru:
3308*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3309*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3310*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddsd {ru-sae}, %xmm1, %xmm0, %xmm2 {%k1}
3312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3314*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 2)
3315*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3316*9880d681SAndroid Build Coastguard Worker}
3317*9880d681SAndroid Build Coastguard Worker
3318*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_rz(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
3319*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_rz:
3320*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddsd {rz-sae}, %xmm1, %xmm0, %xmm2 {%k1}
3324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3326*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 3)
3327*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3328*9880d681SAndroid Build Coastguard Worker}
3329*9880d681SAndroid Build Coastguard Worker
3330*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_current(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
3331*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_current:
3332*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3333*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3334*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddsd %xmm1, %xmm0, %xmm2 {%k1}
3336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3338*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 4)
3339*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3340*9880d681SAndroid Build Coastguard Worker}
3341*9880d681SAndroid Build Coastguard Worker
3342*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_maskz_add_sd_rn(<2 x double> %a0, <2 x double> %a1, i8 %mask) {
3343*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_add_sd_rn:
3344*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3345*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3346*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3347*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddsd {rn-sae}, %xmm1, %xmm0, %xmm0 {%k1} {z}
3348*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3349*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 0)
3350*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3351*9880d681SAndroid Build Coastguard Worker}
3352*9880d681SAndroid Build Coastguard Worker
3353*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_add_sd_rn(<2 x double> %a0, <2 x double> %a1) {
3354*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_add_sd_rn:
3355*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddsd {rn-sae}, %xmm1, %xmm0, %xmm0
3357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3358*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 0)
3359*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3360*9880d681SAndroid Build Coastguard Worker}
3361*9880d681SAndroid Build Coastguard Worker
3362*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>, <4 x float>, <4 x float>, i8, i32) nounwind readnone
3363*9880d681SAndroid Build Coastguard Worker
3364*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_max_ss_sae(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
3365*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_max_ss_sae:
3366*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxss {sae}, %xmm1, %xmm0, %xmm2 {%k1}
3370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3372*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 8)
3373*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3374*9880d681SAndroid Build Coastguard Worker}
3375*9880d681SAndroid Build Coastguard Worker
3376*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_maskz_max_ss_sae(<4 x float> %a0, <4 x float> %a1, i8 %mask) {
3377*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_max_ss_sae:
3378*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxss {sae}, %xmm1, %xmm0, %xmm0 {%k1} {z}
3382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3383*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 8)
3384*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3385*9880d681SAndroid Build Coastguard Worker}
3386*9880d681SAndroid Build Coastguard Worker
3387*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_max_ss_sae(<4 x float> %a0, <4 x float> %a1) {
3388*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_max_ss_sae:
3389*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxss {sae}, %xmm1, %xmm0, %xmm0
3391*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3392*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 8)
3393*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3394*9880d681SAndroid Build Coastguard Worker}
3395*9880d681SAndroid Build Coastguard Worker
3396*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_max_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
3397*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_max_ss:
3398*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3401*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxss %xmm1, %xmm0, %xmm2 {%k1}
3402*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3404*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 4)
3405*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3406*9880d681SAndroid Build Coastguard Worker}
3407*9880d681SAndroid Build Coastguard Worker
3408*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_maskz_max_ss(<4 x float> %a0, <4 x float> %a1, i8 %mask) {
3409*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_max_ss:
3410*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3412*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxss %xmm1, %xmm0, %xmm0 {%k1} {z}
3414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3415*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 4)
3416*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3417*9880d681SAndroid Build Coastguard Worker}
3418*9880d681SAndroid Build Coastguard Worker
3419*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_max_ss(<4 x float> %a0, <4 x float> %a1) {
3420*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_max_ss:
3421*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxss %xmm1, %xmm0, %xmm0
3423*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3424*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 4)
3425*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3426*9880d681SAndroid Build Coastguard Worker}
3427*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>, <2 x double>, <2 x double>, i8, i32) nounwind readnone
3428*9880d681SAndroid Build Coastguard Worker
3429*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_max_sd_sae(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
3430*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_max_sd_sae:
3431*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxsd {sae}, %xmm1, %xmm0, %xmm2 {%k1}
3435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3437*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 8)
3438*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3439*9880d681SAndroid Build Coastguard Worker}
3440*9880d681SAndroid Build Coastguard Worker
3441*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_maskz_max_sd_sae(<2 x double> %a0, <2 x double> %a1, i8 %mask) {
3442*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_max_sd_sae:
3443*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxsd {sae}, %xmm1, %xmm0, %xmm0 {%k1} {z}
3447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3448*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 8)
3449*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3450*9880d681SAndroid Build Coastguard Worker}
3451*9880d681SAndroid Build Coastguard Worker
3452*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_max_sd_sae(<2 x double> %a0, <2 x double> %a1) {
3453*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_max_sd_sae:
3454*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxsd {sae}, %xmm1, %xmm0, %xmm0
3456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3457*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 8)
3458*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3459*9880d681SAndroid Build Coastguard Worker}
3460*9880d681SAndroid Build Coastguard Worker
3461*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_max_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
3462*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_max_sd:
3463*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3464*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxsd %xmm1, %xmm0, %xmm2 {%k1}
3467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
3468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3469*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 4)
3470*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3471*9880d681SAndroid Build Coastguard Worker}
3472*9880d681SAndroid Build Coastguard Worker
3473*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_maskz_max_sd(<2 x double> %a0, <2 x double> %a1, i8 %mask) {
3474*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_max_sd:
3475*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
3477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxsd %xmm1, %xmm0, %xmm0 {%k1} {z}
3479*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3480*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 4)
3481*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3482*9880d681SAndroid Build Coastguard Worker}
3483*9880d681SAndroid Build Coastguard Worker
3484*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_max_sd(<2 x double> %a0, <2 x double> %a1) {
3485*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_max_sd:
3486*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmaxsd %xmm1, %xmm0, %xmm0
3488*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3489*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 4)
3490*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3491*9880d681SAndroid Build Coastguard Worker}
3492*9880d681SAndroid Build Coastguard Worker
3493*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512_cvtsi2sd32(<2 x double> %a, i32 %b) {
3494*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsi2sd32:
3495*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsi2sdl %edi, {rz-sae}, %xmm0, %xmm0
3497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3498*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.cvtsi2sd32(<2 x double> %a, i32 %b, i32 3) ; <<<2 x double>> [#uses=1]
3499*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3500*9880d681SAndroid Build Coastguard Worker}
3501*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.cvtsi2sd32(<2 x double>, i32, i32) nounwind readnone
3502*9880d681SAndroid Build Coastguard Worker
3503*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512_cvtsi2sd64(<2 x double> %a, i64 %b) {
3504*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsi2sd64:
3505*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsi2sdq %rdi, {rz-sae}, %xmm0, %xmm0
3507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3508*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.cvtsi2sd64(<2 x double> %a, i64 %b, i32 3) ; <<<2 x double>> [#uses=1]
3509*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3510*9880d681SAndroid Build Coastguard Worker}
3511*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.cvtsi2sd64(<2 x double>, i64, i32) nounwind readnone
3512*9880d681SAndroid Build Coastguard Worker
3513*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512_cvtsi2ss32(<4 x float> %a, i32 %b) {
3514*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsi2ss32:
3515*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsi2ssl %edi, {rz-sae}, %xmm0, %xmm0
3517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3518*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.cvtsi2ss32(<4 x float> %a, i32 %b, i32 3) ; <<<4 x float>> [#uses=1]
3519*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3520*9880d681SAndroid Build Coastguard Worker}
3521*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.cvtsi2ss32(<4 x float>, i32, i32) nounwind readnone
3522*9880d681SAndroid Build Coastguard Worker
3523*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512_cvtsi2ss64(<4 x float> %a, i64 %b) {
3524*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsi2ss64:
3525*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsi2ssq %rdi, {rz-sae}, %xmm0, %xmm0
3527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3528*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.cvtsi2ss64(<4 x float> %a, i64 %b, i32 3) ; <<<4 x float>> [#uses=1]
3529*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3530*9880d681SAndroid Build Coastguard Worker}
3531*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.cvtsi2ss64(<4 x float>, i64, i32) nounwind readnone
3532*9880d681SAndroid Build Coastguard Worker
3533*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512__mm_cvt_roundu32_ss (<4 x float> %a, i32 %b)
3534*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvt_roundu32_ss:
3535*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtusi2ssl %edi, {rd-sae}, %xmm0, %xmm0
3537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3538*9880d681SAndroid Build Coastguard Worker{
3539*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float> %a, i32 %b, i32 1) ; <<<4 x float>> [#uses=1]
3540*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3541*9880d681SAndroid Build Coastguard Worker}
3542*9880d681SAndroid Build Coastguard Worker
3543*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512__mm_cvt_roundu32_ss_mem(<4 x float> %a, i32* %ptr)
3544*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvt_roundu32_ss_mem:
3545*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movl (%rdi), %eax
3547*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtusi2ssl %eax, {rd-sae}, %xmm0, %xmm0
3548*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3549*9880d681SAndroid Build Coastguard Worker{
3550*9880d681SAndroid Build Coastguard Worker  %b = load i32, i32* %ptr
3551*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float> %a, i32 %b, i32 1) ; <<<4 x float>> [#uses=1]
3552*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3553*9880d681SAndroid Build Coastguard Worker}
3554*9880d681SAndroid Build Coastguard Worker
3555*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512__mm_cvtu32_ss(<4 x float> %a, i32 %b)
3556*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvtu32_ss:
3557*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtusi2ssl %edi, %xmm0, %xmm0
3559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3560*9880d681SAndroid Build Coastguard Worker{
3561*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float> %a, i32 %b, i32 4) ; <<<4 x float>> [#uses=1]
3562*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3563*9880d681SAndroid Build Coastguard Worker}
3564*9880d681SAndroid Build Coastguard Worker
3565*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512__mm_cvtu32_ss_mem(<4 x float> %a, i32* %ptr)
3566*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvtu32_ss_mem:
3567*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtusi2ssl (%rdi), %xmm0, %xmm0
3569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3570*9880d681SAndroid Build Coastguard Worker{
3571*9880d681SAndroid Build Coastguard Worker  %b = load i32, i32* %ptr
3572*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float> %a, i32 %b, i32 4) ; <<<4 x float>> [#uses=1]
3573*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3574*9880d681SAndroid Build Coastguard Worker}
3575*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float>, i32, i32) nounwind readnone
3576*9880d681SAndroid Build Coastguard Worker
3577*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @_mm_cvt_roundu64_ss (<4 x float> %a, i64 %b)
3578*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: _mm_cvt_roundu64_ss:
3579*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3580*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtusi2ssq %rdi, {rd-sae}, %xmm0, %xmm0
3581*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3582*9880d681SAndroid Build Coastguard Worker{
3583*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.cvtusi642ss(<4 x float> %a, i64 %b, i32 1) ; <<<4 x float>> [#uses=1]
3584*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3585*9880d681SAndroid Build Coastguard Worker}
3586*9880d681SAndroid Build Coastguard Worker
3587*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @_mm_cvtu64_ss(<4 x float> %a, i64 %b)
3588*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: _mm_cvtu64_ss:
3589*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3590*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtusi2ssq %rdi, %xmm0, %xmm0
3591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3592*9880d681SAndroid Build Coastguard Worker{
3593*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.cvtusi642ss(<4 x float> %a, i64 %b, i32 4) ; <<<4 x float>> [#uses=1]
3594*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
3595*9880d681SAndroid Build Coastguard Worker}
3596*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.cvtusi642ss(<4 x float>, i64, i32) nounwind readnone
3597*9880d681SAndroid Build Coastguard Worker
3598*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512_mm_cvtu32_sd(<2 x double> %a, i32 %b)
3599*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mm_cvtu32_sd:
3600*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtusi2sdl %edi, %xmm0, %xmm0
3602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3603*9880d681SAndroid Build Coastguard Worker{
3604*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.cvtusi2sd(<2 x double> %a, i32 %b) ; <<<2 x double>> [#uses=1]
3605*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3606*9880d681SAndroid Build Coastguard Worker}
3607*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.cvtusi2sd(<2 x double>, i32) nounwind readnone
3608*9880d681SAndroid Build Coastguard Worker
3609*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512_mm_cvtu64_sd(<2 x double> %a, i64 %b)
3610*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mm_cvtu64_sd:
3611*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtusi2sdq %rdi, {rd-sae}, %xmm0, %xmm0
3613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3614*9880d681SAndroid Build Coastguard Worker{
3615*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.cvtusi642sd(<2 x double> %a, i64 %b, i32 1) ; <<<2 x double>> [#uses=1]
3616*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3617*9880d681SAndroid Build Coastguard Worker}
3618*9880d681SAndroid Build Coastguard Worker
3619*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512__mm_cvt_roundu64_sd(<2 x double> %a, i64 %b)
3620*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvt_roundu64_sd:
3621*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3622*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtusi2sdq %rdi, %xmm0, %xmm0
3623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3624*9880d681SAndroid Build Coastguard Worker{
3625*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.cvtusi642sd(<2 x double> %a, i64 %b, i32 4) ; <<<2 x double>> [#uses=1]
3626*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
3627*9880d681SAndroid Build Coastguard Worker}
3628*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.cvtusi642sd(<2 x double>, i64, i32) nounwind readnone
3629*9880d681SAndroid Build Coastguard Worker
3630*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_vpmaxq(<8 x i64> %a0, <8 x i64> %a1) {
3631*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vpmaxq:
3632*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm0
3634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3635*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64> %a0, <8 x i64> %a1,
3636*9880d681SAndroid Build Coastguard Worker                    <8 x i64>zeroinitializer, i8 -1)
3637*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
3638*9880d681SAndroid Build Coastguard Worker}
3639*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
3640*9880d681SAndroid Build Coastguard Worker
3641*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_vpminud(<16 x i32> %a0, <16 x i32> %a1) {
3642*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vpminud:
3643*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3644*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminud %zmm1, %zmm0, %zmm0
3645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3646*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32> %a0, <16 x i32> %a1,
3647*9880d681SAndroid Build Coastguard Worker                    <16 x i32>zeroinitializer, i16 -1)
3648*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
3649*9880d681SAndroid Build Coastguard Worker}
3650*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
3651*9880d681SAndroid Build Coastguard Worker
3652*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_vpmaxsd(<16 x i32> %a0, <16 x i32> %a1) {
3653*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vpmaxsd:
3654*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsd %zmm1, %zmm0, %zmm0
3656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3657*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32> %a0, <16 x i32> %a1,
3658*9880d681SAndroid Build Coastguard Worker                    <16 x i32>zeroinitializer, i16 -1)
3659*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
3660*9880d681SAndroid Build Coastguard Worker}
3661*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
3662*9880d681SAndroid Build Coastguard Worker
3663*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmaxs_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {
3664*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxs_d_512:
3665*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsd %zmm1, %zmm0, %zmm2 {%k1}
3668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsd %zmm1, %zmm0, %zmm0
3669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
3670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3671*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)
3672*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)
3673*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
3674*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
3675*9880d681SAndroid Build Coastguard Worker}
3676*9880d681SAndroid Build Coastguard Worker
3677*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmaxs_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {
3678*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxs_q_512:
3679*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3680*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm2 {%k1}
3682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm0
3683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm2, %zmm0
3684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3685*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)
3686*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)
3687*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
3688*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
3689*9880d681SAndroid Build Coastguard Worker}
3690*9880d681SAndroid Build Coastguard Worker
3691*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmaxu.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
3692*9880d681SAndroid Build Coastguard Worker
3693*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmaxu_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {
3694*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxu_d_512:
3695*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxud %zmm1, %zmm0, %zmm2 {%k1}
3698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxud %zmm1, %zmm0, %zmm0
3699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
3700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3701*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmaxu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)
3702*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmaxu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)
3703*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
3704*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
3705*9880d681SAndroid Build Coastguard Worker}
3706*9880d681SAndroid Build Coastguard Worker
3707*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmaxu.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
3708*9880d681SAndroid Build Coastguard Worker
3709*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmaxu_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {
3710*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxu_q_512:
3711*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm2 {%k1}
3714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm0
3715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm2, %zmm0
3716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3717*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmaxu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)
3718*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmaxu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)
3719*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
3720*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
3721*9880d681SAndroid Build Coastguard Worker}
3722*9880d681SAndroid Build Coastguard Worker
3723*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmins.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
3724*9880d681SAndroid Build Coastguard Worker
3725*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmins_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {
3726*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmins_d_512:
3727*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3728*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3729*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsd %zmm1, %zmm0, %zmm2 {%k1}
3730*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsd %zmm1, %zmm0, %zmm0
3731*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
3732*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3733*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmins.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)
3734*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmins.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)
3735*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
3736*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
3737*9880d681SAndroid Build Coastguard Worker}
3738*9880d681SAndroid Build Coastguard Worker
3739*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmins.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
3740*9880d681SAndroid Build Coastguard Worker
3741*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmins_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {
3742*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmins_q_512:
3743*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsq %zmm1, %zmm0, %zmm2 {%k1}
3746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsq %zmm1, %zmm0, %zmm0
3747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm2, %zmm0
3748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3749*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmins.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)
3750*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmins.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)
3751*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
3752*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
3753*9880d681SAndroid Build Coastguard Worker}
3754*9880d681SAndroid Build Coastguard Worker
3755*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pminu_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {
3756*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pminu_d_512:
3757*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3758*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3759*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminud %zmm1, %zmm0, %zmm2 {%k1}
3760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminud %zmm1, %zmm0, %zmm0
3761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
3762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3763*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)
3764*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)
3765*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
3766*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
3767*9880d681SAndroid Build Coastguard Worker}
3768*9880d681SAndroid Build Coastguard Worker
3769*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pminu.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
3770*9880d681SAndroid Build Coastguard Worker
3771*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pminu_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {
3772*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pminu_q_512:
3773*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3774*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3775*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminuq %zmm1, %zmm0, %zmm2 {%k1}
3776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminuq %zmm1, %zmm0, %zmm0
3777*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm2, %zmm0
3778*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3779*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pminu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)
3780*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pminu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)
3781*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
3782*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
3783*9880d681SAndroid Build Coastguard Worker}
3784*9880d681SAndroid Build Coastguard Worker
3785*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.vpermi2var.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
3786*9880d681SAndroid Build Coastguard Worker
3787*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_vpermi2var_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32>* %x2p, <16 x i32> %x4, i16 %x3) {
3788*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_d_512:
3789*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
3791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3
3792*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2d (%rdi), %zmm0, %zmm3 {%k1}
3793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2d %zmm2, %zmm0, %zmm1
3794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm1, %zmm3, %zmm0
3795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3796*9880d681SAndroid Build Coastguard Worker  %x2 = load <16 x i32>, <16 x i32>* %x2p
3797*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.vpermi2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)
3798*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.vpermi2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x4, i16 -1)
3799*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
3800*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
3801*9880d681SAndroid Build Coastguard Worker}
3802*9880d681SAndroid Build Coastguard Worker
3803*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.vpermi2var.pd.512(<8 x double>, <8 x i64>, <8 x double>, i8)
3804*9880d681SAndroid Build Coastguard Worker
3805*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_vpermi2var_pd_512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3) {
3806*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_pd_512:
3807*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3808*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3809*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3
3810*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2pd %zmm2, %zmm0, %zmm3 {%k1}
3811*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2pd %zmm2, %zmm0, %zmm1
3812*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm1, %zmm3, %zmm0
3813*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3814*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vpermi2var.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3)
3815*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.vpermi2var.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 -1)
3816*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
3817*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
3818*9880d681SAndroid Build Coastguard Worker}
3819*9880d681SAndroid Build Coastguard Worker
3820*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vpermi2var.ps.512(<16 x float>, <16 x i32>, <16 x float>, i16)
3821*9880d681SAndroid Build Coastguard Worker
3822*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_vpermi2var_ps_512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3) {
3823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_ps_512:
3824*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3826*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3
3827*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2ps %zmm2, %zmm0, %zmm3 {%k1}
3828*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2ps %zmm2, %zmm0, %zmm1
3829*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm1, %zmm3, %zmm0
3830*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3831*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vpermi2var.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3)
3832*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.vpermi2var.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 -1)
3833*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
3834*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
3835*9880d681SAndroid Build Coastguard Worker}
3836*9880d681SAndroid Build Coastguard Worker
3837*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.vpermi2var.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
3838*9880d681SAndroid Build Coastguard Worker
3839*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_vpermi2var_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {
3840*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_q_512:
3841*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3842*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3843*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3
3844*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2q %zmm2, %zmm0, %zmm3 {%k1}
3845*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2q %zmm2, %zmm0, %zmm1
3846*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm1, %zmm3, %zmm0
3847*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3848*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.vpermi2var.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)
3849*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.vpermi2var.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)
3850*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
3851*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
3852*9880d681SAndroid Build Coastguard Worker}
3853*9880d681SAndroid Build Coastguard Worker
3854*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.maskz.vpermt2var.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
3855*9880d681SAndroid Build Coastguard Worker
3856*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_maskz_vpermt2var_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32>* %x2p, i16 %x3) {
3857*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_d_512:
3858*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
3860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm2
3861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2d (%rdi), %zmm0, %zmm2 {%k1} {z}
3862*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2d %zmm1, %zmm0, %zmm1
3863*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm1, %zmm2, %zmm0
3864*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3865*9880d681SAndroid Build Coastguard Worker  %x2 = load <16 x i32>, <16 x i32>* %x2p
3866*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.maskz.vpermt2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)
3867*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.maskz.vpermt2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x1, i16 -1)
3868*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
3869*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
3870*9880d681SAndroid Build Coastguard Worker}
3871*9880d681SAndroid Build Coastguard Worker
3872*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.maskz.vpermt2var.pd.512(<8 x i64>, <8 x double>, <8 x double>, i8)
3873*9880d681SAndroid Build Coastguard Worker
3874*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_maskz_vpermt2var_pd_512(<8 x i64> %x0, <8 x double> %x1, double* %x2ptr, i8 %x3) {
3875*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_pd_512:
3876*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
3878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm2
3879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2pd (%rdi){1to8}, %zmm0, %zmm2 {%k1} {z}
3880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2pd %zmm1, %zmm0, %zmm1
3881*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm1, %zmm2, %zmm0
3882*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3883*9880d681SAndroid Build Coastguard Worker  %x2s = load double, double* %x2ptr
3884*9880d681SAndroid Build Coastguard Worker  %x2ins = insertelement <8 x double> undef, double %x2s, i32 0
3885*9880d681SAndroid Build Coastguard Worker  %x2 = shufflevector <8 x double> %x2ins, <8 x double> undef, <8 x i32> zeroinitializer
3886*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.maskz.vpermt2var.pd.512(<8 x i64> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3)
3887*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.maskz.vpermt2var.pd.512(<8 x i64> %x0, <8 x double> %x1, <8 x double> %x1, i8 -1)
3888*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
3889*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
3890*9880d681SAndroid Build Coastguard Worker}
3891*9880d681SAndroid Build Coastguard Worker
3892*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.maskz.vpermt2var.ps.512(<16 x i32>, <16 x float>, <16 x float>, i16)
3893*9880d681SAndroid Build Coastguard Worker
3894*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_maskz_vpermt2var_ps_512(<16 x i32> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3) {
3895*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_ps_512:
3896*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3898*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3
3899*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2ps %zmm2, %zmm0, %zmm3 {%k1} {z}
3900*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2ps %zmm2, %zmm0, %zmm1
3901*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm1, %zmm3, %zmm0
3902*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3903*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.maskz.vpermt2var.ps.512(<16 x i32> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3)
3904*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.maskz.vpermt2var.ps.512(<16 x i32> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1)
3905*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
3906*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
3907*9880d681SAndroid Build Coastguard Worker}
3908*9880d681SAndroid Build Coastguard Worker
3909*9880d681SAndroid Build Coastguard Worker
3910*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.maskz.vpermt2var.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
3911*9880d681SAndroid Build Coastguard Worker
3912*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_maskz_vpermt2var_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {
3913*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_q_512:
3914*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3915*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3916*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3
3917*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2q %zmm2, %zmm0, %zmm3 {%k1} {z}
3918*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2q %zmm2, %zmm0, %zmm1
3919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm1, %zmm3, %zmm0
3920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3921*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.maskz.vpermt2var.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)
3922*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.maskz.vpermt2var.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)
3923*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
3924*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
3925*9880d681SAndroid Build Coastguard Worker}
3926*9880d681SAndroid Build Coastguard Worker
3927*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.vpermt2var.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
3928*9880d681SAndroid Build Coastguard Worker
3929*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_vpermt2var_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {
3930*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermt2var_d_512:
3931*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3932*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3933*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3
3934*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2d %zmm2, %zmm0, %zmm3 {%k1}
3935*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2d %zmm2, %zmm0, %zmm1
3936*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm1, %zmm3, %zmm0
3937*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3938*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.vpermt2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)
3939*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.vpermt2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)
3940*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
3941*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
3942*9880d681SAndroid Build Coastguard Worker}
3943*9880d681SAndroid Build Coastguard Worker
3944*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.scalef.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
3945*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_scalef_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3) {
3946*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_scalef_pd_512:
3947*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3948*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3949*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vscalefpd {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1}
3950*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vscalefpd {rn-sae}, %zmm1, %zmm0, %zmm0
3951*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
3952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3953*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.scalef.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 3)
3954*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.scalef.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
3955*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
3956*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
3957*9880d681SAndroid Build Coastguard Worker}
3958*9880d681SAndroid Build Coastguard Worker
3959*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.scalef.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
3960*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_scalef_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3) {
3961*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_scalef_ps_512:
3962*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vscalefps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1}
3965*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vscalefps {rn-sae}, %zmm1, %zmm0, %zmm0
3966*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm2, %zmm0
3967*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3968*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.scalef.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 2)
3969*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.scalef.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
3970*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
3971*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
3972*9880d681SAndroid Build Coastguard Worker}
3973*9880d681SAndroid Build Coastguard Worker
3974*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmov.qb.512(<8 x i64>, <16 x i8>, i8)
3975*9880d681SAndroid Build Coastguard Worker
3976*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmov_qb_512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2) {
3977*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qb_512:
3978*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3979*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
3980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqb %zmm0, %xmm1 {%k1}
3981*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqb %zmm0, %xmm2 {%k1} {z}
3982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqb %zmm0, %xmm0
3983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0
3984*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0
3985*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
3986*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmov.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 -1)
3987*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmov.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2)
3988*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmov.qb.512(<8 x i64> %x0, <16 x i8> zeroinitializer, i8 %x2)
3989*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
3990*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
3991*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
3992*9880d681SAndroid Build Coastguard Worker}
3993*9880d681SAndroid Build Coastguard Worker
3994*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.qb.mem.512(i8* %ptr, <8 x i64>, i8)
3995*9880d681SAndroid Build Coastguard Worker
3996*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_qb_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) {
3997*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qb_mem_512:
3998*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3999*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqb %zmm0, (%rdi)
4001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqb %zmm0, (%rdi) {%k1}
4002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4003*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1)
4004*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2)
4005*9880d681SAndroid Build Coastguard Worker    ret void
4006*9880d681SAndroid Build Coastguard Worker}
4007*9880d681SAndroid Build Coastguard Worker
4008*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovs.qb.512(<8 x i64>, <16 x i8>, i8)
4009*9880d681SAndroid Build Coastguard Worker
4010*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovs_qb_512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2) {
4011*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qb_512:
4012*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqb %zmm0, %xmm1 {%k1}
4015*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqb %zmm0, %xmm2 {%k1} {z}
4016*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqb %zmm0, %xmm0
4017*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0
4018*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0
4019*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4020*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 -1)
4021*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2)
4022*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.qb.512(<8 x i64> %x0, <16 x i8> zeroinitializer, i8 %x2)
4023*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
4024*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
4025*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
4026*9880d681SAndroid Build Coastguard Worker}
4027*9880d681SAndroid Build Coastguard Worker
4028*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.qb.mem.512(i8* %ptr, <8 x i64>, i8)
4029*9880d681SAndroid Build Coastguard Worker
4030*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_qb_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) {
4031*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qb_mem_512:
4032*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqb %zmm0, (%rdi)
4034*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4035*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqb %zmm0, (%rdi) {%k1}
4036*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4037*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1)
4038*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2)
4039*9880d681SAndroid Build Coastguard Worker    ret void
4040*9880d681SAndroid Build Coastguard Worker}
4041*9880d681SAndroid Build Coastguard Worker
4042*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovus.qb.512(<8 x i64>, <16 x i8>, i8)
4043*9880d681SAndroid Build Coastguard Worker
4044*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovus_qb_512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2) {
4045*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qb_512:
4046*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqb %zmm0, %xmm1 {%k1}
4049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqb %zmm0, %xmm2 {%k1} {z}
4050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqb %zmm0, %xmm0
4051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0
4052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0
4053*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4054*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 -1)
4055*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2)
4056*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.qb.512(<8 x i64> %x0, <16 x i8> zeroinitializer, i8 %x2)
4057*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
4058*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
4059*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
4060*9880d681SAndroid Build Coastguard Worker}
4061*9880d681SAndroid Build Coastguard Worker
4062*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.qb.mem.512(i8* %ptr, <8 x i64>, i8)
4063*9880d681SAndroid Build Coastguard Worker
4064*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_qb_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) {
4065*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qb_mem_512:
4066*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqb %zmm0, (%rdi)
4068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqb %zmm0, (%rdi) {%k1}
4070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4071*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1)
4072*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2)
4073*9880d681SAndroid Build Coastguard Worker    ret void
4074*9880d681SAndroid Build Coastguard Worker}
4075*9880d681SAndroid Build Coastguard Worker
4076*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64>, <8 x i16>, i8)
4077*9880d681SAndroid Build Coastguard Worker
4078*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmov_qw_512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2) {
4079*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qw_512:
4080*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4081*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4082*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqw %zmm0, %xmm1 {%k1}
4083*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqw %zmm0, %xmm2 {%k1} {z}
4084*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqw %zmm0, %xmm0
4085*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm0
4086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm2, %xmm0, %xmm0
4087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4088*9880d681SAndroid Build Coastguard Worker    %res0 = call <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 -1)
4089*9880d681SAndroid Build Coastguard Worker    %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2)
4090*9880d681SAndroid Build Coastguard Worker    %res2 = call <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64> %x0, <8 x i16> zeroinitializer, i8 %x2)
4091*9880d681SAndroid Build Coastguard Worker    %res3 = add <8 x i16> %res0, %res1
4092*9880d681SAndroid Build Coastguard Worker    %res4 = add <8 x i16> %res3, %res2
4093*9880d681SAndroid Build Coastguard Worker    ret <8 x i16> %res4
4094*9880d681SAndroid Build Coastguard Worker}
4095*9880d681SAndroid Build Coastguard Worker
4096*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.qw.mem.512(i8* %ptr, <8 x i64>, i8)
4097*9880d681SAndroid Build Coastguard Worker
4098*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_qw_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) {
4099*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qw_mem_512:
4100*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqw %zmm0, (%rdi)
4103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqw %zmm0, (%rdi) {%k1}
4104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4105*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1)
4106*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2)
4107*9880d681SAndroid Build Coastguard Worker    ret void
4108*9880d681SAndroid Build Coastguard Worker}
4109*9880d681SAndroid Build Coastguard Worker
4110*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64>, <8 x i16>, i8)
4111*9880d681SAndroid Build Coastguard Worker
4112*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmovs_qw_512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2) {
4113*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qw_512:
4114*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqw %zmm0, %xmm1 {%k1}
4117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqw %zmm0, %xmm2 {%k1} {z}
4118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqw %zmm0, %xmm0
4119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm0
4120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm2, %xmm0, %xmm0
4121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4122*9880d681SAndroid Build Coastguard Worker    %res0 = call <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 -1)
4123*9880d681SAndroid Build Coastguard Worker    %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2)
4124*9880d681SAndroid Build Coastguard Worker    %res2 = call <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64> %x0, <8 x i16> zeroinitializer, i8 %x2)
4125*9880d681SAndroid Build Coastguard Worker    %res3 = add <8 x i16> %res0, %res1
4126*9880d681SAndroid Build Coastguard Worker    %res4 = add <8 x i16> %res3, %res2
4127*9880d681SAndroid Build Coastguard Worker    ret <8 x i16> %res4
4128*9880d681SAndroid Build Coastguard Worker}
4129*9880d681SAndroid Build Coastguard Worker
4130*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.qw.mem.512(i8* %ptr, <8 x i64>, i8)
4131*9880d681SAndroid Build Coastguard Worker
4132*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_qw_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) {
4133*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qw_mem_512:
4134*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqw %zmm0, (%rdi)
4136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqw %zmm0, (%rdi) {%k1}
4138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4139*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1)
4140*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2)
4141*9880d681SAndroid Build Coastguard Worker    ret void
4142*9880d681SAndroid Build Coastguard Worker}
4143*9880d681SAndroid Build Coastguard Worker
4144*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64>, <8 x i16>, i8)
4145*9880d681SAndroid Build Coastguard Worker
4146*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmovus_qw_512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2) {
4147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qw_512:
4148*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqw %zmm0, %xmm1 {%k1}
4151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqw %zmm0, %xmm2 {%k1} {z}
4152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqw %zmm0, %xmm0
4153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm0
4154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm2, %xmm0, %xmm0
4155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4156*9880d681SAndroid Build Coastguard Worker    %res0 = call <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 -1)
4157*9880d681SAndroid Build Coastguard Worker    %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2)
4158*9880d681SAndroid Build Coastguard Worker    %res2 = call <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64> %x0, <8 x i16> zeroinitializer, i8 %x2)
4159*9880d681SAndroid Build Coastguard Worker    %res3 = add <8 x i16> %res0, %res1
4160*9880d681SAndroid Build Coastguard Worker    %res4 = add <8 x i16> %res3, %res2
4161*9880d681SAndroid Build Coastguard Worker    ret <8 x i16> %res4
4162*9880d681SAndroid Build Coastguard Worker}
4163*9880d681SAndroid Build Coastguard Worker
4164*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.qw.mem.512(i8* %ptr, <8 x i64>, i8)
4165*9880d681SAndroid Build Coastguard Worker
4166*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_qw_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) {
4167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qw_mem_512:
4168*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqw %zmm0, (%rdi)
4170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqw %zmm0, (%rdi) {%k1}
4172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4173*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1)
4174*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2)
4175*9880d681SAndroid Build Coastguard Worker    ret void
4176*9880d681SAndroid Build Coastguard Worker}
4177*9880d681SAndroid Build Coastguard Worker
4178*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.pmov.qd.512(<8 x i64>, <8 x i32>, i8)
4179*9880d681SAndroid Build Coastguard Worker
4180*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_pmov_qd_512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2) {
4181*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qd_512:
4182*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqd %zmm0, %ymm1 {%k1}
4185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqd %zmm0, %ymm2 {%k1} {z}
4186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqd %zmm0, %ymm0
4187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm1, %ymm0, %ymm0
4188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm2, %ymm0, %ymm0
4189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4190*9880d681SAndroid Build Coastguard Worker    %res0 = call <8 x i32> @llvm.x86.avx512.mask.pmov.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 -1)
4191*9880d681SAndroid Build Coastguard Worker    %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmov.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2)
4192*9880d681SAndroid Build Coastguard Worker    %res2 = call <8 x i32> @llvm.x86.avx512.mask.pmov.qd.512(<8 x i64> %x0, <8 x i32> zeroinitializer, i8 %x2)
4193*9880d681SAndroid Build Coastguard Worker    %res3 = add <8 x i32> %res0, %res1
4194*9880d681SAndroid Build Coastguard Worker    %res4 = add <8 x i32> %res3, %res2
4195*9880d681SAndroid Build Coastguard Worker    ret <8 x i32> %res4
4196*9880d681SAndroid Build Coastguard Worker}
4197*9880d681SAndroid Build Coastguard Worker
4198*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.qd.mem.512(i8* %ptr, <8 x i64>, i8)
4199*9880d681SAndroid Build Coastguard Worker
4200*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_qd_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) {
4201*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qd_mem_512:
4202*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqd %zmm0, (%rdi)
4205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovqd %zmm0, (%rdi) {%k1}
4206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4207*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1)
4208*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2)
4209*9880d681SAndroid Build Coastguard Worker    ret void
4210*9880d681SAndroid Build Coastguard Worker}
4211*9880d681SAndroid Build Coastguard Worker
4212*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64>, <8 x i32>, i8)
4213*9880d681SAndroid Build Coastguard Worker
4214*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_pmovs_qd_512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2) {
4215*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qd_512:
4216*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqd %zmm0, %ymm1 {%k1}
4219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqd %zmm0, %ymm2 {%k1} {z}
4220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqd %zmm0, %ymm0
4221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm1, %ymm0, %ymm0
4222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm2, %ymm0, %ymm0
4223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4224*9880d681SAndroid Build Coastguard Worker    %res0 = call <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 -1)
4225*9880d681SAndroid Build Coastguard Worker    %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2)
4226*9880d681SAndroid Build Coastguard Worker    %res2 = call <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64> %x0, <8 x i32> zeroinitializer, i8 %x2)
4227*9880d681SAndroid Build Coastguard Worker    %res3 = add <8 x i32> %res0, %res1
4228*9880d681SAndroid Build Coastguard Worker    %res4 = add <8 x i32> %res3, %res2
4229*9880d681SAndroid Build Coastguard Worker    ret <8 x i32> %res4
4230*9880d681SAndroid Build Coastguard Worker}
4231*9880d681SAndroid Build Coastguard Worker
4232*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.qd.mem.512(i8* %ptr, <8 x i64>, i8)
4233*9880d681SAndroid Build Coastguard Worker
4234*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_qd_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) {
4235*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qd_mem_512:
4236*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqd %zmm0, (%rdi)
4238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsqd %zmm0, (%rdi) {%k1}
4240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4241*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1)
4242*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2)
4243*9880d681SAndroid Build Coastguard Worker    ret void
4244*9880d681SAndroid Build Coastguard Worker}
4245*9880d681SAndroid Build Coastguard Worker
4246*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64>, <8 x i32>, i8)
4247*9880d681SAndroid Build Coastguard Worker
4248*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_pmovus_qd_512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2) {
4249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qd_512:
4250*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqd %zmm0, %ymm1 {%k1}
4253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqd %zmm0, %ymm2 {%k1} {z}
4254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqd %zmm0, %ymm0
4255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm1, %ymm0, %ymm0
4256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm2, %ymm0, %ymm0
4257*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4258*9880d681SAndroid Build Coastguard Worker    %res0 = call <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 -1)
4259*9880d681SAndroid Build Coastguard Worker    %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2)
4260*9880d681SAndroid Build Coastguard Worker    %res2 = call <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64> %x0, <8 x i32> zeroinitializer, i8 %x2)
4261*9880d681SAndroid Build Coastguard Worker    %res3 = add <8 x i32> %res0, %res1
4262*9880d681SAndroid Build Coastguard Worker    %res4 = add <8 x i32> %res3, %res2
4263*9880d681SAndroid Build Coastguard Worker    ret <8 x i32> %res4
4264*9880d681SAndroid Build Coastguard Worker}
4265*9880d681SAndroid Build Coastguard Worker
4266*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.qd.mem.512(i8* %ptr, <8 x i64>, i8)
4267*9880d681SAndroid Build Coastguard Worker
4268*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_qd_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) {
4269*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qd_mem_512:
4270*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqd %zmm0, (%rdi)
4272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusqd %zmm0, (%rdi) {%k1}
4274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4275*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1)
4276*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2)
4277*9880d681SAndroid Build Coastguard Worker    ret void
4278*9880d681SAndroid Build Coastguard Worker}
4279*9880d681SAndroid Build Coastguard Worker
4280*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32>, <16 x i8>, i16)
4281*9880d681SAndroid Build Coastguard Worker
4282*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmov_db_512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2) {
4283*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_db_512:
4284*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdb %zmm0, %xmm1 {%k1}
4287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdb %zmm0, %xmm2 {%k1} {z}
4288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdb %zmm0, %xmm0
4289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0
4290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0
4291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4292*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 -1)
4293*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2)
4294*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32> %x0, <16 x i8> zeroinitializer, i16 %x2)
4295*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
4296*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
4297*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
4298*9880d681SAndroid Build Coastguard Worker}
4299*9880d681SAndroid Build Coastguard Worker
4300*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.db.mem.512(i8* %ptr, <16 x i32>, i16)
4301*9880d681SAndroid Build Coastguard Worker
4302*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_db_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) {
4303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_db_mem_512:
4304*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdb %zmm0, (%rdi)
4307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdb %zmm0, (%rdi) {%k1}
4308*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4309*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1)
4310*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2)
4311*9880d681SAndroid Build Coastguard Worker    ret void
4312*9880d681SAndroid Build Coastguard Worker}
4313*9880d681SAndroid Build Coastguard Worker
4314*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32>, <16 x i8>, i16)
4315*9880d681SAndroid Build Coastguard Worker
4316*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovs_db_512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2) {
4317*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_db_512:
4318*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdb %zmm0, %xmm1 {%k1}
4321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdb %zmm0, %xmm2 {%k1} {z}
4322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdb %zmm0, %xmm0
4323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0
4324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0
4325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4326*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 -1)
4327*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2)
4328*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32> %x0, <16 x i8> zeroinitializer, i16 %x2)
4329*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
4330*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
4331*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
4332*9880d681SAndroid Build Coastguard Worker}
4333*9880d681SAndroid Build Coastguard Worker
4334*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.db.mem.512(i8* %ptr, <16 x i32>, i16)
4335*9880d681SAndroid Build Coastguard Worker
4336*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_db_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) {
4337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_db_mem_512:
4338*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdb %zmm0, (%rdi)
4340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdb %zmm0, (%rdi) {%k1}
4342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4343*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1)
4344*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2)
4345*9880d681SAndroid Build Coastguard Worker    ret void
4346*9880d681SAndroid Build Coastguard Worker}
4347*9880d681SAndroid Build Coastguard Worker
4348*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32>, <16 x i8>, i16)
4349*9880d681SAndroid Build Coastguard Worker
4350*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovus_db_512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2) {
4351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_db_512:
4352*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdb %zmm0, %xmm1 {%k1}
4355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdb %zmm0, %xmm2 {%k1} {z}
4356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdb %zmm0, %xmm0
4357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0
4358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0
4359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4360*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 -1)
4361*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2)
4362*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32> %x0, <16 x i8> zeroinitializer, i16 %x2)
4363*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
4364*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
4365*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
4366*9880d681SAndroid Build Coastguard Worker}
4367*9880d681SAndroid Build Coastguard Worker
4368*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.db.mem.512(i8* %ptr, <16 x i32>, i16)
4369*9880d681SAndroid Build Coastguard Worker
4370*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_db_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) {
4371*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_db_mem_512:
4372*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdb %zmm0, (%rdi)
4374*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdb %zmm0, (%rdi) {%k1}
4376*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4377*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1)
4378*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2)
4379*9880d681SAndroid Build Coastguard Worker    ret void
4380*9880d681SAndroid Build Coastguard Worker}
4381*9880d681SAndroid Build Coastguard Worker
4382*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32>, <16 x i16>, i16)
4383*9880d681SAndroid Build Coastguard Worker
4384*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmov_dw_512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2) {
4385*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_dw_512:
4386*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdw %zmm0, %ymm1 {%k1}
4389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdw %zmm0, %ymm2 {%k1} {z}
4390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdw %zmm0, %ymm0
4391*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm0, %ymm0
4392*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm2, %ymm0, %ymm0
4393*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4394*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 -1)
4395*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2)
4396*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32> %x0, <16 x i16> zeroinitializer, i16 %x2)
4397*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i16> %res0, %res1
4398*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i16> %res3, %res2
4399*9880d681SAndroid Build Coastguard Worker    ret <16 x i16> %res4
4400*9880d681SAndroid Build Coastguard Worker}
4401*9880d681SAndroid Build Coastguard Worker
4402*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.dw.mem.512(i8* %ptr, <16 x i32>, i16)
4403*9880d681SAndroid Build Coastguard Worker
4404*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_dw_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) {
4405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_dw_mem_512:
4406*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdw %zmm0, (%rdi)
4409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovdw %zmm0, (%rdi) {%k1}
4410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4411*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1)
4412*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2)
4413*9880d681SAndroid Build Coastguard Worker    ret void
4414*9880d681SAndroid Build Coastguard Worker}
4415*9880d681SAndroid Build Coastguard Worker
4416*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32>, <16 x i16>, i16)
4417*9880d681SAndroid Build Coastguard Worker
4418*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmovs_dw_512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2) {
4419*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_dw_512:
4420*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4421*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdw %zmm0, %ymm1 {%k1}
4423*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdw %zmm0, %ymm2 {%k1} {z}
4424*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdw %zmm0, %ymm0
4425*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm0, %ymm0
4426*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm2, %ymm0, %ymm0
4427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4428*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 -1)
4429*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2)
4430*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32> %x0, <16 x i16> zeroinitializer, i16 %x2)
4431*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i16> %res0, %res1
4432*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i16> %res3, %res2
4433*9880d681SAndroid Build Coastguard Worker    ret <16 x i16> %res4
4434*9880d681SAndroid Build Coastguard Worker}
4435*9880d681SAndroid Build Coastguard Worker
4436*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.dw.mem.512(i8* %ptr, <16 x i32>, i16)
4437*9880d681SAndroid Build Coastguard Worker
4438*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_dw_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) {
4439*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_dw_mem_512:
4440*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4441*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdw %zmm0, (%rdi)
4442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsdw %zmm0, (%rdi) {%k1}
4444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4445*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1)
4446*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2)
4447*9880d681SAndroid Build Coastguard Worker    ret void
4448*9880d681SAndroid Build Coastguard Worker}
4449*9880d681SAndroid Build Coastguard Worker
4450*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32>, <16 x i16>, i16)
4451*9880d681SAndroid Build Coastguard Worker
4452*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmovus_dw_512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2) {
4453*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_dw_512:
4454*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdw %zmm0, %ymm1 {%k1}
4457*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdw %zmm0, %ymm2 {%k1} {z}
4458*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdw %zmm0, %ymm0
4459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm0, %ymm0
4460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm2, %ymm0, %ymm0
4461*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4462*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 -1)
4463*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2)
4464*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32> %x0, <16 x i16> zeroinitializer, i16 %x2)
4465*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i16> %res0, %res1
4466*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i16> %res3, %res2
4467*9880d681SAndroid Build Coastguard Worker    ret <16 x i16> %res4
4468*9880d681SAndroid Build Coastguard Worker}
4469*9880d681SAndroid Build Coastguard Worker
4470*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.dw.mem.512(i8* %ptr, <16 x i32>, i16)
4471*9880d681SAndroid Build Coastguard Worker
4472*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_dw_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) {
4473*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_dw_mem_512:
4474*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdw %zmm0, (%rdi)
4476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
4477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovusdw %zmm0, (%rdi) {%k1}
4478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4479*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1)
4480*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2)
4481*9880d681SAndroid Build Coastguard Worker    ret void
4482*9880d681SAndroid Build Coastguard Worker}
4483*9880d681SAndroid Build Coastguard Worker
4484*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtdq2pd.512(<8 x i32>, <8 x double>, i8)
4485*9880d681SAndroid Build Coastguard Worker
4486*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_dq2pd_512(<8 x i32> %x0, <8 x double> %x1, i8 %x2) {
4487*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_dq2pd_512:
4488*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4489*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4490*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtdq2pd %ymm0, %zmm1 {%k1}
4491*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtdq2pd %ymm0, %zmm0
4492*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
4493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4494*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.cvtdq2pd.512(<8 x i32> %x0, <8 x double> %x1, i8 %x2)
4495*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtdq2pd.512(<8 x i32> %x0, <8 x double> %x1, i8 -1)
4496*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
4497*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
4498*9880d681SAndroid Build Coastguard Worker}
4499*9880d681SAndroid Build Coastguard Worker
4500*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.cvtdq2ps.512(<16 x i32>, <16 x float>, i16, i32)
4501*9880d681SAndroid Build Coastguard Worker
4502*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_cvt_dq2ps_512(<16 x i32> %x0, <16 x float> %x1, i16 %x2) {
4503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_dq2ps_512:
4504*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtdq2ps %zmm0, %zmm1 {%k1}
4507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtdq2ps {rn-sae}, %zmm0, %zmm0
4508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm1, %zmm0
4509*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4510*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.cvtdq2ps.512(<16 x i32> %x0, <16 x float> %x1, i16 %x2, i32 4)
4511*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.cvtdq2ps.512(<16 x i32> %x0, <16 x float> %x1, i16 -1, i32 0)
4512*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
4513*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
4514*9880d681SAndroid Build Coastguard Worker}
4515*9880d681SAndroid Build Coastguard Worker
4516*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.cvtpd2dq.512(<8 x double>, <8 x i32>, i8, i32)
4517*9880d681SAndroid Build Coastguard Worker
4518*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_cvt_pd2dq_512(<8 x double> %x0, <8 x i32> %x1, i8 %x2) {
4519*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2dq_512:
4520*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4522*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2dq %zmm0, %ymm1 {%k1}
4523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2dq {rn-sae}, %zmm0, %ymm0
4524*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm0, %ymm1, %ymm0
4525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4526*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx512.mask.cvtpd2dq.512(<8 x double> %x0, <8 x i32> %x1, i8 %x2, i32 4)
4527*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i32> @llvm.x86.avx512.mask.cvtpd2dq.512(<8 x double> %x0, <8 x i32> %x1, i8 -1, i32 0)
4528*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i32> %res, %res1
4529*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res2
4530*9880d681SAndroid Build Coastguard Worker}
4531*9880d681SAndroid Build Coastguard Worker
4532*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.cvtpd2ps.512(<8 x double>, <8 x float>, i8, i32)
4533*9880d681SAndroid Build Coastguard Worker
4534*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_cvt_pd2ps_512(<8 x double> %x0, <8 x float> %x1, i8 %x2) {
4535*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2ps_512:
4536*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2ps %zmm0, %ymm1 {%k1}
4539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2ps {ru-sae}, %zmm0, %ymm0
4540*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm1, %ymm0
4541*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4542*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.cvtpd2ps.512(<8 x double> %x0, <8 x float> %x1, i8 %x2, i32 4)
4543*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.cvtpd2ps.512(<8 x double> %x0, <8 x float> %x1, i8 -1, i32 2)
4544*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
4545*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
4546*9880d681SAndroid Build Coastguard Worker}
4547*9880d681SAndroid Build Coastguard Worker
4548*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.cvtpd2udq.512(<8 x double>, <8 x i32>, i8, i32)
4549*9880d681SAndroid Build Coastguard Worker
4550*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_cvt_pd2udq_512(<8 x double> %x0, <8 x i32> %x1, i8 %x2) {
4551*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2udq_512:
4552*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4554*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2udq {ru-sae}, %zmm0, %ymm1 {%k1}
4555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2udq {rn-sae}, %zmm0, %ymm0
4556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm0, %ymm1, %ymm0
4557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4558*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx512.mask.cvtpd2udq.512(<8 x double> %x0, <8 x i32> %x1, i8 %x2, i32 2)
4559*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i32> @llvm.x86.avx512.mask.cvtpd2udq.512(<8 x double> %x0, <8 x i32> %x1, i8 -1, i32 0)
4560*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i32> %res, %res1
4561*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res2
4562*9880d681SAndroid Build Coastguard Worker}
4563*9880d681SAndroid Build Coastguard Worker
4564*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.cvtps2dq.512(<16 x float>, <16 x i32>, i16, i32)
4565*9880d681SAndroid Build Coastguard Worker
4566*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_cvt_ps2dq_512(<16 x float> %x0, <16 x i32> %x1, i16 %x2) {
4567*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2dq_512:
4568*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2dq {ru-sae}, %zmm0, %zmm1 {%k1}
4571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2dq {rn-sae}, %zmm0, %zmm0
4572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
4573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4574*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.cvtps2dq.512(<16 x float> %x0, <16 x i32> %x1, i16 %x2, i32 2)
4575*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.cvtps2dq.512(<16 x float> %x0, <16 x i32> %x1, i16 -1, i32 0)
4576*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
4577*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
4578*9880d681SAndroid Build Coastguard Worker}
4579*9880d681SAndroid Build Coastguard Worker
4580*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtps2pd.512(<8 x float>, <8 x double>, i8, i32)
4581*9880d681SAndroid Build Coastguard Worker
4582*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_ps2pd_512(<8 x float> %x0, <8 x double> %x1, i8 %x2) {
4583*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2pd_512:
4584*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4585*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4586*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2pd %ymm0, %zmm1 {%k1}
4587*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2pd {sae}, %ymm0, %zmm0
4588*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
4589*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4590*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.cvtps2pd.512(<8 x float> %x0, <8 x double> %x1, i8 %x2, i32 4)
4591*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtps2pd.512(<8 x float> %x0, <8 x double> %x1, i8 -1, i32 8)
4592*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
4593*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
4594*9880d681SAndroid Build Coastguard Worker}
4595*9880d681SAndroid Build Coastguard Worker
4596*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.cvtps2udq.512(<16 x float>, <16 x i32>, i16, i32)
4597*9880d681SAndroid Build Coastguard Worker
4598*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_cvt_ps2udq_512(<16 x float> %x0, <16 x i32> %x1, i16 %x2) {
4599*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2udq_512:
4600*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2udq {ru-sae}, %zmm0, %zmm1 {%k1}
4603*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2udq {rn-sae}, %zmm0, %zmm0
4604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
4605*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4606*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.cvtps2udq.512(<16 x float> %x0, <16 x i32> %x1, i16 %x2, i32 2)
4607*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.cvtps2udq.512(<16 x float> %x0, <16 x i32> %x1, i16 -1, i32 0)
4608*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
4609*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
4610*9880d681SAndroid Build Coastguard Worker}
4611*9880d681SAndroid Build Coastguard Worker
4612*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.cvttpd2dq.512(<8 x double>, <8 x i32>, i8, i32)
4613*9880d681SAndroid Build Coastguard Worker
4614*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_cvtt_pd2dq_512(<8 x double> %x0, <8 x i32> %x1, i8 %x2) {
4615*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2dq_512:
4616*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2dq %zmm0, %ymm1 {%k1}
4619*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2dq {sae}, %zmm0, %ymm0
4620*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm0, %ymm1, %ymm0
4621*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4622*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx512.mask.cvttpd2dq.512(<8 x double> %x0, <8 x i32> %x1, i8 %x2, i32 4)
4623*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i32> @llvm.x86.avx512.mask.cvttpd2dq.512(<8 x double> %x0, <8 x i32> %x1, i8 -1, i32 8)
4624*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i32> %res, %res1
4625*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res2
4626*9880d681SAndroid Build Coastguard Worker}
4627*9880d681SAndroid Build Coastguard Worker
4628*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtudq2pd.512(<8 x i32>, <8 x double>, i8)
4629*9880d681SAndroid Build Coastguard Worker
4630*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_udq2pd_512(<8 x i32> %x0, <8 x double> %x1, i8 %x2) {
4631*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_udq2pd_512:
4632*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtudq2pd %ymm0, %zmm1 {%k1}
4635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtudq2pd %ymm0, %zmm0
4636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
4637*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4638*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.cvtudq2pd.512(<8 x i32> %x0, <8 x double> %x1, i8 %x2)
4639*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtudq2pd.512(<8 x i32> %x0, <8 x double> %x1, i8 -1)
4640*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
4641*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
4642*9880d681SAndroid Build Coastguard Worker}
4643*9880d681SAndroid Build Coastguard Worker
4644*9880d681SAndroid Build Coastguard Worker
4645*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.cvtudq2ps.512(<16 x i32>, <16 x float>, i16, i32)
4646*9880d681SAndroid Build Coastguard Worker
4647*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_cvt_udq2ps_512(<16 x i32> %x0, <16 x float> %x1, i16 %x2) {
4648*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_udq2ps_512:
4649*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4650*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4651*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtudq2ps %zmm0, %zmm1 {%k1}
4652*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtudq2ps {rn-sae}, %zmm0, %zmm0
4653*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm1, %zmm0
4654*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4655*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.cvtudq2ps.512(<16 x i32> %x0, <16 x float> %x1, i16 %x2, i32 4)
4656*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.cvtudq2ps.512(<16 x i32> %x0, <16 x float> %x1, i16 -1, i32 0)
4657*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
4658*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
4659*9880d681SAndroid Build Coastguard Worker}
4660*9880d681SAndroid Build Coastguard Worker
4661*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.cvttpd2udq.512(<8 x double>, <8 x i32>, i8, i32)
4662*9880d681SAndroid Build Coastguard Worker
4663*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_cvtt_pd2udq_512(<8 x double> %x0, <8 x i32> %x1, i8 %x2) {
4664*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2udq_512:
4665*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2udq %zmm0, %ymm1 {%k1}
4668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2udq {sae}, %zmm0, %ymm0
4669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm0, %ymm1, %ymm0
4670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4671*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx512.mask.cvttpd2udq.512(<8 x double> %x0, <8 x i32> %x1, i8 %x2, i32 4)
4672*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i32> @llvm.x86.avx512.mask.cvttpd2udq.512(<8 x double> %x0, <8 x i32> %x1, i8 -1, i32 8)
4673*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i32> %res, %res1
4674*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res2
4675*9880d681SAndroid Build Coastguard Worker}
4676*9880d681SAndroid Build Coastguard Worker
4677*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.cvttps2dq.512(<16 x float>, <16 x i32>, i16, i32)
4678*9880d681SAndroid Build Coastguard Worker
4679*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_cvtt_ps2dq_512(<16 x float> %x0, <16 x i32> %x1, i16 %x2) {
4680*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2dq_512:
4681*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2dq %zmm0, %zmm1 {%k1}
4684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2dq {sae}, %zmm0, %zmm0
4685*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
4686*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4687*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.cvttps2dq.512(<16 x float> %x0, <16 x i32> %x1, i16 %x2, i32 4)
4688*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.cvttps2dq.512(<16 x float> %x0, <16 x i32> %x1, i16 -1, i32 8)
4689*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
4690*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
4691*9880d681SAndroid Build Coastguard Worker}
4692*9880d681SAndroid Build Coastguard Worker
4693*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.cvttps2udq.512(<16 x float>, <16 x i32>, i16, i32)
4694*9880d681SAndroid Build Coastguard Worker
4695*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_cvtt_ps2udq_512(<16 x float> %x0, <16 x i32> %x1, i16 %x2) {
4696*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2udq_512:
4697*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2udq %zmm0, %zmm1 {%k1}
4700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2udq {sae}, %zmm0, %zmm0
4701*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
4702*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4703*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.cvttps2udq.512(<16 x float> %x0, <16 x i32> %x1, i16 %x2, i32 4)
4704*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.cvttps2udq.512(<16 x float> %x0, <16 x i32> %x1, i16 -1, i32 8)
4705*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
4706*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
4707*9880d681SAndroid Build Coastguard Worker}
4708*9880d681SAndroid Build Coastguard Worker
4709*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) nounwind readnone
4710*9880d681SAndroid Build Coastguard Worker
4711*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_getexp_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
4712*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_ss:
4713*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
4715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
4717*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpss %xmm1, %xmm0, %xmm3 {%k1}
4718*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpss {sae}, %xmm1, %xmm0, %xmm2 {%k1}
4719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpss {sae}, %xmm1, %xmm0, %xmm4 {%k1} {z}
4720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpss {sae}, %xmm1, %xmm0, %xmm0
4721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm2, %xmm3, %xmm1
4722*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm4, %xmm0
4723*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm1, %xmm0
4724*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4725*9880d681SAndroid Build Coastguard Worker  %res0 = call <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 4)
4726*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 8)
4727*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 8)
4728*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 8)
4729*9880d681SAndroid Build Coastguard Worker
4730*9880d681SAndroid Build Coastguard Worker  %res.1 = fadd <4 x float> %res0, %res1
4731*9880d681SAndroid Build Coastguard Worker  %res.2 = fadd <4 x float> %res2, %res3
4732*9880d681SAndroid Build Coastguard Worker  %res   = fadd <4 x float> %res.1, %res.2
4733*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
4734*9880d681SAndroid Build Coastguard Worker}
4735*9880d681SAndroid Build Coastguard Worker
4736*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) nounwind readnone
4737*9880d681SAndroid Build Coastguard Worker
4738*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_getexp_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
4739*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_sd:
4740*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4741*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
4742*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4743*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
4744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpsd %xmm1, %xmm0, %xmm3 {%k1}
4745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpsd %xmm1, %xmm0, %xmm4
4746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpsd {sae}, %xmm1, %xmm0, %xmm2 {%k1}
4747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetexpsd {sae}, %xmm1, %xmm0, %xmm0 {%k1} {z}
4748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm2, %xmm3, %xmm1
4749*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm4, %xmm0, %xmm0
4750*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm1, %xmm0
4751*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4752*9880d681SAndroid Build Coastguard Worker  %res0 = call <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 4)
4753*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 8)
4754*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 8)
4755*9880d681SAndroid Build Coastguard Worker  %res3 = call <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 4)
4756*9880d681SAndroid Build Coastguard Worker
4757*9880d681SAndroid Build Coastguard Worker  %res.1 = fadd <2 x double> %res0, %res1
4758*9880d681SAndroid Build Coastguard Worker  %res.2 = fadd <2 x double> %res2, %res3
4759*9880d681SAndroid Build Coastguard Worker  %res   = fadd <2 x double> %res.1, %res.2
4760*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
4761*9880d681SAndroid Build Coastguard Worker}
4762*9880d681SAndroid Build Coastguard Worker
4763*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double>, <2 x double>, i32, i8, i32)
4764*9880d681SAndroid Build Coastguard Worker
4765*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_mask_cmp_sd(<2 x double> %x0, <2 x double> %x1, i8 %x3, i32 %x4) {
4766*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cmp_sd:
4767*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4768*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
4769*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4770*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpnltsd {sae}, %xmm1, %xmm0, %k0 {%k1}
4771*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
4772*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %AX<kill>
4773*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4774*9880d681SAndroid Build Coastguard Worker
4775*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 5, i8 %x3, i32 8)
4776*9880d681SAndroid Build Coastguard Worker  ret i8 %res4
4777*9880d681SAndroid Build Coastguard Worker}
4778*9880d681SAndroid Build Coastguard Worker
4779*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_mask_cmp_sd_all(<2 x double> %x0, <2 x double> %x1, i8 %x3, i32 %x4) {
4780*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cmp_sd_all:
4781*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4782*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpunordsd {sae}, %xmm1, %xmm0, %k0
4783*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmplesd %xmm1, %xmm0, %k1
4784*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    korw %k0, %k1, %k0
4785*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpnltsd {sae}, %xmm1, %xmm0, %k1
4786*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqsd %xmm1, %xmm0, %k2
4787*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    korw %k1, %k2, %k1
4788*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
4789*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k2
4790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kandw %k2, %k1, %k1
4791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    korw %k1, %k0, %k0
4792*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
4793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %AX<kill>
4794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4795*9880d681SAndroid Build Coastguard Worker
4796*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 2, i8 -1, i32 4)
4797*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 3, i8 -1, i32 8)
4798*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 4, i8 %x3, i32 4)
4799*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 5, i8 %x3, i32 8)
4800*9880d681SAndroid Build Coastguard Worker
4801*9880d681SAndroid Build Coastguard Worker  %res11 = or i8 %res1, %res2
4802*9880d681SAndroid Build Coastguard Worker  %res12 = or i8 %res3, %res4
4803*9880d681SAndroid Build Coastguard Worker  %res13 = or i8 %res11, %res12
4804*9880d681SAndroid Build Coastguard Worker  ret i8 %res13
4805*9880d681SAndroid Build Coastguard Worker}
4806*9880d681SAndroid Build Coastguard Worker
4807*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float>, <4 x float>, i32, i8, i32)
4808*9880d681SAndroid Build Coastguard Worker
4809*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_mask_cmp_ss(<4 x float> %x0, <4 x float> %x1, i8 %x3, i32 %x4) {
4810*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cmp_ss:
4811*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4812*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
4813*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4814*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpunordss %xmm1, %xmm0, %k0 {%k1}
4815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
4816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %AX<kill>
4817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4818*9880d681SAndroid Build Coastguard Worker
4819*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 3, i8 %x3, i32 4)
4820*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
4821*9880d681SAndroid Build Coastguard Worker}
4822*9880d681SAndroid Build Coastguard Worker
4823*9880d681SAndroid Build Coastguard Worker
4824*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_mask_cmp_ss_all(<4 x float> %x0, <4 x float> %x1, i8 %x3, i32 %x4) {
4825*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cmp_ss_all:
4826*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4827*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpless %xmm1, %xmm0, %k1
4828*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpunordss {sae}, %xmm1, %xmm0, %k0 {%k1}
4829*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
4830*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4831*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpneqss %xmm1, %xmm0, %k2 {%k1}
4832*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %ecx
4833*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpnltss {sae}, %xmm1, %xmm0, %k1 {%k1}
4834*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax
4835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %edx
4836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andb %cl, %al
4837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andb %dl, %al
4838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %AX<kill>
4839*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4840*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 2, i8 -1, i32 4)
4841*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 3, i8 -1, i32 8)
4842*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 4, i8 %x3, i32 4)
4843*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 5, i8 %x3, i32 8)
4844*9880d681SAndroid Build Coastguard Worker
4845*9880d681SAndroid Build Coastguard Worker  %res11 = and i8 %res1, %res2
4846*9880d681SAndroid Build Coastguard Worker  %res12 = and i8 %res3, %res4
4847*9880d681SAndroid Build Coastguard Worker  %res13 = and i8 %res11, %res12
4848*9880d681SAndroid Build Coastguard Worker  ret i8 %res13
4849*9880d681SAndroid Build Coastguard Worker}
4850*9880d681SAndroid Build Coastguard Worker
4851*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.shuf.f32x4(<16 x float>, <16 x float>, i32, <16 x float>, i16)
4852*9880d681SAndroid Build Coastguard Worker
4853*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_shuf_f32x4(<16 x float> %x0, <16 x float> %x1, <16 x float> %x3, i16 %x4) {
4854*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_f32x4:
4855*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff32x4 {{.*#+}} zmm2 {%k1} = zmm0[8,9,10,11,4,5,6,7],zmm1[4,5,6,7,0,1,2,3]
4858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff32x4 {{.*#+}} zmm0 = zmm0[8,9,10,11,4,5,6,7],zmm1[4,5,6,7,0,1,2,3]
4859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm2, %zmm0
4860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4861*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.shuf.f32x4(<16 x float> %x0, <16 x float> %x1, i32 22, <16 x float> %x3, i16 %x4)
4862*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.shuf.f32x4(<16 x float> %x0, <16 x float> %x1, i32 22, <16 x float> %x3, i16 -1)
4863*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
4864*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
4865*9880d681SAndroid Build Coastguard Worker}
4866*9880d681SAndroid Build Coastguard Worker
4867*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.shuf.f64x2(<8 x double>, <8 x double>, i32, <8 x double>, i8)
4868*9880d681SAndroid Build Coastguard Worker
4869*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_shuf_f64x2(<8 x double> %x0, <8 x double> %x1, <8 x double> %x3, i8 %x4) {
4870*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_f64x2:
4871*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4872*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4873*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm2 {%k1} = zmm0[4,5,2,3],zmm1[2,3,0,1]
4874*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm3 {%k1} {z} = zmm0[4,5,2,3],zmm1[2,3,0,1]
4875*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm0[4,5,2,3],zmm1[2,3,0,1]
4876*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
4877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm3, %zmm0, %zmm0
4878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4879*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.shuf.f64x2(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> %x3, i8 %x4)
4880*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.shuf.f64x2(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> %x3, i8 -1)
4881*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.mask.shuf.f64x2(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> zeroinitializer, i8 %x4)
4882*9880d681SAndroid Build Coastguard Worker
4883*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x double> %res, %res1
4884*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res3, %res2
4885*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res4
4886*9880d681SAndroid Build Coastguard Worker}
4887*9880d681SAndroid Build Coastguard Worker
4888*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.shuf.i32x4(<16 x i32>, <16 x i32>, i32, <16 x i32>, i16)
4889*9880d681SAndroid Build Coastguard Worker
4890*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_shuf_i32x4(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x3, i16 %x4) {
4891*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_i32x4:
4892*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4893*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4894*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi32x4 {{.*#+}} zmm2 {%k1} = zmm0[8,9,10,11,4,5,6,7],zmm1[4,5,6,7,0,1,2,3]
4895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi32x4 {{.*#+}} zmm0 = zmm0[8,9,10,11,4,5,6,7],zmm1[4,5,6,7,0,1,2,3]
4896*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
4897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4898*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.shuf.i32x4(<16 x i32> %x0, <16 x i32> %x1, i32 22, <16 x i32> %x3, i16 %x4)
4899*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.shuf.i32x4(<16 x i32> %x0, <16 x i32> %x1, i32 22, <16 x i32> %x3, i16 -1)
4900*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
4901*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
4902*9880d681SAndroid Build Coastguard Worker}
4903*9880d681SAndroid Build Coastguard Worker
4904*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.shuf.i64x2(<8 x i64>, <8 x i64>, i32, <8 x i64>, i8)
4905*9880d681SAndroid Build Coastguard Worker
4906*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_shuf_i64x2(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x3, i8 %x4) {
4907*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_i64x2:
4908*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4909*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4910*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 {{.*#+}} zmm2 {%k1} = zmm0[4,5,2,3],zmm1[2,3,0,1]
4911*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm0[4,5,2,3],zmm1[2,3,0,1]
4912*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm2, %zmm0
4913*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4914*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.shuf.i64x2(<8 x i64> %x0, <8 x i64> %x1, i32 22, <8 x i64> %x3, i8 %x4)
4915*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.shuf.i64x2(<8 x i64> %x0, <8 x i64> %x1, i32 22, <8 x i64> %x3, i8 -1)
4916*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
4917*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
4918*9880d681SAndroid Build Coastguard Worker}
4919*9880d681SAndroid Build Coastguard Worker
4920*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.getmant.pd.512(<8 x double>, i32, <8 x double>, i8, i32)
4921*9880d681SAndroid Build Coastguard Worker
4922*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_getmant_pd_512(<8 x double> %x0, <8 x double> %x2, i8 %x3) {
4923*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_getmant_pd_512:
4924*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4925*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4926*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantpd $11, %zmm0, %zmm1 {%k1}
4927*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantpd $11, {sae}, %zmm0, %zmm0
4928*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
4929*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4930*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.getmant.pd.512(<8 x double> %x0, i32 11, <8 x double> %x2, i8 %x3, i32 4)
4931*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.getmant.pd.512(<8 x double> %x0, i32 11, <8 x double> %x2, i8 -1, i32 8)
4932*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
4933*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
4934*9880d681SAndroid Build Coastguard Worker}
4935*9880d681SAndroid Build Coastguard Worker
4936*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.getmant.ps.512(<16 x float>, i32, <16 x float>, i16, i32)
4937*9880d681SAndroid Build Coastguard Worker
4938*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_getmant_ps_512(<16 x float> %x0, <16 x float> %x2, i16 %x3) {
4939*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_getmant_ps_512:
4940*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantps $11, %zmm0, %zmm1 {%k1}
4943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantps $11, {sae}, %zmm0, %zmm0
4944*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm1, %zmm0
4945*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4946*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.getmant.ps.512(<16 x float> %x0, i32 11, <16 x float> %x2, i16 %x3, i32 4)
4947*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.getmant.ps.512(<16 x float> %x0, i32 11, <16 x float> %x2, i16 -1, i32 8)
4948*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
4949*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
4950*9880d681SAndroid Build Coastguard Worker}
4951*9880d681SAndroid Build Coastguard Worker
4952*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double>, <2 x double>, i32, <2 x double>, i8, i32)
4953*9880d681SAndroid Build Coastguard Worker
4954*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_getmant_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
4955*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_getmant_sd:
4956*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
4958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
4960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantsd $11, %xmm1, %xmm0, %xmm3 {%k1}
4961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantsd $11, %xmm1, %xmm0, %xmm4 {%k1} {z}
4962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantsd $11, %xmm1, %xmm0, %xmm5
4963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantsd $11, {sae}, %xmm1, %xmm0, %xmm2 {%k1}
4964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm4, %xmm3, %xmm0
4965*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm5, %xmm2, %xmm1
4966*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm1, %xmm0, %xmm0
4967*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4968*9880d681SAndroid Build Coastguard Worker  %res  = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %x0, <2 x double> %x1, i32 11, <2 x double> %x2, i8 %x3, i32 4)
4969*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %x0, <2 x double> %x1, i32 11, <2 x double> zeroinitializer, i8 %x3, i32 4)
4970*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %x0, <2 x double> %x1, i32 11, <2 x double> %x2, i8 %x3, i32 8)
4971*9880d681SAndroid Build Coastguard Worker  %res3 = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %x0, <2 x double> %x1, i32 11, <2 x double> %x2, i8 -1, i32 4)
4972*9880d681SAndroid Build Coastguard Worker  %res11 = fadd <2 x double> %res, %res1
4973*9880d681SAndroid Build Coastguard Worker  %res12 = fadd <2 x double> %res2, %res3
4974*9880d681SAndroid Build Coastguard Worker  %res13 = fadd <2 x double> %res11, %res12
4975*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res13
4976*9880d681SAndroid Build Coastguard Worker}
4977*9880d681SAndroid Build Coastguard Worker
4978*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float>, <4 x float>, i32, <4 x float>, i8, i32)
4979*9880d681SAndroid Build Coastguard Worker
4980*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_getmant_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
4981*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_getmant_ss:
4982*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
4984*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
4985*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantss $11, %xmm1, %xmm0, %xmm2 {%k1}
4986*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantss $11, %xmm1, %xmm0, %xmm3 {%k1} {z}
4987*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantss $11, %xmm1, %xmm0, %xmm4
4988*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vgetmantss $11, {sae}, %xmm1, %xmm0, %xmm0
4989*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm3, %xmm2, %xmm1
4990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm4, %xmm0, %xmm0
4991*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm1, %xmm0
4992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
4993*9880d681SAndroid Build Coastguard Worker  %res  = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %x0, <4 x float> %x1, i32 11, <4 x float> %x2, i8 %x3, i32 4)
4994*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %x0, <4 x float> %x1, i32 11, <4 x float> zeroinitializer, i8 %x3, i32 4)
4995*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %x0, <4 x float> %x1, i32 11, <4 x float> %x2, i8 -1, i32 8)
4996*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %x0, <4 x float> %x1, i32 11, <4 x float> %x2, i8 -1, i32 4)
4997*9880d681SAndroid Build Coastguard Worker  %res11 = fadd <4 x float> %res, %res1
4998*9880d681SAndroid Build Coastguard Worker  %res12 = fadd <4 x float> %res2, %res3
4999*9880d681SAndroid Build Coastguard Worker  %res13 = fadd <4 x float> %res11, %res12
5000*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res13
5001*9880d681SAndroid Build Coastguard Worker}
5002*9880d681SAndroid Build Coastguard Worker
5003*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.shuf.pd.512(<8 x double>, <8 x double>, i32, <8 x double>, i8)
5004*9880d681SAndroid Build Coastguard Worker
5005*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_shuf_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x3, i8 %x4) {
5006*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_pd_512:
5007*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5008*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5009*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufpd {{.*#+}} zmm2 {%k1} = zmm0[0],zmm1[1],zmm0[3],zmm1[2],zmm0[5],zmm1[4],zmm0[6],zmm1[6]
5010*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufpd {{.*#+}} zmm3 {%k1} {z} = zmm0[0],zmm1[1],zmm0[3],zmm1[2],zmm0[5],zmm1[4],zmm0[6],zmm1[6]
5011*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufpd {{.*#+}} zmm0 = zmm0[0],zmm1[1],zmm0[3],zmm1[2],zmm0[5],zmm1[4],zmm0[6],zmm1[6]
5012*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
5013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm3, %zmm0, %zmm0
5014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5015*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.shuf.pd.512(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> %x3, i8 %x4)
5016*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.shuf.pd.512(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> %x3, i8 -1)
5017*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.mask.shuf.pd.512(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> zeroinitializer, i8 %x4)
5018*9880d681SAndroid Build Coastguard Worker
5019*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x double> %res, %res1
5020*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res3, %res2
5021*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res4
5022*9880d681SAndroid Build Coastguard Worker}
5023*9880d681SAndroid Build Coastguard Worker
5024*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.shuf.ps.512(<16 x float>, <16 x float>, i32, <16 x float>, i16)
5025*9880d681SAndroid Build Coastguard Worker
5026*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_shuf_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x3, i16 %x4) {
5027*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_ps_512:
5028*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5029*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5030*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufps {{.*#+}} zmm2 {%k1} = zmm0[2,1],zmm1[1,0],zmm0[6,5],zmm1[5,4],zmm0[10,9],zmm1[9,8],zmm0[14,13],zmm1[13,12]
5031*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufps {{.*#+}} zmm0 = zmm0[2,1],zmm1[1,0],zmm0[6,5],zmm1[5,4],zmm0[10,9],zmm1[9,8],zmm0[14,13],zmm1[13,12]
5032*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm2, %zmm0
5033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5034*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.shuf.ps.512(<16 x float> %x0, <16 x float> %x1, i32 22, <16 x float> %x3, i16 %x4)
5035*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.shuf.ps.512(<16 x float> %x0, <16 x float> %x1, i32 22, <16 x float> %x3, i16 -1)
5036*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
5037*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
5038*9880d681SAndroid Build Coastguard Worker}
5039*9880d681SAndroid Build Coastguard Worker
5040*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.vpermilvar.pd.512(<8 x double>, <8 x i64>, <8 x double>, i8)
5041*9880d681SAndroid Build Coastguard Worker
5042*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_vpermilvar_pd_512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3) {
5043*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermilvar_pd_512:
5044*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5045*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermilpd %zmm1, %zmm0, %zmm2 {%k1}
5047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermilpd %zmm1, %zmm0, %zmm3 {%k1} {z}
5048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermilpd %zmm1, %zmm0, %zmm0
5049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm3, %zmm2, %zmm1
5050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm1, %zmm0, %zmm0
5051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5052*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vpermilvar.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3)
5053*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.vpermilvar.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> zeroinitializer, i8 %x3)
5054*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.mask.vpermilvar.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 -1)
5055*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x double> %res, %res1
5056*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res2, %res3
5057*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res4
5058*9880d681SAndroid Build Coastguard Worker}
5059*9880d681SAndroid Build Coastguard Worker
5060*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vpermilvar.ps.512(<16 x float>, <16 x i32>, <16 x float>, i16)
5061*9880d681SAndroid Build Coastguard Worker
5062*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_vpermilvar_ps_512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3) {
5063*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermilvar_ps_512:
5064*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermilps %zmm1, %zmm0, %zmm2 {%k1}
5067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermilps %zmm1, %zmm0, %zmm3 {%k1} {z}
5068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermilps %zmm1, %zmm0, %zmm0
5069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm3, %zmm2, %zmm1
5070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm1, %zmm0, %zmm0
5071*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5072*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vpermilvar.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3)
5073*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.vpermilvar.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> zeroinitializer, i16 %x3)
5074*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x float> @llvm.x86.avx512.mask.vpermilvar.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 -1)
5075*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <16 x float> %res, %res1
5076*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <16 x float> %res2, %res3
5077*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res4
5078*9880d681SAndroid Build Coastguard Worker}
5079*9880d681SAndroid Build Coastguard Worker
5080*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.insertf32x4.512(<16 x float>, <4 x float>, i32, <16 x float>, i16)
5081*9880d681SAndroid Build Coastguard Worker
5082*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_insertf32x4_512(<16 x float> %x0, <4 x float> %x1, <16 x float> %x3, i16 %x4) {
5083*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_insertf32x4_512:
5084*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5085*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf32x4 $1, %xmm1, %zmm0, %zmm2 {%k1}
5087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf32x4 $1, %xmm1, %zmm0, %zmm3 {%k1} {z}
5088*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf32x4 $1, %xmm1, %zmm0, %zmm0
5089*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm2, %zmm0
5090*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
5091*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5092*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.insertf32x4.512(<16 x float> %x0, <4 x float> %x1, i32 1, <16 x float> %x3, i16 %x4)
5093*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.insertf32x4.512(<16 x float> %x0, <4 x float> %x1, i32 1, <16 x float> %x3, i16 -1)
5094*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x float> @llvm.x86.avx512.mask.insertf32x4.512(<16 x float> %x0, <4 x float> %x1, i32 1, <16 x float> zeroinitializer, i16 %x4)
5095*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <16 x float> %res, %res1
5096*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <16 x float> %res2, %res3
5097*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res4
5098*9880d681SAndroid Build Coastguard Worker}
5099*9880d681SAndroid Build Coastguard Worker
5100*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.inserti32x4.512(<16 x i32>, <4 x i32>, i32, <16 x i32>, i16)
5101*9880d681SAndroid Build Coastguard Worker
5102*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_inserti32x4_512(<16 x i32> %x0, <4 x i32> %x1, <16 x i32> %x3, i16 %x4) {
5103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_inserti32x4_512:
5104*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x4 $1, %xmm1, %zmm0, %zmm2 {%k1}
5107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x4 $1, %xmm1, %zmm0, %zmm3 {%k1} {z}
5108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x4 $1, %xmm1, %zmm0, %zmm0
5109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
5110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm3, %zmm0
5111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5112*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.inserti32x4.512(<16 x i32> %x0, <4 x i32> %x1, i32 1, <16 x i32> %x3, i16 %x4)
5113*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.inserti32x4.512(<16 x i32> %x0, <4 x i32> %x1, i32 1, <16 x i32> %x3, i16 -1)
5114*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.inserti32x4.512(<16 x i32> %x0, <4 x i32> %x1, i32 1, <16 x i32> zeroinitializer, i16 %x4)
5115*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5116*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res2, %res3
5117*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5118*9880d681SAndroid Build Coastguard Worker}
5119*9880d681SAndroid Build Coastguard Worker
5120*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.insertf64x4.512(<8 x double>, <4 x double>, i32, <8 x double>, i8)
5121*9880d681SAndroid Build Coastguard Worker
5122*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_insertf64x4_512(<8 x double> %x0, <4 x double> %x1, <8 x double> %x3, i8 %x4) {
5123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_insertf64x4_512:
5124*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm2 {%k1}
5127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm3 {%k1} {z}
5128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
5129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
5130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
5131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5132*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.insertf64x4.512(<8 x double> %x0, <4 x double> %x1, i32 1, <8 x double> %x3, i8 %x4)
5133*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.insertf64x4.512(<8 x double> %x0, <4 x double> %x1, i32 1, <8 x double> %x3, i8 -1)
5134*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.mask.insertf64x4.512(<8 x double> %x0, <4 x double> %x1, i32 1, <8 x double> zeroinitializer, i8 %x4)
5135*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x double> %res, %res1
5136*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res2, %res3
5137*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res4
5138*9880d681SAndroid Build Coastguard Worker}
5139*9880d681SAndroid Build Coastguard Worker
5140*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.inserti64x4.512(<8 x i64>, <4 x i64>, i32, <8 x i64>, i8)
5141*9880d681SAndroid Build Coastguard Worker
5142*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_inserti64x4_512(<8 x i64> %x0, <4 x i64> %x1, <8 x i64> %x3, i8 %x4) {
5143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_inserti64x4_512:
5144*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm2 {%k1}
5147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm3 {%k1} {z}
5148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
5149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm2, %zmm0
5150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm3, %zmm0
5151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5152*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.inserti64x4.512(<8 x i64> %x0, <4 x i64> %x1, i32 1, <8 x i64> %x3, i8 %x4)
5153*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.inserti64x4.512(<8 x i64> %x0, <4 x i64> %x1, i32 1, <8 x i64> %x3, i8 -1)
5154*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.inserti64x4.512(<8 x i64> %x0, <4 x i64> %x1, i32 1, <8 x i64> zeroinitializer, i8 %x4)
5155*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5156*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res2, %res3
5157*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5158*9880d681SAndroid Build Coastguard Worker}
5159*9880d681SAndroid Build Coastguard Worker
5160*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.cvtss2sd.round(<2 x double>, <4 x float>, <2 x double>, i8, i32)
5161*9880d681SAndroid Build Coastguard Worker
5162*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_cvt_ss2sd_round(<2 x double> %x0,<4 x float> %x1, <2 x double> %x2, i8 %x3) {
5163*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ss2sd_round:
5164*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
5166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2sd %xmm1, %xmm0, %xmm2 {%k1}
5168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtss2sd {sae}, %xmm1, %xmm0, %xmm0
5169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm2, %xmm0
5170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5171*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.cvtss2sd.round(<2 x double> %x0, <4 x float> %x1, <2 x double> %x2, i8 %x3, i32 4)
5172*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.cvtss2sd.round(<2 x double> %x0, <4 x float> %x1, <2 x double> %x2, i8 -1, i32 8)
5173*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
5174*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
5175*9880d681SAndroid Build Coastguard Worker}
5176*9880d681SAndroid Build Coastguard Worker
5177*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.cvtsd2ss.round(<4 x float>, <2 x double>, <4 x float>, i8, i32)
5178*9880d681SAndroid Build Coastguard Worker
5179*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_cvt_sd2ss_round(<4 x float> %x0,<2 x double> %x1, <4 x float> %x2, i8 %x3) {
5180*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_sd2ss_round:
5181*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
5183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2ss {rz-sae}, %xmm1, %xmm0, %xmm2 {%k1}
5185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtsd2ss {rn-sae}, %xmm1, %xmm0, %xmm0
5186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm2, %xmm0
5187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5188*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.cvtsd2ss.round(<4 x float> %x0, <2 x double> %x1, <4 x float> %x2, i8 %x3, i32 3)
5189*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.cvtsd2ss.round(<4 x float> %x0, <2 x double> %x1, <4 x float> %x2, i8 -1, i32 8)
5190*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
5191*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
5192*9880d681SAndroid Build Coastguard Worker}
5193*9880d681SAndroid Build Coastguard Worker
5194*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pternlog.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i32, i16)
5195*9880d681SAndroid Build Coastguard Worker
5196*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pternlog_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x4) {
5197*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pternlog_d_512:
5198*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
5201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpternlogd $33, %zmm2, %zmm1, %zmm3 {%k1}
5202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpternlogd $33, %zmm2, %zmm1, %zmm0
5203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm3, %zmm0
5204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5205*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 33, i16 %x4)
5206*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 33, i16 -1)
5207*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
5208*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
5209*9880d681SAndroid Build Coastguard Worker}
5210*9880d681SAndroid Build Coastguard Worker
5211*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.maskz.pternlog.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i32, i16)
5212*9880d681SAndroid Build Coastguard Worker
5213*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_maskz_pternlog_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x4) {
5214*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_pternlog_d_512:
5215*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
5218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpternlogd $33, %zmm2, %zmm1, %zmm3 {%k1} {z}
5219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpternlogd $33, %zmm2, %zmm1, %zmm0
5220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm3, %zmm0
5221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5222*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.maskz.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 33, i16 %x4)
5223*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.maskz.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 33, i16 -1)
5224*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
5225*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
5226*9880d681SAndroid Build Coastguard Worker}
5227*9880d681SAndroid Build Coastguard Worker
5228*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pternlog.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i32, i8)
5229*9880d681SAndroid Build Coastguard Worker
5230*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pternlog_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x4) {
5231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pternlog_q_512:
5232*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
5235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpternlogq $33, %zmm2, %zmm1, %zmm3 {%k1}
5236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpternlogq $33, %zmm2, %zmm1, %zmm0
5237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm3, %zmm0
5238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5239*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pternlog.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i32 33, i8 %x4)
5240*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pternlog.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i32 33, i8 -1)
5241*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
5242*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
5243*9880d681SAndroid Build Coastguard Worker}
5244*9880d681SAndroid Build Coastguard Worker
5245*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.maskz.pternlog.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i32, i8)
5246*9880d681SAndroid Build Coastguard Worker
5247*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_maskz_pternlog_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x4) {
5248*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_pternlog_q_512:
5249*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
5252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpternlogq $33, %zmm2, %zmm1, %zmm3 {%k1} {z}
5253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpternlogq $33, %zmm2, %zmm1, %zmm0
5254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm3, %zmm0
5255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5256*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.maskz.pternlog.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i32 33, i8 %x4)
5257*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.maskz.pternlog.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i32 33, i8 -1)
5258*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
5259*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
5260*9880d681SAndroid Build Coastguard Worker}
5261*9880d681SAndroid Build Coastguard Worker
5262*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_comi_sd_eq_sae(<2 x double> %a0, <2 x double> %a1) {
5263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_comi_sd_eq_sae:
5264*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpeqsd {sae}, %xmm1, %xmm0, %k0
5266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
5267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5268*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 0, i32 8)
5269*9880d681SAndroid Build Coastguard Worker  ret i32 %res
5270*9880d681SAndroid Build Coastguard Worker}
5271*9880d681SAndroid Build Coastguard Worker
5272*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_sd_eq_sae(<2 x double> %a0, <2 x double> %a1) {
5273*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_sd_eq_sae:
5274*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpeq_uqsd {sae}, %xmm1, %xmm0, %k0
5276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
5277*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5278*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 8, i32 8)
5279*9880d681SAndroid Build Coastguard Worker  ret i32 %res
5280*9880d681SAndroid Build Coastguard Worker}
5281*9880d681SAndroid Build Coastguard Worker
5282*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_comi_sd_eq(<2 x double> %a0, <2 x double> %a1) {
5283*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_comi_sd_eq:
5284*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpeqsd %xmm1, %xmm0, %k0
5286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
5287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5288*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 0, i32 4)
5289*9880d681SAndroid Build Coastguard Worker  ret i32 %res
5290*9880d681SAndroid Build Coastguard Worker}
5291*9880d681SAndroid Build Coastguard Worker
5292*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_sd_eq(<2 x double> %a0, <2 x double> %a1) {
5293*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_sd_eq:
5294*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpeq_uqsd %xmm1, %xmm0, %k0
5296*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
5297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5298*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 8, i32 4)
5299*9880d681SAndroid Build Coastguard Worker  ret i32 %res
5300*9880d681SAndroid Build Coastguard Worker}
5301*9880d681SAndroid Build Coastguard Worker
5302*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_comi_sd_lt_sae(<2 x double> %a0, <2 x double> %a1) {
5303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_comi_sd_lt_sae:
5304*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpltsd {sae}, %xmm1, %xmm0, %k0
5306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
5307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5308*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 1, i32 8)
5309*9880d681SAndroid Build Coastguard Worker  ret i32 %res
5310*9880d681SAndroid Build Coastguard Worker}
5311*9880d681SAndroid Build Coastguard Worker
5312*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_sd_lt_sae(<2 x double> %a0, <2 x double> %a1) {
5313*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_sd_lt_sae:
5314*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpngesd {sae}, %xmm1, %xmm0, %k0
5316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
5317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5318*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 9, i32 8)
5319*9880d681SAndroid Build Coastguard Worker  ret i32 %res
5320*9880d681SAndroid Build Coastguard Worker}
5321*9880d681SAndroid Build Coastguard Worker
5322*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_comi_sd_lt(<2 x double> %a0, <2 x double> %a1) {
5323*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_comi_sd_lt:
5324*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpltsd %xmm1, %xmm0, %k0
5326*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
5327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5328*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 1, i32 4)
5329*9880d681SAndroid Build Coastguard Worker  ret i32 %res
5330*9880d681SAndroid Build Coastguard Worker}
5331*9880d681SAndroid Build Coastguard Worker
5332*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_sd_lt(<2 x double> %a0, <2 x double> %a1) {
5333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_sd_lt:
5334*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpngesd %xmm1, %xmm0, %k0
5336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
5337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5338*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 9, i32 4)
5339*9880d681SAndroid Build Coastguard Worker  ret i32 %res
5340*9880d681SAndroid Build Coastguard Worker}
5341*9880d681SAndroid Build Coastguard Worker
5342*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcomi.sd(<2 x double>, <2 x double>, i32, i32)
5343*9880d681SAndroid Build Coastguard Worker
5344*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_ss_lt(<4 x float> %a0, <4 x float> %a1) {
5345*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_ss_lt:
5346*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5347*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcmpngess %xmm1, %xmm0, %k0
5348*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
5349*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5350*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.vcomi.ss(<4 x float> %a0, <4 x float> %a1, i32 9, i32 4)
5351*9880d681SAndroid Build Coastguard Worker  ret i32 %res
5352*9880d681SAndroid Build Coastguard Worker}
5353*9880d681SAndroid Build Coastguard Worker
5354*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcomi.ss(<4 x float>, <4 x float>, i32, i32)
5355*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.move.ss(<4 x float>, <4 x float>, <4 x float>, i8)
5356*9880d681SAndroid Build Coastguard Worker
5357*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_move_ss_rrk(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
5358*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_ss_rrk:
5359*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
5361*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5362*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovss %xmm1, %xmm0, %xmm2 {%k1}
5363*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
5364*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5365*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.move.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
5366*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
5367*9880d681SAndroid Build Coastguard Worker}
5368*9880d681SAndroid Build Coastguard Worker
5369*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_move_ss_rrkz(<4 x float> %x0, <4 x float> %x1, i8 %x2) {
5370*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_ss_rrkz:
5371*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
5373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5374*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovss %xmm1, %xmm0, %xmm0 {%k1} {z}
5375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5376*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.move.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> zeroinitializer, i8 %x2)
5377*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
5378*9880d681SAndroid Build Coastguard Worker}
5379*9880d681SAndroid Build Coastguard Worker
5380*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_move_ss_rr(<4 x float> %x0, <4 x float> %x1, i8 %x2) {
5381*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_ss_rr:
5382*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovss %xmm1, %xmm0, %xmm0
5384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5385*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.move.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> zeroinitializer, i8 -1)
5386*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
5387*9880d681SAndroid Build Coastguard Worker}
5388*9880d681SAndroid Build Coastguard Worker
5389*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.move.sd(<2 x double>, <2 x double>, <2 x double>, i8)
5390*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_move_sd_rr(<2 x double> %x0, <2 x double> %x1, i8 %x2) {
5391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_sd_rr:
5392*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5393*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovsd %xmm1, %xmm0, %xmm0
5394*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5395*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.move.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> zeroinitializer, i8 -1)
5396*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
5397*9880d681SAndroid Build Coastguard Worker}
5398*9880d681SAndroid Build Coastguard Worker
5399*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_move_sd_rrkz(<2 x double> %x0, <2 x double> %x1, i8 %x2) {
5400*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_sd_rrkz:
5401*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5402*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
5403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5404*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovsd %xmm1, %xmm0, %xmm0 {%k1} {z}
5405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5406*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.move.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> zeroinitializer, i8 %x2)
5407*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
5408*9880d681SAndroid Build Coastguard Worker}
5409*9880d681SAndroid Build Coastguard Worker
5410*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_move_sd_rrk(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
5411*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_sd_rrk:
5412*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
5414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovsd %xmm1, %xmm0, %xmm2 {%k1}
5416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0
5417*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5418*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.move.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
5419*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
5420*9880d681SAndroid Build Coastguard Worker}
5421*9880d681SAndroid Build Coastguard Worker
5422*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.broadcastf32x4.512(<4 x float>, <16 x float>, i16)
5423*9880d681SAndroid Build Coastguard Worker
5424*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_broadcastf32x4_512(<4 x float> %x0, <16 x float> %x2, i16 %mask) {
5425*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf32x4_512:
5426*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def>
5428*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5429*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff32x4 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
5430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff32x4 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
5431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff32x4 {{.*#+}} zmm0 = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
5432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm1, %zmm0, %zmm0
5433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm2, %zmm0
5434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5435*9880d681SAndroid Build Coastguard Worker
5436*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x4.512(<4 x float> %x0, <16 x float> %x2, i16 -1)
5437*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x4.512(<4 x float> %x0, <16 x float> %x2, i16 %mask)
5438*9880d681SAndroid Build Coastguard Worker  %res3 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x4.512(<4 x float> %x0, <16 x float> zeroinitializer, i16 %mask)
5439*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <16 x float> %res1, %res2
5440*9880d681SAndroid Build Coastguard Worker  %res5 = fadd <16 x float> %res3, %res4
5441*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res5
5442*9880d681SAndroid Build Coastguard Worker}
5443*9880d681SAndroid Build Coastguard Worker
5444*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.broadcastf64x4.512(<4 x double>, <8 x double>, i8)
5445*9880d681SAndroid Build Coastguard Worker
5446*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_broadcastf64x4_512(<4 x double> %x0, <8 x double> %x2, i8 %mask) {
5447*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf64x4_512:
5448*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5449*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
5450*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5451*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,0,1,2,3]
5452*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,0,1,2,3]
5453*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3,0,1,2,3]
5454*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm1, %zmm0, %zmm0
5455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
5456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5457*9880d681SAndroid Build Coastguard Worker
5458*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x4.512(<4 x double> %x0, <8 x double> %x2, i8 -1)
5459*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x4.512(<4 x double> %x0, <8 x double> %x2, i8 %mask)
5460*9880d681SAndroid Build Coastguard Worker  %res3 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x4.512(<4 x double> %x0, <8 x double> zeroinitializer, i8 %mask)
5461*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res1, %res2
5462*9880d681SAndroid Build Coastguard Worker  %res5 = fadd <8 x double> %res3, %res4
5463*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res5
5464*9880d681SAndroid Build Coastguard Worker}
5465*9880d681SAndroid Build Coastguard Worker
5466*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.broadcasti32x4.512(<4 x i32>, <16 x i32>, i16)
5467*9880d681SAndroid Build Coastguard Worker
5468*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_broadcasti32x4_512(<4 x i32> %x0, <16 x i32> %x2, i16 %mask) {
5469*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti32x4_512:
5470*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5471*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def>
5472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi32x4 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
5474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi32x4 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
5475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi32x4 {{.*#+}} zmm0 = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
5476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm1, %zmm0, %zmm0
5477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
5478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5479*9880d681SAndroid Build Coastguard Worker
5480*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x4.512(<4 x i32> %x0, <16 x i32> %x2, i16 -1)
5481*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x4.512(<4 x i32> %x0, <16 x i32> %x2, i16 %mask)
5482*9880d681SAndroid Build Coastguard Worker  %res3 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x4.512(<4 x i32> %x0, <16 x i32> zeroinitializer, i16 %mask)
5483*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res1, %res2
5484*9880d681SAndroid Build Coastguard Worker  %res5 = add <16 x i32> %res3, %res4
5485*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res5
5486*9880d681SAndroid Build Coastguard Worker}
5487*9880d681SAndroid Build Coastguard Worker
5488*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.broadcasti64x4.512(<4 x i64>, <8 x i64>, i8)
5489*9880d681SAndroid Build Coastguard Worker
5490*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_broadcasti64x4_512(<4 x i64> %x0, <8 x i64> %x2, i8 %mask) {
5491*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti64x4_512:
5492*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
5494*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,0,1,2,3]
5496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,0,1,2,3]
5497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3,0,1,2,3]
5498*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm1, %zmm0, %zmm0
5499*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm2, %zmm0
5500*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5501*9880d681SAndroid Build Coastguard Worker
5502*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x4.512(<4 x i64> %x0, <8 x i64> %x2, i8 -1)
5503*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x4.512(<4 x i64> %x0, <8 x i64> %x2, i8 %mask)
5504*9880d681SAndroid Build Coastguard Worker  %res3 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x4.512(<4 x i64> %x0, <8 x i64> zeroinitializer, i8 %mask)
5505*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res1, %res2
5506*9880d681SAndroid Build Coastguard Worker  %res5 = add <8 x i64> %res3, %res4
5507*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res5
5508*9880d681SAndroid Build Coastguard Worker}
5509*9880d681SAndroid Build Coastguard Worker
5510*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psrl.qi.512(<8 x i64>, i32, <8 x i64>, i8)
5511*9880d681SAndroid Build Coastguard Worker
5512*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_psrl_qi_512(<8 x i64> %x0, i32 %x1, <8 x i64> %x2, i8 %x3) {
5513*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrl_qi_512:
5514*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
5516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlq $255, %zmm0, %zmm1 {%k1}
5517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlq $255, %zmm0, %zmm2 {%k1} {z}
5518*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlq $255, %zmm0, %zmm0
5519*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5520*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm0, %zmm0
5521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5522*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psrl.qi.512(<8 x i64> %x0, i32 255, <8 x i64> %x2, i8 %x3)
5523*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.psrl.qi.512(<8 x i64> %x0, i32 255, <8 x i64> %x2, i8 -1)
5524*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.psrl.qi.512(<8 x i64> %x0, i32 255, <8 x i64> zeroinitializer, i8 %x3)
5525*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5526*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5527*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5528*9880d681SAndroid Build Coastguard Worker}
5529*9880d681SAndroid Build Coastguard Worker
5530*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psrl.di.512(<16 x i32>, i32, <16 x i32>, i16)
5531*9880d681SAndroid Build Coastguard Worker
5532*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_psrl_di_512(<16 x i32> %x0, i32 %x1, <16 x i32> %x2, i16 %x3) {
5533*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrl_di_512:
5534*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
5536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrld $255, %zmm0, %zmm1 {%k1}
5537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrld $255, %zmm0, %zmm2 {%k1} {z}
5538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrld $255, %zmm0, %zmm0
5539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5540*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm2, %zmm0, %zmm0
5541*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5542*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psrl.di.512(<16 x i32> %x0, i32 255, <16 x i32> %x2, i16 %x3)
5543*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.psrl.di.512(<16 x i32> %x0, i32 255, <16 x i32> %x2, i16 -1)
5544*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.psrl.di.512(<16 x i32> %x0, i32 255, <16 x i32> zeroinitializer, i16 %x3)
5545*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5546*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5547*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5548*9880d681SAndroid Build Coastguard Worker}
5549*9880d681SAndroid Build Coastguard Worker
5550*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psra.di.512(<16 x i32>, i32, <16 x i32>, i16)
5551*9880d681SAndroid Build Coastguard Worker
5552*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_psra_di_512(<16 x i32> %x0, i32 %x1, <16 x i32> %x2, i16 %x3) {
5553*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psra_di_512:
5554*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
5556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrad $3, %zmm0, %zmm1 {%k1}
5557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrad $3, %zmm0, %zmm2 {%k1} {z}
5558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrad $3, %zmm0, %zmm0
5559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm2, %zmm1, %zmm1
5560*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5561*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5562*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psra.di.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 %x3)
5563*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.psra.di.512(<16 x i32> %x0, i32 3, <16 x i32> zeroinitializer, i16 %x3)
5564*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.psra.di.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 -1)
5565*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5566*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5567*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5568*9880d681SAndroid Build Coastguard Worker}
5569*9880d681SAndroid Build Coastguard Worker
5570*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psra.qi.512(<8 x i64>, i32, <8 x i64>, i8)
5571*9880d681SAndroid Build Coastguard Worker
5572*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_psra_qi_512(<8 x i64> %x0, i32 %x1, <8 x i64> %x2, i8 %x3) {
5573*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psra_qi_512:
5574*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5575*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
5576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraq $3, %zmm0, %zmm1 {%k1}
5577*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraq $3, %zmm0, %zmm2 {%k1} {z}
5578*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraq $3, %zmm0, %zmm0
5579*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
5580*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5581*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5582*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psra.qi.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 %x3)
5583*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.psra.qi.512(<8 x i64> %x0, i32 3, <8 x i64> zeroinitializer, i8 %x3)
5584*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.psra.qi.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 -1)
5585*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5586*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5587*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5588*9880d681SAndroid Build Coastguard Worker}
5589*9880d681SAndroid Build Coastguard Worker
5590*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psll.di.512(<16 x i32>, i32, <16 x i32>, i16)
5591*9880d681SAndroid Build Coastguard Worker
5592*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_psll_di_512(<16 x i32> %x0, i32 %x1, <16 x i32> %x2, i16 %x3) {
5593*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psll_di_512:
5594*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5595*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
5596*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpslld $3, %zmm0, %zmm1 {%k1}
5597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpslld $3, %zmm0, %zmm2 {%k1} {z}
5598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpslld $3, %zmm0, %zmm0
5599*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm2, %zmm1, %zmm1
5600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5602*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.psll.di.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 %x3)
5603*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.psll.di.512(<16 x i32> %x0, i32 3, <16 x i32> zeroinitializer, i16 %x3)
5604*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.psll.di.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 -1)
5605*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5606*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5607*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5608*9880d681SAndroid Build Coastguard Worker}
5609*9880d681SAndroid Build Coastguard Worker
5610*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psll.qi.512(<8 x i64>, i32, <8 x i64>, i8)
5611*9880d681SAndroid Build Coastguard Worker
5612*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_psll_qi_512(<8 x i64> %x0, i32 %x1, <8 x i64> %x2, i8 %x3) {
5613*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psll_qi_512:
5614*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5615*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
5616*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllq $3, %zmm0, %zmm1 {%k1}
5617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllq $3, %zmm0, %zmm2 {%k1} {z}
5618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllq $3, %zmm0, %zmm0
5619*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
5620*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5621*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5622*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.psll.qi.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 %x3)
5623*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.psll.qi.512(<8 x i64> %x0, i32 3, <8 x i64> zeroinitializer, i8 %x3)
5624*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.psll.qi.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 -1)
5625*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5626*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5627*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5628*9880d681SAndroid Build Coastguard Worker}
5629*9880d681SAndroid Build Coastguard Worker
5630*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.prorv.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
5631*9880d681SAndroid Build Coastguard Worker
5632*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_prorv_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {
5633*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_prorv_d_512:
5634*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprorvd %zmm1, %zmm0, %zmm2 {%k1}
5637*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprorvd %zmm1, %zmm0, %zmm3 {%k1} {z}
5638*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprorvd %zmm1, %zmm0, %zmm0
5639*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm3, %zmm2, %zmm1
5640*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5642*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.prorv.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)
5643*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.prorv.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> zeroinitializer, i16 %x3)
5644*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.prorv.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)
5645*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5646*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5647*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5648*9880d681SAndroid Build Coastguard Worker}
5649*9880d681SAndroid Build Coastguard Worker
5650*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.prorv.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
5651*9880d681SAndroid Build Coastguard Worker
5652*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_prorv_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {
5653*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_prorv_q_512:
5654*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprorvq %zmm1, %zmm0, %zmm2 {%k1}
5657*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprorvq %zmm1, %zmm0, %zmm3 {%k1} {z}
5658*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprorvq %zmm1, %zmm0, %zmm0
5659*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm3, %zmm2, %zmm1
5660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5661*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5662*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.prorv.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)
5663*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.prorv.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> zeroinitializer, i8 %x3)
5664*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.prorv.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)
5665*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5666*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5667*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5668*9880d681SAndroid Build Coastguard Worker}
5669*9880d681SAndroid Build Coastguard Worker
5670*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.prol.d.512(<16 x i32>, i32, <16 x i32>, i16)
5671*9880d681SAndroid Build Coastguard Worker
5672*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_prol_d_512(<16 x i32> %x0, i32 %x1, <16 x i32> %x2, i16 %x3) {
5673*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_prol_d_512:
5674*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5675*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
5676*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprold $3, %zmm0, %zmm1 {%k1}
5677*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprold $3, %zmm0, %zmm2 {%k1} {z}
5678*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprold $3, %zmm0, %zmm0
5679*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm2, %zmm1, %zmm1
5680*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5682*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.prol.d.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 %x3)
5683*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.prol.d.512(<16 x i32> %x0, i32 3, <16 x i32> zeroinitializer, i16 %x3)
5684*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.prol.d.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 -1)
5685*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5686*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5687*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5688*9880d681SAndroid Build Coastguard Worker}
5689*9880d681SAndroid Build Coastguard Worker
5690*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.prol.q.512(<8 x i64>, i32, <8 x i64>, i8)
5691*9880d681SAndroid Build Coastguard Worker
5692*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_prol_q_512(<8 x i64> %x0, i32 %x1, <8 x i64> %x2, i8 %x3) {
5693*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_prol_q_512:
5694*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5695*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
5696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprolq $3, %zmm0, %zmm1 {%k1}
5697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprolq $3, %zmm0, %zmm2 {%k1} {z}
5698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vprolq $3, %zmm0, %zmm0
5699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
5700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5701*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5702*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.prol.q.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 %x3)
5703*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.prol.q.512(<8 x i64> %x0, i32 3, <8 x i64> zeroinitializer, i8 %x3)
5704*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.prol.q.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 -1)
5705*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5706*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5707*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5708*9880d681SAndroid Build Coastguard Worker}
5709*9880d681SAndroid Build Coastguard Worker
5710*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmovzxb.d.512(<16 x i8>, <16 x i32>, i16)
5711*9880d681SAndroid Build Coastguard Worker
5712*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmovzxb_d_512(<16 x i8> %x0, <16 x i32> %x1, i16 %x2) {
5713*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxb_d_512:
5714*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbd {{.*#+}} zmm1 {%k1} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
5717*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbd {{.*#+}} zmm2 {%k1} {z} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
5718*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
5719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm2, %zmm1, %zmm1
5720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5722*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmovzxb.d.512(<16 x i8> %x0, <16 x i32> %x1, i16 %x2)
5723*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmovzxb.d.512(<16 x i8> %x0, <16 x i32> zeroinitializer, i16 %x2)
5724*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.pmovzxb.d.512(<16 x i8> %x0, <16 x i32> %x1, i16 -1)
5725*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5726*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5727*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5728*9880d681SAndroid Build Coastguard Worker}
5729*9880d681SAndroid Build Coastguard Worker
5730*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovzxb.q.512(<16 x i8>, <8 x i64>, i8)
5731*9880d681SAndroid Build Coastguard Worker
5732*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovzxb_q_512(<16 x i8> %x0, <8 x i64> %x1, i8 %x2) {
5733*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxb_q_512:
5734*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5735*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5736*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbq {{.*#+}} zmm1 {%k1} = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero
5737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbq {{.*#+}} zmm2 {%k1} {z} = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero
5738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbq {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero
5739*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
5740*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5741*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5742*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmovzxb.q.512(<16 x i8> %x0, <8 x i64> %x1, i8 %x2)
5743*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxb.q.512(<16 x i8> %x0, <8 x i64> zeroinitializer, i8 %x2)
5744*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxb.q.512(<16 x i8> %x0, <8 x i64> %x1, i8 -1)
5745*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5746*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5747*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5748*9880d681SAndroid Build Coastguard Worker}
5749*9880d681SAndroid Build Coastguard Worker
5750*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovzxd.q.512(<8 x i32>, <8 x i64>, i8)
5751*9880d681SAndroid Build Coastguard Worker
5752*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovzxd_q_512(<8 x i32> %x0, <8 x i64> %x1, i8 %x2) {
5753*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxd_q_512:
5754*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5756*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxdq {{.*#+}} zmm1 {%k1} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero
5757*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxdq {{.*#+}} zmm2 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero
5758*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxdq {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero
5759*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
5760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5762*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmovzxd.q.512(<8 x i32> %x0, <8 x i64> %x1, i8 %x2)
5763*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxd.q.512(<8 x i32> %x0, <8 x i64> zeroinitializer, i8 %x2)
5764*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxd.q.512(<8 x i32> %x0, <8 x i64> %x1, i8 -1)
5765*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5766*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5767*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5768*9880d681SAndroid Build Coastguard Worker}
5769*9880d681SAndroid Build Coastguard Worker
5770*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmovzxw.d.512(<16 x i16>, <16 x i32>, i16)
5771*9880d681SAndroid Build Coastguard Worker
5772*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmovzxw_d_512(<16 x i16> %x0, <16 x i32> %x1, i16 %x2) {
5773*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxw_d_512:
5774*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5775*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxwd {{.*#+}} zmm1 {%k1} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero
5777*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxwd {{.*#+}} zmm2 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero
5778*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero
5779*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm2, %zmm1, %zmm1
5780*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5781*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5782*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmovzxw.d.512(<16 x i16> %x0, <16 x i32> %x1, i16 %x2)
5783*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmovzxw.d.512(<16 x i16> %x0, <16 x i32> zeroinitializer, i16 %x2)
5784*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.pmovzxw.d.512(<16 x i16> %x0, <16 x i32> %x1, i16 -1)
5785*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5786*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5787*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5788*9880d681SAndroid Build Coastguard Worker}
5789*9880d681SAndroid Build Coastguard Worker
5790*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovzxw.q.512(<8 x i16>, <8 x i64>, i8)
5791*9880d681SAndroid Build Coastguard Worker
5792*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovzxw_q_512(<8 x i16> %x0, <8 x i64> %x1, i8 %x2) {
5793*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxw_q_512:
5794*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5796*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxwq {{.*#+}} zmm1 {%k1} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero
5797*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxwq {{.*#+}} zmm2 {%k1} {z} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero
5798*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxwq {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero
5799*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
5800*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5801*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5802*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmovzxw.q.512(<8 x i16> %x0, <8 x i64> %x1, i8 %x2)
5803*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxw.q.512(<8 x i16> %x0, <8 x i64> zeroinitializer, i8 %x2)
5804*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxw.q.512(<8 x i16> %x0, <8 x i64> %x1, i8 -1)
5805*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5806*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5807*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5808*9880d681SAndroid Build Coastguard Worker}
5809*9880d681SAndroid Build Coastguard Worker
5810*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmovsxb.d.512(<16 x i8>, <16 x i32>, i16)
5811*9880d681SAndroid Build Coastguard Worker
5812*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmovsxb_d_512(<16 x i8> %x0, <16 x i32> %x1, i16 %x2) {
5813*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxb_d_512:
5814*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbd %xmm0, %zmm1 {%k1}
5817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbd %xmm0, %zmm2 {%k1} {z}
5818*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbd %xmm0, %zmm0
5819*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm2, %zmm1, %zmm1
5820*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5821*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5822*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmovsxb.d.512(<16 x i8> %x0, <16 x i32> %x1, i16 %x2)
5823*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmovsxb.d.512(<16 x i8> %x0, <16 x i32> zeroinitializer, i16 %x2)
5824*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.pmovsxb.d.512(<16 x i8> %x0, <16 x i32> %x1, i16 -1)
5825*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5826*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5827*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5828*9880d681SAndroid Build Coastguard Worker}
5829*9880d681SAndroid Build Coastguard Worker
5830*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovsxb.q.512(<16 x i8>, <8 x i64>, i8)
5831*9880d681SAndroid Build Coastguard Worker
5832*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovsxb_q_512(<16 x i8> %x0, <8 x i64> %x1, i8 %x2) {
5833*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxb_q_512:
5834*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbq %xmm0, %zmm1 {%k1}
5837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbq %xmm0, %zmm2 {%k1} {z}
5838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbq %xmm0, %zmm0
5839*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
5840*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5841*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5842*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmovsxb.q.512(<16 x i8> %x0, <8 x i64> %x1, i8 %x2)
5843*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxb.q.512(<16 x i8> %x0, <8 x i64> zeroinitializer, i8 %x2)
5844*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxb.q.512(<16 x i8> %x0, <8 x i64> %x1, i8 -1)
5845*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5846*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5847*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5848*9880d681SAndroid Build Coastguard Worker}
5849*9880d681SAndroid Build Coastguard Worker
5850*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovsxd.q.512(<8 x i32>, <8 x i64>, i8)
5851*9880d681SAndroid Build Coastguard Worker
5852*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovsxd_q_512(<8 x i32> %x0, <8 x i64> %x1, i8 %x2) {
5853*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxd_q_512:
5854*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5855*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %ymm0, %zmm1 {%k1}
5857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %ymm0, %zmm2 {%k1} {z}
5858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %ymm0, %zmm0
5859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
5860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5862*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmovsxd.q.512(<8 x i32> %x0, <8 x i64> %x1, i8 %x2)
5863*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxd.q.512(<8 x i32> %x0, <8 x i64> zeroinitializer, i8 %x2)
5864*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxd.q.512(<8 x i32> %x0, <8 x i64> %x1, i8 -1)
5865*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5866*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5867*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5868*9880d681SAndroid Build Coastguard Worker}
5869*9880d681SAndroid Build Coastguard Worker
5870*9880d681SAndroid Build Coastguard Worker
5871*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmovsxw.d.512(<16 x i16>, <16 x i32>, i16)
5872*9880d681SAndroid Build Coastguard Worker
5873*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmovsxw_d_512(<16 x i16> %x0, <16 x i32> %x1, i16 %x2) {
5874*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxw_d_512:
5875*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5876*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxwd %ymm0, %zmm1 {%k1}
5878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxwd %ymm0, %zmm2 {%k1} {z}
5879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxwd %ymm0, %zmm0
5880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm2, %zmm1, %zmm1
5881*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5882*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5883*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmovsxw.d.512(<16 x i16> %x0, <16 x i32> %x1, i16 %x2)
5884*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmovsxw.d.512(<16 x i16> %x0, <16 x i32> zeroinitializer, i16 %x2)
5885*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.pmovsxw.d.512(<16 x i16> %x0, <16 x i32> %x1, i16 -1)
5886*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5887*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5888*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5889*9880d681SAndroid Build Coastguard Worker}
5890*9880d681SAndroid Build Coastguard Worker
5891*9880d681SAndroid Build Coastguard Worker
5892*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovsxw.q.512(<8 x i16>, <8 x i64>, i8)
5893*9880d681SAndroid Build Coastguard Worker
5894*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovsxw_q_512(<8 x i16> %x0, <8 x i64> %x1, i8 %x2) {
5895*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxw_q_512:
5896*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5898*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxwq %xmm0, %zmm1 {%k1}
5899*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxwq %xmm0, %zmm2 {%k1} {z}
5900*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxwq %xmm0, %zmm0
5901*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
5902*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5903*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5904*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmovsxw.q.512(<8 x i16> %x0, <8 x i64> %x1, i8 %x2)
5905*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxw.q.512(<8 x i16> %x0, <8 x i64> zeroinitializer, i8 %x2)
5906*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxw.q.512(<8 x i16> %x0, <8 x i64> %x1, i8 -1)
5907*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5908*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5909*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5910*9880d681SAndroid Build Coastguard Worker}
5911*9880d681SAndroid Build Coastguard Worker
5912*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.permvar.df.512(<8 x double>, <8 x i64>, <8 x double>, i8)
5913*9880d681SAndroid Build Coastguard Worker
5914*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_permvar_df_512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3) {
5915*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_df_512:
5916*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5917*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5918*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermpd %zmm0, %zmm1, %zmm2 {%k1}
5919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermpd %zmm0, %zmm1, %zmm3 {%k1} {z}
5920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermpd %zmm0, %zmm1, %zmm0
5921*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm3, %zmm2, %zmm1
5922*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
5923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5924*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.permvar.df.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3)
5925*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.permvar.df.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> zeroinitializer, i8 %x3)
5926*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.mask.permvar.df.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 -1)
5927*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x double> %res, %res1
5928*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res3, %res2
5929*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res4
5930*9880d681SAndroid Build Coastguard Worker}
5931*9880d681SAndroid Build Coastguard Worker
5932*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.permvar.di.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
5933*9880d681SAndroid Build Coastguard Worker
5934*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_permvar_di_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {
5935*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_di_512:
5936*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5937*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5938*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermq %zmm0, %zmm1, %zmm2 {%k1}
5939*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermq %zmm0, %zmm1, %zmm3 {%k1} {z}
5940*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermq %zmm0, %zmm1, %zmm0
5941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm3, %zmm2, %zmm1
5942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
5943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5944*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.permvar.di.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)
5945*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.permvar.di.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> zeroinitializer, i8 %x3)
5946*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.permvar.di.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)
5947*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
5948*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res3, %res2
5949*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
5950*9880d681SAndroid Build Coastguard Worker}
5951*9880d681SAndroid Build Coastguard Worker
5952*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.permvar.sf.512(<16 x float>, <16 x i32>, <16 x float>, i16)
5953*9880d681SAndroid Build Coastguard Worker
5954*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_permvar_sf_512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3) {
5955*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_sf_512:
5956*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermps %zmm0, %zmm1, %zmm2 {%k1}
5959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermps %zmm0, %zmm1, %zmm3 {%k1} {z}
5960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermps %zmm0, %zmm1, %zmm0
5961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm3, %zmm2, %zmm1
5962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm1, %zmm0
5963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5964*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.permvar.sf.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3)
5965*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.permvar.sf.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> zeroinitializer, i16 %x3)
5966*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x float> @llvm.x86.avx512.mask.permvar.sf.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 -1)
5967*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <16 x float> %res, %res1
5968*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <16 x float> %res3, %res2
5969*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res4
5970*9880d681SAndroid Build Coastguard Worker}
5971*9880d681SAndroid Build Coastguard Worker
5972*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.permvar.si.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)
5973*9880d681SAndroid Build Coastguard Worker
5974*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_permvar_si_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {
5975*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_si_512:
5976*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5977*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5978*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermd %zmm0, %zmm1, %zmm2 {%k1}
5979*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermd %zmm0, %zmm1, %zmm3 {%k1} {z}
5980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermd %zmm0, %zmm1, %zmm0
5981*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm3, %zmm2, %zmm1
5982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
5983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
5984*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.permvar.si.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)
5985*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.permvar.si.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> zeroinitializer, i16 %x3)
5986*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.permvar.si.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)
5987*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
5988*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
5989*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
5990*9880d681SAndroid Build Coastguard Worker}
5991*9880d681SAndroid Build Coastguard Worker
5992*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.fixupimm.pd.512(<8 x double>, <8 x double>, <8 x i64>, i32, i8, i32)
5993*9880d681SAndroid Build Coastguard Worker
5994*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_fixupimm_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i8 %x4) {
5995*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fixupimm_pd_512:
5996*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5997*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
5998*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
5999*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmpd $4, %zmm2, %zmm1, %zmm3 {%k1}
6000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm4, %zmm4, %zmm4
6001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmpd $5, %zmm2, %zmm1, %zmm4 {%k1} {z}
6002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmpd $3, {sae}, %zmm2, %zmm1, %zmm0
6003*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm4, %zmm3, %zmm1
6004*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
6005*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6006*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i32 4, i8 %x4, i32 4)
6007*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.fixupimm.pd.512(<8 x double> zeroinitializer, <8 x double> %x1, <8 x i64> %x2, i32 5, i8 %x4, i32 4)
6008*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.mask.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i32 3, i8 -1, i32 8)
6009*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x double> %res, %res1
6010*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res3, %res2
6011*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res4
6012*9880d681SAndroid Build Coastguard Worker}
6013*9880d681SAndroid Build Coastguard Worker
6014*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.maskz.fixupimm.pd.512(<8 x double>, <8 x double>, <8 x i64>, i32, i8, i32)
6015*9880d681SAndroid Build Coastguard Worker
6016*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_maskz_fixupimm_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i8 %x4) {
6017*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_fixupimm_pd_512:
6018*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6019*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6020*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
6021*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmpd $3, %zmm2, %zmm1, %zmm3 {%k1} {z}
6022*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm4, %zmm4, %zmm4
6023*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm5
6024*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmpd $5, %zmm4, %zmm1, %zmm5 {%k1} {z}
6025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmpd $2, {sae}, %zmm2, %zmm1, %zmm0
6026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm5, %zmm3, %zmm1
6027*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
6028*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6029*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.maskz.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i32 3, i8 %x4, i32 4)
6030*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.maskz.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> zeroinitializer, i32 5, i8 %x4, i32 4)
6031*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.maskz.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i32 2, i8 -1, i32 8)
6032*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x double> %res, %res1
6033*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res3, %res2
6034*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res4
6035*9880d681SAndroid Build Coastguard Worker}
6036*9880d681SAndroid Build Coastguard Worker
6037*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.fixupimm.ss(<4 x float>, <4 x float>, <4 x i32>, i32, i8, i32)
6038*9880d681SAndroid Build Coastguard Worker
6039*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_fixupimm_ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i8 %x4) {
6040*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fixupimm_ss:
6041*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6044*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
6045*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmss $5, %xmm2, %xmm1, %xmm3 {%k1}
6046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxor %xmm4, %xmm4, %xmm4
6047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm5
6048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmss $5, %xmm4, %xmm1, %xmm5 {%k1}
6049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmss $5, {sae}, %xmm2, %xmm1, %xmm0
6050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm5, %xmm3, %xmm1
6051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm1, %xmm0
6052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6053*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i32 5, i8 %x4, i32 4)
6054*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> zeroinitializer, i32 5, i8 %x4, i32 4)
6055*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x float> @llvm.x86.avx512.mask.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i32 5, i8 -1, i32 8)
6056*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <4 x float> %res, %res1
6057*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <4 x float> %res3, %res2
6058*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res4
6059*9880d681SAndroid Build Coastguard Worker}
6060*9880d681SAndroid Build Coastguard Worker
6061*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.maskz.fixupimm.ss(<4 x float>, <4 x float>, <4 x i32>, i32, i8, i32)
6062*9880d681SAndroid Build Coastguard Worker
6063*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_maskz_fixupimm_ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i8 %x4) {
6064*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_fixupimm_ss:
6065*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
6069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmss $5, %xmm2, %xmm1, %xmm3 {%k1} {z}
6070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
6071*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmss $5, %xmm2, %xmm1, %xmm4
6072*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxor %xmm2, %xmm2, %xmm2
6073*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmss $5, {sae}, %xmm2, %xmm1, %xmm0 {%k1} {z}
6074*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0
6075*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm4, %xmm0, %xmm0
6076*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6077*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.maskz.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i32 5, i8 %x4, i32 4)
6078*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.maskz.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> zeroinitializer, i32 5, i8 %x4, i32 8)
6079*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x float> @llvm.x86.avx512.maskz.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i32 5, i8 -1, i32 4)
6080*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <4 x float> %res, %res1
6081*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <4 x float> %res3, %res2
6082*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res4
6083*9880d681SAndroid Build Coastguard Worker}
6084*9880d681SAndroid Build Coastguard Worker
6085*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.fixupimm.ps.512(<16 x float>, <16 x float>, <16 x i32>, i32, i16, i32)
6086*9880d681SAndroid Build Coastguard Worker
6087*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_fixupimm_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i16 %x4) {
6088*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fixupimm_ps_512:
6089*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6090*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6091*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
6092*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmps $5, %zmm2, %zmm1, %zmm3 {%k1}
6093*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm4, %zmm4, %zmm4
6094*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm5
6095*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmps $5, %zmm4, %zmm1, %zmm5 {%k1}
6096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmps $5, {sae}, %zmm2, %zmm1, %zmm0
6097*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm5, %zmm3, %zmm1
6098*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm1, %zmm0
6099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6100*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i32 5, i16 %x4, i32 4)
6101*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> zeroinitializer, i32 5, i16 %x4, i32 4)
6102*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x float> @llvm.x86.avx512.mask.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i32 5, i16 -1, i32 8)
6103*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <16 x float> %res, %res1
6104*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <16 x float> %res3, %res2
6105*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res4
6106*9880d681SAndroid Build Coastguard Worker}
6107*9880d681SAndroid Build Coastguard Worker
6108*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.maskz.fixupimm.ps.512(<16 x float>, <16 x float>, <16 x i32>, i32, i16, i32)
6109*9880d681SAndroid Build Coastguard Worker
6110*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_maskz_fixupimm_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i16 %x4) {
6111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_fixupimm_ps_512:
6112*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
6115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmps $5, %zmm2, %zmm1, %zmm3 {%k1} {z}
6116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
6117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmps $5, %zmm2, %zmm1, %zmm4
6118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %zmm2, %zmm2, %zmm2
6119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmps $5, {sae}, %zmm2, %zmm1, %zmm0 {%k1} {z}
6120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
6121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm4, %zmm0, %zmm0
6122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6123*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.maskz.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i32 5, i16 %x4, i32 4)
6124*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.maskz.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> zeroinitializer, i32 5, i16 %x4, i32 8)
6125*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x float> @llvm.x86.avx512.maskz.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i32 5, i16 -1, i32 4)
6126*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <16 x float> %res, %res1
6127*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <16 x float> %res3, %res2
6128*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res4
6129*9880d681SAndroid Build Coastguard Worker}
6130*9880d681SAndroid Build Coastguard Worker
6131*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.fixupimm.sd(<2 x double>, <2 x double>, <2 x i64>, i32, i8, i32)
6132*9880d681SAndroid Build Coastguard Worker
6133*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_fixupimm_sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i8 %x4) {
6134*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fixupimm_sd:
6135*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
6139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmsd $5, %xmm2, %xmm1, %xmm3 {%k1}
6140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
6141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmsd $5, %xmm2, %xmm1, %xmm4
6142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxor %xmm2, %xmm2, %xmm2
6143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmsd $5, {sae}, %xmm2, %xmm1, %xmm0 {%k1}
6144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0
6145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm4, %xmm0, %xmm0
6146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6147*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i32 5, i8 %x4, i32 4)
6148*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> zeroinitializer, i32 5, i8 %x4, i32 8)
6149*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x double> @llvm.x86.avx512.mask.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i32 5, i8 -1, i32 4)
6150*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <2 x double> %res, %res1
6151*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <2 x double> %res3, %res2
6152*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res4
6153*9880d681SAndroid Build Coastguard Worker}
6154*9880d681SAndroid Build Coastguard Worker
6155*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.maskz.fixupimm.sd(<2 x double>, <2 x double>, <2 x i64>, i32, i8, i32)
6156*9880d681SAndroid Build Coastguard Worker
6157*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_maskz_fixupimm_sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i8 %x4) {
6158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_fixupimm_sd:
6159*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
6163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmsd $5, %xmm2, %xmm1, %xmm3 {%k1} {z}
6164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxor %xmm4, %xmm4, %xmm4
6165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm5
6166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmsd $5, {sae}, %xmm4, %xmm1, %xmm5 {%k1} {z}
6167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfixupimmsd $5, {sae}, %xmm2, %xmm1, %xmm0 {%k1} {z}
6168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm5, %xmm3, %xmm1
6169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm1, %xmm0
6170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6171*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.maskz.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i32 5, i8 %x4, i32 4)
6172*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.maskz.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> zeroinitializer, i32 5, i8 %x4, i32 8)
6173*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x double> @llvm.x86.avx512.maskz.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i32 5, i8 %x4, i32 8)
6174*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <2 x double> %res, %res1
6175*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <2 x double> %res3, %res2
6176*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res4
6177*9880d681SAndroid Build Coastguard Worker}
6178*9880d681SAndroid Build Coastguard Worker
6179*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.ptestnm.d.512(<16 x i32>, <16 x i32>, i16 %x2)
6180*9880d681SAndroid Build Coastguard Worker
6181*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_ptestnm_d_512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2) {
6182*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestnm_d_512:
6183*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmd %zmm1, %zmm0, %k0 {%k1}
6186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
6187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmd %zmm1, %zmm0, %k0
6188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
6189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
6190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
6191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6192*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.ptestnm.d.512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2)
6193*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.ptestnm.d.512(<16 x i32> %x0, <16 x i32> %x1, i16-1)
6194*9880d681SAndroid Build Coastguard Worker  %res2 = add i16 %res, %res1
6195*9880d681SAndroid Build Coastguard Worker  ret i16 %res2
6196*9880d681SAndroid Build Coastguard Worker}
6197*9880d681SAndroid Build Coastguard Worker
6198*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.ptestnm.q.512(<8 x i64>, <8 x i64>, i8 %x2)
6199*9880d681SAndroid Build Coastguard Worker
6200*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_ptestnm_q_512(<8 x i64> %x0, <8 x i64> %x1, i8 %x2) {
6201*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestnm_q_512:
6202*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmq %zmm1, %zmm0, %k0 {%k1}
6205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
6206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmq %zmm1, %zmm0, %k0
6207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
6208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al
6209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
6210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6211*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.ptestnm.q.512(<8 x i64> %x0, <8 x i64> %x1, i8 %x2)
6212*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.ptestnm.q.512(<8 x i64> %x0, <8 x i64> %x1, i8-1)
6213*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res, %res1
6214*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
6215*9880d681SAndroid Build Coastguard Worker}
6216*9880d681SAndroid Build Coastguard Worker
6217*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pbroadcastd_gpr_512(i32 %x0, <16 x i32> %x1, i16 %mask) {
6218*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pbroadcastd_gpr_512:
6219*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
6221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastd %edi, %zmm0 {%k1}
6222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastd %edi, %zmm1 {%k1} {z}
6223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastd %edi, %zmm2
6224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
6225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
6226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6227*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pbroadcast.d.gpr.512(i32 %x0, <16 x i32> %x1, i16 -1)
6228*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pbroadcast.d.gpr.512(i32 %x0, <16 x i32> %x1, i16 %mask)
6229*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.pbroadcast.d.gpr.512(i32 %x0, <16 x i32> zeroinitializer, i16 %mask)
6230*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
6231*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res2, %res3
6232*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
6233*9880d681SAndroid Build Coastguard Worker}
6234*9880d681SAndroid Build Coastguard Worker
6235*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pbroadcast.d.gpr.512(i32, <16 x i32>, i16)
6236*9880d681SAndroid Build Coastguard Worker
6237*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pbroadcastq_gpr_512(i64 %x0, <8 x i64> %x1, i8 %mask) {
6238*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pbroadcastq_gpr_512:
6239*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
6241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastq %rdi, %zmm0 {%k1}
6242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastq %rdi, %zmm1 {%k1} {z}
6243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastq %rdi, %zmm2
6244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm2, %zmm0
6245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
6246*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6247*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pbroadcast.q.gpr.512(i64 %x0, <8 x i64> %x1,i8 -1)
6248*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pbroadcast.q.gpr.512(i64 %x0, <8 x i64> %x1,i8 %mask)
6249*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.pbroadcast.q.gpr.512(i64 %x0, <8 x i64> zeroinitializer,i8 %mask)
6250*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
6251*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res2, %res3
6252*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
6253*9880d681SAndroid Build Coastguard Worker}
6254*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pbroadcast.q.gpr.512(i64, <8 x i64>, i8)
6255*9880d681SAndroid Build Coastguard Worker
6256*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32)
6257*9880d681SAndroid Build Coastguard Worker
6258*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_vfmadd_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3,i32 %x4 ){
6259*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_sd:
6260*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
6264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd132sd %xmm1, %xmm2, %xmm3 {%k1}
6265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm4
6266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213sd %xmm2, %xmm0, %xmm4
6267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm5
6268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd132sd {rz-sae}, %xmm1, %xmm2, %xmm5 {%k1}
6269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213sd {rz-sae}, %xmm2, %xmm0, %xmm1
6270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm3, %xmm4, %xmm0
6271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm5, %xmm1, %xmm1
6272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm1, %xmm0, %xmm0
6273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6274*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1, i32 4)
6275*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 4)
6276*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1, i32 3)
6277*9880d681SAndroid Build Coastguard Worker  %res3 = call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 3)
6278*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <2 x double> %res, %res1
6279*9880d681SAndroid Build Coastguard Worker  %res5 = fadd <2 x double> %res2, %res3
6280*9880d681SAndroid Build Coastguard Worker  %res6 = fadd <2 x double> %res4, %res5
6281*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res6
6282*9880d681SAndroid Build Coastguard Worker}
6283*9880d681SAndroid Build Coastguard Worker
6284*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32)
6285*9880d681SAndroid Build Coastguard Worker
6286*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_vfmadd_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3,i32 %x4 ){
6287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_ss:
6288*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
6292*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd132ss %xmm1, %xmm2, %xmm3 {%k1}
6293*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm4
6294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ss %xmm2, %xmm0, %xmm4
6295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm5
6296*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd132ss {rz-sae}, %xmm1, %xmm2, %xmm5 {%k1}
6297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ss {rz-sae}, %xmm2, %xmm0, %xmm1
6298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm3, %xmm4, %xmm0
6299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm5, %xmm1, %xmm1
6300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm1, %xmm0, %xmm0
6301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6302*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1, i32 4)
6303*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 4)
6304*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1, i32 3)
6305*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 3)
6306*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <4 x float> %res, %res1
6307*9880d681SAndroid Build Coastguard Worker  %res5 = fadd <4 x float> %res2, %res3
6308*9880d681SAndroid Build Coastguard Worker  %res6 = fadd <4 x float> %res4, %res5
6309*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res6
6310*9880d681SAndroid Build Coastguard Worker}
6311*9880d681SAndroid Build Coastguard Worker
6312*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32)
6313*9880d681SAndroid Build Coastguard Worker
6314*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_maskz_vfmadd_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3,i32 %x4 ){
6315*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_sd:
6316*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3
6320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213sd %xmm2, %xmm0, %xmm3 {%k1} {z}
6321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213sd {rz-sae}, %xmm2, %xmm0, %xmm1 {%k1} {z}
6322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm1, %xmm3, %xmm0
6323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6324*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 4)
6325*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 3)
6326*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
6327*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
6328*9880d681SAndroid Build Coastguard Worker}
6329*9880d681SAndroid Build Coastguard Worker
6330*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32)
6331*9880d681SAndroid Build Coastguard Worker
6332*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_maskz_vfmadd_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3,i32 %x4 ){
6333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_ss:
6334*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ss %xmm2, %xmm0, %xmm1 {%k1} {z}
6338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
6339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6340*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 4)
6341*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 3)
6342*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
6343*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
6344*9880d681SAndroid Build Coastguard Worker}
6345*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32)
6346*9880d681SAndroid Build Coastguard Worker
6347*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask3_vfmadd_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3,i32 %x4 ){
6348*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_sd:
6349*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6350*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6351*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6352*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
6353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231sd %xmm1, %xmm0, %xmm3 {%k1}
6354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm4
6355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213sd %xmm2, %xmm0, %xmm4
6356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm5
6357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231sd {rz-sae}, %xmm1, %xmm0, %xmm5 {%k1}
6358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213sd {rz-sae}, %xmm2, %xmm0, %xmm1
6359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm3, %xmm4, %xmm0
6360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm5, %xmm1, %xmm1
6361*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm1, %xmm0, %xmm0
6362*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6363*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1, i32 4)
6364*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 4)
6365*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1, i32 3)
6366*9880d681SAndroid Build Coastguard Worker  %res3 = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 3)
6367*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <2 x double> %res, %res1
6368*9880d681SAndroid Build Coastguard Worker  %res5 = fadd <2 x double> %res2, %res3
6369*9880d681SAndroid Build Coastguard Worker  %res6 = fadd <2 x double> %res4, %res5
6370*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res6
6371*9880d681SAndroid Build Coastguard Worker}
6372*9880d681SAndroid Build Coastguard Worker
6373*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32)
6374*9880d681SAndroid Build Coastguard Worker
6375*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask3_vfmadd_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3,i32 %x4 ){
6376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_ss:
6377*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
6379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
6380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
6381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231ss %xmm1, %xmm0, %xmm3 {%k1}
6382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm4
6383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ss %xmm2, %xmm0, %xmm4
6384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm5
6385*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231ss {rz-sae}, %xmm1, %xmm0, %xmm5 {%k1}
6386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ss {rz-sae}, %xmm2, %xmm0, %xmm1
6387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm3, %xmm4, %xmm0
6388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm5, %xmm1, %xmm1
6389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm1, %xmm0, %xmm0
6390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6391*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1, i32 4)
6392*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 4)
6393*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1, i32 3)
6394*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 3)
6395*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <4 x float> %res, %res1
6396*9880d681SAndroid Build Coastguard Worker  %res5 = fadd <4 x float> %res2, %res3
6397*9880d681SAndroid Build Coastguard Worker  %res6 = fadd <4 x float> %res4, %res5
6398*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res6
6399*9880d681SAndroid Build Coastguard Worker}
6400*9880d681SAndroid Build Coastguard Worker
6401*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask3_vfmadd_ss_rm(<4 x float> %x0, <4 x float> %x1, float *%ptr_b ,i8 %x3,i32 %x4) {
6402*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_ss_rm:
6403*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6404*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %esi
6405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
6406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231ss (%rdi), %xmm0, %xmm1 {%k1}
6407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
6408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6409*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
6410*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
6411*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %vecinit.i, <4 x float> %x1, i8 %x3, i32 4)
6412*9880d681SAndroid Build Coastguard Worker  ret < 4 x float> %res
6413*9880d681SAndroid Build Coastguard Worker}
6414*9880d681SAndroid Build Coastguard Worker
6415*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_vfmadd_ss_rm(<4 x float> %x0, <4 x float> %x1,float *%ptr_b ,i8 %x3,i32 %x4) {
6416*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_ss_rm:
6417*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %esi
6419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1
6420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd132ss (%rdi), %xmm1, %xmm0 {%k1}
6421*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6422*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
6423*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
6424*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0,<4 x float> %vecinit.i, <4 x float> %x1,  i8 %x3, i32 4)
6425*9880d681SAndroid Build Coastguard Worker  ret < 4 x float> %res
6426*9880d681SAndroid Build Coastguard Worker}
6427*9880d681SAndroid Build Coastguard Worker
6428*9880d681SAndroid Build Coastguard Worker
6429*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_maskz_vfmadd_ss_rm(<4 x float> %x0, <4 x float> %x1,float *%ptr_b ,i8 %x3,i32 %x4) {
6430*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_ss_rm:
6431*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kxorw %k0, %k0, %k1
6433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ss (%rdi), %xmm0, %xmm1 {%k1} {z}
6434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0
6435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
6436*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
6437*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
6438*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %vecinit.i, i8 0, i32 4)
6439*9880d681SAndroid Build Coastguard Worker  ret < 4 x float> %res
6440*9880d681SAndroid Build Coastguard Worker}
6441