1; RUN: llc -march=hexagon < %s | FileCheck %s
2
3; min
4
5; CHECK-LABEL: test_00:
6; CHECK: r1:0 = vminb(r1:0,r3:2)
7define <8 x i8> @test_00(<8 x i8> %a0, <8 x i8> %a1) #0 {
8  %v0 = icmp slt <8 x i8> %a0, %a1
9  %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1
10  ret <8 x i8> %v1
11}
12
13; CHECK-LABEL: test_01:
14; CHECK: r1:0 = vminb(r1:0,r3:2)
15define <8 x i8> @test_01(<8 x i8> %a0, <8 x i8> %a1) #0 {
16  %v0 = icmp sle <8 x i8> %a0, %a1
17  %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1
18  ret <8 x i8> %v1
19}
20
21; CHECK-LABEL: test_02:
22; CHECK: r1:0 = vminh(r1:0,r3:2)
23define <4 x i16> @test_02(<4 x i16> %a0, <4 x i16> %a1) #0 {
24  %v0 = icmp slt <4 x i16> %a0, %a1
25  %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1
26  ret <4 x i16> %v1
27}
28
29; CHECK-LABEL: test_03:
30; CHECK: r1:0 = vminh(r1:0,r3:2)
31define <4 x i16> @test_03(<4 x i16> %a0, <4 x i16> %a1) #0 {
32  %v0 = icmp sle <4 x i16> %a0, %a1
33  %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1
34  ret <4 x i16> %v1
35}
36
37; CHECK-LABEL: test_04:
38; CHECK: r1:0 = vminw(r1:0,r3:2)
39define <2 x i32> @test_04(<2 x i32> %a0, <2 x i32> %a1) #0 {
40  %v0 = icmp slt <2 x i32> %a0, %a1
41  %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1
42  ret <2 x i32> %v1
43}
44
45; CHECK-LABEL: test_05:
46; CHECK: r1:0 = vminw(r1:0,r3:2)
47define <2 x i32> @test_05(<2 x i32> %a0, <2 x i32> %a1) #0 {
48  %v0 = icmp sle <2 x i32> %a0, %a1
49  %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1
50  ret <2 x i32> %v1
51}
52
53; minu
54
55; CHECK-LABEL: test_06:
56; CHECK: r1:0 = vminub(r1:0,r3:2)
57define <8 x i8> @test_06(<8 x i8> %a0, <8 x i8> %a1) #0 {
58  %v0 = icmp ult <8 x i8> %a0, %a1
59  %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1
60  ret <8 x i8> %v1
61}
62
63; CHECK-LABEL: test_07:
64; CHECK: r1:0 = vminub(r1:0,r3:2)
65define <8 x i8> @test_07(<8 x i8> %a0, <8 x i8> %a1) #0 {
66  %v0 = icmp ule <8 x i8> %a0, %a1
67  %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1
68  ret <8 x i8> %v1
69}
70
71; CHECK-LABEL: test_08:
72; CHECK: r1:0 = vminuh(r1:0,r3:2)
73define <4 x i16> @test_08(<4 x i16> %a0, <4 x i16> %a1) #0 {
74  %v0 = icmp ult <4 x i16> %a0, %a1
75  %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1
76  ret <4 x i16> %v1
77}
78
79; CHECK-LABEL: test_09:
80; CHECK: r1:0 = vminuh(r1:0,r3:2)
81define <4 x i16> @test_09(<4 x i16> %a0, <4 x i16> %a1) #0 {
82  %v0 = icmp ule <4 x i16> %a0, %a1
83  %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1
84  ret <4 x i16> %v1
85}
86
87; CHECK-LABEL: test_0a:
88; CHECK: r1:0 = vminuw(r1:0,r3:2)
89define <2 x i32> @test_0a(<2 x i32> %a0, <2 x i32> %a1) #0 {
90  %v0 = icmp ult <2 x i32> %a0, %a1
91  %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1
92  ret <2 x i32> %v1
93}
94
95; CHECK-LABEL: test_0b:
96; CHECK: r1:0 = vminuw(r1:0,r3:2)
97define <2 x i32> @test_0b(<2 x i32> %a0, <2 x i32> %a1) #0 {
98  %v0 = icmp ule <2 x i32> %a0, %a1
99  %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1
100  ret <2 x i32> %v1
101}
102
103; max
104
105; CHECK-LABEL: test_0c:
106; CHECK: r1:0 = vmaxb(r1:0,r3:2)
107define <8 x i8> @test_0c(<8 x i8> %a0, <8 x i8> %a1) #0 {
108  %v0 = icmp sgt <8 x i8> %a0, %a1
109  %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1
110  ret <8 x i8> %v1
111}
112
113; CHECK-LABEL: test_0d:
114; CHECK: r1:0 = vmaxb(r1:0,r3:2)
115define <8 x i8> @test_0d(<8 x i8> %a0, <8 x i8> %a1) #0 {
116  %v0 = icmp sge <8 x i8> %a0, %a1
117  %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1
118  ret <8 x i8> %v1
119}
120
121; CHECK-LABEL: test_0e:
122; CHECK: r1:0 = vmaxh(r1:0,r3:2)
123define <4 x i16> @test_0e(<4 x i16> %a0, <4 x i16> %a1) #0 {
124  %v0 = icmp sgt <4 x i16> %a0, %a1
125  %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1
126  ret <4 x i16> %v1
127}
128
129; CHECK-LABEL: test_0f:
130; CHECK: r1:0 = vmaxh(r1:0,r3:2)
131define <4 x i16> @test_0f(<4 x i16> %a0, <4 x i16> %a1) #0 {
132  %v0 = icmp sge <4 x i16> %a0, %a1
133  %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1
134  ret <4 x i16> %v1
135}
136
137; CHECK-LABEL: test_10:
138; CHECK: r1:0 = vmaxw(r1:0,r3:2)
139define <2 x i32> @test_10(<2 x i32> %a0, <2 x i32> %a1) #0 {
140  %v0 = icmp sgt <2 x i32> %a0, %a1
141  %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1
142  ret <2 x i32> %v1
143}
144
145; CHECK-LABEL: test_11:
146; CHECK: r1:0 = vmaxw(r1:0,r3:2)
147define <2 x i32> @test_11(<2 x i32> %a0, <2 x i32> %a1) #0 {
148  %v0 = icmp sge <2 x i32> %a0, %a1
149  %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1
150  ret <2 x i32> %v1
151}
152
153; maxu
154
155; CHECK-LABEL: test_12:
156; CHECK: r1:0 = vmaxub(r1:0,r3:2)
157define <8 x i8> @test_12(<8 x i8> %a0, <8 x i8> %a1) #0 {
158  %v0 = icmp ugt <8 x i8> %a0, %a1
159  %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1
160  ret <8 x i8> %v1
161}
162
163; CHECK-LABEL: test_13:
164; CHECK: r1:0 = vmaxub(r1:0,r3:2)
165define <8 x i8> @test_13(<8 x i8> %a0, <8 x i8> %a1) #0 {
166  %v0 = icmp uge <8 x i8> %a0, %a1
167  %v1 = select <8 x i1> %v0, <8 x i8> %a0, <8 x i8> %a1
168  ret <8 x i8> %v1
169}
170
171; CHECK-LABEL: test_14:
172; CHECK: r1:0 = vmaxuh(r1:0,r3:2)
173define <4 x i16> @test_14(<4 x i16> %a0, <4 x i16> %a1) #0 {
174  %v0 = icmp ugt <4 x i16> %a0, %a1
175  %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1
176  ret <4 x i16> %v1
177}
178
179; CHECK-LABEL: test_15:
180; CHECK: r1:0 = vmaxuh(r1:0,r3:2)
181define <4 x i16> @test_15(<4 x i16> %a0, <4 x i16> %a1) #0 {
182  %v0 = icmp uge <4 x i16> %a0, %a1
183  %v1 = select <4 x i1> %v0, <4 x i16> %a0, <4 x i16> %a1
184  ret <4 x i16> %v1
185}
186
187; CHECK-LABEL: test_16:
188; CHECK: r1:0 = vmaxuw(r1:0,r3:2)
189define <2 x i32> @test_16(<2 x i32> %a0, <2 x i32> %a1) #0 {
190  %v0 = icmp ugt <2 x i32> %a0, %a1
191  %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1
192  ret <2 x i32> %v1
193}
194
195; CHECK-LABEL: test_17:
196; CHECK: r1:0 = vmaxuw(r1:0,r3:2)
197define <2 x i32> @test_17(<2 x i32> %a0, <2 x i32> %a1) #0 {
198  %v0 = icmp uge <2 x i32> %a0, %a1
199  %v1 = select <2 x i1> %v0, <2 x i32> %a0, <2 x i32> %a1
200  ret <2 x i32> %v1
201}
202
203