brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.6 KiB · b289211 Raw
1056 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+f -verify-machineinstrs < %s \3; RUN:   -target-abi=ilp32f | FileCheck -check-prefix=RV32IF %s4; RUN: llc -mtriple=riscv64 -mattr=+f -verify-machineinstrs < %s \5; RUN:   -target-abi=lp64f | FileCheck -check-prefix=RV64IF %s6; RUN: llc -mtriple=riscv32 -mattr=+zfinx -verify-machineinstrs < %s \7; RUN:   -target-abi=ilp32 | FileCheck -check-prefix=RV32IZFINX %s8; RUN: llc -mtriple=riscv64 -mattr=+zfinx -verify-machineinstrs < %s \9; RUN:   -target-abi=lp64 | FileCheck -check-prefix=RV64IZFINX %s10 11declare void @abort()12declare void @exit(i32)13declare float @dummy(float)14 15define void @br_fcmp_false(float %a, float %b) nounwind {16; RV32IF-LABEL: br_fcmp_false:17; RV32IF:       # %bb.0:18; RV32IF-NEXT:    j .LBB0_219; RV32IF-NEXT:  # %bb.1: # %if.then20; RV32IF-NEXT:    ret21; RV32IF-NEXT:  .LBB0_2: # %if.else22; RV32IF-NEXT:    addi sp, sp, -1623; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill24; RV32IF-NEXT:    call abort25;26; RV64IF-LABEL: br_fcmp_false:27; RV64IF:       # %bb.0:28; RV64IF-NEXT:    j .LBB0_229; RV64IF-NEXT:  # %bb.1: # %if.then30; RV64IF-NEXT:    ret31; RV64IF-NEXT:  .LBB0_2: # %if.else32; RV64IF-NEXT:    addi sp, sp, -1633; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill34; RV64IF-NEXT:    call abort35;36; RV32IZFINX-LABEL: br_fcmp_false:37; RV32IZFINX:       # %bb.0:38; RV32IZFINX-NEXT:    j .LBB0_239; RV32IZFINX-NEXT:  # %bb.1: # %if.then40; RV32IZFINX-NEXT:    ret41; RV32IZFINX-NEXT:  .LBB0_2: # %if.else42; RV32IZFINX-NEXT:    addi sp, sp, -1643; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill44; RV32IZFINX-NEXT:    call abort45;46; RV64IZFINX-LABEL: br_fcmp_false:47; RV64IZFINX:       # %bb.0:48; RV64IZFINX-NEXT:    j .LBB0_249; RV64IZFINX-NEXT:  # %bb.1: # %if.then50; RV64IZFINX-NEXT:    ret51; RV64IZFINX-NEXT:  .LBB0_2: # %if.else52; RV64IZFINX-NEXT:    addi sp, sp, -1653; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill54; RV64IZFINX-NEXT:    call abort55  %1 = fcmp false float %a, %b56  br i1 %1, label %if.then, label %if.else57if.then:58  ret void59if.else:60  tail call void @abort()61  unreachable62}63 64define void @br_fcmp_oeq(float %a, float %b) nounwind {65; RV32IF-LABEL: br_fcmp_oeq:66; RV32IF:       # %bb.0:67; RV32IF-NEXT:    feq.s a0, fa0, fa168; RV32IF-NEXT:    bnez a0, .LBB1_269; RV32IF-NEXT:  # %bb.1: # %if.else70; RV32IF-NEXT:    ret71; RV32IF-NEXT:  .LBB1_2: # %if.then72; RV32IF-NEXT:    addi sp, sp, -1673; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill74; RV32IF-NEXT:    call abort75;76; RV64IF-LABEL: br_fcmp_oeq:77; RV64IF:       # %bb.0:78; RV64IF-NEXT:    feq.s a0, fa0, fa179; RV64IF-NEXT:    bnez a0, .LBB1_280; RV64IF-NEXT:  # %bb.1: # %if.else81; RV64IF-NEXT:    ret82; RV64IF-NEXT:  .LBB1_2: # %if.then83; RV64IF-NEXT:    addi sp, sp, -1684; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill85; RV64IF-NEXT:    call abort86;87; RV32IZFINX-LABEL: br_fcmp_oeq:88; RV32IZFINX:       # %bb.0:89; RV32IZFINX-NEXT:    feq.s a0, a0, a190; RV32IZFINX-NEXT:    bnez a0, .LBB1_291; RV32IZFINX-NEXT:  # %bb.1: # %if.else92; RV32IZFINX-NEXT:    ret93; RV32IZFINX-NEXT:  .LBB1_2: # %if.then94; RV32IZFINX-NEXT:    addi sp, sp, -1695; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill96; RV32IZFINX-NEXT:    call abort97;98; RV64IZFINX-LABEL: br_fcmp_oeq:99; RV64IZFINX:       # %bb.0:100; RV64IZFINX-NEXT:    feq.s a0, a0, a1101; RV64IZFINX-NEXT:    bnez a0, .LBB1_2102; RV64IZFINX-NEXT:  # %bb.1: # %if.else103; RV64IZFINX-NEXT:    ret104; RV64IZFINX-NEXT:  .LBB1_2: # %if.then105; RV64IZFINX-NEXT:    addi sp, sp, -16106; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill107; RV64IZFINX-NEXT:    call abort108  %1 = fcmp oeq float %a, %b109  br i1 %1, label %if.then, label %if.else110if.else:111  ret void112if.then:113  tail call void @abort()114  unreachable115}116 117; TODO: generated code quality for this is very poor due to118; DAGCombiner::visitXOR converting the legal setoeq to setune, which requires119; expansion.120define void @br_fcmp_oeq_alt(float %a, float %b) nounwind {121; RV32IF-LABEL: br_fcmp_oeq_alt:122; RV32IF:       # %bb.0:123; RV32IF-NEXT:    feq.s a0, fa0, fa1124; RV32IF-NEXT:    bnez a0, .LBB2_2125; RV32IF-NEXT:  # %bb.1: # %if.else126; RV32IF-NEXT:    ret127; RV32IF-NEXT:  .LBB2_2: # %if.then128; RV32IF-NEXT:    addi sp, sp, -16129; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill130; RV32IF-NEXT:    call abort131;132; RV64IF-LABEL: br_fcmp_oeq_alt:133; RV64IF:       # %bb.0:134; RV64IF-NEXT:    feq.s a0, fa0, fa1135; RV64IF-NEXT:    bnez a0, .LBB2_2136; RV64IF-NEXT:  # %bb.1: # %if.else137; RV64IF-NEXT:    ret138; RV64IF-NEXT:  .LBB2_2: # %if.then139; RV64IF-NEXT:    addi sp, sp, -16140; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill141; RV64IF-NEXT:    call abort142;143; RV32IZFINX-LABEL: br_fcmp_oeq_alt:144; RV32IZFINX:       # %bb.0:145; RV32IZFINX-NEXT:    feq.s a0, a0, a1146; RV32IZFINX-NEXT:    bnez a0, .LBB2_2147; RV32IZFINX-NEXT:  # %bb.1: # %if.else148; RV32IZFINX-NEXT:    ret149; RV32IZFINX-NEXT:  .LBB2_2: # %if.then150; RV32IZFINX-NEXT:    addi sp, sp, -16151; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill152; RV32IZFINX-NEXT:    call abort153;154; RV64IZFINX-LABEL: br_fcmp_oeq_alt:155; RV64IZFINX:       # %bb.0:156; RV64IZFINX-NEXT:    feq.s a0, a0, a1157; RV64IZFINX-NEXT:    bnez a0, .LBB2_2158; RV64IZFINX-NEXT:  # %bb.1: # %if.else159; RV64IZFINX-NEXT:    ret160; RV64IZFINX-NEXT:  .LBB2_2: # %if.then161; RV64IZFINX-NEXT:    addi sp, sp, -16162; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill163; RV64IZFINX-NEXT:    call abort164  %1 = fcmp oeq float %a, %b165  br i1 %1, label %if.then, label %if.else166if.then:167  tail call void @abort()168  unreachable169if.else:170  ret void171}172 173define void @br_fcmp_ogt(float %a, float %b) nounwind {174; RV32IF-LABEL: br_fcmp_ogt:175; RV32IF:       # %bb.0:176; RV32IF-NEXT:    flt.s a0, fa1, fa0177; RV32IF-NEXT:    bnez a0, .LBB3_2178; RV32IF-NEXT:  # %bb.1: # %if.else179; RV32IF-NEXT:    ret180; RV32IF-NEXT:  .LBB3_2: # %if.then181; RV32IF-NEXT:    addi sp, sp, -16182; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill183; RV32IF-NEXT:    call abort184;185; RV64IF-LABEL: br_fcmp_ogt:186; RV64IF:       # %bb.0:187; RV64IF-NEXT:    flt.s a0, fa1, fa0188; RV64IF-NEXT:    bnez a0, .LBB3_2189; RV64IF-NEXT:  # %bb.1: # %if.else190; RV64IF-NEXT:    ret191; RV64IF-NEXT:  .LBB3_2: # %if.then192; RV64IF-NEXT:    addi sp, sp, -16193; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill194; RV64IF-NEXT:    call abort195;196; RV32IZFINX-LABEL: br_fcmp_ogt:197; RV32IZFINX:       # %bb.0:198; RV32IZFINX-NEXT:    flt.s a0, a1, a0199; RV32IZFINX-NEXT:    bnez a0, .LBB3_2200; RV32IZFINX-NEXT:  # %bb.1: # %if.else201; RV32IZFINX-NEXT:    ret202; RV32IZFINX-NEXT:  .LBB3_2: # %if.then203; RV32IZFINX-NEXT:    addi sp, sp, -16204; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill205; RV32IZFINX-NEXT:    call abort206;207; RV64IZFINX-LABEL: br_fcmp_ogt:208; RV64IZFINX:       # %bb.0:209; RV64IZFINX-NEXT:    flt.s a0, a1, a0210; RV64IZFINX-NEXT:    bnez a0, .LBB3_2211; RV64IZFINX-NEXT:  # %bb.1: # %if.else212; RV64IZFINX-NEXT:    ret213; RV64IZFINX-NEXT:  .LBB3_2: # %if.then214; RV64IZFINX-NEXT:    addi sp, sp, -16215; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill216; RV64IZFINX-NEXT:    call abort217  %1 = fcmp ogt float %a, %b218  br i1 %1, label %if.then, label %if.else219if.else:220  ret void221if.then:222  tail call void @abort()223  unreachable224}225 226define void @br_fcmp_oge(float %a, float %b) nounwind {227; RV32IF-LABEL: br_fcmp_oge:228; RV32IF:       # %bb.0:229; RV32IF-NEXT:    fle.s a0, fa1, fa0230; RV32IF-NEXT:    bnez a0, .LBB4_2231; RV32IF-NEXT:  # %bb.1: # %if.else232; RV32IF-NEXT:    ret233; RV32IF-NEXT:  .LBB4_2: # %if.then234; RV32IF-NEXT:    addi sp, sp, -16235; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill236; RV32IF-NEXT:    call abort237;238; RV64IF-LABEL: br_fcmp_oge:239; RV64IF:       # %bb.0:240; RV64IF-NEXT:    fle.s a0, fa1, fa0241; RV64IF-NEXT:    bnez a0, .LBB4_2242; RV64IF-NEXT:  # %bb.1: # %if.else243; RV64IF-NEXT:    ret244; RV64IF-NEXT:  .LBB4_2: # %if.then245; RV64IF-NEXT:    addi sp, sp, -16246; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill247; RV64IF-NEXT:    call abort248;249; RV32IZFINX-LABEL: br_fcmp_oge:250; RV32IZFINX:       # %bb.0:251; RV32IZFINX-NEXT:    fle.s a0, a1, a0252; RV32IZFINX-NEXT:    bnez a0, .LBB4_2253; RV32IZFINX-NEXT:  # %bb.1: # %if.else254; RV32IZFINX-NEXT:    ret255; RV32IZFINX-NEXT:  .LBB4_2: # %if.then256; RV32IZFINX-NEXT:    addi sp, sp, -16257; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill258; RV32IZFINX-NEXT:    call abort259;260; RV64IZFINX-LABEL: br_fcmp_oge:261; RV64IZFINX:       # %bb.0:262; RV64IZFINX-NEXT:    fle.s a0, a1, a0263; RV64IZFINX-NEXT:    bnez a0, .LBB4_2264; RV64IZFINX-NEXT:  # %bb.1: # %if.else265; RV64IZFINX-NEXT:    ret266; RV64IZFINX-NEXT:  .LBB4_2: # %if.then267; RV64IZFINX-NEXT:    addi sp, sp, -16268; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill269; RV64IZFINX-NEXT:    call abort270  %1 = fcmp oge float %a, %b271  br i1 %1, label %if.then, label %if.else272if.else:273  ret void274if.then:275  tail call void @abort()276  unreachable277}278 279define void @br_fcmp_olt(float %a, float %b) nounwind {280; RV32IF-LABEL: br_fcmp_olt:281; RV32IF:       # %bb.0:282; RV32IF-NEXT:    flt.s a0, fa0, fa1283; RV32IF-NEXT:    bnez a0, .LBB5_2284; RV32IF-NEXT:  # %bb.1: # %if.else285; RV32IF-NEXT:    ret286; RV32IF-NEXT:  .LBB5_2: # %if.then287; RV32IF-NEXT:    addi sp, sp, -16288; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill289; RV32IF-NEXT:    call abort290;291; RV64IF-LABEL: br_fcmp_olt:292; RV64IF:       # %bb.0:293; RV64IF-NEXT:    flt.s a0, fa0, fa1294; RV64IF-NEXT:    bnez a0, .LBB5_2295; RV64IF-NEXT:  # %bb.1: # %if.else296; RV64IF-NEXT:    ret297; RV64IF-NEXT:  .LBB5_2: # %if.then298; RV64IF-NEXT:    addi sp, sp, -16299; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill300; RV64IF-NEXT:    call abort301;302; RV32IZFINX-LABEL: br_fcmp_olt:303; RV32IZFINX:       # %bb.0:304; RV32IZFINX-NEXT:    flt.s a0, a0, a1305; RV32IZFINX-NEXT:    bnez a0, .LBB5_2306; RV32IZFINX-NEXT:  # %bb.1: # %if.else307; RV32IZFINX-NEXT:    ret308; RV32IZFINX-NEXT:  .LBB5_2: # %if.then309; RV32IZFINX-NEXT:    addi sp, sp, -16310; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill311; RV32IZFINX-NEXT:    call abort312;313; RV64IZFINX-LABEL: br_fcmp_olt:314; RV64IZFINX:       # %bb.0:315; RV64IZFINX-NEXT:    flt.s a0, a0, a1316; RV64IZFINX-NEXT:    bnez a0, .LBB5_2317; RV64IZFINX-NEXT:  # %bb.1: # %if.else318; RV64IZFINX-NEXT:    ret319; RV64IZFINX-NEXT:  .LBB5_2: # %if.then320; RV64IZFINX-NEXT:    addi sp, sp, -16321; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill322; RV64IZFINX-NEXT:    call abort323  %1 = fcmp olt float %a, %b324  br i1 %1, label %if.then, label %if.else325if.else:326  ret void327if.then:328  tail call void @abort()329  unreachable330}331 332define void @br_fcmp_ole(float %a, float %b) nounwind {333; RV32IF-LABEL: br_fcmp_ole:334; RV32IF:       # %bb.0:335; RV32IF-NEXT:    fle.s a0, fa0, fa1336; RV32IF-NEXT:    bnez a0, .LBB6_2337; RV32IF-NEXT:  # %bb.1: # %if.else338; RV32IF-NEXT:    ret339; RV32IF-NEXT:  .LBB6_2: # %if.then340; RV32IF-NEXT:    addi sp, sp, -16341; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill342; RV32IF-NEXT:    call abort343;344; RV64IF-LABEL: br_fcmp_ole:345; RV64IF:       # %bb.0:346; RV64IF-NEXT:    fle.s a0, fa0, fa1347; RV64IF-NEXT:    bnez a0, .LBB6_2348; RV64IF-NEXT:  # %bb.1: # %if.else349; RV64IF-NEXT:    ret350; RV64IF-NEXT:  .LBB6_2: # %if.then351; RV64IF-NEXT:    addi sp, sp, -16352; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill353; RV64IF-NEXT:    call abort354;355; RV32IZFINX-LABEL: br_fcmp_ole:356; RV32IZFINX:       # %bb.0:357; RV32IZFINX-NEXT:    fle.s a0, a0, a1358; RV32IZFINX-NEXT:    bnez a0, .LBB6_2359; RV32IZFINX-NEXT:  # %bb.1: # %if.else360; RV32IZFINX-NEXT:    ret361; RV32IZFINX-NEXT:  .LBB6_2: # %if.then362; RV32IZFINX-NEXT:    addi sp, sp, -16363; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill364; RV32IZFINX-NEXT:    call abort365;366; RV64IZFINX-LABEL: br_fcmp_ole:367; RV64IZFINX:       # %bb.0:368; RV64IZFINX-NEXT:    fle.s a0, a0, a1369; RV64IZFINX-NEXT:    bnez a0, .LBB6_2370; RV64IZFINX-NEXT:  # %bb.1: # %if.else371; RV64IZFINX-NEXT:    ret372; RV64IZFINX-NEXT:  .LBB6_2: # %if.then373; RV64IZFINX-NEXT:    addi sp, sp, -16374; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill375; RV64IZFINX-NEXT:    call abort376  %1 = fcmp ole float %a, %b377  br i1 %1, label %if.then, label %if.else378if.else:379  ret void380if.then:381  tail call void @abort()382  unreachable383}384 385define void @br_fcmp_one(float %a, float %b) nounwind {386; RV32IF-LABEL: br_fcmp_one:387; RV32IF:       # %bb.0:388; RV32IF-NEXT:    flt.s a0, fa0, fa1389; RV32IF-NEXT:    flt.s a1, fa1, fa0390; RV32IF-NEXT:    or a0, a1, a0391; RV32IF-NEXT:    bnez a0, .LBB7_2392; RV32IF-NEXT:  # %bb.1: # %if.else393; RV32IF-NEXT:    ret394; RV32IF-NEXT:  .LBB7_2: # %if.then395; RV32IF-NEXT:    addi sp, sp, -16396; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill397; RV32IF-NEXT:    call abort398;399; RV64IF-LABEL: br_fcmp_one:400; RV64IF:       # %bb.0:401; RV64IF-NEXT:    flt.s a0, fa0, fa1402; RV64IF-NEXT:    flt.s a1, fa1, fa0403; RV64IF-NEXT:    or a0, a1, a0404; RV64IF-NEXT:    bnez a0, .LBB7_2405; RV64IF-NEXT:  # %bb.1: # %if.else406; RV64IF-NEXT:    ret407; RV64IF-NEXT:  .LBB7_2: # %if.then408; RV64IF-NEXT:    addi sp, sp, -16409; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill410; RV64IF-NEXT:    call abort411;412; RV32IZFINX-LABEL: br_fcmp_one:413; RV32IZFINX:       # %bb.0:414; RV32IZFINX-NEXT:    flt.s a2, a0, a1415; RV32IZFINX-NEXT:    flt.s a0, a1, a0416; RV32IZFINX-NEXT:    or a0, a0, a2417; RV32IZFINX-NEXT:    bnez a0, .LBB7_2418; RV32IZFINX-NEXT:  # %bb.1: # %if.else419; RV32IZFINX-NEXT:    ret420; RV32IZFINX-NEXT:  .LBB7_2: # %if.then421; RV32IZFINX-NEXT:    addi sp, sp, -16422; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill423; RV32IZFINX-NEXT:    call abort424;425; RV64IZFINX-LABEL: br_fcmp_one:426; RV64IZFINX:       # %bb.0:427; RV64IZFINX-NEXT:    flt.s a2, a0, a1428; RV64IZFINX-NEXT:    flt.s a0, a1, a0429; RV64IZFINX-NEXT:    or a0, a0, a2430; RV64IZFINX-NEXT:    bnez a0, .LBB7_2431; RV64IZFINX-NEXT:  # %bb.1: # %if.else432; RV64IZFINX-NEXT:    ret433; RV64IZFINX-NEXT:  .LBB7_2: # %if.then434; RV64IZFINX-NEXT:    addi sp, sp, -16435; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill436; RV64IZFINX-NEXT:    call abort437  %1 = fcmp one float %a, %b438  br i1 %1, label %if.then, label %if.else439if.else:440  ret void441if.then:442  tail call void @abort()443  unreachable444}445 446define void @br_fcmp_ord(float %a, float %b) nounwind {447; RV32IF-LABEL: br_fcmp_ord:448; RV32IF:       # %bb.0:449; RV32IF-NEXT:    feq.s a0, fa1, fa1450; RV32IF-NEXT:    feq.s a1, fa0, fa0451; RV32IF-NEXT:    and a0, a1, a0452; RV32IF-NEXT:    bnez a0, .LBB8_2453; RV32IF-NEXT:  # %bb.1: # %if.else454; RV32IF-NEXT:    ret455; RV32IF-NEXT:  .LBB8_2: # %if.then456; RV32IF-NEXT:    addi sp, sp, -16457; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill458; RV32IF-NEXT:    call abort459;460; RV64IF-LABEL: br_fcmp_ord:461; RV64IF:       # %bb.0:462; RV64IF-NEXT:    feq.s a0, fa1, fa1463; RV64IF-NEXT:    feq.s a1, fa0, fa0464; RV64IF-NEXT:    and a0, a1, a0465; RV64IF-NEXT:    bnez a0, .LBB8_2466; RV64IF-NEXT:  # %bb.1: # %if.else467; RV64IF-NEXT:    ret468; RV64IF-NEXT:  .LBB8_2: # %if.then469; RV64IF-NEXT:    addi sp, sp, -16470; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill471; RV64IF-NEXT:    call abort472;473; RV32IZFINX-LABEL: br_fcmp_ord:474; RV32IZFINX:       # %bb.0:475; RV32IZFINX-NEXT:    feq.s a1, a1, a1476; RV32IZFINX-NEXT:    feq.s a0, a0, a0477; RV32IZFINX-NEXT:    and a0, a0, a1478; RV32IZFINX-NEXT:    bnez a0, .LBB8_2479; RV32IZFINX-NEXT:  # %bb.1: # %if.else480; RV32IZFINX-NEXT:    ret481; RV32IZFINX-NEXT:  .LBB8_2: # %if.then482; RV32IZFINX-NEXT:    addi sp, sp, -16483; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill484; RV32IZFINX-NEXT:    call abort485;486; RV64IZFINX-LABEL: br_fcmp_ord:487; RV64IZFINX:       # %bb.0:488; RV64IZFINX-NEXT:    feq.s a1, a1, a1489; RV64IZFINX-NEXT:    feq.s a0, a0, a0490; RV64IZFINX-NEXT:    and a0, a0, a1491; RV64IZFINX-NEXT:    bnez a0, .LBB8_2492; RV64IZFINX-NEXT:  # %bb.1: # %if.else493; RV64IZFINX-NEXT:    ret494; RV64IZFINX-NEXT:  .LBB8_2: # %if.then495; RV64IZFINX-NEXT:    addi sp, sp, -16496; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill497; RV64IZFINX-NEXT:    call abort498  %1 = fcmp ord float %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_ueq(float %a, float %b) nounwind {508; RV32IF-LABEL: br_fcmp_ueq:509; RV32IF:       # %bb.0:510; RV32IF-NEXT:    flt.s a0, fa0, fa1511; RV32IF-NEXT:    flt.s a1, fa1, fa0512; RV32IF-NEXT:    or a0, a1, a0513; RV32IF-NEXT:    beqz a0, .LBB9_2514; RV32IF-NEXT:  # %bb.1: # %if.else515; RV32IF-NEXT:    ret516; RV32IF-NEXT:  .LBB9_2: # %if.then517; RV32IF-NEXT:    addi sp, sp, -16518; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill519; RV32IF-NEXT:    call abort520;521; RV64IF-LABEL: br_fcmp_ueq:522; RV64IF:       # %bb.0:523; RV64IF-NEXT:    flt.s a0, fa0, fa1524; RV64IF-NEXT:    flt.s a1, fa1, fa0525; RV64IF-NEXT:    or a0, a1, a0526; RV64IF-NEXT:    beqz a0, .LBB9_2527; RV64IF-NEXT:  # %bb.1: # %if.else528; RV64IF-NEXT:    ret529; RV64IF-NEXT:  .LBB9_2: # %if.then530; RV64IF-NEXT:    addi sp, sp, -16531; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill532; RV64IF-NEXT:    call abort533;534; RV32IZFINX-LABEL: br_fcmp_ueq:535; RV32IZFINX:       # %bb.0:536; RV32IZFINX-NEXT:    flt.s a2, a0, a1537; RV32IZFINX-NEXT:    flt.s a0, a1, a0538; RV32IZFINX-NEXT:    or a0, a0, a2539; RV32IZFINX-NEXT:    beqz a0, .LBB9_2540; RV32IZFINX-NEXT:  # %bb.1: # %if.else541; RV32IZFINX-NEXT:    ret542; RV32IZFINX-NEXT:  .LBB9_2: # %if.then543; RV32IZFINX-NEXT:    addi sp, sp, -16544; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill545; RV32IZFINX-NEXT:    call abort546;547; RV64IZFINX-LABEL: br_fcmp_ueq:548; RV64IZFINX:       # %bb.0:549; RV64IZFINX-NEXT:    flt.s a2, a0, a1550; RV64IZFINX-NEXT:    flt.s a0, a1, a0551; RV64IZFINX-NEXT:    or a0, a0, a2552; RV64IZFINX-NEXT:    beqz a0, .LBB9_2553; RV64IZFINX-NEXT:  # %bb.1: # %if.else554; RV64IZFINX-NEXT:    ret555; RV64IZFINX-NEXT:  .LBB9_2: # %if.then556; RV64IZFINX-NEXT:    addi sp, sp, -16557; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill558; RV64IZFINX-NEXT:    call abort559  %1 = fcmp ueq float %a, %b560  br i1 %1, label %if.then, label %if.else561if.else:562  ret void563if.then:564  tail call void @abort()565  unreachable566}567 568define void @br_fcmp_ugt(float %a, float %b) nounwind {569; RV32IF-LABEL: br_fcmp_ugt:570; RV32IF:       # %bb.0:571; RV32IF-NEXT:    fle.s a0, fa0, fa1572; RV32IF-NEXT:    beqz a0, .LBB10_2573; RV32IF-NEXT:  # %bb.1: # %if.else574; RV32IF-NEXT:    ret575; RV32IF-NEXT:  .LBB10_2: # %if.then576; RV32IF-NEXT:    addi sp, sp, -16577; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill578; RV32IF-NEXT:    call abort579;580; RV64IF-LABEL: br_fcmp_ugt:581; RV64IF:       # %bb.0:582; RV64IF-NEXT:    fle.s a0, fa0, fa1583; RV64IF-NEXT:    beqz a0, .LBB10_2584; RV64IF-NEXT:  # %bb.1: # %if.else585; RV64IF-NEXT:    ret586; RV64IF-NEXT:  .LBB10_2: # %if.then587; RV64IF-NEXT:    addi sp, sp, -16588; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill589; RV64IF-NEXT:    call abort590;591; RV32IZFINX-LABEL: br_fcmp_ugt:592; RV32IZFINX:       # %bb.0:593; RV32IZFINX-NEXT:    fle.s a0, a0, a1594; RV32IZFINX-NEXT:    beqz a0, .LBB10_2595; RV32IZFINX-NEXT:  # %bb.1: # %if.else596; RV32IZFINX-NEXT:    ret597; RV32IZFINX-NEXT:  .LBB10_2: # %if.then598; RV32IZFINX-NEXT:    addi sp, sp, -16599; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill600; RV32IZFINX-NEXT:    call abort601;602; RV64IZFINX-LABEL: br_fcmp_ugt:603; RV64IZFINX:       # %bb.0:604; RV64IZFINX-NEXT:    fle.s a0, a0, a1605; RV64IZFINX-NEXT:    beqz a0, .LBB10_2606; RV64IZFINX-NEXT:  # %bb.1: # %if.else607; RV64IZFINX-NEXT:    ret608; RV64IZFINX-NEXT:  .LBB10_2: # %if.then609; RV64IZFINX-NEXT:    addi sp, sp, -16610; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill611; RV64IZFINX-NEXT:    call abort612  %1 = fcmp ugt float %a, %b613  br i1 %1, label %if.then, label %if.else614if.else:615  ret void616if.then:617  tail call void @abort()618  unreachable619}620 621define void @br_fcmp_uge(float %a, float %b) nounwind {622; RV32IF-LABEL: br_fcmp_uge:623; RV32IF:       # %bb.0:624; RV32IF-NEXT:    flt.s a0, fa0, fa1625; RV32IF-NEXT:    beqz a0, .LBB11_2626; RV32IF-NEXT:  # %bb.1: # %if.else627; RV32IF-NEXT:    ret628; RV32IF-NEXT:  .LBB11_2: # %if.then629; RV32IF-NEXT:    addi sp, sp, -16630; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill631; RV32IF-NEXT:    call abort632;633; RV64IF-LABEL: br_fcmp_uge:634; RV64IF:       # %bb.0:635; RV64IF-NEXT:    flt.s a0, fa0, fa1636; RV64IF-NEXT:    beqz a0, .LBB11_2637; RV64IF-NEXT:  # %bb.1: # %if.else638; RV64IF-NEXT:    ret639; RV64IF-NEXT:  .LBB11_2: # %if.then640; RV64IF-NEXT:    addi sp, sp, -16641; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill642; RV64IF-NEXT:    call abort643;644; RV32IZFINX-LABEL: br_fcmp_uge:645; RV32IZFINX:       # %bb.0:646; RV32IZFINX-NEXT:    flt.s a0, a0, a1647; RV32IZFINX-NEXT:    beqz a0, .LBB11_2648; RV32IZFINX-NEXT:  # %bb.1: # %if.else649; RV32IZFINX-NEXT:    ret650; RV32IZFINX-NEXT:  .LBB11_2: # %if.then651; RV32IZFINX-NEXT:    addi sp, sp, -16652; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill653; RV32IZFINX-NEXT:    call abort654;655; RV64IZFINX-LABEL: br_fcmp_uge:656; RV64IZFINX:       # %bb.0:657; RV64IZFINX-NEXT:    flt.s a0, a0, a1658; RV64IZFINX-NEXT:    beqz a0, .LBB11_2659; RV64IZFINX-NEXT:  # %bb.1: # %if.else660; RV64IZFINX-NEXT:    ret661; RV64IZFINX-NEXT:  .LBB11_2: # %if.then662; RV64IZFINX-NEXT:    addi sp, sp, -16663; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill664; RV64IZFINX-NEXT:    call abort665  %1 = fcmp uge float %a, %b666  br i1 %1, label %if.then, label %if.else667if.else:668  ret void669if.then:670  tail call void @abort()671  unreachable672}673 674define void @br_fcmp_ult(float %a, float %b) nounwind {675; RV32IF-LABEL: br_fcmp_ult:676; RV32IF:       # %bb.0:677; RV32IF-NEXT:    fle.s a0, fa1, fa0678; RV32IF-NEXT:    beqz a0, .LBB12_2679; RV32IF-NEXT:  # %bb.1: # %if.else680; RV32IF-NEXT:    ret681; RV32IF-NEXT:  .LBB12_2: # %if.then682; RV32IF-NEXT:    addi sp, sp, -16683; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill684; RV32IF-NEXT:    call abort685;686; RV64IF-LABEL: br_fcmp_ult:687; RV64IF:       # %bb.0:688; RV64IF-NEXT:    fle.s a0, fa1, fa0689; RV64IF-NEXT:    beqz a0, .LBB12_2690; RV64IF-NEXT:  # %bb.1: # %if.else691; RV64IF-NEXT:    ret692; RV64IF-NEXT:  .LBB12_2: # %if.then693; RV64IF-NEXT:    addi sp, sp, -16694; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill695; RV64IF-NEXT:    call abort696;697; RV32IZFINX-LABEL: br_fcmp_ult:698; RV32IZFINX:       # %bb.0:699; RV32IZFINX-NEXT:    fle.s a0, a1, a0700; RV32IZFINX-NEXT:    beqz a0, .LBB12_2701; RV32IZFINX-NEXT:  # %bb.1: # %if.else702; RV32IZFINX-NEXT:    ret703; RV32IZFINX-NEXT:  .LBB12_2: # %if.then704; RV32IZFINX-NEXT:    addi sp, sp, -16705; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill706; RV32IZFINX-NEXT:    call abort707;708; RV64IZFINX-LABEL: br_fcmp_ult:709; RV64IZFINX:       # %bb.0:710; RV64IZFINX-NEXT:    fle.s a0, a1, a0711; RV64IZFINX-NEXT:    beqz a0, .LBB12_2712; RV64IZFINX-NEXT:  # %bb.1: # %if.else713; RV64IZFINX-NEXT:    ret714; RV64IZFINX-NEXT:  .LBB12_2: # %if.then715; RV64IZFINX-NEXT:    addi sp, sp, -16716; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill717; RV64IZFINX-NEXT:    call abort718  %1 = fcmp ult float %a, %b719  br i1 %1, label %if.then, label %if.else720if.else:721  ret void722if.then:723  tail call void @abort()724  unreachable725}726 727define void @br_fcmp_ule(float %a, float %b) nounwind {728; RV32IF-LABEL: br_fcmp_ule:729; RV32IF:       # %bb.0:730; RV32IF-NEXT:    flt.s a0, fa1, fa0731; RV32IF-NEXT:    beqz a0, .LBB13_2732; RV32IF-NEXT:  # %bb.1: # %if.else733; RV32IF-NEXT:    ret734; RV32IF-NEXT:  .LBB13_2: # %if.then735; RV32IF-NEXT:    addi sp, sp, -16736; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill737; RV32IF-NEXT:    call abort738;739; RV64IF-LABEL: br_fcmp_ule:740; RV64IF:       # %bb.0:741; RV64IF-NEXT:    flt.s a0, fa1, fa0742; RV64IF-NEXT:    beqz a0, .LBB13_2743; RV64IF-NEXT:  # %bb.1: # %if.else744; RV64IF-NEXT:    ret745; RV64IF-NEXT:  .LBB13_2: # %if.then746; RV64IF-NEXT:    addi sp, sp, -16747; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill748; RV64IF-NEXT:    call abort749;750; RV32IZFINX-LABEL: br_fcmp_ule:751; RV32IZFINX:       # %bb.0:752; RV32IZFINX-NEXT:    flt.s a0, a1, a0753; RV32IZFINX-NEXT:    beqz a0, .LBB13_2754; RV32IZFINX-NEXT:  # %bb.1: # %if.else755; RV32IZFINX-NEXT:    ret756; RV32IZFINX-NEXT:  .LBB13_2: # %if.then757; RV32IZFINX-NEXT:    addi sp, sp, -16758; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill759; RV32IZFINX-NEXT:    call abort760;761; RV64IZFINX-LABEL: br_fcmp_ule:762; RV64IZFINX:       # %bb.0:763; RV64IZFINX-NEXT:    flt.s a0, a1, a0764; RV64IZFINX-NEXT:    beqz a0, .LBB13_2765; RV64IZFINX-NEXT:  # %bb.1: # %if.else766; RV64IZFINX-NEXT:    ret767; RV64IZFINX-NEXT:  .LBB13_2: # %if.then768; RV64IZFINX-NEXT:    addi sp, sp, -16769; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill770; RV64IZFINX-NEXT:    call abort771  %1 = fcmp ule float %a, %b772  br i1 %1, label %if.then, label %if.else773if.else:774  ret void775if.then:776  tail call void @abort()777  unreachable778}779 780define void @br_fcmp_une(float %a, float %b) nounwind {781; RV32IF-LABEL: br_fcmp_une:782; RV32IF:       # %bb.0:783; RV32IF-NEXT:    feq.s a0, fa0, fa1784; RV32IF-NEXT:    beqz a0, .LBB14_2785; RV32IF-NEXT:  # %bb.1: # %if.else786; RV32IF-NEXT:    ret787; RV32IF-NEXT:  .LBB14_2: # %if.then788; RV32IF-NEXT:    addi sp, sp, -16789; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill790; RV32IF-NEXT:    call abort791;792; RV64IF-LABEL: br_fcmp_une:793; RV64IF:       # %bb.0:794; RV64IF-NEXT:    feq.s a0, fa0, fa1795; RV64IF-NEXT:    beqz a0, .LBB14_2796; RV64IF-NEXT:  # %bb.1: # %if.else797; RV64IF-NEXT:    ret798; RV64IF-NEXT:  .LBB14_2: # %if.then799; RV64IF-NEXT:    addi sp, sp, -16800; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill801; RV64IF-NEXT:    call abort802;803; RV32IZFINX-LABEL: br_fcmp_une:804; RV32IZFINX:       # %bb.0:805; RV32IZFINX-NEXT:    feq.s a0, a0, a1806; RV32IZFINX-NEXT:    beqz a0, .LBB14_2807; RV32IZFINX-NEXT:  # %bb.1: # %if.else808; RV32IZFINX-NEXT:    ret809; RV32IZFINX-NEXT:  .LBB14_2: # %if.then810; RV32IZFINX-NEXT:    addi sp, sp, -16811; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill812; RV32IZFINX-NEXT:    call abort813;814; RV64IZFINX-LABEL: br_fcmp_une:815; RV64IZFINX:       # %bb.0:816; RV64IZFINX-NEXT:    feq.s a0, a0, a1817; RV64IZFINX-NEXT:    beqz a0, .LBB14_2818; RV64IZFINX-NEXT:  # %bb.1: # %if.else819; RV64IZFINX-NEXT:    ret820; RV64IZFINX-NEXT:  .LBB14_2: # %if.then821; RV64IZFINX-NEXT:    addi sp, sp, -16822; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill823; RV64IZFINX-NEXT:    call abort824  %1 = fcmp une float %a, %b825  br i1 %1, label %if.then, label %if.else826if.else:827  ret void828if.then:829  tail call void @abort()830  unreachable831}832 833define void @br_fcmp_uno(float %a, float %b) nounwind {834; RV32IF-LABEL: br_fcmp_uno:835; RV32IF:       # %bb.0:836; RV32IF-NEXT:    feq.s a0, fa1, fa1837; RV32IF-NEXT:    feq.s a1, fa0, fa0838; RV32IF-NEXT:    and a0, a1, a0839; RV32IF-NEXT:    beqz a0, .LBB15_2840; RV32IF-NEXT:  # %bb.1: # %if.else841; RV32IF-NEXT:    ret842; RV32IF-NEXT:  .LBB15_2: # %if.then843; RV32IF-NEXT:    addi sp, sp, -16844; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill845; RV32IF-NEXT:    call abort846;847; RV64IF-LABEL: br_fcmp_uno:848; RV64IF:       # %bb.0:849; RV64IF-NEXT:    feq.s a0, fa1, fa1850; RV64IF-NEXT:    feq.s a1, fa0, fa0851; RV64IF-NEXT:    and a0, a1, a0852; RV64IF-NEXT:    beqz a0, .LBB15_2853; RV64IF-NEXT:  # %bb.1: # %if.else854; RV64IF-NEXT:    ret855; RV64IF-NEXT:  .LBB15_2: # %if.then856; RV64IF-NEXT:    addi sp, sp, -16857; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill858; RV64IF-NEXT:    call abort859;860; RV32IZFINX-LABEL: br_fcmp_uno:861; RV32IZFINX:       # %bb.0:862; RV32IZFINX-NEXT:    feq.s a1, a1, a1863; RV32IZFINX-NEXT:    feq.s a0, a0, a0864; RV32IZFINX-NEXT:    and a0, a0, a1865; RV32IZFINX-NEXT:    beqz a0, .LBB15_2866; RV32IZFINX-NEXT:  # %bb.1: # %if.else867; RV32IZFINX-NEXT:    ret868; RV32IZFINX-NEXT:  .LBB15_2: # %if.then869; RV32IZFINX-NEXT:    addi sp, sp, -16870; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill871; RV32IZFINX-NEXT:    call abort872;873; RV64IZFINX-LABEL: br_fcmp_uno:874; RV64IZFINX:       # %bb.0:875; RV64IZFINX-NEXT:    feq.s a1, a1, a1876; RV64IZFINX-NEXT:    feq.s a0, a0, a0877; RV64IZFINX-NEXT:    and a0, a0, a1878; RV64IZFINX-NEXT:    beqz a0, .LBB15_2879; RV64IZFINX-NEXT:  # %bb.1: # %if.else880; RV64IZFINX-NEXT:    ret881; RV64IZFINX-NEXT:  .LBB15_2: # %if.then882; RV64IZFINX-NEXT:    addi sp, sp, -16883; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill884; RV64IZFINX-NEXT:    call abort885  %1 = fcmp uno float %a, %b886  br i1 %1, label %if.then, label %if.else887if.else:888  ret void889if.then:890  tail call void @abort()891  unreachable892}893 894define void @br_fcmp_true(float %a, float %b) nounwind {895; RV32IF-LABEL: br_fcmp_true:896; RV32IF:       # %bb.0:897; RV32IF-NEXT:    j .LBB16_2898; RV32IF-NEXT:  # %bb.1: # %if.else899; RV32IF-NEXT:    ret900; RV32IF-NEXT:  .LBB16_2: # %if.then901; RV32IF-NEXT:    addi sp, sp, -16902; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill903; RV32IF-NEXT:    call abort904;905; RV64IF-LABEL: br_fcmp_true:906; RV64IF:       # %bb.0:907; RV64IF-NEXT:    j .LBB16_2908; RV64IF-NEXT:  # %bb.1: # %if.else909; RV64IF-NEXT:    ret910; RV64IF-NEXT:  .LBB16_2: # %if.then911; RV64IF-NEXT:    addi sp, sp, -16912; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill913; RV64IF-NEXT:    call abort914;915; RV32IZFINX-LABEL: br_fcmp_true:916; RV32IZFINX:       # %bb.0:917; RV32IZFINX-NEXT:    j .LBB16_2918; RV32IZFINX-NEXT:  # %bb.1: # %if.else919; RV32IZFINX-NEXT:    ret920; RV32IZFINX-NEXT:  .LBB16_2: # %if.then921; RV32IZFINX-NEXT:    addi sp, sp, -16922; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill923; RV32IZFINX-NEXT:    call abort924;925; RV64IZFINX-LABEL: br_fcmp_true:926; RV64IZFINX:       # %bb.0:927; RV64IZFINX-NEXT:    j .LBB16_2928; RV64IZFINX-NEXT:  # %bb.1: # %if.else929; RV64IZFINX-NEXT:    ret930; RV64IZFINX-NEXT:  .LBB16_2: # %if.then931; RV64IZFINX-NEXT:    addi sp, sp, -16932; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill933; RV64IZFINX-NEXT:    call abort934  %1 = fcmp true float %a, %b935  br i1 %1, label %if.then, label %if.else936if.else:937  ret void938if.then:939  tail call void @abort()940  unreachable941}942 943; This test exists primarily to trigger RISCVInstrInfo::storeRegToStackSlot944; and RISCVInstrInfo::loadRegFromStackSlot945define i32 @br_fcmp_store_load_stack_slot(float %a, float %b) nounwind {946; RV32IF-LABEL: br_fcmp_store_load_stack_slot:947; RV32IF:       # %bb.0: # %entry948; RV32IF-NEXT:    addi sp, sp, -16949; RV32IF-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill950; RV32IF-NEXT:    fsw fs0, 8(sp) # 4-byte Folded Spill951; RV32IF-NEXT:    fmv.w.x fs0, zero952; RV32IF-NEXT:    fmv.s fa0, fs0953; RV32IF-NEXT:    call dummy954; RV32IF-NEXT:    feq.s a0, fa0, fs0955; RV32IF-NEXT:    beqz a0, .LBB17_3956; RV32IF-NEXT:  # %bb.1: # %if.end957; RV32IF-NEXT:    fmv.s fa0, fs0958; RV32IF-NEXT:    call dummy959; RV32IF-NEXT:    feq.s a0, fa0, fs0960; RV32IF-NEXT:    beqz a0, .LBB17_3961; RV32IF-NEXT:  # %bb.2: # %if.end4962; RV32IF-NEXT:    li a0, 0963; RV32IF-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload964; RV32IF-NEXT:    flw fs0, 8(sp) # 4-byte Folded Reload965; RV32IF-NEXT:    addi sp, sp, 16966; RV32IF-NEXT:    ret967; RV32IF-NEXT:  .LBB17_3: # %if.then968; RV32IF-NEXT:    call abort969;970; RV64IF-LABEL: br_fcmp_store_load_stack_slot:971; RV64IF:       # %bb.0: # %entry972; RV64IF-NEXT:    addi sp, sp, -16973; RV64IF-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill974; RV64IF-NEXT:    fsw fs0, 4(sp) # 4-byte Folded Spill975; RV64IF-NEXT:    fmv.w.x fs0, zero976; RV64IF-NEXT:    fmv.s fa0, fs0977; RV64IF-NEXT:    call dummy978; RV64IF-NEXT:    feq.s a0, fa0, fs0979; RV64IF-NEXT:    beqz a0, .LBB17_3980; RV64IF-NEXT:  # %bb.1: # %if.end981; RV64IF-NEXT:    fmv.s fa0, fs0982; RV64IF-NEXT:    call dummy983; RV64IF-NEXT:    feq.s a0, fa0, fs0984; RV64IF-NEXT:    beqz a0, .LBB17_3985; RV64IF-NEXT:  # %bb.2: # %if.end4986; RV64IF-NEXT:    li a0, 0987; RV64IF-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload988; RV64IF-NEXT:    flw fs0, 4(sp) # 4-byte Folded Reload989; RV64IF-NEXT:    addi sp, sp, 16990; RV64IF-NEXT:    ret991; RV64IF-NEXT:  .LBB17_3: # %if.then992; RV64IF-NEXT:    call abort993;994; RV32IZFINX-LABEL: br_fcmp_store_load_stack_slot:995; RV32IZFINX:       # %bb.0: # %entry996; RV32IZFINX-NEXT:    addi sp, sp, -16997; RV32IZFINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill998; RV32IZFINX-NEXT:    li a0, 0999; RV32IZFINX-NEXT:    call dummy1000; RV32IZFINX-NEXT:    feq.s a0, a0, zero1001; RV32IZFINX-NEXT:    beqz a0, .LBB17_31002; RV32IZFINX-NEXT:  # %bb.1: # %if.end1003; RV32IZFINX-NEXT:    li a0, 01004; RV32IZFINX-NEXT:    call dummy1005; RV32IZFINX-NEXT:    feq.s a0, a0, zero1006; RV32IZFINX-NEXT:    beqz a0, .LBB17_31007; RV32IZFINX-NEXT:  # %bb.2: # %if.end41008; RV32IZFINX-NEXT:    li a0, 01009; RV32IZFINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1010; RV32IZFINX-NEXT:    addi sp, sp, 161011; RV32IZFINX-NEXT:    ret1012; RV32IZFINX-NEXT:  .LBB17_3: # %if.then1013; RV32IZFINX-NEXT:    call abort1014;1015; RV64IZFINX-LABEL: br_fcmp_store_load_stack_slot:1016; RV64IZFINX:       # %bb.0: # %entry1017; RV64IZFINX-NEXT:    addi sp, sp, -161018; RV64IZFINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1019; RV64IZFINX-NEXT:    li a0, 01020; RV64IZFINX-NEXT:    call dummy1021; RV64IZFINX-NEXT:    feq.s a0, a0, zero1022; RV64IZFINX-NEXT:    beqz a0, .LBB17_31023; RV64IZFINX-NEXT:  # %bb.1: # %if.end1024; RV64IZFINX-NEXT:    li a0, 01025; RV64IZFINX-NEXT:    call dummy1026; RV64IZFINX-NEXT:    feq.s a0, a0, zero1027; RV64IZFINX-NEXT:    beqz a0, .LBB17_31028; RV64IZFINX-NEXT:  # %bb.2: # %if.end41029; RV64IZFINX-NEXT:    li a0, 01030; RV64IZFINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1031; RV64IZFINX-NEXT:    addi sp, sp, 161032; RV64IZFINX-NEXT:    ret1033; RV64IZFINX-NEXT:  .LBB17_3: # %if.then1034; RV64IZFINX-NEXT:    call abort1035entry:1036  %call = call float @dummy(float 0.000000e+00)1037  %cmp = fcmp une float %call, 0.000000e+001038  br i1 %cmp, label %if.then, label %if.end1039 1040if.then:1041  call void @abort()1042  unreachable1043 1044if.end:1045  %call1 = call float @dummy(float 0.000000e+00)1046  %cmp2 = fcmp une float %call1, 0.000000e+001047  br i1 %cmp2, label %if.then3, label %if.end41048 1049if.then3:1050  call void @abort()1051  unreachable1052 1053if.end4:1054  ret i32 01055}1056