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