Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / X86 / ternlog.ll
blobcef044acbc5a94148fcde1a41d3e7587b90497d3
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
5 ;; This is just a simple test to make sure there are no regressions
6 ;; cause by splitting/recombining ternlog intrinsics.
8 declare <4 x i64> @use_merge_4xi64(<4 x i64>, <4 x i64>)
10 declare <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32>, <4 x i32>, <4 x i32>, i32 immarg)
11 declare <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64>, <4 x i64>, <4 x i64>, i32 immarg)
12 declare <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i32 immarg)
13 declare <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64>, <2 x i64>, <2 x i64>, i32 immarg)
14 declare <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i32 immarg)
15 declare <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32>, <8 x i32>, <8 x i32>, i32 immarg)
17 define <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
26 define <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
35 define <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
44 define <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
53 define <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
62 define <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
71 define <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
80 define <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
89 define <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
98 define <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
107 define <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
116 define <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
125 define <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
134 define <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
143 define <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
152 define <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
161 define <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
170 define <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
179 define <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
188 define <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
197 define <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
206 define <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
215 ;; This is one_bit_set pattern
216 define <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
225 define <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
234 define <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
243 define <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
252 define <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
261 define <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
270 define <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
279 define <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
288 define <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
297 define <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
306 define <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
315 define <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
324 define <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
333 define <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
342 define <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
351 define <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
360 define <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
369 define <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
378 define <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
387 define <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
396 define <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
405 define <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
414 define <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
423 define <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
432 define <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
441 define <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
450 define <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
459 define <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
468 define <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
477 define <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
487 define <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
496 define <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
505 define <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
514 define <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
523 define <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
532 define <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
541 define <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
550 define <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
559 define <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
568 define <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
577 define <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
586 define <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
595 define <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
604 define <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
613 define <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
622 define <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
631 define <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
640 define <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
649 define <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
658 define <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
667 define <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
676 define <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
685 define <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
694 define <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
703 define <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
712 define <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
721 define <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
730 define <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
739 define <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
748 define <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
757 define <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
766 define <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
775 define <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
784 define <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
794 define <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
803 define <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
812 define <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
821 define <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
830 define <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
839 define <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
848 define <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
857 define <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
866 define <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
875 define <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
884 define <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
893 define <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
902 define <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
911 define <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
920 define <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
929 define <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
938 define <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
947 define <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
956 ; This is two_bits_set pattern
957 define <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
966 define <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
975 define <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
984 define <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
993 define <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
1002 define <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
1011 define <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
1020 define <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
1029 define <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
1038 define <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
1047 define <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
1056 define <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
1065 define <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
1074 define <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
1083 define <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
1092 define <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
1101 define <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
1110 define <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
1119 define <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
1128 define <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
1137 define <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
1146 define <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
1155 define <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
1164 define <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
1173 define <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
1182 define <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
1191 define <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
1200 define <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
1209 define <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
1218 define <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
1227 define <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
1236 define <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
1245 define <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
1254 define <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
1263 define <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
1272 define <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
1281 define <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
1290 define <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
1299 define <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
1308 define <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
1317 define <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
1326 define <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
1335 define <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
1344 define <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
1353 define <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
1362 define <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
1371 define <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
1380 define <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
1389 define <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
1398 define <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
1407 define <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
1416 define <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
1425 define <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
1434 define <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
1443 define <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
1452 define <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
1461 define <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
1470 define <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
1479 define <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
1488 define <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
1497 define <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
1506 define <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
1515 define <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
1524 define <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
1533 define <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
1542 define <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
1551 define <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
1560 define <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
1569 define <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
1578 define <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
1587 define <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
1596 define <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
1605 define <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
1614 define <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
1623 define <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
1632 define <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
1641 define <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
1650 define <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
1659 define <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
1668 define <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
1677 define <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
1686 define <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
1695 define <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
1704 define <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
1713 define <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
1722 define <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
1731 define <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
1740 define <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
1749 define <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
1758 define <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
1767 define <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
1776 define <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
1785 define <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
1794 define <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
1803 define <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
1812 define <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
1821 define <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
1830 define <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
1839 define <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
1848 define <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
1857 define <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
1866 define <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
1875 define <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
1884 define <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
1893 define <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
1902 define <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
1911 define <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
1920 define <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
1929 define <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
1938 define <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
1947 define <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
1956 define <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
1965 define <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
1974 define <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
1983 define <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
1992 define <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
2001 define <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
2010 define <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
2019 define <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
2028 define <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
2037 define <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
2046 define <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
2055 define <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
2064 define <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
2073 define <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
2082 define <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
2091 define <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
2100 define <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
2109 define <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
2118 define <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
2127 define <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
2136 define <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
2145 define <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
2154 define <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
2163 define <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
2172 define <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
2181 define <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
2189 define <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
2198 define <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
2207 define <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
2216 define <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
2225 define <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
2234 define <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
2243 define <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
2252 define <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
2261 define <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
2270 define <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
2279 define <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
2288 define <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
2297 ; This is bitselect pattern
2298 define <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
2307 define <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
2316 define <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
2325 define <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
2337 define <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