xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512ifmavl-intrinsics.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by update_llc_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl -mattr=+avx512vl -mattr=+avx512ifma | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.128(<2 x i64>, <2 x i64>, <2 x i64>, i8)
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_vpmadd52h_uq_128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3) {
7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_128:
8*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %xmm2, %xmm1, %xmm3 {%k1}
12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %xmm2, %xmm1, %xmm4
14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2
15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %xmm2, %xmm1, %xmm0 {%k1}
16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %xmm2, %xmm1, %xmm2 {%k1} {z}
17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm3, %xmm0
18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm2, %xmm4, %xmm1
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0
20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3)
23*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> zeroinitializer, i8 %x3)
24*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.128(<2 x i64> zeroinitializer, <2 x i64> %x1, <2 x i64> zeroinitializer, i8 %x3)
25*9880d681SAndroid Build Coastguard Worker  %res3 = call <2 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 -1)
26*9880d681SAndroid Build Coastguard Worker  %res4 = add <2 x i64> %res, %res1
27*9880d681SAndroid Build Coastguard Worker  %res5 = add <2 x i64> %res3, %res2
28*9880d681SAndroid Build Coastguard Worker  %res6 = add <2 x i64> %res5, %res4
29*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res6
30*9880d681SAndroid Build Coastguard Worker}
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.256(<4 x i64>, <4 x i64>, <4 x i64>, i8)
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_vpmadd52h_uq_256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %x3) {
35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_256:
36*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %ymm2, %ymm1, %ymm3 {%k1}
40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %ymm2, %ymm1, %ymm4
42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2
43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %ymm2, %ymm1, %ymm0 {%k1}
44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %ymm2, %ymm1, %ymm2 {%k1} {z}
45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm3, %ymm0
46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm2, %ymm4, %ymm1
47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0
48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %x3)
51*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %x3)
52*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.256(<4 x i64> zeroinitializer, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %x3)
53*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x i64> @llvm.x86.avx512.mask.vpmadd52h.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 -1)
54*9880d681SAndroid Build Coastguard Worker  %res4 = add <4 x i64> %res, %res1
55*9880d681SAndroid Build Coastguard Worker  %res5 = add <4 x i64> %res3, %res2
56*9880d681SAndroid Build Coastguard Worker  %res6 = add <4 x i64> %res5, %res4
57*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res6
58*9880d681SAndroid Build Coastguard Worker}
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.128(<2 x i64>, <2 x i64>, <2 x i64>, i8)
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_maskz_vpmadd52h_uq_128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3) {
63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_128:
64*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %xmm2, %xmm1, %xmm3 {%k1} {z}
68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %xmm2, %xmm1, %xmm4
70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2
71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %xmm2, %xmm1, %xmm0 {%k1} {z}
72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %xmm2, %xmm1, %xmm2 {%k1} {z}
73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm3, %xmm0
74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm2, %xmm4, %xmm1
75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0
76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3)
79*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> zeroinitializer, i8 %x3)
80*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.128(<2 x i64> zeroinitializer, <2 x i64> %x1, <2 x i64> zeroinitializer, i8 %x3)
81*9880d681SAndroid Build Coastguard Worker  %res3 = call <2 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 -1)
82*9880d681SAndroid Build Coastguard Worker  %res4 = add <2 x i64> %res, %res1
83*9880d681SAndroid Build Coastguard Worker  %res5 = add <2 x i64> %res3, %res2
84*9880d681SAndroid Build Coastguard Worker  %res6 = add <2 x i64> %res5, %res4
85*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res6
86*9880d681SAndroid Build Coastguard Worker}
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.256(<4 x i64>, <4 x i64>, <4 x i64>, i8)
89*9880d681SAndroid Build Coastguard Worker
90*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_maskz_vpmadd52h_uq_256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %x3) {
91*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_256:
92*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %ymm2, %ymm1, %ymm3 {%k1} {z}
96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %ymm2, %ymm1, %ymm4
98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2
99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %ymm2, %ymm1, %ymm0 {%k1} {z}
100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52huq %ymm2, %ymm1, %ymm2 {%k1} {z}
101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm3, %ymm0
102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm2, %ymm4, %ymm1
103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0
104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %x3)
107*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %x3)
108*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.256(<4 x i64> zeroinitializer, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %x3)
109*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x i64> @llvm.x86.avx512.maskz.vpmadd52h.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 -1)
110*9880d681SAndroid Build Coastguard Worker  %res4 = add <4 x i64> %res, %res1
111*9880d681SAndroid Build Coastguard Worker  %res5 = add <4 x i64> %res3, %res2
112*9880d681SAndroid Build Coastguard Worker  %res6 = add <4 x i64> %res5, %res4
113*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res6
114*9880d681SAndroid Build Coastguard Worker}
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.128(<2 x i64>, <2 x i64>, <2 x i64>, i8)
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_vpmadd52l_uq_128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3) {
119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpmadd52l_uq_128:
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:    vmovaps %zmm0, %zmm3
123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %xmm2, %xmm1, %xmm3 {%k1}
124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %xmm2, %xmm1, %xmm4
126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2
127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %xmm2, %xmm1, %xmm0 {%k1}
128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %xmm2, %xmm1, %xmm2 {%k1} {z}
129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm3, %xmm0
130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm2, %xmm4, %xmm1
131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0
132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3)
135*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> zeroinitializer, i8 %x3)
136*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.128(<2 x i64> zeroinitializer, <2 x i64> %x1, <2 x i64> zeroinitializer, i8 %x3)
137*9880d681SAndroid Build Coastguard Worker  %res3 = call <2 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 -1)
138*9880d681SAndroid Build Coastguard Worker  %res4 = add <2 x i64> %res, %res1
139*9880d681SAndroid Build Coastguard Worker  %res5 = add <2 x i64> %res3, %res2
140*9880d681SAndroid Build Coastguard Worker  %res6 = add <2 x i64> %res5, %res4
141*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res6
142*9880d681SAndroid Build Coastguard Worker}
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.256(<4 x i64>, <4 x i64>, <4 x i64>, i8)
145*9880d681SAndroid Build Coastguard Worker
146*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_vpmadd52l_uq_256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %x3) {
147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpmadd52l_uq_256:
148*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %ymm2, %ymm1, %ymm3 {%k1}
152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %ymm2, %ymm1, %ymm4
154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2
155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %ymm2, %ymm1, %ymm0 {%k1}
156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %ymm2, %ymm1, %ymm2 {%k1} {z}
157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm3, %ymm0
158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm2, %ymm4, %ymm1
159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0
160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
161*9880d681SAndroid Build Coastguard Worker
162*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %x3)
163*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %x3)
164*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.256(<4 x i64> zeroinitializer, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %x3)
165*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x i64> @llvm.x86.avx512.mask.vpmadd52l.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 -1)
166*9880d681SAndroid Build Coastguard Worker  %res4 = add <4 x i64> %res, %res1
167*9880d681SAndroid Build Coastguard Worker  %res5 = add <4 x i64> %res3, %res2
168*9880d681SAndroid Build Coastguard Worker  %res6 = add <4 x i64> %res5, %res4
169*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res6
170*9880d681SAndroid Build Coastguard Worker}
171*9880d681SAndroid Build Coastguard Worker
172*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.128(<2 x i64>, <2 x i64>, <2 x i64>, i8)
173*9880d681SAndroid Build Coastguard Worker
174*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_maskz_vpmadd52l_uq_128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3) {
175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpmadd52l_uq_128:
176*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %xmm2, %xmm1, %xmm3 {%k1} {z}
180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %xmm2, %xmm1, %xmm4
182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %xmm2, %xmm2, %xmm2
183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %xmm2, %xmm1, %xmm0 {%k1} {z}
184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %xmm2, %xmm1, %xmm2 {%k1} {z}
185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm3, %xmm0
186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm2, %xmm4, %xmm1
187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0
188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
189*9880d681SAndroid Build Coastguard Worker
190*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3)
191*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> zeroinitializer, i8 %x3)
192*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.128(<2 x i64> zeroinitializer, <2 x i64> %x1, <2 x i64> zeroinitializer, i8 %x3)
193*9880d681SAndroid Build Coastguard Worker  %res3 = call <2 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 -1)
194*9880d681SAndroid Build Coastguard Worker  %res4 = add <2 x i64> %res, %res1
195*9880d681SAndroid Build Coastguard Worker  %res5 = add <2 x i64> %res3, %res2
196*9880d681SAndroid Build Coastguard Worker  %res6 = add <2 x i64> %res5, %res4
197*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res6
198*9880d681SAndroid Build Coastguard Worker}
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.256(<4 x i64>, <4 x i64>, <4 x i64>, i8)
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_maskz_vpmadd52l_uq_256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %x3) {
203*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpmadd52l_uq_256:
204*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1
206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3
207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %ymm2, %ymm1, %ymm3 {%k1} {z}
208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm4
209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %ymm2, %ymm1, %ymm4
210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpxord %ymm2, %ymm2, %ymm2
211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %ymm2, %ymm1, %ymm0 {%k1} {z}
212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmadd52luq %ymm2, %ymm1, %ymm2 {%k1} {z}
213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm3, %ymm0
214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm2, %ymm4, %ymm1
215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0
216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %x3)
219*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %x3)
220*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.256(<4 x i64> zeroinitializer, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %x3)
221*9880d681SAndroid Build Coastguard Worker  %res3 = call <4 x i64> @llvm.x86.avx512.maskz.vpmadd52l.uq.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 -1)
222*9880d681SAndroid Build Coastguard Worker  %res4 = add <4 x i64> %res, %res1
223*9880d681SAndroid Build Coastguard Worker  %res5 = add <4 x i64> %res3, %res2
224*9880d681SAndroid Build Coastguard Worker  %res6 = add <4 x i64> %res5, %res4
225*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res6
226*9880d681SAndroid Build Coastguard Worker}
227