Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / VE / Scalar / selectcci32i.ll
blob69c247e3f5a740dade41224c96d02ee130946ef6
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, 12, %s0
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, 12
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, 12, %s0
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, 12
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, 12, %s0
31 ; CHECK-NEXT:    cmov.w.lt %s3, %s2, %s0
32 ; CHECK-NEXT:    or %s0, 0, %s3
33 ; CHECK-NEXT:    b.l.t (, %s10)
34   %5 = icmp sgt i32 %0, 12
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, 11, %s0
43 ; CHECK-NEXT:    cmov.w.lt %s3, %s2, %s0
44 ; CHECK-NEXT:    or %s0, 0, %s3
45 ; CHECK-NEXT:    b.l.t (, %s10)
46   %5 = icmp sge i32 %0, 12
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, 12, %s0
55 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
56 ; CHECK-NEXT:    or %s0, 0, %s3
57 ; CHECK-NEXT:    b.l.t (, %s10)
58   %5 = icmp slt i32 %0, 12
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, 13, %s0
67 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
68 ; CHECK-NEXT:    or %s0, 0, %s3
69 ; CHECK-NEXT:    b.l.t (, %s10)
70   %5 = icmp sle i32 %0, 12
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, 12, %s0
79 ; CHECK-NEXT:    cmov.w.lt %s3, %s2, %s0
80 ; CHECK-NEXT:    or %s0, 0, %s3
81 ; CHECK-NEXT:    b.l.t (, %s10)
82   %5 = icmp ugt i32 %0, 12
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, 11, %s0
91 ; CHECK-NEXT:    cmov.w.lt %s3, %s2, %s0
92 ; CHECK-NEXT:    or %s0, 0, %s3
93 ; CHECK-NEXT:    b.l.t (, %s10)
94   %5 = icmp uge i32 %0, 12
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, 12, %s0
103 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
104 ; CHECK-NEXT:    or %s0, 0, %s3
105 ; CHECK-NEXT:    b.l.t (, %s10)
106   %5 = icmp ult i32 %0, 12
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, 13, %s0
115 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
116 ; CHECK-NEXT:    or %s0, 0, %s3
117 ; CHECK-NEXT:    b.l.t (, %s10)
118   %5 = icmp ule i32 %0, 12
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, 12, %s0
127 ; CHECK-NEXT:    cmov.w.lt %s3, %s2, %s0
128 ; CHECK-NEXT:    or %s0, 0, %s3
129 ; CHECK-NEXT:    b.l.t (, %s10)
130   %5 = icmp ugt i32 %0, 12
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, 11, %s0
139 ; CHECK-NEXT:    cmov.w.lt %s3, %s2, %s0
140 ; CHECK-NEXT:    or %s0, 0, %s3
141 ; CHECK-NEXT:    b.l.t (, %s10)
142   %5 = icmp uge i32 %0, 12
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, 12, %s0
151 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
152 ; CHECK-NEXT:    or %s0, 0, %s3
153 ; CHECK-NEXT:    b.l.t (, %s10)
154   %5 = icmp ult i32 %0, 12
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, 13, %s0
163 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
164 ; CHECK-NEXT:    or %s0, 0, %s3
165 ; CHECK-NEXT:    b.l.t (, %s10)
166   %5 = icmp ule i32 %0, 12
167   %6 = select i1 %5, i32 %2, i32 %3
168   ret i32 %6