xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512dqvl-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 -mattr=+avx512dq -mattr=+avx512vl --show-mc-encoding| FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mullo_epi64_rr_512(<8 x i64> %a, <8 x i64> %b) {
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rr_512:
6*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq %zmm1, %zmm0, %zmm0 ## encoding: [0x62,0xf2,0xfd,0x48,0x40,0xc1]
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
9*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
10*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
11*9880d681SAndroid Build Coastguard Worker}
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mullo_epi64_rrk_512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) {
14*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rrk_512:
15*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x40,0xd1]
18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
20*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask)
21*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
22*9880d681SAndroid Build Coastguard Worker}
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mullo_epi64_rrkz_512(<8 x i64> %a, <8 x i64> %b, i8 %mask) {
25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rrkz_512:
26*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq %zmm1, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xc9,0x40,0xc1]
29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
30*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask)
31*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
32*9880d681SAndroid Build Coastguard Worker}
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mullo_epi64_rm_512(<8 x i64> %a, <8 x i64>* %ptr_b) {
35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rm_512:
36*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi), %zmm0, %zmm0 ## encoding: [0x62,0xf2,0xfd,0x48,0x40,0x07]
38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
39*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr_b
40*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
41*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
42*9880d681SAndroid Build Coastguard Worker}
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mullo_epi64_rmk_512(<8 x i64> %a, <8 x i64>* %ptr_b, <8 x i64> %passThru, i8 %mask) {
45*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmk_512:
46*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi), %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x40,0x0f]
49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
51*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr_b
52*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask)
53*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
54*9880d681SAndroid Build Coastguard Worker}
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mullo_epi64_rmkz_512(<8 x i64> %a, <8 x i64>* %ptr_b, i8 %mask) {
57*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmkz_512:
58*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi), %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xc9,0x40,0x07]
61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
62*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i64>, <8 x i64>* %ptr_b
63*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask)
64*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
65*9880d681SAndroid Build Coastguard Worker}
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mullo_epi64_rmb_512(<8 x i64> %a, i64* %ptr_b) {
68*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmb_512:
69*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi){1to8}, %zmm0, %zmm0 ## encoding: [0x62,0xf2,0xfd,0x58,0x40,0x07]
71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
72*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
73*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
74*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
75*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1)
76*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mullo_epi64_rmbk_512(<8 x i64> %a, i64* %ptr_b, <8 x i64> %passThru, i8 %mask) {
80*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmbk_512:
81*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi){1to8}, %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf2,0xfd,0x59,0x40,0x0f]
84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
85*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
86*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
87*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
88*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
89*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask)
90*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
91*9880d681SAndroid Build Coastguard Worker}
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mullo_epi64_rmbkz_512(<8 x i64> %a, i64* %ptr_b, i8 %mask) {
94*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmbkz_512:
95*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xd9,0x40,0x07]
98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
99*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
100*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0
101*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer
102*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask)
103*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
104*9880d681SAndroid Build Coastguard Worker}
105*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmull.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_mullo_epi64_rr_256(<4 x i64> %a, <4 x i64> %b) {
108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rr_256:
109*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0xfd,0x28,0x40,0xc1]
111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
112*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64> %a, <4 x i64> %b, <4 x i64> zeroinitializer, i8 -1)
113*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
114*9880d681SAndroid Build Coastguard Worker}
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_mullo_epi64_rrk_256(<4 x i64> %a, <4 x i64> %b, <4 x i64> %passThru, i8 %mask) {
117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rrk_256:
118*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x40,0xd1]
121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
123*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64> %a, <4 x i64> %b, <4 x i64> %passThru, i8 %mask)
124*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
125*9880d681SAndroid Build Coastguard Worker}
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_mullo_epi64_rrkz_256(<4 x i64> %a, <4 x i64> %b, i8 %mask) {
128*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rrkz_256:
129*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xa9,0x40,0xc1]
132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
133*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64> %a, <4 x i64> %b, <4 x i64> zeroinitializer, i8 %mask)
134*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
135*9880d681SAndroid Build Coastguard Worker}
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_mullo_epi64_rm_256(<4 x i64> %a, <4 x i64>* %ptr_b) {
138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rm_256:
139*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf2,0xfd,0x28,0x40,0x07]
141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
142*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i64>, <4 x i64>* %ptr_b
143*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64> %a, <4 x i64> %b, <4 x i64> zeroinitializer, i8 -1)
144*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
145*9880d681SAndroid Build Coastguard Worker}
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_mullo_epi64_rmk_256(<4 x i64> %a, <4 x i64>* %ptr_b, <4 x i64> %passThru, i8 %mask) {
148*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmk_256:
149*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x40,0x0f]
152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
154*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i64>, <4 x i64>* %ptr_b
155*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64> %a, <4 x i64> %b, <4 x i64> %passThru, i8 %mask)
156*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
157*9880d681SAndroid Build Coastguard Worker}
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_mullo_epi64_rmkz_256(<4 x i64> %a, <4 x i64>* %ptr_b, i8 %mask) {
160*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmkz_256:
161*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xa9,0x40,0x07]
164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
165*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i64>, <4 x i64>* %ptr_b
166*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64> %a, <4 x i64> %b, <4 x i64> zeroinitializer, i8 %mask)
167*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
168*9880d681SAndroid Build Coastguard Worker}
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_mullo_epi64_rmb_256(<4 x i64> %a, i64* %ptr_b) {
171*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmb_256:
172*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi){1to4}, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0xfd,0x38,0x40,0x07]
174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
175*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
176*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x i64> undef, i64 %q, i32 0
177*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x i64> %vecinit.i, <4 x i64> undef, <4 x i32> zeroinitializer
178*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64> %a, <4 x i64> %b, <4 x i64> zeroinitializer, i8 -1)
179*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
180*9880d681SAndroid Build Coastguard Worker}
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_mullo_epi64_rmbk_256(<4 x i64> %a, i64* %ptr_b, <4 x i64> %passThru, i8 %mask) {
183*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmbk_256:
184*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi){1to4}, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0xfd,0x39,0x40,0x0f]
187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
189*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
190*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x i64> undef, i64 %q, i32 0
191*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x i64> %vecinit.i, <4 x i64> undef, <4 x i32> zeroinitializer
192*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64> %a, <4 x i64> %b, <4 x i64> %passThru, i8 %mask)
193*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
194*9880d681SAndroid Build Coastguard Worker}
195*9880d681SAndroid Build Coastguard Worker
196*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_mullo_epi64_rmbkz_256(<4 x i64> %a, i64* %ptr_b, i8 %mask) {
197*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmbkz_256:
198*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi){1to4}, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xb9,0x40,0x07]
201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
202*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
203*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x i64> undef, i64 %q, i32 0
204*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x i64> %vecinit.i, <4 x i64> undef, <4 x i32> zeroinitializer
205*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64> %a, <4 x i64> %b, <4 x i64> zeroinitializer, i8 %mask)
206*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.pmull.q.256(<4 x i64>, <4 x i64>, <4 x i64>, i8)
210*9880d681SAndroid Build Coastguard Worker
211*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mask_mullo_epi64_rr_128(<2 x i64> %a, <2 x i64> %b) {
212*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rr_128:
213*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0xfd,0x08,0x40,0xc1]
215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
216*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64> %a, <2 x i64> %b, <2 x i64> zeroinitializer, i8 -1)
217*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
218*9880d681SAndroid Build Coastguard Worker}
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mask_mullo_epi64_rrk_128(<2 x i64> %a, <2 x i64> %b, <2 x i64> %passThru, i8 %mask) {
221*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rrk_128:
222*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x40,0xd1]
225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
227*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64> %a, <2 x i64> %b, <2 x i64> %passThru, i8 %mask)
228*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
229*9880d681SAndroid Build Coastguard Worker}
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mask_mullo_epi64_rrkz_128(<2 x i64> %a, <2 x i64> %b, i8 %mask) {
232*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rrkz_128:
233*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0x89,0x40,0xc1]
236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
237*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64> %a, <2 x i64> %b, <2 x i64> zeroinitializer, i8 %mask)
238*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
239*9880d681SAndroid Build Coastguard Worker}
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mask_mullo_epi64_rm_128(<2 x i64> %a, <2 x i64>* %ptr_b) {
242*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rm_128:
243*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf2,0xfd,0x08,0x40,0x07]
245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
246*9880d681SAndroid Build Coastguard Worker  %b = load <2 x i64>, <2 x i64>* %ptr_b
247*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64> %a, <2 x i64> %b, <2 x i64> zeroinitializer, i8 -1)
248*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mask_mullo_epi64_rmk_128(<2 x i64> %a, <2 x i64>* %ptr_b, <2 x i64> %passThru, i8 %mask) {
252*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmk_128:
253*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x40,0x0f]
256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
257*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
258*9880d681SAndroid Build Coastguard Worker  %b = load <2 x i64>, <2 x i64>* %ptr_b
259*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64> %a, <2 x i64> %b, <2 x i64> %passThru, i8 %mask)
260*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
261*9880d681SAndroid Build Coastguard Worker}
262*9880d681SAndroid Build Coastguard Worker
263*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mask_mullo_epi64_rmkz_128(<2 x i64> %a, <2 x i64>* %ptr_b, i8 %mask) {
264*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmkz_128:
265*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0x89,0x40,0x07]
268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
269*9880d681SAndroid Build Coastguard Worker  %b = load <2 x i64>, <2 x i64>* %ptr_b
270*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64> %a, <2 x i64> %b, <2 x i64> zeroinitializer, i8 %mask)
271*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
272*9880d681SAndroid Build Coastguard Worker}
273*9880d681SAndroid Build Coastguard Worker
274*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mask_mullo_epi64_rmb_128(<2 x i64> %a, i64* %ptr_b) {
275*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmb_128:
276*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
277*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi){1to2}, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0xfd,0x18,0x40,0x07]
278*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
279*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
280*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <2 x i64> undef, i64 %q, i32 0
281*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <2 x i64> %vecinit.i, <2 x i64> undef, <2 x i32> zeroinitializer
282*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64> %a, <2 x i64> %b, <2 x i64> zeroinitializer, i8 -1)
283*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mask_mullo_epi64_rmbk_128(<2 x i64> %a, i64* %ptr_b, <2 x i64> %passThru, i8 %mask) {
287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmbk_128:
288*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi){1to2}, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0x40,0x0f]
291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
292*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
293*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
294*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <2 x i64> undef, i64 %q, i32 0
295*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <2 x i64> %vecinit.i, <2 x i64> undef, <2 x i32> zeroinitializer
296*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64> %a, <2 x i64> %b, <2 x i64> %passThru, i8 %mask)
297*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mask_mullo_epi64_rmbkz_128(<2 x i64> %a, i64* %ptr_b, i8 %mask) {
301*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi64_rmbkz_128:
302*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
303*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullq (%rdi){1to2}, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0x99,0x40,0x07]
305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
306*9880d681SAndroid Build Coastguard Worker  %q = load i64, i64* %ptr_b
307*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <2 x i64> undef, i64 %q, i32 0
308*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <2 x i64> %vecinit.i, <2 x i64> undef, <2 x i32> zeroinitializer
309*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64> %a, <2 x i64> %b, <2 x i64> zeroinitializer, i8 %mask)
310*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
311*9880d681SAndroid Build Coastguard Worker}
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.pmull.q.128(<2 x i64>, <2 x i64>, <2 x i64>, i8)
314*9880d681SAndroid Build Coastguard Worker
315*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_andnot_ps_rr_128(<4 x float> %a, <4 x float> %b) {
316*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rr_128:
317*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x55,0xc1]
319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
320*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
321*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
322*9880d681SAndroid Build Coastguard Worker}
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_andnot_ps_rrk_128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask) {
325*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rrk_128:
326*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x09,0x55,0xd1]
329*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
330*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
331*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
332*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
333*9880d681SAndroid Build Coastguard Worker}
334*9880d681SAndroid Build Coastguard Worker
335*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_andnot_ps_rrkz_128(<4 x float> %a, <4 x float> %b, i8 %mask) {
336*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rrkz_128:
337*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x55,0xc1]
340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
341*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
342*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
343*9880d681SAndroid Build Coastguard Worker}
344*9880d681SAndroid Build Coastguard Worker
345*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_andnot_ps_rm_128(<4 x float> %a, <4 x float>* %ptr_b) {
346*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rm_128:
347*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
348*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x55,0x07]
349*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
350*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
351*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
352*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_andnot_ps_rmk_128(<4 x float> %a, <4 x float>* %ptr_b, <4 x float> %passThru, i8 %mask) {
356*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmk_128:
357*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x09,0x55,0x0f]
360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
361*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
362*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
363*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
364*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
365*9880d681SAndroid Build Coastguard Worker}
366*9880d681SAndroid Build Coastguard Worker
367*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_andnot_ps_rmkz_128(<4 x float> %a, <4 x float>* %ptr_b, i8 %mask) {
368*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmkz_128:
369*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x55,0x07]
372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
373*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
374*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
375*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
376*9880d681SAndroid Build Coastguard Worker}
377*9880d681SAndroid Build Coastguard Worker
378*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_andnot_ps_rmb_128(<4 x float> %a, float* %ptr_b) {
379*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmb_128:
380*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi){1to4}, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x18,0x55,0x07]
382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
383*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
384*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
385*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
386*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
387*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
388*9880d681SAndroid Build Coastguard Worker}
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_andnot_ps_rmbk_128(<4 x float> %a, float* %ptr_b, <4 x float> %passThru, i8 %mask) {
391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmbk_128:
392*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
393*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
394*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi){1to4}, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x19,0x55,0x0f]
395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
396*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
397*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
398*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
399*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
400*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
401*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
402*9880d681SAndroid Build Coastguard Worker}
403*9880d681SAndroid Build Coastguard Worker
404*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_andnot_ps_rmbkz_128(<4 x float> %a, float* %ptr_b, i8 %mask) {
405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmbkz_128:
406*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi){1to4}, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x99,0x55,0x07]
409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
410*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
411*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
412*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
413*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
414*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
415*9880d681SAndroid Build Coastguard Worker}
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.andn.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
418*9880d681SAndroid Build Coastguard Worker
419*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_andnot_ps_rr_256(<8 x float> %a, <8 x float> %b) {
420*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rr_256:
421*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x55,0xc1]
423*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
424*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
425*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
426*9880d681SAndroid Build Coastguard Worker}
427*9880d681SAndroid Build Coastguard Worker
428*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_andnot_ps_rrk_256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask) {
429*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rrk_256:
430*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0x55,0xd1]
433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
435*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
436*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
437*9880d681SAndroid Build Coastguard Worker}
438*9880d681SAndroid Build Coastguard Worker
439*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_andnot_ps_rrkz_256(<8 x float> %a, <8 x float> %b, i8 %mask) {
440*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rrkz_256:
441*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x55,0xc1]
444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
445*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
446*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
447*9880d681SAndroid Build Coastguard Worker}
448*9880d681SAndroid Build Coastguard Worker
449*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_andnot_ps_rm_256(<8 x float> %a, <8 x float>* %ptr_b) {
450*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rm_256:
451*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
452*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x55,0x07]
453*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
454*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
455*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
456*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
457*9880d681SAndroid Build Coastguard Worker}
458*9880d681SAndroid Build Coastguard Worker
459*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_andnot_ps_rmk_256(<8 x float> %a, <8 x float>* %ptr_b, <8 x float> %passThru, i8 %mask) {
460*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmk_256:
461*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
462*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
463*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0x55,0x0f]
464*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
466*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
467*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
468*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
469*9880d681SAndroid Build Coastguard Worker}
470*9880d681SAndroid Build Coastguard Worker
471*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_andnot_ps_rmkz_256(<8 x float> %a, <8 x float>* %ptr_b, i8 %mask) {
472*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmkz_256:
473*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x55,0x07]
476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
477*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
478*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
479*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
480*9880d681SAndroid Build Coastguard Worker}
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_andnot_ps_rmb_256(<8 x float> %a, float* %ptr_b) {
483*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmb_256:
484*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
485*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi){1to8}, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x38,0x55,0x07]
486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
487*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
488*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
489*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
490*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
491*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
492*9880d681SAndroid Build Coastguard Worker}
493*9880d681SAndroid Build Coastguard Worker
494*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_andnot_ps_rmbk_256(<8 x float> %a, float* %ptr_b, <8 x float> %passThru, i8 %mask) {
495*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmbk_256:
496*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
498*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi){1to8}, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x39,0x55,0x0f]
499*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
500*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
501*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
502*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
503*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
504*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
505*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
506*9880d681SAndroid Build Coastguard Worker}
507*9880d681SAndroid Build Coastguard Worker
508*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_andnot_ps_rmbkz_256(<8 x float> %a, float* %ptr_b, i8 %mask) {
509*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmbkz_256:
510*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
511*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
512*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi){1to8}, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xb9,0x55,0x07]
513*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
514*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
515*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
516*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
517*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
518*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
519*9880d681SAndroid Build Coastguard Worker}
520*9880d681SAndroid Build Coastguard Worker
521*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.andn.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
522*9880d681SAndroid Build Coastguard Worker
523*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_andnot_ps_rr_512(<16 x float> %a, <16 x float> %b) {
524*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rr_512:
525*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps %zmm1, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x55,0xc1]
527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
528*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
529*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
530*9880d681SAndroid Build Coastguard Worker}
531*9880d681SAndroid Build Coastguard Worker
532*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_andnot_ps_rrk_512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask) {
533*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rrk_512:
534*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0x55,0xd1]
537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
539*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
540*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
541*9880d681SAndroid Build Coastguard Worker}
542*9880d681SAndroid Build Coastguard Worker
543*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_andnot_ps_rrkz_512(<16 x float> %a, <16 x float> %b, i16 %mask) {
544*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rrkz_512:
545*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
547*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps %zmm1, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x55,0xc1]
548*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
549*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
550*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
551*9880d681SAndroid Build Coastguard Worker}
552*9880d681SAndroid Build Coastguard Worker
553*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_andnot_ps_rm_512(<16 x float> %a, <16 x float>* %ptr_b) {
554*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rm_512:
555*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi), %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x55,0x07]
557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
558*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
559*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
560*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
561*9880d681SAndroid Build Coastguard Worker}
562*9880d681SAndroid Build Coastguard Worker
563*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_andnot_ps_rmk_512(<16 x float> %a, <16 x float>* %ptr_b, <16 x float> %passThru, i16 %mask) {
564*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmk_512:
565*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
566*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi), %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0x55,0x0f]
568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
570*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
571*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
572*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
573*9880d681SAndroid Build Coastguard Worker}
574*9880d681SAndroid Build Coastguard Worker
575*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_andnot_ps_rmkz_512(<16 x float> %a, <16 x float>* %ptr_b, i16 %mask) {
576*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmkz_512:
577*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
578*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
579*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi), %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x55,0x07]
580*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
581*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
582*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
583*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
584*9880d681SAndroid Build Coastguard Worker}
585*9880d681SAndroid Build Coastguard Worker
586*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_andnot_ps_rmb_512(<16 x float> %a, float* %ptr_b) {
587*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmb_512:
588*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
589*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi){1to16}, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x58,0x55,0x07]
590*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
591*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
592*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
593*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
594*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
595*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
596*9880d681SAndroid Build Coastguard Worker}
597*9880d681SAndroid Build Coastguard Worker
598*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_andnot_ps_rmbk_512(<16 x float> %a, float* %ptr_b, <16 x float> %passThru, i16 %mask) {
599*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmbk_512:
600*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi){1to16}, %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x59,0x55,0x0f]
603*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
605*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
606*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
607*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
608*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
609*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
610*9880d681SAndroid Build Coastguard Worker}
611*9880d681SAndroid Build Coastguard Worker
612*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_andnot_ps_rmbkz_512(<16 x float> %a, float* %ptr_b, i16 %mask) {
613*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_andnot_ps_rmbkz_512:
614*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
615*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
616*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandnps (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xd9,0x55,0x07]
617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
618*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
619*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
620*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
621*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
622*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
623*9880d681SAndroid Build Coastguard Worker}
624*9880d681SAndroid Build Coastguard Worker
625*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.andn.ps.512(<16 x float>, <16 x float>, <16 x float>, i16)
626*9880d681SAndroid Build Coastguard Worker
627*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_and_ps_rr_128(<4 x float> %a, <4 x float> %b) {
628*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rr_128:
629*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
630*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x54,0xc1]
631*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
632*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
633*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
634*9880d681SAndroid Build Coastguard Worker}
635*9880d681SAndroid Build Coastguard Worker
636*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_and_ps_rrk_128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask) {
637*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rrk_128:
638*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
639*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
640*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x09,0x54,0xd1]
641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
642*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
643*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
644*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
645*9880d681SAndroid Build Coastguard Worker}
646*9880d681SAndroid Build Coastguard Worker
647*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_and_ps_rrkz_128(<4 x float> %a, <4 x float> %b, i8 %mask) {
648*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rrkz_128:
649*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
650*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
651*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x54,0xc1]
652*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
653*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
654*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
655*9880d681SAndroid Build Coastguard Worker}
656*9880d681SAndroid Build Coastguard Worker
657*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_and_ps_rm_128(<4 x float> %a, <4 x float>* %ptr_b) {
658*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rm_128:
659*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x54,0x07]
661*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
662*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
663*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
664*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
665*9880d681SAndroid Build Coastguard Worker}
666*9880d681SAndroid Build Coastguard Worker
667*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_and_ps_rmk_128(<4 x float> %a, <4 x float>* %ptr_b, <4 x float> %passThru, i8 %mask) {
668*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmk_128:
669*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x09,0x54,0x0f]
672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
673*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
674*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
675*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
676*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
677*9880d681SAndroid Build Coastguard Worker}
678*9880d681SAndroid Build Coastguard Worker
679*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_and_ps_rmkz_128(<4 x float> %a, <4 x float>* %ptr_b, i8 %mask) {
680*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmkz_128:
681*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x54,0x07]
684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
685*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
686*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
687*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
688*9880d681SAndroid Build Coastguard Worker}
689*9880d681SAndroid Build Coastguard Worker
690*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_and_ps_rmb_128(<4 x float> %a, float* %ptr_b) {
691*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmb_128:
692*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
693*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi){1to4}, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x18,0x54,0x07]
694*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
695*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
696*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
697*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
698*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
699*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
700*9880d681SAndroid Build Coastguard Worker}
701*9880d681SAndroid Build Coastguard Worker
702*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_and_ps_rmbk_128(<4 x float> %a, float* %ptr_b, <4 x float> %passThru, i8 %mask) {
703*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmbk_128:
704*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
705*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
706*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi){1to4}, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x19,0x54,0x0f]
707*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
708*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
709*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
710*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
711*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
712*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
713*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
714*9880d681SAndroid Build Coastguard Worker}
715*9880d681SAndroid Build Coastguard Worker
716*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_and_ps_rmbkz_128(<4 x float> %a, float* %ptr_b, i8 %mask) {
717*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmbkz_128:
718*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi){1to4}, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x99,0x54,0x07]
721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
722*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
723*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
724*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
725*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
726*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
727*9880d681SAndroid Build Coastguard Worker}
728*9880d681SAndroid Build Coastguard Worker
729*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.and.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
730*9880d681SAndroid Build Coastguard Worker
731*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_and_ps_rr_256(<8 x float> %a, <8 x float> %b) {
732*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rr_256:
733*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
734*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x54,0xc1]
735*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
736*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
737*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
738*9880d681SAndroid Build Coastguard Worker}
739*9880d681SAndroid Build Coastguard Worker
740*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_and_ps_rrk_256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask) {
741*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rrk_256:
742*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
743*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0x54,0xd1]
745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
747*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
748*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
749*9880d681SAndroid Build Coastguard Worker}
750*9880d681SAndroid Build Coastguard Worker
751*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_and_ps_rrkz_256(<8 x float> %a, <8 x float> %b, i8 %mask) {
752*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rrkz_256:
753*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
754*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x54,0xc1]
756*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
757*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
758*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
759*9880d681SAndroid Build Coastguard Worker}
760*9880d681SAndroid Build Coastguard Worker
761*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_and_ps_rm_256(<8 x float> %a, <8 x float>* %ptr_b) {
762*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rm_256:
763*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
764*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x54,0x07]
765*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
766*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
767*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
768*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
769*9880d681SAndroid Build Coastguard Worker}
770*9880d681SAndroid Build Coastguard Worker
771*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_and_ps_rmk_256(<8 x float> %a, <8 x float>* %ptr_b, <8 x float> %passThru, i8 %mask) {
772*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmk_256:
773*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
774*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
775*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0x54,0x0f]
776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
777*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
778*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
779*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
780*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
781*9880d681SAndroid Build Coastguard Worker}
782*9880d681SAndroid Build Coastguard Worker
783*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_and_ps_rmkz_256(<8 x float> %a, <8 x float>* %ptr_b, i8 %mask) {
784*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmkz_256:
785*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
786*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
787*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x54,0x07]
788*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
789*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
790*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
791*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
792*9880d681SAndroid Build Coastguard Worker}
793*9880d681SAndroid Build Coastguard Worker
794*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_and_ps_rmb_256(<8 x float> %a, float* %ptr_b) {
795*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmb_256:
796*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
797*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi){1to8}, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x38,0x54,0x07]
798*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
799*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
800*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
801*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
802*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
803*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
804*9880d681SAndroid Build Coastguard Worker}
805*9880d681SAndroid Build Coastguard Worker
806*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_and_ps_rmbk_256(<8 x float> %a, float* %ptr_b, <8 x float> %passThru, i8 %mask) {
807*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmbk_256:
808*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
809*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
810*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi){1to8}, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x39,0x54,0x0f]
811*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
812*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
813*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
814*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
815*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
816*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
817*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
818*9880d681SAndroid Build Coastguard Worker}
819*9880d681SAndroid Build Coastguard Worker
820*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_and_ps_rmbkz_256(<8 x float> %a, float* %ptr_b, i8 %mask) {
821*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmbkz_256:
822*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
823*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
824*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi){1to8}, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xb9,0x54,0x07]
825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
826*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
827*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
828*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
829*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
830*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
831*9880d681SAndroid Build Coastguard Worker}
832*9880d681SAndroid Build Coastguard Worker
833*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.and.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
834*9880d681SAndroid Build Coastguard Worker
835*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_and_ps_rr_512(<16 x float> %a, <16 x float> %b) {
836*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rr_512:
837*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps %zmm1, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x54,0xc1]
839*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
840*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
841*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
842*9880d681SAndroid Build Coastguard Worker}
843*9880d681SAndroid Build Coastguard Worker
844*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_and_ps_rrk_512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask) {
845*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rrk_512:
846*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
847*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
848*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0x54,0xd1]
849*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
850*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
851*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
852*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
853*9880d681SAndroid Build Coastguard Worker}
854*9880d681SAndroid Build Coastguard Worker
855*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_and_ps_rrkz_512(<16 x float> %a, <16 x float> %b, i16 %mask) {
856*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rrkz_512:
857*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps %zmm1, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x54,0xc1]
860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
861*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
862*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
863*9880d681SAndroid Build Coastguard Worker}
864*9880d681SAndroid Build Coastguard Worker
865*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_and_ps_rm_512(<16 x float> %a, <16 x float>* %ptr_b) {
866*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rm_512:
867*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
868*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi), %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x54,0x07]
869*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
870*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
871*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
872*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
873*9880d681SAndroid Build Coastguard Worker}
874*9880d681SAndroid Build Coastguard Worker
875*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_and_ps_rmk_512(<16 x float> %a, <16 x float>* %ptr_b, <16 x float> %passThru, i16 %mask) {
876*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmk_512:
877*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi), %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0x54,0x0f]
880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
881*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
882*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
883*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
884*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
885*9880d681SAndroid Build Coastguard Worker}
886*9880d681SAndroid Build Coastguard Worker
887*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_and_ps_rmkz_512(<16 x float> %a, <16 x float>* %ptr_b, i16 %mask) {
888*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmkz_512:
889*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
890*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
891*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi), %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x54,0x07]
892*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
893*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
894*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
895*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
896*9880d681SAndroid Build Coastguard Worker}
897*9880d681SAndroid Build Coastguard Worker
898*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_and_ps_rmb_512(<16 x float> %a, float* %ptr_b) {
899*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmb_512:
900*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
901*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi){1to16}, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x58,0x54,0x07]
902*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
903*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
904*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
905*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
906*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
907*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
908*9880d681SAndroid Build Coastguard Worker}
909*9880d681SAndroid Build Coastguard Worker
910*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_and_ps_rmbk_512(<16 x float> %a, float* %ptr_b, <16 x float> %passThru, i16 %mask) {
911*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmbk_512:
912*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
913*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
914*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi){1to16}, %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x59,0x54,0x0f]
915*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
916*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
917*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
918*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
919*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
920*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
921*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
922*9880d681SAndroid Build Coastguard Worker}
923*9880d681SAndroid Build Coastguard Worker
924*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_and_ps_rmbkz_512(<16 x float> %a, float* %ptr_b, i16 %mask) {
925*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_and_ps_rmbkz_512:
926*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
927*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
928*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vandps (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xd9,0x54,0x07]
929*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
930*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
931*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
932*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
933*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
934*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
935*9880d681SAndroid Build Coastguard Worker}
936*9880d681SAndroid Build Coastguard Worker
937*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.and.ps.512(<16 x float>, <16 x float>, <16 x float>, i16)
938*9880d681SAndroid Build Coastguard Worker
939*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_or_ps_rr_128(<4 x float> %a, <4 x float> %b) {
940*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rr_128:
941*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x56,0xc1]
943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
944*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
945*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
946*9880d681SAndroid Build Coastguard Worker}
947*9880d681SAndroid Build Coastguard Worker
948*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_or_ps_rrk_128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask) {
949*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rrk_128:
950*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
951*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x09,0x56,0xd1]
953*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
954*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
955*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
956*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
957*9880d681SAndroid Build Coastguard Worker}
958*9880d681SAndroid Build Coastguard Worker
959*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_or_ps_rrkz_128(<4 x float> %a, <4 x float> %b, i8 %mask) {
960*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rrkz_128:
961*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x56,0xc1]
964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
965*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
966*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
967*9880d681SAndroid Build Coastguard Worker}
968*9880d681SAndroid Build Coastguard Worker
969*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_or_ps_rm_128(<4 x float> %a, <4 x float>* %ptr_b) {
970*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rm_128:
971*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
972*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x56,0x07]
973*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
974*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
975*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
976*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
977*9880d681SAndroid Build Coastguard Worker}
978*9880d681SAndroid Build Coastguard Worker
979*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_or_ps_rmk_128(<4 x float> %a, <4 x float>* %ptr_b, <4 x float> %passThru, i8 %mask) {
980*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmk_128:
981*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x09,0x56,0x0f]
984*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
985*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
986*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
987*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
988*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
989*9880d681SAndroid Build Coastguard Worker}
990*9880d681SAndroid Build Coastguard Worker
991*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_or_ps_rmkz_128(<4 x float> %a, <4 x float>* %ptr_b, i8 %mask) {
992*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmkz_128:
993*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
994*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
995*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x56,0x07]
996*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
997*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
998*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
999*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1000*9880d681SAndroid Build Coastguard Worker}
1001*9880d681SAndroid Build Coastguard Worker
1002*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_or_ps_rmb_128(<4 x float> %a, float* %ptr_b) {
1003*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmb_128:
1004*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1005*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi){1to4}, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x18,0x56,0x07]
1006*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1007*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1008*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1009*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
1010*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
1011*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1012*9880d681SAndroid Build Coastguard Worker}
1013*9880d681SAndroid Build Coastguard Worker
1014*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_or_ps_rmbk_128(<4 x float> %a, float* %ptr_b, <4 x float> %passThru, i8 %mask) {
1015*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmbk_128:
1016*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1017*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1018*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi){1to4}, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x19,0x56,0x0f]
1019*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1020*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1021*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1022*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1023*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
1024*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
1025*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1026*9880d681SAndroid Build Coastguard Worker}
1027*9880d681SAndroid Build Coastguard Worker
1028*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_or_ps_rmbkz_128(<4 x float> %a, float* %ptr_b, i8 %mask) {
1029*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmbkz_128:
1030*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1031*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1032*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi){1to4}, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x99,0x56,0x07]
1033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1034*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1035*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1036*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
1037*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
1038*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1039*9880d681SAndroid Build Coastguard Worker}
1040*9880d681SAndroid Build Coastguard Worker
1041*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.or.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
1042*9880d681SAndroid Build Coastguard Worker
1043*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_or_ps_rr_256(<8 x float> %a, <8 x float> %b) {
1044*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rr_256:
1045*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x56,0xc1]
1047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1048*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
1049*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1050*9880d681SAndroid Build Coastguard Worker}
1051*9880d681SAndroid Build Coastguard Worker
1052*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_or_ps_rrk_256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask) {
1053*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rrk_256:
1054*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1055*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1056*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0x56,0xd1]
1057*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
1058*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1059*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
1060*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1061*9880d681SAndroid Build Coastguard Worker}
1062*9880d681SAndroid Build Coastguard Worker
1063*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_or_ps_rrkz_256(<8 x float> %a, <8 x float> %b, i8 %mask) {
1064*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rrkz_256:
1065*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x56,0xc1]
1068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1069*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
1070*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1071*9880d681SAndroid Build Coastguard Worker}
1072*9880d681SAndroid Build Coastguard Worker
1073*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_or_ps_rm_256(<8 x float> %a, <8 x float>* %ptr_b) {
1074*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rm_256:
1075*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1076*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x56,0x07]
1077*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1078*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
1079*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
1080*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1081*9880d681SAndroid Build Coastguard Worker}
1082*9880d681SAndroid Build Coastguard Worker
1083*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_or_ps_rmk_256(<8 x float> %a, <8 x float>* %ptr_b, <8 x float> %passThru, i8 %mask) {
1084*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmk_256:
1085*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0x56,0x0f]
1088*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1089*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1090*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
1091*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
1092*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1093*9880d681SAndroid Build Coastguard Worker}
1094*9880d681SAndroid Build Coastguard Worker
1095*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_or_ps_rmkz_256(<8 x float> %a, <8 x float>* %ptr_b, i8 %mask) {
1096*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmkz_256:
1097*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1098*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x56,0x07]
1100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1101*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
1102*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
1103*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1104*9880d681SAndroid Build Coastguard Worker}
1105*9880d681SAndroid Build Coastguard Worker
1106*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_or_ps_rmb_256(<8 x float> %a, float* %ptr_b) {
1107*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmb_256:
1108*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi){1to8}, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x38,0x56,0x07]
1110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1111*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1112*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
1113*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
1114*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
1115*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1116*9880d681SAndroid Build Coastguard Worker}
1117*9880d681SAndroid Build Coastguard Worker
1118*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_or_ps_rmbk_256(<8 x float> %a, float* %ptr_b, <8 x float> %passThru, i8 %mask) {
1119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmbk_256:
1120*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi){1to8}, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x39,0x56,0x0f]
1123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1125*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1126*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
1127*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
1128*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
1129*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1130*9880d681SAndroid Build Coastguard Worker}
1131*9880d681SAndroid Build Coastguard Worker
1132*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_or_ps_rmbkz_256(<8 x float> %a, float* %ptr_b, i8 %mask) {
1133*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmbkz_256:
1134*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi){1to8}, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xb9,0x56,0x07]
1137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1138*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1139*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
1140*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
1141*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
1142*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1143*9880d681SAndroid Build Coastguard Worker}
1144*9880d681SAndroid Build Coastguard Worker
1145*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.or.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
1146*9880d681SAndroid Build Coastguard Worker
1147*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_or_ps_rr_512(<16 x float> %a, <16 x float> %b) {
1148*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rr_512:
1149*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps %zmm1, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x56,0xc1]
1151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1152*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
1153*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1154*9880d681SAndroid Build Coastguard Worker}
1155*9880d681SAndroid Build Coastguard Worker
1156*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_or_ps_rrk_512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask) {
1157*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rrk_512:
1158*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0x56,0xd1]
1161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
1162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1163*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
1164*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1165*9880d681SAndroid Build Coastguard Worker}
1166*9880d681SAndroid Build Coastguard Worker
1167*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_or_ps_rrkz_512(<16 x float> %a, <16 x float> %b, i16 %mask) {
1168*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rrkz_512:
1169*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps %zmm1, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x56,0xc1]
1172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1173*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
1174*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1175*9880d681SAndroid Build Coastguard Worker}
1176*9880d681SAndroid Build Coastguard Worker
1177*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_or_ps_rm_512(<16 x float> %a, <16 x float>* %ptr_b) {
1178*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rm_512:
1179*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi), %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x56,0x07]
1181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1182*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
1183*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
1184*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1185*9880d681SAndroid Build Coastguard Worker}
1186*9880d681SAndroid Build Coastguard Worker
1187*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_or_ps_rmk_512(<16 x float> %a, <16 x float>* %ptr_b, <16 x float> %passThru, i16 %mask) {
1188*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmk_512:
1189*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi), %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0x56,0x0f]
1192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1194*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
1195*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
1196*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1197*9880d681SAndroid Build Coastguard Worker}
1198*9880d681SAndroid Build Coastguard Worker
1199*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_or_ps_rmkz_512(<16 x float> %a, <16 x float>* %ptr_b, i16 %mask) {
1200*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmkz_512:
1201*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi), %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x56,0x07]
1204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1205*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
1206*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
1207*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1208*9880d681SAndroid Build Coastguard Worker}
1209*9880d681SAndroid Build Coastguard Worker
1210*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_or_ps_rmb_512(<16 x float> %a, float* %ptr_b) {
1211*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmb_512:
1212*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi){1to16}, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x58,0x56,0x07]
1214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1215*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1216*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
1217*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
1218*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
1219*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1220*9880d681SAndroid Build Coastguard Worker}
1221*9880d681SAndroid Build Coastguard Worker
1222*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_or_ps_rmbk_512(<16 x float> %a, float* %ptr_b, <16 x float> %passThru, i16 %mask) {
1223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmbk_512:
1224*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi){1to16}, %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x59,0x56,0x0f]
1227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1229*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1230*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
1231*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
1232*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
1233*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1234*9880d681SAndroid Build Coastguard Worker}
1235*9880d681SAndroid Build Coastguard Worker
1236*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_or_ps_rmbkz_512(<16 x float> %a, float* %ptr_b, i16 %mask) {
1237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_or_ps_rmbkz_512:
1238*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vorps (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xd9,0x56,0x07]
1241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1242*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1243*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
1244*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
1245*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
1246*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1247*9880d681SAndroid Build Coastguard Worker}
1248*9880d681SAndroid Build Coastguard Worker
1249*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.or.ps.512(<16 x float>, <16 x float>, <16 x float>, i16)
1250*9880d681SAndroid Build Coastguard Worker
1251*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_xor_ps_rr_128(<4 x float> %a, <4 x float> %b) {
1252*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rr_128:
1253*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x57,0xc1]
1255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1256*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
1257*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1258*9880d681SAndroid Build Coastguard Worker}
1259*9880d681SAndroid Build Coastguard Worker
1260*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_xor_ps_rrk_128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask) {
1261*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rrk_128:
1262*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x09,0x57,0xd1]
1265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
1266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1267*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
1268*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1269*9880d681SAndroid Build Coastguard Worker}
1270*9880d681SAndroid Build Coastguard Worker
1271*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_xor_ps_rrkz_128(<4 x float> %a, <4 x float> %b, i8 %mask) {
1272*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rrkz_128:
1273*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x57,0xc1]
1276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1277*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
1278*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1279*9880d681SAndroid Build Coastguard Worker}
1280*9880d681SAndroid Build Coastguard Worker
1281*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_xor_ps_rm_128(<4 x float> %a, <4 x float>* %ptr_b) {
1282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rm_128:
1283*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x57,0x07]
1285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1286*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
1287*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
1288*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1289*9880d681SAndroid Build Coastguard Worker}
1290*9880d681SAndroid Build Coastguard Worker
1291*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_xor_ps_rmk_128(<4 x float> %a, <4 x float>* %ptr_b, <4 x float> %passThru, i8 %mask) {
1292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmk_128:
1293*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x09,0x57,0x0f]
1296*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1298*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
1299*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
1300*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1301*9880d681SAndroid Build Coastguard Worker}
1302*9880d681SAndroid Build Coastguard Worker
1303*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_xor_ps_rmkz_128(<4 x float> %a, <4 x float>* %ptr_b, i8 %mask) {
1304*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmkz_128:
1305*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x57,0x07]
1308*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1309*9880d681SAndroid Build Coastguard Worker  %b = load <4 x float>, <4 x float>* %ptr_b
1310*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
1311*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1312*9880d681SAndroid Build Coastguard Worker}
1313*9880d681SAndroid Build Coastguard Worker
1314*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_xor_ps_rmb_128(<4 x float> %a, float* %ptr_b) {
1315*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmb_128:
1316*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi){1to4}, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7c,0x18,0x57,0x07]
1318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1319*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1320*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1321*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
1322*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 -1)
1323*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1324*9880d681SAndroid Build Coastguard Worker}
1325*9880d681SAndroid Build Coastguard Worker
1326*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_xor_ps_rmbk_128(<4 x float> %a, float* %ptr_b, <4 x float> %passThru, i8 %mask) {
1327*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmbk_128:
1328*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1329*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1330*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi){1to4}, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x19,0x57,0x0f]
1331*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1332*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1333*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1334*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1335*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
1336*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %passThru, i8 %mask)
1337*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1338*9880d681SAndroid Build Coastguard Worker}
1339*9880d681SAndroid Build Coastguard Worker
1340*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_xor_ps_rmbkz_128(<4 x float> %a, float* %ptr_b, i8 %mask) {
1341*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmbkz_128:
1342*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1343*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1344*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi){1to4}, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x99,0x57,0x07]
1345*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1346*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1347*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1348*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x float> %vecinit.i, <4 x float> undef, <4 x i32> zeroinitializer
1349*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> zeroinitializer, i8 %mask)
1350*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1351*9880d681SAndroid Build Coastguard Worker}
1352*9880d681SAndroid Build Coastguard Worker
1353*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.xor.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
1354*9880d681SAndroid Build Coastguard Worker
1355*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_xor_ps_rr_256(<8 x float> %a, <8 x float> %b) {
1356*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rr_256:
1357*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x57,0xc1]
1359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1360*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
1361*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1362*9880d681SAndroid Build Coastguard Worker}
1363*9880d681SAndroid Build Coastguard Worker
1364*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_xor_ps_rrk_256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask) {
1365*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rrk_256:
1366*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0x57,0xd1]
1369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
1370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1371*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
1372*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1373*9880d681SAndroid Build Coastguard Worker}
1374*9880d681SAndroid Build Coastguard Worker
1375*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_xor_ps_rrkz_256(<8 x float> %a, <8 x float> %b, i8 %mask) {
1376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rrkz_256:
1377*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x57,0xc1]
1380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1381*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
1382*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1383*9880d681SAndroid Build Coastguard Worker}
1384*9880d681SAndroid Build Coastguard Worker
1385*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_xor_ps_rm_256(<8 x float> %a, <8 x float>* %ptr_b) {
1386*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rm_256:
1387*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x57,0x07]
1389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1390*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
1391*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
1392*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1393*9880d681SAndroid Build Coastguard Worker}
1394*9880d681SAndroid Build Coastguard Worker
1395*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_xor_ps_rmk_256(<8 x float> %a, <8 x float>* %ptr_b, <8 x float> %passThru, i8 %mask) {
1396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmk_256:
1397*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0x57,0x0f]
1400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1401*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1402*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
1403*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
1404*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1405*9880d681SAndroid Build Coastguard Worker}
1406*9880d681SAndroid Build Coastguard Worker
1407*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_xor_ps_rmkz_256(<8 x float> %a, <8 x float>* %ptr_b, i8 %mask) {
1408*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmkz_256:
1409*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x57,0x07]
1412*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1413*9880d681SAndroid Build Coastguard Worker  %b = load <8 x float>, <8 x float>* %ptr_b
1414*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
1415*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1416*9880d681SAndroid Build Coastguard Worker}
1417*9880d681SAndroid Build Coastguard Worker
1418*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_xor_ps_rmb_256(<8 x float> %a, float* %ptr_b) {
1419*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmb_256:
1420*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1421*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi){1to8}, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7c,0x38,0x57,0x07]
1422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1423*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1424*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
1425*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
1426*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 -1)
1427*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1428*9880d681SAndroid Build Coastguard Worker}
1429*9880d681SAndroid Build Coastguard Worker
1430*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_xor_ps_rmbk_256(<8 x float> %a, float* %ptr_b, <8 x float> %passThru, i8 %mask) {
1431*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmbk_256:
1432*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi){1to8}, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x39,0x57,0x0f]
1435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1437*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1438*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
1439*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
1440*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %passThru, i8 %mask)
1441*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1442*9880d681SAndroid Build Coastguard Worker}
1443*9880d681SAndroid Build Coastguard Worker
1444*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_xor_ps_rmbkz_256(<8 x float> %a, float* %ptr_b, i8 %mask) {
1445*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmbkz_256:
1446*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %esi, %k1 ## encoding: [0xc5,0xf9,0x92,0xce]
1448*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi){1to8}, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xb9,0x57,0x07]
1449*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1450*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1451*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x float> undef, float %q, i32 0
1452*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x float> %vecinit.i, <8 x float> undef, <8 x i32> zeroinitializer
1453*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> zeroinitializer, i8 %mask)
1454*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1455*9880d681SAndroid Build Coastguard Worker}
1456*9880d681SAndroid Build Coastguard Worker
1457*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.xor.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
1458*9880d681SAndroid Build Coastguard Worker
1459*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_xor_ps_rr_512(<16 x float> %a, <16 x float> %b) {
1460*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rr_512:
1461*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1462*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps %zmm1, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x57,0xc1]
1463*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1464*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
1465*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1466*9880d681SAndroid Build Coastguard Worker}
1467*9880d681SAndroid Build Coastguard Worker
1468*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_xor_ps_rrk_512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask) {
1469*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rrk_512:
1470*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1471*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0x57,0xd1]
1473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
1474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1475*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
1476*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1477*9880d681SAndroid Build Coastguard Worker}
1478*9880d681SAndroid Build Coastguard Worker
1479*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_xor_ps_rrkz_512(<16 x float> %a, <16 x float> %b, i16 %mask) {
1480*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rrkz_512:
1481*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1482*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1483*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps %zmm1, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x57,0xc1]
1484*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1485*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
1486*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1487*9880d681SAndroid Build Coastguard Worker}
1488*9880d681SAndroid Build Coastguard Worker
1489*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_xor_ps_rm_512(<16 x float> %a, <16 x float>* %ptr_b) {
1490*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rm_512:
1491*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1492*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi), %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x57,0x07]
1493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1494*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
1495*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
1496*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1497*9880d681SAndroid Build Coastguard Worker}
1498*9880d681SAndroid Build Coastguard Worker
1499*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_xor_ps_rmk_512(<16 x float> %a, <16 x float>* %ptr_b, <16 x float> %passThru, i16 %mask) {
1500*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmk_512:
1501*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1502*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi), %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0x57,0x0f]
1504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1506*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
1507*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
1508*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1509*9880d681SAndroid Build Coastguard Worker}
1510*9880d681SAndroid Build Coastguard Worker
1511*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_xor_ps_rmkz_512(<16 x float> %a, <16 x float>* %ptr_b, i16 %mask) {
1512*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmkz_512:
1513*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1514*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi), %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x57,0x07]
1516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1517*9880d681SAndroid Build Coastguard Worker  %b = load <16 x float>, <16 x float>* %ptr_b
1518*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
1519*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1520*9880d681SAndroid Build Coastguard Worker}
1521*9880d681SAndroid Build Coastguard Worker
1522*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_xor_ps_rmb_512(<16 x float> %a, float* %ptr_b) {
1523*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmb_512:
1524*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi){1to16}, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x58,0x57,0x07]
1526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1527*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1528*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
1529*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
1530*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 -1)
1531*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1532*9880d681SAndroid Build Coastguard Worker}
1533*9880d681SAndroid Build Coastguard Worker
1534*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_xor_ps_rmbk_512(<16 x float> %a, float* %ptr_b, <16 x float> %passThru, i16 %mask) {
1535*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmbk_512:
1536*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi){1to16}, %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x59,0x57,0x0f]
1539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
1540*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1541*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1542*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
1543*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
1544*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %passThru, i16 %mask)
1545*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1546*9880d681SAndroid Build Coastguard Worker}
1547*9880d681SAndroid Build Coastguard Worker
1548*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_xor_ps_rmbkz_512(<16 x float> %a, float* %ptr_b, i16 %mask) {
1549*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_xor_ps_rmbkz_512:
1550*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1551*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1552*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vxorps (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xd9,0x57,0x07]
1553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1554*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_b
1555*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x float> undef, float %q, i32 0
1556*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x float> %vecinit.i, <16 x float> undef, <16 x i32> zeroinitializer
1557*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> zeroinitializer, i16 %mask)
1558*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
1559*9880d681SAndroid Build Coastguard Worker}
1560*9880d681SAndroid Build Coastguard Worker
1561*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.xor.ps.512(<16 x float>, <16 x float>, <16 x float>, i16)
1562*9880d681SAndroid Build Coastguard Worker
1563*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.cvtpd2qq.128(<2 x double>, <2 x i64>, i8)
1564*9880d681SAndroid Build Coastguard Worker
1565*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_cvt_pd2qq_128(<2 x double> %x0, <2 x i64> %x1, i8 %x2) {
1566*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2qq_128:
1567*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2qq %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x09,0x7b,0xc8]
1570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2qq %xmm0, %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x7b,0xc0]
1571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xc0]
1572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1573*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.cvtpd2qq.128(<2 x double> %x0, <2 x i64> %x1, i8 %x2)
1574*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.cvtpd2qq.128(<2 x double> %x0, <2 x i64> %x1, i8 -1)
1575*9880d681SAndroid Build Coastguard Worker  %res2 = add <2 x i64> %res, %res1
1576*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res2
1577*9880d681SAndroid Build Coastguard Worker}
1578*9880d681SAndroid Build Coastguard Worker
1579*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.cvtpd2qq.256(<4 x double>, <4 x i64>, i8)
1580*9880d681SAndroid Build Coastguard Worker
1581*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_cvt_pd2qq_256(<4 x double> %x0, <4 x i64> %x1, i8 %x2) {
1582*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2qq_256:
1583*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1584*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1585*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2qq %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x29,0x7b,0xc8]
1586*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2qq %ymm0, %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x7b,0xc0]
1587*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xc0]
1588*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1589*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.cvtpd2qq.256(<4 x double> %x0, <4 x i64> %x1, i8 %x2)
1590*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.cvtpd2qq.256(<4 x double> %x0, <4 x i64> %x1, i8 -1)
1591*9880d681SAndroid Build Coastguard Worker  %res2 = add <4 x i64> %res, %res1
1592*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res2
1593*9880d681SAndroid Build Coastguard Worker}
1594*9880d681SAndroid Build Coastguard Worker
1595*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.128(<2 x double>, <2 x i64>, i8)
1596*9880d681SAndroid Build Coastguard Worker
1597*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_cvt_pd2uqq_128(<2 x double> %x0, <2 x i64> %x1, i8 %x2) {
1598*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2uqq_128:
1599*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2uqq %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x09,0x79,0xc8]
1602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2uqq %xmm0, %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x79,0xc0]
1603*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xc0]
1604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1605*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.128(<2 x double> %x0, <2 x i64> %x1, i8 %x2)
1606*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.128(<2 x double> %x0, <2 x i64> %x1, i8 -1)
1607*9880d681SAndroid Build Coastguard Worker  %res2 = add <2 x i64> %res, %res1
1608*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res2
1609*9880d681SAndroid Build Coastguard Worker}
1610*9880d681SAndroid Build Coastguard Worker
1611*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.256(<4 x double>, <4 x i64>, i8)
1612*9880d681SAndroid Build Coastguard Worker
1613*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_cvt_pd2uqq_256(<4 x double> %x0, <4 x i64> %x1, i8 %x2) {
1614*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2uqq_256:
1615*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1616*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2uqq %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x29,0x79,0xc8]
1618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2uqq %ymm0, %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x79,0xc0]
1619*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xc0]
1620*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1621*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.256(<4 x double> %x0, <4 x i64> %x1, i8 %x2)
1622*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.256(<4 x double> %x0, <4 x i64> %x1, i8 -1)
1623*9880d681SAndroid Build Coastguard Worker  %res2 = add <4 x i64> %res, %res1
1624*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res2
1625*9880d681SAndroid Build Coastguard Worker}
1626*9880d681SAndroid Build Coastguard Worker
1627*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.cvtps2qq.128(<4 x float>, <2 x i64>, i8)
1628*9880d681SAndroid Build Coastguard Worker
1629*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_cvt_ps2qq_128(<4 x float> %x0, <2 x i64> %x1, i8 %x2) {
1630*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2qq_128:
1631*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1632*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2qq %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x7b,0xc8]
1634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2qq %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x7b,0xc0]
1635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xc0]
1636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1637*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.cvtps2qq.128(<4 x float> %x0, <2 x i64> %x1, i8 %x2)
1638*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.cvtps2qq.128(<4 x float> %x0, <2 x i64> %x1, i8 -1)
1639*9880d681SAndroid Build Coastguard Worker  %res2 = add <2 x i64> %res, %res1
1640*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res2
1641*9880d681SAndroid Build Coastguard Worker}
1642*9880d681SAndroid Build Coastguard Worker
1643*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.cvtps2qq.256(<4 x float>, <4 x i64>, i8)
1644*9880d681SAndroid Build Coastguard Worker
1645*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_cvt_ps2qq_256(<4 x float> %x0, <4 x i64> %x1, i8 %x2) {
1646*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2qq_256:
1647*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1649*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2qq %xmm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x7b,0xc8]
1650*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2qq %xmm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x7b,0xc0]
1651*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xc0]
1652*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1653*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.cvtps2qq.256(<4 x float> %x0, <4 x i64> %x1, i8 %x2)
1654*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.cvtps2qq.256(<4 x float> %x0, <4 x i64> %x1, i8 -1)
1655*9880d681SAndroid Build Coastguard Worker  %res2 = add <4 x i64> %res, %res1
1656*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res2
1657*9880d681SAndroid Build Coastguard Worker}
1658*9880d681SAndroid Build Coastguard Worker
1659*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.cvtps2uqq.128(<4 x float>, <2 x i64>, i8)
1660*9880d681SAndroid Build Coastguard Worker
1661*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_cvt_ps2uqq_128(<4 x float> %x0, <2 x i64> %x1, i8 %x2) {
1662*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2uqq_128:
1663*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2uqq %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x79,0xc8]
1666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2uqq %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x79,0xc0]
1667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xc0]
1668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1669*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.cvtps2uqq.128(<4 x float> %x0, <2 x i64> %x1, i8 %x2)
1670*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.cvtps2uqq.128(<4 x float> %x0, <2 x i64> %x1, i8 -1)
1671*9880d681SAndroid Build Coastguard Worker  %res2 = add <2 x i64> %res, %res1
1672*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res2
1673*9880d681SAndroid Build Coastguard Worker}
1674*9880d681SAndroid Build Coastguard Worker
1675*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.cvtps2uqq.256(<4 x float>, <4 x i64>, i8)
1676*9880d681SAndroid Build Coastguard Worker
1677*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_cvt_ps2uqq_256(<4 x float> %x0, <4 x i64> %x1, i8 %x2) {
1678*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2uqq_256:
1679*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1680*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2uqq %xmm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x79,0xc8]
1682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2uqq %xmm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x79,0xc0]
1683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xc0]
1684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1685*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.cvtps2uqq.256(<4 x float> %x0, <4 x i64> %x1, i8 %x2)
1686*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.cvtps2uqq.256(<4 x float> %x0, <4 x i64> %x1, i8 -1)
1687*9880d681SAndroid Build Coastguard Worker  %res2 = add <4 x i64> %res, %res1
1688*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res2
1689*9880d681SAndroid Build Coastguard Worker}
1690*9880d681SAndroid Build Coastguard Worker
1691*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.cvtqq2pd.128(<2 x i64>, <2 x double>, i8)
1692*9880d681SAndroid Build Coastguard Worker
1693*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_cvt_qq2pd_128(<2 x i64> %x0, <2 x double> %x1, i8 %x2) {
1694*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_qq2pd_128:
1695*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2pd %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xfe,0x09,0xe6,0xc8]
1698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2pd %xmm0, %xmm0 ## encoding: [0x62,0xf1,0xfe,0x08,0xe6,0xc0]
1699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0x58,0xc0]
1700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1701*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.cvtqq2pd.128(<2 x i64> %x0, <2 x double> %x1, i8 %x2)
1702*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.cvtqq2pd.128(<2 x i64> %x0, <2 x double> %x1, i8 -1)
1703*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1704*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1705*9880d681SAndroid Build Coastguard Worker}
1706*9880d681SAndroid Build Coastguard Worker
1707*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.cvtqq2pd.256(<4 x i64>, <4 x double>, i8)
1708*9880d681SAndroid Build Coastguard Worker
1709*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_cvt_qq2pd_256(<4 x i64> %x0, <4 x double> %x1, i8 %x2) {
1710*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_qq2pd_256:
1711*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2pd %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0xfe,0x29,0xe6,0xc8]
1714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2pd %ymm0, %ymm0 ## encoding: [0x62,0xf1,0xfe,0x28,0xe6,0xc0]
1715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0x58,0xc0]
1716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1717*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.cvtqq2pd.256(<4 x i64> %x0, <4 x double> %x1, i8 %x2)
1718*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.cvtqq2pd.256(<4 x i64> %x0, <4 x double> %x1, i8 -1)
1719*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1720*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1721*9880d681SAndroid Build Coastguard Worker}
1722*9880d681SAndroid Build Coastguard Worker
1723*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.cvtqq2ps.128(<2 x i64>, <4 x float>, i8)
1724*9880d681SAndroid Build Coastguard Worker
1725*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_cvt_qq2ps_128(<2 x i64> %x0, <4 x float> %x1, i8 %x2) {
1726*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_qq2ps_128:
1727*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1728*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1729*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2ps %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xfc,0x09,0x5b,0xc8]
1730*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2ps %xmm0, %xmm0 ## encoding: [0x62,0xf1,0xfc,0x08,0x5b,0xc0]
1731*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x74,0x08,0x58,0xc0]
1732*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1733*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.cvtqq2ps.128(<2 x i64> %x0, <4 x float> %x1, i8 %x2)
1734*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.cvtqq2ps.128(<2 x i64> %x0, <4 x float> %x1, i8 -1)
1735*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1736*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1737*9880d681SAndroid Build Coastguard Worker}
1738*9880d681SAndroid Build Coastguard Worker
1739*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.cvtqq2ps.256(<4 x i64>, <4 x float>, i8)
1740*9880d681SAndroid Build Coastguard Worker
1741*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_cvt_qq2ps_256(<4 x i64> %x0, <4 x float> %x1, i8 %x2) {
1742*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_qq2ps_256:
1743*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2ps %ymm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xfc,0x29,0x5b,0xc8]
1746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2ps %ymm0, %xmm0 ## encoding: [0x62,0xf1,0xfc,0x28,0x5b,0xc0]
1747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x74,0x08,0x58,0xc0]
1748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1749*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.cvtqq2ps.256(<4 x i64> %x0, <4 x float> %x1, i8 %x2)
1750*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.cvtqq2ps.256(<4 x i64> %x0, <4 x float> %x1, i8 -1)
1751*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1752*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1753*9880d681SAndroid Build Coastguard Worker}
1754*9880d681SAndroid Build Coastguard Worker
1755*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.cvttpd2qq.128(<2 x double>, <2 x i64>, i8)
1756*9880d681SAndroid Build Coastguard Worker
1757*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_cvtt_pd2qq_128(<2 x double> %x0, <2 x i64> %x1, i8 %x2) {
1758*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2qq_128:
1759*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2qq %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x09,0x7a,0xc8]
1762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2qq %xmm0, %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x7a,0xc0]
1763*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xc0]
1764*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1765*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.cvttpd2qq.128(<2 x double> %x0, <2 x i64> %x1, i8 %x2)
1766*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.cvttpd2qq.128(<2 x double> %x0, <2 x i64> %x1, i8 -1)
1767*9880d681SAndroid Build Coastguard Worker  %res2 = add <2 x i64> %res, %res1
1768*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res2
1769*9880d681SAndroid Build Coastguard Worker}
1770*9880d681SAndroid Build Coastguard Worker
1771*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.cvttpd2qq.256(<4 x double>, <4 x i64>, i8)
1772*9880d681SAndroid Build Coastguard Worker
1773*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_cvtt_pd2qq_256(<4 x double> %x0, <4 x i64> %x1, i8 %x2) {
1774*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2qq_256:
1775*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1777*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2qq %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x29,0x7a,0xc8]
1778*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2qq %ymm0, %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x7a,0xc0]
1779*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xc0]
1780*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1781*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.cvttpd2qq.256(<4 x double> %x0, <4 x i64> %x1, i8 %x2)
1782*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.cvttpd2qq.256(<4 x double> %x0, <4 x i64> %x1, i8 -1)
1783*9880d681SAndroid Build Coastguard Worker  %res2 = add <4 x i64> %res, %res1
1784*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res2
1785*9880d681SAndroid Build Coastguard Worker}
1786*9880d681SAndroid Build Coastguard Worker
1787*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.128(<2 x double>, <2 x i64>, i8)
1788*9880d681SAndroid Build Coastguard Worker
1789*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_cvtt_pd2uqq_128(<2 x double> %x0, <2 x i64> %x1, i8 %x2) {
1790*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2uqq_128:
1791*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1792*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2uqq %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x09,0x78,0xc8]
1794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2uqq %xmm0, %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x78,0xc0]
1795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xc0]
1796*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1797*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.128(<2 x double> %x0, <2 x i64> %x1, i8 %x2)
1798*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.128(<2 x double> %x0, <2 x i64> %x1, i8 -1)
1799*9880d681SAndroid Build Coastguard Worker  %res2 = add <2 x i64> %res, %res1
1800*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res2
1801*9880d681SAndroid Build Coastguard Worker}
1802*9880d681SAndroid Build Coastguard Worker
1803*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.256(<4 x double>, <4 x i64>, i8)
1804*9880d681SAndroid Build Coastguard Worker
1805*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_cvtt_pd2uqq_256(<4 x double> %x0, <4 x i64> %x1, i8 %x2) {
1806*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2uqq_256:
1807*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1808*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1809*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2uqq %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x29,0x78,0xc8]
1810*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2uqq %ymm0, %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x78,0xc0]
1811*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xc0]
1812*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1813*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.256(<4 x double> %x0, <4 x i64> %x1, i8 %x2)
1814*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.256(<4 x double> %x0, <4 x i64> %x1, i8 -1)
1815*9880d681SAndroid Build Coastguard Worker  %res2 = add <4 x i64> %res, %res1
1816*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res2
1817*9880d681SAndroid Build Coastguard Worker}
1818*9880d681SAndroid Build Coastguard Worker
1819*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.cvttps2qq.128(<4 x float>, <2 x i64>, i8)
1820*9880d681SAndroid Build Coastguard Worker
1821*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_cvtt_ps2qq_128(<4 x float> %x0, <2 x i64> %x1, i8 %x2) {
1822*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2qq_128:
1823*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1824*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2qq %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x7a,0xc8]
1826*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2qq %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x7a,0xc0]
1827*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xc0]
1828*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1829*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.cvttps2qq.128(<4 x float> %x0, <2 x i64> %x1, i8 %x2)
1830*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.cvttps2qq.128(<4 x float> %x0, <2 x i64> %x1, i8 -1)
1831*9880d681SAndroid Build Coastguard Worker  %res2 = add <2 x i64> %res, %res1
1832*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res2
1833*9880d681SAndroid Build Coastguard Worker}
1834*9880d681SAndroid Build Coastguard Worker
1835*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.cvttps2qq.256(<4 x float>, <4 x i64>, i8)
1836*9880d681SAndroid Build Coastguard Worker
1837*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_cvtt_ps2qq_256(<4 x float> %x0, <4 x i64> %x1, i8 %x2) {
1838*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2qq_256:
1839*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1840*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1841*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2qq %xmm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x7a,0xc8]
1842*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2qq %xmm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x7a,0xc0]
1843*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xc0]
1844*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1845*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.cvttps2qq.256(<4 x float> %x0, <4 x i64> %x1, i8 %x2)
1846*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.cvttps2qq.256(<4 x float> %x0, <4 x i64> %x1, i8 -1)
1847*9880d681SAndroid Build Coastguard Worker  %res2 = add <4 x i64> %res, %res1
1848*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res2
1849*9880d681SAndroid Build Coastguard Worker}
1850*9880d681SAndroid Build Coastguard Worker
1851*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.cvtuqq2pd.128(<2 x i64>, <2 x double>, i8)
1852*9880d681SAndroid Build Coastguard Worker
1853*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_cvt_uqq2pd_128(<2 x i64> %x0, <2 x double> %x1, i8 %x2) {
1854*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_uqq2pd_128:
1855*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2pd %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xfe,0x09,0x7a,0xc8]
1858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2pd %xmm0, %xmm0 ## encoding: [0x62,0xf1,0xfe,0x08,0x7a,0xc0]
1859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0x58,0xc0]
1860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1861*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.cvtuqq2pd.128(<2 x i64> %x0, <2 x double> %x1, i8 %x2)
1862*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.cvtuqq2pd.128(<2 x i64> %x0, <2 x double> %x1, i8 -1)
1863*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1864*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1865*9880d681SAndroid Build Coastguard Worker}
1866*9880d681SAndroid Build Coastguard Worker
1867*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.cvtuqq2pd.256(<4 x i64>, <4 x double>, i8)
1868*9880d681SAndroid Build Coastguard Worker
1869*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_cvt_uqq2pd_256(<4 x i64> %x0, <4 x double> %x1, i8 %x2) {
1870*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_uqq2pd_256:
1871*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1872*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1873*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2pd %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0xfe,0x29,0x7a,0xc8]
1874*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2pd %ymm0, %ymm0 ## encoding: [0x62,0xf1,0xfe,0x28,0x7a,0xc0]
1875*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0x58,0xc0]
1876*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1877*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.cvtuqq2pd.256(<4 x i64> %x0, <4 x double> %x1, i8 %x2)
1878*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.cvtuqq2pd.256(<4 x i64> %x0, <4 x double> %x1, i8 -1)
1879*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1880*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1881*9880d681SAndroid Build Coastguard Worker}
1882*9880d681SAndroid Build Coastguard Worker
1883*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.cvtuqq2ps.128(<2 x i64>, <4 x float>, i8)
1884*9880d681SAndroid Build Coastguard Worker
1885*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_cvt_uqq2ps_128(<2 x i64> %x0, <4 x float> %x1, i8 %x2) {
1886*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_uqq2ps_128:
1887*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1888*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1889*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2ps %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xff,0x09,0x7a,0xc8]
1890*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2ps %xmm0, %xmm0 ## encoding: [0x62,0xf1,0xff,0x08,0x7a,0xc0]
1891*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x74,0x08,0x58,0xc0]
1892*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1893*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.cvtuqq2ps.128(<2 x i64> %x0, <4 x float> %x1, i8 %x2)
1894*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.cvtuqq2ps.128(<2 x i64> %x0, <4 x float> %x1, i8 -1)
1895*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1896*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1897*9880d681SAndroid Build Coastguard Worker}
1898*9880d681SAndroid Build Coastguard Worker
1899*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.cvtuqq2ps.256(<4 x i64>, <4 x float>, i8)
1900*9880d681SAndroid Build Coastguard Worker
1901*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_cvt_uqq2ps_256(<4 x i64> %x0, <4 x float> %x1, i8 %x2) {
1902*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_uqq2ps_256:
1903*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1904*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1905*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2ps %ymm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0xff,0x29,0x7a,0xc8]
1906*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2ps %ymm0, %xmm0 ## encoding: [0x62,0xf1,0xff,0x28,0x7a,0xc0]
1907*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x74,0x08,0x58,0xc0]
1908*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1909*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.cvtuqq2ps.256(<4 x i64> %x0, <4 x float> %x1, i8 %x2)
1910*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.cvtuqq2ps.256(<4 x i64> %x0, <4 x float> %x1, i8 -1)
1911*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1912*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1913*9880d681SAndroid Build Coastguard Worker}
1914*9880d681SAndroid Build Coastguard Worker
1915*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.cvttps2uqq.128(<4 x float>, <2 x i64>, i8)
1916*9880d681SAndroid Build Coastguard Worker
1917*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_cvtt_ps2uqq_128(<4 x float> %x0, <2 x i64> %x1, i8 %x2) {
1918*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2uqq_128:
1919*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1921*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2uqq %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x78,0xc8]
1922*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2uqq %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x78,0xc0]
1923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xc0]
1924*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1925*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.cvttps2uqq.128(<4 x float> %x0, <2 x i64> %x1, i8 %x2)
1926*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.cvttps2uqq.128(<4 x float> %x0, <2 x i64> %x1, i8 -1)
1927*9880d681SAndroid Build Coastguard Worker  %res2 = add <2 x i64> %res, %res1
1928*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res2
1929*9880d681SAndroid Build Coastguard Worker}
1930*9880d681SAndroid Build Coastguard Worker
1931*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.cvttps2uqq.256(<4 x float>, <4 x i64>, i8)
1932*9880d681SAndroid Build Coastguard Worker
1933*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_cvtt_ps2uqq_256(<4 x float> %x0, <4 x i64> %x1, i8 %x2) {
1934*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2uqq_256:
1935*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1936*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1937*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2uqq %xmm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x78,0xc8]
1938*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2uqq %xmm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x78,0xc0]
1939*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xc0]
1940*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1941*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.cvttps2uqq.256(<4 x float> %x0, <4 x i64> %x1, i8 %x2)
1942*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.cvttps2uqq.256(<4 x float> %x0, <4 x i64> %x1, i8 -1)
1943*9880d681SAndroid Build Coastguard Worker  %res2 = add <4 x i64> %res, %res1
1944*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res2
1945*9880d681SAndroid Build Coastguard Worker}
1946*9880d681SAndroid Build Coastguard Worker
1947*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.reduce.pd.128(<2 x double>, i32, <2 x double>, i8)
1948*9880d681SAndroid Build Coastguard Worker
1949*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_reduce_pd_128(<2 x double> %x0, <2 x double> %x2, i8 %x3) {
1950*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_pd_128:
1951*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1953*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducepd $4, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x56,0xc8,0x04]
1954*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducepd $8, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0xfd,0x08,0x56,0xc0,0x08]
1955*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0x58,0xc0]
1956*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1957*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.reduce.pd.128(<2 x double> %x0, i32 4, <2 x double> %x2, i8 %x3)
1958*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.reduce.pd.128(<2 x double> %x0, i32 8, <2 x double> %x2, i8 -1)
1959*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1960*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1961*9880d681SAndroid Build Coastguard Worker}
1962*9880d681SAndroid Build Coastguard Worker
1963*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.reduce.pd.256(<4 x double>, i32, <4 x double>, i8)
1964*9880d681SAndroid Build Coastguard Worker
1965*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_reduce_pd_256(<4 x double> %x0, <4 x double> %x2, i8 %x3) {
1966*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_pd_256:
1967*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1968*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1969*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducepd $4, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x56,0xc8,0x04]
1970*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducepd $0, %ymm0, %ymm0 ## encoding: [0x62,0xf3,0xfd,0x28,0x56,0xc0,0x00]
1971*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0x58,0xc0]
1972*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1973*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.reduce.pd.256(<4 x double> %x0, i32 4, <4 x double> %x2, i8 %x3)
1974*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.reduce.pd.256(<4 x double> %x0, i32 0, <4 x double> %x2, i8 -1)
1975*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1976*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1977*9880d681SAndroid Build Coastguard Worker}
1978*9880d681SAndroid Build Coastguard Worker
1979*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.reduce.ps.128(<4 x float>, i32, <4 x float>, i8)
1980*9880d681SAndroid Build Coastguard Worker
1981*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_reduce_ps_128(<4 x float> %x0, <4 x float> %x2, i8 %x3) {
1982*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_ps_128:
1983*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1984*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
1985*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreduceps $4, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x56,0xc8,0x04]
1986*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreduceps $88, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x56,0xc0,0x58]
1987*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x74,0x08,0x58,0xc0]
1988*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1989*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.reduce.ps.128(<4 x float> %x0, i32 4, <4 x float> %x2, i8 %x3)
1990*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.reduce.ps.128(<4 x float> %x0, i32 88, <4 x float> %x2, i8 -1)
1991*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1992*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1993*9880d681SAndroid Build Coastguard Worker}
1994*9880d681SAndroid Build Coastguard Worker
1995*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.reduce.ps.256(<8 x float>, i32, <8 x float>, i8)
1996*9880d681SAndroid Build Coastguard Worker
1997*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_reduce_ps_256(<8 x float> %x0, <8 x float> %x2, i8 %x3) {
1998*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_ps_256:
1999*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreduceps $11, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x56,0xc8,0x0b]
2002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreduceps $11, %ymm0, %ymm0 ## encoding: [0x62,0xf3,0x7d,0x28,0x56,0xc0,0x0b]
2003*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x74,0x28,0x58,0xc0]
2004*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2005*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.reduce.ps.256(<8 x float> %x0, i32 11, <8 x float> %x2, i8 %x3)
2006*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.reduce.ps.256(<8 x float> %x0, i32 11, <8 x float> %x2, i8 -1)
2007*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
2008*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
2009*9880d681SAndroid Build Coastguard Worker}
2010*9880d681SAndroid Build Coastguard Worker
2011*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.range.pd.128(<2 x double>, <2 x double>, i32, <2 x double>, i8)
2012*9880d681SAndroid Build Coastguard Worker
2013*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_range_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 %x4) {
2014*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_pd_128:
2015*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2016*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2017*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangepd $4, %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x50,0xd1,0x04]
2018*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangepd $8, %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0xfd,0x08,0x50,0xc1,0x08]
2019*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0xed,0x08,0x58,0xc0]
2020*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2021*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.range.pd.128(<2 x double> %x0, <2 x double> %x1, i32 4, <2 x double> %x3, i8 %x4)
2022*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.range.pd.128(<2 x double> %x0, <2 x double> %x1, i32 8, <2 x double> %x3, i8 -1)
2023*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
2024*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
2025*9880d681SAndroid Build Coastguard Worker}
2026*9880d681SAndroid Build Coastguard Worker
2027*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.range.pd.256(<4 x double>, <4 x double>, i32, <4 x double>, i8)
2028*9880d681SAndroid Build Coastguard Worker
2029*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_range_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x3, i8 %x4) {
2030*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_pd_256:
2031*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2032*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangepd $4, %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x50,0xd1,0x04]
2034*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangepd $88, %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf3,0xfd,0x28,0x50,0xc1,0x58]
2035*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0xed,0x28,0x58,0xc0]
2036*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2037*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.range.pd.256(<4 x double> %x0, <4 x double> %x1, i32 4, <4 x double> %x3, i8 %x4)
2038*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.range.pd.256(<4 x double> %x0, <4 x double> %x1, i32 88, <4 x double> %x3, i8 -1)
2039*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
2040*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
2041*9880d681SAndroid Build Coastguard Worker}
2042*9880d681SAndroid Build Coastguard Worker
2043*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.range.ps.128(<4 x float>, <4 x float>, i32, <4 x float>, i8)
2044*9880d681SAndroid Build Coastguard Worker
2045*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_range_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 %x4) {
2046*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_ps_128:
2047*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangeps $4, %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x50,0xd1,0x04]
2050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangeps $88, %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x50,0xc1,0x58]
2051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6c,0x08,0x58,0xc0]
2052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2053*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.range.ps.128(<4 x float> %x0, <4 x float> %x1, i32 4, <4 x float> %x3, i8 %x4)
2054*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.range.ps.128(<4 x float> %x0, <4 x float> %x1, i32 88, <4 x float> %x3, i8 -1)
2055*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
2056*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
2057*9880d681SAndroid Build Coastguard Worker}
2058*9880d681SAndroid Build Coastguard Worker
2059*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.range.ps.256(<8 x float>, <8 x float>, i32, <8 x float>, i8)
2060*9880d681SAndroid Build Coastguard Worker
2061*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_range_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x3, i8 %x4) {
2062*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_ps_256:
2063*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2064*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangeps $4, %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x50,0xd1,0x04]
2066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangeps $88, %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf3,0x7d,0x28,0x50,0xc1,0x58]
2067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6c,0x28,0x58,0xc0]
2068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2069*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.range.ps.256(<8 x float> %x0, <8 x float> %x1, i32 4, <8 x float> %x3, i8 %x4)
2070*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.range.ps.256(<8 x float> %x0, <8 x float> %x1, i32 88, <8 x float> %x3, i8 -1)
2071*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
2072*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
2073*9880d681SAndroid Build Coastguard Worker}
2074*9880d681SAndroid Build Coastguard Worker
2075*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.vextractf64x2.256(<4 x double>, i32, <2 x double>, i8)
2076*9880d681SAndroid Build Coastguard Worker
2077*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_vextractf64x2_256(<4 x double> %x0, <2 x double> %x2, i8 %x3) {
2078*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vextractf64x2_256:
2079*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2080*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2081*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf64x2 $1, %ymm0, %xmm1 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x19,0xc1,0x01]
2082*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf64x2 $1, %ymm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf3,0xfd,0xa9,0x19,0xc2,0x01]
2083*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf64x2 $1, %ymm0, %xmm0 ## encoding: [0x62,0xf3,0xfd,0x28,0x19,0xc0,0x01]
2084*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0x58,0xc0]
2085*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm2, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x58,0xc2]
2086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2087*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vextractf64x2.256(<4 x double> %x0,i32 1, <2 x double> %x2, i8 %x3)
2088*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x double> @llvm.x86.avx512.mask.vextractf64x2.256(<4 x double> %x0,i32 1, <2 x double> zeroinitializer, i8 %x3)
2089*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.vextractf64x2.256(<4 x double> %x0,i32 1, <2 x double> zeroinitializer, i8 -1)
2090*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <2 x double> %res, %res1
2091*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <2 x double> %res3, %res2
2092*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res4
2093*9880d681SAndroid Build Coastguard Worker}
2094*9880d681SAndroid Build Coastguard Worker
2095*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.insertf64x2.256(<4 x double>, <2 x double>, i32, <4 x double>, i8)
2096*9880d681SAndroid Build Coastguard Worker
2097*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_insertf64x2_256(<4 x double> %x0, <2 x double> %x1, <4 x double> %x3, i8 %x4) {
2098*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_insertf64x2_256:
2099*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf64x2 $1, %xmm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x18,0xd1,0x01]
2102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf64x2 $1, %xmm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf3,0xfd,0xa9,0x18,0xd9,0x01]
2103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf64x2 $1, %xmm1, %ymm0, %ymm0 ## encoding: [0x62,0xf3,0xfd,0x28,0x18,0xc1,0x01]
2104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0xed,0x28,0x58,0xc0]
2105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
2106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2107*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.insertf64x2.256(<4 x double> %x0, <2 x double> %x1, i32 1, <4 x double> %x3, i8 %x4)
2108*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.insertf64x2.256(<4 x double> %x0, <2 x double> %x1, i32 1, <4 x double> %x3, i8 -1)
2109*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x double> @llvm.x86.avx512.mask.insertf64x2.256(<4 x double> %x0, <2 x double> %x1, i32 1, <4 x double> zeroinitializer, i8 %x4)
2110*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <4 x double> %res, %res1
2111*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <4 x double> %res2, %res3
2112*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res4
2113*9880d681SAndroid Build Coastguard Worker}
2114*9880d681SAndroid Build Coastguard Worker
2115*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.inserti64x2.256(<4 x i64>, <2 x i64>, i32, <4 x i64>, i8)
2116*9880d681SAndroid Build Coastguard Worker
2117*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_inserti64x2_256(<4 x i64> %x0, <2 x i64> %x1, <4 x i64> %x3, i8 %x4) {
2118*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_inserti64x2_256:
2119*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti64x2 $1, %xmm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x38,0xd1,0x01]
2122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti64x2 $1, %xmm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf3,0xfd,0xa9,0x38,0xd9,0x01]
2123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti64x2 $1, %xmm1, %ymm0, %ymm0 ## encoding: [0x62,0xf3,0xfd,0x28,0x38,0xc1,0x01]
2124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0xed,0x28,0xd4,0xc0]
2125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm3, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0xd4,0xc3]
2126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2127*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.inserti64x2.256(<4 x i64> %x0, <2 x i64> %x1, i32 1, <4 x i64> %x3, i8 %x4)
2128*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.inserti64x2.256(<4 x i64> %x0, <2 x i64> %x1, i32 1, <4 x i64> %x3, i8 -1)
2129*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x i64> @llvm.x86.avx512.mask.inserti64x2.256(<4 x i64> %x0, <2 x i64> %x1, i32 1, <4 x i64> zeroinitializer, i8 %x4)
2130*9880d681SAndroid Build Coastguard Worker  %res3 = add <4 x i64> %res, %res1
2131*9880d681SAndroid Build Coastguard Worker  %res4 = add <4 x i64> %res3, %res2
2132*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res4
2133*9880d681SAndroid Build Coastguard Worker}
2134*9880d681SAndroid Build Coastguard Worker
2135*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.ps.128(<4 x float>, i32, i8)
2136*9880d681SAndroid Build Coastguard Worker
2137*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_ps_128(<4 x float> %x0, i8 %x1) {
2138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_ps_128:
2139*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclassps $2, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x66,0xc0,0x02]
2142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %ecx ## encoding: [0xc5,0xf9,0x93,0xc8]
2143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclassps $4, %xmm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x08,0x66,0xc0,0x04]
2144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax ## encoding: [0xc5,0xf9,0x93,0xc0]
2145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al ## encoding: [0x00,0xc8]
2146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
2147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2148*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.mask.fpclass.ps.128(<4 x float> %x0, i32 2, i8 %x1)
2149*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.fpclass.ps.128(<4 x float> %x0, i32 4, i8 -1)
2150*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res, %res1
2151*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
2152*9880d681SAndroid Build Coastguard Worker}
2153*9880d681SAndroid Build Coastguard Worker
2154*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.ps.256(<8 x float>, i32, i8)
2155*9880d681SAndroid Build Coastguard Worker
2156*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_ps_256(<8 x float> %x0, i8 %x1) {
2157*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_ps_256:
2158*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclassps $2, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x66,0xc0,0x02]
2161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %ecx ## encoding: [0xc5,0xf9,0x93,0xc8]
2162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclassps $4, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x66,0xc0,0x04]
2163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax ## encoding: [0xc5,0xf9,0x93,0xc0]
2164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al ## encoding: [0x00,0xc8]
2165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
2166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2167*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.mask.fpclass.ps.256(<8 x float> %x0, i32 2, i8 %x1)
2168*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.fpclass.ps.256(<8 x float> %x0, i32 4, i8 -1)
2169*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res, %res1
2170*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
2171*9880d681SAndroid Build Coastguard Worker}
2172*9880d681SAndroid Build Coastguard Worker
2173*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.pd.128(<2 x double>, i32, i8)
2174*9880d681SAndroid Build Coastguard Worker
2175*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_pd_128(<2 x double> %x0, i8 %x1) {
2176*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_pd_128:
2177*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclasspd $4, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x66,0xc0,0x04]
2180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %ecx ## encoding: [0xc5,0xf9,0x93,0xc8]
2181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclasspd $2, %xmm0, %k0 ## encoding: [0x62,0xf3,0xfd,0x08,0x66,0xc0,0x02]
2182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax ## encoding: [0xc5,0xf9,0x93,0xc0]
2183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al ## encoding: [0x00,0xc8]
2184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
2185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2186*9880d681SAndroid Build Coastguard Worker  %res =  call i8 @llvm.x86.avx512.mask.fpclass.pd.128(<2 x double> %x0, i32 4, i8 %x1)
2187*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.fpclass.pd.128(<2 x double> %x0, i32 2, i8 -1)
2188*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res, %res1
2189*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
2190*9880d681SAndroid Build Coastguard Worker}
2191*9880d681SAndroid Build Coastguard Worker
2192*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.pd.256(<4 x double>, i32, i8)
2193*9880d681SAndroid Build Coastguard Worker
2194*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_pd_256(<4 x double> %x0, i8 %x1) {
2195*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_pd_256:
2196*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclasspd $2, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x66,0xc0,0x02]
2199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %ecx ## encoding: [0xc5,0xf9,0x93,0xc8]
2200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclasspd $4, %ymm0, %k0 ## encoding: [0x62,0xf3,0xfd,0x28,0x66,0xc0,0x04]
2201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax ## encoding: [0xc5,0xf9,0x93,0xc0]
2202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al ## encoding: [0x00,0xc8]
2203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
2204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2205*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.mask.fpclass.pd.256(<4 x double> %x0, i32 2, i8 %x1)
2206*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.fpclass.pd.256(<4 x double> %x0, i32 4, i8 -1)
2207*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res, %res1
2208*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
2209*9880d681SAndroid Build Coastguard Worker}
2210*9880d681SAndroid Build Coastguard Worker
2211*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.broadcastf32x2.256(<4 x float>, <8 x float>, i8)
2212*9880d681SAndroid Build Coastguard Worker
2213*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_broadcastf32x2_256(<4 x float> %x0, <8 x float> %x2, i8 %x3) {
2214*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf32x2_256:
2215*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastf32x2 %xmm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x19,0xc8]
2218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastf32x2 %xmm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x19,0xd0]
2219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastf32x2 %xmm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x19,0xc0]
2220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm2, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x74,0x28,0x58,0xca]
2221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x74,0x28,0x58,0xc0]
2222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2223*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.broadcastf32x2.256(<4 x float>  %x0, <8 x float> %x2, i8 %x3)
2224*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.broadcastf32x2.256(<4 x float> %x0, <8 x float> zeroinitializer, i8 %x3)
2225*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x float> @llvm.x86.avx512.mask.broadcastf32x2.256(<4 x float> %x0, <8 x float> %x2, i8 -1)
2226*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x float> %res, %res1
2227*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x float> %res3, %res2
2228*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res4
2229*9880d681SAndroid Build Coastguard Worker}
2230*9880d681SAndroid Build Coastguard Worker
2231*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.broadcasti32x2.256(<4 x i32>, <8 x i32>, i8)
2232*9880d681SAndroid Build Coastguard Worker
2233*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_broadcasti32x2_256(<4 x i32> %x0, <8 x i32> %x2, i8 %x3, i64 * %y_ptr) {
2234*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti32x2_256:
2235*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcasti32x2 (%rsi), %ymm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x59,0x0e]
2238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcasti32x2 %xmm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x59,0xd0]
2239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcasti32x2 %xmm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x59,0xc0]
2240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm2, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xfe,0xca]
2241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfe,0xc0]
2242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2243*9880d681SAndroid Build Coastguard Worker  %y_64  = load i64, i64 * %y_ptr
2244*9880d681SAndroid Build Coastguard Worker  %y_v2i64 = insertelement <2 x i64> undef, i64 %y_64, i32 0
2245*9880d681SAndroid Build Coastguard Worker  %y = bitcast <2 x i64> %y_v2i64 to <4 x i32>
2246*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx512.mask.broadcasti32x2.256(<4 x i32>  %y, <8 x i32> %x2, i8 %x3)
2247*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i32> @llvm.x86.avx512.mask.broadcasti32x2.256(<4 x i32> %x0, <8 x i32> zeroinitializer, i8 %x3)
2248*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i32> @llvm.x86.avx512.mask.broadcasti32x2.256(<4 x i32> %x0, <8 x i32> %x2, i8 -1)
2249*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i32> %res, %res1
2250*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i32> %res3, %res2
2251*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res4
2252*9880d681SAndroid Build Coastguard Worker}
2253*9880d681SAndroid Build Coastguard Worker
2254*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx512.mask.broadcasti32x2.128(<4 x i32>, <4 x i32>, i8)
2255*9880d681SAndroid Build Coastguard Worker
2256*9880d681SAndroid Build Coastguard Workerdefine <4 x i32>@test_int_x86_avx512_mask_broadcasti32x2_128(<4 x i32> %x0, <4 x i32> %x2, i8 %x3) {
2257*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti32x2_128:
2258*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcasti32x2 %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x59,0xc8]
2261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcasti32x2 %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x59,0xd0]
2262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcasti32x2 %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x59,0xc0]
2263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %xmm2, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xfe,0xca]
2264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfe,0xc0]
2265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2266*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.avx512.mask.broadcasti32x2.128(<4 x i32>  %x0, <4 x i32> %x2, i8 %x3)
2267*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i32> @llvm.x86.avx512.mask.broadcasti32x2.128(<4 x i32> %x0, <4 x i32> zeroinitializer, i8 %x3)
2268*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x i32> @llvm.x86.avx512.mask.broadcasti32x2.128(<4 x i32> %x0, <4 x i32> %x2, i8 -1)
2269*9880d681SAndroid Build Coastguard Worker  %res3 = add <4 x i32> %res, %res1
2270*9880d681SAndroid Build Coastguard Worker  %res4 = add <4 x i32> %res3, %res2
2271*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res4
2272*9880d681SAndroid Build Coastguard Worker}
2273*9880d681SAndroid Build Coastguard Worker
2274*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.cvtd2mask.128(<4 x i32>)
2275*9880d681SAndroid Build Coastguard Worker
2276*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_cvtd2mask_128(<4 x i32> %x0) {
2277*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtd2mask_128:
2278*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovd2m %xmm0, %k0 ## encoding: [0x62,0xf2,0x7e,0x08,0x39,0xc0]
2280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax ## encoding: [0xc5,0xf9,0x93,0xc0]
2281*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
2282*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2283*9880d681SAndroid Build Coastguard Worker    %res = call i8 @llvm.x86.avx512.cvtd2mask.128(<4 x i32> %x0)
2284*9880d681SAndroid Build Coastguard Worker    ret i8 %res
2285*9880d681SAndroid Build Coastguard Worker}
2286*9880d681SAndroid Build Coastguard Worker
2287*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.cvtd2mask.256(<8 x i32>)
2288*9880d681SAndroid Build Coastguard Worker
2289*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_cvtd2mask_256(<8 x i32> %x0) {
2290*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtd2mask_256:
2291*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2292*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovd2m %ymm0, %k0 ## encoding: [0x62,0xf2,0x7e,0x28,0x39,0xc0]
2293*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax ## encoding: [0xc5,0xf9,0x93,0xc0]
2294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
2295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2296*9880d681SAndroid Build Coastguard Worker    %res = call i8 @llvm.x86.avx512.cvtd2mask.256(<8 x i32> %x0)
2297*9880d681SAndroid Build Coastguard Worker    ret i8 %res
2298*9880d681SAndroid Build Coastguard Worker}
2299*9880d681SAndroid Build Coastguard Worker
2300*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.cvtq2mask.128(<2 x i64>)
2301*9880d681SAndroid Build Coastguard Worker
2302*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_cvtq2mask_128(<2 x i64> %x0) {
2303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtq2mask_128:
2304*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovq2m %xmm0, %k0 ## encoding: [0x62,0xf2,0xfe,0x08,0x39,0xc0]
2306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax ## encoding: [0xc5,0xf9,0x93,0xc0]
2307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
2308*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2309*9880d681SAndroid Build Coastguard Worker    %res = call i8 @llvm.x86.avx512.cvtq2mask.128(<2 x i64> %x0)
2310*9880d681SAndroid Build Coastguard Worker    ret i8 %res
2311*9880d681SAndroid Build Coastguard Worker}
2312*9880d681SAndroid Build Coastguard Worker
2313*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.cvtq2mask.256(<4 x i64>)
2314*9880d681SAndroid Build Coastguard Worker
2315*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_cvtq2mask_256(<4 x i64> %x0) {
2316*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtq2mask_256:
2317*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovq2m %ymm0, %k0 ## encoding: [0x62,0xf2,0xfe,0x28,0x39,0xc0]
2319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax ## encoding: [0xc5,0xf9,0x93,0xc0]
2320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
2321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2322*9880d681SAndroid Build Coastguard Worker    %res = call i8 @llvm.x86.avx512.cvtq2mask.256(<4 x i64> %x0)
2323*9880d681SAndroid Build Coastguard Worker    ret i8 %res
2324*9880d681SAndroid Build Coastguard Worker}
2325*9880d681SAndroid Build Coastguard Worker
2326*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx512.cvtmask2d.128(i8)
2327*9880d681SAndroid Build Coastguard Worker
2328*9880d681SAndroid Build Coastguard Workerdefine <4 x i32>@test_int_x86_avx512_cvtmask2d_128(i8 %x0) {
2329*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2d_128:
2330*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2331*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k0 ## encoding: [0xc5,0xf9,0x92,0xc7]
2332*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2d %k0, %xmm0 ## encoding: [0x62,0xf2,0x7e,0x08,0x38,0xc0]
2333*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2334*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.avx512.cvtmask2d.128(i8 %x0)
2335*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
2336*9880d681SAndroid Build Coastguard Worker}
2337*9880d681SAndroid Build Coastguard Worker
2338*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.cvtmask2d.256(i8)
2339*9880d681SAndroid Build Coastguard Worker
2340*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_cvtmask2d_256(i8 %x0) {
2341*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2d_256:
2342*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2343*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k0 ## encoding: [0xc5,0xf9,0x92,0xc7]
2344*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2d %k0, %ymm0 ## encoding: [0x62,0xf2,0x7e,0x28,0x38,0xc0]
2345*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2346*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx512.cvtmask2d.256(i8 %x0)
2347*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
2348*9880d681SAndroid Build Coastguard Worker}
2349*9880d681SAndroid Build Coastguard Worker
2350*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.cvtmask2q.128(i8)
2351*9880d681SAndroid Build Coastguard Worker
2352*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_cvtmask2q_128(i8 %x0) {
2353*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2q_128:
2354*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k0 ## encoding: [0xc5,0xf9,0x92,0xc7]
2356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2q %k0, %xmm0 ## encoding: [0x62,0xf2,0xfe,0x08,0x38,0xc0]
2357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2358*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.cvtmask2q.128(i8 %x0)
2359*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
2360*9880d681SAndroid Build Coastguard Worker}
2361*9880d681SAndroid Build Coastguard Worker
2362*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.cvtmask2q.256(i8)
2363*9880d681SAndroid Build Coastguard Worker
2364*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_cvtmask2q_256(i8 %x0) {
2365*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2q_256:
2366*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k0 ## encoding: [0xc5,0xf9,0x92,0xc7]
2368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2q %k0, %ymm0 ## encoding: [0x62,0xf2,0xfe,0x28,0x38,0xc0]
2369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2370*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.cvtmask2q.256(i8 %x0)
2371*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2372*9880d681SAndroid Build Coastguard Worker}
2373*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.broadcastf64x2.256(<2 x double>, <4 x double>, i8)
2374*9880d681SAndroid Build Coastguard Worker
2375*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_broadcastf64x2_256(<2 x double> %x0, <4 x double> %x2, i8 %mask) {
2376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf64x2_256:
2377*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %YMM0<def>
2379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 $0, %ymm0, %ymm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf3,0xfd,0xa9,0x23,0xd0,0x00]
2381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## ymm2 {%k1} {z} = ymm0[0,1,0,1]
2382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 $0, %ymm0, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x23,0xc8,0x00]
2383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## ymm1 {%k1} = ymm0[0,1,0,1]
2384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 $0, %ymm0, %ymm0, %ymm0 ## encoding: [0x62,0xf3,0xfd,0x28,0x23,0xc0,0x00]
2385*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## ymm0 = ymm0[0,1,0,1]
2386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x58,0xc1]
2387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0xed,0x28,0x58,0xc0]
2388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2389*9880d681SAndroid Build Coastguard Worker
2390*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.broadcastf64x2.256(<2 x double> %x0, <4 x double> %x2, i8 -1)
2391*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x double> @llvm.x86.avx512.mask.broadcastf64x2.256(<2 x double> %x0, <4 x double> %x2, i8 %mask)
2392*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x double> @llvm.x86.avx512.mask.broadcastf64x2.256(<2 x double> %x0, <4 x double> zeroinitializer, i8 %mask)
2393*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <4 x double> %res1, %res2
2394*9880d681SAndroid Build Coastguard Worker  %res5 = fadd <4 x double> %res3, %res4
2395*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res5
2396*9880d681SAndroid Build Coastguard Worker}
2397*9880d681SAndroid Build Coastguard Worker
2398*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.broadcasti64x2.256(<2 x i64>, <4 x i64>, i8)
2399*9880d681SAndroid Build Coastguard Worker
2400*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_broadcasti64x2_256(<2 x i64> %x0, <4 x i64> %x2, i8 %mask) {
2401*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti64x2_256:
2402*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %YMM0<def>
2404*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1 ## encoding: [0xc5,0xf9,0x92,0xcf]
2405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 $0, %ymm0, %ymm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf3,0xfd,0xa9,0x43,0xd0,0x00]
2406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## ymm2 {%k1} {z} = ymm0[0,1,0,1]
2407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 $0, %ymm0, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x43,0xc8,0x00]
2408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## ymm1 {%k1} = ymm0[0,1,0,1]
2409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 $0, %ymm0, %ymm0, %ymm0 ## encoding: [0x62,0xf3,0xfd,0x28,0x43,0xc0,0x00]
2410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## ymm0 = ymm0[0,1,0,1]
2411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0xd4,0xc1]
2412*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0xed,0x28,0xd4,0xc0]
2413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2414*9880d681SAndroid Build Coastguard Worker
2415*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.broadcasti64x2.256(<2 x i64> %x0, <4 x i64> %x2, i8 -1)
2416*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x i64> @llvm.x86.avx512.mask.broadcasti64x2.256(<2 x i64> %x0, <4 x i64> %x2, i8 %mask)
2417*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x i64> @llvm.x86.avx512.mask.broadcasti64x2.256(<2 x i64> %x0, <4 x i64> zeroinitializer, i8 %mask)
2418*9880d681SAndroid Build Coastguard Worker  %res4 = add <4 x i64> %res1, %res2
2419*9880d681SAndroid Build Coastguard Worker  %res5 = add <4 x i64> %res3, %res4
2420*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res5
2421*9880d681SAndroid Build Coastguard Worker}
2422