• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -march=hexagon < %s | FileCheck %s
2
3; minb
4
5; CHECK: test_00:
6; CHECK: v0.b = vmin(v0.b,v1.b)
7define <128 x i8> @test_00(<128 x i8> %v0, <128 x i8> %v1) #0 {
8  %t0 = icmp slt <128 x i8> %v0, %v1
9  %t1 = select <128 x i1> %t0, <128 x i8> %v0, <128 x i8> %v1
10  ret <128 x i8> %t1
11}
12
13; CHECK: test_01:
14; CHECK: v0.b = vmin(v0.b,v1.b)
15define <128 x i8> @test_01(<128 x i8> %v0, <128 x i8> %v1) #0 {
16  %t0 = icmp sle <128 x i8> %v0, %v1
17  %t1 = select <128 x i1> %t0, <128 x i8> %v0, <128 x i8> %v1
18  ret <128 x i8> %t1
19}
20
21; CHECK: test_02:
22; CHECK: v0.b = vmin(v0.b,v1.b)
23define <128 x i8> @test_02(<128 x i8> %v0, <128 x i8> %v1) #0 {
24  %t0 = icmp sgt <128 x i8> %v0, %v1
25  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v0
26  ret <128 x i8> %t1
27}
28
29; CHECK: test_03:
30; CHECK: v0.b = vmin(v0.b,v1.b)
31define <128 x i8> @test_03(<128 x i8> %v0, <128 x i8> %v1) #0 {
32  %t0 = icmp sge <128 x i8> %v0, %v1
33  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v0
34  ret <128 x i8> %t1
35}
36
37; maxb
38
39; CHECK: test_04:
40; CHECK: v0.b = vmax(v0.b,v1.b)
41define <128 x i8> @test_04(<128 x i8> %v0, <128 x i8> %v1) #0 {
42  %t0 = icmp slt <128 x i8> %v0, %v1
43  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v0
44  ret <128 x i8> %t1
45}
46
47; CHECK: test_05:
48; CHECK: v0.b = vmax(v0.b,v1.b)
49define <128 x i8> @test_05(<128 x i8> %v0, <128 x i8> %v1) #0 {
50  %t0 = icmp sle <128 x i8> %v0, %v1
51  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v0
52  ret <128 x i8> %t1
53}
54
55; CHECK: test_06:
56; CHECK: v0.b = vmax(v0.b,v1.b)
57define <128 x i8> @test_06(<128 x i8> %v0, <128 x i8> %v1) #0 {
58  %t0 = icmp sgt <128 x i8> %v0, %v1
59  %t1 = select <128 x i1> %t0, <128 x i8> %v0, <128 x i8> %v1
60  ret <128 x i8> %t1
61}
62
63; CHECK: test_07:
64; CHECK: v0.b = vmax(v0.b,v1.b)
65define <128 x i8> @test_07(<128 x i8> %v0, <128 x i8> %v1) #0 {
66  %t0 = icmp sge <128 x i8> %v0, %v1
67  %t1 = select <128 x i1> %t0, <128 x i8> %v0, <128 x i8> %v1
68  ret <128 x i8> %t1
69}
70
71; minub
72
73; CHECK: test_08:
74; CHECK: v0.ub = vmin(v0.ub,v1.ub)
75define <128 x i8> @test_08(<128 x i8> %v0, <128 x i8> %v1) #0 {
76  %t0 = icmp ult <128 x i8> %v0, %v1
77  %t1 = select <128 x i1> %t0, <128 x i8> %v0, <128 x i8> %v1
78  ret <128 x i8> %t1
79}
80
81; CHECK: test_09:
82; CHECK: v0.ub = vmin(v0.ub,v1.ub)
83define <128 x i8> @test_09(<128 x i8> %v0, <128 x i8> %v1) #0 {
84  %t0 = icmp ule <128 x i8> %v0, %v1
85  %t1 = select <128 x i1> %t0, <128 x i8> %v0, <128 x i8> %v1
86  ret <128 x i8> %t1
87}
88
89; CHECK: test_0a:
90; CHECK: v0.ub = vmin(v0.ub,v1.ub)
91define <128 x i8> @test_0a(<128 x i8> %v0, <128 x i8> %v1) #0 {
92  %t0 = icmp ugt <128 x i8> %v0, %v1
93  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v0
94  ret <128 x i8> %t1
95}
96
97; CHECK: test_0b:
98; CHECK: v0.ub = vmin(v0.ub,v1.ub)
99define <128 x i8> @test_0b(<128 x i8> %v0, <128 x i8> %v1) #0 {
100  %t0 = icmp uge <128 x i8> %v0, %v1
101  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v0
102  ret <128 x i8> %t1
103}
104
105; maxub
106
107; CHECK: test_0c:
108; CHECK: v0.ub = vmax(v0.ub,v1.ub)
109define <128 x i8> @test_0c(<128 x i8> %v0, <128 x i8> %v1) #0 {
110  %t0 = icmp ult <128 x i8> %v0, %v1
111  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v0
112  ret <128 x i8> %t1
113}
114
115; CHECK: test_0d:
116; CHECK: v0.ub = vmax(v0.ub,v1.ub)
117define <128 x i8> @test_0d(<128 x i8> %v0, <128 x i8> %v1) #0 {
118  %t0 = icmp ule <128 x i8> %v0, %v1
119  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v0
120  ret <128 x i8> %t1
121}
122
123; CHECK: test_0e:
124; CHECK: v0.ub = vmax(v0.ub,v1.ub)
125define <128 x i8> @test_0e(<128 x i8> %v0, <128 x i8> %v1) #0 {
126  %t0 = icmp ugt <128 x i8> %v0, %v1
127  %t1 = select <128 x i1> %t0, <128 x i8> %v0, <128 x i8> %v1
128  ret <128 x i8> %t1
129}
130
131; CHECK: test_0f:
132; CHECK: v0.ub = vmax(v0.ub,v1.ub)
133define <128 x i8> @test_0f(<128 x i8> %v0, <128 x i8> %v1) #0 {
134  %t0 = icmp uge <128 x i8> %v0, %v1
135  %t1 = select <128 x i1> %t0, <128 x i8> %v0, <128 x i8> %v1
136  ret <128 x i8> %t1
137}
138
139; minh
140
141; CHECK: test_10:
142; CHECK: v0.h = vmin(v0.h,v1.h)
143define <64 x i16> @test_10(<64 x i16> %v0, <64 x i16> %v1) #0 {
144  %t0 = icmp slt <64 x i16> %v0, %v1
145  %t1 = select <64 x i1> %t0, <64 x i16> %v0, <64 x i16> %v1
146  ret <64 x i16> %t1
147}
148
149; CHECK: test_11:
150; CHECK: v0.h = vmin(v0.h,v1.h)
151define <64 x i16> @test_11(<64 x i16> %v0, <64 x i16> %v1) #0 {
152  %t0 = icmp sle <64 x i16> %v0, %v1
153  %t1 = select <64 x i1> %t0, <64 x i16> %v0, <64 x i16> %v1
154  ret <64 x i16> %t1
155}
156
157; CHECK: test_12:
158; CHECK: v0.h = vmin(v0.h,v1.h)
159define <64 x i16> @test_12(<64 x i16> %v0, <64 x i16> %v1) #0 {
160  %t0 = icmp sgt <64 x i16> %v0, %v1
161  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v0
162  ret <64 x i16> %t1
163}
164
165; CHECK: test_13:
166; CHECK: v0.h = vmin(v0.h,v1.h)
167define <64 x i16> @test_13(<64 x i16> %v0, <64 x i16> %v1) #0 {
168  %t0 = icmp sge <64 x i16> %v0, %v1
169  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v0
170  ret <64 x i16> %t1
171}
172
173; maxh
174
175; CHECK: test_14:
176; CHECK: v0.h = vmax(v0.h,v1.h)
177define <64 x i16> @test_14(<64 x i16> %v0, <64 x i16> %v1) #0 {
178  %t0 = icmp slt <64 x i16> %v0, %v1
179  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v0
180  ret <64 x i16> %t1
181}
182
183; CHECK: test_15:
184; CHECK: v0.h = vmax(v0.h,v1.h)
185define <64 x i16> @test_15(<64 x i16> %v0, <64 x i16> %v1) #0 {
186  %t0 = icmp sle <64 x i16> %v0, %v1
187  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v0
188  ret <64 x i16> %t1
189}
190
191; CHECK: test_16:
192; CHECK: v0.h = vmax(v0.h,v1.h)
193define <64 x i16> @test_16(<64 x i16> %v0, <64 x i16> %v1) #0 {
194  %t0 = icmp sgt <64 x i16> %v0, %v1
195  %t1 = select <64 x i1> %t0, <64 x i16> %v0, <64 x i16> %v1
196  ret <64 x i16> %t1
197}
198
199; CHECK: test_17:
200; CHECK: v0.h = vmax(v0.h,v1.h)
201define <64 x i16> @test_17(<64 x i16> %v0, <64 x i16> %v1) #0 {
202  %t0 = icmp sge <64 x i16> %v0, %v1
203  %t1 = select <64 x i1> %t0, <64 x i16> %v0, <64 x i16> %v1
204  ret <64 x i16> %t1
205}
206
207; minuh
208
209; CHECK: test_18:
210; CHECK: v0.uh = vmin(v0.uh,v1.uh)
211define <64 x i16> @test_18(<64 x i16> %v0, <64 x i16> %v1) #0 {
212  %t0 = icmp ult <64 x i16> %v0, %v1
213  %t1 = select <64 x i1> %t0, <64 x i16> %v0, <64 x i16> %v1
214  ret <64 x i16> %t1
215}
216
217; CHECK: test_19:
218; CHECK: v0.uh = vmin(v0.uh,v1.uh)
219define <64 x i16> @test_19(<64 x i16> %v0, <64 x i16> %v1) #0 {
220  %t0 = icmp ule <64 x i16> %v0, %v1
221  %t1 = select <64 x i1> %t0, <64 x i16> %v0, <64 x i16> %v1
222  ret <64 x i16> %t1
223}
224
225; CHECK: test_1a:
226; CHECK: v0.uh = vmin(v0.uh,v1.uh)
227define <64 x i16> @test_1a(<64 x i16> %v0, <64 x i16> %v1) #0 {
228  %t0 = icmp ugt <64 x i16> %v0, %v1
229  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v0
230  ret <64 x i16> %t1
231}
232
233; CHECK: test_1b:
234; CHECK: v0.uh = vmin(v0.uh,v1.uh)
235define <64 x i16> @test_1b(<64 x i16> %v0, <64 x i16> %v1) #0 {
236  %t0 = icmp uge <64 x i16> %v0, %v1
237  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v0
238  ret <64 x i16> %t1
239}
240
241; maxuh
242
243; CHECK: test_1c:
244; CHECK: v0.uh = vmax(v0.uh,v1.uh)
245define <64 x i16> @test_1c(<64 x i16> %v0, <64 x i16> %v1) #0 {
246  %t0 = icmp ult <64 x i16> %v0, %v1
247  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v0
248  ret <64 x i16> %t1
249}
250
251; CHECK: test_1d:
252; CHECK: v0.uh = vmax(v0.uh,v1.uh)
253define <64 x i16> @test_1d(<64 x i16> %v0, <64 x i16> %v1) #0 {
254  %t0 = icmp ule <64 x i16> %v0, %v1
255  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v0
256  ret <64 x i16> %t1
257}
258
259; CHECK: test_1e:
260; CHECK: v0.uh = vmax(v0.uh,v1.uh)
261define <64 x i16> @test_1e(<64 x i16> %v0, <64 x i16> %v1) #0 {
262  %t0 = icmp ugt <64 x i16> %v0, %v1
263  %t1 = select <64 x i1> %t0, <64 x i16> %v0, <64 x i16> %v1
264  ret <64 x i16> %t1
265}
266
267; CHECK: test_1f:
268; CHECK: v0.uh = vmax(v0.uh,v1.uh)
269define <64 x i16> @test_1f(<64 x i16> %v0, <64 x i16> %v1) #0 {
270  %t0 = icmp uge <64 x i16> %v0, %v1
271  %t1 = select <64 x i1> %t0, <64 x i16> %v0, <64 x i16> %v1
272  ret <64 x i16> %t1
273}
274
275; minw
276
277; CHECK: test_20:
278; CHECK: v0.w = vmin(v0.w,v1.w)
279define <32 x i32> @test_20(<32 x i32> %v0, <32 x i32> %v1) #0 {
280  %t0 = icmp slt <32 x i32> %v0, %v1
281  %t1 = select <32 x i1> %t0, <32 x i32> %v0, <32 x i32> %v1
282  ret <32 x i32> %t1
283}
284
285; CHECK: test_21:
286; CHECK: v0.w = vmin(v0.w,v1.w)
287define <32 x i32> @test_21(<32 x i32> %v0, <32 x i32> %v1) #0 {
288  %t0 = icmp sle <32 x i32> %v0, %v1
289  %t1 = select <32 x i1> %t0, <32 x i32> %v0, <32 x i32> %v1
290  ret <32 x i32> %t1
291}
292
293; CHECK: test_22:
294; CHECK: v0.w = vmin(v0.w,v1.w)
295define <32 x i32> @test_22(<32 x i32> %v0, <32 x i32> %v1) #0 {
296  %t0 = icmp sgt <32 x i32> %v0, %v1
297  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v0
298  ret <32 x i32> %t1
299}
300
301; CHECK: test_23:
302; CHECK: v0.w = vmin(v0.w,v1.w)
303define <32 x i32> @test_23(<32 x i32> %v0, <32 x i32> %v1) #0 {
304  %t0 = icmp sge <32 x i32> %v0, %v1
305  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v0
306  ret <32 x i32> %t1
307}
308
309; maxw
310
311; CHECK: test_24:
312; CHECK: v0.w = vmax(v0.w,v1.w)
313define <32 x i32> @test_24(<32 x i32> %v0, <32 x i32> %v1) #0 {
314  %t0 = icmp slt <32 x i32> %v0, %v1
315  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v0
316  ret <32 x i32> %t1
317}
318
319; CHECK: test_25:
320; CHECK: v0.w = vmax(v0.w,v1.w)
321define <32 x i32> @test_25(<32 x i32> %v0, <32 x i32> %v1) #0 {
322  %t0 = icmp sle <32 x i32> %v0, %v1
323  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v0
324  ret <32 x i32> %t1
325}
326
327; CHECK: test_26:
328; CHECK: v0.w = vmax(v0.w,v1.w)
329define <32 x i32> @test_26(<32 x i32> %v0, <32 x i32> %v1) #0 {
330  %t0 = icmp sgt <32 x i32> %v0, %v1
331  %t1 = select <32 x i1> %t0, <32 x i32> %v0, <32 x i32> %v1
332  ret <32 x i32> %t1
333}
334
335; CHECK: test_27:
336; CHECK: v0.w = vmax(v0.w,v1.w)
337define <32 x i32> @test_27(<32 x i32> %v0, <32 x i32> %v1) #0 {
338  %t0 = icmp sge <32 x i32> %v0, %v1
339  %t1 = select <32 x i1> %t0, <32 x i32> %v0, <32 x i32> %v1
340  ret <32 x i32> %t1
341}
342
343attributes #0 = { readnone nounwind "target-cpu"="hexagonv62" "target-features"="+hvx,+hvx-length128b" }
344
345