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