xref: /llvm-project/llvm/test/Transforms/InstCombine/X86/clmulqdq.ll (revision 9d4557920f1008b64300928c4696bf22e923f71f)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -passes=instcombine -mtriple=x86_64-unknown-unknown -S | FileCheck %s
3
4declare <2 x i64> @llvm.x86.pclmulqdq(<2 x i64>, <2 x i64>, i8)
5declare <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64>, <4 x i64>, i8)
6declare <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64>, <8 x i64>, i8)
7
8define <2 x i64> @test_demanded_elts_pclmulqdq_0(<2 x i64> %a0, <2 x i64> %a1) {
9; CHECK-LABEL: @test_demanded_elts_pclmulqdq_0(
10; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> [[A0:%.*]], <2 x i64> [[A1:%.*]], i8 0)
11; CHECK-NEXT:    ret <2 x i64> [[TMP1]]
12;
13  %1 = insertelement <2 x i64> %a0, i64 1, i64 1
14  %2 = insertelement <2 x i64> %a1, i64 1, i64 1
15  %3 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %1, <2 x i64> %2, i8 0)
16  ret <2 x i64> %3
17}
18
19define <2 x i64> @test_demanded_elts_pclmulqdq_1(<2 x i64> %a0, <2 x i64> %a1) {
20; CHECK-LABEL: @test_demanded_elts_pclmulqdq_1(
21; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 1>, <2 x i64> [[A1:%.*]], i8 1)
22; CHECK-NEXT:    ret <2 x i64> [[TMP1]]
23;
24  %1 = insertelement <2 x i64> %a0, i64 1, i64 1
25  %2 = insertelement <2 x i64> %a1, i64 1, i64 1
26  %3 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %1, <2 x i64> %2, i8 1)
27  ret <2 x i64> %3
28}
29
30define <2 x i64> @test_demanded_elts_pclmulqdq_16(<2 x i64> %a0, <2 x i64> %a1) {
31; CHECK-LABEL: @test_demanded_elts_pclmulqdq_16(
32; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> [[A0:%.*]], <2 x i64> <i64 poison, i64 1>, i8 16)
33; CHECK-NEXT:    ret <2 x i64> [[TMP1]]
34;
35  %1 = insertelement <2 x i64> %a0, i64 1, i64 1
36  %2 = insertelement <2 x i64> %a1, i64 1, i64 1
37  %3 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %1, <2 x i64> %2, i8 16)
38  ret <2 x i64> %3
39}
40
41define <2 x i64> @test_demanded_elts_pclmulqdq_17(<2 x i64> %a0, <2 x i64> %a1) {
42; CHECK-LABEL: @test_demanded_elts_pclmulqdq_17(
43; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 1>, <2 x i64> <i64 poison, i64 1>, i8 17)
44; CHECK-NEXT:    ret <2 x i64> [[TMP1]]
45;
46  %1 = insertelement <2 x i64> %a0, i64 1, i64 1
47  %2 = insertelement <2 x i64> %a1, i64 1, i64 1
48  %3 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %1, <2 x i64> %2, i8 17)
49  ret <2 x i64> %3
50}
51
52define <2 x i64> @test_demanded_elts_pclmulqdq_undef_0() {
53; CHECK-LABEL: @test_demanded_elts_pclmulqdq_undef_0(
54; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 undef, i64 poison>, <2 x i64> <i64 undef, i64 poison>, i8 0)
55; CHECK-NEXT:    ret <2 x i64> [[TMP1]]
56;
57  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 undef, i64 1>, <2 x i64> <i64 undef, i64 1>, i8 0)
58  ret <2 x i64> %1
59}
60
61define <2 x i64> @test_demanded_elts_pclmulqdq_undef_1() {
62; CHECK-LABEL: @test_demanded_elts_pclmulqdq_undef_1(
63; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 undef>, <2 x i64> <i64 undef, i64 poison>, i8 1)
64; CHECK-NEXT:    ret <2 x i64> [[TMP1]]
65;
66  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 1, i64 undef>, <2 x i64> <i64 undef, i64 1>, i8 1)
67  ret <2 x i64> %1
68}
69
70define <2 x i64> @test_demanded_elts_pclmulqdq_undef_16() {
71; CHECK-LABEL: @test_demanded_elts_pclmulqdq_undef_16(
72; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 undef, i64 poison>, <2 x i64> <i64 poison, i64 undef>, i8 16)
73; CHECK-NEXT:    ret <2 x i64> [[TMP1]]
74;
75  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 undef, i64 1>, <2 x i64> <i64 1, i64 undef>, i8 16)
76  ret <2 x i64> %1
77}
78
79define <2 x i64> @test_demanded_elts_pclmulqdq_undef_17() {
80; CHECK-LABEL: @test_demanded_elts_pclmulqdq_undef_17(
81; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 undef>, <2 x i64> <i64 poison, i64 undef>, i8 17)
82; CHECK-NEXT:    ret <2 x i64> [[TMP1]]
83;
84  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 1, i64 undef>, <2 x i64> <i64 1, i64 undef>, i8 17)
85  ret <2 x i64> %1
86}
87
88define <2 x i64> @test_demanded_elts_pclmulqdq_poison_0() {
89; CHECK-LABEL: @test_demanded_elts_pclmulqdq_poison_0(
90; CHECK-NEXT:    ret <2 x i64> zeroinitializer
91;
92  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 1>, <2 x i64> <i64 poison, i64 1>, i8 0)
93  ret <2 x i64> %1
94}
95
96define <2 x i64> @test_demanded_elts_pclmulqdq_poison_1() {
97; CHECK-LABEL: @test_demanded_elts_pclmulqdq_poison_1(
98; CHECK-NEXT:    ret <2 x i64> zeroinitializer
99;
100  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 1, i64 poison>, <2 x i64> <i64 poison, i64 1>, i8 1)
101  ret <2 x i64> %1
102}
103
104define <2 x i64> @test_demanded_elts_pclmulqdq_poison_16() {
105; CHECK-LABEL: @test_demanded_elts_pclmulqdq_poison_16(
106; CHECK-NEXT:    ret <2 x i64> zeroinitializer
107;
108  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 1>, <2 x i64> <i64 1, i64 poison>, i8 16)
109  ret <2 x i64> %1
110}
111
112define <2 x i64> @test_demanded_elts_pclmulqdq_poison_17() {
113; CHECK-LABEL: @test_demanded_elts_pclmulqdq_poison_17(
114; CHECK-NEXT:    ret <2 x i64> zeroinitializer
115;
116  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 1, i64 poison>, <2 x i64> <i64 1, i64 poison>, i8 17)
117  ret <2 x i64> %1
118}
119
120define <4 x i64> @test_demanded_elts_pclmulqdq_256_0(<4 x i64> %a0, <4 x i64> %a1) {
121; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_0(
122; CHECK-NEXT:    [[RES:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> [[A0:%.*]], <4 x i64> [[A1:%.*]], i8 0)
123; CHECK-NEXT:    ret <4 x i64> [[RES]]
124;
125  %1 = insertelement <4 x i64> %a0, i64 1, i64 1
126  %2 = insertelement <4 x i64> %a1, i64 1, i64 1
127  %3 = insertelement <4 x i64> %1, i64 1, i64 3
128  %4 = insertelement <4 x i64> %2, i64 1, i64 3
129  %res = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %3, <4 x i64> %4, i8 0)
130  ret <4 x i64> %res
131}
132
133define <4 x i64> @test_demanded_elts_pclmulqdq_256_1(<4 x i64> %a0, <4 x i64> %a1) {
134; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_1(
135; CHECK-NEXT:    [[RES:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, <4 x i64> [[A1:%.*]], i8 1)
136; CHECK-NEXT:    ret <4 x i64> [[RES]]
137;
138  %1 = insertelement <4 x i64> %a0, i64 1, i64 1
139  %2 = insertelement <4 x i64> %a1, i64 1, i64 1
140  %3 = insertelement <4 x i64> %1, i64 1, i64 3
141  %4 = insertelement <4 x i64> %2, i64 1, i64 3
142  %res = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %3, <4 x i64> %4, i8 1)
143  ret <4 x i64> %res
144}
145
146define <4 x i64> @test_demanded_elts_pclmulqdq_256_16(<4 x i64> %a0, <4 x i64> %a1) {
147; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_16(
148; CHECK-NEXT:    [[RES:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> [[A0:%.*]], <4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, i8 16)
149; CHECK-NEXT:    ret <4 x i64> [[RES]]
150;
151  %1 = insertelement <4 x i64> %a0, i64 1, i64 1
152  %2 = insertelement <4 x i64> %a1, i64 1, i64 1
153  %3 = insertelement <4 x i64> %1, i64 1, i64 3
154  %4 = insertelement <4 x i64> %2, i64 1, i64 3
155  %res = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %3, <4 x i64> %4, i8 16)
156  ret <4 x i64> %res
157}
158
159define <4 x i64> @test_demanded_elts_pclmulqdq_256_17(<4 x i64> %a0, <4 x i64> %a1) {
160; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_17(
161; CHECK-NEXT:    [[RES:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, <4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, i8 17)
162; CHECK-NEXT:    ret <4 x i64> [[RES]]
163;
164  %1 = insertelement <4 x i64> %a0, i64 1, i64 1
165  %2 = insertelement <4 x i64> %a1, i64 1, i64 1
166  %3 = insertelement <4 x i64> %1, i64 1, i64 3
167  %4 = insertelement <4 x i64> %2, i64 1, i64 3
168  %res = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %3, <4 x i64> %4, i8 17)
169  ret <4 x i64> %res
170}
171
172define <4 x i64> @test_demanded_elts_pclmulqdq_256_undef_0() {
173; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_undef_0(
174; CHECK-NEXT:    [[TMP1:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 undef, i64 poison, i64 undef, i64 poison>, <4 x i64> <i64 undef, i64 poison, i64 undef, i64 poison>, i8 0)
175; CHECK-NEXT:    ret <4 x i64> [[TMP1]]
176;
177  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 undef, i64 1, i64 undef, i64 1>, <4 x i64> <i64 undef, i64 1, i64 undef, i64 1>, i8 0)
178  ret <4 x i64> %1
179}
180
181define <4 x i64> @test_demanded_elts_pclmulqdq_256_undef_1() {
182; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_undef_1(
183; CHECK-NEXT:    [[TMP1:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 undef, i64 poison, i64 undef>, <4 x i64> <i64 undef, i64 poison, i64 undef, i64 poison>, i8 1)
184; CHECK-NEXT:    ret <4 x i64> [[TMP1]]
185;
186  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 1, i64 undef, i64 1, i64 undef>, <4 x i64> <i64 undef, i64 1, i64 undef, i64 1>, i8 1)
187  ret <4 x i64> %1
188}
189
190define <4 x i64> @test_demanded_elts_pclmulqdq_256_undef_16() {
191; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_undef_16(
192; CHECK-NEXT:    [[TMP1:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 undef, i64 poison, i64 undef, i64 poison>, <4 x i64> <i64 poison, i64 undef, i64 poison, i64 undef>, i8 16)
193; CHECK-NEXT:    ret <4 x i64> [[TMP1]]
194;
195  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 undef, i64 1, i64 undef, i64 1>, <4 x i64> <i64 1, i64 undef, i64 1, i64 undef>, i8 16)
196  ret <4 x i64> %1
197}
198
199define <4 x i64> @test_demanded_elts_pclmulqdq_256_undef_17() {
200; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_undef_17(
201; CHECK-NEXT:    [[TMP1:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 undef, i64 poison, i64 undef>, <4 x i64> <i64 poison, i64 undef, i64 poison, i64 undef>, i8 17)
202; CHECK-NEXT:    ret <4 x i64> [[TMP1]]
203;
204  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 1, i64 undef, i64 1, i64 undef>, <4 x i64> <i64 1, i64 undef, i64 1, i64 undef>, i8 17)
205  ret <4 x i64> %1
206}
207
208define <4 x i64> @test_demanded_elts_pclmulqdq_256_poison_0() {
209; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_poison_0(
210; CHECK-NEXT:    ret <4 x i64> zeroinitializer
211;
212  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, <4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, i8 0)
213  ret <4 x i64> %1
214}
215
216define <4 x i64> @test_demanded_elts_pclmulqdq_256_poison_1() {
217; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_poison_1(
218; CHECK-NEXT:    ret <4 x i64> zeroinitializer
219;
220  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 1, i64 poison, i64 1, i64 poison>, <4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, i8 1)
221  ret <4 x i64> %1
222}
223
224define <4 x i64> @test_demanded_elts_pclmulqdq_256_poison_16() {
225; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_poison_16(
226; CHECK-NEXT:    ret <4 x i64> zeroinitializer
227;
228  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, <4 x i64> <i64 1, i64 poison, i64 1, i64 poison>, i8 16)
229  ret <4 x i64> %1
230}
231
232define <4 x i64> @test_demanded_elts_pclmulqdq_256_poison_17() {
233; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_poison_17(
234; CHECK-NEXT:    ret <4 x i64> zeroinitializer
235;
236  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 1, i64 poison, i64 1, i64 poison>, <4 x i64> <i64 1, i64 poison, i64 1, i64 poison>, i8 17)
237  ret <4 x i64> %1
238}
239
240define <8 x i64> @test_demanded_elts_pclmulqdq_512_0(<8 x i64> %a0, <8 x i64> %a1) {
241; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_0(
242; CHECK-NEXT:    [[RES:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> [[A0:%.*]], <8 x i64> [[A1:%.*]], i8 0)
243; CHECK-NEXT:    ret <8 x i64> [[RES]]
244;
245  %1 = insertelement <8 x i64> %a0, i64 1, i64 1
246  %2 = insertelement <8 x i64> %a1, i64 1, i64 1
247  %3 = insertelement <8 x i64> %1, i64 1, i64 3
248  %4 = insertelement <8 x i64> %2, i64 1, i64 3
249  %5 = insertelement <8 x i64> %3, i64 1, i64 5
250  %6 = insertelement <8 x i64> %4, i64 1, i64 5
251  %7 = insertelement <8 x i64> %5, i64 1, i64 7
252  %8 = insertelement <8 x i64> %6, i64 1, i64 7
253  %res = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %7, <8 x i64> %8, i8 0)
254  ret <8 x i64> %res
255}
256
257define <8 x i64> @test_demanded_elts_pclmulqdq_512_1(<8 x i64> %a0, <8 x i64> %a1) {
258; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_1(
259; CHECK-NEXT:    [[RES:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, <8 x i64> [[A1:%.*]], i8 1)
260; CHECK-NEXT:    ret <8 x i64> [[RES]]
261;
262  %1 = insertelement <8 x i64> %a0, i64 1, i64 1
263  %2 = insertelement <8 x i64> %a1, i64 1, i64 1
264  %3 = insertelement <8 x i64> %1, i64 1, i64 3
265  %4 = insertelement <8 x i64> %2, i64 1, i64 3
266  %5 = insertelement <8 x i64> %3, i64 1, i64 5
267  %6 = insertelement <8 x i64> %4, i64 1, i64 5
268  %7 = insertelement <8 x i64> %5, i64 1, i64 7
269  %8 = insertelement <8 x i64> %6, i64 1, i64 7
270  %res = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %7, <8 x i64> %8, i8 1)
271  ret <8 x i64> %res
272}
273
274define <8 x i64> @test_demanded_elts_pclmulqdq_512_16(<8 x i64> %a0, <8 x i64> %a1) {
275; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_16(
276; CHECK-NEXT:    [[RES:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> [[A0:%.*]], <8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, i8 16)
277; CHECK-NEXT:    ret <8 x i64> [[RES]]
278;
279  %1 = insertelement <8 x i64> %a0, i64 1, i64 1
280  %2 = insertelement <8 x i64> %a1, i64 1, i64 1
281  %3 = insertelement <8 x i64> %1, i64 1, i64 3
282  %4 = insertelement <8 x i64> %2, i64 1, i64 3
283  %5 = insertelement <8 x i64> %3, i64 1, i64 5
284  %6 = insertelement <8 x i64> %4, i64 1, i64 5
285  %7 = insertelement <8 x i64> %5, i64 1, i64 7
286  %8 = insertelement <8 x i64> %6, i64 1, i64 7
287  %res = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %7, <8 x i64> %8, i8 16)
288  ret <8 x i64> %res
289}
290
291define <8 x i64> @test_demanded_elts_pclmulqdq_512_17(<8 x i64> %a0, <8 x i64> %a1) {
292; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_17(
293; CHECK-NEXT:    [[RES:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, <8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, i8 17)
294; CHECK-NEXT:    ret <8 x i64> [[RES]]
295;
296  %1 = insertelement <8 x i64> %a0, i64 1, i64 1
297  %2 = insertelement <8 x i64> %a1, i64 1, i64 1
298  %3 = insertelement <8 x i64> %1, i64 1, i64 3
299  %4 = insertelement <8 x i64> %2, i64 1, i64 3
300  %5 = insertelement <8 x i64> %3, i64 1, i64 5
301  %6 = insertelement <8 x i64> %4, i64 1, i64 5
302  %7 = insertelement <8 x i64> %5, i64 1, i64 7
303  %8 = insertelement <8 x i64> %6, i64 1, i64 7
304  %res = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %7, <8 x i64> %8, i8 17)
305  ret <8 x i64> %res
306}
307
308define <8 x i64> @test_demanded_elts_pclmulqdq_512_undef_0() {
309; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_undef_0(
310; CHECK-NEXT:    [[TMP1:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison>, <8 x i64> <i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison>, i8 0)
311; CHECK-NEXT:    ret <8 x i64> [[TMP1]]
312;
313  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1>, <8 x i64> <i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1>, i8 0)
314  ret <8 x i64> %1
315}
316
317define <8 x i64> @test_demanded_elts_pclmulqdq_512_undef_1() {
318; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_undef_1(
319; CHECK-NEXT:    [[TMP1:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef>, <8 x i64> <i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison>, i8 1)
320; CHECK-NEXT:    ret <8 x i64> [[TMP1]]
321;
322  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef>, <8 x i64> <i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1>, i8 1)
323  ret <8 x i64> %1
324}
325
326define <8 x i64> @test_demanded_elts_pclmulqdq_512_undef_16() {
327; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_undef_16(
328; CHECK-NEXT:    [[TMP1:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison>, <8 x i64> <i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef>, i8 16)
329; CHECK-NEXT:    ret <8 x i64> [[TMP1]]
330;
331  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1>, <8 x i64> <i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef>, i8 16)
332  ret <8 x i64> %1
333}
334
335define <8 x i64> @test_demanded_elts_pclmulqdq_512_undef_17() {
336; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_undef_17(
337; CHECK-NEXT:    [[TMP1:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef>, <8 x i64> <i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef>, i8 17)
338; CHECK-NEXT:    ret <8 x i64> [[TMP1]]
339;
340  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef>, <8 x i64> <i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef>, i8 17)
341  ret <8 x i64> %1
342}
343
344define <8 x i64> @test_demanded_elts_pclmulqdq_512_poison_0() {
345; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_poison_0(
346; CHECK-NEXT:    ret <8 x i64> zeroinitializer
347;
348  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, <8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, i8 0)
349  ret <8 x i64> %1
350}
351
352define <8 x i64> @test_demanded_elts_pclmulqdq_512_poison_1() {
353; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_poison_1(
354; CHECK-NEXT:    ret <8 x i64> zeroinitializer
355;
356  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison>, <8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, i8 1)
357  ret <8 x i64> %1
358}
359
360define <8 x i64> @test_demanded_elts_pclmulqdq_512_poison_16() {
361; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_poison_16(
362; CHECK-NEXT:    ret <8 x i64> zeroinitializer
363;
364  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, <8 x i64> <i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison>, i8 16)
365  ret <8 x i64> %1
366}
367
368define <8 x i64> @test_demanded_elts_pclmulqdq_512_poison_17() {
369; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_poison_17(
370; CHECK-NEXT:    ret <8 x i64> zeroinitializer
371;
372  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison>, <8 x i64> <i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison>, i8 17)
373  ret <8 x i64> %1
374}
375