xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512dq-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 | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvtpd2qq.512(<8 x double>, <8 x i64>, i8, i32)
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvt_pd2qq_512(<8 x double> %x0, <8 x i64> %x1, i8 %x2) {
7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2qq_512:
8*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2qq {ru-sae}, %zmm0, %zmm1 {%k1}
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2qq {rn-sae}, %zmm0, %zmm0
12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
14*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.cvtpd2qq.512(<8 x double> %x0, <8 x i64> %x1, i8 %x2, i32 2)
15*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvtpd2qq.512(<8 x double> %x0, <8 x i64> %x1, i8 -1, i32 0)
16*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
17*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
18*9880d681SAndroid Build Coastguard Worker}
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.512(<8 x double>, <8 x i64>, i8, i32)
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvt_pd2uqq_512(<8 x double> %x0, <8 x i64> %x1, i8 %x2) {
23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2uqq_512:
24*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2uqq {ru-sae}, %zmm0, %zmm1 {%k1}
27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtpd2uqq {rn-sae}, %zmm0, %zmm0
28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
30*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.512(<8 x double> %x0, <8 x i64> %x1, i8 %x2, i32 2)
31*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.512(<8 x double> %x0, <8 x i64> %x1, i8 -1, i32 0)
32*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
33*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
34*9880d681SAndroid Build Coastguard Worker}
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvtps2qq.512(<8 x float>, <8 x i64>, i8, i32)
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvt_ps2qq_512(<8 x float> %x0, <8 x i64> %x1, i8 %x2) {
39*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2qq_512:
40*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2qq {ru-sae}, %ymm0, %zmm1 {%k1}
43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2qq {rn-sae}, %ymm0, %zmm0
44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
46*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.cvtps2qq.512(<8 x float> %x0, <8 x i64> %x1, i8 %x2, i32 2)
47*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvtps2qq.512(<8 x float> %x0, <8 x i64> %x1, i8 -1, i32 0)
48*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
49*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
50*9880d681SAndroid Build Coastguard Worker}
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvtps2uqq.512(<8 x float>, <8 x i64>, i8, i32)
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvt_ps2uqq_512(<8 x float> %x0, <8 x i64> %x1, i8 %x2) {
55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2uqq_512:
56*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2uqq {ru-sae}, %ymm0, %zmm1 {%k1}
59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtps2uqq {rn-sae}, %ymm0, %zmm0
60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
62*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.cvtps2uqq.512(<8 x float> %x0, <8 x i64> %x1, i8 %x2, i32 2)
63*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvtps2uqq.512(<8 x float> %x0, <8 x i64> %x1, i8 -1, i32 0)
64*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
65*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
66*9880d681SAndroid Build Coastguard Worker}
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtqq2pd.512(<8 x i64>, <8 x double>, i8, i32)
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_qq2pd_512(<8 x i64> %x0, <8 x double> %x1, i8 %x2) {
71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_qq2pd_512:
72*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2pd %zmm0, %zmm1 {%k1}
75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2pd {rn-sae}, %zmm0, %zmm0
76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
78*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.cvtqq2pd.512(<8 x i64> %x0, <8 x double> %x1, i8 %x2, i32 4)
79*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtqq2pd.512(<8 x i64> %x0, <8 x double> %x1, i8 -1, i32 0)
80*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
81*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
82*9880d681SAndroid Build Coastguard Worker}
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.cvtqq2ps.512(<8 x i64>, <8 x float>, i8, i32)
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_cvt_qq2ps_512(<8 x i64> %x0, <8 x float> %x1, i8 %x2) {
87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_qq2ps_512:
88*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2ps %zmm0, %ymm1 {%k1}
91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtqq2ps {rn-sae}, %zmm0, %ymm0
92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm1, %ymm0
93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
94*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.cvtqq2ps.512(<8 x i64> %x0, <8 x float> %x1, i8 %x2, i32 4)
95*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.cvtqq2ps.512(<8 x i64> %x0, <8 x float> %x1, i8 -1, i32 0)
96*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
97*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
98*9880d681SAndroid Build Coastguard Worker}
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvttpd2qq.512(<8 x double>, <8 x i64>, i8, i32)
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvtt_pd2qq_512(<8 x double> %x0, <8 x i64> %x1, i8 %x2) {
103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2qq_512:
104*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2qq %zmm0, %zmm1 {%k1}
107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2qq {sae}, %zmm0, %zmm0
108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
110*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.cvttpd2qq.512(<8 x double> %x0, <8 x i64> %x1, i8 %x2, i32 4)
111*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvttpd2qq.512(<8 x double> %x0, <8 x i64> %x1, i8 -1, i32 8)
112*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
113*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
114*9880d681SAndroid Build Coastguard Worker}
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.512(<8 x double>, <8 x i64>, i8, i32)
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvtt_pd2uqq_512(<8 x double> %x0, <8 x i64> %x1, i8 %x2) {
119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2uqq_512:
120*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2uqq %zmm0, %zmm1 {%k1}
123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttpd2uqq {sae}, %zmm0, %zmm0
124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
126*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.512(<8 x double> %x0, <8 x i64> %x1, i8 %x2, i32 4)
127*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.512(<8 x double> %x0, <8 x i64> %x1, i8 -1, i32 8)
128*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
129*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
130*9880d681SAndroid Build Coastguard Worker}
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvttps2qq.512(<8 x float>, <8 x i64>, i8, i32)
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvtt_ps2qq_512(<8 x float> %x0, <8 x i64> %x1, i8 %x2) {
135*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2qq_512:
136*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2qq %ymm0, %zmm1 {%k1}
139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2qq {sae}, %ymm0, %zmm0
140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
142*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.cvttps2qq.512(<8 x float> %x0, <8 x i64> %x1, i8 %x2, i32 4)
143*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvttps2qq.512(<8 x float> %x0, <8 x i64> %x1, i8 -1, i32 8)
144*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
145*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
146*9880d681SAndroid Build Coastguard Worker}
147*9880d681SAndroid Build Coastguard Worker
148*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvttps2uqq.512(<8 x float>, <8 x i64>, i8, i32)
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvtt_ps2uqq_512(<8 x float> %x0, <8 x i64> %x1, i8 %x2) {
151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2uqq_512:
152*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2uqq %ymm0, %zmm1 {%k1}
155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvttps2uqq {sae}, %ymm0, %zmm0
156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
158*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.cvttps2uqq.512(<8 x float> %x0, <8 x i64> %x1, i8 %x2, i32 4)
159*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvttps2uqq.512(<8 x float> %x0, <8 x i64> %x1, i8 -1, i32 8)
160*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i64> %res, %res1
161*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
162*9880d681SAndroid Build Coastguard Worker}
163*9880d681SAndroid Build Coastguard Worker
164*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtuqq2pd.512(<8 x i64>, <8 x double>, i8, i32)
165*9880d681SAndroid Build Coastguard Worker
166*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_uqq2pd_512(<8 x i64> %x0, <8 x double> %x1, i8 %x2) {
167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_uqq2pd_512:
168*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2pd %zmm0, %zmm1 {%k1}
171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2pd {rn-sae}, %zmm0, %zmm0
172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
174*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.cvtuqq2pd.512(<8 x i64> %x0, <8 x double> %x1, i8 %x2, i32 4)
175*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtuqq2pd.512(<8 x i64> %x0, <8 x double> %x1, i8 -1, i32 0)
176*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
177*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
178*9880d681SAndroid Build Coastguard Worker}
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.cvtuqq2ps.512(<8 x i64>, <8 x float>, i8, i32)
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_cvt_uqq2ps_512(<8 x i64> %x0, <8 x float> %x1, i8 %x2) {
183*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_uqq2ps_512:
184*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2ps %zmm0, %ymm1 {%k1}
187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vcvtuqq2ps {rn-sae}, %zmm0, %ymm0
188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm1, %ymm0
189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
190*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.cvtuqq2ps.512(<8 x i64> %x0, <8 x float> %x1, i8 %x2, i32 4)
191*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.cvtuqq2ps.512(<8 x i64> %x0, <8 x float> %x1, i8 -1, i32 0)
192*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
193*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
194*9880d681SAndroid Build Coastguard Worker}
195*9880d681SAndroid Build Coastguard Worker
196*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.reduce.pd.512(<8 x double>, i32, <8 x double>, i8, i32)
197*9880d681SAndroid Build Coastguard Worker
198*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_reduce_pd_512(<8 x double> %x0, <8 x double> %x2, i8 %x3) {
199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_pd_512:
200*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducepd $8, %zmm0, %zmm1 {%k1}
203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducepd $4, {sae}, %zmm0, %zmm0
204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
206*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.reduce.pd.512(<8 x double> %x0, i32 8, <8 x double> %x2, i8 %x3, i32 4)
207*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.reduce.pd.512(<8 x double> %x0, i32 4, <8 x double> %x2, i8 -1, i32 8)
208*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
209*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
210*9880d681SAndroid Build Coastguard Worker}
211*9880d681SAndroid Build Coastguard Worker
212*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.reduce.ps.512(<16 x float>, i32, <16 x float>, i16, i32)
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_reduce_ps_512(<16 x float> %x0, <16 x float> %x2, i16 %x3) {
215*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_ps_512:
216*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreduceps $44, {sae}, %zmm0, %zmm1 {%k1}
219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreduceps $11, %zmm0, %zmm0
220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm1, %zmm0
221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
222*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.reduce.ps.512(<16 x float> %x0, i32 44, <16 x float> %x2, i16 %x3, i32 8)
223*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.reduce.ps.512(<16 x float> %x0, i32 11, <16 x float> %x2, i16 -1, i32 4)
224*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
225*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
226*9880d681SAndroid Build Coastguard Worker}
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.range.pd.512(<8 x double>, <8 x double>, i32, <8 x double>, i8, i32)
229*9880d681SAndroid Build Coastguard Worker
230*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_range_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x3, i8 %x4) {
231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_pd_512:
232*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangepd $8, %zmm1, %zmm0, %zmm2 {%k1}
235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangepd $4, {sae}, %zmm1, %zmm0, %zmm0
236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
238*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.range.pd.512(<8 x double> %x0, <8 x double> %x1, i32 8, <8 x double> %x3, i8 %x4, i32 4)
239*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.range.pd.512(<8 x double> %x0, <8 x double> %x1, i32 4, <8 x double> %x3, i8 -1, i32 8)
240*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
241*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
242*9880d681SAndroid Build Coastguard Worker}
243*9880d681SAndroid Build Coastguard Worker
244*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.range.ps.512(<16 x float>, <16 x float>, i32, <16 x float>, i16, i32)
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_range_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x3, i16 %x4) {
247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_ps_512:
248*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangeps $88, %zmm1, %zmm0, %zmm2 {%k1}
251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangeps $4, {sae}, %zmm1, %zmm0, %zmm0
252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm2, %zmm0
253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
254*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.range.ps.512(<16 x float> %x0, <16 x float> %x1, i32 88, <16 x float> %x3, i16 %x4, i32 4)
255*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.range.ps.512(<16 x float> %x0, <16 x float> %x1, i32 4, <16 x float> %x3, i16 -1, i32 8)
256*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
257*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
258*9880d681SAndroid Build Coastguard Worker}
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.reduce.ss(<4 x float>, <4 x float>,<4 x float>, i8, i32, i32)
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_reduce_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 %x4) {
263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_ss:
264*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducess $4, %xmm1, %xmm0, %xmm2 {%k1}
268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducess $4, {sae}, %xmm1, %xmm0, %xmm0
269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm2, %xmm0
270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
271*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.reduce.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 %x4, i32 4, i32 4)
272*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.reduce.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 -1, i32 4, i32 8)
273*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
274*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
275*9880d681SAndroid Build Coastguard Worker}
276*9880d681SAndroid Build Coastguard Worker
277*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.range.ss(<4 x float>, <4 x float>,<4 x float>, i8, i32, i32)
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_range_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 %x4) {
280*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_ss:
281*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
282*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
283*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangess $4, {sae}, %xmm1, %xmm0, %xmm2 {%k1}
285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangess $4, {sae}, %xmm1, %xmm0, %xmm0
286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm2, %xmm0
287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
288*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.range.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 %x4, i32 4, i32 8)
289*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.range.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 -1, i32 4, i32 8)
290*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
291*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
292*9880d681SAndroid Build Coastguard Worker}
293*9880d681SAndroid Build Coastguard Worker
294*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.reduce.sd(<2 x double>, <2 x double>,<2 x double>, i8, i32, i32)
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_reduce_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 %x4) {
297*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_sd:
298*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducesd $4, %xmm1, %xmm0, %xmm2 {%k1}
302*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vreducesd $4, {sae}, %xmm1, %xmm0, %xmm0
303*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm2, %xmm0
304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
305*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.reduce.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 %x4, i32 4, i32 4)
306*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.reduce.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 -1, i32 4, i32 8)
307*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
308*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
309*9880d681SAndroid Build Coastguard Worker}
310*9880d681SAndroid Build Coastguard Worker
311*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.range.sd(<2 x double>, <2 x double>,<2 x double>, i8, i32, i32)
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_range_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 %x4) {
314*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_sd:
315*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangesd $4, %xmm1, %xmm0, %xmm2 {%k1}
319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vrangesd $4, {sae}, %xmm1, %xmm0, %xmm0
320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm2, %xmm0
321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
322*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.range.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 %x4, i32 4, i32 4)
323*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.range.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 -1, i32 4, i32 8)
324*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
325*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
326*9880d681SAndroid Build Coastguard Worker}
327*9880d681SAndroid Build Coastguard Worker
328*9880d681SAndroid Build Coastguard Worker
329*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.vextractf64x2.512(<8 x double>, i32, <2 x double>, i8)
330*9880d681SAndroid Build Coastguard Worker
331*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_vextractf64x2_512(<8 x double> %x0, <2 x double> %x2, i8 %x3) {
332*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vextractf64x2_512:
333*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
334*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf64x2 $1, %zmm0, %xmm1 {%k1}
336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf64x2 $1, %zmm0, %xmm2 {%k1} {z}
337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf64x2 $1, %zmm0, %xmm0
338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm1, %xmm0
339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm2, %xmm0
340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
341*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vextractf64x2.512(<8 x double> %x0,i32 1, <2 x double> %x2, i8 %x3)
342*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x double> @llvm.x86.avx512.mask.vextractf64x2.512(<8 x double> %x0,i32 1, <2 x double> zeroinitializer, i8 %x3)
343*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.vextractf64x2.512(<8 x double> %x0,i32 1, <2 x double> zeroinitializer, i8 -1)
344*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <2 x double> %res, %res1
345*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <2 x double> %res2, %res3
346*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res4
347*9880d681SAndroid Build Coastguard Worker}
348*9880d681SAndroid Build Coastguard Worker
349*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.vextractf32x8.512(<16 x float>, i32, <8 x float>, i8)
350*9880d681SAndroid Build Coastguard Worker
351*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_vextractf32x8(<16 x float> %x0, <8 x float> %x2, i8 %x3) {
352*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vextractf32x8:
353*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf32x8 $1, %zmm0, %ymm1 {%k1}
356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf32x8 $1, %zmm0, %ymm2 {%k1} {z}
357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf32x8 $1, %zmm0, %ymm0
358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm1, %ymm0
359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm2, %ymm0
360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
361*9880d681SAndroid Build Coastguard Worker  %res  = call <8 x float> @llvm.x86.avx512.mask.vextractf32x8.512(<16 x float> %x0,i32 1, <8 x float> %x2, i8 %x3)
362*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x float> @llvm.x86.avx512.mask.vextractf32x8.512(<16 x float> %x0,i32 1, <8 x float> zeroinitializer, i8 %x3)
363*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.vextractf32x8.512(<16 x float> %x0,i32 1, <8 x float> zeroinitializer, i8 -1)
364*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x float> %res, %res1
365*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x float> %res2, %res3
366*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res4
367*9880d681SAndroid Build Coastguard Worker}
368*9880d681SAndroid Build Coastguard Worker
369*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.insertf32x8.512(<16 x float>, <8 x float>, i32, <16 x float>, i16)
370*9880d681SAndroid Build Coastguard Worker
371*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_insertf32x8_512(<16 x float> %x0, <8 x float> %x1, <16 x float> %x3, i16 %x4) {
372*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_insertf32x8_512:
373*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
374*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf32x8 $1, %ymm1, %zmm0, %zmm2 {%k1}
376*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf32x8 $1, %ymm1, %zmm0, %zmm3 {%k1} {z}
377*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf32x8 $1, %ymm1, %zmm0, %zmm0
378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm3, %zmm2, %zmm1
379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm1, %zmm0, %zmm0
380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
381*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.insertf32x8.512(<16 x float> %x0, <8 x float> %x1, i32 1, <16 x float> %x3, i16 %x4)
382*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.insertf32x8.512(<16 x float> %x0, <8 x float> %x1, i32 1, <16 x float> zeroinitializer, i16 %x4)
383*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x float> @llvm.x86.avx512.mask.insertf32x8.512(<16 x float> %x0, <8 x float> %x1, i32 1, <16 x float> %x3, i16 -1)
384*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <16 x float> %res, %res1
385*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <16 x float> %res2, %res3
386*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res4
387*9880d681SAndroid Build Coastguard Worker}
388*9880d681SAndroid Build Coastguard Worker
389*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.insertf64x2.512(<8 x double>, <2 x double>, i32, <8 x double>, i8)
390*9880d681SAndroid Build Coastguard Worker
391*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_insertf64x2_512(<8 x double> %x0, <2 x double> %x1,<8 x double> %x3, i8 %x4) {
392*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_insertf64x2_512:
393*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
394*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf64x2 $1, %xmm1, %zmm0, %zmm2 {%k1}
396*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf64x2 $1, %xmm1, %zmm0, %zmm3 {%k1} {z}
397*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf64x2 $1, %xmm1, %zmm0, %zmm0
398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm3, %zmm2, %zmm1
399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm1, %zmm0
400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
401*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.insertf64x2.512(<8 x double> %x0, <2 x double> %x1, i32 1, <8 x double> %x3, i8 %x4)
402*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.insertf64x2.512(<8 x double> %x0, <2 x double> %x1, i32 1, <8 x double> zeroinitializer, i8 %x4)
403*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.mask.insertf64x2.512(<8 x double> %x0, <2 x double> %x1, i32 1, <8 x double> %x3, i8 -1)
404*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <8 x double> %res, %res1
405*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res3, %res2
406*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res4
407*9880d681SAndroid Build Coastguard Worker}
408*9880d681SAndroid Build Coastguard Worker
409*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.inserti32x8.512(<16 x i32>, <8 x i32>, i32, <16 x i32>, i16)
410*9880d681SAndroid Build Coastguard Worker
411*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_inserti32x8_512(<16 x i32> %x0, <8 x i32> %x1, <16 x i32> %x3, i16 %x4) {
412*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_inserti32x8_512:
413*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x8 $1, %ymm1, %zmm0, %zmm2 {%k1}
416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x8 $1, %ymm1, %zmm0, %zmm3 {%k1} {z}
417*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x8 $1, %ymm1, %zmm0, %zmm0
418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm3, %zmm2, %zmm1
419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
421*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.inserti32x8.512(<16 x i32> %x0, <8 x i32> %x1, i32 1, <16 x i32> %x3, i16 %x4)
422*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.inserti32x8.512(<16 x i32> %x0, <8 x i32> %x1, i32 1, <16 x i32> zeroinitializer, i16 %x4)
423*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.inserti32x8.512(<16 x i32> %x0, <8 x i32> %x1, i32 1, <16 x i32> %x3, i16 -1)
424*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
425*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
426*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
427*9880d681SAndroid Build Coastguard Worker}
428*9880d681SAndroid Build Coastguard Worker
429*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.inserti64x2.512(<8 x i64>, <2 x i64>, i32, <8 x i64>, i8)
430*9880d681SAndroid Build Coastguard Worker
431*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_inserti64x2_512(<8 x i64> %x0, <2 x i64> %x1, <8 x i64> %x3, i8 %x4) {
432*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_inserti64x2_512:
433*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti64x2 $1, %xmm1, %zmm0, %zmm2 {%k1}
436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti64x2 $1, %xmm1, %zmm0, %zmm3 {%k1} {z}
437*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti64x2 $1, %xmm1, %zmm0, %zmm0
438*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm3, %zmm2, %zmm1
439*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm1, %zmm0, %zmm0
440*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
441*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.mask.inserti64x2.512(<8 x i64> %x0, <2 x i64> %x1, i32 1, <8 x i64> %x3, i8 %x4)
442*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.inserti64x2.512(<8 x i64> %x0, <2 x i64> %x1, i32 1, <8 x i64> zeroinitializer, i8 %x4)
443*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.inserti64x2.512(<8 x i64> %x0, <2 x i64> %x1, i32 1, <8 x i64> %x3, i8 -1)
444*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i64> %res, %res1
445*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res2, %res3
446*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res4
447*9880d681SAndroid Build Coastguard Worker}
448*9880d681SAndroid Build Coastguard Worker
449*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.pd.512(<8 x double>, i32, i8)
450*9880d681SAndroid Build Coastguard Worker
451*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_pd_512(<8 x double> %x0, i8 %x1) {
452*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_pd_512:
453*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
454*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclasspd $2, %zmm0, %k0 {%k1}
456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %ecx
457*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclasspd $4, %zmm0, %k0
458*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax
459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al
460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
461*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
462*9880d681SAndroid Build Coastguard Worker    %res = call i8 @llvm.x86.avx512.mask.fpclass.pd.512(<8 x double> %x0, i32 2, i8 %x1)
463*9880d681SAndroid Build Coastguard Worker    %res1 = call i8 @llvm.x86.avx512.mask.fpclass.pd.512(<8 x double> %x0, i32 4, i8 -1)
464*9880d681SAndroid Build Coastguard Worker    %res2 = add i8 %res, %res1
465*9880d681SAndroid Build Coastguard Worker    ret i8 %res2
466*9880d681SAndroid Build Coastguard Worker}
467*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.fpclass.ps.512(<16 x float>, i32, i16)
468*9880d681SAndroid Build Coastguard Worker
469*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_mask_fpclass_ps_512(<16 x float> %x0, i16 %x1) {
470*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_ps_512:
471*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclassps $4, %zmm0, %k0 {%k1}
474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclassps $4, %zmm0, %k0
476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax
478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
479*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
480*9880d681SAndroid Build Coastguard Worker    %res = call i16 @llvm.x86.avx512.mask.fpclass.ps.512(<16 x float> %x0, i32 4, i16 %x1)
481*9880d681SAndroid Build Coastguard Worker    %res1 = call i16 @llvm.x86.avx512.mask.fpclass.ps.512(<16 x float> %x0, i32 4, i16 -1)
482*9880d681SAndroid Build Coastguard Worker    %res2 = add i16 %res, %res1
483*9880d681SAndroid Build Coastguard Worker    ret i16 %res2
484*9880d681SAndroid Build Coastguard Worker}
485*9880d681SAndroid Build Coastguard Worker
486*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.sd(<2 x double>, i32, i8)
487*9880d681SAndroid Build Coastguard Worker
488*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_sd(<2 x double> %x0, i8 %x1) {
489*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_sd:
490*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
491*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
492*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclasssd $2, %xmm0, %k0 {%k1}
494*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    testb %al, %al
496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    je LBB28_2
497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ## BB#1:
498*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movb $-1, %al
499*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  LBB28_2:
500*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclasssd $4, %xmm0, %k0
501*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
502*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    testb %cl, %cl
503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    je LBB28_4
504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ## BB#3:
505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movb $-1, %cl
506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  LBB28_4:
507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al
508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %AX<kill>
509*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
510*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.mask.fpclass.sd(<2 x double> %x0, i32 2, i8 %x1)
511*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.fpclass.sd(<2 x double> %x0, i32 4, i8 -1)
512*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res, %res1
513*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
514*9880d681SAndroid Build Coastguard Worker}
515*9880d681SAndroid Build Coastguard Worker
516*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.ss(<4 x float>, i32, i8)
517*9880d681SAndroid Build Coastguard Worker
518*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_ss(<4 x float> %x0, i8 %x1) {
519*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_ss:
520*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    andl $1, %edi
522*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclassss $4, %xmm0, %k0 {%k1}
524*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    testb %al, %al
526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    je LBB29_2
527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ## BB#1:
528*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movb $-1, %al
529*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  LBB29_2:
530*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfpclassss $4, %xmm0, %k0
531*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx
532*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    testb %cl, %cl
533*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    je LBB29_4
534*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ## BB#3:
535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movb $-1, %cl
536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  LBB29_4:
537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al
538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %AX<kill>
539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
540*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.mask.fpclass.ss(<4 x float> %x0, i32 4, i8 %x1)
541*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.fpclass.ss(<4 x float> %x0, i32 4, i8 -1)
542*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res, %res1
543*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
544*9880d681SAndroid Build Coastguard Worker}
545*9880d681SAndroid Build Coastguard Worker
546*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.broadcastf32x2.512(<4 x float>, <16 x float>, i16)
547*9880d681SAndroid Build Coastguard Worker
548*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_broadcastf32x2_512(<4 x float> %x0, <16 x float> %x2, i16 %x3) {
549*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf32x2_512:
550*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
551*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
552*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastf32x2 %xmm0, %zmm1 {%k1}
553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastf32x2 %xmm0, %zmm2 {%k1} {z}
554*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastf32x2 %xmm0, %zmm0
555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm2, %zmm1, %zmm1
556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm1, %zmm0
557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
558*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x2.512(<4 x float>  %x0, <16 x float> %x2, i16 %x3)
559*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x2.512(<4 x float> %x0, <16 x float> zeroinitializer, i16 %x3)
560*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x2.512(<4 x float> %x0, <16 x float> %x2, i16 -1)
561*9880d681SAndroid Build Coastguard Worker  %res3 = fadd <16 x float> %res, %res1
562*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <16 x float> %res3, %res2
563*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res4
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Worker
566*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.broadcasti32x2.512(<4 x i32>, <16 x i32>, i16)
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_broadcasti32x2_512(<4 x i32> %x0, <16 x i32> %x2, i16 %x3) {
569*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti32x2_512:
570*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcasti32x2 %xmm0, %zmm1 {%k1}
573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcasti32x2 %xmm0, %zmm2 {%k1} {z}
574*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcasti32x2 %xmm0, %zmm0
575*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm2, %zmm1, %zmm1
576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
577*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
578*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x2.512(<4 x i32>  %x0, <16 x i32> %x2, i16 %x3)
579*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x2.512(<4 x i32> %x0, <16 x i32> zeroinitializer, i16 %x3)
580*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x2.512(<4 x i32> %x0, <16 x i32> %x2, i16 -1)
581*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i32> %res, %res1
582*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res3, %res2
583*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res4
584*9880d681SAndroid Build Coastguard Worker}
585*9880d681SAndroid Build Coastguard Worker
586*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.cvtd2mask.512(<16 x i32>)
587*9880d681SAndroid Build Coastguard Worker
588*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_cvtd2mask_512(<16 x i32> %x0) {
589*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtd2mask_512:
590*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovd2m %zmm0, %k0
592*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax
593*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
594*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
595*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.cvtd2mask.512(<16 x i32> %x0)
596*9880d681SAndroid Build Coastguard Worker  ret i16 %res
597*9880d681SAndroid Build Coastguard Worker}
598*9880d681SAndroid Build Coastguard Worker
599*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.cvtq2mask.512(<8 x i64>)
600*9880d681SAndroid Build Coastguard Worker
601*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_cvtq2mask_512(<8 x i64> %x0) {
602*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtq2mask_512:
603*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovq2m %zmm0, %k0
605*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %k0, %eax
606*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
607*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
608*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.cvtq2mask.512(<8 x i64> %x0)
609*9880d681SAndroid Build Coastguard Worker  ret i8 %res
610*9880d681SAndroid Build Coastguard Worker}
611*9880d681SAndroid Build Coastguard Worker
612*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.cvtmask2d.512(i16)
613*9880d681SAndroid Build Coastguard Worker
614*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_cvtmask2d_512(i16 %x0) {
615*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2d_512:
616*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k0
618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2d %k0, %zmm0
619*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
620*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.cvtmask2d.512(i16 %x0)
621*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
622*9880d681SAndroid Build Coastguard Worker}
623*9880d681SAndroid Build Coastguard Worker
624*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.cvtmask2q.512(i8)
625*9880d681SAndroid Build Coastguard Worker
626*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_cvtmask2q_512(i8 %x0) {
627*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2q_512:
628*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
629*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k0
630*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2q %k0, %zmm0
631*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
632*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i64> @llvm.x86.avx512.cvtmask2q.512(i8 %x0)
633*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res
634*9880d681SAndroid Build Coastguard Worker}
635*9880d681SAndroid Build Coastguard Worker
636*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.broadcastf32x8.512(<8 x float>, <16 x float>, i16)
637*9880d681SAndroid Build Coastguard Worker
638*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_broadcastf32x8_512(<8 x float> %x0, <16 x float> %x2, i16 %mask) {
639*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf32x8_512:
640*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
642*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
643*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff32x4 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]
644*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff32x4 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]
645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff32x4 {{.*#+}} zmm0 = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]
646*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm1, %zmm0, %zmm0
647*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm2, %zmm0
648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
649*9880d681SAndroid Build Coastguard Worker
650*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x8.512(<8 x float> %x0, <16 x float> %x2, i16 -1)
651*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x8.512(<8 x float> %x0, <16 x float> %x2, i16 %mask)
652*9880d681SAndroid Build Coastguard Worker  %res3 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x8.512(<8 x float> %x0, <16 x float> zeroinitializer, i16 %mask)
653*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <16 x float> %res1, %res2
654*9880d681SAndroid Build Coastguard Worker  %res5 = fadd <16 x float> %res3, %res4
655*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res5
656*9880d681SAndroid Build Coastguard Worker}
657*9880d681SAndroid Build Coastguard Worker
658*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.broadcastf64x2.512(<2 x double>, <8 x double>, i8)
659*9880d681SAndroid Build Coastguard Worker
660*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_broadcastf64x2_512(<2 x double> %x0, <8 x double> %x2, i8 %mask) {
661*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf64x2_512:
662*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
663*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def>
664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,0,1,0,1,0,1]
666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm1 {%k1} = zmm0[0,1,0,1,0,1,0,1]
667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm0[0,1,0,1,0,1,0,1]
668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm1, %zmm0, %zmm0
669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm2, %zmm0
670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
671*9880d681SAndroid Build Coastguard Worker
672*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x2.512(<2 x double> %x0, <8 x double> %x2, i8 -1)
673*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x2.512(<2 x double> %x0, <8 x double> %x2, i8 %mask)
674*9880d681SAndroid Build Coastguard Worker  %res3 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x2.512(<2 x double> %x0, <8 x double> zeroinitializer, i8 %mask)
675*9880d681SAndroid Build Coastguard Worker  %res4 = fadd <8 x double> %res1, %res2
676*9880d681SAndroid Build Coastguard Worker  %res5 = fadd <8 x double> %res3, %res4
677*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res5
678*9880d681SAndroid Build Coastguard Worker}
679*9880d681SAndroid Build Coastguard Worker
680*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.broadcasti32x8.512(<8 x i32>, <16 x i32>, i16)
681*9880d681SAndroid Build Coastguard Worker
682*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_broadcasti32x8_512(<8 x i32> %x0, <16 x i32> %x2, i16 %mask) {
683*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti32x8_512:
684*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
685*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def>
686*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
687*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi32x4 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]
688*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi32x4 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]
689*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi32x4 {{.*#+}} zmm0 = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]
690*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm1, %zmm0, %zmm0
691*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
692*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
693*9880d681SAndroid Build Coastguard Worker
694*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x8.512(<8 x i32> %x0, <16 x i32> %x2, i16 -1)
695*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x8.512(<8 x i32> %x0, <16 x i32> %x2, i16 %mask)
696*9880d681SAndroid Build Coastguard Worker  %res3 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x8.512(<8 x i32> %x0, <16 x i32> zeroinitializer, i16 %mask)
697*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i32> %res1, %res2
698*9880d681SAndroid Build Coastguard Worker  %res5 = add <16 x i32> %res3, %res4
699*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res5
700*9880d681SAndroid Build Coastguard Worker}
701*9880d681SAndroid Build Coastguard Worker
702*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.broadcasti64x2.512(<2 x i64>, <8 x i64>, i8)
703*9880d681SAndroid Build Coastguard Worker
704*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_broadcasti64x2_512(<2 x i64> %x0, <8 x i64> %x2, i8 %mask) {
705*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti64x2_512:
706*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
707*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def>
708*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovb %edi, %k1
709*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,0,1,0,1,0,1]
710*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 {{.*#+}} zmm1 {%k1} = zmm0[0,1,0,1,0,1,0,1]
711*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,0,1,0,1,0,1]
712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm1, %zmm0, %zmm0
713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %zmm0, %zmm2, %zmm0
714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
715*9880d681SAndroid Build Coastguard Worker
716*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x2.512(<2 x i64> %x0, <8 x i64> %x2, i8 -1)
717*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x2.512(<2 x i64> %x0, <8 x i64> %x2, i8 %mask)
718*9880d681SAndroid Build Coastguard Worker  %res3 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x2.512(<2 x i64> %x0, <8 x i64> zeroinitializer, i8 %mask)
719*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i64> %res1, %res2
720*9880d681SAndroid Build Coastguard Worker  %res5 = add <8 x i64> %res3, %res4
721*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res5
722*9880d681SAndroid Build Coastguard Worker}
723