xref: /llvm-project/llvm/test/CodeGen/RISCV/bfloat-select-icmp.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_icmp_eq(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
866760279SAlex Bradbury; CHECK-LABEL: select_icmp_eq:
966760279SAlex Bradbury; CHECK:       # %bb.0:
1066760279SAlex Bradbury; CHECK-NEXT:    beq a0, a1, .LBB0_2
1166760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
12*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
1366760279SAlex Bradbury; CHECK-NEXT:  .LBB0_2:
1466760279SAlex Bradbury; CHECK-NEXT:    ret
1566760279SAlex Bradbury  %1 = icmp eq i32 %a, %b
1666760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
1766760279SAlex Bradbury  ret bfloat %2
1866760279SAlex Bradbury}
1966760279SAlex Bradbury
2066760279SAlex Bradburydefine bfloat @select_icmp_ne(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
2166760279SAlex Bradbury; CHECK-LABEL: select_icmp_ne:
2266760279SAlex Bradbury; CHECK:       # %bb.0:
2366760279SAlex Bradbury; CHECK-NEXT:    bne a0, a1, .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 = icmp ne i32 %a, %b
2966760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
3066760279SAlex Bradbury  ret bfloat %2
3166760279SAlex Bradbury}
3266760279SAlex Bradbury
3366760279SAlex Bradburydefine bfloat @select_icmp_ugt(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
3466760279SAlex Bradbury; CHECK-LABEL: select_icmp_ugt:
3566760279SAlex Bradbury; CHECK:       # %bb.0:
3666760279SAlex Bradbury; CHECK-NEXT:    bltu a1, a0, .LBB2_2
3766760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
38*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
3966760279SAlex Bradbury; CHECK-NEXT:  .LBB2_2:
4066760279SAlex Bradbury; CHECK-NEXT:    ret
4166760279SAlex Bradbury  %1 = icmp ugt i32 %a, %b
4266760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
4366760279SAlex Bradbury  ret bfloat %2
4466760279SAlex Bradbury}
4566760279SAlex Bradbury
4666760279SAlex Bradburydefine bfloat @select_icmp_uge(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
4766760279SAlex Bradbury; CHECK-LABEL: select_icmp_uge:
4866760279SAlex Bradbury; CHECK:       # %bb.0:
4966760279SAlex Bradbury; CHECK-NEXT:    bgeu a0, a1, .LBB3_2
5066760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
51*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
5266760279SAlex Bradbury; CHECK-NEXT:  .LBB3_2:
5366760279SAlex Bradbury; CHECK-NEXT:    ret
5466760279SAlex Bradbury  %1 = icmp uge i32 %a, %b
5566760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
5666760279SAlex Bradbury  ret bfloat %2
5766760279SAlex Bradbury}
5866760279SAlex Bradbury
5966760279SAlex Bradburydefine bfloat @select_icmp_ult(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
6066760279SAlex Bradbury; CHECK-LABEL: select_icmp_ult:
6166760279SAlex Bradbury; CHECK:       # %bb.0:
6266760279SAlex Bradbury; CHECK-NEXT:    bltu a0, a1, .LBB4_2
6366760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
64*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
6566760279SAlex Bradbury; CHECK-NEXT:  .LBB4_2:
6666760279SAlex Bradbury; CHECK-NEXT:    ret
6766760279SAlex Bradbury  %1 = icmp ult i32 %a, %b
6866760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
6966760279SAlex Bradbury  ret bfloat %2
7066760279SAlex Bradbury}
7166760279SAlex Bradbury
7266760279SAlex Bradburydefine bfloat @select_icmp_ule(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
7366760279SAlex Bradbury; CHECK-LABEL: select_icmp_ule:
7466760279SAlex Bradbury; CHECK:       # %bb.0:
7566760279SAlex Bradbury; CHECK-NEXT:    bgeu a1, a0, .LBB5_2
7666760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
77*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
7866760279SAlex Bradbury; CHECK-NEXT:  .LBB5_2:
7966760279SAlex Bradbury; CHECK-NEXT:    ret
8066760279SAlex Bradbury  %1 = icmp ule i32 %a, %b
8166760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
8266760279SAlex Bradbury  ret bfloat %2
8366760279SAlex Bradbury}
8466760279SAlex Bradbury
8566760279SAlex Bradburydefine bfloat @select_icmp_sgt(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
8666760279SAlex Bradbury; CHECK-LABEL: select_icmp_sgt:
8766760279SAlex Bradbury; CHECK:       # %bb.0:
8866760279SAlex Bradbury; CHECK-NEXT:    blt a1, a0, .LBB6_2
8966760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
90*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
9166760279SAlex Bradbury; CHECK-NEXT:  .LBB6_2:
9266760279SAlex Bradbury; CHECK-NEXT:    ret
9366760279SAlex Bradbury  %1 = icmp sgt i32 %a, %b
9466760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
9566760279SAlex Bradbury  ret bfloat %2
9666760279SAlex Bradbury}
9766760279SAlex Bradbury
9866760279SAlex Bradburydefine bfloat @select_icmp_sge(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
9966760279SAlex Bradbury; CHECK-LABEL: select_icmp_sge:
10066760279SAlex Bradbury; CHECK:       # %bb.0:
10166760279SAlex Bradbury; CHECK-NEXT:    bge a0, a1, .LBB7_2
10266760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
103*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
10466760279SAlex Bradbury; CHECK-NEXT:  .LBB7_2:
10566760279SAlex Bradbury; CHECK-NEXT:    ret
10666760279SAlex Bradbury  %1 = icmp sge i32 %a, %b
10766760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
10866760279SAlex Bradbury  ret bfloat %2
10966760279SAlex Bradbury}
11066760279SAlex Bradbury
11166760279SAlex Bradburydefine bfloat @select_icmp_slt(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
11266760279SAlex Bradbury; CHECK-LABEL: select_icmp_slt:
11366760279SAlex Bradbury; CHECK:       # %bb.0:
11466760279SAlex Bradbury; CHECK-NEXT:    blt a0, a1, .LBB8_2
11566760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
116*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
11766760279SAlex Bradbury; CHECK-NEXT:  .LBB8_2:
11866760279SAlex Bradbury; CHECK-NEXT:    ret
11966760279SAlex Bradbury  %1 = icmp slt i32 %a, %b
12066760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
12166760279SAlex Bradbury  ret bfloat %2
12266760279SAlex Bradbury}
12366760279SAlex Bradbury
12466760279SAlex Bradburydefine bfloat @select_icmp_sle(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) {
12566760279SAlex Bradbury; CHECK-LABEL: select_icmp_sle:
12666760279SAlex Bradbury; CHECK:       # %bb.0:
12766760279SAlex Bradbury; CHECK-NEXT:    bge a1, a0, .LBB9_2
12866760279SAlex Bradbury; CHECK-NEXT:  # %bb.1:
129*1c874bbbSCraig Topper; CHECK-NEXT:    fmv.s fa0, fa1
13066760279SAlex Bradbury; CHECK-NEXT:  .LBB9_2:
13166760279SAlex Bradbury; CHECK-NEXT:    ret
13266760279SAlex Bradbury  %1 = icmp sle i32 %a, %b
13366760279SAlex Bradbury  %2 = select i1 %1, bfloat %c, bfloat %d
13466760279SAlex Bradbury  ret bfloat %2
13566760279SAlex Bradbury}
13666760279SAlex Bradbury
13766760279SAlex Bradburydefine bfloat @select_icmp_slt_one(i32 signext %a) {
13866760279SAlex Bradbury; CHECK-LABEL: select_icmp_slt_one:
13966760279SAlex Bradbury; CHECK:       # %bb.0:
14066760279SAlex Bradbury; CHECK-NEXT:    slti a0, a0, 1
141a8c502a5SCraig Topper; CHECK-NEXT:    fcvt.s.w fa5, a0
142a8c502a5SCraig Topper; CHECK-NEXT:    fcvt.bf16.s fa0, fa5
14366760279SAlex Bradbury; CHECK-NEXT:    ret
14466760279SAlex Bradbury  %1 = icmp slt i32 %a, 1
14566760279SAlex Bradbury  %2 = select i1 %1, bfloat 1.000000e+00, bfloat 0.000000e+00
14666760279SAlex Bradbury  ret bfloat %2
14766760279SAlex Bradbury}
14866760279SAlex Bradbury
14966760279SAlex Bradburydefine bfloat @select_icmp_sgt_zero(i32 signext %a) {
15066760279SAlex Bradbury; CHECK-LABEL: select_icmp_sgt_zero:
15166760279SAlex Bradbury; CHECK:       # %bb.0:
152a8c502a5SCraig Topper; CHECK-NEXT:    slti a0, a0, 1
153a8c502a5SCraig Topper; CHECK-NEXT:    fcvt.s.w fa5, a0
154a8c502a5SCraig Topper; CHECK-NEXT:    fcvt.bf16.s fa0, fa5
15566760279SAlex Bradbury; CHECK-NEXT:    ret
15666760279SAlex Bradbury  %1 = icmp sgt i32 %a, 0
15766760279SAlex Bradbury  %2 = select i1 %1, bfloat 0.000000e+00, bfloat 1.000000e+00
15866760279SAlex Bradbury  ret bfloat %2
15966760279SAlex Bradbury}
160