xref: /llvm-project/llvm/test/CodeGen/ARM/minmax.ll (revision ad1b19fcb718b1010aaab492e3cab80ab7a71406)
1*ad1b19fcSSilviu Baranga; RUN: llc < %s -mtriple=armv8-linux-gnu -mattr=+neon | FileCheck %s
2*ad1b19fcSSilviu Baranga
3*ad1b19fcSSilviu Baranga; CHECK-LABEL: t1
4*ad1b19fcSSilviu Baranga; CHECK: vmax.s32 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
5*ad1b19fcSSilviu Barangadefine <4 x i32> @t1(<4 x i32> %a, <4 x i32> %b) {
6*ad1b19fcSSilviu Baranga  %t1 = icmp sgt <4 x i32> %a, %b
7*ad1b19fcSSilviu Baranga  %t2 = select <4 x i1> %t1, <4 x i32> %a, <4 x i32> %b
8*ad1b19fcSSilviu Baranga  ret <4 x i32> %t2
9*ad1b19fcSSilviu Baranga}
10*ad1b19fcSSilviu Baranga
11*ad1b19fcSSilviu Baranga; CHECK-LABEL: t2
12*ad1b19fcSSilviu Baranga; CHECK: vmin.s32 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
13*ad1b19fcSSilviu Barangadefine <4 x i32> @t2(<4 x i32> %a, <4 x i32> %b) {
14*ad1b19fcSSilviu Baranga  %t1 = icmp slt <4 x i32> %a, %b
15*ad1b19fcSSilviu Baranga  %t2 = select <4 x i1> %t1, <4 x i32> %a, <4 x i32> %b
16*ad1b19fcSSilviu Baranga  ret <4 x i32> %t2
17*ad1b19fcSSilviu Baranga}
18*ad1b19fcSSilviu Baranga
19*ad1b19fcSSilviu Baranga; CHECK-LABEL: t3
20*ad1b19fcSSilviu Baranga; CHECK: vmax.u32 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
21*ad1b19fcSSilviu Barangadefine <4 x i32> @t3(<4 x i32> %a, <4 x i32> %b) {
22*ad1b19fcSSilviu Baranga  %t1 = icmp ugt <4 x i32> %a, %b
23*ad1b19fcSSilviu Baranga  %t2 = select <4 x i1> %t1, <4 x i32> %a, <4 x i32> %b
24*ad1b19fcSSilviu Baranga  ret <4 x i32> %t2
25*ad1b19fcSSilviu Baranga}
26*ad1b19fcSSilviu Baranga
27*ad1b19fcSSilviu Baranga; CHECK-LABEL: t4
28*ad1b19fcSSilviu Baranga; CHECK: vmin.u32 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
29*ad1b19fcSSilviu Barangadefine <4 x i32> @t4(<4 x i32> %a, <4 x i32> %b) {
30*ad1b19fcSSilviu Baranga  %t1 = icmp ult <4 x i32> %a, %b
31*ad1b19fcSSilviu Baranga  %t2 = select <4 x i1> %t1, <4 x i32> %a, <4 x i32> %b
32*ad1b19fcSSilviu Baranga  ret <4 x i32> %t2
33*ad1b19fcSSilviu Baranga}
34*ad1b19fcSSilviu Baranga
35*ad1b19fcSSilviu Baranga; CHECK-LABEL: t5
36*ad1b19fcSSilviu Baranga; CHECK: vmax.s32 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
37*ad1b19fcSSilviu Barangadefine <2 x i32> @t5(<2 x i32> %a, <2 x i32> %b) {
38*ad1b19fcSSilviu Baranga  %t1 = icmp sgt <2 x i32> %a, %b
39*ad1b19fcSSilviu Baranga  %t2 = select <2 x i1> %t1, <2 x i32> %a, <2 x i32> %b
40*ad1b19fcSSilviu Baranga  ret <2 x i32> %t2
41*ad1b19fcSSilviu Baranga}
42*ad1b19fcSSilviu Baranga
43*ad1b19fcSSilviu Baranga; CHECK-LABEL: t6
44*ad1b19fcSSilviu Baranga; CHECK: vmin.s32 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
45*ad1b19fcSSilviu Barangadefine <2 x i32> @t6(<2 x i32> %a, <2 x i32> %b) {
46*ad1b19fcSSilviu Baranga  %t1 = icmp slt <2 x i32> %a, %b
47*ad1b19fcSSilviu Baranga  %t2 = select <2 x i1> %t1, <2 x i32> %a, <2 x i32> %b
48*ad1b19fcSSilviu Baranga  ret <2 x i32> %t2
49*ad1b19fcSSilviu Baranga}
50*ad1b19fcSSilviu Baranga
51*ad1b19fcSSilviu Baranga; CHECK-LABEL: t7
52*ad1b19fcSSilviu Baranga; CHECK: vmax.u32 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
53*ad1b19fcSSilviu Barangadefine <2 x i32> @t7(<2 x i32> %a, <2 x i32> %b) {
54*ad1b19fcSSilviu Baranga  %t1 = icmp ugt <2 x i32> %a, %b
55*ad1b19fcSSilviu Baranga  %t2 = select <2 x i1> %t1, <2 x i32> %a, <2 x i32> %b
56*ad1b19fcSSilviu Baranga  ret <2 x i32> %t2
57*ad1b19fcSSilviu Baranga}
58*ad1b19fcSSilviu Baranga
59*ad1b19fcSSilviu Baranga; CHECK-LABEL: t8
60*ad1b19fcSSilviu Baranga; CHECK: vmin.u32 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
61*ad1b19fcSSilviu Barangadefine <2 x i32> @t8(<2 x i32> %a, <2 x i32> %b) {
62*ad1b19fcSSilviu Baranga  %t1 = icmp ult <2 x i32> %a, %b
63*ad1b19fcSSilviu Baranga  %t2 = select <2 x i1> %t1, <2 x i32> %a, <2 x i32> %b
64*ad1b19fcSSilviu Baranga  ret <2 x i32> %t2
65*ad1b19fcSSilviu Baranga}
66*ad1b19fcSSilviu Baranga
67*ad1b19fcSSilviu Baranga; CHECK-LABEL: t9
68*ad1b19fcSSilviu Baranga; CHECK: vmax.s16 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
69*ad1b19fcSSilviu Barangadefine <8 x i16> @t9(<8 x i16> %a, <8 x i16> %b) {
70*ad1b19fcSSilviu Baranga  %t1 = icmp sgt <8 x i16> %a, %b
71*ad1b19fcSSilviu Baranga  %t2 = select <8 x i1> %t1, <8 x i16> %a, <8 x i16> %b
72*ad1b19fcSSilviu Baranga  ret <8 x i16> %t2
73*ad1b19fcSSilviu Baranga}
74*ad1b19fcSSilviu Baranga
75*ad1b19fcSSilviu Baranga; CHECK-LABEL: t10
76*ad1b19fcSSilviu Baranga; CHECK: vmin.s16 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
77*ad1b19fcSSilviu Barangadefine <8 x i16> @t10(<8 x i16> %a, <8 x i16> %b) {
78*ad1b19fcSSilviu Baranga  %t1 = icmp slt <8 x i16> %a, %b
79*ad1b19fcSSilviu Baranga  %t2 = select <8 x i1> %t1, <8 x i16> %a, <8 x i16> %b
80*ad1b19fcSSilviu Baranga  ret <8 x i16> %t2
81*ad1b19fcSSilviu Baranga}
82*ad1b19fcSSilviu Baranga
83*ad1b19fcSSilviu Baranga; CHECK-LABEL: t11
84*ad1b19fcSSilviu Baranga; CHECK: vmax.u16 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
85*ad1b19fcSSilviu Barangadefine <8 x i16> @t11(<8 x i16> %a, <8 x i16> %b) {
86*ad1b19fcSSilviu Baranga  %t1 = icmp ugt <8 x i16> %a, %b
87*ad1b19fcSSilviu Baranga  %t2 = select <8 x i1> %t1, <8 x i16> %a, <8 x i16> %b
88*ad1b19fcSSilviu Baranga  ret <8 x i16> %t2
89*ad1b19fcSSilviu Baranga}
90*ad1b19fcSSilviu Baranga
91*ad1b19fcSSilviu Baranga; CHECK-LABEL: t12
92*ad1b19fcSSilviu Baranga; CHECK: vmin.u16 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
93*ad1b19fcSSilviu Barangadefine <8 x i16> @t12(<8 x i16> %a, <8 x i16> %b) {
94*ad1b19fcSSilviu Baranga  %t1 = icmp ult <8 x i16> %a, %b
95*ad1b19fcSSilviu Baranga  %t2 = select <8 x i1> %t1, <8 x i16> %a, <8 x i16> %b
96*ad1b19fcSSilviu Baranga  ret <8 x i16> %t2
97*ad1b19fcSSilviu Baranga}
98*ad1b19fcSSilviu Baranga
99*ad1b19fcSSilviu Baranga; CHECK-LABEL: t13
100*ad1b19fcSSilviu Baranga; CHECK: vmax.s16
101*ad1b19fcSSilviu Barangadefine <4 x i16> @t13(<4 x i16> %a, <4 x i16> %b) {
102*ad1b19fcSSilviu Baranga  %t1 = icmp sgt <4 x i16> %a, %b
103*ad1b19fcSSilviu Baranga  %t2 = select <4 x i1> %t1, <4 x i16> %a, <4 x i16> %b
104*ad1b19fcSSilviu Baranga  ret <4 x i16> %t2
105*ad1b19fcSSilviu Baranga}
106*ad1b19fcSSilviu Baranga
107*ad1b19fcSSilviu Baranga; CHECK-LABEL: t14
108*ad1b19fcSSilviu Baranga; CHECK: vmin.s16 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
109*ad1b19fcSSilviu Barangadefine <4 x i16> @t14(<4 x i16> %a, <4 x i16> %b) {
110*ad1b19fcSSilviu Baranga  %t1 = icmp slt <4 x i16> %a, %b
111*ad1b19fcSSilviu Baranga  %t2 = select <4 x i1> %t1, <4 x i16> %a, <4 x i16> %b
112*ad1b19fcSSilviu Baranga  ret <4 x i16> %t2
113*ad1b19fcSSilviu Baranga}
114*ad1b19fcSSilviu Baranga
115*ad1b19fcSSilviu Baranga; CHECK-LABEL: t15
116*ad1b19fcSSilviu Baranga; CHECK: vmax.u16 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
117*ad1b19fcSSilviu Barangadefine <4 x i16> @t15(<4 x i16> %a, <4 x i16> %b) {
118*ad1b19fcSSilviu Baranga  %t1 = icmp ugt <4 x i16> %a, %b
119*ad1b19fcSSilviu Baranga  %t2 = select <4 x i1> %t1, <4 x i16> %a, <4 x i16> %b
120*ad1b19fcSSilviu Baranga  ret <4 x i16> %t2
121*ad1b19fcSSilviu Baranga}
122*ad1b19fcSSilviu Baranga
123*ad1b19fcSSilviu Baranga; CHECK-LABEL: t16
124*ad1b19fcSSilviu Baranga; CHECK: vmin.u16 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
125*ad1b19fcSSilviu Barangadefine <4 x i16> @t16(<4 x i16> %a, <4 x i16> %b) {
126*ad1b19fcSSilviu Baranga  %t1 = icmp ult <4 x i16> %a, %b
127*ad1b19fcSSilviu Baranga  %t2 = select <4 x i1> %t1, <4 x i16> %a, <4 x i16> %b
128*ad1b19fcSSilviu Baranga  ret <4 x i16> %t2
129*ad1b19fcSSilviu Baranga}
130*ad1b19fcSSilviu Baranga
131*ad1b19fcSSilviu Baranga; CHECK-LABEL: t17
132*ad1b19fcSSilviu Baranga; CHECK: vmax.s8 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
133*ad1b19fcSSilviu Barangadefine <16 x i8> @t17(<16 x i8> %a, <16 x i8> %b) {
134*ad1b19fcSSilviu Baranga  %t1 = icmp sgt <16 x i8> %a, %b
135*ad1b19fcSSilviu Baranga  %t2 = select <16 x i1> %t1, <16 x i8> %a, <16 x i8> %b
136*ad1b19fcSSilviu Baranga  ret <16 x i8> %t2
137*ad1b19fcSSilviu Baranga}
138*ad1b19fcSSilviu Baranga
139*ad1b19fcSSilviu Baranga; CHECK-LABEL: t18
140*ad1b19fcSSilviu Baranga; CHECK: vmin.s8 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
141*ad1b19fcSSilviu Barangadefine <16 x i8> @t18(<16 x i8> %a, <16 x i8> %b) {
142*ad1b19fcSSilviu Baranga  %t1 = icmp slt <16 x i8> %a, %b
143*ad1b19fcSSilviu Baranga  %t2 = select <16 x i1> %t1, <16 x i8> %a, <16 x i8> %b
144*ad1b19fcSSilviu Baranga  ret <16 x i8> %t2
145*ad1b19fcSSilviu Baranga}
146*ad1b19fcSSilviu Baranga
147*ad1b19fcSSilviu Baranga; CHECK-LABEL: t19
148*ad1b19fcSSilviu Baranga; CHECK: vmax.u8 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
149*ad1b19fcSSilviu Barangadefine <16 x i8> @t19(<16 x i8> %a, <16 x i8> %b) {
150*ad1b19fcSSilviu Baranga  %t1 = icmp ugt <16 x i8> %a, %b
151*ad1b19fcSSilviu Baranga  %t2 = select <16 x i1> %t1, <16 x i8> %a, <16 x i8> %b
152*ad1b19fcSSilviu Baranga  ret <16 x i8> %t2
153*ad1b19fcSSilviu Baranga}
154*ad1b19fcSSilviu Baranga
155*ad1b19fcSSilviu Baranga; CHECK-LABEL: t20
156*ad1b19fcSSilviu Baranga; CHECK: vmin.u8 {{q[0-9]+}}, {{q[0-9]+}}, {{q[0-9]+}}
157*ad1b19fcSSilviu Barangadefine <16 x i8> @t20(<16 x i8> %a, <16 x i8> %b) {
158*ad1b19fcSSilviu Baranga  %t1 = icmp ult <16 x i8> %a, %b
159*ad1b19fcSSilviu Baranga  %t2 = select <16 x i1> %t1, <16 x i8> %a, <16 x i8> %b
160*ad1b19fcSSilviu Baranga  ret <16 x i8> %t2
161*ad1b19fcSSilviu Baranga}
162*ad1b19fcSSilviu Baranga
163*ad1b19fcSSilviu Baranga; CHECK-LABEL: t21
164*ad1b19fcSSilviu Baranga; CHECK: vmax.s8 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
165*ad1b19fcSSilviu Barangadefine <8 x i8> @t21(<8 x i8> %a, <8 x i8> %b) {
166*ad1b19fcSSilviu Baranga  %t1 = icmp sgt <8 x i8> %a, %b
167*ad1b19fcSSilviu Baranga  %t2 = select <8 x i1> %t1, <8 x i8> %a, <8 x i8> %b
168*ad1b19fcSSilviu Baranga  ret <8 x i8> %t2
169*ad1b19fcSSilviu Baranga}
170*ad1b19fcSSilviu Baranga
171*ad1b19fcSSilviu Baranga; CHECK-LABEL: t22
172*ad1b19fcSSilviu Baranga; CHECK: vmin.s8 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
173*ad1b19fcSSilviu Barangadefine <8 x i8> @t22(<8 x i8> %a, <8 x i8> %b) {
174*ad1b19fcSSilviu Baranga  %t1 = icmp slt <8 x i8> %a, %b
175*ad1b19fcSSilviu Baranga  %t2 = select <8 x i1> %t1, <8 x i8> %a, <8 x i8> %b
176*ad1b19fcSSilviu Baranga  ret <8 x i8> %t2
177*ad1b19fcSSilviu Baranga}
178*ad1b19fcSSilviu Baranga
179*ad1b19fcSSilviu Baranga; CHECK-LABEL: t23
180*ad1b19fcSSilviu Baranga; CHECK: vmax.u8 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
181*ad1b19fcSSilviu Barangadefine <8 x i8> @t23(<8 x i8> %a, <8 x i8> %b) {
182*ad1b19fcSSilviu Baranga  %t1 = icmp ugt <8 x i8> %a, %b
183*ad1b19fcSSilviu Baranga  %t2 = select <8 x i1> %t1, <8 x i8> %a, <8 x i8> %b
184*ad1b19fcSSilviu Baranga  ret <8 x i8> %t2
185*ad1b19fcSSilviu Baranga}
186*ad1b19fcSSilviu Baranga
187*ad1b19fcSSilviu Baranga; CHECK-LABEL: t24
188*ad1b19fcSSilviu Baranga; CHECK: vmin.u8 {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
189*ad1b19fcSSilviu Barangadefine <8 x i8> @t24(<8 x i8> %a, <8 x i8> %b) {
190*ad1b19fcSSilviu Baranga  %t1 = icmp ult <8 x i8> %a, %b
191*ad1b19fcSSilviu Baranga  %t2 = select <8 x i1> %t1, <8 x i8> %a, <8 x i8> %b
192*ad1b19fcSSilviu Baranga  ret <8 x i8> %t2
193*ad1b19fcSSilviu Baranga}
194