xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512-fma-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 -mattr=+avx512f | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
5*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vfnmadd_ps_z(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vfnmadd_ps_z:
9*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps %zmm2, %zmm1, %zmm0
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
12*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfnmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 4) nounwind
13*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
14*9880d681SAndroid Build Coastguard Worker}
15*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vfnmadd.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) nounwind readnone
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_vfnmadd_ps(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask) {
18*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmadd_ps:
19*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps %zmm2, %zmm1, %zmm0 {%k1}
22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
23*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfnmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask, i32 4) nounwind
24*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_x86_vfnmadd_pd_z(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vfnmadd_pd_z:
29*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd %zmm2, %zmm1, %zmm0
31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
32*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 4) nounwind
33*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
34*9880d681SAndroid Build Coastguard Worker}
35*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.vfnmadd.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32) nounwind readnone
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_vfnmadd_pd(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
38*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmadd_pd:
39*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd %zmm2, %zmm1, %zmm0 {%k1}
42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
43*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 4) nounwind
44*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
45*9880d681SAndroid Build Coastguard Worker}
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vfnmsubps_z(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
48*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vfnmsubps_z:
49*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %zmm2, %zmm1, %zmm0
51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
52*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfnmsub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 4) nounwind
53*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
54*9880d681SAndroid Build Coastguard Worker}
55*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vfnmsub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) nounwind readnone
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_vfnmsub_ps(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask) {
58*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmsub_ps:
59*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %zmm2, %zmm1, %zmm0 {%k1}
62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
63*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfnmsub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask, i32 4) nounwind
64*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
65*9880d681SAndroid Build Coastguard Worker}
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_x86_vfnmsubpd_z(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
68*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vfnmsubpd_z:
69*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %zmm2, %zmm1, %zmm0
71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
72*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 4) nounwind
73*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
74*9880d681SAndroid Build Coastguard Worker}
75*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32) nounwind readnone
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_vfnmsub_pd(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmsub_pd:
79*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %zmm2, %zmm1, %zmm0 {%k1}
82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
83*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 4) nounwind
84*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
85*9880d681SAndroid Build Coastguard Worker}
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vfmaddsubps_z(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
88*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vfmaddsubps_z:
89*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %zmm2, %zmm1, %zmm0
91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
92*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 4) nounwind
93*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
94*9880d681SAndroid Build Coastguard Worker}
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_fmaddsub_ps(<16 x float> %a, <16 x float> %b, <16 x float> %c, i16 %mask) {
97*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_fmaddsub_ps:
98*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %zmm2, %zmm1, %zmm0 {%k1}
101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
102*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.512(<16 x float> %a, <16 x float> %b, <16 x float> %c, i16 %mask, i32 4)
103*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
104*9880d681SAndroid Build Coastguard Worker}
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) nounwind readnone
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_x86_vfmaddsubpd_z(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
109*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vfmaddsubpd_z:
110*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %zmm2, %zmm1, %zmm0
112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
113*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 4) nounwind
114*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
115*9880d681SAndroid Build Coastguard Worker}
116*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32) nounwind readnone
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_vfmaddsub_pd(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmaddsub_pd:
120*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %zmm2, %zmm1, %zmm0 {%k1}
123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
124*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 4) nounwind
125*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
126*9880d681SAndroid Build Coastguard Worker}
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_vfmaddsub_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmaddsub_pd_512:
130*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %zmm2, %zmm1, %zmm3 {%k1}
134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0
135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
137*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
138*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
139*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
140*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
141*9880d681SAndroid Build Coastguard Worker}
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask3.vfmaddsub.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
144*9880d681SAndroid Build Coastguard Worker
145*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask3_vfmaddsub_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
146*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmaddsub_pd_512:
147*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub231pd %zmm1, %zmm0, %zmm3 {%k1}
151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0
152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
154*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask3.vfmaddsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
155*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask3.vfmaddsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
156*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
157*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
158*9880d681SAndroid Build Coastguard Worker}
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.maskz.vfmaddsub.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
161*9880d681SAndroid Build Coastguard Worker
162*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_maskz_vfmaddsub_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
163*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmaddsub_pd_512:
164*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %zmm2, %zmm1, %zmm3 {%k1} {z}
168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0
169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
171*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.maskz.vfmaddsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
172*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.maskz.vfmaddsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
173*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
174*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
175*9880d681SAndroid Build Coastguard Worker}
176*9880d681SAndroid Build Coastguard Worker
177*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_vfmaddsub_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
178*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmaddsub_ps_512:
179*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %zmm2, %zmm1, %zmm3 {%k1}
183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0
184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
186*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
187*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
188*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
189*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
190*9880d681SAndroid Build Coastguard Worker}
191*9880d681SAndroid Build Coastguard Worker
192*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask3.vfmaddsub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
193*9880d681SAndroid Build Coastguard Worker
194*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask3_vfmaddsub_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
195*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmaddsub_ps_512:
196*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub231ps %zmm1, %zmm0, %zmm3 {%k1}
200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0
201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
203*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask3.vfmaddsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
204*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask3.vfmaddsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
205*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
206*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.maskz.vfmaddsub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
210*9880d681SAndroid Build Coastguard Worker
211*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_maskz_vfmaddsub_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
212*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmaddsub_ps_512:
213*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %zmm2, %zmm1, %zmm3 {%k1} {z}
217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0
218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
220*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.maskz.vfmaddsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
221*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.maskz.vfmaddsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
222*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
223*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
224*9880d681SAndroid Build Coastguard Worker}
225*9880d681SAndroid Build Coastguard Worker
226*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask3.vfmsubadd.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask3_vfmsubadd_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
229*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsubadd_pd_512:
230*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
232*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd231pd %zmm1, %zmm0, %zmm3 {%k1}
234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
237*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask3.vfmsubadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
238*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask3.vfmsubadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
239*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
240*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
241*9880d681SAndroid Build Coastguard Worker}
242*9880d681SAndroid Build Coastguard Worker
243*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask3.vfmsubadd.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask3_vfmsubadd_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
246*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsubadd_ps_512:
247*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
248*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd231ps %zmm1, %zmm0, %zmm3 {%k1}
251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0
252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
254*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask3.vfmsubadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
255*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask3.vfmsubadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
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 Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrb_rne(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask) {
261*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrb_rne:
262*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1}
265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
266*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask, i32 0) nounwind
267*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
268*9880d681SAndroid Build Coastguard Worker}
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrb_rtn(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask) {
271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrb_rtn:
272*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {rd-sae}, %zmm2, %zmm1, %zmm0 {%k1}
275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
276*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask, i32 1) nounwind
277*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
278*9880d681SAndroid Build Coastguard Worker}
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrb_rtp(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask) {
281*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrb_rtp:
282*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
283*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {ru-sae}, %zmm2, %zmm1, %zmm0 {%k1}
285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
286*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask, i32 2) nounwind
287*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
288*9880d681SAndroid Build Coastguard Worker}
289*9880d681SAndroid Build Coastguard Worker
290*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrb_rtz(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask) {
291*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrb_rtz:
292*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
293*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {rz-sae}, %zmm2, %zmm1, %zmm0 {%k1}
295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
296*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask, i32 3) nounwind
297*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrb_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask) {
301*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrb_current:
302*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
303*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %zmm2, %zmm1, %zmm0 {%k1}
305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
306*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask, i32 4) nounwind
307*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
308*9880d681SAndroid Build Coastguard Worker}
309*9880d681SAndroid Build Coastguard Worker
310*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrbz_rne(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
311*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrbz_rne:
312*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0
314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
315*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 0) nounwind
316*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
317*9880d681SAndroid Build Coastguard Worker}
318*9880d681SAndroid Build Coastguard Worker
319*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrbz_rtn(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
320*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrbz_rtn:
321*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {rd-sae}, %zmm2, %zmm1, %zmm0
323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
324*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 1) nounwind
325*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
326*9880d681SAndroid Build Coastguard Worker}
327*9880d681SAndroid Build Coastguard Worker
328*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrbz_rtp(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
329*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrbz_rtp:
330*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
331*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {ru-sae}, %zmm2, %zmm1, %zmm0
332*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
333*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 2) nounwind
334*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
335*9880d681SAndroid Build Coastguard Worker}
336*9880d681SAndroid Build Coastguard Worker
337*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrbz_rtz(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
338*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrbz_rtz:
339*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {rz-sae}, %zmm2, %zmm1, %zmm0
341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
342*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 3) nounwind
343*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
344*9880d681SAndroid Build Coastguard Worker}
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mask_round_vfmadd512_ps_rrbz_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
347*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_ps_rrbz_current:
348*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
349*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %zmm2, %zmm1, %zmm0
350*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
351*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 4) nounwind
352*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask3.vfmsub.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
356*9880d681SAndroid Build Coastguard Worker
357*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask3_vfmsub_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
358*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsub_pd_512:
359*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
361*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
362*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub231pd %zmm1, %zmm0, %zmm3 {%k1}
363*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0
364*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
365*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
366*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask3.vfmsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
367*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask3.vfmsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
368*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
369*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
370*9880d681SAndroid Build Coastguard Worker}
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask3.vfmsub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask3_vfmsub_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsub_ps_512:
376*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
377*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub231ps %zmm1, %zmm0, %zmm3 {%k1}
380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0
381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
383*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask3.vfmsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
384*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask3.vfmsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
385*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
386*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
387*9880d681SAndroid Build Coastguard Worker}
388*9880d681SAndroid Build Coastguard Worker
389*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrb_rne(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
390*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrb_rne:
391*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
392*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
393*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1}
394*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
395*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 0) nounwind
396*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
397*9880d681SAndroid Build Coastguard Worker}
398*9880d681SAndroid Build Coastguard Worker
399*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrb_rtn(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
400*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrb_rtn:
401*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
402*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {rd-sae}, %zmm2, %zmm1, %zmm0 {%k1}
404*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
405*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 1) nounwind
406*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
407*9880d681SAndroid Build Coastguard Worker}
408*9880d681SAndroid Build Coastguard Worker
409*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrb_rtp(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
410*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrb_rtp:
411*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
412*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {ru-sae}, %zmm2, %zmm1, %zmm0 {%k1}
414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
415*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 2) nounwind
416*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
417*9880d681SAndroid Build Coastguard Worker}
418*9880d681SAndroid Build Coastguard Worker
419*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrb_rtz(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
420*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrb_rtz:
421*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
423*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {rz-sae}, %zmm2, %zmm1, %zmm0 {%k1}
424*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
425*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 3) nounwind
426*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
427*9880d681SAndroid Build Coastguard Worker}
428*9880d681SAndroid Build Coastguard Worker
429*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrb_current(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
430*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrb_current:
431*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %zmm2, %zmm1, %zmm0 {%k1}
434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
435*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 4) nounwind
436*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
437*9880d681SAndroid Build Coastguard Worker}
438*9880d681SAndroid Build Coastguard Worker
439*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrbz_rne(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
440*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrbz_rne:
441*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
444*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 0) nounwind
445*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
446*9880d681SAndroid Build Coastguard Worker}
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrbz_rtn(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
449*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrbz_rtn:
450*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
451*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {rd-sae}, %zmm2, %zmm1, %zmm0
452*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
453*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 1) nounwind
454*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
455*9880d681SAndroid Build Coastguard Worker}
456*9880d681SAndroid Build Coastguard Worker
457*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrbz_rtp(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
458*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrbz_rtp:
459*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {ru-sae}, %zmm2, %zmm1, %zmm0
461*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
462*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 2) nounwind
463*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
464*9880d681SAndroid Build Coastguard Worker}
465*9880d681SAndroid Build Coastguard Worker
466*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrbz_rtz(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
467*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrbz_rtz:
468*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
469*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {rz-sae}, %zmm2, %zmm1, %zmm0
470*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
471*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 3) nounwind
472*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
473*9880d681SAndroid Build Coastguard Worker}
474*9880d681SAndroid Build Coastguard Worker
475*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfmadd512_pd_rrbz_current(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
476*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfmadd512_pd_rrbz_current:
477*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %zmm2, %zmm1, %zmm0
479*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
480*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 4) nounwind
481*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
482*9880d681SAndroid Build Coastguard Worker}
483*9880d681SAndroid Build Coastguard Worker
484*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_vfmadd_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
485*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_pd_512:
486*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
488*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
489*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %zmm2, %zmm1, %zmm3 {%k1}
490*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
491*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
492*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
493*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
494*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.vfmadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
495*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
496*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
497*9880d681SAndroid Build Coastguard Worker}
498*9880d681SAndroid Build Coastguard Worker
499*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask3.vfmadd.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask3_vfmadd_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
502*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_pd_512:
503*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231pd %zmm1, %zmm0, %zmm3 {%k1}
507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
509*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
510*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask3.vfmadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
511*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask3.vfmadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
512*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
513*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
514*9880d681SAndroid Build Coastguard Worker}
515*9880d681SAndroid Build Coastguard Worker
516*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.maskz.vfmadd.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
517*9880d681SAndroid Build Coastguard Worker
518*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_maskz_vfmadd_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
519*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_pd_512:
520*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
522*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %zmm2, %zmm1, %zmm3 {%k1} {z}
524*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
527*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.maskz.vfmadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
528*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.maskz.vfmadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
529*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
530*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
531*9880d681SAndroid Build Coastguard Worker}
532*9880d681SAndroid Build Coastguard Worker
533*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_vfmadd_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
534*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_ps_512:
535*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %zmm2, %zmm1, %zmm3 {%k1}
539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0
540*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
541*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
542*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
543*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.vfmadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
544*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
545*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
546*9880d681SAndroid Build Coastguard Worker}
547*9880d681SAndroid Build Coastguard Worker
548*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask3.vfmadd.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
549*9880d681SAndroid Build Coastguard Worker
550*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask3_vfmadd_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
551*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_ps_512:
552*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
554*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231ps %zmm1, %zmm0, %zmm3 {%k1}
556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0
557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
559*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask3.vfmadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
560*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask3.vfmadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
561*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
562*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
563*9880d681SAndroid Build Coastguard Worker}
564*9880d681SAndroid Build Coastguard Worker
565*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.maskz.vfmadd.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
566*9880d681SAndroid Build Coastguard Worker
567*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_maskz_vfmadd_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
568*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_ps_512:
569*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %zmm2, %zmm1, %zmm3 {%k1} {z}
573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0
574*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
575*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
576*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.maskz.vfmadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
577*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.maskz.vfmadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
578*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
579*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
580*9880d681SAndroid Build Coastguard Worker}
581*9880d681SAndroid Build Coastguard Worker
582*9880d681SAndroid Build Coastguard Worker
583*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrb_rne(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
584*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrb_rne:
585*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
586*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
587*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1}
588*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
589*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 0) nounwind
590*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
591*9880d681SAndroid Build Coastguard Worker}
592*9880d681SAndroid Build Coastguard Worker
593*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrb_rtn(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
594*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrb_rtn:
595*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
596*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {rd-sae}, %zmm2, %zmm1, %zmm0 {%k1}
598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
599*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 1) nounwind
600*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
601*9880d681SAndroid Build Coastguard Worker}
602*9880d681SAndroid Build Coastguard Worker
603*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrb_rtp(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
604*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrb_rtp:
605*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
606*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
607*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {ru-sae}, %zmm2, %zmm1, %zmm0 {%k1}
608*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
609*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 2) nounwind
610*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
611*9880d681SAndroid Build Coastguard Worker}
612*9880d681SAndroid Build Coastguard Worker
613*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrb_rtz(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
614*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrb_rtz:
615*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
616*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {rz-sae}, %zmm2, %zmm1, %zmm0 {%k1}
618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
619*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 3) nounwind
620*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
621*9880d681SAndroid Build Coastguard Worker}
622*9880d681SAndroid Build Coastguard Worker
623*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrb_current(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask) {
624*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrb_current:
625*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
626*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
627*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %zmm2, %zmm1, %zmm0 {%k1}
628*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
629*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 %mask, i32 4) nounwind
630*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
631*9880d681SAndroid Build Coastguard Worker}
632*9880d681SAndroid Build Coastguard Worker
633*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrbz_rne(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
634*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrbz_rne:
635*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0
637*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
638*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 0) nounwind
639*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
640*9880d681SAndroid Build Coastguard Worker}
641*9880d681SAndroid Build Coastguard Worker
642*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrbz_rtn(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
643*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrbz_rtn:
644*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {rd-sae}, %zmm2, %zmm1, %zmm0
646*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
647*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 1) nounwind
648*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
649*9880d681SAndroid Build Coastguard Worker}
650*9880d681SAndroid Build Coastguard Worker
651*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrbz_rtp(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
652*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrbz_rtp:
653*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
654*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {ru-sae}, %zmm2, %zmm1, %zmm0
655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
656*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 2) nounwind
657*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
658*9880d681SAndroid Build Coastguard Worker}
659*9880d681SAndroid Build Coastguard Worker
660*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrbz_rtz(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
661*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrbz_rtz:
662*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
663*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {rz-sae}, %zmm2, %zmm1, %zmm0
664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
665*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 3) nounwind
666*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
667*9880d681SAndroid Build Coastguard Worker}
668*9880d681SAndroid Build Coastguard Worker
669*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mask_round_vfnmsub512_pd_rrbz_current(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
670*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_round_vfnmsub512_pd_rrbz_current:
671*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %zmm2, %zmm1, %zmm0
673*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
674*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 4) nounwind
675*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res
676*9880d681SAndroid Build Coastguard Worker}
677*9880d681SAndroid Build Coastguard Worker
678*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_vfnmsub_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
679*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmsub_pd_512:
680*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %zmm2, %zmm1, %zmm3 {%k1}
684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0
685*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
686*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
687*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
688*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.vfnmsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
689*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
690*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
691*9880d681SAndroid Build Coastguard Worker}
692*9880d681SAndroid Build Coastguard Worker
693*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask3.vfnmsub.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
694*9880d681SAndroid Build Coastguard Worker
695*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask3_vfnmsub_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
696*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfnmsub_pd_512:
697*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub231pd %zmm1, %zmm0, %zmm3 {%k1}
701*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0
702*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
703*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
704*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask3.vfnmsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
705*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask3.vfnmsub.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
706*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
707*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
708*9880d681SAndroid Build Coastguard Worker}
709*9880d681SAndroid Build Coastguard Worker
710*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_vfnmsub_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
711*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmsub_ps_512:
712*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %zmm2, %zmm1, %zmm3 {%k1}
716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0
717*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
718*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
719*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfnmsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
720*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.vfnmsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
721*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
722*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
723*9880d681SAndroid Build Coastguard Worker}
724*9880d681SAndroid Build Coastguard Worker
725*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask3.vfnmsub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
726*9880d681SAndroid Build Coastguard Worker
727*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask3_vfnmsub_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
728*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfnmsub_ps_512:
729*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
730*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
731*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3
732*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub231ps %zmm1, %zmm0, %zmm3 {%k1}
733*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0
734*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
735*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
736*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask3.vfnmsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
737*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask3.vfnmsub.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
738*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
739*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
740*9880d681SAndroid Build Coastguard Worker}
741*9880d681SAndroid Build Coastguard Worker
742*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_vfnmadd_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3){
743*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmadd_pd_512:
744*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd %zmm2, %zmm1, %zmm3 {%k1}
748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
749*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %zmm0, %zmm3, %zmm0
750*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
751*9880d681SAndroid Build Coastguard Worker  %res = call <8 x double> @llvm.x86.avx512.mask.vfnmadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 4)
752*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x double> @llvm.x86.avx512.mask.vfnmadd.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0)
753*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x double> %res, %res1
754*9880d681SAndroid Build Coastguard Worker  ret <8 x double> %res2
755*9880d681SAndroid Build Coastguard Worker}
756*9880d681SAndroid Build Coastguard Worker
757*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_vfnmadd_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3){
758*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmadd_ps_512:
759*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps %zmm2, %zmm1, %zmm3 {%k1}
763*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0
764*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %zmm0, %zmm3, %zmm0
765*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
766*9880d681SAndroid Build Coastguard Worker  %res = call <16 x float> @llvm.x86.avx512.mask.vfnmadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 4)
767*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x float> @llvm.x86.avx512.mask.vfnmadd.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0)
768*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <16 x float> %res, %res1
769*9880d681SAndroid Build Coastguard Worker  ret <16 x float> %res2
770*9880d681SAndroid Build Coastguard Worker}
771