annotate test/CodeGen/X86/vec_setcc.ll @ 120:1172e4bd9c6f

update 4.0.0
author mir3636
date Fri, 25 Nov 2016 19:14:25 +0900
parents 60c9769439b8
children 3a76565eade5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE2
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE --check-prefix=SSE41
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
4 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 define <16 x i8> @v16i8_icmp_uge(<16 x i8> %a, <16 x i8> %b) nounwind readnone ssp uwtable {
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
7 ; SSE-LABEL: v16i8_icmp_uge:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
8 ; SSE: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
9 ; SSE-NEXT: pmaxub %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
10 ; SSE-NEXT: pcmpeqb %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
11 ; SSE-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
12 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
13 ; AVX-LABEL: v16i8_icmp_uge:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
14 ; AVX: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
15 ; AVX-NEXT: vpmaxub %xmm1, %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
16 ; AVX-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
17 ; AVX-NEXT: retq
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 %1 = icmp uge <16 x i8> %a, %b
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 %2 = sext <16 x i1> %1 to <16 x i8>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 ret <16 x i8> %2
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 define <16 x i8> @v16i8_icmp_ule(<16 x i8> %a, <16 x i8> %b) nounwind readnone ssp uwtable {
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
24 ; SSE-LABEL: v16i8_icmp_ule:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
25 ; SSE: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
26 ; SSE-NEXT: pminub %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
27 ; SSE-NEXT: pcmpeqb %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
28 ; SSE-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
29 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
30 ; AVX-LABEL: v16i8_icmp_ule:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
31 ; AVX: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
32 ; AVX-NEXT: vpminub %xmm1, %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
33 ; AVX-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
34 ; AVX-NEXT: retq
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 %1 = icmp ule <16 x i8> %a, %b
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 %2 = sext <16 x i1> %1 to <16 x i8>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 ret <16 x i8> %2
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 define <8 x i16> @v8i16_icmp_uge(<8 x i16> %a, <8 x i16> %b) nounwind readnone ssp uwtable {
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
41 ; SSE2-LABEL: v8i16_icmp_uge:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
42 ; SSE2: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
43 ; SSE2-NEXT: psubusw %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
44 ; SSE2-NEXT: pxor %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
45 ; SSE2-NEXT: pcmpeqw %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
46 ; SSE2-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
47 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
48 ; SSE41-LABEL: v8i16_icmp_uge:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
49 ; SSE41: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
50 ; SSE41-NEXT: pmaxuw %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
51 ; SSE41-NEXT: pcmpeqw %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
52 ; SSE41-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
53 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
54 ; AVX-LABEL: v8i16_icmp_uge:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
55 ; AVX: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
56 ; AVX-NEXT: vpmaxuw %xmm1, %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
57 ; AVX-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
58 ; AVX-NEXT: retq
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 %1 = icmp uge <8 x i16> %a, %b
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 %2 = sext <8 x i1> %1 to <8 x i16>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 ret <8 x i16> %2
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 define <8 x i16> @v8i16_icmp_ule(<8 x i16> %a, <8 x i16> %b) nounwind readnone ssp uwtable {
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
65 ; SSE2-LABEL: v8i16_icmp_ule:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
66 ; SSE2: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
67 ; SSE2-NEXT: psubusw %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
68 ; SSE2-NEXT: pxor %xmm1, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
69 ; SSE2-NEXT: pcmpeqw %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
70 ; SSE2-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
71 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
72 ; SSE41-LABEL: v8i16_icmp_ule:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
73 ; SSE41: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
74 ; SSE41-NEXT: pminuw %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
75 ; SSE41-NEXT: pcmpeqw %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
76 ; SSE41-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
77 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
78 ; AVX-LABEL: v8i16_icmp_ule:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
79 ; AVX: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
80 ; AVX-NEXT: vpminuw %xmm1, %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
81 ; AVX-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
82 ; AVX-NEXT: retq
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 %1 = icmp ule <8 x i16> %a, %b
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 %2 = sext <8 x i1> %1 to <8 x i16>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 ret <8 x i16> %2
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 define <4 x i32> @v4i32_icmp_uge(<4 x i32> %a, <4 x i32> %b) nounwind readnone ssp uwtable {
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
89 ; SSE2-LABEL: v4i32_icmp_uge:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
90 ; SSE2: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
91 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
92 ; SSE2-NEXT: pxor %xmm2, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
93 ; SSE2-NEXT: pxor %xmm1, %xmm2
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
94 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm2
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
95 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
96 ; SSE2-NEXT: pxor %xmm2, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
97 ; SSE2-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
98 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
99 ; SSE41-LABEL: v4i32_icmp_uge:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
100 ; SSE41: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
101 ; SSE41-NEXT: pmaxud %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
102 ; SSE41-NEXT: pcmpeqd %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
103 ; SSE41-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
104 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
105 ; AVX-LABEL: v4i32_icmp_uge:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
106 ; AVX: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
107 ; AVX-NEXT: vpmaxud %xmm1, %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
108 ; AVX-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
109 ; AVX-NEXT: retq
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 %1 = icmp uge <4 x i32> %a, %b
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 %2 = sext <4 x i1> %1 to <4 x i32>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 ret <4 x i32> %2
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 define <4 x i32> @v4i32_icmp_ule(<4 x i32> %a, <4 x i32> %b) nounwind readnone ssp uwtable {
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
116 ; SSE2-LABEL: v4i32_icmp_ule:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
117 ; SSE2: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
118 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
119 ; SSE2-NEXT: pxor %xmm2, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
120 ; SSE2-NEXT: pxor %xmm2, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
121 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
122 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
123 ; SSE2-NEXT: pxor %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
124 ; SSE2-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
125 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
126 ; SSE41-LABEL: v4i32_icmp_ule:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
127 ; SSE41: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
128 ; SSE41-NEXT: pminud %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
129 ; SSE41-NEXT: pcmpeqd %xmm1, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
130 ; SSE41-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
131 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
132 ; AVX-LABEL: v4i32_icmp_ule:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
133 ; AVX: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
134 ; AVX-NEXT: vpminud %xmm1, %xmm0, %xmm1
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
135 ; AVX-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
136 ; AVX-NEXT: retq
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 %1 = icmp ule <4 x i32> %a, %b
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 %2 = sext <4 x i1> %1 to <4 x i32>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 ret <4 x i32> %2
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 ; At one point we were incorrectly constant-folding a setcc to 0x1 instead of
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 ; 0xff, leading to a constpool load. The instruction doesn't matter here, but it
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 ; should set all bits to 1.
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 define <16 x i8> @test_setcc_constfold_vi8(<16 x i8> %l, <16 x i8> %r) {
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
146 ; SSE-LABEL: test_setcc_constfold_vi8:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
147 ; SSE: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
148 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
149 ; SSE-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
150 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
151 ; AVX-LABEL: test_setcc_constfold_vi8:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
152 ; AVX: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
153 ; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
154 ; AVX-NEXT: retq
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 %test1 = icmp eq <16 x i8> %l, %r
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 %mask1 = sext <16 x i1> %test1 to <16 x i8>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 %test2 = icmp ne <16 x i8> %l, %r
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 %mask2 = sext <16 x i1> %test2 to <16 x i8>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 %res = or <16 x i8> %mask1, %mask2
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 ret <16 x i8> %res
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 ; Make sure sensible results come from doing extension afterwards
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 define <16 x i8> @test_setcc_constfold_vi1(<16 x i8> %l, <16 x i8> %r) {
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
165 ; SSE-LABEL: test_setcc_constfold_vi1:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
166 ; SSE: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
167 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
168 ; SSE-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
169 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
170 ; AVX-LABEL: test_setcc_constfold_vi1:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
171 ; AVX: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
172 ; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
173 ; AVX-NEXT: retq
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 %test1 = icmp eq <16 x i8> %l, %r
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 %test2 = icmp ne <16 x i8> %l, %r
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 %res = or <16 x i1> %test1, %test2
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 %mask = sext <16 x i1> %res to <16 x i8>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 ret <16 x i8> %mask
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 ; 64-bit case is also particularly important, as the constant "-1" is probably
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 ; just 32-bits wide.
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 define <2 x i64> @test_setcc_constfold_vi64(<2 x i64> %l, <2 x i64> %r) {
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
184 ; SSE-LABEL: test_setcc_constfold_vi64:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
185 ; SSE: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
186 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
187 ; SSE-NEXT: retq
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
188 ;
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
189 ; AVX-LABEL: test_setcc_constfold_vi64:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
190 ; AVX: # BB#0:
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
191 ; AVX-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
1172e4bd9c6f update 4.0.0
mir3636
parents: 83
diff changeset
192 ; AVX-NEXT: retq
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 %test1 = icmp eq <2 x i64> %l, %r
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 %mask1 = sext <2 x i1> %test1 to <2 x i64>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 %test2 = icmp ne <2 x i64> %l, %r
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 %mask2 = sext <2 x i1> %test2 to <2 x i64>
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 %res = or <2 x i64> %mask1, %mask2
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 ret <2 x i64> %res
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 }