xref: /llvm-project/llvm/test/CodeGen/RISCV/half-select-icmp.ll (revision 1c874bbbd67c5795113fa307512ea514f06dac29)
139707c1aSCraig Topper; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
239707c1aSCraig Topper; RUN: llc -mtriple=riscv32 -mattr=+zfh -verify-machineinstrs \
339707c1aSCraig Topper; RUN:   -target-abi ilp32f < %s | FileCheck %s
439707c1aSCraig Topper; RUN: llc -mtriple=riscv64 -mattr=+zfh -verify-machineinstrs \
539707c1aSCraig Topper; RUN:   -target-abi lp64f < %s | FileCheck %s
6773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -mattr=+zhinx -verify-machineinstrs \
7773b0aaaSQihan Cai; RUN:   -target-abi ilp32 < %s | FileCheck -check-prefix=CHECKIZHINX %s
8773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs \
9773b0aaaSQihan Cai; RUN:   -target-abi lp64 < %s | FileCheck -check-prefix=CHECKIZHINX %s
107b50c183SMonk Chiang; RUN: llc -mtriple=riscv32 -mattr=+zfhmin -verify-machineinstrs < %s \
11*1c874bbbSCraig Topper; RUN:   -target-abi=ilp32f | FileCheck -check-prefixes=CHECKIZFHMIN %s
127b50c183SMonk Chiang; RUN: llc -mtriple=riscv64 -mattr=+zfhmin -verify-machineinstrs < %s \
13*1c874bbbSCraig Topper; RUN:   -target-abi=lp64f | FileCheck -check-prefixes=CHECKIZFHMIN %s
14773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -mattr=+zhinxmin -verify-machineinstrs < %s \
15*1c874bbbSCraig Topper; RUN:   -target-abi=ilp32 | FileCheck -check-prefixes=CHECKIZHINXMIN %s
16773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -mattr=+zhinxmin -verify-machineinstrs < %s \
17*1c874bbbSCraig Topper; RUN:   -target-abi=lp64 | FileCheck -check-prefixes=CHECKIZHINXMIN %s
1839707c1aSCraig Topper
1939707c1aSCraig Topperdefine half @select_icmp_eq(i32 signext %a, i32 signext %b, half %c, half %d) {
2039707c1aSCraig Topper; CHECK-LABEL: select_icmp_eq:
2139707c1aSCraig Topper; CHECK:       # %bb.0:
2239707c1aSCraig Topper; CHECK-NEXT:    beq a0, a1, .LBB0_2
2339707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
2439707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
2539707c1aSCraig Topper; CHECK-NEXT:  .LBB0_2:
2639707c1aSCraig Topper; CHECK-NEXT:    ret
277b50c183SMonk Chiang;
28773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_eq:
29773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
30773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    beq a0, a1, .LBB0_2
31773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
32773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
33773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB0_2:
34773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
35773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
36773b0aaaSQihan Cai;
377b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_eq:
387b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
397b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    beq a0, a1, .LBB0_2
407b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
41*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
427b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB0_2:
437b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
44773b0aaaSQihan Cai;
45773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_eq:
46773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
47773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    beq a0, a1, .LBB0_2
48773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
49*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
50773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB0_2:
51*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
52773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
5339707c1aSCraig Topper  %1 = icmp eq i32 %a, %b
5439707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
5539707c1aSCraig Topper  ret half %2
5639707c1aSCraig Topper}
5739707c1aSCraig Topper
5839707c1aSCraig Topperdefine half @select_icmp_ne(i32 signext %a, i32 signext %b, half %c, half %d) {
5939707c1aSCraig Topper; CHECK-LABEL: select_icmp_ne:
6039707c1aSCraig Topper; CHECK:       # %bb.0:
6139707c1aSCraig Topper; CHECK-NEXT:    bne a0, a1, .LBB1_2
6239707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
6339707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
6439707c1aSCraig Topper; CHECK-NEXT:  .LBB1_2:
6539707c1aSCraig Topper; CHECK-NEXT:    ret
667b50c183SMonk Chiang;
67773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_ne:
68773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
69773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    bne a0, a1, .LBB1_2
70773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
71773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
72773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB1_2:
73773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
74773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
75773b0aaaSQihan Cai;
767b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_ne:
777b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
787b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    bne a0, a1, .LBB1_2
797b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
80*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
817b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB1_2:
827b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
83773b0aaaSQihan Cai;
84773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_ne:
85773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
86773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    bne a0, a1, .LBB1_2
87773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
88*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
89773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB1_2:
90*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
91773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
9239707c1aSCraig Topper  %1 = icmp ne i32 %a, %b
9339707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
9439707c1aSCraig Topper  ret half %2
9539707c1aSCraig Topper}
9639707c1aSCraig Topper
9739707c1aSCraig Topperdefine half @select_icmp_ugt(i32 signext %a, i32 signext %b, half %c, half %d) {
9839707c1aSCraig Topper; CHECK-LABEL: select_icmp_ugt:
9939707c1aSCraig Topper; CHECK:       # %bb.0:
10039707c1aSCraig Topper; CHECK-NEXT:    bltu a1, a0, .LBB2_2
10139707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
10239707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
10339707c1aSCraig Topper; CHECK-NEXT:  .LBB2_2:
10439707c1aSCraig Topper; CHECK-NEXT:    ret
1057b50c183SMonk Chiang;
106773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_ugt:
107773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
108773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    bltu a1, a0, .LBB2_2
109773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
110773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
111773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB2_2:
112773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
113773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
114773b0aaaSQihan Cai;
1157b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_ugt:
1167b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
1177b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    bltu a1, a0, .LBB2_2
1187b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
119*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
1207b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB2_2:
1217b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
122773b0aaaSQihan Cai;
123773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_ugt:
124773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
125773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    bltu a1, a0, .LBB2_2
126773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
127*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
128773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB2_2:
129*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
130773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
13139707c1aSCraig Topper  %1 = icmp ugt i32 %a, %b
13239707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
13339707c1aSCraig Topper  ret half %2
13439707c1aSCraig Topper}
13539707c1aSCraig Topper
13639707c1aSCraig Topperdefine half @select_icmp_uge(i32 signext %a, i32 signext %b, half %c, half %d) {
13739707c1aSCraig Topper; CHECK-LABEL: select_icmp_uge:
13839707c1aSCraig Topper; CHECK:       # %bb.0:
13939707c1aSCraig Topper; CHECK-NEXT:    bgeu a0, a1, .LBB3_2
14039707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
14139707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
14239707c1aSCraig Topper; CHECK-NEXT:  .LBB3_2:
14339707c1aSCraig Topper; CHECK-NEXT:    ret
1447b50c183SMonk Chiang;
145773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_uge:
146773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
147773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    bgeu a0, a1, .LBB3_2
148773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
149773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
150773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB3_2:
151773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
152773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
153773b0aaaSQihan Cai;
1547b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_uge:
1557b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
1567b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    bgeu a0, a1, .LBB3_2
1577b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
158*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
1597b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB3_2:
1607b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
161773b0aaaSQihan Cai;
162773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_uge:
163773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
164773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    bgeu a0, a1, .LBB3_2
165773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
166*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
167773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB3_2:
168*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
169773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
17039707c1aSCraig Topper  %1 = icmp uge i32 %a, %b
17139707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
17239707c1aSCraig Topper  ret half %2
17339707c1aSCraig Topper}
17439707c1aSCraig Topper
17539707c1aSCraig Topperdefine half @select_icmp_ult(i32 signext %a, i32 signext %b, half %c, half %d) {
17639707c1aSCraig Topper; CHECK-LABEL: select_icmp_ult:
17739707c1aSCraig Topper; CHECK:       # %bb.0:
17839707c1aSCraig Topper; CHECK-NEXT:    bltu a0, a1, .LBB4_2
17939707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
18039707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
18139707c1aSCraig Topper; CHECK-NEXT:  .LBB4_2:
18239707c1aSCraig Topper; CHECK-NEXT:    ret
1837b50c183SMonk Chiang;
184773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_ult:
185773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
186773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    bltu a0, a1, .LBB4_2
187773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
188773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
189773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB4_2:
190773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
191773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
192773b0aaaSQihan Cai;
1937b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_ult:
1947b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
1957b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    bltu a0, a1, .LBB4_2
1967b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
197*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
1987b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB4_2:
1997b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
200773b0aaaSQihan Cai;
201773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_ult:
202773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
203773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    bltu a0, a1, .LBB4_2
204773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
205*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
206773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB4_2:
207*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
208773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
20939707c1aSCraig Topper  %1 = icmp ult i32 %a, %b
21039707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
21139707c1aSCraig Topper  ret half %2
21239707c1aSCraig Topper}
21339707c1aSCraig Topper
21439707c1aSCraig Topperdefine half @select_icmp_ule(i32 signext %a, i32 signext %b, half %c, half %d) {
21539707c1aSCraig Topper; CHECK-LABEL: select_icmp_ule:
21639707c1aSCraig Topper; CHECK:       # %bb.0:
21739707c1aSCraig Topper; CHECK-NEXT:    bgeu a1, a0, .LBB5_2
21839707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
21939707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
22039707c1aSCraig Topper; CHECK-NEXT:  .LBB5_2:
22139707c1aSCraig Topper; CHECK-NEXT:    ret
2227b50c183SMonk Chiang;
223773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_ule:
224773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
225773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    bgeu a1, a0, .LBB5_2
226773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
227773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
228773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB5_2:
229773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
230773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
231773b0aaaSQihan Cai;
2327b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_ule:
2337b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
2347b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    bgeu a1, a0, .LBB5_2
2357b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
236*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
2377b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB5_2:
2387b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
239773b0aaaSQihan Cai;
240773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_ule:
241773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
242773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    bgeu a1, a0, .LBB5_2
243773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
244*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
245773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB5_2:
246*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
247773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
24839707c1aSCraig Topper  %1 = icmp ule i32 %a, %b
24939707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
25039707c1aSCraig Topper  ret half %2
25139707c1aSCraig Topper}
25239707c1aSCraig Topper
25339707c1aSCraig Topperdefine half @select_icmp_sgt(i32 signext %a, i32 signext %b, half %c, half %d) {
25439707c1aSCraig Topper; CHECK-LABEL: select_icmp_sgt:
25539707c1aSCraig Topper; CHECK:       # %bb.0:
25639707c1aSCraig Topper; CHECK-NEXT:    blt a1, a0, .LBB6_2
25739707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
25839707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
25939707c1aSCraig Topper; CHECK-NEXT:  .LBB6_2:
26039707c1aSCraig Topper; CHECK-NEXT:    ret
2617b50c183SMonk Chiang;
262773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_sgt:
263773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
264773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    blt a1, a0, .LBB6_2
265773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
266773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
267773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB6_2:
268773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
269773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
270773b0aaaSQihan Cai;
2717b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_sgt:
2727b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
2737b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    blt a1, a0, .LBB6_2
2747b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
275*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
2767b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB6_2:
2777b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
278773b0aaaSQihan Cai;
279773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_sgt:
280773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
281773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    blt a1, a0, .LBB6_2
282773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
283*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
284773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB6_2:
285*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
286773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
28739707c1aSCraig Topper  %1 = icmp sgt i32 %a, %b
28839707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
28939707c1aSCraig Topper  ret half %2
29039707c1aSCraig Topper}
29139707c1aSCraig Topper
29239707c1aSCraig Topperdefine half @select_icmp_sge(i32 signext %a, i32 signext %b, half %c, half %d) {
29339707c1aSCraig Topper; CHECK-LABEL: select_icmp_sge:
29439707c1aSCraig Topper; CHECK:       # %bb.0:
29539707c1aSCraig Topper; CHECK-NEXT:    bge a0, a1, .LBB7_2
29639707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
29739707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
29839707c1aSCraig Topper; CHECK-NEXT:  .LBB7_2:
29939707c1aSCraig Topper; CHECK-NEXT:    ret
3007b50c183SMonk Chiang;
301773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_sge:
302773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
303773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    bge a0, a1, .LBB7_2
304773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
305773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
306773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB7_2:
307773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
308773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
309773b0aaaSQihan Cai;
3107b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_sge:
3117b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
3127b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    bge a0, a1, .LBB7_2
3137b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
314*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
3157b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB7_2:
3167b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
317773b0aaaSQihan Cai;
318773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_sge:
319773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
320773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    bge a0, a1, .LBB7_2
321773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
322*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
323773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB7_2:
324*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
325773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
32639707c1aSCraig Topper  %1 = icmp sge i32 %a, %b
32739707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
32839707c1aSCraig Topper  ret half %2
32939707c1aSCraig Topper}
33039707c1aSCraig Topper
33139707c1aSCraig Topperdefine half @select_icmp_slt(i32 signext %a, i32 signext %b, half %c, half %d) {
33239707c1aSCraig Topper; CHECK-LABEL: select_icmp_slt:
33339707c1aSCraig Topper; CHECK:       # %bb.0:
33439707c1aSCraig Topper; CHECK-NEXT:    blt a0, a1, .LBB8_2
33539707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
33639707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
33739707c1aSCraig Topper; CHECK-NEXT:  .LBB8_2:
33839707c1aSCraig Topper; CHECK-NEXT:    ret
3397b50c183SMonk Chiang;
340773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_slt:
341773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
342773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    blt a0, a1, .LBB8_2
343773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
344773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
345773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB8_2:
346773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
347773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
348773b0aaaSQihan Cai;
3497b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_slt:
3507b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
3517b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    blt a0, a1, .LBB8_2
3527b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
353*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
3547b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB8_2:
3557b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
356773b0aaaSQihan Cai;
357773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_slt:
358773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
359773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    blt a0, a1, .LBB8_2
360773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
361*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
362773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB8_2:
363*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
364773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
36539707c1aSCraig Topper  %1 = icmp slt i32 %a, %b
36639707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
36739707c1aSCraig Topper  ret half %2
36839707c1aSCraig Topper}
36939707c1aSCraig Topper
37039707c1aSCraig Topperdefine half @select_icmp_sle(i32 signext %a, i32 signext %b, half %c, half %d) {
37139707c1aSCraig Topper; CHECK-LABEL: select_icmp_sle:
37239707c1aSCraig Topper; CHECK:       # %bb.0:
37339707c1aSCraig Topper; CHECK-NEXT:    bge a1, a0, .LBB9_2
37439707c1aSCraig Topper; CHECK-NEXT:  # %bb.1:
37539707c1aSCraig Topper; CHECK-NEXT:    fmv.h fa0, fa1
37639707c1aSCraig Topper; CHECK-NEXT:  .LBB9_2:
37739707c1aSCraig Topper; CHECK-NEXT:    ret
3787b50c183SMonk Chiang;
379773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_sle:
380773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
381773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    bge a1, a0, .LBB9_2
382773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  # %bb.1:
383773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a2, a3
384773b0aaaSQihan Cai; CHECKIZHINX-NEXT:  .LBB9_2:
385773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    mv a0, a2
386773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
387773b0aaaSQihan Cai;
3887b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_sle:
3897b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
3907b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    bge a1, a0, .LBB9_2
3917b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  # %bb.1:
392*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT:    fmv.s fa0, fa1
3937b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:  .LBB9_2:
3947b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
395773b0aaaSQihan Cai;
396773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_sle:
397773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
398773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    bge a1, a0, .LBB9_2
399773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  # %bb.1:
400*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a2, a3
401773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:  .LBB9_2:
402*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT:    mv a0, a2
403773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
40439707c1aSCraig Topper  %1 = icmp sle i32 %a, %b
40539707c1aSCraig Topper  %2 = select i1 %1, half %c, half %d
40639707c1aSCraig Topper  ret half %2
40739707c1aSCraig Topper}
408548fa1d3SLiaoChunyu
409548fa1d3SLiaoChunyudefine half @select_icmp_slt_one(i32 signext %a) {
410548fa1d3SLiaoChunyu; CHECK-LABEL: select_icmp_slt_one:
411548fa1d3SLiaoChunyu; CHECK:       # %bb.0:
412548fa1d3SLiaoChunyu; CHECK-NEXT:    slti a0, a0, 1
413548fa1d3SLiaoChunyu; CHECK-NEXT:    fcvt.h.w fa0, a0
414548fa1d3SLiaoChunyu; CHECK-NEXT:    ret
415548fa1d3SLiaoChunyu;
416548fa1d3SLiaoChunyu; CHECKIZHINX-LABEL: select_icmp_slt_one:
417548fa1d3SLiaoChunyu; CHECKIZHINX:       # %bb.0:
418548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT:    slti a0, a0, 1
419548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT:    fcvt.h.w a0, a0
420548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT:    ret
421548fa1d3SLiaoChunyu;
422548fa1d3SLiaoChunyu; CHECKIZFHMIN-LABEL: select_icmp_slt_one:
423548fa1d3SLiaoChunyu; CHECKIZFHMIN:       # %bb.0:
424548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT:    slti a0, a0, 1
425548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT:    fcvt.s.w fa5, a0
426548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT:    fcvt.h.s fa0, fa5
427548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT:    ret
428548fa1d3SLiaoChunyu;
429548fa1d3SLiaoChunyu; CHECKIZHINXMIN-LABEL: select_icmp_slt_one:
430548fa1d3SLiaoChunyu; CHECKIZHINXMIN:       # %bb.0:
431548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT:    slti a0, a0, 1
432548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT:    fcvt.s.w a0, a0
433548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT:    fcvt.h.s a0, a0
434548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT:    ret
435548fa1d3SLiaoChunyu  %1 = icmp slt i32 %a, 1
436548fa1d3SLiaoChunyu  %2 = select i1 %1, half 1.000000e+00, half 0.000000e+00
437548fa1d3SLiaoChunyu  ret half %2
438548fa1d3SLiaoChunyu}
439548fa1d3SLiaoChunyu
440548fa1d3SLiaoChunyudefine half @select_icmp_sgt_zero(i32 signext %a) {
441548fa1d3SLiaoChunyu; CHECK-LABEL: select_icmp_sgt_zero:
442548fa1d3SLiaoChunyu; CHECK:       # %bb.0:
44312fee611SLiaoChunyu; CHECK-NEXT:    slti a0, a0, 1
444548fa1d3SLiaoChunyu; CHECK-NEXT:    fcvt.h.w fa0, a0
445548fa1d3SLiaoChunyu; CHECK-NEXT:    ret
446548fa1d3SLiaoChunyu;
447548fa1d3SLiaoChunyu; CHECKIZHINX-LABEL: select_icmp_sgt_zero:
448548fa1d3SLiaoChunyu; CHECKIZHINX:       # %bb.0:
44912fee611SLiaoChunyu; CHECKIZHINX-NEXT:    slti a0, a0, 1
450548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT:    fcvt.h.w a0, a0
451548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT:    ret
452548fa1d3SLiaoChunyu;
453548fa1d3SLiaoChunyu; CHECKIZFHMIN-LABEL: select_icmp_sgt_zero:
454548fa1d3SLiaoChunyu; CHECKIZFHMIN:       # %bb.0:
45512fee611SLiaoChunyu; CHECKIZFHMIN-NEXT:    slti a0, a0, 1
456548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT:    fcvt.s.w fa5, a0
457548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT:    fcvt.h.s fa0, fa5
458548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT:    ret
459548fa1d3SLiaoChunyu;
460548fa1d3SLiaoChunyu; CHECKIZHINXMIN-LABEL: select_icmp_sgt_zero:
461548fa1d3SLiaoChunyu; CHECKIZHINXMIN:       # %bb.0:
46212fee611SLiaoChunyu; CHECKIZHINXMIN-NEXT:    slti a0, a0, 1
463548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT:    fcvt.s.w a0, a0
464548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT:    fcvt.h.s a0, a0
465548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT:    ret
466548fa1d3SLiaoChunyu  %1 = icmp sgt i32 %a, 0
467548fa1d3SLiaoChunyu  %2 = select i1 %1, half 0.000000e+00, half 1.000000e+00
468548fa1d3SLiaoChunyu  ret half %2
469548fa1d3SLiaoChunyu}
470