xref: /llvm-project/llvm/test/CodeGen/VE/Scalar/selectccf32i.ll (revision 33dda45dde678f6f2efa24d7ca837cd6ad8f44d7)
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
2
3define float @selectccaf(float, float, float, float) {
4; CHECK-LABEL: selectccaf:
5; CHECK:       # %bb.0:
6; CHECK-NEXT:    or %s0, 0, %s3
7; CHECK-NEXT:    b.l.t (, %s10)
8  %5 = fcmp false float %0, 0.0
9  %6 = select i1 %5, float %2, float %3
10  ret float %6
11}
12
13define float @selectccat(float, float, float, float) {
14; CHECK-LABEL: selectccat:
15; CHECK:       # %bb.0:
16; CHECK-NEXT:    or %s0, 0, %s2
17; CHECK-NEXT:    b.l.t (, %s10)
18  %5 = fcmp true float %0, 0.0
19  %6 = select i1 %5, float %2, float %3
20  ret float %6
21}
22
23define float @selectccoeq(float, float, float, float) {
24; CHECK-LABEL: selectccoeq:
25; CHECK:       # %bb.0:
26; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s0
27; CHECK-NEXT:    or %s0, 0, %s3
28; CHECK-NEXT:    b.l.t (, %s10)
29  %5 = fcmp oeq float %0, 0.0
30  %6 = select i1 %5, float %2, float %3
31  ret float %6
32}
33
34define float @selectccone(float, float, float, float) {
35; CHECK-LABEL: selectccone:
36; CHECK:       # %bb.0:
37; CHECK-NEXT:    cmov.s.ne %s3, %s2, %s0
38; CHECK-NEXT:    or %s0, 0, %s3
39; CHECK-NEXT:    b.l.t (, %s10)
40  %5 = fcmp one float %0, 0.0
41  %6 = select i1 %5, float %2, float %3
42  ret float %6
43}
44
45define float @selectccogt(float, float, float, float) {
46; CHECK-LABEL: selectccogt:
47; CHECK:       # %bb.0:
48; CHECK-NEXT:    cmov.s.gt %s3, %s2, %s0
49; CHECK-NEXT:    or %s0, 0, %s3
50; CHECK-NEXT:    b.l.t (, %s10)
51  %5 = fcmp ogt float %0, 0.0
52  %6 = select i1 %5, float %2, float %3
53  ret float %6
54}
55
56define float @selectccoge(float, float, float, float) {
57; CHECK-LABEL: selectccoge:
58; CHECK:       # %bb.0:
59; CHECK-NEXT:    cmov.s.ge %s3, %s2, %s0
60; CHECK-NEXT:    or %s0, 0, %s3
61; CHECK-NEXT:    b.l.t (, %s10)
62  %5 = fcmp oge float %0, 0.0
63  %6 = select i1 %5, float %2, float %3
64  ret float %6
65}
66
67define float @selectccolt(float, float, float, float) {
68; CHECK-LABEL: selectccolt:
69; CHECK:       # %bb.0:
70; CHECK-NEXT:    cmov.s.lt %s3, %s2, %s0
71; CHECK-NEXT:    or %s0, 0, %s3
72; CHECK-NEXT:    b.l.t (, %s10)
73  %5 = fcmp olt float %0, 0.0
74  %6 = select i1 %5, float %2, float %3
75  ret float %6
76}
77
78define float @selectccole(float, float, float, float) {
79; CHECK-LABEL: selectccole:
80; CHECK:       # %bb.0:
81; CHECK-NEXT:    cmov.s.le %s3, %s2, %s0
82; CHECK-NEXT:    or %s0, 0, %s3
83; CHECK-NEXT:    b.l.t (, %s10)
84  %5 = fcmp ole float %0, 0.0
85  %6 = select i1 %5, float %2, float %3
86  ret float %6
87}
88
89define float @selectccord(float, float, float, float) {
90; CHECK-LABEL: selectccord:
91; CHECK:       # %bb.0:
92; CHECK-NEXT:    fcmp.s %s0, %s0, %s0
93; CHECK-NEXT:    cmov.s.num %s3, %s2, %s0
94; CHECK-NEXT:    or %s0, 0, %s3
95; CHECK-NEXT:    b.l.t (, %s10)
96  %5 = fcmp ord float %0, 0.0
97  %6 = select i1 %5, float %2, float %3
98  ret float %6
99}
100
101define float @selectccuno(float, float, float, float) {
102; CHECK-LABEL: selectccuno:
103; CHECK:       # %bb.0:
104; CHECK-NEXT:    fcmp.s %s0, %s0, %s0
105; CHECK-NEXT:    cmov.s.nan %s3, %s2, %s0
106; CHECK-NEXT:    or %s0, 0, %s3
107; CHECK-NEXT:    b.l.t (, %s10)
108  %5 = fcmp uno float %0, 0.0
109  %6 = select i1 %5, float %2, float %3
110  ret float %6
111}
112
113define float @selectccueq(float, float, float, float) {
114; CHECK-LABEL: selectccueq:
115; CHECK:       # %bb.0:
116; CHECK-NEXT:    cmov.s.eqnan %s3, %s2, %s0
117; CHECK-NEXT:    or %s0, 0, %s3
118; CHECK-NEXT:    b.l.t (, %s10)
119  %5 = fcmp ueq float %0, 0.0
120  %6 = select i1 %5, float %2, float %3
121  ret float %6
122}
123
124define float @selectccune(float, float, float, float) {
125; CHECK-LABEL: selectccune:
126; CHECK:       # %bb.0:
127; CHECK-NEXT:    cmov.s.nenan %s3, %s2, %s0
128; CHECK-NEXT:    or %s0, 0, %s3
129; CHECK-NEXT:    b.l.t (, %s10)
130  %5 = fcmp une float %0, 0.0
131  %6 = select i1 %5, float %2, float %3
132  ret float %6
133}
134
135define float @selectccugt(float, float, float, float) {
136; CHECK-LABEL: selectccugt:
137; CHECK:       # %bb.0:
138; CHECK-NEXT:    cmov.s.gtnan %s3, %s2, %s0
139; CHECK-NEXT:    or %s0, 0, %s3
140; CHECK-NEXT:    b.l.t (, %s10)
141  %5 = fcmp ugt float %0, 0.0
142  %6 = select i1 %5, float %2, float %3
143  ret float %6
144}
145
146define float @selectccuge(float, float, float, float) {
147; CHECK-LABEL: selectccuge:
148; CHECK:       # %bb.0:
149; CHECK-NEXT:    cmov.s.genan %s3, %s2, %s0
150; CHECK-NEXT:    or %s0, 0, %s3
151; CHECK-NEXT:    b.l.t (, %s10)
152  %5 = fcmp uge float %0, 0.0
153  %6 = select i1 %5, float %2, float %3
154  ret float %6
155}
156
157define float @selectccult(float, float, float, float) {
158; CHECK-LABEL: selectccult:
159; CHECK:       # %bb.0:
160; CHECK-NEXT:    cmov.s.ltnan %s3, %s2, %s0
161; CHECK-NEXT:    or %s0, 0, %s3
162; CHECK-NEXT:    b.l.t (, %s10)
163  %5 = fcmp ult float %0, 0.0
164  %6 = select i1 %5, float %2, float %3
165  ret float %6
166}
167
168define float @selectccule(float, float, float, float) {
169; CHECK-LABEL: selectccule:
170; CHECK:       # %bb.0:
171; CHECK-NEXT:    cmov.s.lenan %s3, %s2, %s0
172; CHECK-NEXT:    or %s0, 0, %s3
173; CHECK-NEXT:    b.l.t (, %s10)
174  %5 = fcmp ule float %0, 0.0
175  %6 = select i1 %5, float %2, float %3
176  ret float %6
177}
178