brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.2 KiB · b2558cd Raw
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