xref: /llvm-project/llvm/test/CodeGen/RISCV/bfloat-br-fcmp.ll (revision 9122c5235ec85ce0c0ad337e862b006e7b349d84)
18a71f44eSAlex 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 \
38a71f44eSAlex Bradbury; RUN:   -target-abi ilp32f < %s | FileCheck -check-prefix=RV32IZFBFMIN %s
432597685SJianjian Guan; RUN: llc -mtriple=riscv64 -mattr=+zfbfmin -verify-machineinstrs \
58a71f44eSAlex Bradbury; RUN:   -target-abi lp64f < %s | FileCheck -check-prefix=RV64IZFBFMIN %s
68a71f44eSAlex Bradbury
78a71f44eSAlex Bradburydeclare void @abort()
88a71f44eSAlex Bradburydeclare void @exit(i32)
98a71f44eSAlex Bradburydeclare bfloat @dummy(bfloat)
108a71f44eSAlex Bradbury
118a71f44eSAlex Bradburydefine void @br_fcmp_false(bfloat %a, bfloat %b) nounwind {
128a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_false:
138a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
148a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    li a0, 1
158a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB0_2
168a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.then
178a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
188a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB0_2: # %if.else
198a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
208a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
21eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
228a71f44eSAlex Bradbury;
238a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_false:
248a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
258a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    li a0, 1
268a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB0_2
278a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.then
288a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
298a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB0_2: # %if.else
308a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
318a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
32eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
338a71f44eSAlex Bradbury  %1 = fcmp false bfloat %a, %b
348a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
358a71f44eSAlex Bradburyif.then:
368a71f44eSAlex Bradbury  ret void
378a71f44eSAlex Bradburyif.else:
388a71f44eSAlex Bradbury  tail call void @abort()
398a71f44eSAlex Bradbury  unreachable
408a71f44eSAlex Bradbury}
418a71f44eSAlex Bradbury
428a71f44eSAlex Bradburydefine void @br_fcmp_oeq(bfloat %a, bfloat %b) nounwind {
438a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_oeq:
448a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
458a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
468a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
478a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    feq.s a0, fa4, fa5
488a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB1_2
498a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
508a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
518a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB1_2: # %if.then
528a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
538a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
54eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
558a71f44eSAlex Bradbury;
568a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_oeq:
578a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
588a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
598a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
608a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    feq.s a0, fa4, fa5
618a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB1_2
628a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
638a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
648a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB1_2: # %if.then
658a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
668a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
67eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
688a71f44eSAlex Bradbury  %1 = fcmp oeq bfloat %a, %b
698a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
708a71f44eSAlex Bradburyif.else:
718a71f44eSAlex Bradbury  ret void
728a71f44eSAlex Bradburyif.then:
738a71f44eSAlex Bradbury  tail call void @abort()
748a71f44eSAlex Bradbury  unreachable
758a71f44eSAlex Bradbury}
768a71f44eSAlex Bradbury
778a71f44eSAlex Bradburydefine void @br_fcmp_oeq_alt(bfloat %a, bfloat %b) nounwind {
788a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_oeq_alt:
798a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
808a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
818a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
828a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    feq.s a0, fa4, fa5
838a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB2_2
848a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
858a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
868a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB2_2: # %if.then
878a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
888a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
89eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
908a71f44eSAlex Bradbury;
918a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_oeq_alt:
928a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
938a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
948a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
958a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    feq.s a0, fa4, fa5
968a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB2_2
978a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
988a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
998a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB2_2: # %if.then
1008a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
1018a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
102eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
1038a71f44eSAlex Bradbury  %1 = fcmp oeq bfloat %a, %b
1048a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
1058a71f44eSAlex Bradburyif.then:
1068a71f44eSAlex Bradbury  tail call void @abort()
1078a71f44eSAlex Bradbury  unreachable
1088a71f44eSAlex Bradburyif.else:
1098a71f44eSAlex Bradbury  ret void
1108a71f44eSAlex Bradbury}
1118a71f44eSAlex Bradbury
1128a71f44eSAlex Bradburydefine void @br_fcmp_ogt(bfloat %a, bfloat %b) nounwind {
1138a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_ogt:
1148a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
1158a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa0
1168a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa1
1178a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
1188a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB3_2
1198a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
1208a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
1218a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB3_2: # %if.then
1228a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
1238a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
124eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
1258a71f44eSAlex Bradbury;
1268a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_ogt:
1278a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
1288a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa0
1298a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa1
1308a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
1318a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB3_2
1328a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
1338a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
1348a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB3_2: # %if.then
1358a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
1368a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
137eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
1388a71f44eSAlex Bradbury  %1 = fcmp ogt bfloat %a, %b
1398a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
1408a71f44eSAlex Bradburyif.else:
1418a71f44eSAlex Bradbury  ret void
1428a71f44eSAlex Bradburyif.then:
1438a71f44eSAlex Bradbury  tail call void @abort()
1448a71f44eSAlex Bradbury  unreachable
1458a71f44eSAlex Bradbury}
1468a71f44eSAlex Bradbury
1478a71f44eSAlex Bradburydefine void @br_fcmp_oge(bfloat %a, bfloat %b) nounwind {
1488a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_oge:
1498a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
1508a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa0
1518a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa1
1528a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fle.s a0, fa4, fa5
1538a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB4_2
1548a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
1558a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
1568a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB4_2: # %if.then
1578a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
1588a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
159eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
1608a71f44eSAlex Bradbury;
1618a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_oge:
1628a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
1638a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa0
1648a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa1
1658a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fle.s a0, fa4, fa5
1668a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB4_2
1678a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
1688a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
1698a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB4_2: # %if.then
1708a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
1718a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
172eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
1738a71f44eSAlex Bradbury  %1 = fcmp oge bfloat %a, %b
1748a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
1758a71f44eSAlex Bradburyif.else:
1768a71f44eSAlex Bradbury  ret void
1778a71f44eSAlex Bradburyif.then:
1788a71f44eSAlex Bradbury  tail call void @abort()
1798a71f44eSAlex Bradbury  unreachable
1808a71f44eSAlex Bradbury}
1818a71f44eSAlex Bradbury
1828a71f44eSAlex Bradburydefine void @br_fcmp_olt(bfloat %a, bfloat %b) nounwind {
1838a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_olt:
1848a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
1858a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
1868a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
1878a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
1888a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB5_2
1898a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
1908a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
1918a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB5_2: # %if.then
1928a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
1938a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
194eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
1958a71f44eSAlex Bradbury;
1968a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_olt:
1978a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
1988a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
1998a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
2008a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
2018a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB5_2
2028a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
2038a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
2048a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB5_2: # %if.then
2058a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
2068a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
207eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
2088a71f44eSAlex Bradbury  %1 = fcmp olt bfloat %a, %b
2098a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
2108a71f44eSAlex Bradburyif.else:
2118a71f44eSAlex Bradbury  ret void
2128a71f44eSAlex Bradburyif.then:
2138a71f44eSAlex Bradbury  tail call void @abort()
2148a71f44eSAlex Bradbury  unreachable
2158a71f44eSAlex Bradbury}
2168a71f44eSAlex Bradbury
2178a71f44eSAlex Bradburydefine void @br_fcmp_ole(bfloat %a, bfloat %b) nounwind {
2188a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_ole:
2198a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
2208a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
2218a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
2228a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fle.s a0, fa4, fa5
2238a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB6_2
2248a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
2258a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
2268a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB6_2: # %if.then
2278a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
2288a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
229eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
2308a71f44eSAlex Bradbury;
2318a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_ole:
2328a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
2338a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
2348a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
2358a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fle.s a0, fa4, fa5
2368a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB6_2
2378a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
2388a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
2398a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB6_2: # %if.then
2408a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
2418a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
242eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
2438a71f44eSAlex Bradbury  %1 = fcmp ole bfloat %a, %b
2448a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
2458a71f44eSAlex Bradburyif.else:
2468a71f44eSAlex Bradbury  ret void
2478a71f44eSAlex Bradburyif.then:
2488a71f44eSAlex Bradbury  tail call void @abort()
2498a71f44eSAlex Bradbury  unreachable
2508a71f44eSAlex Bradbury}
2518a71f44eSAlex Bradbury
2528a71f44eSAlex Bradburydefine void @br_fcmp_one(bfloat %a, bfloat %b) nounwind {
2538a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_one:
2548a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
2558a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
2568a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
2578a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
2588a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    flt.s a1, fa5, fa4
2598a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    or a0, a1, a0
2608a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB7_2
2618a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
2628a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
2638a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB7_2: # %if.then
2648a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
2658a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
266eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
2678a71f44eSAlex Bradbury;
2688a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_one:
2698a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
2708a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
2718a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
2728a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
2738a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    flt.s a1, fa5, fa4
2748a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    or a0, a1, a0
2758a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB7_2
2768a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
2778a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
2788a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB7_2: # %if.then
2798a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
2808a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
281eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
2828a71f44eSAlex Bradbury  %1 = fcmp one bfloat %a, %b
2838a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
2848a71f44eSAlex Bradburyif.else:
2858a71f44eSAlex Bradbury  ret void
2868a71f44eSAlex Bradburyif.then:
2878a71f44eSAlex Bradbury  tail call void @abort()
2888a71f44eSAlex Bradbury  unreachable
2898a71f44eSAlex Bradbury}
2908a71f44eSAlex Bradbury
2918a71f44eSAlex Bradburydefine void @br_fcmp_ord(bfloat %a, bfloat %b) nounwind {
2928a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_ord:
2938a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
2948a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
295*9122c523SPengcheng Wang; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
2968a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    feq.s a0, fa5, fa5
297*9122c523SPengcheng Wang; RV32IZFBFMIN-NEXT:    feq.s a1, fa4, fa4
2988a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    and a0, a1, a0
2998a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB8_2
3008a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
3018a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
3028a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB8_2: # %if.then
3038a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
3048a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
305eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
3068a71f44eSAlex Bradbury;
3078a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_ord:
3088a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
3098a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
310*9122c523SPengcheng Wang; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
3118a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    feq.s a0, fa5, fa5
312*9122c523SPengcheng Wang; RV64IZFBFMIN-NEXT:    feq.s a1, fa4, fa4
3138a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    and a0, a1, a0
3148a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB8_2
3158a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
3168a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
3178a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB8_2: # %if.then
3188a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
3198a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
320eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
3218a71f44eSAlex Bradbury  %1 = fcmp ord bfloat %a, %b
3228a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
3238a71f44eSAlex Bradburyif.else:
3248a71f44eSAlex Bradbury  ret void
3258a71f44eSAlex Bradburyif.then:
3268a71f44eSAlex Bradbury  tail call void @abort()
3278a71f44eSAlex Bradbury  unreachable
3288a71f44eSAlex Bradbury}
3298a71f44eSAlex Bradbury
3308a71f44eSAlex Bradburydefine void @br_fcmp_ueq(bfloat %a, bfloat %b) nounwind {
3318a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_ueq:
3328a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
3338a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
3348a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
3358a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
3368a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    flt.s a1, fa5, fa4
3378a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    or a0, a1, a0
3388a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    beqz a0, .LBB9_2
3398a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
3408a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
3418a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB9_2: # %if.then
3428a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
3438a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
344eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
3458a71f44eSAlex Bradbury;
3468a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_ueq:
3478a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
3488a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
3498a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
3508a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
3518a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    flt.s a1, fa5, fa4
3528a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    or a0, a1, a0
3538a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    beqz a0, .LBB9_2
3548a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
3558a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
3568a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB9_2: # %if.then
3578a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
3588a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
359eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
3608a71f44eSAlex Bradbury  %1 = fcmp ueq bfloat %a, %b
3618a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
3628a71f44eSAlex Bradburyif.else:
3638a71f44eSAlex Bradbury  ret void
3648a71f44eSAlex Bradburyif.then:
3658a71f44eSAlex Bradbury  tail call void @abort()
3668a71f44eSAlex Bradbury  unreachable
3678a71f44eSAlex Bradbury}
3688a71f44eSAlex Bradbury
3698a71f44eSAlex Bradburydefine void @br_fcmp_ugt(bfloat %a, bfloat %b) nounwind {
3708a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_ugt:
3718a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
3728a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
3738a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
3748a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fle.s a0, fa4, fa5
3758a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    beqz a0, .LBB10_2
3768a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
3778a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
3788a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB10_2: # %if.then
3798a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
3808a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
381eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
3828a71f44eSAlex Bradbury;
3838a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_ugt:
3848a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
3858a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
3868a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
3878a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fle.s a0, fa4, fa5
3888a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    beqz a0, .LBB10_2
3898a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
3908a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
3918a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB10_2: # %if.then
3928a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
3938a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
394eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
3958a71f44eSAlex Bradbury  %1 = fcmp ugt bfloat %a, %b
3968a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
3978a71f44eSAlex Bradburyif.else:
3988a71f44eSAlex Bradbury  ret void
3998a71f44eSAlex Bradburyif.then:
4008a71f44eSAlex Bradbury  tail call void @abort()
4018a71f44eSAlex Bradbury  unreachable
4028a71f44eSAlex Bradbury}
4038a71f44eSAlex Bradbury
4048a71f44eSAlex Bradburydefine void @br_fcmp_uge(bfloat %a, bfloat %b) nounwind {
4058a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_uge:
4068a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
4078a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
4088a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
4098a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
4108a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    beqz a0, .LBB11_2
4118a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
4128a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
4138a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB11_2: # %if.then
4148a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
4158a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
416eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
4178a71f44eSAlex Bradbury;
4188a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_uge:
4198a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
4208a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
4218a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
4228a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
4238a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    beqz a0, .LBB11_2
4248a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
4258a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
4268a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB11_2: # %if.then
4278a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
4288a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
429eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
4308a71f44eSAlex Bradbury  %1 = fcmp uge bfloat %a, %b
4318a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
4328a71f44eSAlex Bradburyif.else:
4338a71f44eSAlex Bradbury  ret void
4348a71f44eSAlex Bradburyif.then:
4358a71f44eSAlex Bradbury  tail call void @abort()
4368a71f44eSAlex Bradbury  unreachable
4378a71f44eSAlex Bradbury}
4388a71f44eSAlex Bradbury
4398a71f44eSAlex Bradburydefine void @br_fcmp_ult(bfloat %a, bfloat %b) nounwind {
4408a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_ult:
4418a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
4428a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa0
4438a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa1
4448a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fle.s a0, fa4, fa5
4458a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    beqz a0, .LBB12_2
4468a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
4478a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
4488a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB12_2: # %if.then
4498a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
4508a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
451eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
4528a71f44eSAlex Bradbury;
4538a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_ult:
4548a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
4558a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa0
4568a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa1
4578a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fle.s a0, fa4, fa5
4588a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    beqz a0, .LBB12_2
4598a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
4608a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
4618a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB12_2: # %if.then
4628a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
4638a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
464eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
4658a71f44eSAlex Bradbury  %1 = fcmp ult bfloat %a, %b
4668a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
4678a71f44eSAlex Bradburyif.else:
4688a71f44eSAlex Bradbury  ret void
4698a71f44eSAlex Bradburyif.then:
4708a71f44eSAlex Bradbury  tail call void @abort()
4718a71f44eSAlex Bradbury  unreachable
4728a71f44eSAlex Bradbury}
4738a71f44eSAlex Bradbury
4748a71f44eSAlex Bradburydefine void @br_fcmp_ule(bfloat %a, bfloat %b) nounwind {
4758a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_ule:
4768a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
4778a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa0
4788a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa1
4798a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
4808a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    beqz a0, .LBB13_2
4818a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
4828a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
4838a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB13_2: # %if.then
4848a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
4858a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
486eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
4878a71f44eSAlex Bradbury;
4888a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_ule:
4898a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
4908a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa0
4918a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa1
4928a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    flt.s a0, fa4, fa5
4938a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    beqz a0, .LBB13_2
4948a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
4958a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
4968a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB13_2: # %if.then
4978a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
4988a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
499eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
5008a71f44eSAlex Bradbury  %1 = fcmp ule bfloat %a, %b
5018a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
5028a71f44eSAlex Bradburyif.else:
5038a71f44eSAlex Bradbury  ret void
5048a71f44eSAlex Bradburyif.then:
5058a71f44eSAlex Bradbury  tail call void @abort()
5068a71f44eSAlex Bradbury  unreachable
5078a71f44eSAlex Bradbury}
5088a71f44eSAlex Bradbury
5098a71f44eSAlex Bradburydefine void @br_fcmp_une(bfloat %a, bfloat %b) nounwind {
5108a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_une:
5118a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
5128a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
5138a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
5148a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    feq.s a0, fa4, fa5
5158a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    beqz a0, .LBB14_2
5168a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
5178a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
5188a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB14_2: # %if.then
5198a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
5208a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
521eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
5228a71f44eSAlex Bradbury;
5238a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_une:
5248a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
5258a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
5268a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
5278a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    feq.s a0, fa4, fa5
5288a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    beqz a0, .LBB14_2
5298a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
5308a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
5318a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB14_2: # %if.then
5328a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
5338a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
534eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
5358a71f44eSAlex Bradbury  %1 = fcmp une bfloat %a, %b
5368a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
5378a71f44eSAlex Bradburyif.else:
5388a71f44eSAlex Bradbury  ret void
5398a71f44eSAlex Bradburyif.then:
5408a71f44eSAlex Bradbury  tail call void @abort()
5418a71f44eSAlex Bradbury  unreachable
5428a71f44eSAlex Bradbury}
5438a71f44eSAlex Bradbury
5448a71f44eSAlex Bradburydefine void @br_fcmp_uno(bfloat %a, bfloat %b) nounwind {
5458a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_uno:
5468a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
5478a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
548*9122c523SPengcheng Wang; RV32IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
5498a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    feq.s a0, fa5, fa5
550*9122c523SPengcheng Wang; RV32IZFBFMIN-NEXT:    feq.s a1, fa4, fa4
5518a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    and a0, a1, a0
5528a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    beqz a0, .LBB15_2
5538a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
5548a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
5558a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB15_2: # %if.then
5568a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
5578a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
558eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
5598a71f44eSAlex Bradbury;
5608a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_uno:
5618a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
5628a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa5, fa1
563*9122c523SPengcheng Wang; RV64IZFBFMIN-NEXT:    fcvt.s.bf16 fa4, fa0
5648a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    feq.s a0, fa5, fa5
565*9122c523SPengcheng Wang; RV64IZFBFMIN-NEXT:    feq.s a1, fa4, fa4
5668a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    and a0, a1, a0
5678a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    beqz a0, .LBB15_2
5688a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
5698a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
5708a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB15_2: # %if.then
5718a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
5728a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
573eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
5748a71f44eSAlex Bradbury  %1 = fcmp uno bfloat %a, %b
5758a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
5768a71f44eSAlex Bradburyif.else:
5778a71f44eSAlex Bradbury  ret void
5788a71f44eSAlex Bradburyif.then:
5798a71f44eSAlex Bradbury  tail call void @abort()
5808a71f44eSAlex Bradbury  unreachable
5818a71f44eSAlex Bradbury}
5828a71f44eSAlex Bradbury
5838a71f44eSAlex Bradburydefine void @br_fcmp_true(bfloat %a, bfloat %b) nounwind {
5848a71f44eSAlex Bradbury; RV32IZFBFMIN-LABEL: br_fcmp_true:
5858a71f44eSAlex Bradbury; RV32IZFBFMIN:       # %bb.0:
5868a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    li a0, 1
5878a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    bnez a0, .LBB16_2
5888a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  # %bb.1: # %if.else
5898a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    ret
5908a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:  .LBB16_2: # %if.then
5918a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    addi sp, sp, -16
5928a71f44eSAlex Bradbury; RV32IZFBFMIN-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
593eabaee0cSFangrui Song; RV32IZFBFMIN-NEXT:    call abort
5948a71f44eSAlex Bradbury;
5958a71f44eSAlex Bradbury; RV64IZFBFMIN-LABEL: br_fcmp_true:
5968a71f44eSAlex Bradbury; RV64IZFBFMIN:       # %bb.0:
5978a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    li a0, 1
5988a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    bnez a0, .LBB16_2
5998a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  # %bb.1: # %if.else
6008a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    ret
6018a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:  .LBB16_2: # %if.then
6028a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    addi sp, sp, -16
6038a71f44eSAlex Bradbury; RV64IZFBFMIN-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
604eabaee0cSFangrui Song; RV64IZFBFMIN-NEXT:    call abort
6058a71f44eSAlex Bradbury  %1 = fcmp true bfloat %a, %b
6068a71f44eSAlex Bradbury  br i1 %1, label %if.then, label %if.else
6078a71f44eSAlex Bradburyif.else:
6088a71f44eSAlex Bradbury  ret void
6098a71f44eSAlex Bradburyif.then:
6108a71f44eSAlex Bradbury  tail call void @abort()
6118a71f44eSAlex Bradbury  unreachable
6128a71f44eSAlex Bradbury}
613