[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / Hexagon / autohvx / minmax-128b.ll
blobe3f14966be33e9dd66dfa3404705a71157baebf3
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 ; minb
5 ; CHECK: test_00:
6 ; CHECK: v0.b = vmin(v0.b,v1.b)
7 define <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
13 ; CHECK: test_01:
14 ; CHECK: v0.b = vmin(v0.b,v1.b)
15 define <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
21 ; CHECK: test_02:
22 ; CHECK: v0.b = vmin(v0.b,v1.b)
23 define <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
29 ; CHECK: test_03:
30 ; CHECK: v0.b = vmin(v0.b,v1.b)
31 define <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
37 ; maxb
39 ; CHECK: test_04:
40 ; CHECK: v0.b = vmax(v0.b,v1.b)
41 define <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
47 ; CHECK: test_05:
48 ; CHECK: v0.b = vmax(v0.b,v1.b)
49 define <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
55 ; CHECK: test_06:
56 ; CHECK: v0.b = vmax(v0.b,v1.b)
57 define <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
63 ; CHECK: test_07:
64 ; CHECK: v0.b = vmax(v0.b,v1.b)
65 define <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
71 ; minub
73 ; CHECK: test_08:
74 ; CHECK: v0.ub = vmin(v0.ub,v1.ub)
75 define <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
81 ; CHECK: test_09:
82 ; CHECK: v0.ub = vmin(v0.ub,v1.ub)
83 define <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
89 ; CHECK: test_0a:
90 ; CHECK: v0.ub = vmin(v0.ub,v1.ub)
91 define <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
97 ; CHECK: test_0b:
98 ; CHECK: v0.ub = vmin(v0.ub,v1.ub)
99 define <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
105 ; maxub
107 ; CHECK: test_0c:
108 ; CHECK: v0.ub = vmax(v0.ub,v1.ub)
109 define <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
115 ; CHECK: test_0d:
116 ; CHECK: v0.ub = vmax(v0.ub,v1.ub)
117 define <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
123 ; CHECK: test_0e:
124 ; CHECK: v0.ub = vmax(v0.ub,v1.ub)
125 define <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
131 ; CHECK: test_0f:
132 ; CHECK: v0.ub = vmax(v0.ub,v1.ub)
133 define <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
139 ; minh
141 ; CHECK: test_10:
142 ; CHECK: v0.h = vmin(v0.h,v1.h)
143 define <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
149 ; CHECK: test_11:
150 ; CHECK: v0.h = vmin(v0.h,v1.h)
151 define <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
157 ; CHECK: test_12:
158 ; CHECK: v0.h = vmin(v0.h,v1.h)
159 define <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
165 ; CHECK: test_13:
166 ; CHECK: v0.h = vmin(v0.h,v1.h)
167 define <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
173 ; maxh
175 ; CHECK: test_14:
176 ; CHECK: v0.h = vmax(v0.h,v1.h)
177 define <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
183 ; CHECK: test_15:
184 ; CHECK: v0.h = vmax(v0.h,v1.h)
185 define <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
191 ; CHECK: test_16:
192 ; CHECK: v0.h = vmax(v0.h,v1.h)
193 define <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
199 ; CHECK: test_17:
200 ; CHECK: v0.h = vmax(v0.h,v1.h)
201 define <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
207 ; minuh
209 ; CHECK: test_18:
210 ; CHECK: v0.uh = vmin(v0.uh,v1.uh)
211 define <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
217 ; CHECK: test_19:
218 ; CHECK: v0.uh = vmin(v0.uh,v1.uh)
219 define <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
225 ; CHECK: test_1a:
226 ; CHECK: v0.uh = vmin(v0.uh,v1.uh)
227 define <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
233 ; CHECK: test_1b:
234 ; CHECK: v0.uh = vmin(v0.uh,v1.uh)
235 define <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
241 ; maxuh
243 ; CHECK: test_1c:
244 ; CHECK: v0.uh = vmax(v0.uh,v1.uh)
245 define <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
251 ; CHECK: test_1d:
252 ; CHECK: v0.uh = vmax(v0.uh,v1.uh)
253 define <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
259 ; CHECK: test_1e:
260 ; CHECK: v0.uh = vmax(v0.uh,v1.uh)
261 define <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
267 ; CHECK: test_1f:
268 ; CHECK: v0.uh = vmax(v0.uh,v1.uh)
269 define <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
275 ; minw
277 ; CHECK: test_20:
278 ; CHECK: v0.w = vmin(v0.w,v1.w)
279 define <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
285 ; CHECK: test_21:
286 ; CHECK: v0.w = vmin(v0.w,v1.w)
287 define <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
293 ; CHECK: test_22:
294 ; CHECK: v0.w = vmin(v0.w,v1.w)
295 define <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
301 ; CHECK: test_23:
302 ; CHECK: v0.w = vmin(v0.w,v1.w)
303 define <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
309 ; maxw
311 ; CHECK: test_24:
312 ; CHECK: v0.w = vmax(v0.w,v1.w)
313 define <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
319 ; CHECK: test_25:
320 ; CHECK: v0.w = vmax(v0.w,v1.w)
321 define <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
327 ; CHECK: test_26:
328 ; CHECK: v0.w = vmax(v0.w,v1.w)
329 define <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
335 ; CHECK: test_27:
336 ; CHECK: v0.w = vmax(v0.w,v1.w)
337 define <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
343 attributes #0 = { readnone nounwind "target-cpu"="hexagonv62" "target-features"="+hvx,+hvx-length128b" }