brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.9 KiB · b2c8828 Raw
941 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d -verify-machineinstrs < %s \3; RUN:   -target-abi=ilp32d | FileCheck -check-prefix=RV32IFD %s4; RUN: llc -mtriple=riscv64 -mattr=+d -verify-machineinstrs < %s \5; RUN:   -target-abi=lp64d | FileCheck -check-prefix=RV64IFD %s6; RUN: llc -mtriple=riscv32 -mattr=+zdinx -verify-machineinstrs < %s \7; RUN:   -target-abi=ilp32 | FileCheck -check-prefix=RV32IZFINXZDINX %s8; RUN: llc -mtriple=riscv64 -mattr=+zdinx -verify-machineinstrs < %s \9; RUN:   -target-abi=lp64 | FileCheck -check-prefix=RV64IZFINXZDINX %s10 11declare void @abort()12declare void @exit(i32)13 14define void @br_fcmp_false(double %a, double %b) nounwind {15; RV32IFD-LABEL: br_fcmp_false:16; RV32IFD:       # %bb.0:17; RV32IFD-NEXT:    j .LBB0_218; RV32IFD-NEXT:  # %bb.1: # %if.then19; RV32IFD-NEXT:    ret20; RV32IFD-NEXT:  .LBB0_2: # %if.else21; RV32IFD-NEXT:    addi sp, sp, -1622; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill23; RV32IFD-NEXT:    call abort24;25; RV64IFD-LABEL: br_fcmp_false:26; RV64IFD:       # %bb.0:27; RV64IFD-NEXT:    j .LBB0_228; RV64IFD-NEXT:  # %bb.1: # %if.then29; RV64IFD-NEXT:    ret30; RV64IFD-NEXT:  .LBB0_2: # %if.else31; RV64IFD-NEXT:    addi sp, sp, -1632; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill33; RV64IFD-NEXT:    call abort34;35; RV32IZFINXZDINX-LABEL: br_fcmp_false:36; RV32IZFINXZDINX:       # %bb.0:37; RV32IZFINXZDINX-NEXT:    j .LBB0_238; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.then39; RV32IZFINXZDINX-NEXT:    ret40; RV32IZFINXZDINX-NEXT:  .LBB0_2: # %if.else41; RV32IZFINXZDINX-NEXT:    addi sp, sp, -1642; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill43; RV32IZFINXZDINX-NEXT:    call abort44;45; RV64IZFINXZDINX-LABEL: br_fcmp_false:46; RV64IZFINXZDINX:       # %bb.0:47; RV64IZFINXZDINX-NEXT:    j .LBB0_248; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.then49; RV64IZFINXZDINX-NEXT:    ret50; RV64IZFINXZDINX-NEXT:  .LBB0_2: # %if.else51; RV64IZFINXZDINX-NEXT:    addi sp, sp, -1652; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill53; RV64IZFINXZDINX-NEXT:    call abort54  %1 = fcmp false double %a, %b55  br i1 %1, label %if.then, label %if.else56if.then:57  ret void58if.else:59  tail call void @abort()60  unreachable61}62 63define void @br_fcmp_oeq(double %a, double %b) nounwind {64; RV32IFD-LABEL: br_fcmp_oeq:65; RV32IFD:       # %bb.0:66; RV32IFD-NEXT:    feq.d a0, fa0, fa167; RV32IFD-NEXT:    bnez a0, .LBB1_268; RV32IFD-NEXT:  # %bb.1: # %if.else69; RV32IFD-NEXT:    ret70; RV32IFD-NEXT:  .LBB1_2: # %if.then71; RV32IFD-NEXT:    addi sp, sp, -1672; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill73; RV32IFD-NEXT:    call abort74;75; RV64IFD-LABEL: br_fcmp_oeq:76; RV64IFD:       # %bb.0:77; RV64IFD-NEXT:    feq.d a0, fa0, fa178; RV64IFD-NEXT:    bnez a0, .LBB1_279; RV64IFD-NEXT:  # %bb.1: # %if.else80; RV64IFD-NEXT:    ret81; RV64IFD-NEXT:  .LBB1_2: # %if.then82; RV64IFD-NEXT:    addi sp, sp, -1683; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill84; RV64IFD-NEXT:    call abort85;86; RV32IZFINXZDINX-LABEL: br_fcmp_oeq:87; RV32IZFINXZDINX:       # %bb.0:88; RV32IZFINXZDINX-NEXT:    feq.d a0, a0, a289; RV32IZFINXZDINX-NEXT:    bnez a0, .LBB1_290; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else91; RV32IZFINXZDINX-NEXT:    ret92; RV32IZFINXZDINX-NEXT:  .LBB1_2: # %if.then93; RV32IZFINXZDINX-NEXT:    addi sp, sp, -1694; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill95; RV32IZFINXZDINX-NEXT:    call abort96;97; RV64IZFINXZDINX-LABEL: br_fcmp_oeq:98; RV64IZFINXZDINX:       # %bb.0:99; RV64IZFINXZDINX-NEXT:    feq.d a0, a0, a1100; RV64IZFINXZDINX-NEXT:    bnez a0, .LBB1_2101; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else102; RV64IZFINXZDINX-NEXT:    ret103; RV64IZFINXZDINX-NEXT:  .LBB1_2: # %if.then104; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16105; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill106; RV64IZFINXZDINX-NEXT:    call abort107  %1 = fcmp oeq double %a, %b108  br i1 %1, label %if.then, label %if.else109if.else:110  ret void111if.then:112  tail call void @abort()113  unreachable114}115 116; TODO: generated code quality for this is very poor due to117; DAGCombiner::visitXOR converting the legal setoeq to setune, which requires118; expansion.119define void @br_fcmp_oeq_alt(double %a, double %b) nounwind {120; RV32IFD-LABEL: br_fcmp_oeq_alt:121; RV32IFD:       # %bb.0:122; RV32IFD-NEXT:    feq.d a0, fa0, fa1123; RV32IFD-NEXT:    bnez a0, .LBB2_2124; RV32IFD-NEXT:  # %bb.1: # %if.else125; RV32IFD-NEXT:    ret126; RV32IFD-NEXT:  .LBB2_2: # %if.then127; RV32IFD-NEXT:    addi sp, sp, -16128; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill129; RV32IFD-NEXT:    call abort130;131; RV64IFD-LABEL: br_fcmp_oeq_alt:132; RV64IFD:       # %bb.0:133; RV64IFD-NEXT:    feq.d a0, fa0, fa1134; RV64IFD-NEXT:    bnez a0, .LBB2_2135; RV64IFD-NEXT:  # %bb.1: # %if.else136; RV64IFD-NEXT:    ret137; RV64IFD-NEXT:  .LBB2_2: # %if.then138; RV64IFD-NEXT:    addi sp, sp, -16139; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill140; RV64IFD-NEXT:    call abort141;142; RV32IZFINXZDINX-LABEL: br_fcmp_oeq_alt:143; RV32IZFINXZDINX:       # %bb.0:144; RV32IZFINXZDINX-NEXT:    feq.d a0, a0, a2145; RV32IZFINXZDINX-NEXT:    bnez a0, .LBB2_2146; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else147; RV32IZFINXZDINX-NEXT:    ret148; RV32IZFINXZDINX-NEXT:  .LBB2_2: # %if.then149; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16150; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill151; RV32IZFINXZDINX-NEXT:    call abort152;153; RV64IZFINXZDINX-LABEL: br_fcmp_oeq_alt:154; RV64IZFINXZDINX:       # %bb.0:155; RV64IZFINXZDINX-NEXT:    feq.d a0, a0, a1156; RV64IZFINXZDINX-NEXT:    bnez a0, .LBB2_2157; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else158; RV64IZFINXZDINX-NEXT:    ret159; RV64IZFINXZDINX-NEXT:  .LBB2_2: # %if.then160; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16161; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill162; RV64IZFINXZDINX-NEXT:    call abort163  %1 = fcmp oeq double %a, %b164  br i1 %1, label %if.then, label %if.else165if.then:166  tail call void @abort()167  unreachable168if.else:169  ret void170}171 172define void @br_fcmp_ogt(double %a, double %b) nounwind {173; RV32IFD-LABEL: br_fcmp_ogt:174; RV32IFD:       # %bb.0:175; RV32IFD-NEXT:    flt.d a0, fa1, fa0176; RV32IFD-NEXT:    bnez a0, .LBB3_2177; RV32IFD-NEXT:  # %bb.1: # %if.else178; RV32IFD-NEXT:    ret179; RV32IFD-NEXT:  .LBB3_2: # %if.then180; RV32IFD-NEXT:    addi sp, sp, -16181; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill182; RV32IFD-NEXT:    call abort183;184; RV64IFD-LABEL: br_fcmp_ogt:185; RV64IFD:       # %bb.0:186; RV64IFD-NEXT:    flt.d a0, fa1, fa0187; RV64IFD-NEXT:    bnez a0, .LBB3_2188; RV64IFD-NEXT:  # %bb.1: # %if.else189; RV64IFD-NEXT:    ret190; RV64IFD-NEXT:  .LBB3_2: # %if.then191; RV64IFD-NEXT:    addi sp, sp, -16192; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill193; RV64IFD-NEXT:    call abort194;195; RV32IZFINXZDINX-LABEL: br_fcmp_ogt:196; RV32IZFINXZDINX:       # %bb.0:197; RV32IZFINXZDINX-NEXT:    flt.d a0, a2, a0198; RV32IZFINXZDINX-NEXT:    bnez a0, .LBB3_2199; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else200; RV32IZFINXZDINX-NEXT:    ret201; RV32IZFINXZDINX-NEXT:  .LBB3_2: # %if.then202; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16203; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill204; RV32IZFINXZDINX-NEXT:    call abort205;206; RV64IZFINXZDINX-LABEL: br_fcmp_ogt:207; RV64IZFINXZDINX:       # %bb.0:208; RV64IZFINXZDINX-NEXT:    flt.d a0, a1, a0209; RV64IZFINXZDINX-NEXT:    bnez a0, .LBB3_2210; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else211; RV64IZFINXZDINX-NEXT:    ret212; RV64IZFINXZDINX-NEXT:  .LBB3_2: # %if.then213; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16214; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill215; RV64IZFINXZDINX-NEXT:    call abort216  %1 = fcmp ogt double %a, %b217  br i1 %1, label %if.then, label %if.else218if.else:219  ret void220if.then:221  tail call void @abort()222  unreachable223}224 225define void @br_fcmp_oge(double %a, double %b) nounwind {226; RV32IFD-LABEL: br_fcmp_oge:227; RV32IFD:       # %bb.0:228; RV32IFD-NEXT:    fle.d a0, fa1, fa0229; RV32IFD-NEXT:    bnez a0, .LBB4_2230; RV32IFD-NEXT:  # %bb.1: # %if.else231; RV32IFD-NEXT:    ret232; RV32IFD-NEXT:  .LBB4_2: # %if.then233; RV32IFD-NEXT:    addi sp, sp, -16234; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill235; RV32IFD-NEXT:    call abort236;237; RV64IFD-LABEL: br_fcmp_oge:238; RV64IFD:       # %bb.0:239; RV64IFD-NEXT:    fle.d a0, fa1, fa0240; RV64IFD-NEXT:    bnez a0, .LBB4_2241; RV64IFD-NEXT:  # %bb.1: # %if.else242; RV64IFD-NEXT:    ret243; RV64IFD-NEXT:  .LBB4_2: # %if.then244; RV64IFD-NEXT:    addi sp, sp, -16245; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill246; RV64IFD-NEXT:    call abort247;248; RV32IZFINXZDINX-LABEL: br_fcmp_oge:249; RV32IZFINXZDINX:       # %bb.0:250; RV32IZFINXZDINX-NEXT:    fle.d a0, a2, a0251; RV32IZFINXZDINX-NEXT:    bnez a0, .LBB4_2252; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else253; RV32IZFINXZDINX-NEXT:    ret254; RV32IZFINXZDINX-NEXT:  .LBB4_2: # %if.then255; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16256; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill257; RV32IZFINXZDINX-NEXT:    call abort258;259; RV64IZFINXZDINX-LABEL: br_fcmp_oge:260; RV64IZFINXZDINX:       # %bb.0:261; RV64IZFINXZDINX-NEXT:    fle.d a0, a1, a0262; RV64IZFINXZDINX-NEXT:    bnez a0, .LBB4_2263; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else264; RV64IZFINXZDINX-NEXT:    ret265; RV64IZFINXZDINX-NEXT:  .LBB4_2: # %if.then266; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16267; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill268; RV64IZFINXZDINX-NEXT:    call abort269  %1 = fcmp oge double %a, %b270  br i1 %1, label %if.then, label %if.else271if.else:272  ret void273if.then:274  tail call void @abort()275  unreachable276}277 278define void @br_fcmp_olt(double %a, double %b) nounwind {279; RV32IFD-LABEL: br_fcmp_olt:280; RV32IFD:       # %bb.0:281; RV32IFD-NEXT:    flt.d a0, fa0, fa1282; RV32IFD-NEXT:    bnez a0, .LBB5_2283; RV32IFD-NEXT:  # %bb.1: # %if.else284; RV32IFD-NEXT:    ret285; RV32IFD-NEXT:  .LBB5_2: # %if.then286; RV32IFD-NEXT:    addi sp, sp, -16287; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill288; RV32IFD-NEXT:    call abort289;290; RV64IFD-LABEL: br_fcmp_olt:291; RV64IFD:       # %bb.0:292; RV64IFD-NEXT:    flt.d a0, fa0, fa1293; RV64IFD-NEXT:    bnez a0, .LBB5_2294; RV64IFD-NEXT:  # %bb.1: # %if.else295; RV64IFD-NEXT:    ret296; RV64IFD-NEXT:  .LBB5_2: # %if.then297; RV64IFD-NEXT:    addi sp, sp, -16298; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill299; RV64IFD-NEXT:    call abort300;301; RV32IZFINXZDINX-LABEL: br_fcmp_olt:302; RV32IZFINXZDINX:       # %bb.0:303; RV32IZFINXZDINX-NEXT:    flt.d a0, a0, a2304; RV32IZFINXZDINX-NEXT:    bnez a0, .LBB5_2305; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else306; RV32IZFINXZDINX-NEXT:    ret307; RV32IZFINXZDINX-NEXT:  .LBB5_2: # %if.then308; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16309; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill310; RV32IZFINXZDINX-NEXT:    call abort311;312; RV64IZFINXZDINX-LABEL: br_fcmp_olt:313; RV64IZFINXZDINX:       # %bb.0:314; RV64IZFINXZDINX-NEXT:    flt.d a0, a0, a1315; RV64IZFINXZDINX-NEXT:    bnez a0, .LBB5_2316; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else317; RV64IZFINXZDINX-NEXT:    ret318; RV64IZFINXZDINX-NEXT:  .LBB5_2: # %if.then319; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16320; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill321; RV64IZFINXZDINX-NEXT:    call abort322  %1 = fcmp olt double %a, %b323  br i1 %1, label %if.then, label %if.else324if.else:325  ret void326if.then:327  tail call void @abort()328  unreachable329}330 331define void @br_fcmp_ole(double %a, double %b) nounwind {332; RV32IFD-LABEL: br_fcmp_ole:333; RV32IFD:       # %bb.0:334; RV32IFD-NEXT:    fle.d a0, fa0, fa1335; RV32IFD-NEXT:    bnez a0, .LBB6_2336; RV32IFD-NEXT:  # %bb.1: # %if.else337; RV32IFD-NEXT:    ret338; RV32IFD-NEXT:  .LBB6_2: # %if.then339; RV32IFD-NEXT:    addi sp, sp, -16340; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill341; RV32IFD-NEXT:    call abort342;343; RV64IFD-LABEL: br_fcmp_ole:344; RV64IFD:       # %bb.0:345; RV64IFD-NEXT:    fle.d a0, fa0, fa1346; RV64IFD-NEXT:    bnez a0, .LBB6_2347; RV64IFD-NEXT:  # %bb.1: # %if.else348; RV64IFD-NEXT:    ret349; RV64IFD-NEXT:  .LBB6_2: # %if.then350; RV64IFD-NEXT:    addi sp, sp, -16351; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill352; RV64IFD-NEXT:    call abort353;354; RV32IZFINXZDINX-LABEL: br_fcmp_ole:355; RV32IZFINXZDINX:       # %bb.0:356; RV32IZFINXZDINX-NEXT:    fle.d a0, a0, a2357; RV32IZFINXZDINX-NEXT:    bnez a0, .LBB6_2358; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else359; RV32IZFINXZDINX-NEXT:    ret360; RV32IZFINXZDINX-NEXT:  .LBB6_2: # %if.then361; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16362; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill363; RV32IZFINXZDINX-NEXT:    call abort364;365; RV64IZFINXZDINX-LABEL: br_fcmp_ole:366; RV64IZFINXZDINX:       # %bb.0:367; RV64IZFINXZDINX-NEXT:    fle.d a0, a0, a1368; RV64IZFINXZDINX-NEXT:    bnez a0, .LBB6_2369; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else370; RV64IZFINXZDINX-NEXT:    ret371; RV64IZFINXZDINX-NEXT:  .LBB6_2: # %if.then372; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16373; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill374; RV64IZFINXZDINX-NEXT:    call abort375  %1 = fcmp ole double %a, %b376  br i1 %1, label %if.then, label %if.else377if.else:378  ret void379if.then:380  tail call void @abort()381  unreachable382}383 384define void @br_fcmp_one(double %a, double %b) nounwind {385; RV32IFD-LABEL: br_fcmp_one:386; RV32IFD:       # %bb.0:387; RV32IFD-NEXT:    flt.d a0, fa0, fa1388; RV32IFD-NEXT:    flt.d a1, fa1, fa0389; RV32IFD-NEXT:    or a0, a1, a0390; RV32IFD-NEXT:    bnez a0, .LBB7_2391; RV32IFD-NEXT:  # %bb.1: # %if.else392; RV32IFD-NEXT:    ret393; RV32IFD-NEXT:  .LBB7_2: # %if.then394; RV32IFD-NEXT:    addi sp, sp, -16395; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill396; RV32IFD-NEXT:    call abort397;398; RV64IFD-LABEL: br_fcmp_one:399; RV64IFD:       # %bb.0:400; RV64IFD-NEXT:    flt.d a0, fa0, fa1401; RV64IFD-NEXT:    flt.d a1, fa1, fa0402; RV64IFD-NEXT:    or a0, a1, a0403; RV64IFD-NEXT:    bnez a0, .LBB7_2404; RV64IFD-NEXT:  # %bb.1: # %if.else405; RV64IFD-NEXT:    ret406; RV64IFD-NEXT:  .LBB7_2: # %if.then407; RV64IFD-NEXT:    addi sp, sp, -16408; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill409; RV64IFD-NEXT:    call abort410;411; RV32IZFINXZDINX-LABEL: br_fcmp_one:412; RV32IZFINXZDINX:       # %bb.0:413; RV32IZFINXZDINX-NEXT:    flt.d a4, a0, a2414; RV32IZFINXZDINX-NEXT:    flt.d a0, a2, a0415; RV32IZFINXZDINX-NEXT:    or a0, a0, a4416; RV32IZFINXZDINX-NEXT:    bnez a0, .LBB7_2417; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else418; RV32IZFINXZDINX-NEXT:    ret419; RV32IZFINXZDINX-NEXT:  .LBB7_2: # %if.then420; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16421; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill422; RV32IZFINXZDINX-NEXT:    call abort423;424; RV64IZFINXZDINX-LABEL: br_fcmp_one:425; RV64IZFINXZDINX:       # %bb.0:426; RV64IZFINXZDINX-NEXT:    flt.d a2, a0, a1427; RV64IZFINXZDINX-NEXT:    flt.d a0, a1, a0428; RV64IZFINXZDINX-NEXT:    or a0, a0, a2429; RV64IZFINXZDINX-NEXT:    bnez a0, .LBB7_2430; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else431; RV64IZFINXZDINX-NEXT:    ret432; RV64IZFINXZDINX-NEXT:  .LBB7_2: # %if.then433; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16434; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill435; RV64IZFINXZDINX-NEXT:    call abort436  %1 = fcmp one double %a, %b437  br i1 %1, label %if.then, label %if.else438if.else:439  ret void440if.then:441  tail call void @abort()442  unreachable443}444 445define void @br_fcmp_ord(double %a, double %b) nounwind {446; RV32IFD-LABEL: br_fcmp_ord:447; RV32IFD:       # %bb.0:448; RV32IFD-NEXT:    feq.d a0, fa1, fa1449; RV32IFD-NEXT:    feq.d a1, fa0, fa0450; RV32IFD-NEXT:    and a0, a1, a0451; RV32IFD-NEXT:    bnez a0, .LBB8_2452; RV32IFD-NEXT:  # %bb.1: # %if.else453; RV32IFD-NEXT:    ret454; RV32IFD-NEXT:  .LBB8_2: # %if.then455; RV32IFD-NEXT:    addi sp, sp, -16456; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill457; RV32IFD-NEXT:    call abort458;459; RV64IFD-LABEL: br_fcmp_ord:460; RV64IFD:       # %bb.0:461; RV64IFD-NEXT:    feq.d a0, fa1, fa1462; RV64IFD-NEXT:    feq.d a1, fa0, fa0463; RV64IFD-NEXT:    and a0, a1, a0464; RV64IFD-NEXT:    bnez a0, .LBB8_2465; RV64IFD-NEXT:  # %bb.1: # %if.else466; RV64IFD-NEXT:    ret467; RV64IFD-NEXT:  .LBB8_2: # %if.then468; RV64IFD-NEXT:    addi sp, sp, -16469; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill470; RV64IFD-NEXT:    call abort471;472; RV32IZFINXZDINX-LABEL: br_fcmp_ord:473; RV32IZFINXZDINX:       # %bb.0:474; RV32IZFINXZDINX-NEXT:    feq.d a2, a2, a2475; RV32IZFINXZDINX-NEXT:    feq.d a0, a0, a0476; RV32IZFINXZDINX-NEXT:    and a0, a0, a2477; RV32IZFINXZDINX-NEXT:    bnez a0, .LBB8_2478; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else479; RV32IZFINXZDINX-NEXT:    ret480; RV32IZFINXZDINX-NEXT:  .LBB8_2: # %if.then481; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16482; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill483; RV32IZFINXZDINX-NEXT:    call abort484;485; RV64IZFINXZDINX-LABEL: br_fcmp_ord:486; RV64IZFINXZDINX:       # %bb.0:487; RV64IZFINXZDINX-NEXT:    feq.d a1, a1, a1488; RV64IZFINXZDINX-NEXT:    feq.d a0, a0, a0489; RV64IZFINXZDINX-NEXT:    and a0, a0, a1490; RV64IZFINXZDINX-NEXT:    bnez a0, .LBB8_2491; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else492; RV64IZFINXZDINX-NEXT:    ret493; RV64IZFINXZDINX-NEXT:  .LBB8_2: # %if.then494; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16495; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill496; RV64IZFINXZDINX-NEXT:    call abort497  %1 = fcmp ord double %a, %b498  br i1 %1, label %if.then, label %if.else499if.else:500  ret void501if.then:502  tail call void @abort()503  unreachable504}505 506define void @br_fcmp_ueq(double %a, double %b) nounwind {507; RV32IFD-LABEL: br_fcmp_ueq:508; RV32IFD:       # %bb.0:509; RV32IFD-NEXT:    flt.d a0, fa0, fa1510; RV32IFD-NEXT:    flt.d a1, fa1, fa0511; RV32IFD-NEXT:    or a0, a1, a0512; RV32IFD-NEXT:    beqz a0, .LBB9_2513; RV32IFD-NEXT:  # %bb.1: # %if.else514; RV32IFD-NEXT:    ret515; RV32IFD-NEXT:  .LBB9_2: # %if.then516; RV32IFD-NEXT:    addi sp, sp, -16517; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill518; RV32IFD-NEXT:    call abort519;520; RV64IFD-LABEL: br_fcmp_ueq:521; RV64IFD:       # %bb.0:522; RV64IFD-NEXT:    flt.d a0, fa0, fa1523; RV64IFD-NEXT:    flt.d a1, fa1, fa0524; RV64IFD-NEXT:    or a0, a1, a0525; RV64IFD-NEXT:    beqz a0, .LBB9_2526; RV64IFD-NEXT:  # %bb.1: # %if.else527; RV64IFD-NEXT:    ret528; RV64IFD-NEXT:  .LBB9_2: # %if.then529; RV64IFD-NEXT:    addi sp, sp, -16530; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill531; RV64IFD-NEXT:    call abort532;533; RV32IZFINXZDINX-LABEL: br_fcmp_ueq:534; RV32IZFINXZDINX:       # %bb.0:535; RV32IZFINXZDINX-NEXT:    flt.d a4, a0, a2536; RV32IZFINXZDINX-NEXT:    flt.d a0, a2, a0537; RV32IZFINXZDINX-NEXT:    or a0, a0, a4538; RV32IZFINXZDINX-NEXT:    beqz a0, .LBB9_2539; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else540; RV32IZFINXZDINX-NEXT:    ret541; RV32IZFINXZDINX-NEXT:  .LBB9_2: # %if.then542; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16543; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill544; RV32IZFINXZDINX-NEXT:    call abort545;546; RV64IZFINXZDINX-LABEL: br_fcmp_ueq:547; RV64IZFINXZDINX:       # %bb.0:548; RV64IZFINXZDINX-NEXT:    flt.d a2, a0, a1549; RV64IZFINXZDINX-NEXT:    flt.d a0, a1, a0550; RV64IZFINXZDINX-NEXT:    or a0, a0, a2551; RV64IZFINXZDINX-NEXT:    beqz a0, .LBB9_2552; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else553; RV64IZFINXZDINX-NEXT:    ret554; RV64IZFINXZDINX-NEXT:  .LBB9_2: # %if.then555; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16556; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill557; RV64IZFINXZDINX-NEXT:    call abort558  %1 = fcmp ueq double %a, %b559  br i1 %1, label %if.then, label %if.else560if.else:561  ret void562if.then:563  tail call void @abort()564  unreachable565}566 567define void @br_fcmp_ugt(double %a, double %b) nounwind {568; RV32IFD-LABEL: br_fcmp_ugt:569; RV32IFD:       # %bb.0:570; RV32IFD-NEXT:    fle.d a0, fa0, fa1571; RV32IFD-NEXT:    beqz a0, .LBB10_2572; RV32IFD-NEXT:  # %bb.1: # %if.else573; RV32IFD-NEXT:    ret574; RV32IFD-NEXT:  .LBB10_2: # %if.then575; RV32IFD-NEXT:    addi sp, sp, -16576; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill577; RV32IFD-NEXT:    call abort578;579; RV64IFD-LABEL: br_fcmp_ugt:580; RV64IFD:       # %bb.0:581; RV64IFD-NEXT:    fle.d a0, fa0, fa1582; RV64IFD-NEXT:    beqz a0, .LBB10_2583; RV64IFD-NEXT:  # %bb.1: # %if.else584; RV64IFD-NEXT:    ret585; RV64IFD-NEXT:  .LBB10_2: # %if.then586; RV64IFD-NEXT:    addi sp, sp, -16587; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill588; RV64IFD-NEXT:    call abort589;590; RV32IZFINXZDINX-LABEL: br_fcmp_ugt:591; RV32IZFINXZDINX:       # %bb.0:592; RV32IZFINXZDINX-NEXT:    fle.d a0, a0, a2593; RV32IZFINXZDINX-NEXT:    beqz a0, .LBB10_2594; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else595; RV32IZFINXZDINX-NEXT:    ret596; RV32IZFINXZDINX-NEXT:  .LBB10_2: # %if.then597; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16598; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill599; RV32IZFINXZDINX-NEXT:    call abort600;601; RV64IZFINXZDINX-LABEL: br_fcmp_ugt:602; RV64IZFINXZDINX:       # %bb.0:603; RV64IZFINXZDINX-NEXT:    fle.d a0, a0, a1604; RV64IZFINXZDINX-NEXT:    beqz a0, .LBB10_2605; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else606; RV64IZFINXZDINX-NEXT:    ret607; RV64IZFINXZDINX-NEXT:  .LBB10_2: # %if.then608; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16609; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill610; RV64IZFINXZDINX-NEXT:    call abort611  %1 = fcmp ugt double %a, %b612  br i1 %1, label %if.then, label %if.else613if.else:614  ret void615if.then:616  tail call void @abort()617  unreachable618}619 620define void @br_fcmp_uge(double %a, double %b) nounwind {621; RV32IFD-LABEL: br_fcmp_uge:622; RV32IFD:       # %bb.0:623; RV32IFD-NEXT:    flt.d a0, fa0, fa1624; RV32IFD-NEXT:    beqz a0, .LBB11_2625; RV32IFD-NEXT:  # %bb.1: # %if.else626; RV32IFD-NEXT:    ret627; RV32IFD-NEXT:  .LBB11_2: # %if.then628; RV32IFD-NEXT:    addi sp, sp, -16629; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill630; RV32IFD-NEXT:    call abort631;632; RV64IFD-LABEL: br_fcmp_uge:633; RV64IFD:       # %bb.0:634; RV64IFD-NEXT:    flt.d a0, fa0, fa1635; RV64IFD-NEXT:    beqz a0, .LBB11_2636; RV64IFD-NEXT:  # %bb.1: # %if.else637; RV64IFD-NEXT:    ret638; RV64IFD-NEXT:  .LBB11_2: # %if.then639; RV64IFD-NEXT:    addi sp, sp, -16640; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill641; RV64IFD-NEXT:    call abort642;643; RV32IZFINXZDINX-LABEL: br_fcmp_uge:644; RV32IZFINXZDINX:       # %bb.0:645; RV32IZFINXZDINX-NEXT:    flt.d a0, a0, a2646; RV32IZFINXZDINX-NEXT:    beqz a0, .LBB11_2647; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else648; RV32IZFINXZDINX-NEXT:    ret649; RV32IZFINXZDINX-NEXT:  .LBB11_2: # %if.then650; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16651; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill652; RV32IZFINXZDINX-NEXT:    call abort653;654; RV64IZFINXZDINX-LABEL: br_fcmp_uge:655; RV64IZFINXZDINX:       # %bb.0:656; RV64IZFINXZDINX-NEXT:    flt.d a0, a0, a1657; RV64IZFINXZDINX-NEXT:    beqz a0, .LBB11_2658; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else659; RV64IZFINXZDINX-NEXT:    ret660; RV64IZFINXZDINX-NEXT:  .LBB11_2: # %if.then661; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16662; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill663; RV64IZFINXZDINX-NEXT:    call abort664  %1 = fcmp uge double %a, %b665  br i1 %1, label %if.then, label %if.else666if.else:667  ret void668if.then:669  tail call void @abort()670  unreachable671}672 673define void @br_fcmp_ult(double %a, double %b) nounwind {674; RV32IFD-LABEL: br_fcmp_ult:675; RV32IFD:       # %bb.0:676; RV32IFD-NEXT:    fle.d a0, fa1, fa0677; RV32IFD-NEXT:    beqz a0, .LBB12_2678; RV32IFD-NEXT:  # %bb.1: # %if.else679; RV32IFD-NEXT:    ret680; RV32IFD-NEXT:  .LBB12_2: # %if.then681; RV32IFD-NEXT:    addi sp, sp, -16682; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill683; RV32IFD-NEXT:    call abort684;685; RV64IFD-LABEL: br_fcmp_ult:686; RV64IFD:       # %bb.0:687; RV64IFD-NEXT:    fle.d a0, fa1, fa0688; RV64IFD-NEXT:    beqz a0, .LBB12_2689; RV64IFD-NEXT:  # %bb.1: # %if.else690; RV64IFD-NEXT:    ret691; RV64IFD-NEXT:  .LBB12_2: # %if.then692; RV64IFD-NEXT:    addi sp, sp, -16693; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill694; RV64IFD-NEXT:    call abort695;696; RV32IZFINXZDINX-LABEL: br_fcmp_ult:697; RV32IZFINXZDINX:       # %bb.0:698; RV32IZFINXZDINX-NEXT:    fle.d a0, a2, a0699; RV32IZFINXZDINX-NEXT:    beqz a0, .LBB12_2700; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else701; RV32IZFINXZDINX-NEXT:    ret702; RV32IZFINXZDINX-NEXT:  .LBB12_2: # %if.then703; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16704; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill705; RV32IZFINXZDINX-NEXT:    call abort706;707; RV64IZFINXZDINX-LABEL: br_fcmp_ult:708; RV64IZFINXZDINX:       # %bb.0:709; RV64IZFINXZDINX-NEXT:    fle.d a0, a1, a0710; RV64IZFINXZDINX-NEXT:    beqz a0, .LBB12_2711; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else712; RV64IZFINXZDINX-NEXT:    ret713; RV64IZFINXZDINX-NEXT:  .LBB12_2: # %if.then714; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16715; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill716; RV64IZFINXZDINX-NEXT:    call abort717  %1 = fcmp ult double %a, %b718  br i1 %1, label %if.then, label %if.else719if.else:720  ret void721if.then:722  tail call void @abort()723  unreachable724}725 726define void @br_fcmp_ule(double %a, double %b) nounwind {727; RV32IFD-LABEL: br_fcmp_ule:728; RV32IFD:       # %bb.0:729; RV32IFD-NEXT:    flt.d a0, fa1, fa0730; RV32IFD-NEXT:    beqz a0, .LBB13_2731; RV32IFD-NEXT:  # %bb.1: # %if.else732; RV32IFD-NEXT:    ret733; RV32IFD-NEXT:  .LBB13_2: # %if.then734; RV32IFD-NEXT:    addi sp, sp, -16735; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill736; RV32IFD-NEXT:    call abort737;738; RV64IFD-LABEL: br_fcmp_ule:739; RV64IFD:       # %bb.0:740; RV64IFD-NEXT:    flt.d a0, fa1, fa0741; RV64IFD-NEXT:    beqz a0, .LBB13_2742; RV64IFD-NEXT:  # %bb.1: # %if.else743; RV64IFD-NEXT:    ret744; RV64IFD-NEXT:  .LBB13_2: # %if.then745; RV64IFD-NEXT:    addi sp, sp, -16746; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill747; RV64IFD-NEXT:    call abort748;749; RV32IZFINXZDINX-LABEL: br_fcmp_ule:750; RV32IZFINXZDINX:       # %bb.0:751; RV32IZFINXZDINX-NEXT:    flt.d a0, a2, a0752; RV32IZFINXZDINX-NEXT:    beqz a0, .LBB13_2753; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else754; RV32IZFINXZDINX-NEXT:    ret755; RV32IZFINXZDINX-NEXT:  .LBB13_2: # %if.then756; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16757; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill758; RV32IZFINXZDINX-NEXT:    call abort759;760; RV64IZFINXZDINX-LABEL: br_fcmp_ule:761; RV64IZFINXZDINX:       # %bb.0:762; RV64IZFINXZDINX-NEXT:    flt.d a0, a1, a0763; RV64IZFINXZDINX-NEXT:    beqz a0, .LBB13_2764; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else765; RV64IZFINXZDINX-NEXT:    ret766; RV64IZFINXZDINX-NEXT:  .LBB13_2: # %if.then767; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16768; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill769; RV64IZFINXZDINX-NEXT:    call abort770  %1 = fcmp ule double %a, %b771  br i1 %1, label %if.then, label %if.else772if.else:773  ret void774if.then:775  tail call void @abort()776  unreachable777}778 779define void @br_fcmp_une(double %a, double %b) nounwind {780; RV32IFD-LABEL: br_fcmp_une:781; RV32IFD:       # %bb.0:782; RV32IFD-NEXT:    feq.d a0, fa0, fa1783; RV32IFD-NEXT:    beqz a0, .LBB14_2784; RV32IFD-NEXT:  # %bb.1: # %if.else785; RV32IFD-NEXT:    ret786; RV32IFD-NEXT:  .LBB14_2: # %if.then787; RV32IFD-NEXT:    addi sp, sp, -16788; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill789; RV32IFD-NEXT:    call abort790;791; RV64IFD-LABEL: br_fcmp_une:792; RV64IFD:       # %bb.0:793; RV64IFD-NEXT:    feq.d a0, fa0, fa1794; RV64IFD-NEXT:    beqz a0, .LBB14_2795; RV64IFD-NEXT:  # %bb.1: # %if.else796; RV64IFD-NEXT:    ret797; RV64IFD-NEXT:  .LBB14_2: # %if.then798; RV64IFD-NEXT:    addi sp, sp, -16799; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill800; RV64IFD-NEXT:    call abort801;802; RV32IZFINXZDINX-LABEL: br_fcmp_une:803; RV32IZFINXZDINX:       # %bb.0:804; RV32IZFINXZDINX-NEXT:    feq.d a0, a0, a2805; RV32IZFINXZDINX-NEXT:    beqz a0, .LBB14_2806; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else807; RV32IZFINXZDINX-NEXT:    ret808; RV32IZFINXZDINX-NEXT:  .LBB14_2: # %if.then809; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16810; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill811; RV32IZFINXZDINX-NEXT:    call abort812;813; RV64IZFINXZDINX-LABEL: br_fcmp_une:814; RV64IZFINXZDINX:       # %bb.0:815; RV64IZFINXZDINX-NEXT:    feq.d a0, a0, a1816; RV64IZFINXZDINX-NEXT:    beqz a0, .LBB14_2817; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else818; RV64IZFINXZDINX-NEXT:    ret819; RV64IZFINXZDINX-NEXT:  .LBB14_2: # %if.then820; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16821; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill822; RV64IZFINXZDINX-NEXT:    call abort823  %1 = fcmp une double %a, %b824  br i1 %1, label %if.then, label %if.else825if.else:826  ret void827if.then:828  tail call void @abort()829  unreachable830}831 832define void @br_fcmp_uno(double %a, double %b) nounwind {833; RV32IFD-LABEL: br_fcmp_uno:834; RV32IFD:       # %bb.0:835; RV32IFD-NEXT:    feq.d a0, fa1, fa1836; RV32IFD-NEXT:    feq.d a1, fa0, fa0837; RV32IFD-NEXT:    and a0, a1, a0838; RV32IFD-NEXT:    beqz a0, .LBB15_2839; RV32IFD-NEXT:  # %bb.1: # %if.else840; RV32IFD-NEXT:    ret841; RV32IFD-NEXT:  .LBB15_2: # %if.then842; RV32IFD-NEXT:    addi sp, sp, -16843; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill844; RV32IFD-NEXT:    call abort845;846; RV64IFD-LABEL: br_fcmp_uno:847; RV64IFD:       # %bb.0:848; RV64IFD-NEXT:    feq.d a0, fa1, fa1849; RV64IFD-NEXT:    feq.d a1, fa0, fa0850; RV64IFD-NEXT:    and a0, a1, a0851; RV64IFD-NEXT:    beqz a0, .LBB15_2852; RV64IFD-NEXT:  # %bb.1: # %if.else853; RV64IFD-NEXT:    ret854; RV64IFD-NEXT:  .LBB15_2: # %if.then855; RV64IFD-NEXT:    addi sp, sp, -16856; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill857; RV64IFD-NEXT:    call abort858;859; RV32IZFINXZDINX-LABEL: br_fcmp_uno:860; RV32IZFINXZDINX:       # %bb.0:861; RV32IZFINXZDINX-NEXT:    feq.d a2, a2, a2862; RV32IZFINXZDINX-NEXT:    feq.d a0, a0, a0863; RV32IZFINXZDINX-NEXT:    and a0, a0, a2864; RV32IZFINXZDINX-NEXT:    beqz a0, .LBB15_2865; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else866; RV32IZFINXZDINX-NEXT:    ret867; RV32IZFINXZDINX-NEXT:  .LBB15_2: # %if.then868; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16869; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill870; RV32IZFINXZDINX-NEXT:    call abort871;872; RV64IZFINXZDINX-LABEL: br_fcmp_uno:873; RV64IZFINXZDINX:       # %bb.0:874; RV64IZFINXZDINX-NEXT:    feq.d a1, a1, a1875; RV64IZFINXZDINX-NEXT:    feq.d a0, a0, a0876; RV64IZFINXZDINX-NEXT:    and a0, a0, a1877; RV64IZFINXZDINX-NEXT:    beqz a0, .LBB15_2878; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else879; RV64IZFINXZDINX-NEXT:    ret880; RV64IZFINXZDINX-NEXT:  .LBB15_2: # %if.then881; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16882; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill883; RV64IZFINXZDINX-NEXT:    call abort884  %1 = fcmp uno double %a, %b885  br i1 %1, label %if.then, label %if.else886if.else:887  ret void888if.then:889  tail call void @abort()890  unreachable891}892 893define void @br_fcmp_true(double %a, double %b) nounwind {894; RV32IFD-LABEL: br_fcmp_true:895; RV32IFD:       # %bb.0:896; RV32IFD-NEXT:    j .LBB16_2897; RV32IFD-NEXT:  # %bb.1: # %if.else898; RV32IFD-NEXT:    ret899; RV32IFD-NEXT:  .LBB16_2: # %if.then900; RV32IFD-NEXT:    addi sp, sp, -16901; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill902; RV32IFD-NEXT:    call abort903;904; RV64IFD-LABEL: br_fcmp_true:905; RV64IFD:       # %bb.0:906; RV64IFD-NEXT:    j .LBB16_2907; RV64IFD-NEXT:  # %bb.1: # %if.else908; RV64IFD-NEXT:    ret909; RV64IFD-NEXT:  .LBB16_2: # %if.then910; RV64IFD-NEXT:    addi sp, sp, -16911; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill912; RV64IFD-NEXT:    call abort913;914; RV32IZFINXZDINX-LABEL: br_fcmp_true:915; RV32IZFINXZDINX:       # %bb.0:916; RV32IZFINXZDINX-NEXT:    j .LBB16_2917; RV32IZFINXZDINX-NEXT:  # %bb.1: # %if.else918; RV32IZFINXZDINX-NEXT:    ret919; RV32IZFINXZDINX-NEXT:  .LBB16_2: # %if.then920; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16921; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill922; RV32IZFINXZDINX-NEXT:    call abort923;924; RV64IZFINXZDINX-LABEL: br_fcmp_true:925; RV64IZFINXZDINX:       # %bb.0:926; RV64IZFINXZDINX-NEXT:    j .LBB16_2927; RV64IZFINXZDINX-NEXT:  # %bb.1: # %if.else928; RV64IZFINXZDINX-NEXT:    ret929; RV64IZFINXZDINX-NEXT:  .LBB16_2: # %if.then930; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16931; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill932; RV64IZFINXZDINX-NEXT:    call abort933  %1 = fcmp true double %a, %b934  br i1 %1, label %if.then, label %if.else935if.else:936  ret void937if.then:938  tail call void @abort()939  unreachable940}941