Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Hexagon / isel-minmax-v64bit.ll
blobd175d8dd295cb4be390bc1f067e972c36cc084c0
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 ; min
5 ; CHECK-LABEL: test_00:
6 ; CHECK: r1:0 = vminb(r1:0,r3:2)
7 define <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
13 ; CHECK-LABEL: test_01:
14 ; CHECK: r1:0 = vminb(r1:0,r3:2)
15 define <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
21 ; CHECK-LABEL: test_02:
22 ; CHECK: r1:0 = vminh(r1:0,r3:2)
23 define <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
29 ; CHECK-LABEL: test_03:
30 ; CHECK: r1:0 = vminh(r1:0,r3:2)
31 define <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
37 ; CHECK-LABEL: test_04:
38 ; CHECK: r1:0 = vminw(r1:0,r3:2)
39 define <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
45 ; CHECK-LABEL: test_05:
46 ; CHECK: r1:0 = vminw(r1:0,r3:2)
47 define <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
53 ; minu
55 ; CHECK-LABEL: test_06:
56 ; CHECK: r1:0 = vminub(r1:0,r3:2)
57 define <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
63 ; CHECK-LABEL: test_07:
64 ; CHECK: r1:0 = vminub(r1:0,r3:2)
65 define <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
71 ; CHECK-LABEL: test_08:
72 ; CHECK: r1:0 = vminuh(r1:0,r3:2)
73 define <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
79 ; CHECK-LABEL: test_09:
80 ; CHECK: r1:0 = vminuh(r1:0,r3:2)
81 define <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
87 ; CHECK-LABEL: test_0a:
88 ; CHECK: r1:0 = vminuw(r1:0,r3:2)
89 define <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
95 ; CHECK-LABEL: test_0b:
96 ; CHECK: r1:0 = vminuw(r1:0,r3:2)
97 define <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
103 ; max
105 ; CHECK-LABEL: test_0c:
106 ; CHECK: r1:0 = vmaxb(r1:0,r3:2)
107 define <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
113 ; CHECK-LABEL: test_0d:
114 ; CHECK: r1:0 = vmaxb(r1:0,r3:2)
115 define <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
121 ; CHECK-LABEL: test_0e:
122 ; CHECK: r1:0 = vmaxh(r1:0,r3:2)
123 define <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
129 ; CHECK-LABEL: test_0f:
130 ; CHECK: r1:0 = vmaxh(r1:0,r3:2)
131 define <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
137 ; CHECK-LABEL: test_10:
138 ; CHECK: r1:0 = vmaxw(r1:0,r3:2)
139 define <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
145 ; CHECK-LABEL: test_11:
146 ; CHECK: r1:0 = vmaxw(r1:0,r3:2)
147 define <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
153 ; maxu
155 ; CHECK-LABEL: test_12:
156 ; CHECK: r1:0 = vmaxub(r1:0,r3:2)
157 define <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
163 ; CHECK-LABEL: test_13:
164 ; CHECK: r1:0 = vmaxub(r1:0,r3:2)
165 define <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
171 ; CHECK-LABEL: test_14:
172 ; CHECK: r1:0 = vmaxuh(r1:0,r3:2)
173 define <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
179 ; CHECK-LABEL: test_15:
180 ; CHECK: r1:0 = vmaxuh(r1:0,r3:2)
181 define <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
187 ; CHECK-LABEL: test_16:
188 ; CHECK: r1:0 = vmaxuw(r1:0,r3:2)
189 define <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
195 ; CHECK-LABEL: test_17:
196 ; CHECK: r1:0 = vmaxuw(r1:0,r3:2)
197 define <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