xref: /llvm-project/llvm/test/CodeGen/X86/ternlog.ll (revision 21e1b13f3384b875bd2205a736570320cb020f3e)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: opt < %s -passes=instcombine -mtriple=x86_64-unknown-unknown -S | llc -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl | FileCheck %s
3; RUN: opt < %s -passes=instcombine -mtriple=x86_64-unknown-unknown -S | llc -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl -early-live-intervals | FileCheck %s
4
5;; This is just a simple test to make sure there are no regressions
6;; cause by splitting/recombining ternlog intrinsics.
7
8declare <4 x i64> @use_merge_4xi64(<4 x i64>, <4 x i64>)
9
10declare <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32>, <4 x i32>, <4 x i32>, i32 immarg)
11declare <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64>, <4 x i64>, <4 x i64>, i32 immarg)
12declare <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i32 immarg)
13declare <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64>, <2 x i64>, <2 x i64>, i32 immarg)
14declare <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i32 immarg)
15declare <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32>, <8 x i32>, <8 x i32>, i32 immarg)
16
17define <16 x i32> @vpternlog_d_v512_imm0(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
18; CHECK-LABEL: vpternlog_d_v512_imm0:
19; CHECK:       # %bb.0:
20; CHECK-NEXT:    vxorps %xmm0, %xmm0, %xmm0
21; CHECK-NEXT:    retq
22  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 0)
23  ret <16 x i32> %r
24}
25
26define <2 x i64> @vpternlog_q_v128_imm1(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
27; CHECK-LABEL: vpternlog_q_v128_imm1:
28; CHECK:       # %bb.0:
29; CHECK-NEXT:    vpternlogq $1, %xmm2, %xmm1, %xmm0
30; CHECK-NEXT:    retq
31  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 1)
32  ret <2 x i64> %r
33}
34
35define <8 x i32> @vpternlog_d_v256_imm2(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
36; CHECK-LABEL: vpternlog_d_v256_imm2:
37; CHECK:       # %bb.0:
38; CHECK-NEXT:    vpternlogd $2, %ymm2, %ymm1, %ymm0
39; CHECK-NEXT:    retq
40  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 2)
41  ret <8 x i32> %r
42}
43
44define <8 x i64> @vpternlog_q_v512_imm3(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
45; CHECK-LABEL: vpternlog_q_v512_imm3:
46; CHECK:       # %bb.0:
47; CHECK-NEXT:    vpternlogq $3, %zmm2, %zmm1, %zmm0
48; CHECK-NEXT:    retq
49  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 3)
50  ret <8 x i64> %r
51}
52
53define <4 x i32> @vpternlog_d_v128_imm4(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
54; CHECK-LABEL: vpternlog_d_v128_imm4:
55; CHECK:       # %bb.0:
56; CHECK-NEXT:    vpternlogd $4, %xmm2, %xmm1, %xmm0
57; CHECK-NEXT:    retq
58  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 4)
59  ret <4 x i32> %r
60}
61
62define <4 x i64> @vpternlog_q_v256_imm5(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
63; CHECK-LABEL: vpternlog_q_v256_imm5:
64; CHECK:       # %bb.0:
65; CHECK-NEXT:    vpternlogq $5, %ymm2, %ymm1, %ymm0
66; CHECK-NEXT:    retq
67  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 5)
68  ret <4 x i64> %r
69}
70
71define <16 x i32> @vpternlog_d_v512_imm6(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
72; CHECK-LABEL: vpternlog_d_v512_imm6:
73; CHECK:       # %bb.0:
74; CHECK-NEXT:    vpternlogd $6, %zmm2, %zmm1, %zmm0
75; CHECK-NEXT:    retq
76  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 6)
77  ret <16 x i32> %r
78}
79
80define <2 x i64> @vpternlog_q_v128_imm7(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
81; CHECK-LABEL: vpternlog_q_v128_imm7:
82; CHECK:       # %bb.0:
83; CHECK-NEXT:    vpternlogq $7, %xmm2, %xmm1, %xmm0
84; CHECK-NEXT:    retq
85  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 7)
86  ret <2 x i64> %r
87}
88
89define <8 x i32> @vpternlog_d_v256_imm8(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
90; CHECK-LABEL: vpternlog_d_v256_imm8:
91; CHECK:       # %bb.0:
92; CHECK-NEXT:    vpternlogd $8, %ymm2, %ymm1, %ymm0
93; CHECK-NEXT:    retq
94  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 8)
95  ret <8 x i32> %r
96}
97
98define <8 x i64> @vpternlog_q_v512_imm9(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
99; CHECK-LABEL: vpternlog_q_v512_imm9:
100; CHECK:       # %bb.0:
101; CHECK-NEXT:    vpternlogq $9, %zmm2, %zmm1, %zmm0
102; CHECK-NEXT:    retq
103  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 9)
104  ret <8 x i64> %r
105}
106
107define <4 x i32> @vpternlog_d_v128_imm10(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
108; CHECK-LABEL: vpternlog_d_v128_imm10:
109; CHECK:       # %bb.0:
110; CHECK-NEXT:    vpternlogd $10, %xmm2, %xmm1, %xmm0
111; CHECK-NEXT:    retq
112  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 10)
113  ret <4 x i32> %r
114}
115
116define <4 x i64> @vpternlog_q_v256_imm11(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
117; CHECK-LABEL: vpternlog_q_v256_imm11:
118; CHECK:       # %bb.0:
119; CHECK-NEXT:    vpternlogq $11, %ymm2, %ymm1, %ymm0
120; CHECK-NEXT:    retq
121  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 11)
122  ret <4 x i64> %r
123}
124
125define <16 x i32> @vpternlog_d_v512_imm12(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
126; CHECK-LABEL: vpternlog_d_v512_imm12:
127; CHECK:       # %bb.0:
128; CHECK-NEXT:    vpternlogd $12, %zmm2, %zmm1, %zmm0
129; CHECK-NEXT:    retq
130  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 12)
131  ret <16 x i32> %r
132}
133
134define <2 x i64> @vpternlog_q_v128_imm13(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
135; CHECK-LABEL: vpternlog_q_v128_imm13:
136; CHECK:       # %bb.0:
137; CHECK-NEXT:    vpternlogq $13, %xmm2, %xmm1, %xmm0
138; CHECK-NEXT:    retq
139  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 13)
140  ret <2 x i64> %r
141}
142
143define <8 x i32> @vpternlog_d_v256_imm14(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
144; CHECK-LABEL: vpternlog_d_v256_imm14:
145; CHECK:       # %bb.0:
146; CHECK-NEXT:    vpternlogd $14, %ymm2, %ymm1, %ymm0
147; CHECK-NEXT:    retq
148  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 14)
149  ret <8 x i32> %r
150}
151
152define <8 x i64> @vpternlog_q_v512_imm15(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
153; CHECK-LABEL: vpternlog_q_v512_imm15:
154; CHECK:       # %bb.0:
155; CHECK-NEXT:    vpternlogq $51, %zmm0, %zmm0, %zmm0
156; CHECK-NEXT:    retq
157  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 15)
158  ret <8 x i64> %r
159}
160
161define <4 x i32> @vpternlog_d_v128_imm16(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
162; CHECK-LABEL: vpternlog_d_v128_imm16:
163; CHECK:       # %bb.0:
164; CHECK-NEXT:    vpternlogd $16, %xmm2, %xmm1, %xmm0
165; CHECK-NEXT:    retq
166  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 16)
167  ret <4 x i32> %r
168}
169
170define <4 x i64> @vpternlog_q_v256_imm17(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
171; CHECK-LABEL: vpternlog_q_v256_imm17:
172; CHECK:       # %bb.0:
173; CHECK-NEXT:    vpternlogq $17, %ymm2, %ymm1, %ymm0
174; CHECK-NEXT:    retq
175  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 17)
176  ret <4 x i64> %r
177}
178
179define <16 x i32> @vpternlog_d_v512_imm18(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
180; CHECK-LABEL: vpternlog_d_v512_imm18:
181; CHECK:       # %bb.0:
182; CHECK-NEXT:    vpternlogd $18, %zmm2, %zmm1, %zmm0
183; CHECK-NEXT:    retq
184  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 18)
185  ret <16 x i32> %r
186}
187
188define <2 x i64> @vpternlog_q_v128_imm19(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
189; CHECK-LABEL: vpternlog_q_v128_imm19:
190; CHECK:       # %bb.0:
191; CHECK-NEXT:    vpternlogq $19, %xmm2, %xmm1, %xmm0
192; CHECK-NEXT:    retq
193  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 19)
194  ret <2 x i64> %r
195}
196
197define <8 x i32> @vpternlog_d_v256_imm20(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
198; CHECK-LABEL: vpternlog_d_v256_imm20:
199; CHECK:       # %bb.0:
200; CHECK-NEXT:    vpternlogd $20, %ymm2, %ymm1, %ymm0
201; CHECK-NEXT:    retq
202  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 20)
203  ret <8 x i32> %r
204}
205
206define <8 x i64> @vpternlog_q_v512_imm21(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
207; CHECK-LABEL: vpternlog_q_v512_imm21:
208; CHECK:       # %bb.0:
209; CHECK-NEXT:    vpternlogq $21, %zmm2, %zmm1, %zmm0
210; CHECK-NEXT:    retq
211  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 21)
212  ret <8 x i64> %r
213}
214
215;; This is one_bit_set pattern
216define <4 x i32> @vpternlog_d_v128_imm22(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
217; CHECK-LABEL: vpternlog_d_v128_imm22:
218; CHECK:       # %bb.0:
219; CHECK-NEXT:    vpternlogd $22, %xmm2, %xmm1, %xmm0
220; CHECK-NEXT:    retq
221  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 22)
222  ret <4 x i32> %r
223}
224
225define <4 x i64> @vpternlog_q_v256_imm23(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
226; CHECK-LABEL: vpternlog_q_v256_imm23:
227; CHECK:       # %bb.0:
228; CHECK-NEXT:    vpternlogq $23, %ymm2, %ymm1, %ymm0
229; CHECK-NEXT:    retq
230  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 23)
231  ret <4 x i64> %r
232}
233
234define <16 x i32> @vpternlog_d_v512_imm24(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
235; CHECK-LABEL: vpternlog_d_v512_imm24:
236; CHECK:       # %bb.0:
237; CHECK-NEXT:    vpternlogd $24, %zmm2, %zmm1, %zmm0
238; CHECK-NEXT:    retq
239  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 24)
240  ret <16 x i32> %r
241}
242
243define <2 x i64> @vpternlog_q_v128_imm25(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
244; CHECK-LABEL: vpternlog_q_v128_imm25:
245; CHECK:       # %bb.0:
246; CHECK-NEXT:    vpternlogq $25, %xmm2, %xmm1, %xmm0
247; CHECK-NEXT:    retq
248  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 25)
249  ret <2 x i64> %r
250}
251
252define <8 x i32> @vpternlog_d_v256_imm26(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
253; CHECK-LABEL: vpternlog_d_v256_imm26:
254; CHECK:       # %bb.0:
255; CHECK-NEXT:    vpternlogd $26, %ymm2, %ymm1, %ymm0
256; CHECK-NEXT:    retq
257  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 26)
258  ret <8 x i32> %r
259}
260
261define <8 x i64> @vpternlog_q_v512_imm27(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
262; CHECK-LABEL: vpternlog_q_v512_imm27:
263; CHECK:       # %bb.0:
264; CHECK-NEXT:    vpternlogq $27, %zmm2, %zmm1, %zmm0
265; CHECK-NEXT:    retq
266  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 27)
267  ret <8 x i64> %r
268}
269
270define <4 x i32> @vpternlog_d_v128_imm28(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
271; CHECK-LABEL: vpternlog_d_v128_imm28:
272; CHECK:       # %bb.0:
273; CHECK-NEXT:    vpternlogd $28, %xmm2, %xmm1, %xmm0
274; CHECK-NEXT:    retq
275  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 28)
276  ret <4 x i32> %r
277}
278
279define <4 x i64> @vpternlog_q_v256_imm29(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
280; CHECK-LABEL: vpternlog_q_v256_imm29:
281; CHECK:       # %bb.0:
282; CHECK-NEXT:    vpternlogq $29, %ymm2, %ymm1, %ymm0
283; CHECK-NEXT:    retq
284  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 29)
285  ret <4 x i64> %r
286}
287
288define <16 x i32> @vpternlog_d_v512_imm30(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
289; CHECK-LABEL: vpternlog_d_v512_imm30:
290; CHECK:       # %bb.0:
291; CHECK-NEXT:    vpternlogd $30, %zmm2, %zmm1, %zmm0
292; CHECK-NEXT:    retq
293  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 30)
294  ret <16 x i32> %r
295}
296
297define <2 x i64> @vpternlog_q_v128_imm31(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
298; CHECK-LABEL: vpternlog_q_v128_imm31:
299; CHECK:       # %bb.0:
300; CHECK-NEXT:    vpternlogq $31, %xmm2, %xmm1, %xmm0
301; CHECK-NEXT:    retq
302  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 31)
303  ret <2 x i64> %r
304}
305
306define <8 x i32> @vpternlog_d_v256_imm32(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
307; CHECK-LABEL: vpternlog_d_v256_imm32:
308; CHECK:       # %bb.0:
309; CHECK-NEXT:    vpternlogd $32, %ymm2, %ymm1, %ymm0
310; CHECK-NEXT:    retq
311  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 32)
312  ret <8 x i32> %r
313}
314
315define <8 x i64> @vpternlog_q_v512_imm33(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
316; CHECK-LABEL: vpternlog_q_v512_imm33:
317; CHECK:       # %bb.0:
318; CHECK-NEXT:    vpternlogq $33, %zmm2, %zmm1, %zmm0
319; CHECK-NEXT:    retq
320  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 33)
321  ret <8 x i64> %r
322}
323
324define <4 x i32> @vpternlog_d_v128_imm34(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
325; CHECK-LABEL: vpternlog_d_v128_imm34:
326; CHECK:       # %bb.0:
327; CHECK-NEXT:    vpternlogd $34, %xmm2, %xmm1, %xmm0
328; CHECK-NEXT:    retq
329  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 34)
330  ret <4 x i32> %r
331}
332
333define <4 x i64> @vpternlog_q_v256_imm35(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
334; CHECK-LABEL: vpternlog_q_v256_imm35:
335; CHECK:       # %bb.0:
336; CHECK-NEXT:    vpternlogq $35, %ymm2, %ymm1, %ymm0
337; CHECK-NEXT:    retq
338  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 35)
339  ret <4 x i64> %r
340}
341
342define <16 x i32> @vpternlog_d_v512_imm36(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
343; CHECK-LABEL: vpternlog_d_v512_imm36:
344; CHECK:       # %bb.0:
345; CHECK-NEXT:    vpternlogd $36, %zmm2, %zmm1, %zmm0
346; CHECK-NEXT:    retq
347  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 36)
348  ret <16 x i32> %r
349}
350
351define <2 x i64> @vpternlog_q_v128_imm37(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
352; CHECK-LABEL: vpternlog_q_v128_imm37:
353; CHECK:       # %bb.0:
354; CHECK-NEXT:    vpternlogq $37, %xmm2, %xmm1, %xmm0
355; CHECK-NEXT:    retq
356  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 37)
357  ret <2 x i64> %r
358}
359
360define <8 x i32> @vpternlog_d_v256_imm38(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
361; CHECK-LABEL: vpternlog_d_v256_imm38:
362; CHECK:       # %bb.0:
363; CHECK-NEXT:    vpternlogd $38, %ymm2, %ymm1, %ymm0
364; CHECK-NEXT:    retq
365  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 38)
366  ret <8 x i32> %r
367}
368
369define <8 x i64> @vpternlog_q_v512_imm39(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
370; CHECK-LABEL: vpternlog_q_v512_imm39:
371; CHECK:       # %bb.0:
372; CHECK-NEXT:    vpternlogq $39, %zmm2, %zmm1, %zmm0
373; CHECK-NEXT:    retq
374  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 39)
375  ret <8 x i64> %r
376}
377
378define <4 x i32> @vpternlog_d_v128_imm40(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
379; CHECK-LABEL: vpternlog_d_v128_imm40:
380; CHECK:       # %bb.0:
381; CHECK-NEXT:    vpternlogd $40, %xmm2, %xmm1, %xmm0
382; CHECK-NEXT:    retq
383  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 40)
384  ret <4 x i32> %r
385}
386
387define <4 x i64> @vpternlog_q_v256_imm41(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
388; CHECK-LABEL: vpternlog_q_v256_imm41:
389; CHECK:       # %bb.0:
390; CHECK-NEXT:    vpternlogq $41, %ymm2, %ymm1, %ymm0
391; CHECK-NEXT:    retq
392  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 41)
393  ret <4 x i64> %r
394}
395
396define <16 x i32> @vpternlog_d_v512_imm42(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
397; CHECK-LABEL: vpternlog_d_v512_imm42:
398; CHECK:       # %bb.0:
399; CHECK-NEXT:    vpternlogd $42, %zmm2, %zmm1, %zmm0
400; CHECK-NEXT:    retq
401  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 42)
402  ret <16 x i32> %r
403}
404
405define <2 x i64> @vpternlog_q_v128_imm43(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
406; CHECK-LABEL: vpternlog_q_v128_imm43:
407; CHECK:       # %bb.0:
408; CHECK-NEXT:    vpternlogq $43, %xmm2, %xmm1, %xmm0
409; CHECK-NEXT:    retq
410  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 43)
411  ret <2 x i64> %r
412}
413
414define <8 x i32> @vpternlog_d_v256_imm44(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
415; CHECK-LABEL: vpternlog_d_v256_imm44:
416; CHECK:       # %bb.0:
417; CHECK-NEXT:    vpternlogd $44, %ymm2, %ymm1, %ymm0
418; CHECK-NEXT:    retq
419  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 44)
420  ret <8 x i32> %r
421}
422
423define <8 x i64> @vpternlog_q_v512_imm45(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
424; CHECK-LABEL: vpternlog_q_v512_imm45:
425; CHECK:       # %bb.0:
426; CHECK-NEXT:    vpternlogq $45, %zmm2, %zmm1, %zmm0
427; CHECK-NEXT:    retq
428  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 45)
429  ret <8 x i64> %r
430}
431
432define <4 x i32> @vpternlog_d_v128_imm46(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
433; CHECK-LABEL: vpternlog_d_v128_imm46:
434; CHECK:       # %bb.0:
435; CHECK-NEXT:    vpternlogd $46, %xmm2, %xmm1, %xmm0
436; CHECK-NEXT:    retq
437  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 46)
438  ret <4 x i32> %r
439}
440
441define <4 x i64> @vpternlog_q_v256_imm47(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
442; CHECK-LABEL: vpternlog_q_v256_imm47:
443; CHECK:       # %bb.0:
444; CHECK-NEXT:    vpternlogq $47, %ymm2, %ymm1, %ymm0
445; CHECK-NEXT:    retq
446  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 47)
447  ret <4 x i64> %r
448}
449
450define <16 x i32> @vpternlog_d_v512_imm48(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
451; CHECK-LABEL: vpternlog_d_v512_imm48:
452; CHECK:       # %bb.0:
453; CHECK-NEXT:    vpternlogd $48, %zmm2, %zmm1, %zmm0
454; CHECK-NEXT:    retq
455  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 48)
456  ret <16 x i32> %r
457}
458
459define <2 x i64> @vpternlog_q_v128_imm49(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
460; CHECK-LABEL: vpternlog_q_v128_imm49:
461; CHECK:       # %bb.0:
462; CHECK-NEXT:    vpternlogq $49, %xmm2, %xmm1, %xmm0
463; CHECK-NEXT:    retq
464  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 49)
465  ret <2 x i64> %r
466}
467
468define <8 x i32> @vpternlog_d_v256_imm50(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
469; CHECK-LABEL: vpternlog_d_v256_imm50:
470; CHECK:       # %bb.0:
471; CHECK-NEXT:    vpternlogd $50, %ymm2, %ymm1, %ymm0
472; CHECK-NEXT:    retq
473  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 50)
474  ret <8 x i32> %r
475}
476
477define <8 x i64> @vpternlog_q_v512_imm51(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
478; CHECK-LABEL: vpternlog_q_v512_imm51:
479; CHECK:       # %bb.0:
480; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm0
481; CHECK-NEXT:    vpternlogq $15, %zmm1, %zmm1, %zmm0
482; CHECK-NEXT:    retq
483  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 51)
484  ret <8 x i64> %r
485}
486
487define <4 x i32> @vpternlog_d_v128_imm52(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
488; CHECK-LABEL: vpternlog_d_v128_imm52:
489; CHECK:       # %bb.0:
490; CHECK-NEXT:    vpternlogd $52, %xmm2, %xmm1, %xmm0
491; CHECK-NEXT:    retq
492  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 52)
493  ret <4 x i32> %r
494}
495
496define <4 x i64> @vpternlog_q_v256_imm53(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
497; CHECK-LABEL: vpternlog_q_v256_imm53:
498; CHECK:       # %bb.0:
499; CHECK-NEXT:    vpternlogq $53, %ymm2, %ymm1, %ymm0
500; CHECK-NEXT:    retq
501  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 53)
502  ret <4 x i64> %r
503}
504
505define <16 x i32> @vpternlog_d_v512_imm54(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
506; CHECK-LABEL: vpternlog_d_v512_imm54:
507; CHECK:       # %bb.0:
508; CHECK-NEXT:    vpternlogd $54, %zmm2, %zmm1, %zmm0
509; CHECK-NEXT:    retq
510  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 54)
511  ret <16 x i32> %r
512}
513
514define <2 x i64> @vpternlog_q_v128_imm55(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
515; CHECK-LABEL: vpternlog_q_v128_imm55:
516; CHECK:       # %bb.0:
517; CHECK-NEXT:    vpternlogq $55, %xmm2, %xmm1, %xmm0
518; CHECK-NEXT:    retq
519  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 55)
520  ret <2 x i64> %r
521}
522
523define <8 x i32> @vpternlog_d_v256_imm56(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
524; CHECK-LABEL: vpternlog_d_v256_imm56:
525; CHECK:       # %bb.0:
526; CHECK-NEXT:    vpternlogd $56, %ymm2, %ymm1, %ymm0
527; CHECK-NEXT:    retq
528  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 56)
529  ret <8 x i32> %r
530}
531
532define <8 x i64> @vpternlog_q_v512_imm57(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
533; CHECK-LABEL: vpternlog_q_v512_imm57:
534; CHECK:       # %bb.0:
535; CHECK-NEXT:    vpternlogq $57, %zmm2, %zmm1, %zmm0
536; CHECK-NEXT:    retq
537  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 57)
538  ret <8 x i64> %r
539}
540
541define <4 x i32> @vpternlog_d_v128_imm58(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
542; CHECK-LABEL: vpternlog_d_v128_imm58:
543; CHECK:       # %bb.0:
544; CHECK-NEXT:    vpternlogd $58, %xmm2, %xmm1, %xmm0
545; CHECK-NEXT:    retq
546  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 58)
547  ret <4 x i32> %r
548}
549
550define <4 x i64> @vpternlog_q_v256_imm59(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
551; CHECK-LABEL: vpternlog_q_v256_imm59:
552; CHECK:       # %bb.0:
553; CHECK-NEXT:    vpternlogq $59, %ymm2, %ymm1, %ymm0
554; CHECK-NEXT:    retq
555  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 59)
556  ret <4 x i64> %r
557}
558
559define <16 x i32> @vpternlog_d_v512_imm60(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
560; CHECK-LABEL: vpternlog_d_v512_imm60:
561; CHECK:       # %bb.0:
562; CHECK-NEXT:    vpxord %zmm1, %zmm0, %zmm0
563; CHECK-NEXT:    retq
564  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 60)
565  ret <16 x i32> %r
566}
567
568define <2 x i64> @vpternlog_q_v128_imm61(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
569; CHECK-LABEL: vpternlog_q_v128_imm61:
570; CHECK:       # %bb.0:
571; CHECK-NEXT:    vpternlogq $61, %xmm2, %xmm1, %xmm0
572; CHECK-NEXT:    retq
573  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 61)
574  ret <2 x i64> %r
575}
576
577define <8 x i32> @vpternlog_d_v256_imm62(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
578; CHECK-LABEL: vpternlog_d_v256_imm62:
579; CHECK:       # %bb.0:
580; CHECK-NEXT:    vpternlogd $62, %ymm2, %ymm1, %ymm0
581; CHECK-NEXT:    retq
582  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 62)
583  ret <8 x i32> %r
584}
585
586define <8 x i64> @vpternlog_q_v512_imm63(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
587; CHECK-LABEL: vpternlog_q_v512_imm63:
588; CHECK:       # %bb.0:
589; CHECK-NEXT:    vpternlogq $63, %zmm2, %zmm1, %zmm0
590; CHECK-NEXT:    retq
591  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 63)
592  ret <8 x i64> %r
593}
594
595define <4 x i32> @vpternlog_d_v128_imm64(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
596; CHECK-LABEL: vpternlog_d_v128_imm64:
597; CHECK:       # %bb.0:
598; CHECK-NEXT:    vpternlogd $64, %xmm2, %xmm1, %xmm0
599; CHECK-NEXT:    retq
600  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 64)
601  ret <4 x i32> %r
602}
603
604define <4 x i64> @vpternlog_q_v256_imm65(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
605; CHECK-LABEL: vpternlog_q_v256_imm65:
606; CHECK:       # %bb.0:
607; CHECK-NEXT:    vpternlogq $65, %ymm2, %ymm1, %ymm0
608; CHECK-NEXT:    retq
609  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 65)
610  ret <4 x i64> %r
611}
612
613define <16 x i32> @vpternlog_d_v512_imm66(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
614; CHECK-LABEL: vpternlog_d_v512_imm66:
615; CHECK:       # %bb.0:
616; CHECK-NEXT:    vpternlogd $66, %zmm2, %zmm1, %zmm0
617; CHECK-NEXT:    retq
618  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 66)
619  ret <16 x i32> %r
620}
621
622define <2 x i64> @vpternlog_q_v128_imm67(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
623; CHECK-LABEL: vpternlog_q_v128_imm67:
624; CHECK:       # %bb.0:
625; CHECK-NEXT:    vpternlogq $67, %xmm2, %xmm1, %xmm0
626; CHECK-NEXT:    retq
627  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 67)
628  ret <2 x i64> %r
629}
630
631define <8 x i32> @vpternlog_d_v256_imm68(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
632; CHECK-LABEL: vpternlog_d_v256_imm68:
633; CHECK:       # %bb.0:
634; CHECK-NEXT:    vpternlogd $68, %ymm2, %ymm1, %ymm0
635; CHECK-NEXT:    retq
636  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 68)
637  ret <8 x i32> %r
638}
639
640define <8 x i64> @vpternlog_q_v512_imm69(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
641; CHECK-LABEL: vpternlog_q_v512_imm69:
642; CHECK:       # %bb.0:
643; CHECK-NEXT:    vpternlogq $69, %zmm2, %zmm1, %zmm0
644; CHECK-NEXT:    retq
645  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 69)
646  ret <8 x i64> %r
647}
648
649define <4 x i32> @vpternlog_d_v128_imm70(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
650; CHECK-LABEL: vpternlog_d_v128_imm70:
651; CHECK:       # %bb.0:
652; CHECK-NEXT:    vpternlogd $70, %xmm2, %xmm1, %xmm0
653; CHECK-NEXT:    retq
654  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 70)
655  ret <4 x i32> %r
656}
657
658define <4 x i64> @vpternlog_q_v256_imm71(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
659; CHECK-LABEL: vpternlog_q_v256_imm71:
660; CHECK:       # %bb.0:
661; CHECK-NEXT:    vpternlogq $71, %ymm2, %ymm1, %ymm0
662; CHECK-NEXT:    retq
663  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 71)
664  ret <4 x i64> %r
665}
666
667define <16 x i32> @vpternlog_d_v512_imm72(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
668; CHECK-LABEL: vpternlog_d_v512_imm72:
669; CHECK:       # %bb.0:
670; CHECK-NEXT:    vpternlogd $72, %zmm2, %zmm1, %zmm0
671; CHECK-NEXT:    retq
672  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 72)
673  ret <16 x i32> %r
674}
675
676define <2 x i64> @vpternlog_q_v128_imm73(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
677; CHECK-LABEL: vpternlog_q_v128_imm73:
678; CHECK:       # %bb.0:
679; CHECK-NEXT:    vpternlogq $73, %xmm2, %xmm1, %xmm0
680; CHECK-NEXT:    retq
681  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 73)
682  ret <2 x i64> %r
683}
684
685define <8 x i32> @vpternlog_d_v256_imm74(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
686; CHECK-LABEL: vpternlog_d_v256_imm74:
687; CHECK:       # %bb.0:
688; CHECK-NEXT:    vpternlogd $74, %ymm2, %ymm1, %ymm0
689; CHECK-NEXT:    retq
690  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 74)
691  ret <8 x i32> %r
692}
693
694define <8 x i64> @vpternlog_q_v512_imm75(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
695; CHECK-LABEL: vpternlog_q_v512_imm75:
696; CHECK:       # %bb.0:
697; CHECK-NEXT:    vpternlogq $75, %zmm2, %zmm1, %zmm0
698; CHECK-NEXT:    retq
699  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 75)
700  ret <8 x i64> %r
701}
702
703define <4 x i32> @vpternlog_d_v128_imm76(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
704; CHECK-LABEL: vpternlog_d_v128_imm76:
705; CHECK:       # %bb.0:
706; CHECK-NEXT:    vpternlogd $76, %xmm2, %xmm1, %xmm0
707; CHECK-NEXT:    retq
708  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 76)
709  ret <4 x i32> %r
710}
711
712define <4 x i64> @vpternlog_q_v256_imm77(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
713; CHECK-LABEL: vpternlog_q_v256_imm77:
714; CHECK:       # %bb.0:
715; CHECK-NEXT:    vpternlogq $77, %ymm2, %ymm1, %ymm0
716; CHECK-NEXT:    retq
717  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 77)
718  ret <4 x i64> %r
719}
720
721define <16 x i32> @vpternlog_d_v512_imm78(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
722; CHECK-LABEL: vpternlog_d_v512_imm78:
723; CHECK:       # %bb.0:
724; CHECK-NEXT:    vpternlogd $78, %zmm2, %zmm1, %zmm0
725; CHECK-NEXT:    retq
726  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 78)
727  ret <16 x i32> %r
728}
729
730define <2 x i64> @vpternlog_q_v128_imm79(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
731; CHECK-LABEL: vpternlog_q_v128_imm79:
732; CHECK:       # %bb.0:
733; CHECK-NEXT:    vpternlogq $79, %xmm2, %xmm1, %xmm0
734; CHECK-NEXT:    retq
735  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 79)
736  ret <2 x i64> %r
737}
738
739define <8 x i32> @vpternlog_d_v256_imm80(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
740; CHECK-LABEL: vpternlog_d_v256_imm80:
741; CHECK:       # %bb.0:
742; CHECK-NEXT:    vpternlogd $80, %ymm2, %ymm1, %ymm0
743; CHECK-NEXT:    retq
744  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 80)
745  ret <8 x i32> %r
746}
747
748define <8 x i64> @vpternlog_q_v512_imm81(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
749; CHECK-LABEL: vpternlog_q_v512_imm81:
750; CHECK:       # %bb.0:
751; CHECK-NEXT:    vpternlogq $81, %zmm2, %zmm1, %zmm0
752; CHECK-NEXT:    retq
753  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 81)
754  ret <8 x i64> %r
755}
756
757define <4 x i32> @vpternlog_d_v128_imm82(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
758; CHECK-LABEL: vpternlog_d_v128_imm82:
759; CHECK:       # %bb.0:
760; CHECK-NEXT:    vpternlogd $82, %xmm2, %xmm1, %xmm0
761; CHECK-NEXT:    retq
762  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 82)
763  ret <4 x i32> %r
764}
765
766define <4 x i64> @vpternlog_q_v256_imm83(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
767; CHECK-LABEL: vpternlog_q_v256_imm83:
768; CHECK:       # %bb.0:
769; CHECK-NEXT:    vpternlogq $83, %ymm2, %ymm1, %ymm0
770; CHECK-NEXT:    retq
771  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 83)
772  ret <4 x i64> %r
773}
774
775define <16 x i32> @vpternlog_d_v512_imm84(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
776; CHECK-LABEL: vpternlog_d_v512_imm84:
777; CHECK:       # %bb.0:
778; CHECK-NEXT:    vpternlogd $84, %zmm2, %zmm1, %zmm0
779; CHECK-NEXT:    retq
780  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 84)
781  ret <16 x i32> %r
782}
783
784define <2 x i64> @vpternlog_q_v128_imm85(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
785; CHECK-LABEL: vpternlog_q_v128_imm85:
786; CHECK:       # %bb.0:
787; CHECK-NEXT:    vmovdqa %xmm2, %xmm0
788; CHECK-NEXT:    vpternlogq $15, %xmm2, %xmm2, %xmm0
789; CHECK-NEXT:    retq
790  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 85)
791  ret <2 x i64> %r
792}
793
794define <8 x i32> @vpternlog_d_v256_imm86(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
795; CHECK-LABEL: vpternlog_d_v256_imm86:
796; CHECK:       # %bb.0:
797; CHECK-NEXT:    vpternlogd $86, %ymm2, %ymm1, %ymm0
798; CHECK-NEXT:    retq
799  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 86)
800  ret <8 x i32> %r
801}
802
803define <8 x i64> @vpternlog_q_v512_imm87(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
804; CHECK-LABEL: vpternlog_q_v512_imm87:
805; CHECK:       # %bb.0:
806; CHECK-NEXT:    vpternlogq $87, %zmm2, %zmm1, %zmm0
807; CHECK-NEXT:    retq
808  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 87)
809  ret <8 x i64> %r
810}
811
812define <4 x i32> @vpternlog_d_v128_imm88(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
813; CHECK-LABEL: vpternlog_d_v128_imm88:
814; CHECK:       # %bb.0:
815; CHECK-NEXT:    vpternlogd $88, %xmm2, %xmm1, %xmm0
816; CHECK-NEXT:    retq
817  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 88)
818  ret <4 x i32> %r
819}
820
821define <4 x i64> @vpternlog_q_v256_imm89(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
822; CHECK-LABEL: vpternlog_q_v256_imm89:
823; CHECK:       # %bb.0:
824; CHECK-NEXT:    vpternlogq $89, %ymm2, %ymm1, %ymm0
825; CHECK-NEXT:    retq
826  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 89)
827  ret <4 x i64> %r
828}
829
830define <16 x i32> @vpternlog_d_v512_imm90(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
831; CHECK-LABEL: vpternlog_d_v512_imm90:
832; CHECK:       # %bb.0:
833; CHECK-NEXT:    vpxord %zmm2, %zmm0, %zmm0
834; CHECK-NEXT:    retq
835  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 90)
836  ret <16 x i32> %r
837}
838
839define <2 x i64> @vpternlog_q_v128_imm91(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
840; CHECK-LABEL: vpternlog_q_v128_imm91:
841; CHECK:       # %bb.0:
842; CHECK-NEXT:    vpternlogq $91, %xmm2, %xmm1, %xmm0
843; CHECK-NEXT:    retq
844  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 91)
845  ret <2 x i64> %r
846}
847
848define <8 x i32> @vpternlog_d_v256_imm92(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
849; CHECK-LABEL: vpternlog_d_v256_imm92:
850; CHECK:       # %bb.0:
851; CHECK-NEXT:    vpternlogd $92, %ymm2, %ymm1, %ymm0
852; CHECK-NEXT:    retq
853  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 92)
854  ret <8 x i32> %r
855}
856
857define <8 x i64> @vpternlog_q_v512_imm93(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
858; CHECK-LABEL: vpternlog_q_v512_imm93:
859; CHECK:       # %bb.0:
860; CHECK-NEXT:    vpternlogq $93, %zmm2, %zmm1, %zmm0
861; CHECK-NEXT:    retq
862  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 93)
863  ret <8 x i64> %r
864}
865
866define <4 x i32> @vpternlog_d_v128_imm94(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
867; CHECK-LABEL: vpternlog_d_v128_imm94:
868; CHECK:       # %bb.0:
869; CHECK-NEXT:    vpternlogd $94, %xmm2, %xmm1, %xmm0
870; CHECK-NEXT:    retq
871  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 94)
872  ret <4 x i32> %r
873}
874
875define <4 x i64> @vpternlog_q_v256_imm95(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
876; CHECK-LABEL: vpternlog_q_v256_imm95:
877; CHECK:       # %bb.0:
878; CHECK-NEXT:    vpternlogq $95, %ymm2, %ymm1, %ymm0
879; CHECK-NEXT:    retq
880  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 95)
881  ret <4 x i64> %r
882}
883
884define <16 x i32> @vpternlog_d_v512_imm96(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
885; CHECK-LABEL: vpternlog_d_v512_imm96:
886; CHECK:       # %bb.0:
887; CHECK-NEXT:    vpternlogd $96, %zmm2, %zmm1, %zmm0
888; CHECK-NEXT:    retq
889  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 96)
890  ret <16 x i32> %r
891}
892
893define <2 x i64> @vpternlog_q_v128_imm97(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
894; CHECK-LABEL: vpternlog_q_v128_imm97:
895; CHECK:       # %bb.0:
896; CHECK-NEXT:    vpternlogq $97, %xmm2, %xmm1, %xmm0
897; CHECK-NEXT:    retq
898  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 97)
899  ret <2 x i64> %r
900}
901
902define <8 x i32> @vpternlog_d_v256_imm98(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
903; CHECK-LABEL: vpternlog_d_v256_imm98:
904; CHECK:       # %bb.0:
905; CHECK-NEXT:    vpternlogd $98, %ymm2, %ymm1, %ymm0
906; CHECK-NEXT:    retq
907  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 98)
908  ret <8 x i32> %r
909}
910
911define <8 x i64> @vpternlog_q_v512_imm99(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
912; CHECK-LABEL: vpternlog_q_v512_imm99:
913; CHECK:       # %bb.0:
914; CHECK-NEXT:    vpternlogq $99, %zmm2, %zmm1, %zmm0
915; CHECK-NEXT:    retq
916  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 99)
917  ret <8 x i64> %r
918}
919
920define <4 x i32> @vpternlog_d_v128_imm100(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
921; CHECK-LABEL: vpternlog_d_v128_imm100:
922; CHECK:       # %bb.0:
923; CHECK-NEXT:    vpternlogd $100, %xmm2, %xmm1, %xmm0
924; CHECK-NEXT:    retq
925  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 100)
926  ret <4 x i32> %r
927}
928
929define <4 x i64> @vpternlog_q_v256_imm101(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
930; CHECK-LABEL: vpternlog_q_v256_imm101:
931; CHECK:       # %bb.0:
932; CHECK-NEXT:    vpternlogq $101, %ymm2, %ymm1, %ymm0
933; CHECK-NEXT:    retq
934  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 101)
935  ret <4 x i64> %r
936}
937
938define <16 x i32> @vpternlog_d_v512_imm102(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
939; CHECK-LABEL: vpternlog_d_v512_imm102:
940; CHECK:       # %bb.0:
941; CHECK-NEXT:    vpxord %zmm2, %zmm1, %zmm0
942; CHECK-NEXT:    retq
943  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 102)
944  ret <16 x i32> %r
945}
946
947define <2 x i64> @vpternlog_q_v128_imm103(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
948; CHECK-LABEL: vpternlog_q_v128_imm103:
949; CHECK:       # %bb.0:
950; CHECK-NEXT:    vpternlogq $103, %xmm2, %xmm1, %xmm0
951; CHECK-NEXT:    retq
952  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 103)
953  ret <2 x i64> %r
954}
955
956; This is two_bits_set pattern
957define <8 x i32> @vpternlog_d_v256_imm104(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
958; CHECK-LABEL: vpternlog_d_v256_imm104:
959; CHECK:       # %bb.0:
960; CHECK-NEXT:    vpternlogd $104, %ymm2, %ymm1, %ymm0
961; CHECK-NEXT:    retq
962  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 104)
963  ret <8 x i32> %r
964}
965
966define <8 x i64> @vpternlog_q_v512_imm105(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
967; CHECK-LABEL: vpternlog_q_v512_imm105:
968; CHECK:       # %bb.0:
969; CHECK-NEXT:    vpternlogq $105, %zmm2, %zmm1, %zmm0
970; CHECK-NEXT:    retq
971  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 105)
972  ret <8 x i64> %r
973}
974
975define <4 x i32> @vpternlog_d_v128_imm106(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
976; CHECK-LABEL: vpternlog_d_v128_imm106:
977; CHECK:       # %bb.0:
978; CHECK-NEXT:    vpternlogd $106, %xmm2, %xmm1, %xmm0
979; CHECK-NEXT:    retq
980  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 106)
981  ret <4 x i32> %r
982}
983
984define <4 x i64> @vpternlog_q_v256_imm107(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
985; CHECK-LABEL: vpternlog_q_v256_imm107:
986; CHECK:       # %bb.0:
987; CHECK-NEXT:    vpternlogq $107, %ymm2, %ymm1, %ymm0
988; CHECK-NEXT:    retq
989  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 107)
990  ret <4 x i64> %r
991}
992
993define <16 x i32> @vpternlog_d_v512_imm108(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
994; CHECK-LABEL: vpternlog_d_v512_imm108:
995; CHECK:       # %bb.0:
996; CHECK-NEXT:    vpternlogd $108, %zmm2, %zmm1, %zmm0
997; CHECK-NEXT:    retq
998  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 108)
999  ret <16 x i32> %r
1000}
1001
1002define <2 x i64> @vpternlog_q_v128_imm109(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1003; CHECK-LABEL: vpternlog_q_v128_imm109:
1004; CHECK:       # %bb.0:
1005; CHECK-NEXT:    vpternlogq $109, %xmm2, %xmm1, %xmm0
1006; CHECK-NEXT:    retq
1007  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 109)
1008  ret <2 x i64> %r
1009}
1010
1011define <8 x i32> @vpternlog_d_v256_imm110(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1012; CHECK-LABEL: vpternlog_d_v256_imm110:
1013; CHECK:       # %bb.0:
1014; CHECK-NEXT:    vpternlogd $110, %ymm2, %ymm1, %ymm0
1015; CHECK-NEXT:    retq
1016  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 110)
1017  ret <8 x i32> %r
1018}
1019
1020define <8 x i64> @vpternlog_q_v512_imm111(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1021; CHECK-LABEL: vpternlog_q_v512_imm111:
1022; CHECK:       # %bb.0:
1023; CHECK-NEXT:    vpternlogq $111, %zmm2, %zmm1, %zmm0
1024; CHECK-NEXT:    retq
1025  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 111)
1026  ret <8 x i64> %r
1027}
1028
1029define <4 x i32> @vpternlog_d_v128_imm112(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1030; CHECK-LABEL: vpternlog_d_v128_imm112:
1031; CHECK:       # %bb.0:
1032; CHECK-NEXT:    vpternlogd $112, %xmm2, %xmm1, %xmm0
1033; CHECK-NEXT:    retq
1034  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 112)
1035  ret <4 x i32> %r
1036}
1037
1038define <4 x i64> @vpternlog_q_v256_imm113(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1039; CHECK-LABEL: vpternlog_q_v256_imm113:
1040; CHECK:       # %bb.0:
1041; CHECK-NEXT:    vpternlogq $113, %ymm2, %ymm1, %ymm0
1042; CHECK-NEXT:    retq
1043  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 113)
1044  ret <4 x i64> %r
1045}
1046
1047define <16 x i32> @vpternlog_d_v512_imm114(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1048; CHECK-LABEL: vpternlog_d_v512_imm114:
1049; CHECK:       # %bb.0:
1050; CHECK-NEXT:    vpternlogd $114, %zmm2, %zmm1, %zmm0
1051; CHECK-NEXT:    retq
1052  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 114)
1053  ret <16 x i32> %r
1054}
1055
1056define <2 x i64> @vpternlog_q_v128_imm115(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1057; CHECK-LABEL: vpternlog_q_v128_imm115:
1058; CHECK:       # %bb.0:
1059; CHECK-NEXT:    vpternlogq $115, %xmm2, %xmm1, %xmm0
1060; CHECK-NEXT:    retq
1061  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 115)
1062  ret <2 x i64> %r
1063}
1064
1065define <8 x i32> @vpternlog_d_v256_imm116(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1066; CHECK-LABEL: vpternlog_d_v256_imm116:
1067; CHECK:       # %bb.0:
1068; CHECK-NEXT:    vpternlogd $116, %ymm2, %ymm1, %ymm0
1069; CHECK-NEXT:    retq
1070  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 116)
1071  ret <8 x i32> %r
1072}
1073
1074define <8 x i64> @vpternlog_q_v512_imm117(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1075; CHECK-LABEL: vpternlog_q_v512_imm117:
1076; CHECK:       # %bb.0:
1077; CHECK-NEXT:    vpternlogq $117, %zmm2, %zmm1, %zmm0
1078; CHECK-NEXT:    retq
1079  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 117)
1080  ret <8 x i64> %r
1081}
1082
1083define <4 x i32> @vpternlog_d_v128_imm118(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1084; CHECK-LABEL: vpternlog_d_v128_imm118:
1085; CHECK:       # %bb.0:
1086; CHECK-NEXT:    vpternlogd $118, %xmm2, %xmm1, %xmm0
1087; CHECK-NEXT:    retq
1088  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 118)
1089  ret <4 x i32> %r
1090}
1091
1092define <4 x i64> @vpternlog_q_v256_imm119(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1093; CHECK-LABEL: vpternlog_q_v256_imm119:
1094; CHECK:       # %bb.0:
1095; CHECK-NEXT:    vpternlogq $119, %ymm2, %ymm1, %ymm0
1096; CHECK-NEXT:    retq
1097  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 119)
1098  ret <4 x i64> %r
1099}
1100
1101define <16 x i32> @vpternlog_d_v512_imm120(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1102; CHECK-LABEL: vpternlog_d_v512_imm120:
1103; CHECK:       # %bb.0:
1104; CHECK-NEXT:    vpternlogd $120, %zmm2, %zmm1, %zmm0
1105; CHECK-NEXT:    retq
1106  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 120)
1107  ret <16 x i32> %r
1108}
1109
1110define <2 x i64> @vpternlog_q_v128_imm121(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1111; CHECK-LABEL: vpternlog_q_v128_imm121:
1112; CHECK:       # %bb.0:
1113; CHECK-NEXT:    vpternlogq $121, %xmm2, %xmm1, %xmm0
1114; CHECK-NEXT:    retq
1115  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 121)
1116  ret <2 x i64> %r
1117}
1118
1119define <8 x i32> @vpternlog_d_v256_imm122(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1120; CHECK-LABEL: vpternlog_d_v256_imm122:
1121; CHECK:       # %bb.0:
1122; CHECK-NEXT:    vpternlogd $122, %ymm2, %ymm1, %ymm0
1123; CHECK-NEXT:    retq
1124  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 122)
1125  ret <8 x i32> %r
1126}
1127
1128define <8 x i64> @vpternlog_q_v512_imm123(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1129; CHECK-LABEL: vpternlog_q_v512_imm123:
1130; CHECK:       # %bb.0:
1131; CHECK-NEXT:    vpternlogq $123, %zmm2, %zmm1, %zmm0
1132; CHECK-NEXT:    retq
1133  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 123)
1134  ret <8 x i64> %r
1135}
1136
1137define <4 x i32> @vpternlog_d_v128_imm124(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1138; CHECK-LABEL: vpternlog_d_v128_imm124:
1139; CHECK:       # %bb.0:
1140; CHECK-NEXT:    vpternlogd $124, %xmm2, %xmm1, %xmm0
1141; CHECK-NEXT:    retq
1142  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 124)
1143  ret <4 x i32> %r
1144}
1145
1146define <4 x i64> @vpternlog_q_v256_imm125(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1147; CHECK-LABEL: vpternlog_q_v256_imm125:
1148; CHECK:       # %bb.0:
1149; CHECK-NEXT:    vpternlogq $125, %ymm2, %ymm1, %ymm0
1150; CHECK-NEXT:    retq
1151  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 125)
1152  ret <4 x i64> %r
1153}
1154
1155define <16 x i32> @vpternlog_d_v512_imm126(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1156; CHECK-LABEL: vpternlog_d_v512_imm126:
1157; CHECK:       # %bb.0:
1158; CHECK-NEXT:    vpternlogd $126, %zmm2, %zmm1, %zmm0
1159; CHECK-NEXT:    retq
1160  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 126)
1161  ret <16 x i32> %r
1162}
1163
1164define <2 x i64> @vpternlog_q_v128_imm127(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1165; CHECK-LABEL: vpternlog_q_v128_imm127:
1166; CHECK:       # %bb.0:
1167; CHECK-NEXT:    vpternlogq $127, %xmm2, %xmm1, %xmm0
1168; CHECK-NEXT:    retq
1169  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 127)
1170  ret <2 x i64> %r
1171}
1172
1173define <8 x i32> @vpternlog_d_v256_imm128(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1174; CHECK-LABEL: vpternlog_d_v256_imm128:
1175; CHECK:       # %bb.0:
1176; CHECK-NEXT:    vpternlogd $128, %ymm2, %ymm1, %ymm0
1177; CHECK-NEXT:    retq
1178  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 128)
1179  ret <8 x i32> %r
1180}
1181
1182define <8 x i64> @vpternlog_q_v512_imm129(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1183; CHECK-LABEL: vpternlog_q_v512_imm129:
1184; CHECK:       # %bb.0:
1185; CHECK-NEXT:    vpternlogq $129, %zmm2, %zmm1, %zmm0
1186; CHECK-NEXT:    retq
1187  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 129)
1188  ret <8 x i64> %r
1189}
1190
1191define <4 x i32> @vpternlog_d_v128_imm130(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1192; CHECK-LABEL: vpternlog_d_v128_imm130:
1193; CHECK:       # %bb.0:
1194; CHECK-NEXT:    vpternlogd $130, %xmm2, %xmm1, %xmm0
1195; CHECK-NEXT:    retq
1196  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 130)
1197  ret <4 x i32> %r
1198}
1199
1200define <4 x i64> @vpternlog_q_v256_imm131(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1201; CHECK-LABEL: vpternlog_q_v256_imm131:
1202; CHECK:       # %bb.0:
1203; CHECK-NEXT:    vpternlogq $131, %ymm2, %ymm1, %ymm0
1204; CHECK-NEXT:    retq
1205  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 131)
1206  ret <4 x i64> %r
1207}
1208
1209define <16 x i32> @vpternlog_d_v512_imm132(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1210; CHECK-LABEL: vpternlog_d_v512_imm132:
1211; CHECK:       # %bb.0:
1212; CHECK-NEXT:    vpternlogd $132, %zmm2, %zmm1, %zmm0
1213; CHECK-NEXT:    retq
1214  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 132)
1215  ret <16 x i32> %r
1216}
1217
1218define <2 x i64> @vpternlog_q_v128_imm133(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1219; CHECK-LABEL: vpternlog_q_v128_imm133:
1220; CHECK:       # %bb.0:
1221; CHECK-NEXT:    vpternlogq $133, %xmm2, %xmm1, %xmm0
1222; CHECK-NEXT:    retq
1223  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 133)
1224  ret <2 x i64> %r
1225}
1226
1227define <8 x i32> @vpternlog_d_v256_imm134(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1228; CHECK-LABEL: vpternlog_d_v256_imm134:
1229; CHECK:       # %bb.0:
1230; CHECK-NEXT:    vpternlogd $134, %ymm2, %ymm1, %ymm0
1231; CHECK-NEXT:    retq
1232  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 134)
1233  ret <8 x i32> %r
1234}
1235
1236define <8 x i64> @vpternlog_q_v512_imm135(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1237; CHECK-LABEL: vpternlog_q_v512_imm135:
1238; CHECK:       # %bb.0:
1239; CHECK-NEXT:    vpternlogq $135, %zmm2, %zmm1, %zmm0
1240; CHECK-NEXT:    retq
1241  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 135)
1242  ret <8 x i64> %r
1243}
1244
1245define <4 x i32> @vpternlog_d_v128_imm136(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1246; CHECK-LABEL: vpternlog_d_v128_imm136:
1247; CHECK:       # %bb.0:
1248; CHECK-NEXT:    vandps %xmm2, %xmm1, %xmm0
1249; CHECK-NEXT:    retq
1250  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 136)
1251  ret <4 x i32> %r
1252}
1253
1254define <4 x i64> @vpternlog_q_v256_imm137(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1255; CHECK-LABEL: vpternlog_q_v256_imm137:
1256; CHECK:       # %bb.0:
1257; CHECK-NEXT:    vpternlogq $137, %ymm2, %ymm1, %ymm0
1258; CHECK-NEXT:    retq
1259  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 137)
1260  ret <4 x i64> %r
1261}
1262
1263define <16 x i32> @vpternlog_d_v512_imm138(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1264; CHECK-LABEL: vpternlog_d_v512_imm138:
1265; CHECK:       # %bb.0:
1266; CHECK-NEXT:    vpternlogd $138, %zmm2, %zmm1, %zmm0
1267; CHECK-NEXT:    retq
1268  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 138)
1269  ret <16 x i32> %r
1270}
1271
1272define <2 x i64> @vpternlog_q_v128_imm139(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1273; CHECK-LABEL: vpternlog_q_v128_imm139:
1274; CHECK:       # %bb.0:
1275; CHECK-NEXT:    vpternlogq $139, %xmm2, %xmm1, %xmm0
1276; CHECK-NEXT:    retq
1277  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 139)
1278  ret <2 x i64> %r
1279}
1280
1281define <8 x i32> @vpternlog_d_v256_imm140(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1282; CHECK-LABEL: vpternlog_d_v256_imm140:
1283; CHECK:       # %bb.0:
1284; CHECK-NEXT:    vpternlogd $140, %ymm2, %ymm1, %ymm0
1285; CHECK-NEXT:    retq
1286  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 140)
1287  ret <8 x i32> %r
1288}
1289
1290define <8 x i64> @vpternlog_q_v512_imm141(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1291; CHECK-LABEL: vpternlog_q_v512_imm141:
1292; CHECK:       # %bb.0:
1293; CHECK-NEXT:    vpternlogq $141, %zmm2, %zmm1, %zmm0
1294; CHECK-NEXT:    retq
1295  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 141)
1296  ret <8 x i64> %r
1297}
1298
1299define <4 x i32> @vpternlog_d_v128_imm142(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1300; CHECK-LABEL: vpternlog_d_v128_imm142:
1301; CHECK:       # %bb.0:
1302; CHECK-NEXT:    vpternlogd $142, %xmm2, %xmm1, %xmm0
1303; CHECK-NEXT:    retq
1304  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 142)
1305  ret <4 x i32> %r
1306}
1307
1308define <4 x i64> @vpternlog_q_v256_imm143(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1309; CHECK-LABEL: vpternlog_q_v256_imm143:
1310; CHECK:       # %bb.0:
1311; CHECK-NEXT:    vpternlogq $143, %ymm2, %ymm1, %ymm0
1312; CHECK-NEXT:    retq
1313  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 143)
1314  ret <4 x i64> %r
1315}
1316
1317define <16 x i32> @vpternlog_d_v512_imm144(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1318; CHECK-LABEL: vpternlog_d_v512_imm144:
1319; CHECK:       # %bb.0:
1320; CHECK-NEXT:    vpternlogd $144, %zmm2, %zmm1, %zmm0
1321; CHECK-NEXT:    retq
1322  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 144)
1323  ret <16 x i32> %r
1324}
1325
1326define <2 x i64> @vpternlog_q_v128_imm145(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1327; CHECK-LABEL: vpternlog_q_v128_imm145:
1328; CHECK:       # %bb.0:
1329; CHECK-NEXT:    vpternlogq $145, %xmm2, %xmm1, %xmm0
1330; CHECK-NEXT:    retq
1331  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 145)
1332  ret <2 x i64> %r
1333}
1334
1335define <8 x i32> @vpternlog_d_v256_imm146(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1336; CHECK-LABEL: vpternlog_d_v256_imm146:
1337; CHECK:       # %bb.0:
1338; CHECK-NEXT:    vpternlogd $146, %ymm2, %ymm1, %ymm0
1339; CHECK-NEXT:    retq
1340  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 146)
1341  ret <8 x i32> %r
1342}
1343
1344define <8 x i64> @vpternlog_q_v512_imm147(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1345; CHECK-LABEL: vpternlog_q_v512_imm147:
1346; CHECK:       # %bb.0:
1347; CHECK-NEXT:    vpternlogq $147, %zmm2, %zmm1, %zmm0
1348; CHECK-NEXT:    retq
1349  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 147)
1350  ret <8 x i64> %r
1351}
1352
1353define <4 x i32> @vpternlog_d_v128_imm148(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1354; CHECK-LABEL: vpternlog_d_v128_imm148:
1355; CHECK:       # %bb.0:
1356; CHECK-NEXT:    vpternlogd $148, %xmm2, %xmm1, %xmm0
1357; CHECK-NEXT:    retq
1358  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 148)
1359  ret <4 x i32> %r
1360}
1361
1362define <4 x i64> @vpternlog_q_v256_imm149(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1363; CHECK-LABEL: vpternlog_q_v256_imm149:
1364; CHECK:       # %bb.0:
1365; CHECK-NEXT:    vpternlogq $149, %ymm2, %ymm1, %ymm0
1366; CHECK-NEXT:    retq
1367  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 149)
1368  ret <4 x i64> %r
1369}
1370
1371define <16 x i32> @vpternlog_d_v512_imm150(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1372; CHECK-LABEL: vpternlog_d_v512_imm150:
1373; CHECK:       # %bb.0:
1374; CHECK-NEXT:    vpternlogd $150, %zmm2, %zmm1, %zmm0
1375; CHECK-NEXT:    retq
1376  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 150)
1377  ret <16 x i32> %r
1378}
1379
1380define <2 x i64> @vpternlog_q_v128_imm151(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1381; CHECK-LABEL: vpternlog_q_v128_imm151:
1382; CHECK:       # %bb.0:
1383; CHECK-NEXT:    vpternlogq $151, %xmm2, %xmm1, %xmm0
1384; CHECK-NEXT:    retq
1385  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 151)
1386  ret <2 x i64> %r
1387}
1388
1389define <8 x i32> @vpternlog_d_v256_imm152(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1390; CHECK-LABEL: vpternlog_d_v256_imm152:
1391; CHECK:       # %bb.0:
1392; CHECK-NEXT:    vpternlogd $152, %ymm2, %ymm1, %ymm0
1393; CHECK-NEXT:    retq
1394  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 152)
1395  ret <8 x i32> %r
1396}
1397
1398define <8 x i64> @vpternlog_q_v512_imm153(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1399; CHECK-LABEL: vpternlog_q_v512_imm153:
1400; CHECK:       # %bb.0:
1401; CHECK-NEXT:    vpternlogq $153, %zmm2, %zmm1, %zmm0
1402; CHECK-NEXT:    retq
1403  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 153)
1404  ret <8 x i64> %r
1405}
1406
1407define <4 x i32> @vpternlog_d_v128_imm154(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1408; CHECK-LABEL: vpternlog_d_v128_imm154:
1409; CHECK:       # %bb.0:
1410; CHECK-NEXT:    vpternlogd $154, %xmm2, %xmm1, %xmm0
1411; CHECK-NEXT:    retq
1412  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 154)
1413  ret <4 x i32> %r
1414}
1415
1416define <4 x i64> @vpternlog_q_v256_imm155(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1417; CHECK-LABEL: vpternlog_q_v256_imm155:
1418; CHECK:       # %bb.0:
1419; CHECK-NEXT:    vpternlogq $155, %ymm2, %ymm1, %ymm0
1420; CHECK-NEXT:    retq
1421  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 155)
1422  ret <4 x i64> %r
1423}
1424
1425define <16 x i32> @vpternlog_d_v512_imm156(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1426; CHECK-LABEL: vpternlog_d_v512_imm156:
1427; CHECK:       # %bb.0:
1428; CHECK-NEXT:    vpternlogd $156, %zmm2, %zmm1, %zmm0
1429; CHECK-NEXT:    retq
1430  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 156)
1431  ret <16 x i32> %r
1432}
1433
1434define <2 x i64> @vpternlog_q_v128_imm157(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1435; CHECK-LABEL: vpternlog_q_v128_imm157:
1436; CHECK:       # %bb.0:
1437; CHECK-NEXT:    vpternlogq $157, %xmm2, %xmm1, %xmm0
1438; CHECK-NEXT:    retq
1439  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 157)
1440  ret <2 x i64> %r
1441}
1442
1443define <8 x i32> @vpternlog_d_v256_imm158(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1444; CHECK-LABEL: vpternlog_d_v256_imm158:
1445; CHECK:       # %bb.0:
1446; CHECK-NEXT:    vpternlogd $158, %ymm2, %ymm1, %ymm0
1447; CHECK-NEXT:    retq
1448  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 158)
1449  ret <8 x i32> %r
1450}
1451
1452define <8 x i64> @vpternlog_q_v512_imm159(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1453; CHECK-LABEL: vpternlog_q_v512_imm159:
1454; CHECK:       # %bb.0:
1455; CHECK-NEXT:    vpternlogq $159, %zmm2, %zmm1, %zmm0
1456; CHECK-NEXT:    retq
1457  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 159)
1458  ret <8 x i64> %r
1459}
1460
1461define <4 x i32> @vpternlog_d_v128_imm160(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1462; CHECK-LABEL: vpternlog_d_v128_imm160:
1463; CHECK:       # %bb.0:
1464; CHECK-NEXT:    vandps %xmm2, %xmm0, %xmm0
1465; CHECK-NEXT:    retq
1466  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 160)
1467  ret <4 x i32> %r
1468}
1469
1470define <4 x i64> @vpternlog_q_v256_imm161(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1471; CHECK-LABEL: vpternlog_q_v256_imm161:
1472; CHECK:       # %bb.0:
1473; CHECK-NEXT:    vpternlogq $161, %ymm2, %ymm1, %ymm0
1474; CHECK-NEXT:    retq
1475  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 161)
1476  ret <4 x i64> %r
1477}
1478
1479define <16 x i32> @vpternlog_d_v512_imm162(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1480; CHECK-LABEL: vpternlog_d_v512_imm162:
1481; CHECK:       # %bb.0:
1482; CHECK-NEXT:    vpternlogd $162, %zmm2, %zmm1, %zmm0
1483; CHECK-NEXT:    retq
1484  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 162)
1485  ret <16 x i32> %r
1486}
1487
1488define <2 x i64> @vpternlog_q_v128_imm163(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1489; CHECK-LABEL: vpternlog_q_v128_imm163:
1490; CHECK:       # %bb.0:
1491; CHECK-NEXT:    vpternlogq $163, %xmm2, %xmm1, %xmm0
1492; CHECK-NEXT:    retq
1493  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 163)
1494  ret <2 x i64> %r
1495}
1496
1497define <8 x i32> @vpternlog_d_v256_imm164(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1498; CHECK-LABEL: vpternlog_d_v256_imm164:
1499; CHECK:       # %bb.0:
1500; CHECK-NEXT:    vpternlogd $164, %ymm2, %ymm1, %ymm0
1501; CHECK-NEXT:    retq
1502  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 164)
1503  ret <8 x i32> %r
1504}
1505
1506define <8 x i64> @vpternlog_q_v512_imm165(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1507; CHECK-LABEL: vpternlog_q_v512_imm165:
1508; CHECK:       # %bb.0:
1509; CHECK-NEXT:    vpternlogq $165, %zmm2, %zmm1, %zmm0
1510; CHECK-NEXT:    retq
1511  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 165)
1512  ret <8 x i64> %r
1513}
1514
1515define <4 x i32> @vpternlog_d_v128_imm166(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1516; CHECK-LABEL: vpternlog_d_v128_imm166:
1517; CHECK:       # %bb.0:
1518; CHECK-NEXT:    vpternlogd $166, %xmm2, %xmm1, %xmm0
1519; CHECK-NEXT:    retq
1520  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 166)
1521  ret <4 x i32> %r
1522}
1523
1524define <4 x i64> @vpternlog_q_v256_imm167(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1525; CHECK-LABEL: vpternlog_q_v256_imm167:
1526; CHECK:       # %bb.0:
1527; CHECK-NEXT:    vpternlogq $167, %ymm2, %ymm1, %ymm0
1528; CHECK-NEXT:    retq
1529  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 167)
1530  ret <4 x i64> %r
1531}
1532
1533define <16 x i32> @vpternlog_d_v512_imm168(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1534; CHECK-LABEL: vpternlog_d_v512_imm168:
1535; CHECK:       # %bb.0:
1536; CHECK-NEXT:    vpternlogd $168, %zmm2, %zmm1, %zmm0
1537; CHECK-NEXT:    retq
1538  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 168)
1539  ret <16 x i32> %r
1540}
1541
1542define <2 x i64> @vpternlog_q_v128_imm169(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1543; CHECK-LABEL: vpternlog_q_v128_imm169:
1544; CHECK:       # %bb.0:
1545; CHECK-NEXT:    vpternlogq $169, %xmm2, %xmm1, %xmm0
1546; CHECK-NEXT:    retq
1547  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 169)
1548  ret <2 x i64> %r
1549}
1550
1551define <8 x i32> @vpternlog_d_v256_imm170(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1552; CHECK-LABEL: vpternlog_d_v256_imm170:
1553; CHECK:       # %bb.0:
1554; CHECK-NEXT:    vmovaps %ymm2, %ymm0
1555; CHECK-NEXT:    retq
1556  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 170)
1557  ret <8 x i32> %r
1558}
1559
1560define <8 x i64> @vpternlog_q_v512_imm171(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1561; CHECK-LABEL: vpternlog_q_v512_imm171:
1562; CHECK:       # %bb.0:
1563; CHECK-NEXT:    vpternlogq $171, %zmm2, %zmm1, %zmm0
1564; CHECK-NEXT:    retq
1565  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 171)
1566  ret <8 x i64> %r
1567}
1568
1569define <4 x i32> @vpternlog_d_v128_imm172(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1570; CHECK-LABEL: vpternlog_d_v128_imm172:
1571; CHECK:       # %bb.0:
1572; CHECK-NEXT:    vpternlogd $172, %xmm2, %xmm1, %xmm0
1573; CHECK-NEXT:    retq
1574  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 172)
1575  ret <4 x i32> %r
1576}
1577
1578define <4 x i64> @vpternlog_q_v256_imm173(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1579; CHECK-LABEL: vpternlog_q_v256_imm173:
1580; CHECK:       # %bb.0:
1581; CHECK-NEXT:    vpternlogq $173, %ymm2, %ymm1, %ymm0
1582; CHECK-NEXT:    retq
1583  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 173)
1584  ret <4 x i64> %r
1585}
1586
1587define <16 x i32> @vpternlog_d_v512_imm174(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1588; CHECK-LABEL: vpternlog_d_v512_imm174:
1589; CHECK:       # %bb.0:
1590; CHECK-NEXT:    vpternlogd $174, %zmm2, %zmm1, %zmm0
1591; CHECK-NEXT:    retq
1592  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 174)
1593  ret <16 x i32> %r
1594}
1595
1596define <2 x i64> @vpternlog_q_v128_imm175(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1597; CHECK-LABEL: vpternlog_q_v128_imm175:
1598; CHECK:       # %bb.0:
1599; CHECK-NEXT:    vpternlogq $175, %xmm2, %xmm1, %xmm0
1600; CHECK-NEXT:    retq
1601  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 175)
1602  ret <2 x i64> %r
1603}
1604
1605define <8 x i32> @vpternlog_d_v256_imm176(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1606; CHECK-LABEL: vpternlog_d_v256_imm176:
1607; CHECK:       # %bb.0:
1608; CHECK-NEXT:    vpternlogd $176, %ymm2, %ymm1, %ymm0
1609; CHECK-NEXT:    retq
1610  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 176)
1611  ret <8 x i32> %r
1612}
1613
1614define <8 x i64> @vpternlog_q_v512_imm177(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1615; CHECK-LABEL: vpternlog_q_v512_imm177:
1616; CHECK:       # %bb.0:
1617; CHECK-NEXT:    vpternlogq $177, %zmm2, %zmm1, %zmm0
1618; CHECK-NEXT:    retq
1619  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 177)
1620  ret <8 x i64> %r
1621}
1622
1623define <4 x i32> @vpternlog_d_v128_imm178(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1624; CHECK-LABEL: vpternlog_d_v128_imm178:
1625; CHECK:       # %bb.0:
1626; CHECK-NEXT:    vpternlogd $178, %xmm2, %xmm1, %xmm0
1627; CHECK-NEXT:    retq
1628  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 178)
1629  ret <4 x i32> %r
1630}
1631
1632define <4 x i64> @vpternlog_q_v256_imm179(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1633; CHECK-LABEL: vpternlog_q_v256_imm179:
1634; CHECK:       # %bb.0:
1635; CHECK-NEXT:    vpternlogq $179, %ymm2, %ymm1, %ymm0
1636; CHECK-NEXT:    retq
1637  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 179)
1638  ret <4 x i64> %r
1639}
1640
1641define <16 x i32> @vpternlog_d_v512_imm180(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1642; CHECK-LABEL: vpternlog_d_v512_imm180:
1643; CHECK:       # %bb.0:
1644; CHECK-NEXT:    vpternlogd $180, %zmm2, %zmm1, %zmm0
1645; CHECK-NEXT:    retq
1646  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 180)
1647  ret <16 x i32> %r
1648}
1649
1650define <2 x i64> @vpternlog_q_v128_imm181(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1651; CHECK-LABEL: vpternlog_q_v128_imm181:
1652; CHECK:       # %bb.0:
1653; CHECK-NEXT:    vpternlogq $181, %xmm2, %xmm1, %xmm0
1654; CHECK-NEXT:    retq
1655  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 181)
1656  ret <2 x i64> %r
1657}
1658
1659define <8 x i32> @vpternlog_d_v256_imm182(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1660; CHECK-LABEL: vpternlog_d_v256_imm182:
1661; CHECK:       # %bb.0:
1662; CHECK-NEXT:    vpternlogd $182, %ymm2, %ymm1, %ymm0
1663; CHECK-NEXT:    retq
1664  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 182)
1665  ret <8 x i32> %r
1666}
1667
1668define <8 x i64> @vpternlog_q_v512_imm183(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1669; CHECK-LABEL: vpternlog_q_v512_imm183:
1670; CHECK:       # %bb.0:
1671; CHECK-NEXT:    vpternlogq $183, %zmm2, %zmm1, %zmm0
1672; CHECK-NEXT:    retq
1673  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 183)
1674  ret <8 x i64> %r
1675}
1676
1677define <4 x i32> @vpternlog_d_v128_imm184(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1678; CHECK-LABEL: vpternlog_d_v128_imm184:
1679; CHECK:       # %bb.0:
1680; CHECK-NEXT:    vpternlogd $184, %xmm2, %xmm1, %xmm0
1681; CHECK-NEXT:    retq
1682  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 184)
1683  ret <4 x i32> %r
1684}
1685
1686define <4 x i64> @vpternlog_q_v256_imm185(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1687; CHECK-LABEL: vpternlog_q_v256_imm185:
1688; CHECK:       # %bb.0:
1689; CHECK-NEXT:    vpternlogq $185, %ymm2, %ymm1, %ymm0
1690; CHECK-NEXT:    retq
1691  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 185)
1692  ret <4 x i64> %r
1693}
1694
1695define <16 x i32> @vpternlog_d_v512_imm186(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1696; CHECK-LABEL: vpternlog_d_v512_imm186:
1697; CHECK:       # %bb.0:
1698; CHECK-NEXT:    vpternlogd $186, %zmm2, %zmm1, %zmm0
1699; CHECK-NEXT:    retq
1700  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 186)
1701  ret <16 x i32> %r
1702}
1703
1704define <2 x i64> @vpternlog_q_v128_imm187(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1705; CHECK-LABEL: vpternlog_q_v128_imm187:
1706; CHECK:       # %bb.0:
1707; CHECK-NEXT:    vpternlogq $187, %xmm2, %xmm1, %xmm0
1708; CHECK-NEXT:    retq
1709  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 187)
1710  ret <2 x i64> %r
1711}
1712
1713define <8 x i32> @vpternlog_d_v256_imm188(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1714; CHECK-LABEL: vpternlog_d_v256_imm188:
1715; CHECK:       # %bb.0:
1716; CHECK-NEXT:    vpternlogd $188, %ymm2, %ymm1, %ymm0
1717; CHECK-NEXT:    retq
1718  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 188)
1719  ret <8 x i32> %r
1720}
1721
1722define <8 x i64> @vpternlog_q_v512_imm189(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1723; CHECK-LABEL: vpternlog_q_v512_imm189:
1724; CHECK:       # %bb.0:
1725; CHECK-NEXT:    vpternlogq $189, %zmm2, %zmm1, %zmm0
1726; CHECK-NEXT:    retq
1727  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 189)
1728  ret <8 x i64> %r
1729}
1730
1731define <4 x i32> @vpternlog_d_v128_imm190(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1732; CHECK-LABEL: vpternlog_d_v128_imm190:
1733; CHECK:       # %bb.0:
1734; CHECK-NEXT:    vpternlogd $190, %xmm2, %xmm1, %xmm0
1735; CHECK-NEXT:    retq
1736  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 190)
1737  ret <4 x i32> %r
1738}
1739
1740define <4 x i64> @vpternlog_q_v256_imm191(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1741; CHECK-LABEL: vpternlog_q_v256_imm191:
1742; CHECK:       # %bb.0:
1743; CHECK-NEXT:    vpternlogq $191, %ymm2, %ymm1, %ymm0
1744; CHECK-NEXT:    retq
1745  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 191)
1746  ret <4 x i64> %r
1747}
1748
1749define <16 x i32> @vpternlog_d_v512_imm192(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1750; CHECK-LABEL: vpternlog_d_v512_imm192:
1751; CHECK:       # %bb.0:
1752; CHECK-NEXT:    vpandd %zmm1, %zmm0, %zmm0
1753; CHECK-NEXT:    retq
1754  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 192)
1755  ret <16 x i32> %r
1756}
1757
1758define <2 x i64> @vpternlog_q_v128_imm193(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1759; CHECK-LABEL: vpternlog_q_v128_imm193:
1760; CHECK:       # %bb.0:
1761; CHECK-NEXT:    vpternlogq $193, %xmm2, %xmm1, %xmm0
1762; CHECK-NEXT:    retq
1763  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 193)
1764  ret <2 x i64> %r
1765}
1766
1767define <8 x i32> @vpternlog_d_v256_imm194(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1768; CHECK-LABEL: vpternlog_d_v256_imm194:
1769; CHECK:       # %bb.0:
1770; CHECK-NEXT:    vpternlogd $194, %ymm2, %ymm1, %ymm0
1771; CHECK-NEXT:    retq
1772  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 194)
1773  ret <8 x i32> %r
1774}
1775
1776define <8 x i64> @vpternlog_q_v512_imm195(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1777; CHECK-LABEL: vpternlog_q_v512_imm195:
1778; CHECK:       # %bb.0:
1779; CHECK-NEXT:    vpternlogq $195, %zmm2, %zmm1, %zmm0
1780; CHECK-NEXT:    retq
1781  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 195)
1782  ret <8 x i64> %r
1783}
1784
1785define <4 x i32> @vpternlog_d_v128_imm196(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1786; CHECK-LABEL: vpternlog_d_v128_imm196:
1787; CHECK:       # %bb.0:
1788; CHECK-NEXT:    vpternlogd $196, %xmm2, %xmm1, %xmm0
1789; CHECK-NEXT:    retq
1790  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 196)
1791  ret <4 x i32> %r
1792}
1793
1794define <4 x i64> @vpternlog_q_v256_imm197(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1795; CHECK-LABEL: vpternlog_q_v256_imm197:
1796; CHECK:       # %bb.0:
1797; CHECK-NEXT:    vpternlogq $197, %ymm2, %ymm1, %ymm0
1798; CHECK-NEXT:    retq
1799  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 197)
1800  ret <4 x i64> %r
1801}
1802
1803define <16 x i32> @vpternlog_d_v512_imm198(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1804; CHECK-LABEL: vpternlog_d_v512_imm198:
1805; CHECK:       # %bb.0:
1806; CHECK-NEXT:    vpternlogd $198, %zmm2, %zmm1, %zmm0
1807; CHECK-NEXT:    retq
1808  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 198)
1809  ret <16 x i32> %r
1810}
1811
1812define <2 x i64> @vpternlog_q_v128_imm199(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1813; CHECK-LABEL: vpternlog_q_v128_imm199:
1814; CHECK:       # %bb.0:
1815; CHECK-NEXT:    vpternlogq $199, %xmm2, %xmm1, %xmm0
1816; CHECK-NEXT:    retq
1817  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 199)
1818  ret <2 x i64> %r
1819}
1820
1821define <8 x i32> @vpternlog_d_v256_imm200(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1822; CHECK-LABEL: vpternlog_d_v256_imm200:
1823; CHECK:       # %bb.0:
1824; CHECK-NEXT:    vpternlogd $200, %ymm2, %ymm1, %ymm0
1825; CHECK-NEXT:    retq
1826  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 200)
1827  ret <8 x i32> %r
1828}
1829
1830define <8 x i64> @vpternlog_q_v512_imm201(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1831; CHECK-LABEL: vpternlog_q_v512_imm201:
1832; CHECK:       # %bb.0:
1833; CHECK-NEXT:    vpternlogq $201, %zmm2, %zmm1, %zmm0
1834; CHECK-NEXT:    retq
1835  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 201)
1836  ret <8 x i64> %r
1837}
1838
1839define <4 x i32> @vpternlog_d_v128_imm202(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1840; CHECK-LABEL: vpternlog_d_v128_imm202:
1841; CHECK:       # %bb.0:
1842; CHECK-NEXT:    vpternlogd $202, %xmm2, %xmm1, %xmm0
1843; CHECK-NEXT:    retq
1844  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 202)
1845  ret <4 x i32> %r
1846}
1847
1848define <4 x i64> @vpternlog_q_v256_imm203(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1849; CHECK-LABEL: vpternlog_q_v256_imm203:
1850; CHECK:       # %bb.0:
1851; CHECK-NEXT:    vpternlogq $203, %ymm2, %ymm1, %ymm0
1852; CHECK-NEXT:    retq
1853  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 203)
1854  ret <4 x i64> %r
1855}
1856
1857define <16 x i32> @vpternlog_d_v512_imm204(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1858; CHECK-LABEL: vpternlog_d_v512_imm204:
1859; CHECK:       # %bb.0:
1860; CHECK-NEXT:    vmovaps %zmm1, %zmm0
1861; CHECK-NEXT:    retq
1862  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 204)
1863  ret <16 x i32> %r
1864}
1865
1866define <2 x i64> @vpternlog_q_v128_imm205(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1867; CHECK-LABEL: vpternlog_q_v128_imm205:
1868; CHECK:       # %bb.0:
1869; CHECK-NEXT:    vpternlogq $205, %xmm2, %xmm1, %xmm0
1870; CHECK-NEXT:    retq
1871  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 205)
1872  ret <2 x i64> %r
1873}
1874
1875define <8 x i32> @vpternlog_d_v256_imm206(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1876; CHECK-LABEL: vpternlog_d_v256_imm206:
1877; CHECK:       # %bb.0:
1878; CHECK-NEXT:    vpternlogd $206, %ymm2, %ymm1, %ymm0
1879; CHECK-NEXT:    retq
1880  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 206)
1881  ret <8 x i32> %r
1882}
1883
1884define <8 x i64> @vpternlog_q_v512_imm207(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1885; CHECK-LABEL: vpternlog_q_v512_imm207:
1886; CHECK:       # %bb.0:
1887; CHECK-NEXT:    vpternlogq $207, %zmm2, %zmm1, %zmm0
1888; CHECK-NEXT:    retq
1889  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 207)
1890  ret <8 x i64> %r
1891}
1892
1893define <4 x i32> @vpternlog_d_v128_imm208(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1894; CHECK-LABEL: vpternlog_d_v128_imm208:
1895; CHECK:       # %bb.0:
1896; CHECK-NEXT:    vpternlogd $208, %xmm2, %xmm1, %xmm0
1897; CHECK-NEXT:    retq
1898  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 208)
1899  ret <4 x i32> %r
1900}
1901
1902define <4 x i64> @vpternlog_q_v256_imm209(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1903; CHECK-LABEL: vpternlog_q_v256_imm209:
1904; CHECK:       # %bb.0:
1905; CHECK-NEXT:    vpternlogq $209, %ymm2, %ymm1, %ymm0
1906; CHECK-NEXT:    retq
1907  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 209)
1908  ret <4 x i64> %r
1909}
1910
1911define <16 x i32> @vpternlog_d_v512_imm210(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1912; CHECK-LABEL: vpternlog_d_v512_imm210:
1913; CHECK:       # %bb.0:
1914; CHECK-NEXT:    vpternlogd $210, %zmm2, %zmm1, %zmm0
1915; CHECK-NEXT:    retq
1916  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 210)
1917  ret <16 x i32> %r
1918}
1919
1920define <2 x i64> @vpternlog_q_v128_imm211(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1921; CHECK-LABEL: vpternlog_q_v128_imm211:
1922; CHECK:       # %bb.0:
1923; CHECK-NEXT:    vpternlogq $211, %xmm2, %xmm1, %xmm0
1924; CHECK-NEXT:    retq
1925  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 211)
1926  ret <2 x i64> %r
1927}
1928
1929define <8 x i32> @vpternlog_d_v256_imm212(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1930; CHECK-LABEL: vpternlog_d_v256_imm212:
1931; CHECK:       # %bb.0:
1932; CHECK-NEXT:    vpternlogd $212, %ymm2, %ymm1, %ymm0
1933; CHECK-NEXT:    retq
1934  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 212)
1935  ret <8 x i32> %r
1936}
1937
1938define <8 x i64> @vpternlog_q_v512_imm213(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1939; CHECK-LABEL: vpternlog_q_v512_imm213:
1940; CHECK:       # %bb.0:
1941; CHECK-NEXT:    vpternlogq $213, %zmm2, %zmm1, %zmm0
1942; CHECK-NEXT:    retq
1943  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 213)
1944  ret <8 x i64> %r
1945}
1946
1947define <4 x i32> @vpternlog_d_v128_imm214(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
1948; CHECK-LABEL: vpternlog_d_v128_imm214:
1949; CHECK:       # %bb.0:
1950; CHECK-NEXT:    vpternlogd $214, %xmm2, %xmm1, %xmm0
1951; CHECK-NEXT:    retq
1952  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 214)
1953  ret <4 x i32> %r
1954}
1955
1956define <4 x i64> @vpternlog_q_v256_imm215(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
1957; CHECK-LABEL: vpternlog_q_v256_imm215:
1958; CHECK:       # %bb.0:
1959; CHECK-NEXT:    vpternlogq $215, %ymm2, %ymm1, %ymm0
1960; CHECK-NEXT:    retq
1961  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 215)
1962  ret <4 x i64> %r
1963}
1964
1965define <16 x i32> @vpternlog_d_v512_imm216(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
1966; CHECK-LABEL: vpternlog_d_v512_imm216:
1967; CHECK:       # %bb.0:
1968; CHECK-NEXT:    vpternlogd $216, %zmm2, %zmm1, %zmm0
1969; CHECK-NEXT:    retq
1970  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 216)
1971  ret <16 x i32> %r
1972}
1973
1974define <2 x i64> @vpternlog_q_v128_imm217(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
1975; CHECK-LABEL: vpternlog_q_v128_imm217:
1976; CHECK:       # %bb.0:
1977; CHECK-NEXT:    vpternlogq $217, %xmm2, %xmm1, %xmm0
1978; CHECK-NEXT:    retq
1979  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 217)
1980  ret <2 x i64> %r
1981}
1982
1983define <8 x i32> @vpternlog_d_v256_imm218(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
1984; CHECK-LABEL: vpternlog_d_v256_imm218:
1985; CHECK:       # %bb.0:
1986; CHECK-NEXT:    vpternlogd $218, %ymm2, %ymm1, %ymm0
1987; CHECK-NEXT:    retq
1988  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 218)
1989  ret <8 x i32> %r
1990}
1991
1992define <8 x i64> @vpternlog_q_v512_imm219(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
1993; CHECK-LABEL: vpternlog_q_v512_imm219:
1994; CHECK:       # %bb.0:
1995; CHECK-NEXT:    vpternlogq $219, %zmm2, %zmm1, %zmm0
1996; CHECK-NEXT:    retq
1997  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 219)
1998  ret <8 x i64> %r
1999}
2000
2001define <4 x i32> @vpternlog_d_v128_imm220(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
2002; CHECK-LABEL: vpternlog_d_v128_imm220:
2003; CHECK:       # %bb.0:
2004; CHECK-NEXT:    vpternlogd $220, %xmm2, %xmm1, %xmm0
2005; CHECK-NEXT:    retq
2006  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 220)
2007  ret <4 x i32> %r
2008}
2009
2010define <4 x i64> @vpternlog_q_v256_imm221(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
2011; CHECK-LABEL: vpternlog_q_v256_imm221:
2012; CHECK:       # %bb.0:
2013; CHECK-NEXT:    vpternlogq $221, %ymm2, %ymm1, %ymm0
2014; CHECK-NEXT:    retq
2015  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 221)
2016  ret <4 x i64> %r
2017}
2018
2019define <16 x i32> @vpternlog_d_v512_imm222(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
2020; CHECK-LABEL: vpternlog_d_v512_imm222:
2021; CHECK:       # %bb.0:
2022; CHECK-NEXT:    vpternlogd $222, %zmm2, %zmm1, %zmm0
2023; CHECK-NEXT:    retq
2024  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 222)
2025  ret <16 x i32> %r
2026}
2027
2028define <2 x i64> @vpternlog_q_v128_imm223(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
2029; CHECK-LABEL: vpternlog_q_v128_imm223:
2030; CHECK:       # %bb.0:
2031; CHECK-NEXT:    vpternlogq $223, %xmm2, %xmm1, %xmm0
2032; CHECK-NEXT:    retq
2033  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 223)
2034  ret <2 x i64> %r
2035}
2036
2037define <8 x i32> @vpternlog_d_v256_imm224(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
2038; CHECK-LABEL: vpternlog_d_v256_imm224:
2039; CHECK:       # %bb.0:
2040; CHECK-NEXT:    vpternlogd $224, %ymm2, %ymm1, %ymm0
2041; CHECK-NEXT:    retq
2042  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 224)
2043  ret <8 x i32> %r
2044}
2045
2046define <8 x i64> @vpternlog_q_v512_imm225(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
2047; CHECK-LABEL: vpternlog_q_v512_imm225:
2048; CHECK:       # %bb.0:
2049; CHECK-NEXT:    vpternlogq $225, %zmm2, %zmm1, %zmm0
2050; CHECK-NEXT:    retq
2051  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 225)
2052  ret <8 x i64> %r
2053}
2054
2055define <4 x i32> @vpternlog_d_v128_imm226(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
2056; CHECK-LABEL: vpternlog_d_v128_imm226:
2057; CHECK:       # %bb.0:
2058; CHECK-NEXT:    vpternlogd $226, %xmm2, %xmm1, %xmm0
2059; CHECK-NEXT:    retq
2060  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 226)
2061  ret <4 x i32> %r
2062}
2063
2064define <4 x i64> @vpternlog_q_v256_imm227(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
2065; CHECK-LABEL: vpternlog_q_v256_imm227:
2066; CHECK:       # %bb.0:
2067; CHECK-NEXT:    vpternlogq $227, %ymm2, %ymm1, %ymm0
2068; CHECK-NEXT:    retq
2069  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 227)
2070  ret <4 x i64> %r
2071}
2072
2073define <16 x i32> @vpternlog_d_v512_imm228(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
2074; CHECK-LABEL: vpternlog_d_v512_imm228:
2075; CHECK:       # %bb.0:
2076; CHECK-NEXT:    vpternlogd $228, %zmm2, %zmm1, %zmm0
2077; CHECK-NEXT:    retq
2078  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 228)
2079  ret <16 x i32> %r
2080}
2081
2082define <2 x i64> @vpternlog_q_v128_imm229(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
2083; CHECK-LABEL: vpternlog_q_v128_imm229:
2084; CHECK:       # %bb.0:
2085; CHECK-NEXT:    vpternlogq $229, %xmm2, %xmm1, %xmm0
2086; CHECK-NEXT:    retq
2087  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 229)
2088  ret <2 x i64> %r
2089}
2090
2091define <8 x i32> @vpternlog_d_v256_imm230(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
2092; CHECK-LABEL: vpternlog_d_v256_imm230:
2093; CHECK:       # %bb.0:
2094; CHECK-NEXT:    vpternlogd $230, %ymm2, %ymm1, %ymm0
2095; CHECK-NEXT:    retq
2096  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 230)
2097  ret <8 x i32> %r
2098}
2099
2100define <8 x i64> @vpternlog_q_v512_imm231(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
2101; CHECK-LABEL: vpternlog_q_v512_imm231:
2102; CHECK:       # %bb.0:
2103; CHECK-NEXT:    vpternlogq $231, %zmm2, %zmm1, %zmm0
2104; CHECK-NEXT:    retq
2105  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 231)
2106  ret <8 x i64> %r
2107}
2108
2109define <4 x i32> @vpternlog_d_v128_imm232(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
2110; CHECK-LABEL: vpternlog_d_v128_imm232:
2111; CHECK:       # %bb.0:
2112; CHECK-NEXT:    vpternlogd $232, %xmm2, %xmm1, %xmm0
2113; CHECK-NEXT:    retq
2114  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 232)
2115  ret <4 x i32> %r
2116}
2117
2118define <4 x i64> @vpternlog_q_v256_imm233(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
2119; CHECK-LABEL: vpternlog_q_v256_imm233:
2120; CHECK:       # %bb.0:
2121; CHECK-NEXT:    vpternlogq $233, %ymm2, %ymm1, %ymm0
2122; CHECK-NEXT:    retq
2123  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 233)
2124  ret <4 x i64> %r
2125}
2126
2127define <16 x i32> @vpternlog_d_v512_imm234(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
2128; CHECK-LABEL: vpternlog_d_v512_imm234:
2129; CHECK:       # %bb.0:
2130; CHECK-NEXT:    vpternlogd $234, %zmm2, %zmm1, %zmm0
2131; CHECK-NEXT:    retq
2132  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 234)
2133  ret <16 x i32> %r
2134}
2135
2136define <2 x i64> @vpternlog_q_v128_imm235(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
2137; CHECK-LABEL: vpternlog_q_v128_imm235:
2138; CHECK:       # %bb.0:
2139; CHECK-NEXT:    vpternlogq $235, %xmm2, %xmm1, %xmm0
2140; CHECK-NEXT:    retq
2141  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 235)
2142  ret <2 x i64> %r
2143}
2144
2145define <8 x i32> @vpternlog_d_v256_imm236(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
2146; CHECK-LABEL: vpternlog_d_v256_imm236:
2147; CHECK:       # %bb.0:
2148; CHECK-NEXT:    vpternlogd $236, %ymm2, %ymm1, %ymm0
2149; CHECK-NEXT:    retq
2150  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 236)
2151  ret <8 x i32> %r
2152}
2153
2154define <8 x i64> @vpternlog_q_v512_imm237(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
2155; CHECK-LABEL: vpternlog_q_v512_imm237:
2156; CHECK:       # %bb.0:
2157; CHECK-NEXT:    vpternlogq $237, %zmm2, %zmm1, %zmm0
2158; CHECK-NEXT:    retq
2159  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 237)
2160  ret <8 x i64> %r
2161}
2162
2163define <4 x i32> @vpternlog_d_v128_imm238(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
2164; CHECK-LABEL: vpternlog_d_v128_imm238:
2165; CHECK:       # %bb.0:
2166; CHECK-NEXT:    vorps %xmm2, %xmm1, %xmm0
2167; CHECK-NEXT:    retq
2168  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 238)
2169  ret <4 x i32> %r
2170}
2171
2172define <4 x i64> @vpternlog_q_v256_imm239(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
2173; CHECK-LABEL: vpternlog_q_v256_imm239:
2174; CHECK:       # %bb.0:
2175; CHECK-NEXT:    vpternlogq $239, %ymm2, %ymm1, %ymm0
2176; CHECK-NEXT:    retq
2177  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 239)
2178  ret <4 x i64> %r
2179}
2180
2181define <16 x i32> @vpternlog_d_v512_imm240(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
2182; CHECK-LABEL: vpternlog_d_v512_imm240:
2183; CHECK:       # %bb.0:
2184; CHECK-NEXT:    retq
2185  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 240)
2186  ret <16 x i32> %r
2187}
2188
2189define <2 x i64> @vpternlog_q_v128_imm241(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
2190; CHECK-LABEL: vpternlog_q_v128_imm241:
2191; CHECK:       # %bb.0:
2192; CHECK-NEXT:    vpternlogq $241, %xmm2, %xmm1, %xmm0
2193; CHECK-NEXT:    retq
2194  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 241)
2195  ret <2 x i64> %r
2196}
2197
2198define <8 x i32> @vpternlog_d_v256_imm242(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
2199; CHECK-LABEL: vpternlog_d_v256_imm242:
2200; CHECK:       # %bb.0:
2201; CHECK-NEXT:    vpternlogd $242, %ymm2, %ymm1, %ymm0
2202; CHECK-NEXT:    retq
2203  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 242)
2204  ret <8 x i32> %r
2205}
2206
2207define <8 x i64> @vpternlog_q_v512_imm243(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
2208; CHECK-LABEL: vpternlog_q_v512_imm243:
2209; CHECK:       # %bb.0:
2210; CHECK-NEXT:    vpternlogq $243, %zmm2, %zmm1, %zmm0
2211; CHECK-NEXT:    retq
2212  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 243)
2213  ret <8 x i64> %r
2214}
2215
2216define <4 x i32> @vpternlog_d_v128_imm244(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
2217; CHECK-LABEL: vpternlog_d_v128_imm244:
2218; CHECK:       # %bb.0:
2219; CHECK-NEXT:    vpternlogd $244, %xmm2, %xmm1, %xmm0
2220; CHECK-NEXT:    retq
2221  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 244)
2222  ret <4 x i32> %r
2223}
2224
2225define <4 x i64> @vpternlog_q_v256_imm245(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
2226; CHECK-LABEL: vpternlog_q_v256_imm245:
2227; CHECK:       # %bb.0:
2228; CHECK-NEXT:    vpternlogq $245, %ymm2, %ymm1, %ymm0
2229; CHECK-NEXT:    retq
2230  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 245)
2231  ret <4 x i64> %r
2232}
2233
2234define <16 x i32> @vpternlog_d_v512_imm246(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
2235; CHECK-LABEL: vpternlog_d_v512_imm246:
2236; CHECK:       # %bb.0:
2237; CHECK-NEXT:    vpternlogd $246, %zmm2, %zmm1, %zmm0
2238; CHECK-NEXT:    retq
2239  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 246)
2240  ret <16 x i32> %r
2241}
2242
2243define <2 x i64> @vpternlog_q_v128_imm247(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
2244; CHECK-LABEL: vpternlog_q_v128_imm247:
2245; CHECK:       # %bb.0:
2246; CHECK-NEXT:    vpternlogq $247, %xmm2, %xmm1, %xmm0
2247; CHECK-NEXT:    retq
2248  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 247)
2249  ret <2 x i64> %r
2250}
2251
2252define <8 x i32> @vpternlog_d_v256_imm248(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
2253; CHECK-LABEL: vpternlog_d_v256_imm248:
2254; CHECK:       # %bb.0:
2255; CHECK-NEXT:    vpternlogd $248, %ymm2, %ymm1, %ymm0
2256; CHECK-NEXT:    retq
2257  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 248)
2258  ret <8 x i32> %r
2259}
2260
2261define <8 x i64> @vpternlog_q_v512_imm249(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
2262; CHECK-LABEL: vpternlog_q_v512_imm249:
2263; CHECK:       # %bb.0:
2264; CHECK-NEXT:    vpternlogq $249, %zmm2, %zmm1, %zmm0
2265; CHECK-NEXT:    retq
2266  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 249)
2267  ret <8 x i64> %r
2268}
2269
2270define <4 x i32> @vpternlog_d_v128_imm250(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2) nounwind {
2271; CHECK-LABEL: vpternlog_d_v128_imm250:
2272; CHECK:       # %bb.0:
2273; CHECK-NEXT:    vorps %xmm2, %xmm0, %xmm0
2274; CHECK-NEXT:    retq
2275  %r = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %v0, <4 x i32> %v1, <4 x i32> %v2, i32 250)
2276  ret <4 x i32> %r
2277}
2278
2279define <4 x i64> @vpternlog_q_v256_imm251(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
2280; CHECK-LABEL: vpternlog_q_v256_imm251:
2281; CHECK:       # %bb.0:
2282; CHECK-NEXT:    vpternlogq $251, %ymm2, %ymm1, %ymm0
2283; CHECK-NEXT:    retq
2284  %r = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 251)
2285  ret <4 x i64> %r
2286}
2287
2288define <16 x i32> @vpternlog_d_v512_imm252(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) nounwind {
2289; CHECK-LABEL: vpternlog_d_v512_imm252:
2290; CHECK:       # %bb.0:
2291; CHECK-NEXT:    vpord %zmm1, %zmm0, %zmm0
2292; CHECK-NEXT:    retq
2293  %r = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2, i32 252)
2294  ret <16 x i32> %r
2295}
2296
2297; This is bitselect pattern
2298define <2 x i64> @vpternlog_q_v128_imm253(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2) nounwind {
2299; CHECK-LABEL: vpternlog_q_v128_imm253:
2300; CHECK:       # %bb.0:
2301; CHECK-NEXT:    vpternlogq $253, %xmm2, %xmm1, %xmm0
2302; CHECK-NEXT:    retq
2303  %r = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %v0, <2 x i64> %v1, <2 x i64> %v2, i32 253)
2304  ret <2 x i64> %r
2305}
2306
2307define <8 x i32> @vpternlog_d_v256_imm254(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2) nounwind {
2308; CHECK-LABEL: vpternlog_d_v256_imm254:
2309; CHECK:       # %bb.0:
2310; CHECK-NEXT:    vpternlogd $254, %ymm2, %ymm1, %ymm0
2311; CHECK-NEXT:    retq
2312  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, i32 254)
2313  ret <8 x i32> %r
2314}
2315
2316define <8 x i64> @vpternlog_q_v512_imm255(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2) nounwind {
2317; CHECK-LABEL: vpternlog_q_v512_imm255:
2318; CHECK:       # %bb.0:
2319; CHECK-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
2320; CHECK-NEXT:    retq
2321  %r = tail call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %v0, <8 x i64> %v1, <8 x i64> %v2, i32 255)
2322  ret <8 x i64> %r
2323}
2324
2325define <8 x i32> @vpternlog_vselect_8xi32(<8 x i32> %v0, <8 x i32> %v1, <8 x i32> %v2, <8 x i32> %v3) nounwind {
2326; CHECK-LABEL: vpternlog_vselect_8xi32:
2327; CHECK:       # %bb.0:
2328; CHECK-NEXT:    vpcmpeqd %ymm1, %ymm0, %ymm0
2329; CHECK-NEXT:    vpternlogd $202, %ymm2, %ymm1, %ymm0
2330; CHECK-NEXT:    retq
2331  %vcmp = icmp eq <8 x i32> %v0, %v1
2332  %vmask = sext <8 x i1> %vcmp to <8 x i32>
2333  %r = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %vmask, <8 x i32> %v1, <8 x i32> %v2, i32 202)
2334  ret <8 x i32> %r
2335}
2336
2337define <4 x i64> @vpternlog_carry_save_add_4xi64(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2) nounwind {
2338; CHECK-LABEL: vpternlog_carry_save_add_4xi64:
2339; CHECK:       # %bb.0:
2340; CHECK-NEXT:    vmovdqa %ymm0, %ymm3
2341; CHECK-NEXT:    vpternlogq $150, %ymm2, %ymm1, %ymm3
2342; CHECK-NEXT:    vpternlogq $232, %ymm2, %ymm0, %ymm1
2343; CHECK-NEXT:    vmovdqa %ymm3, %ymm0
2344; CHECK-NEXT:    jmp use_merge_4xi64@PLT # TAILCALL
2345  %l = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 150)
2346  %h = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %v0, <4 x i64> %v1, <4 x i64> %v2, i32 232)
2347  %r = tail call <4 x i64> @use_merge_4xi64(<4 x i64> %l, <4 x i64> %h)
2348  ret <4 x i64> %r
2349}
2350