blob: 108a6bb29096e931a69cd72b6471511693af66b3 [file] [log] [blame]
Sanjay Patela97d36f2017-03-31 18:51:03 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
Nemanja Ivanovicdb7e7702017-11-30 13:39:10 +00002; RUN: llc < %s -ppc-gpr-icmps=all -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown | FileCheck %s
Sanjay Patela97d36f2017-03-31 18:51:03 +00003
4define zeroext i1 @all_bits_clear(i32 %P, i32 %Q) {
5; CHECK-LABEL: all_bits_clear:
6; CHECK: # BB#0:
7; CHECK-NEXT: or 3, 3, 4
8; CHECK-NEXT: cntlzw 3, 3
Nemanja Ivanovic96c3d622017-05-11 16:54:23 +00009; CHECK-NEXT: srwi 3, 3, 5
Sanjay Patela97d36f2017-03-31 18:51:03 +000010; CHECK-NEXT: blr
11 %a = icmp eq i32 %P, 0
12 %b = icmp eq i32 %Q, 0
13 %c = and i1 %a, %b
14 ret i1 %c
15}
16
17define zeroext i1 @all_sign_bits_clear(i32 %P, i32 %Q) {
18; CHECK-LABEL: all_sign_bits_clear:
19; CHECK: # BB#0:
20; CHECK-NEXT: or 3, 3, 4
21; CHECK-NEXT: nor 3, 3, 3
22; CHECK-NEXT: srwi 3, 3, 31
23; CHECK-NEXT: blr
24 %a = icmp sgt i32 %P, -1
25 %b = icmp sgt i32 %Q, -1
26 %c = and i1 %a, %b
27 ret i1 %c
28}
29
30define zeroext i1 @all_bits_set(i32 %P, i32 %Q) {
31; CHECK-LABEL: all_bits_set:
32; CHECK: # BB#0:
Nemanja Ivanovic96c3d622017-05-11 16:54:23 +000033; CHECK-NEXT: li 5, -1
Sanjay Patela97d36f2017-03-31 18:51:03 +000034; CHECK-NEXT: and 3, 3, 4
Nemanja Ivanovic96c3d622017-05-11 16:54:23 +000035; CHECK-NEXT: xor 3, 3, 5
36; CHECK-NEXT: cntlzw 3, 3
37; CHECK-NEXT: srwi 3, 3, 5
Sanjay Patela97d36f2017-03-31 18:51:03 +000038; CHECK-NEXT: blr
39 %a = icmp eq i32 %P, -1
40 %b = icmp eq i32 %Q, -1
41 %c = and i1 %a, %b
42 ret i1 %c
43}
44
45define zeroext i1 @all_sign_bits_set(i32 %P, i32 %Q) {
46; CHECK-LABEL: all_sign_bits_set:
47; CHECK: # BB#0:
Sanjay Patel34da36e2017-03-31 20:28:06 +000048; CHECK-NEXT: and 3, 3, 4
49; CHECK-NEXT: srwi 3, 3, 31
Sanjay Patela97d36f2017-03-31 18:51:03 +000050; CHECK-NEXT: blr
51 %a = icmp slt i32 %P, 0
52 %b = icmp slt i32 %Q, 0
53 %c = and i1 %a, %b
54 ret i1 %c
55}
56
57define zeroext i1 @any_bits_set(i32 %P, i32 %Q) {
58; CHECK-LABEL: any_bits_set:
59; CHECK: # BB#0:
60; CHECK-NEXT: or 3, 3, 4
61; CHECK-NEXT: cntlzw 3, 3
Nemanja Ivanovicbb67f842017-06-07 12:23:41 +000062; CHECK-NEXT: srwi 3, 3, 5
63; CHECK-NEXT: xori 3, 3, 1
Sanjay Patela97d36f2017-03-31 18:51:03 +000064; CHECK-NEXT: blr
65 %a = icmp ne i32 %P, 0
66 %b = icmp ne i32 %Q, 0
67 %c = or i1 %a, %b
68 ret i1 %c
69}
70
71define zeroext i1 @any_sign_bits_set(i32 %P, i32 %Q) {
72; CHECK-LABEL: any_sign_bits_set:
73; CHECK: # BB#0:
74; CHECK-NEXT: or 3, 3, 4
75; CHECK-NEXT: srwi 3, 3, 31
76; CHECK-NEXT: blr
77 %a = icmp slt i32 %P, 0
78 %b = icmp slt i32 %Q, 0
79 %c = or i1 %a, %b
80 ret i1 %c
81}
82
83define zeroext i1 @any_bits_clear(i32 %P, i32 %Q) {
84; CHECK-LABEL: any_bits_clear:
85; CHECK: # BB#0:
Nemanja Ivanovicbb67f842017-06-07 12:23:41 +000086; CHECK-NEXT: li 5, -1
Sanjay Patela97d36f2017-03-31 18:51:03 +000087; CHECK-NEXT: and 3, 3, 4
Nemanja Ivanovicbb67f842017-06-07 12:23:41 +000088; CHECK-NEXT: xor 3, 3, 5
89; CHECK-NEXT: cntlzw 3, 3
90; CHECK-NEXT: srwi 3, 3, 5
91; CHECK-NEXT: xori 3, 3, 1
Sanjay Patela97d36f2017-03-31 18:51:03 +000092; CHECK-NEXT: blr
93 %a = icmp ne i32 %P, -1
94 %b = icmp ne i32 %Q, -1
95 %c = or i1 %a, %b
96 ret i1 %c
97}
98
99define zeroext i1 @any_sign_bits_clear(i32 %P, i32 %Q) {
100; CHECK-LABEL: any_sign_bits_clear:
101; CHECK: # BB#0:
102; CHECK-NEXT: and 3, 3, 4
103; CHECK-NEXT: nor 3, 3, 3
104; CHECK-NEXT: srwi 3, 3, 31
105; CHECK-NEXT: blr
106 %a = icmp sgt i32 %P, -1
107 %b = icmp sgt i32 %Q, -1
108 %c = or i1 %a, %b
109 ret i1 %c
110}
111
112; PR3351 - (P == 0) & (Q == 0) -> (P|Q) == 0
113define i32 @all_bits_clear_branch(i32* %P, i32* %Q) {
114; CHECK-LABEL: all_bits_clear_branch:
115; CHECK: # BB#0: # %entry
116; CHECK-NEXT: or. 3, 3, 4
117; CHECK-NEXT: bne 0, .LBB8_2
118; CHECK-NEXT: # BB#1: # %bb1
119; CHECK-NEXT: li 3, 4
120; CHECK-NEXT: blr
121; CHECK-NEXT: .LBB8_2: # %return
122; CHECK-NEXT: li 3, 192
123; CHECK-NEXT: blr
124entry:
125 %a = icmp eq i32* %P, null
126 %b = icmp eq i32* %Q, null
127 %c = and i1 %a, %b
128 br i1 %c, label %bb1, label %return
129
130bb1:
131 ret i32 4
132
133return:
134 ret i32 192
135}
136
137define i32 @all_sign_bits_clear_branch(i32 %P, i32 %Q) {
138; CHECK-LABEL: all_sign_bits_clear_branch:
139; CHECK: # BB#0: # %entry
140; CHECK-NEXT: or 3, 3, 4
141; CHECK-NEXT: cmpwi 0, 3, 0
142; CHECK-NEXT: blt 0, .LBB9_2
143; CHECK-NEXT: # BB#1: # %bb1
144; CHECK-NEXT: li 3, 4
145; CHECK-NEXT: blr
146; CHECK-NEXT: .LBB9_2: # %return
147; CHECK-NEXT: li 3, 192
148; CHECK-NEXT: blr
149entry:
150 %a = icmp sgt i32 %P, -1
151 %b = icmp sgt i32 %Q, -1
152 %c = and i1 %a, %b
153 br i1 %c, label %bb1, label %return
154
155bb1:
156 ret i32 4
157
158return:
159 ret i32 192
160}
161
162define i32 @all_bits_set_branch(i32 %P, i32 %Q) {
163; CHECK-LABEL: all_bits_set_branch:
164; CHECK: # BB#0: # %entry
165; CHECK-NEXT: and 3, 3, 4
166; CHECK-NEXT: cmpwi 0, 3, -1
167; CHECK-NEXT: bne 0, .LBB10_2
168; CHECK-NEXT: # BB#1: # %bb1
169; CHECK-NEXT: li 3, 4
170; CHECK-NEXT: blr
171; CHECK-NEXT: .LBB10_2: # %return
172; CHECK-NEXT: li 3, 192
173; CHECK-NEXT: blr
174entry:
175 %a = icmp eq i32 %P, -1
176 %b = icmp eq i32 %Q, -1
177 %c = and i1 %a, %b
178 br i1 %c, label %bb1, label %return
179
180bb1:
181 ret i32 4
182
183return:
184 ret i32 192
185}
186
187define i32 @all_sign_bits_set_branch(i32 %P, i32 %Q) {
188; CHECK-LABEL: all_sign_bits_set_branch:
189; CHECK: # BB#0: # %entry
Sanjay Patel34da36e2017-03-31 20:28:06 +0000190; CHECK-NEXT: and 3, 3, 4
191; CHECK-NEXT: cmpwi 0, 3, -1
192; CHECK-NEXT: bgt 0, .LBB11_2
Sanjay Patela97d36f2017-03-31 18:51:03 +0000193; CHECK-NEXT: # BB#1: # %bb1
194; CHECK-NEXT: li 3, 4
195; CHECK-NEXT: blr
196; CHECK-NEXT: .LBB11_2: # %return
197; CHECK-NEXT: li 3, 192
198; CHECK-NEXT: blr
199entry:
200 %a = icmp slt i32 %P, 0
201 %b = icmp slt i32 %Q, 0
202 %c = and i1 %a, %b
203 br i1 %c, label %bb1, label %return
204
205bb1:
206 ret i32 4
207
208return:
209 ret i32 192
210}
211
212; PR3351 - (P != 0) | (Q != 0) -> (P|Q) != 0
213define i32 @any_bits_set_branch(i32* %P, i32* %Q) {
214; CHECK-LABEL: any_bits_set_branch:
215; CHECK: # BB#0: # %entry
216; CHECK-NEXT: or. 3, 3, 4
217; CHECK-NEXT: beq 0, .LBB12_2
218; CHECK-NEXT: # BB#1: # %bb1
219; CHECK-NEXT: li 3, 4
220; CHECK-NEXT: blr
221; CHECK-NEXT: .LBB12_2: # %return
222; CHECK-NEXT: li 3, 192
223; CHECK-NEXT: blr
224entry:
225 %a = icmp ne i32* %P, null
226 %b = icmp ne i32* %Q, null
227 %c = or i1 %a, %b
228 br i1 %c, label %bb1, label %return
229
230bb1:
231 ret i32 4
232
233return:
234 ret i32 192
235}
236
237define i32 @any_sign_bits_set_branch(i32 %P, i32 %Q) {
238; CHECK-LABEL: any_sign_bits_set_branch:
239; CHECK: # BB#0: # %entry
240; CHECK-NEXT: or 3, 3, 4
241; CHECK-NEXT: cmpwi 0, 3, -1
242; CHECK-NEXT: bgt 0, .LBB13_2
243; CHECK-NEXT: # BB#1: # %bb1
244; CHECK-NEXT: li 3, 4
245; CHECK-NEXT: blr
246; CHECK-NEXT: .LBB13_2: # %return
247; CHECK-NEXT: li 3, 192
248; CHECK-NEXT: blr
249entry:
250 %a = icmp slt i32 %P, 0
251 %b = icmp slt i32 %Q, 0
252 %c = or i1 %a, %b
253 br i1 %c, label %bb1, label %return
254
255bb1:
256 ret i32 4
257
258return:
259 ret i32 192
260}
261
262define i32 @any_bits_clear_branch(i32 %P, i32 %Q) {
263; CHECK-LABEL: any_bits_clear_branch:
264; CHECK: # BB#0: # %entry
265; CHECK-NEXT: and 3, 3, 4
266; CHECK-NEXT: cmpwi 0, 3, -1
267; CHECK-NEXT: beq 0, .LBB14_2
268; CHECK-NEXT: # BB#1: # %bb1
269; CHECK-NEXT: li 3, 4
270; CHECK-NEXT: blr
271; CHECK-NEXT: .LBB14_2: # %return
272; CHECK-NEXT: li 3, 192
273; CHECK-NEXT: blr
274entry:
275 %a = icmp ne i32 %P, -1
276 %b = icmp ne i32 %Q, -1
277 %c = or i1 %a, %b
278 br i1 %c, label %bb1, label %return
279
280bb1:
281 ret i32 4
282
283return:
284 ret i32 192
285}
286
287define i32 @any_sign_bits_clear_branch(i32 %P, i32 %Q) {
288; CHECK-LABEL: any_sign_bits_clear_branch:
289; CHECK: # BB#0: # %entry
290; CHECK-NEXT: and 3, 3, 4
291; CHECK-NEXT: cmpwi 0, 3, 0
292; CHECK-NEXT: blt 0, .LBB15_2
293; CHECK-NEXT: # BB#1: # %bb1
294; CHECK-NEXT: li 3, 4
295; CHECK-NEXT: blr
296; CHECK-NEXT: .LBB15_2: # %return
297; CHECK-NEXT: li 3, 192
298; CHECK-NEXT: blr
299entry:
300 %a = icmp sgt i32 %P, -1
301 %b = icmp sgt i32 %Q, -1
302 %c = or i1 %a, %b
303 br i1 %c, label %bb1, label %return
304
305bb1:
306 ret i32 4
307
308return:
309 ret i32 192
310}
311
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000312define <4 x i1> @all_bits_clear_vec(<4 x i32> %P, <4 x i32> %Q) {
313; CHECK-LABEL: all_bits_clear_vec:
314; CHECK: # BB#0:
315; CHECK-NEXT: xxlxor 36, 36, 36
Sanjay Patel665021e2017-04-01 15:05:54 +0000316; CHECK-NEXT: xxlor 34, 34, 35
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000317; CHECK-NEXT: vcmpequw 2, 2, 4
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000318; CHECK-NEXT: blr
319 %a = icmp eq <4 x i32> %P, zeroinitializer
320 %b = icmp eq <4 x i32> %Q, zeroinitializer
321 %c = and <4 x i1> %a, %b
322 ret <4 x i1> %c
323}
324
325define <4 x i1> @all_sign_bits_clear_vec(<4 x i32> %P, <4 x i32> %Q) {
326; CHECK-LABEL: all_sign_bits_clear_vec:
327; CHECK: # BB#0:
328; CHECK-NEXT: vspltisb 4, -1
Sanjay Patel665021e2017-04-01 15:05:54 +0000329; CHECK-NEXT: xxlor 34, 34, 35
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000330; CHECK-NEXT: vcmpgtsw 2, 2, 4
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000331; CHECK-NEXT: blr
332 %a = icmp sgt <4 x i32> %P, <i32 -1, i32 -1, i32 -1, i32 -1>
333 %b = icmp sgt <4 x i32> %Q, <i32 -1, i32 -1, i32 -1, i32 -1>
334 %c = and <4 x i1> %a, %b
335 ret <4 x i1> %c
336}
337
338define <4 x i1> @all_bits_set_vec(<4 x i32> %P, <4 x i32> %Q) {
339; CHECK-LABEL: all_bits_set_vec:
340; CHECK: # BB#0:
341; CHECK-NEXT: vspltisb 4, -1
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000342; CHECK-NEXT: xxland 34, 34, 35
Sanjay Patel665021e2017-04-01 15:05:54 +0000343; CHECK-NEXT: vcmpequw 2, 2, 4
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000344; CHECK-NEXT: blr
345 %a = icmp eq <4 x i32> %P, <i32 -1, i32 -1, i32 -1, i32 -1>
346 %b = icmp eq <4 x i32> %Q, <i32 -1, i32 -1, i32 -1, i32 -1>
347 %c = and <4 x i1> %a, %b
348 ret <4 x i1> %c
349}
350
351define <4 x i1> @all_sign_bits_set_vec(<4 x i32> %P, <4 x i32> %Q) {
352; CHECK-LABEL: all_sign_bits_set_vec:
353; CHECK: # BB#0:
354; CHECK-NEXT: xxlxor 36, 36, 36
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000355; CHECK-NEXT: xxland 34, 34, 35
Sanjay Patel665021e2017-04-01 15:05:54 +0000356; CHECK-NEXT: vcmpgtsw 2, 4, 2
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000357; CHECK-NEXT: blr
358 %a = icmp slt <4 x i32> %P, zeroinitializer
359 %b = icmp slt <4 x i32> %Q, zeroinitializer
360 %c = and <4 x i1> %a, %b
361 ret <4 x i1> %c
362}
363
364define <4 x i1> @any_bits_set_vec(<4 x i32> %P, <4 x i32> %Q) {
365; CHECK-LABEL: any_bits_set_vec:
366; CHECK: # BB#0:
367; CHECK-NEXT: xxlxor 36, 36, 36
Sanjay Patel665021e2017-04-01 15:05:54 +0000368; CHECK-NEXT: xxlor 34, 34, 35
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000369; CHECK-NEXT: vcmpequw 2, 2, 4
Sanjay Patel665021e2017-04-01 15:05:54 +0000370; CHECK-NEXT: xxlnor 34, 34, 34
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000371; CHECK-NEXT: blr
372 %a = icmp ne <4 x i32> %P, zeroinitializer
373 %b = icmp ne <4 x i32> %Q, zeroinitializer
374 %c = or <4 x i1> %a, %b
375 ret <4 x i1> %c
376}
377
378define <4 x i1> @any_sign_bits_set_vec(<4 x i32> %P, <4 x i32> %Q) {
379; CHECK-LABEL: any_sign_bits_set_vec:
380; CHECK: # BB#0:
381; CHECK-NEXT: xxlxor 36, 36, 36
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000382; CHECK-NEXT: xxlor 34, 34, 35
Sanjay Patel665021e2017-04-01 15:05:54 +0000383; CHECK-NEXT: vcmpgtsw 2, 4, 2
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000384; CHECK-NEXT: blr
385 %a = icmp slt <4 x i32> %P, zeroinitializer
386 %b = icmp slt <4 x i32> %Q, zeroinitializer
387 %c = or <4 x i1> %a, %b
388 ret <4 x i1> %c
389}
390
391define <4 x i1> @any_bits_clear_vec(<4 x i32> %P, <4 x i32> %Q) {
392; CHECK-LABEL: any_bits_clear_vec:
393; CHECK: # BB#0:
394; CHECK-NEXT: vspltisb 4, -1
Sanjay Patel665021e2017-04-01 15:05:54 +0000395; CHECK-NEXT: xxland 34, 34, 35
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000396; CHECK-NEXT: vcmpequw 2, 2, 4
Sanjay Patel665021e2017-04-01 15:05:54 +0000397; CHECK-NEXT: xxlnor 34, 34, 34
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000398; CHECK-NEXT: blr
399 %a = icmp ne <4 x i32> %P, <i32 -1, i32 -1, i32 -1, i32 -1>
400 %b = icmp ne <4 x i32> %Q, <i32 -1, i32 -1, i32 -1, i32 -1>
401 %c = or <4 x i1> %a, %b
402 ret <4 x i1> %c
403}
404
405define <4 x i1> @any_sign_bits_clear_vec(<4 x i32> %P, <4 x i32> %Q) {
406; CHECK-LABEL: any_sign_bits_clear_vec:
407; CHECK: # BB#0:
408; CHECK-NEXT: vspltisb 4, -1
Sanjay Patel665021e2017-04-01 15:05:54 +0000409; CHECK-NEXT: xxland 34, 34, 35
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000410; CHECK-NEXT: vcmpgtsw 2, 2, 4
Sanjay Patelfe9340c2017-04-01 14:32:18 +0000411; CHECK-NEXT: blr
412 %a = icmp sgt <4 x i32> %P, <i32 -1, i32 -1, i32 -1, i32 -1>
413 %b = icmp sgt <4 x i32> %Q, <i32 -1, i32 -1, i32 -1, i32 -1>
414 %c = or <4 x i1> %a, %b
415 ret <4 x i1> %c
416}
417
Sanjay Patela4546ef2017-04-03 22:45:46 +0000418define zeroext i1 @ne_neg1_and_ne_zero(i64 %x) {
419; CHECK-LABEL: ne_neg1_and_ne_zero:
420; CHECK: # BB#0:
Nemanja Ivanovicdb7e7702017-11-30 13:39:10 +0000421; CHECK-NEXT: li 4, 1
Sanjay Patela4546ef2017-04-03 22:45:46 +0000422; CHECK-NEXT: addi 3, 3, 1
Nemanja Ivanovicdb7e7702017-11-30 13:39:10 +0000423; CHECK-NEXT: subfc 3, 3, 4
424; CHECK-NEXT: subfe 3, 4, 4
425; CHECK-NEXT: neg 3, 3
Sanjay Patela4546ef2017-04-03 22:45:46 +0000426; CHECK-NEXT: blr
427 %cmp1 = icmp ne i64 %x, -1
428 %cmp2 = icmp ne i64 %x, 0
429 %and = and i1 %cmp1, %cmp2
430 ret i1 %and
431}
432
433; PR32401 - https://bugs.llvm.org/show_bug.cgi?id=32401
434
435define zeroext i1 @and_eq(i16 zeroext %a, i16 zeroext %b, i16 zeroext %c, i16 zeroext %d) {
436; CHECK-LABEL: and_eq:
437; CHECK: # BB#0:
Sanjay Patelb2f16212017-04-05 14:09:39 +0000438; CHECK-NEXT: xor 5, 5, 6
439; CHECK-NEXT: xor 3, 3, 4
440; CHECK-NEXT: or 3, 3, 5
441; CHECK-NEXT: cntlzw 3, 3
Nemanja Ivanovic96c3d622017-05-11 16:54:23 +0000442; CHECK-NEXT: srwi 3, 3, 5
Sanjay Patela4546ef2017-04-03 22:45:46 +0000443; CHECK-NEXT: blr
444 %cmp1 = icmp eq i16 %a, %b
445 %cmp2 = icmp eq i16 %c, %d
446 %and = and i1 %cmp1, %cmp2
447 ret i1 %and
448}
449
450define zeroext i1 @or_ne(i32 %a, i32 %b, i32 %c, i32 %d) {
451; CHECK-LABEL: or_ne:
452; CHECK: # BB#0:
Sanjay Patelb2f16212017-04-05 14:09:39 +0000453; CHECK-NEXT: xor 5, 5, 6
454; CHECK-NEXT: xor 3, 3, 4
455; CHECK-NEXT: or 3, 3, 5
456; CHECK-NEXT: cntlzw 3, 3
Nemanja Ivanovicbb67f842017-06-07 12:23:41 +0000457; CHECK-NEXT: srwi 3, 3, 5
458; CHECK-NEXT: xori 3, 3, 1
Sanjay Patela4546ef2017-04-03 22:45:46 +0000459; CHECK-NEXT: blr
460 %cmp1 = icmp ne i32 %a, %b
461 %cmp2 = icmp ne i32 %c, %d
462 %or = or i1 %cmp1, %cmp2
463 ret i1 %or
464}
465
466; This should not be transformed because vector compares + bitwise logic are faster.
467
468define <4 x i1> @and_eq_vec(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c, <4 x i32> %d) {
469; CHECK-LABEL: and_eq_vec:
470; CHECK: # BB#0:
471; CHECK-NEXT: vcmpequw 2, 2, 3
472; CHECK-NEXT: vcmpequw 19, 4, 5
473; CHECK-NEXT: xxland 34, 34, 51
474; CHECK-NEXT: blr
475 %cmp1 = icmp eq <4 x i32> %a, %b
476 %cmp2 = icmp eq <4 x i32> %c, %d
477 %and = and <4 x i1> %cmp1, %cmp2
478 ret <4 x i1> %and
479}
480