609 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=riscv32 -mattr=+zfbfmin -verify-machineinstrs \3; RUN: -target-abi ilp32f < %s | FileCheck -check-prefix=RV32IZFBFMIN %s4; RUN: llc -mtriple=riscv64 -mattr=+zfbfmin -verify-machineinstrs \5; RUN: -target-abi lp64f < %s | FileCheck -check-prefix=RV64IZFBFMIN %s6 7declare void @abort()8declare void @exit(i32)9declare bfloat @dummy(bfloat)10 11define void @br_fcmp_false(bfloat %a, bfloat %b) nounwind {12; RV32IZFBFMIN-LABEL: br_fcmp_false:13; RV32IZFBFMIN: # %bb.0:14; RV32IZFBFMIN-NEXT: j .LBB0_215; RV32IZFBFMIN-NEXT: # %bb.1: # %if.then16; RV32IZFBFMIN-NEXT: ret17; RV32IZFBFMIN-NEXT: .LBB0_2: # %if.else18; RV32IZFBFMIN-NEXT: addi sp, sp, -1619; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill20; RV32IZFBFMIN-NEXT: call abort21;22; RV64IZFBFMIN-LABEL: br_fcmp_false:23; RV64IZFBFMIN: # %bb.0:24; RV64IZFBFMIN-NEXT: j .LBB0_225; RV64IZFBFMIN-NEXT: # %bb.1: # %if.then26; RV64IZFBFMIN-NEXT: ret27; RV64IZFBFMIN-NEXT: .LBB0_2: # %if.else28; RV64IZFBFMIN-NEXT: addi sp, sp, -1629; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill30; RV64IZFBFMIN-NEXT: call abort31 %1 = fcmp false bfloat %a, %b32 br i1 %1, label %if.then, label %if.else33if.then:34 ret void35if.else:36 tail call void @abort()37 unreachable38}39 40define void @br_fcmp_oeq(bfloat %a, bfloat %b) nounwind {41; RV32IZFBFMIN-LABEL: br_fcmp_oeq:42; RV32IZFBFMIN: # %bb.0:43; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa144; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa045; RV32IZFBFMIN-NEXT: feq.s a0, fa4, fa546; RV32IZFBFMIN-NEXT: bnez a0, .LBB1_247; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else48; RV32IZFBFMIN-NEXT: ret49; RV32IZFBFMIN-NEXT: .LBB1_2: # %if.then50; RV32IZFBFMIN-NEXT: addi sp, sp, -1651; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill52; RV32IZFBFMIN-NEXT: call abort53;54; RV64IZFBFMIN-LABEL: br_fcmp_oeq:55; RV64IZFBFMIN: # %bb.0:56; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa157; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa058; RV64IZFBFMIN-NEXT: feq.s a0, fa4, fa559; RV64IZFBFMIN-NEXT: bnez a0, .LBB1_260; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else61; RV64IZFBFMIN-NEXT: ret62; RV64IZFBFMIN-NEXT: .LBB1_2: # %if.then63; RV64IZFBFMIN-NEXT: addi sp, sp, -1664; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill65; RV64IZFBFMIN-NEXT: call abort66 %1 = fcmp oeq bfloat %a, %b67 br i1 %1, label %if.then, label %if.else68if.else:69 ret void70if.then:71 tail call void @abort()72 unreachable73}74 75define void @br_fcmp_oeq_alt(bfloat %a, bfloat %b) nounwind {76; RV32IZFBFMIN-LABEL: br_fcmp_oeq_alt:77; RV32IZFBFMIN: # %bb.0:78; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa179; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa080; RV32IZFBFMIN-NEXT: feq.s a0, fa4, fa581; RV32IZFBFMIN-NEXT: bnez a0, .LBB2_282; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else83; RV32IZFBFMIN-NEXT: ret84; RV32IZFBFMIN-NEXT: .LBB2_2: # %if.then85; RV32IZFBFMIN-NEXT: addi sp, sp, -1686; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill87; RV32IZFBFMIN-NEXT: call abort88;89; RV64IZFBFMIN-LABEL: br_fcmp_oeq_alt:90; RV64IZFBFMIN: # %bb.0:91; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa192; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa093; RV64IZFBFMIN-NEXT: feq.s a0, fa4, fa594; RV64IZFBFMIN-NEXT: bnez a0, .LBB2_295; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else96; RV64IZFBFMIN-NEXT: ret97; RV64IZFBFMIN-NEXT: .LBB2_2: # %if.then98; RV64IZFBFMIN-NEXT: addi sp, sp, -1699; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill100; RV64IZFBFMIN-NEXT: call abort101 %1 = fcmp oeq bfloat %a, %b102 br i1 %1, label %if.then, label %if.else103if.then:104 tail call void @abort()105 unreachable106if.else:107 ret void108}109 110define void @br_fcmp_ogt(bfloat %a, bfloat %b) nounwind {111; RV32IZFBFMIN-LABEL: br_fcmp_ogt:112; RV32IZFBFMIN: # %bb.0:113; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0114; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa1115; RV32IZFBFMIN-NEXT: flt.s a0, fa4, fa5116; RV32IZFBFMIN-NEXT: bnez a0, .LBB3_2117; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else118; RV32IZFBFMIN-NEXT: ret119; RV32IZFBFMIN-NEXT: .LBB3_2: # %if.then120; RV32IZFBFMIN-NEXT: addi sp, sp, -16121; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill122; RV32IZFBFMIN-NEXT: call abort123;124; RV64IZFBFMIN-LABEL: br_fcmp_ogt:125; RV64IZFBFMIN: # %bb.0:126; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0127; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa1128; RV64IZFBFMIN-NEXT: flt.s a0, fa4, fa5129; RV64IZFBFMIN-NEXT: bnez a0, .LBB3_2130; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else131; RV64IZFBFMIN-NEXT: ret132; RV64IZFBFMIN-NEXT: .LBB3_2: # %if.then133; RV64IZFBFMIN-NEXT: addi sp, sp, -16134; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill135; RV64IZFBFMIN-NEXT: call abort136 %1 = fcmp ogt bfloat %a, %b137 br i1 %1, label %if.then, label %if.else138if.else:139 ret void140if.then:141 tail call void @abort()142 unreachable143}144 145define void @br_fcmp_oge(bfloat %a, bfloat %b) nounwind {146; RV32IZFBFMIN-LABEL: br_fcmp_oge:147; RV32IZFBFMIN: # %bb.0:148; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0149; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa1150; RV32IZFBFMIN-NEXT: fle.s a0, fa4, fa5151; RV32IZFBFMIN-NEXT: bnez a0, .LBB4_2152; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else153; RV32IZFBFMIN-NEXT: ret154; RV32IZFBFMIN-NEXT: .LBB4_2: # %if.then155; RV32IZFBFMIN-NEXT: addi sp, sp, -16156; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill157; RV32IZFBFMIN-NEXT: call abort158;159; RV64IZFBFMIN-LABEL: br_fcmp_oge:160; RV64IZFBFMIN: # %bb.0:161; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0162; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa1163; RV64IZFBFMIN-NEXT: fle.s a0, fa4, fa5164; RV64IZFBFMIN-NEXT: bnez a0, .LBB4_2165; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else166; RV64IZFBFMIN-NEXT: ret167; RV64IZFBFMIN-NEXT: .LBB4_2: # %if.then168; RV64IZFBFMIN-NEXT: addi sp, sp, -16169; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill170; RV64IZFBFMIN-NEXT: call abort171 %1 = fcmp oge bfloat %a, %b172 br i1 %1, label %if.then, label %if.else173if.else:174 ret void175if.then:176 tail call void @abort()177 unreachable178}179 180define void @br_fcmp_olt(bfloat %a, bfloat %b) nounwind {181; RV32IZFBFMIN-LABEL: br_fcmp_olt:182; RV32IZFBFMIN: # %bb.0:183; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1184; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0185; RV32IZFBFMIN-NEXT: flt.s a0, fa4, fa5186; RV32IZFBFMIN-NEXT: bnez a0, .LBB5_2187; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else188; RV32IZFBFMIN-NEXT: ret189; RV32IZFBFMIN-NEXT: .LBB5_2: # %if.then190; RV32IZFBFMIN-NEXT: addi sp, sp, -16191; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill192; RV32IZFBFMIN-NEXT: call abort193;194; RV64IZFBFMIN-LABEL: br_fcmp_olt:195; RV64IZFBFMIN: # %bb.0:196; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1197; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0198; RV64IZFBFMIN-NEXT: flt.s a0, fa4, fa5199; RV64IZFBFMIN-NEXT: bnez a0, .LBB5_2200; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else201; RV64IZFBFMIN-NEXT: ret202; RV64IZFBFMIN-NEXT: .LBB5_2: # %if.then203; RV64IZFBFMIN-NEXT: addi sp, sp, -16204; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill205; RV64IZFBFMIN-NEXT: call abort206 %1 = fcmp olt bfloat %a, %b207 br i1 %1, label %if.then, label %if.else208if.else:209 ret void210if.then:211 tail call void @abort()212 unreachable213}214 215define void @br_fcmp_ole(bfloat %a, bfloat %b) nounwind {216; RV32IZFBFMIN-LABEL: br_fcmp_ole:217; RV32IZFBFMIN: # %bb.0:218; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1219; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0220; RV32IZFBFMIN-NEXT: fle.s a0, fa4, fa5221; RV32IZFBFMIN-NEXT: bnez a0, .LBB6_2222; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else223; RV32IZFBFMIN-NEXT: ret224; RV32IZFBFMIN-NEXT: .LBB6_2: # %if.then225; RV32IZFBFMIN-NEXT: addi sp, sp, -16226; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill227; RV32IZFBFMIN-NEXT: call abort228;229; RV64IZFBFMIN-LABEL: br_fcmp_ole:230; RV64IZFBFMIN: # %bb.0:231; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1232; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0233; RV64IZFBFMIN-NEXT: fle.s a0, fa4, fa5234; RV64IZFBFMIN-NEXT: bnez a0, .LBB6_2235; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else236; RV64IZFBFMIN-NEXT: ret237; RV64IZFBFMIN-NEXT: .LBB6_2: # %if.then238; RV64IZFBFMIN-NEXT: addi sp, sp, -16239; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill240; RV64IZFBFMIN-NEXT: call abort241 %1 = fcmp ole bfloat %a, %b242 br i1 %1, label %if.then, label %if.else243if.else:244 ret void245if.then:246 tail call void @abort()247 unreachable248}249 250define void @br_fcmp_one(bfloat %a, bfloat %b) nounwind {251; RV32IZFBFMIN-LABEL: br_fcmp_one:252; RV32IZFBFMIN: # %bb.0:253; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1254; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0255; RV32IZFBFMIN-NEXT: flt.s a0, fa4, fa5256; RV32IZFBFMIN-NEXT: flt.s a1, fa5, fa4257; RV32IZFBFMIN-NEXT: or a0, a1, a0258; RV32IZFBFMIN-NEXT: bnez a0, .LBB7_2259; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else260; RV32IZFBFMIN-NEXT: ret261; RV32IZFBFMIN-NEXT: .LBB7_2: # %if.then262; RV32IZFBFMIN-NEXT: addi sp, sp, -16263; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill264; RV32IZFBFMIN-NEXT: call abort265;266; RV64IZFBFMIN-LABEL: br_fcmp_one:267; RV64IZFBFMIN: # %bb.0:268; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1269; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0270; RV64IZFBFMIN-NEXT: flt.s a0, fa4, fa5271; RV64IZFBFMIN-NEXT: flt.s a1, fa5, fa4272; RV64IZFBFMIN-NEXT: or a0, a1, a0273; RV64IZFBFMIN-NEXT: bnez a0, .LBB7_2274; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else275; RV64IZFBFMIN-NEXT: ret276; RV64IZFBFMIN-NEXT: .LBB7_2: # %if.then277; RV64IZFBFMIN-NEXT: addi sp, sp, -16278; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill279; RV64IZFBFMIN-NEXT: call abort280 %1 = fcmp one bfloat %a, %b281 br i1 %1, label %if.then, label %if.else282if.else:283 ret void284if.then:285 tail call void @abort()286 unreachable287}288 289define void @br_fcmp_ord(bfloat %a, bfloat %b) nounwind {290; RV32IZFBFMIN-LABEL: br_fcmp_ord:291; RV32IZFBFMIN: # %bb.0:292; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1293; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0294; RV32IZFBFMIN-NEXT: feq.s a0, fa5, fa5295; RV32IZFBFMIN-NEXT: feq.s a1, fa4, fa4296; RV32IZFBFMIN-NEXT: and a0, a1, a0297; RV32IZFBFMIN-NEXT: bnez a0, .LBB8_2298; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else299; RV32IZFBFMIN-NEXT: ret300; RV32IZFBFMIN-NEXT: .LBB8_2: # %if.then301; RV32IZFBFMIN-NEXT: addi sp, sp, -16302; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill303; RV32IZFBFMIN-NEXT: call abort304;305; RV64IZFBFMIN-LABEL: br_fcmp_ord:306; RV64IZFBFMIN: # %bb.0:307; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1308; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0309; RV64IZFBFMIN-NEXT: feq.s a0, fa5, fa5310; RV64IZFBFMIN-NEXT: feq.s a1, fa4, fa4311; RV64IZFBFMIN-NEXT: and a0, a1, a0312; RV64IZFBFMIN-NEXT: bnez a0, .LBB8_2313; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else314; RV64IZFBFMIN-NEXT: ret315; RV64IZFBFMIN-NEXT: .LBB8_2: # %if.then316; RV64IZFBFMIN-NEXT: addi sp, sp, -16317; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill318; RV64IZFBFMIN-NEXT: call abort319 %1 = fcmp ord bfloat %a, %b320 br i1 %1, label %if.then, label %if.else321if.else:322 ret void323if.then:324 tail call void @abort()325 unreachable326}327 328define void @br_fcmp_ueq(bfloat %a, bfloat %b) nounwind {329; RV32IZFBFMIN-LABEL: br_fcmp_ueq:330; RV32IZFBFMIN: # %bb.0:331; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1332; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0333; RV32IZFBFMIN-NEXT: flt.s a0, fa4, fa5334; RV32IZFBFMIN-NEXT: flt.s a1, fa5, fa4335; RV32IZFBFMIN-NEXT: or a0, a1, a0336; RV32IZFBFMIN-NEXT: beqz a0, .LBB9_2337; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else338; RV32IZFBFMIN-NEXT: ret339; RV32IZFBFMIN-NEXT: .LBB9_2: # %if.then340; RV32IZFBFMIN-NEXT: addi sp, sp, -16341; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill342; RV32IZFBFMIN-NEXT: call abort343;344; RV64IZFBFMIN-LABEL: br_fcmp_ueq:345; RV64IZFBFMIN: # %bb.0:346; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1347; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0348; RV64IZFBFMIN-NEXT: flt.s a0, fa4, fa5349; RV64IZFBFMIN-NEXT: flt.s a1, fa5, fa4350; RV64IZFBFMIN-NEXT: or a0, a1, a0351; RV64IZFBFMIN-NEXT: beqz a0, .LBB9_2352; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else353; RV64IZFBFMIN-NEXT: ret354; RV64IZFBFMIN-NEXT: .LBB9_2: # %if.then355; RV64IZFBFMIN-NEXT: addi sp, sp, -16356; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill357; RV64IZFBFMIN-NEXT: call abort358 %1 = fcmp ueq bfloat %a, %b359 br i1 %1, label %if.then, label %if.else360if.else:361 ret void362if.then:363 tail call void @abort()364 unreachable365}366 367define void @br_fcmp_ugt(bfloat %a, bfloat %b) nounwind {368; RV32IZFBFMIN-LABEL: br_fcmp_ugt:369; RV32IZFBFMIN: # %bb.0:370; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1371; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0372; RV32IZFBFMIN-NEXT: fle.s a0, fa4, fa5373; RV32IZFBFMIN-NEXT: beqz a0, .LBB10_2374; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else375; RV32IZFBFMIN-NEXT: ret376; RV32IZFBFMIN-NEXT: .LBB10_2: # %if.then377; RV32IZFBFMIN-NEXT: addi sp, sp, -16378; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill379; RV32IZFBFMIN-NEXT: call abort380;381; RV64IZFBFMIN-LABEL: br_fcmp_ugt:382; RV64IZFBFMIN: # %bb.0:383; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1384; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0385; RV64IZFBFMIN-NEXT: fle.s a0, fa4, fa5386; RV64IZFBFMIN-NEXT: beqz a0, .LBB10_2387; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else388; RV64IZFBFMIN-NEXT: ret389; RV64IZFBFMIN-NEXT: .LBB10_2: # %if.then390; RV64IZFBFMIN-NEXT: addi sp, sp, -16391; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill392; RV64IZFBFMIN-NEXT: call abort393 %1 = fcmp ugt bfloat %a, %b394 br i1 %1, label %if.then, label %if.else395if.else:396 ret void397if.then:398 tail call void @abort()399 unreachable400}401 402define void @br_fcmp_uge(bfloat %a, bfloat %b) nounwind {403; RV32IZFBFMIN-LABEL: br_fcmp_uge:404; RV32IZFBFMIN: # %bb.0:405; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1406; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0407; RV32IZFBFMIN-NEXT: flt.s a0, fa4, fa5408; RV32IZFBFMIN-NEXT: beqz a0, .LBB11_2409; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else410; RV32IZFBFMIN-NEXT: ret411; RV32IZFBFMIN-NEXT: .LBB11_2: # %if.then412; RV32IZFBFMIN-NEXT: addi sp, sp, -16413; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill414; RV32IZFBFMIN-NEXT: call abort415;416; RV64IZFBFMIN-LABEL: br_fcmp_uge:417; RV64IZFBFMIN: # %bb.0:418; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1419; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0420; RV64IZFBFMIN-NEXT: flt.s a0, fa4, fa5421; RV64IZFBFMIN-NEXT: beqz a0, .LBB11_2422; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else423; RV64IZFBFMIN-NEXT: ret424; RV64IZFBFMIN-NEXT: .LBB11_2: # %if.then425; RV64IZFBFMIN-NEXT: addi sp, sp, -16426; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill427; RV64IZFBFMIN-NEXT: call abort428 %1 = fcmp uge bfloat %a, %b429 br i1 %1, label %if.then, label %if.else430if.else:431 ret void432if.then:433 tail call void @abort()434 unreachable435}436 437define void @br_fcmp_ult(bfloat %a, bfloat %b) nounwind {438; RV32IZFBFMIN-LABEL: br_fcmp_ult:439; RV32IZFBFMIN: # %bb.0:440; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0441; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa1442; RV32IZFBFMIN-NEXT: fle.s a0, fa4, fa5443; RV32IZFBFMIN-NEXT: beqz a0, .LBB12_2444; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else445; RV32IZFBFMIN-NEXT: ret446; RV32IZFBFMIN-NEXT: .LBB12_2: # %if.then447; RV32IZFBFMIN-NEXT: addi sp, sp, -16448; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill449; RV32IZFBFMIN-NEXT: call abort450;451; RV64IZFBFMIN-LABEL: br_fcmp_ult:452; RV64IZFBFMIN: # %bb.0:453; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0454; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa1455; RV64IZFBFMIN-NEXT: fle.s a0, fa4, fa5456; RV64IZFBFMIN-NEXT: beqz a0, .LBB12_2457; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else458; RV64IZFBFMIN-NEXT: ret459; RV64IZFBFMIN-NEXT: .LBB12_2: # %if.then460; RV64IZFBFMIN-NEXT: addi sp, sp, -16461; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill462; RV64IZFBFMIN-NEXT: call abort463 %1 = fcmp ult bfloat %a, %b464 br i1 %1, label %if.then, label %if.else465if.else:466 ret void467if.then:468 tail call void @abort()469 unreachable470}471 472define void @br_fcmp_ule(bfloat %a, bfloat %b) nounwind {473; RV32IZFBFMIN-LABEL: br_fcmp_ule:474; RV32IZFBFMIN: # %bb.0:475; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0476; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa1477; RV32IZFBFMIN-NEXT: flt.s a0, fa4, fa5478; RV32IZFBFMIN-NEXT: beqz a0, .LBB13_2479; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else480; RV32IZFBFMIN-NEXT: ret481; RV32IZFBFMIN-NEXT: .LBB13_2: # %if.then482; RV32IZFBFMIN-NEXT: addi sp, sp, -16483; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill484; RV32IZFBFMIN-NEXT: call abort485;486; RV64IZFBFMIN-LABEL: br_fcmp_ule:487; RV64IZFBFMIN: # %bb.0:488; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa0489; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa1490; RV64IZFBFMIN-NEXT: flt.s a0, fa4, fa5491; RV64IZFBFMIN-NEXT: beqz a0, .LBB13_2492; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else493; RV64IZFBFMIN-NEXT: ret494; RV64IZFBFMIN-NEXT: .LBB13_2: # %if.then495; RV64IZFBFMIN-NEXT: addi sp, sp, -16496; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill497; RV64IZFBFMIN-NEXT: call abort498 %1 = fcmp ule bfloat %a, %b499 br i1 %1, label %if.then, label %if.else500if.else:501 ret void502if.then:503 tail call void @abort()504 unreachable505}506 507define void @br_fcmp_une(bfloat %a, bfloat %b) nounwind {508; RV32IZFBFMIN-LABEL: br_fcmp_une:509; RV32IZFBFMIN: # %bb.0:510; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1511; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0512; RV32IZFBFMIN-NEXT: feq.s a0, fa4, fa5513; RV32IZFBFMIN-NEXT: beqz a0, .LBB14_2514; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else515; RV32IZFBFMIN-NEXT: ret516; RV32IZFBFMIN-NEXT: .LBB14_2: # %if.then517; RV32IZFBFMIN-NEXT: addi sp, sp, -16518; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill519; RV32IZFBFMIN-NEXT: call abort520;521; RV64IZFBFMIN-LABEL: br_fcmp_une:522; RV64IZFBFMIN: # %bb.0:523; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1524; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0525; RV64IZFBFMIN-NEXT: feq.s a0, fa4, fa5526; RV64IZFBFMIN-NEXT: beqz a0, .LBB14_2527; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else528; RV64IZFBFMIN-NEXT: ret529; RV64IZFBFMIN-NEXT: .LBB14_2: # %if.then530; RV64IZFBFMIN-NEXT: addi sp, sp, -16531; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill532; RV64IZFBFMIN-NEXT: call abort533 %1 = fcmp une bfloat %a, %b534 br i1 %1, label %if.then, label %if.else535if.else:536 ret void537if.then:538 tail call void @abort()539 unreachable540}541 542define void @br_fcmp_uno(bfloat %a, bfloat %b) nounwind {543; RV32IZFBFMIN-LABEL: br_fcmp_uno:544; RV32IZFBFMIN: # %bb.0:545; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1546; RV32IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0547; RV32IZFBFMIN-NEXT: feq.s a0, fa5, fa5548; RV32IZFBFMIN-NEXT: feq.s a1, fa4, fa4549; RV32IZFBFMIN-NEXT: and a0, a1, a0550; RV32IZFBFMIN-NEXT: beqz a0, .LBB15_2551; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else552; RV32IZFBFMIN-NEXT: ret553; RV32IZFBFMIN-NEXT: .LBB15_2: # %if.then554; RV32IZFBFMIN-NEXT: addi sp, sp, -16555; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill556; RV32IZFBFMIN-NEXT: call abort557;558; RV64IZFBFMIN-LABEL: br_fcmp_uno:559; RV64IZFBFMIN: # %bb.0:560; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa5, fa1561; RV64IZFBFMIN-NEXT: fcvt.s.bf16 fa4, fa0562; RV64IZFBFMIN-NEXT: feq.s a0, fa5, fa5563; RV64IZFBFMIN-NEXT: feq.s a1, fa4, fa4564; RV64IZFBFMIN-NEXT: and a0, a1, a0565; RV64IZFBFMIN-NEXT: beqz a0, .LBB15_2566; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else567; RV64IZFBFMIN-NEXT: ret568; RV64IZFBFMIN-NEXT: .LBB15_2: # %if.then569; RV64IZFBFMIN-NEXT: addi sp, sp, -16570; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill571; RV64IZFBFMIN-NEXT: call abort572 %1 = fcmp uno bfloat %a, %b573 br i1 %1, label %if.then, label %if.else574if.else:575 ret void576if.then:577 tail call void @abort()578 unreachable579}580 581define void @br_fcmp_true(bfloat %a, bfloat %b) nounwind {582; RV32IZFBFMIN-LABEL: br_fcmp_true:583; RV32IZFBFMIN: # %bb.0:584; RV32IZFBFMIN-NEXT: j .LBB16_2585; RV32IZFBFMIN-NEXT: # %bb.1: # %if.else586; RV32IZFBFMIN-NEXT: ret587; RV32IZFBFMIN-NEXT: .LBB16_2: # %if.then588; RV32IZFBFMIN-NEXT: addi sp, sp, -16589; RV32IZFBFMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill590; RV32IZFBFMIN-NEXT: call abort591;592; RV64IZFBFMIN-LABEL: br_fcmp_true:593; RV64IZFBFMIN: # %bb.0:594; RV64IZFBFMIN-NEXT: j .LBB16_2595; RV64IZFBFMIN-NEXT: # %bb.1: # %if.else596; RV64IZFBFMIN-NEXT: ret597; RV64IZFBFMIN-NEXT: .LBB16_2: # %if.then598; RV64IZFBFMIN-NEXT: addi sp, sp, -16599; RV64IZFBFMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill600; RV64IZFBFMIN-NEXT: call abort601 %1 = fcmp true bfloat %a, %b602 br i1 %1, label %if.then, label %if.else603if.else:604 ret void605if.then:606 tail call void @abort()607 unreachable608}609