xref: /llvm-project/llvm/test/CodeGen/RISCV/bfloat-select-fcmp.ll (revision 1c874bbbd67c5795113fa307512ea514f06dac29)
166760279SAlex Bradbury; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
232597685SJianjian Guan; RUN: llc -mtriple=riscv32 -mattr=+zfbfmin -verify-machineinstrs \
366760279SAlex Bradbury; RUN:   -target-abi ilp32f < %s | FileCheck %s
432597685SJianjian Guan; RUN: llc -mtriple=riscv64 -mattr=+zfbfmin -verify-machineinstrs \
566760279SAlex Bradbury; RUN:   -target-abi lp64f < %s | FileCheck %s
666760279SAlex Bradbury
766760279SAlex Bradburydefine bfloat @select_fcmp_false(bfloat %a, bfloat %b) nounwind {
866760279SAlex Bradbury; CHECK-LABEL: select_fcmp_false:
966760279SAlex Bradbury; CHECK:       # %bb.0:
1066760279SAlex Bradbury; CHECK-NEXT:    fmv.s fa0, fa1
1166760279SAlex Bradbury; CHECK-NEXT:    ret
1266760279SAlex Bradbury  %1 = fcmp false bfloat %a, %b
1366760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
1466760279SAlex Bradbury  ret bfloat %2
1566760279SAlex Bradbury}
1666760279SAlex Bradbury
1766760279SAlex Bradburydefine bfloat @select_fcmp_oeq(bfloat %a, bfloat %b) nounwind {
1866760279SAlex Bradbury; CHECK-LABEL: select_fcmp_oeq:
1966760279SAlex Bradbury; CHECK:       # %bb.0:
20*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
21*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
22*1c874bbbSCraig Topper; CHECK-NEXT:    feq.s a0, fa4, fa5
2366760279SAlex Bradbury; CHECK-NEXT:    bnez a0, .LBB1_2
2466760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
25*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
2666760279SAlex Bradbury; CHECK-NEXT:  .LBB1_2:
2766760279SAlex Bradbury; CHECK-NEXT:    ret
2866760279SAlex Bradbury  %1 = fcmp oeq bfloat %a, %b
2966760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
3066760279SAlex Bradbury  ret bfloat %2
3166760279SAlex Bradbury}
3266760279SAlex Bradbury
3366760279SAlex Bradburydefine bfloat @select_fcmp_ogt(bfloat %a, bfloat %b) nounwind {
3466760279SAlex Bradbury; CHECK-LABEL: select_fcmp_ogt:
3566760279SAlex Bradbury; CHECK:       # %bb.0:
3666760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0
3766760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa4, fa1
3866760279SAlex Bradbury; CHECK-NEXT:    flt.s a0, fa4, fa5
3966760279SAlex Bradbury; CHECK-NEXT:    bnez a0, .LBB2_2
4066760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
41*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
4266760279SAlex Bradbury; CHECK-NEXT:  .LBB2_2:
4366760279SAlex Bradbury; CHECK-NEXT:    ret
4466760279SAlex Bradbury  %1 = fcmp ogt bfloat %a, %b
4566760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
4666760279SAlex Bradbury  ret bfloat %2
4766760279SAlex Bradbury}
4866760279SAlex Bradbury
4966760279SAlex Bradburydefine bfloat @select_fcmp_oge(bfloat %a, bfloat %b) nounwind {
5066760279SAlex Bradbury; CHECK-LABEL: select_fcmp_oge:
5166760279SAlex Bradbury; CHECK:       # %bb.0:
5266760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0
5366760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa4, fa1
5466760279SAlex Bradbury; CHECK-NEXT:    fle.s a0, fa4, fa5
5566760279SAlex Bradbury; CHECK-NEXT:    bnez a0, .LBB3_2
5666760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
57*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
5866760279SAlex Bradbury; CHECK-NEXT:  .LBB3_2:
5966760279SAlex Bradbury; CHECK-NEXT:    ret
6066760279SAlex Bradbury  %1 = fcmp oge bfloat %a, %b
6166760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
6266760279SAlex Bradbury  ret bfloat %2
6366760279SAlex Bradbury}
6466760279SAlex Bradbury
6566760279SAlex Bradburydefine bfloat @select_fcmp_olt(bfloat %a, bfloat %b) nounwind {
6666760279SAlex Bradbury; CHECK-LABEL: select_fcmp_olt:
6766760279SAlex Bradbury; CHECK:       # %bb.0:
68*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
69*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
70*1c874bbbSCraig Topper; CHECK-NEXT:    flt.s a0, fa4, fa5
7166760279SAlex Bradbury; CHECK-NEXT:    bnez a0, .LBB4_2
7266760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
73*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
7466760279SAlex Bradbury; CHECK-NEXT:  .LBB4_2:
7566760279SAlex Bradbury; CHECK-NEXT:    ret
7666760279SAlex Bradbury  %1 = fcmp olt bfloat %a, %b
7766760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
7866760279SAlex Bradbury  ret bfloat %2
7966760279SAlex Bradbury}
8066760279SAlex Bradbury
8166760279SAlex Bradburydefine bfloat @select_fcmp_ole(bfloat %a, bfloat %b) nounwind {
8266760279SAlex Bradbury; CHECK-LABEL: select_fcmp_ole:
8366760279SAlex Bradbury; CHECK:       # %bb.0:
84*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
85*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
86*1c874bbbSCraig Topper; CHECK-NEXT:    fle.s a0, fa4, fa5
8766760279SAlex Bradbury; CHECK-NEXT:    bnez a0, .LBB5_2
8866760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
89*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
9066760279SAlex Bradbury; CHECK-NEXT:  .LBB5_2:
9166760279SAlex Bradbury; CHECK-NEXT:    ret
9266760279SAlex Bradbury  %1 = fcmp ole bfloat %a, %b
9366760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
9466760279SAlex Bradbury  ret bfloat %2
9566760279SAlex Bradbury}
9666760279SAlex Bradbury
9766760279SAlex Bradburydefine bfloat @select_fcmp_one(bfloat %a, bfloat %b) nounwind {
9866760279SAlex Bradbury; CHECK-LABEL: select_fcmp_one:
9966760279SAlex Bradbury; CHECK:       # %bb.0:
100*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
101*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
102*1c874bbbSCraig Topper; CHECK-NEXT:    flt.s a0, fa4, fa5
103*1c874bbbSCraig Topper; CHECK-NEXT:    flt.s a1, fa5, fa4
10466760279SAlex Bradbury; CHECK-NEXT:    or a0, a1, a0
10566760279SAlex Bradbury; CHECK-NEXT:    bnez a0, .LBB6_2
10666760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
107*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
10866760279SAlex Bradbury; CHECK-NEXT:  .LBB6_2:
10966760279SAlex Bradbury; CHECK-NEXT:    ret
11066760279SAlex Bradbury  %1 = fcmp one bfloat %a, %b
11166760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
11266760279SAlex Bradbury  ret bfloat %2
11366760279SAlex Bradbury}
11466760279SAlex Bradbury
11566760279SAlex Bradburydefine bfloat @select_fcmp_ord(bfloat %a, bfloat %b) nounwind {
11666760279SAlex Bradbury; CHECK-LABEL: select_fcmp_ord:
11766760279SAlex Bradbury; CHECK:       # %bb.0:
11866760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
11966760279SAlex Bradbury; CHECK-NEXT:    feq.s a0, fa5, fa5
120*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0
121*1c874bbbSCraig Topper; CHECK-NEXT:    feq.s a1, fa5, fa5
12266760279SAlex Bradbury; CHECK-NEXT:    and a0, a1, a0
12366760279SAlex Bradbury; CHECK-NEXT:    bnez a0, .LBB7_2
12466760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
125*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
12666760279SAlex Bradbury; CHECK-NEXT:  .LBB7_2:
12766760279SAlex Bradbury; CHECK-NEXT:    ret
12866760279SAlex Bradbury  %1 = fcmp ord bfloat %a, %b
12966760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
13066760279SAlex Bradbury  ret bfloat %2
13166760279SAlex Bradbury}
13266760279SAlex Bradbury
13366760279SAlex Bradburydefine bfloat @select_fcmp_ueq(bfloat %a, bfloat %b) nounwind {
13466760279SAlex Bradbury; CHECK-LABEL: select_fcmp_ueq:
13566760279SAlex Bradbury; CHECK:       # %bb.0:
136*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
137*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
138*1c874bbbSCraig Topper; CHECK-NEXT:    flt.s a0, fa4, fa5
139*1c874bbbSCraig Topper; CHECK-NEXT:    flt.s a1, fa5, fa4
14066760279SAlex Bradbury; CHECK-NEXT:    or a0, a1, a0
14166760279SAlex Bradbury; CHECK-NEXT:    beqz a0, .LBB8_2
14266760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
143*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
14466760279SAlex Bradbury; CHECK-NEXT:  .LBB8_2:
14566760279SAlex Bradbury; CHECK-NEXT:    ret
14666760279SAlex Bradbury  %1 = fcmp ueq bfloat %a, %b
14766760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
14866760279SAlex Bradbury  ret bfloat %2
14966760279SAlex Bradbury}
15066760279SAlex Bradbury
15166760279SAlex Bradburydefine bfloat @select_fcmp_ugt(bfloat %a, bfloat %b) nounwind {
15266760279SAlex Bradbury; CHECK-LABEL: select_fcmp_ugt:
15366760279SAlex Bradbury; CHECK:       # %bb.0:
154*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
155*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
156*1c874bbbSCraig Topper; CHECK-NEXT:    fle.s a0, fa4, fa5
15766760279SAlex Bradbury; CHECK-NEXT:    beqz a0, .LBB9_2
15866760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
159*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
16066760279SAlex Bradbury; CHECK-NEXT:  .LBB9_2:
16166760279SAlex Bradbury; CHECK-NEXT:    ret
16266760279SAlex Bradbury  %1 = fcmp ugt bfloat %a, %b
16366760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
16466760279SAlex Bradbury  ret bfloat %2
16566760279SAlex Bradbury}
16666760279SAlex Bradbury
16766760279SAlex Bradburydefine bfloat @select_fcmp_uge(bfloat %a, bfloat %b) nounwind {
16866760279SAlex Bradbury; CHECK-LABEL: select_fcmp_uge:
16966760279SAlex Bradbury; CHECK:       # %bb.0:
170*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
171*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
172*1c874bbbSCraig Topper; CHECK-NEXT:    flt.s a0, fa4, fa5
17366760279SAlex Bradbury; CHECK-NEXT:    beqz a0, .LBB10_2
17466760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
175*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
17666760279SAlex Bradbury; CHECK-NEXT:  .LBB10_2:
17766760279SAlex Bradbury; CHECK-NEXT:    ret
17866760279SAlex Bradbury  %1 = fcmp uge bfloat %a, %b
17966760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
18066760279SAlex Bradbury  ret bfloat %2
18166760279SAlex Bradbury}
18266760279SAlex Bradbury
18366760279SAlex Bradburydefine bfloat @select_fcmp_ult(bfloat %a, bfloat %b) nounwind {
18466760279SAlex Bradbury; CHECK-LABEL: select_fcmp_ult:
18566760279SAlex Bradbury; CHECK:       # %bb.0:
18666760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0
18766760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa4, fa1
18866760279SAlex Bradbury; CHECK-NEXT:    fle.s a0, fa4, fa5
18966760279SAlex Bradbury; CHECK-NEXT:    beqz a0, .LBB11_2
19066760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
191*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
19266760279SAlex Bradbury; CHECK-NEXT:  .LBB11_2:
19366760279SAlex Bradbury; CHECK-NEXT:    ret
19466760279SAlex Bradbury  %1 = fcmp ult bfloat %a, %b
19566760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
19666760279SAlex Bradbury  ret bfloat %2
19766760279SAlex Bradbury}
19866760279SAlex Bradbury
19966760279SAlex Bradburydefine bfloat @select_fcmp_ule(bfloat %a, bfloat %b) nounwind {
20066760279SAlex Bradbury; CHECK-LABEL: select_fcmp_ule:
20166760279SAlex Bradbury; CHECK:       # %bb.0:
20266760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0
20366760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa4, fa1
20466760279SAlex Bradbury; CHECK-NEXT:    flt.s a0, fa4, fa5
20566760279SAlex Bradbury; CHECK-NEXT:    beqz a0, .LBB12_2
20666760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
207*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
20866760279SAlex Bradbury; CHECK-NEXT:  .LBB12_2:
20966760279SAlex Bradbury; CHECK-NEXT:    ret
21066760279SAlex Bradbury  %1 = fcmp ule bfloat %a, %b
21166760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
21266760279SAlex Bradbury  ret bfloat %2
21366760279SAlex Bradbury}
21466760279SAlex Bradbury
21566760279SAlex Bradburydefine bfloat @select_fcmp_une(bfloat %a, bfloat %b) nounwind {
21666760279SAlex Bradbury; CHECK-LABEL: select_fcmp_une:
21766760279SAlex Bradbury; CHECK:       # %bb.0:
218*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
219*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
220*1c874bbbSCraig Topper; CHECK-NEXT:    feq.s a0, fa4, fa5
22166760279SAlex Bradbury; CHECK-NEXT:    beqz a0, .LBB13_2
22266760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
223*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
22466760279SAlex Bradbury; CHECK-NEXT:  .LBB13_2:
22566760279SAlex Bradbury; CHECK-NEXT:    ret
22666760279SAlex Bradbury  %1 = fcmp une bfloat %a, %b
22766760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
22866760279SAlex Bradbury  ret bfloat %2
22966760279SAlex Bradbury}
23066760279SAlex Bradbury
23166760279SAlex Bradburydefine bfloat @select_fcmp_uno(bfloat %a, bfloat %b) nounwind {
23266760279SAlex Bradbury; CHECK-LABEL: select_fcmp_uno:
23366760279SAlex Bradbury; CHECK:       # %bb.0:
23466760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
23566760279SAlex Bradbury; CHECK-NEXT:    feq.s a0, fa5, fa5
236*1c874bbbSCraig Topper; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0
237*1c874bbbSCraig Topper; CHECK-NEXT:    feq.s a1, fa5, fa5
23866760279SAlex Bradbury; CHECK-NEXT:    and a0, a1, a0
23966760279SAlex Bradbury; CHECK-NEXT:    beqz a0, .LBB14_2
24066760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
241*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
24266760279SAlex Bradbury; CHECK-NEXT:  .LBB14_2:
24366760279SAlex Bradbury; CHECK-NEXT:    ret
24466760279SAlex Bradbury  %1 = fcmp uno bfloat %a, %b
24566760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
24666760279SAlex Bradbury  ret bfloat %2
24766760279SAlex Bradbury}
24866760279SAlex Bradbury
24966760279SAlex Bradburydefine bfloat @select_fcmp_true(bfloat %a, bfloat %b) nounwind {
25066760279SAlex Bradbury; CHECK-LABEL: select_fcmp_true:
25166760279SAlex Bradbury; CHECK:       # %bb.0:
25266760279SAlex Bradbury; CHECK-NEXT:    ret
25366760279SAlex Bradbury  %1 = fcmp true bfloat %a, %b
25466760279SAlex Bradbury  %2 = select i1 %1, bfloat %a, bfloat %b
25566760279SAlex Bradbury  ret bfloat %2
25666760279SAlex Bradbury}
25766760279SAlex Bradbury
25866760279SAlex Bradbury; Ensure that ISel succeeds for a select+fcmp that has an i32 result type.
25966760279SAlex Bradburydefine i32 @i32_select_fcmp_oeq(bfloat %a, bfloat %b, i32 %c, i32 %d) nounwind {
26066760279SAlex Bradbury; CHECK-LABEL: i32_select_fcmp_oeq:
26166760279SAlex Bradbury; CHECK:       # %bb.0:
26266760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
26366760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
26466760279SAlex Bradbury; CHECK-NEXT:    feq.s a2, fa4, fa5
26566760279SAlex Bradbury; CHECK-NEXT:    bnez a2, .LBB16_2
26666760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
26766760279SAlex Bradbury; CHECK-NEXT:    mv a0, a1
26866760279SAlex Bradbury; CHECK-NEXT:  .LBB16_2:
26966760279SAlex Bradbury; CHECK-NEXT:    ret
27066760279SAlex Bradbury  %1 = fcmp oeq bfloat %a, %b
27166760279SAlex Bradbury  %2 = select i1 %1, i32 %c, i32 %d
27266760279SAlex Bradbury  ret i32 %2
27366760279SAlex Bradbury}
27466760279SAlex Bradbury
27566760279SAlex Bradburydefine i32 @select_fcmp_oeq_1_2(bfloat %a, bfloat %b) {
27666760279SAlex Bradbury; CHECK-LABEL: select_fcmp_oeq_1_2:
27766760279SAlex Bradbury; CHECK:       # %bb.0:
27866760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
27966760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
28066760279SAlex Bradbury; CHECK-NEXT:    feq.s a0, fa4, fa5
28166760279SAlex Bradbury; CHECK-NEXT:    li a1, 2
28266760279SAlex Bradbury; CHECK-NEXT:    sub a0, a1, a0
28366760279SAlex Bradbury; CHECK-NEXT:    ret
28466760279SAlex Bradbury  %1 = fcmp fast oeq bfloat %a, %b
28566760279SAlex Bradbury  %2 = select i1 %1, i32 1, i32 2
28666760279SAlex Bradbury  ret i32 %2
28766760279SAlex Bradbury}
28866760279SAlex Bradbury
28966760279SAlex Bradburydefine signext i32 @select_fcmp_uge_negone_zero(bfloat %a, bfloat %b) nounwind {
29066760279SAlex Bradbury; CHECK-LABEL: select_fcmp_uge_negone_zero:
29166760279SAlex Bradbury; CHECK:       # %bb.0:
29266760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
29366760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
29466760279SAlex Bradbury; CHECK-NEXT:    fle.s a0, fa4, fa5
29566760279SAlex Bradbury; CHECK-NEXT:    addi a0, a0, -1
29666760279SAlex Bradbury; CHECK-NEXT:    ret
29766760279SAlex Bradbury  %1 = fcmp ugt bfloat %a, %b
29866760279SAlex Bradbury  %2 = select i1 %1, i32 -1, i32 0
29966760279SAlex Bradbury  ret i32 %2
30066760279SAlex Bradbury}
30166760279SAlex Bradbury
30266760279SAlex Bradburydefine signext i32 @select_fcmp_uge_1_2(bfloat %a, bfloat %b) nounwind {
30366760279SAlex Bradbury; CHECK-LABEL: select_fcmp_uge_1_2:
30466760279SAlex Bradbury; CHECK:       # %bb.0:
30566760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa1
30666760279SAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa4, fa0
30766760279SAlex Bradbury; CHECK-NEXT:    fle.s a0, fa4, fa5
30866760279SAlex Bradbury; CHECK-NEXT:    addi a0, a0, 1
30966760279SAlex Bradbury; CHECK-NEXT:    ret
31066760279SAlex Bradbury  %1 = fcmp ugt bfloat %a, %b
31166760279SAlex Bradbury  %2 = select i1 %1, i32 1, i32 2
31266760279SAlex Bradbury  ret i32 %2
31366760279SAlex Bradbury}
314