[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / Hexagon / vect / setcc-v32.ll
blob9baf9241e3f27097bca9c388d2581830e0eeceab
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 ; CHECK-LABEL: test_00
4 ; CHECK: [[L00:r[0-9:]+]] = vsxtbh(r0)
5 ; CHECK: [[R00:r[0-9:]+]] = vsxtbh(r1)
6 ; CHECK: [[P00:p[0-3]+]] = vcmph.eq([[L00]],[[R00]])
7 ; CHECK-NOT: not([[P00]])
8 define <4 x i8> @test_00(<4 x i8> %a0, <4 x i8> %a1) #0 {
9   %v0 = icmp eq <4 x i8> %a0, %a1
10   %v1 = sext <4 x i1> %v0 to <4 x i8>
11   ret <4 x i8> %v1
14 ; CHECK-LABEL: test_01
15 ; CHECK: [[L01:r[0-9:]+]] = vsxtbh(r0)
16 ; CHECK: [[R01:r[0-9:]+]] = vsxtbh(r1)
17 ; CHECK: [[P01:p[0-3]+]] = vcmph.eq([[L01]],[[R01]])
18 ; CHECK: not([[P01]])
19 define <4 x i8> @test_01(<4 x i8> %a0, <4 x i8> %a1) #0 {
20   %v0 = icmp ne <4 x i8> %a0, %a1
21   %v1 = sext <4 x i1> %v0 to <4 x i8>
22   ret <4 x i8> %v1
25 ; CHECK-LABEL: test_02
26 ; CHECK: [[L02:r[0-9:]+]] = vsxtbh(r0)
27 ; CHECK: [[R02:r[0-9:]+]] = vsxtbh(r1)
28 ; CHECK: [[P02:p[0-3]+]] = vcmph.gt([[R02]],[[L02]])
29 ; CHECK-NOT: not([[P02]])
30 define <4 x i8> @test_02(<4 x i8> %a0, <4 x i8> %a1) #0 {
31   %v0 = icmp slt <4 x i8> %a0, %a1
32   %v1 = sext <4 x i1> %v0 to <4 x i8>
33   ret <4 x i8> %v1
36 ; CHECK-LABEL: test_03
37 ; CHECK: [[L03:r[0-9:]+]] = vsxtbh(r0)
38 ; CHECK: [[R03:r[0-9:]+]] = vsxtbh(r1)
39 ; CHECK: [[P03:p[0-3]+]] = vcmph.gt([[L03]],[[R03]])
40 ; CHECK: not([[P03]])
41 define <4 x i8> @test_03(<4 x i8> %a0, <4 x i8> %a1) #0 {
42   %v0 = icmp sle <4 x i8> %a0, %a1
43   %v1 = sext <4 x i1> %v0 to <4 x i8>
44   ret <4 x i8> %v1
47 ; CHECK-LABEL: test_04
48 ; CHECK: [[L04:r[0-9:]+]] = vsxtbh(r0)
49 ; CHECK: [[R04:r[0-9:]+]] = vsxtbh(r1)
50 ; CHECK: [[P04:p[0-3]+]] = vcmph.gt([[L04]],[[R04]])
51 ; CHECK-NOT: not([[P04]])
52 define <4 x i8> @test_04(<4 x i8> %a0, <4 x i8> %a1) #0 {
53   %v0 = icmp sgt <4 x i8> %a0, %a1
54   %v1 = sext <4 x i1> %v0 to <4 x i8>
55   ret <4 x i8> %v1
58 ; CHECK-LABEL: test_05
59 ; CHECK: [[L05:r[0-9:]+]] = vsxtbh(r0)
60 ; CHECK: [[R05:r[0-9:]+]] = vsxtbh(r1)
61 ; CHECK: [[P05:p[0-3]+]] = vcmph.gt([[R05]],[[L05]])
62 ; CHECK: not([[P05]])
63 define <4 x i8> @test_05(<4 x i8> %a0, <4 x i8> %a1) #0 {
64   %v0 = icmp sge <4 x i8> %a0, %a1
65   %v1 = sext <4 x i1> %v0 to <4 x i8>
66   ret <4 x i8> %v1
69 ; CHECK-LABEL: test_06
70 ; CHECK: [[L06:r[0-9:]+]] = vsxtbh(r0)
71 ; CHECK: [[R06:r[0-9:]+]] = vsxtbh(r1)
72 ; CHECK: [[P06:p[0-3]+]] = vcmph.gtu([[R06]],[[L06]])
73 ; CHECK-NOT: not([[P06]])
74 define <4 x i8> @test_06(<4 x i8> %a0, <4 x i8> %a1) #0 {
75   %v0 = icmp ult <4 x i8> %a0, %a1
76   %v1 = sext <4 x i1> %v0 to <4 x i8>
77   ret <4 x i8> %v1
80 ; CHECK-LABEL: test_07
81 ; CHECK: [[L07:r[0-9:]+]] = vsxtbh(r0)
82 ; CHECK: [[R07:r[0-9:]+]] = vsxtbh(r1)
83 ; CHECK: [[P07:p[0-3]+]] = vcmph.gtu([[L07]],[[R07]])
84 ; CHECK: not([[P07]])
85 define <4 x i8> @test_07(<4 x i8> %a0, <4 x i8> %a1) #0 {
86   %v0 = icmp ule <4 x i8> %a0, %a1
87   %v1 = sext <4 x i1> %v0 to <4 x i8>
88   ret <4 x i8> %v1
91 ; CHECK-LABEL: test_08
92 ; CHECK: [[L08:r[0-9:]+]] = vsxtbh(r0)
93 ; CHECK: [[R08:r[0-9:]+]] = vsxtbh(r1)
94 ; CHECK: [[P08:p[0-3]+]] = vcmph.gtu([[L08]],[[R08]])
95 ; CHECK-NOT: not([[P08]])
96 define <4 x i8> @test_08(<4 x i8> %a0, <4 x i8> %a1) #0 {
97   %v0 = icmp ugt <4 x i8> %a0, %a1
98   %v1 = sext <4 x i1> %v0 to <4 x i8>
99   ret <4 x i8> %v1
102 ; CHECK-LABEL: test_09
103 ; CHECK: [[L09:r[0-9:]+]] = vsxtbh(r0)
104 ; CHECK: [[R09:r[0-9:]+]] = vsxtbh(r1)
105 ; CHECK: [[P09:p[0-3]+]] = vcmph.gtu([[R09]],[[L09]])
106 ; CHECK: not([[P09]])
107 define <4 x i8> @test_09(<4 x i8> %a0, <4 x i8> %a1) #0 {
108   %v0 = icmp uge <4 x i8> %a0, %a1
109   %v1 = sext <4 x i1> %v0 to <4 x i8>
110   ret <4 x i8> %v1
114 ; CHECK-LABEL: test_10
115 ; CHECK: [[L10:r[0-9:]+]] = vsxthw(r0)
116 ; CHECK: [[R10:r[0-9:]+]] = vsxthw(r1)
117 ; CHECK: [[P10:p[0-3]+]] = vcmpw.eq([[L10]],[[R10]])
118 ; CHECK-NOT: not([[P10]])
119 define <2 x i16> @test_10(<2 x i16> %a0, <2 x i16> %a1) #0 {
120   %v0 = icmp eq <2 x i16> %a0, %a1
121   %v1 = sext <2 x i1> %v0 to <2 x i16>
122   ret <2 x i16> %v1
125 ; CHECK-LABEL: test_11
126 ; CHECK: [[L11:r[0-9:]+]] = vsxthw(r0)
127 ; CHECK: [[R11:r[0-9:]+]] = vsxthw(r1)
128 ; CHECK: [[P11:p[0-3]+]] = vcmpw.eq([[L11]],[[R11]])
129 ; CHECK: not([[P11]])
130 define <2 x i16> @test_11(<2 x i16> %a0, <2 x i16> %a1) #0 {
131   %v0 = icmp ne <2 x i16> %a0, %a1
132   %v1 = sext <2 x i1> %v0 to <2 x i16>
133   ret <2 x i16> %v1
136 ; CHECK-LABEL: test_12
137 ; CHECK: [[L12:r[0-9:]+]] = vsxthw(r0)
138 ; CHECK: [[R12:r[0-9:]+]] = vsxthw(r1)
139 ; CHECK: [[P12:p[0-3]+]] = vcmpw.gt([[R12]],[[L12]])
140 ; CHECK-NOT: not([[P12]])
141 define <2 x i16> @test_12(<2 x i16> %a0, <2 x i16> %a1) #0 {
142   %v0 = icmp slt <2 x i16> %a0, %a1
143   %v1 = sext <2 x i1> %v0 to <2 x i16>
144   ret <2 x i16> %v1
147 ; CHECK-LABEL: test_13
148 ; CHECK: [[L13:r[0-9:]+]] = vsxthw(r0)
149 ; CHECK: [[R13:r[0-9:]+]] = vsxthw(r1)
150 ; CHECK: [[P13:p[0-3]+]] = vcmpw.gt([[L13]],[[R13]])
151 ; CHECK: not([[P13]])
152 define <2 x i16> @test_13(<2 x i16> %a0, <2 x i16> %a1) #0 {
153   %v0 = icmp sle <2 x i16> %a0, %a1
154   %v1 = sext <2 x i1> %v0 to <2 x i16>
155   ret <2 x i16> %v1
158 ; CHECK-LABEL: test_14
159 ; CHECK: [[L14:r[0-9:]+]] = vsxthw(r0)
160 ; CHECK: [[R14:r[0-9:]+]] = vsxthw(r1)
161 ; CHECK: [[P14:p[0-3]+]] = vcmpw.gt([[L14]],[[R14]])
162 ; CHECK-NOT: not([[P14]])
163 define <2 x i16> @test_14(<2 x i16> %a0, <2 x i16> %a1) #0 {
164   %v0 = icmp sgt <2 x i16> %a0, %a1
165   %v1 = sext <2 x i1> %v0 to <2 x i16>
166   ret <2 x i16> %v1
169 ; CHECK-LABEL: test_15
170 ; CHECK: [[L15:r[0-9:]+]] = vsxthw(r0)
171 ; CHECK: [[R15:r[0-9:]+]] = vsxthw(r1)
172 ; CHECK: [[P15:p[0-3]+]] = vcmpw.gt([[R15]],[[L15]])
173 ; CHECK: not([[P15]])
174 define <2 x i16> @test_15(<2 x i16> %a0, <2 x i16> %a1) #0 {
175   %v0 = icmp sge <2 x i16> %a0, %a1
176   %v1 = sext <2 x i1> %v0 to <2 x i16>
177   ret <2 x i16> %v1
180 ; CHECK-LABEL: test_16
181 ; CHECK: [[L16:r[0-9:]+]] = vsxthw(r0)
182 ; CHECK: [[R16:r[0-9:]+]] = vsxthw(r1)
183 ; CHECK: [[P16:p[0-3]+]] = vcmpw.gtu([[R16]],[[L16]])
184 ; CHECK-NOT: not([[P16]])
185 define <2 x i16> @test_16(<2 x i16> %a0, <2 x i16> %a1) #0 {
186   %v0 = icmp ult <2 x i16> %a0, %a1
187   %v1 = sext <2 x i1> %v0 to <2 x i16>
188   ret <2 x i16> %v1
191 ; CHECK-LABEL: test_17
192 ; CHECK: [[L17:r[0-9:]+]] = vsxthw(r0)
193 ; CHECK: [[R17:r[0-9:]+]] = vsxthw(r1)
194 ; CHECK: [[P17:p[0-3]+]] = vcmpw.gtu([[L17]],[[R17]])
195 ; CHECK: not([[P17]])
196 define <2 x i16> @test_17(<2 x i16> %a0, <2 x i16> %a1) #0 {
197   %v0 = icmp ule <2 x i16> %a0, %a1
198   %v1 = sext <2 x i1> %v0 to <2 x i16>
199   ret <2 x i16> %v1
202 ; CHECK-LABEL: test_18
203 ; CHECK: [[L18:r[0-9:]+]] = vsxthw(r0)
204 ; CHECK: [[R18:r[0-9:]+]] = vsxthw(r1)
205 ; CHECK: [[P18:p[0-3]+]] = vcmpw.gtu([[L18]],[[R18]])
206 ; CHECK-NOT: not([[P18]])
207 define <2 x i16> @test_18(<2 x i16> %a0, <2 x i16> %a1) #0 {
208   %v0 = icmp ugt <2 x i16> %a0, %a1
209   %v1 = sext <2 x i1> %v0 to <2 x i16>
210   ret <2 x i16> %v1
213 ; CHECK-LABEL: test_19
214 ; CHECK: [[L19:r[0-9:]+]] = vsxthw(r0)
215 ; CHECK: [[R19:r[0-9:]+]] = vsxthw(r1)
216 ; CHECK: [[P19:p[0-3]+]] = vcmpw.gtu([[R19]],[[L19]])
217 ; CHECK: not([[P19]])
218 define <2 x i16> @test_19(<2 x i16> %a0, <2 x i16> %a1) #0 {
219   %v0 = icmp uge <2 x i16> %a0, %a1
220   %v1 = sext <2 x i1> %v0 to <2 x i16>
221   ret <2 x i16> %v1
224 attributes #0 = { nounwind readnone }