Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / VE / Scalar / selectcci32.ll
blob3ab105839fb1f8902061bb11a523bfb50cd7f94d
1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 define i32 @selectcceq(i32, i32, i32, i32) {
4 ; CHECK-LABEL: selectcceq:
5 ; CHECK:       # %bb.0:
6 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
7 ; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0
8 ; CHECK-NEXT:    or %s0, 0, %s3
9 ; CHECK-NEXT:    b.l.t (, %s10)
10   %5 = icmp eq i32 %0, %1
11   %6 = select i1 %5, i32 %2, i32 %3
12   ret i32 %6
15 define i32 @selectccne(i32, i32, i32, i32) {
16 ; CHECK-LABEL: selectccne:
17 ; CHECK:       # %bb.0:
18 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
19 ; CHECK-NEXT:    cmov.w.ne %s3, %s2, %s0
20 ; CHECK-NEXT:    or %s0, 0, %s3
21 ; CHECK-NEXT:    b.l.t (, %s10)
22   %5 = icmp ne i32 %0, %1
23   %6 = select i1 %5, i32 %2, i32 %3
24   ret i32 %6
27 define i32 @selectccsgt(i32, i32, i32, i32) {
28 ; CHECK-LABEL: selectccsgt:
29 ; CHECK:       # %bb.0:
30 ; CHECK-NEXT:    cmps.w.zx %s0, %s0, %s1
31 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
32 ; CHECK-NEXT:    or %s0, 0, %s3
33 ; CHECK-NEXT:    b.l.t (, %s10)
34   %5 = icmp sgt i32 %0, %1
35   %6 = select i1 %5, i32 %2, i32 %3
36   ret i32 %6
39 define i32 @selectccsge(i32, i32, i32, i32) {
40 ; CHECK-LABEL: selectccsge:
41 ; CHECK:       # %bb.0:
42 ; CHECK-NEXT:    cmps.w.zx %s0, %s0, %s1
43 ; CHECK-NEXT:    cmov.w.ge %s3, %s2, %s0
44 ; CHECK-NEXT:    or %s0, 0, %s3
45 ; CHECK-NEXT:    b.l.t (, %s10)
46   %5 = icmp sge i32 %0, %1
47   %6 = select i1 %5, i32 %2, i32 %3
48   ret i32 %6
51 define i32 @selectccslt(i32, i32, i32, i32) {
52 ; CHECK-LABEL: selectccslt:
53 ; CHECK:       # %bb.0:
54 ; CHECK-NEXT:    cmps.w.zx %s0, %s0, %s1
55 ; CHECK-NEXT:    cmov.w.lt %s3, %s2, %s0
56 ; CHECK-NEXT:    or %s0, 0, %s3
57 ; CHECK-NEXT:    b.l.t (, %s10)
58   %5 = icmp slt i32 %0, %1
59   %6 = select i1 %5, i32 %2, i32 %3
60   ret i32 %6
63 define i32 @selectccsle(i32, i32, i32, i32) {
64 ; CHECK-LABEL: selectccsle:
65 ; CHECK:       # %bb.0:
66 ; CHECK-NEXT:    cmps.w.zx %s0, %s0, %s1
67 ; CHECK-NEXT:    cmov.w.le %s3, %s2, %s0
68 ; CHECK-NEXT:    or %s0, 0, %s3
69 ; CHECK-NEXT:    b.l.t (, %s10)
70   %5 = icmp sle i32 %0, %1
71   %6 = select i1 %5, i32 %2, i32 %3
72   ret i32 %6
75 define i32 @selectccugt(i32, i32, i32, i32) {
76 ; CHECK-LABEL: selectccugt:
77 ; CHECK:       # %bb.0:
78 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
79 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
80 ; CHECK-NEXT:    or %s0, 0, %s3
81 ; CHECK-NEXT:    b.l.t (, %s10)
82   %5 = icmp ugt i32 %0, %1
83   %6 = select i1 %5, i32 %2, i32 %3
84   ret i32 %6
87 define i32 @selectccuge(i32, i32, i32, i32) {
88 ; CHECK-LABEL: selectccuge:
89 ; CHECK:       # %bb.0:
90 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
91 ; CHECK-NEXT:    cmov.w.ge %s3, %s2, %s0
92 ; CHECK-NEXT:    or %s0, 0, %s3
93 ; CHECK-NEXT:    b.l.t (, %s10)
94   %5 = icmp uge i32 %0, %1
95   %6 = select i1 %5, i32 %2, i32 %3
96   ret i32 %6
99 define i32 @selectccult(i32, i32, i32, i32) {
100 ; CHECK-LABEL: selectccult:
101 ; CHECK:       # %bb.0:
102 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
103 ; CHECK-NEXT:    cmov.w.lt %s3, %s2, %s0
104 ; CHECK-NEXT:    or %s0, 0, %s3
105 ; CHECK-NEXT:    b.l.t (, %s10)
106   %5 = icmp ult i32 %0, %1
107   %6 = select i1 %5, i32 %2, i32 %3
108   ret i32 %6
111 define i32 @selectccule(i32, i32, i32, i32) {
112 ; CHECK-LABEL: selectccule:
113 ; CHECK:       # %bb.0:
114 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
115 ; CHECK-NEXT:    cmov.w.le %s3, %s2, %s0
116 ; CHECK-NEXT:    or %s0, 0, %s3
117 ; CHECK-NEXT:    b.l.t (, %s10)
118   %5 = icmp ule i32 %0, %1
119   %6 = select i1 %5, i32 %2, i32 %3
120   ret i32 %6
123 define i32 @selectccugt2(i32, i32, i32, i32) {
124 ; CHECK-LABEL: selectccugt2:
125 ; CHECK:       # %bb.0:
126 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
127 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
128 ; CHECK-NEXT:    or %s0, 0, %s3
129 ; CHECK-NEXT:    b.l.t (, %s10)
130   %5 = icmp ugt i32 %0, %1
131   %6 = select i1 %5, i32 %2, i32 %3
132   ret i32 %6
135 define i32 @selectccuge2(i32, i32, i32, i32) {
136 ; CHECK-LABEL: selectccuge2:
137 ; CHECK:       # %bb.0:
138 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
139 ; CHECK-NEXT:    cmov.w.ge %s3, %s2, %s0
140 ; CHECK-NEXT:    or %s0, 0, %s3
141 ; CHECK-NEXT:    b.l.t (, %s10)
142   %5 = icmp uge i32 %0, %1
143   %6 = select i1 %5, i32 %2, i32 %3
144   ret i32 %6
147 define i32 @selectccult2(i32, i32, i32, i32) {
148 ; CHECK-LABEL: selectccult2:
149 ; CHECK:       # %bb.0:
150 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
151 ; CHECK-NEXT:    cmov.w.lt %s3, %s2, %s0
152 ; CHECK-NEXT:    or %s0, 0, %s3
153 ; CHECK-NEXT:    b.l.t (, %s10)
154   %5 = icmp ult i32 %0, %1
155   %6 = select i1 %5, i32 %2, i32 %3
156   ret i32 %6
159 define i32 @selectccule2(i32, i32, i32, i32) {
160 ; CHECK-LABEL: selectccule2:
161 ; CHECK:       # %bb.0:
162 ; CHECK-NEXT:    cmpu.w %s0, %s0, %s1
163 ; CHECK-NEXT:    cmov.w.le %s3, %s2, %s0
164 ; CHECK-NEXT:    or %s0, 0, %s3
165 ; CHECK-NEXT:    b.l.t (, %s10)
166   %5 = icmp ule i32 %0, %1
167   %6 = select i1 %5, i32 %2, i32 %3
168   ret i32 %6