1842 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+zfh -verify-machineinstrs \3; RUN: -target-abi ilp32f < %s | FileCheck -check-prefix=RV32IZFH %s4; RUN: llc -mtriple=riscv64 -mattr=+zfh -verify-machineinstrs \5; RUN: -target-abi lp64f < %s | FileCheck -check-prefix=RV64IZFH %s6; RUN: llc -mtriple=riscv32 -mattr=+zhinx -verify-machineinstrs \7; RUN: -target-abi ilp32 < %s | FileCheck -check-prefix=RV32IZHINX %s8; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs \9; RUN: -target-abi lp64 < %s | FileCheck -check-prefix=RV64IZHINX %s10; RUN: llc -mtriple=riscv32 -mattr=+zfhmin -verify-machineinstrs \11; RUN: -target-abi ilp32f < %s | FileCheck -check-prefix=RV32IZFHMIN %s12; RUN: llc -mtriple=riscv64 -mattr=+zfhmin -verify-machineinstrs \13; RUN: -target-abi lp64f < %s | FileCheck -check-prefix=RV64IZFHMIN %s14; RUN: llc -mtriple=riscv32 -mattr=+zhinxmin -verify-machineinstrs \15; RUN: -target-abi ilp32 < %s | FileCheck -check-prefix=RV32IZHINXMIN %s16; RUN: llc -mtriple=riscv64 -mattr=+zhinxmin -verify-machineinstrs \17; RUN: -target-abi lp64 < %s | FileCheck -check-prefix=RV64IZHINXMIN %s18 19declare void @abort()20declare void @exit(i32)21declare half @dummy(half)22 23define void @br_fcmp_false(half %a, half %b) nounwind {24; RV32IZFH-LABEL: br_fcmp_false:25; RV32IZFH: # %bb.0:26; RV32IZFH-NEXT: j .LBB0_227; RV32IZFH-NEXT: # %bb.1: # %if.then28; RV32IZFH-NEXT: ret29; RV32IZFH-NEXT: .LBB0_2: # %if.else30; RV32IZFH-NEXT: addi sp, sp, -1631; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill32; RV32IZFH-NEXT: call abort33;34; RV64IZFH-LABEL: br_fcmp_false:35; RV64IZFH: # %bb.0:36; RV64IZFH-NEXT: j .LBB0_237; RV64IZFH-NEXT: # %bb.1: # %if.then38; RV64IZFH-NEXT: ret39; RV64IZFH-NEXT: .LBB0_2: # %if.else40; RV64IZFH-NEXT: addi sp, sp, -1641; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill42; RV64IZFH-NEXT: call abort43;44; RV32IZHINX-LABEL: br_fcmp_false:45; RV32IZHINX: # %bb.0:46; RV32IZHINX-NEXT: j .LBB0_247; RV32IZHINX-NEXT: # %bb.1: # %if.then48; RV32IZHINX-NEXT: ret49; RV32IZHINX-NEXT: .LBB0_2: # %if.else50; RV32IZHINX-NEXT: addi sp, sp, -1651; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill52; RV32IZHINX-NEXT: call abort53;54; RV64IZHINX-LABEL: br_fcmp_false:55; RV64IZHINX: # %bb.0:56; RV64IZHINX-NEXT: j .LBB0_257; RV64IZHINX-NEXT: # %bb.1: # %if.then58; RV64IZHINX-NEXT: ret59; RV64IZHINX-NEXT: .LBB0_2: # %if.else60; RV64IZHINX-NEXT: addi sp, sp, -1661; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill62; RV64IZHINX-NEXT: call abort63;64; RV32IZFHMIN-LABEL: br_fcmp_false:65; RV32IZFHMIN: # %bb.0:66; RV32IZFHMIN-NEXT: j .LBB0_267; RV32IZFHMIN-NEXT: # %bb.1: # %if.then68; RV32IZFHMIN-NEXT: ret69; RV32IZFHMIN-NEXT: .LBB0_2: # %if.else70; RV32IZFHMIN-NEXT: addi sp, sp, -1671; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill72; RV32IZFHMIN-NEXT: call abort73;74; RV64IZFHMIN-LABEL: br_fcmp_false:75; RV64IZFHMIN: # %bb.0:76; RV64IZFHMIN-NEXT: j .LBB0_277; RV64IZFHMIN-NEXT: # %bb.1: # %if.then78; RV64IZFHMIN-NEXT: ret79; RV64IZFHMIN-NEXT: .LBB0_2: # %if.else80; RV64IZFHMIN-NEXT: addi sp, sp, -1681; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill82; RV64IZFHMIN-NEXT: call abort83;84; RV32IZHINXMIN-LABEL: br_fcmp_false:85; RV32IZHINXMIN: # %bb.0:86; RV32IZHINXMIN-NEXT: j .LBB0_287; RV32IZHINXMIN-NEXT: # %bb.1: # %if.then88; RV32IZHINXMIN-NEXT: ret89; RV32IZHINXMIN-NEXT: .LBB0_2: # %if.else90; RV32IZHINXMIN-NEXT: addi sp, sp, -1691; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill92; RV32IZHINXMIN-NEXT: call abort93;94; RV64IZHINXMIN-LABEL: br_fcmp_false:95; RV64IZHINXMIN: # %bb.0:96; RV64IZHINXMIN-NEXT: j .LBB0_297; RV64IZHINXMIN-NEXT: # %bb.1: # %if.then98; RV64IZHINXMIN-NEXT: ret99; RV64IZHINXMIN-NEXT: .LBB0_2: # %if.else100; RV64IZHINXMIN-NEXT: addi sp, sp, -16101; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill102; RV64IZHINXMIN-NEXT: call abort103 %1 = fcmp false half %a, %b104 br i1 %1, label %if.then, label %if.else105if.then:106 ret void107if.else:108 tail call void @abort()109 unreachable110}111 112define void @br_fcmp_oeq(half %a, half %b) nounwind {113; RV32IZFH-LABEL: br_fcmp_oeq:114; RV32IZFH: # %bb.0:115; RV32IZFH-NEXT: feq.h a0, fa0, fa1116; RV32IZFH-NEXT: bnez a0, .LBB1_2117; RV32IZFH-NEXT: # %bb.1: # %if.else118; RV32IZFH-NEXT: ret119; RV32IZFH-NEXT: .LBB1_2: # %if.then120; RV32IZFH-NEXT: addi sp, sp, -16121; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill122; RV32IZFH-NEXT: call abort123;124; RV64IZFH-LABEL: br_fcmp_oeq:125; RV64IZFH: # %bb.0:126; RV64IZFH-NEXT: feq.h a0, fa0, fa1127; RV64IZFH-NEXT: bnez a0, .LBB1_2128; RV64IZFH-NEXT: # %bb.1: # %if.else129; RV64IZFH-NEXT: ret130; RV64IZFH-NEXT: .LBB1_2: # %if.then131; RV64IZFH-NEXT: addi sp, sp, -16132; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill133; RV64IZFH-NEXT: call abort134;135; RV32IZHINX-LABEL: br_fcmp_oeq:136; RV32IZHINX: # %bb.0:137; RV32IZHINX-NEXT: feq.h a0, a0, a1138; RV32IZHINX-NEXT: bnez a0, .LBB1_2139; RV32IZHINX-NEXT: # %bb.1: # %if.else140; RV32IZHINX-NEXT: ret141; RV32IZHINX-NEXT: .LBB1_2: # %if.then142; RV32IZHINX-NEXT: addi sp, sp, -16143; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill144; RV32IZHINX-NEXT: call abort145;146; RV64IZHINX-LABEL: br_fcmp_oeq:147; RV64IZHINX: # %bb.0:148; RV64IZHINX-NEXT: feq.h a0, a0, a1149; RV64IZHINX-NEXT: bnez a0, .LBB1_2150; RV64IZHINX-NEXT: # %bb.1: # %if.else151; RV64IZHINX-NEXT: ret152; RV64IZHINX-NEXT: .LBB1_2: # %if.then153; RV64IZHINX-NEXT: addi sp, sp, -16154; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill155; RV64IZHINX-NEXT: call abort156;157; RV32IZFHMIN-LABEL: br_fcmp_oeq:158; RV32IZFHMIN: # %bb.0:159; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa1160; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa0161; RV32IZFHMIN-NEXT: feq.s a0, fa4, fa5162; RV32IZFHMIN-NEXT: bnez a0, .LBB1_2163; RV32IZFHMIN-NEXT: # %bb.1: # %if.else164; RV32IZFHMIN-NEXT: ret165; RV32IZFHMIN-NEXT: .LBB1_2: # %if.then166; RV32IZFHMIN-NEXT: addi sp, sp, -16167; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill168; RV32IZFHMIN-NEXT: call abort169;170; RV64IZFHMIN-LABEL: br_fcmp_oeq:171; RV64IZFHMIN: # %bb.0:172; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa1173; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa0174; RV64IZFHMIN-NEXT: feq.s a0, fa4, fa5175; RV64IZFHMIN-NEXT: bnez a0, .LBB1_2176; RV64IZFHMIN-NEXT: # %bb.1: # %if.else177; RV64IZFHMIN-NEXT: ret178; RV64IZFHMIN-NEXT: .LBB1_2: # %if.then179; RV64IZFHMIN-NEXT: addi sp, sp, -16180; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill181; RV64IZFHMIN-NEXT: call abort182;183; RV32IZHINXMIN-LABEL: br_fcmp_oeq:184; RV32IZHINXMIN: # %bb.0:185; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a1186; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0187; RV32IZHINXMIN-NEXT: feq.s a0, a0, a1188; RV32IZHINXMIN-NEXT: bnez a0, .LBB1_2189; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else190; RV32IZHINXMIN-NEXT: ret191; RV32IZHINXMIN-NEXT: .LBB1_2: # %if.then192; RV32IZHINXMIN-NEXT: addi sp, sp, -16193; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill194; RV32IZHINXMIN-NEXT: call abort195;196; RV64IZHINXMIN-LABEL: br_fcmp_oeq:197; RV64IZHINXMIN: # %bb.0:198; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a1199; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0200; RV64IZHINXMIN-NEXT: feq.s a0, a0, a1201; RV64IZHINXMIN-NEXT: bnez a0, .LBB1_2202; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else203; RV64IZHINXMIN-NEXT: ret204; RV64IZHINXMIN-NEXT: .LBB1_2: # %if.then205; RV64IZHINXMIN-NEXT: addi sp, sp, -16206; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill207; RV64IZHINXMIN-NEXT: call abort208 %1 = fcmp oeq half %a, %b209 br i1 %1, label %if.then, label %if.else210if.else:211 ret void212if.then:213 tail call void @abort()214 unreachable215}216 217; TODO: generated code quality for this is very poor due to218; DAGCombiner::visitXOR converting the legal setoeq to setune, which requires219; expansion.220define void @br_fcmp_oeq_alt(half %a, half %b) nounwind {221; RV32IZFH-LABEL: br_fcmp_oeq_alt:222; RV32IZFH: # %bb.0:223; RV32IZFH-NEXT: feq.h a0, fa0, fa1224; RV32IZFH-NEXT: bnez a0, .LBB2_2225; RV32IZFH-NEXT: # %bb.1: # %if.else226; RV32IZFH-NEXT: ret227; RV32IZFH-NEXT: .LBB2_2: # %if.then228; RV32IZFH-NEXT: addi sp, sp, -16229; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill230; RV32IZFH-NEXT: call abort231;232; RV64IZFH-LABEL: br_fcmp_oeq_alt:233; RV64IZFH: # %bb.0:234; RV64IZFH-NEXT: feq.h a0, fa0, fa1235; RV64IZFH-NEXT: bnez a0, .LBB2_2236; RV64IZFH-NEXT: # %bb.1: # %if.else237; RV64IZFH-NEXT: ret238; RV64IZFH-NEXT: .LBB2_2: # %if.then239; RV64IZFH-NEXT: addi sp, sp, -16240; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill241; RV64IZFH-NEXT: call abort242;243; RV32IZHINX-LABEL: br_fcmp_oeq_alt:244; RV32IZHINX: # %bb.0:245; RV32IZHINX-NEXT: feq.h a0, a0, a1246; RV32IZHINX-NEXT: bnez a0, .LBB2_2247; RV32IZHINX-NEXT: # %bb.1: # %if.else248; RV32IZHINX-NEXT: ret249; RV32IZHINX-NEXT: .LBB2_2: # %if.then250; RV32IZHINX-NEXT: addi sp, sp, -16251; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill252; RV32IZHINX-NEXT: call abort253;254; RV64IZHINX-LABEL: br_fcmp_oeq_alt:255; RV64IZHINX: # %bb.0:256; RV64IZHINX-NEXT: feq.h a0, a0, a1257; RV64IZHINX-NEXT: bnez a0, .LBB2_2258; RV64IZHINX-NEXT: # %bb.1: # %if.else259; RV64IZHINX-NEXT: ret260; RV64IZHINX-NEXT: .LBB2_2: # %if.then261; RV64IZHINX-NEXT: addi sp, sp, -16262; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill263; RV64IZHINX-NEXT: call abort264;265; RV32IZFHMIN-LABEL: br_fcmp_oeq_alt:266; RV32IZFHMIN: # %bb.0:267; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa1268; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa0269; RV32IZFHMIN-NEXT: feq.s a0, fa4, fa5270; RV32IZFHMIN-NEXT: bnez a0, .LBB2_2271; RV32IZFHMIN-NEXT: # %bb.1: # %if.else272; RV32IZFHMIN-NEXT: ret273; RV32IZFHMIN-NEXT: .LBB2_2: # %if.then274; RV32IZFHMIN-NEXT: addi sp, sp, -16275; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill276; RV32IZFHMIN-NEXT: call abort277;278; RV64IZFHMIN-LABEL: br_fcmp_oeq_alt:279; RV64IZFHMIN: # %bb.0:280; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa1281; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa0282; RV64IZFHMIN-NEXT: feq.s a0, fa4, fa5283; RV64IZFHMIN-NEXT: bnez a0, .LBB2_2284; RV64IZFHMIN-NEXT: # %bb.1: # %if.else285; RV64IZFHMIN-NEXT: ret286; RV64IZFHMIN-NEXT: .LBB2_2: # %if.then287; RV64IZFHMIN-NEXT: addi sp, sp, -16288; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill289; RV64IZFHMIN-NEXT: call abort290;291; RV32IZHINXMIN-LABEL: br_fcmp_oeq_alt:292; RV32IZHINXMIN: # %bb.0:293; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a1294; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0295; RV32IZHINXMIN-NEXT: feq.s a0, a0, a1296; RV32IZHINXMIN-NEXT: bnez a0, .LBB2_2297; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else298; RV32IZHINXMIN-NEXT: ret299; RV32IZHINXMIN-NEXT: .LBB2_2: # %if.then300; RV32IZHINXMIN-NEXT: addi sp, sp, -16301; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill302; RV32IZHINXMIN-NEXT: call abort303;304; RV64IZHINXMIN-LABEL: br_fcmp_oeq_alt:305; RV64IZHINXMIN: # %bb.0:306; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a1307; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0308; RV64IZHINXMIN-NEXT: feq.s a0, a0, a1309; RV64IZHINXMIN-NEXT: bnez a0, .LBB2_2310; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else311; RV64IZHINXMIN-NEXT: ret312; RV64IZHINXMIN-NEXT: .LBB2_2: # %if.then313; RV64IZHINXMIN-NEXT: addi sp, sp, -16314; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill315; RV64IZHINXMIN-NEXT: call abort316 %1 = fcmp oeq half %a, %b317 br i1 %1, label %if.then, label %if.else318if.then:319 tail call void @abort()320 unreachable321if.else:322 ret void323}324 325define void @br_fcmp_ogt(half %a, half %b) nounwind {326; RV32IZFH-LABEL: br_fcmp_ogt:327; RV32IZFH: # %bb.0:328; RV32IZFH-NEXT: flt.h a0, fa1, fa0329; RV32IZFH-NEXT: bnez a0, .LBB3_2330; RV32IZFH-NEXT: # %bb.1: # %if.else331; RV32IZFH-NEXT: ret332; RV32IZFH-NEXT: .LBB3_2: # %if.then333; RV32IZFH-NEXT: addi sp, sp, -16334; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill335; RV32IZFH-NEXT: call abort336;337; RV64IZFH-LABEL: br_fcmp_ogt:338; RV64IZFH: # %bb.0:339; RV64IZFH-NEXT: flt.h a0, fa1, fa0340; RV64IZFH-NEXT: bnez a0, .LBB3_2341; RV64IZFH-NEXT: # %bb.1: # %if.else342; RV64IZFH-NEXT: ret343; RV64IZFH-NEXT: .LBB3_2: # %if.then344; RV64IZFH-NEXT: addi sp, sp, -16345; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill346; RV64IZFH-NEXT: call abort347;348; RV32IZHINX-LABEL: br_fcmp_ogt:349; RV32IZHINX: # %bb.0:350; RV32IZHINX-NEXT: flt.h a0, a1, a0351; RV32IZHINX-NEXT: bnez a0, .LBB3_2352; RV32IZHINX-NEXT: # %bb.1: # %if.else353; RV32IZHINX-NEXT: ret354; RV32IZHINX-NEXT: .LBB3_2: # %if.then355; RV32IZHINX-NEXT: addi sp, sp, -16356; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill357; RV32IZHINX-NEXT: call abort358;359; RV64IZHINX-LABEL: br_fcmp_ogt:360; RV64IZHINX: # %bb.0:361; RV64IZHINX-NEXT: flt.h a0, a1, a0362; RV64IZHINX-NEXT: bnez a0, .LBB3_2363; RV64IZHINX-NEXT: # %bb.1: # %if.else364; RV64IZHINX-NEXT: ret365; RV64IZHINX-NEXT: .LBB3_2: # %if.then366; RV64IZHINX-NEXT: addi sp, sp, -16367; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill368; RV64IZHINX-NEXT: call abort369;370; RV32IZFHMIN-LABEL: br_fcmp_ogt:371; RV32IZFHMIN: # %bb.0:372; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa0373; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa1374; RV32IZFHMIN-NEXT: flt.s a0, fa4, fa5375; RV32IZFHMIN-NEXT: bnez a0, .LBB3_2376; RV32IZFHMIN-NEXT: # %bb.1: # %if.else377; RV32IZFHMIN-NEXT: ret378; RV32IZFHMIN-NEXT: .LBB3_2: # %if.then379; RV32IZFHMIN-NEXT: addi sp, sp, -16380; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill381; RV32IZFHMIN-NEXT: call abort382;383; RV64IZFHMIN-LABEL: br_fcmp_ogt:384; RV64IZFHMIN: # %bb.0:385; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa0386; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa1387; RV64IZFHMIN-NEXT: flt.s a0, fa4, fa5388; RV64IZFHMIN-NEXT: bnez a0, .LBB3_2389; RV64IZFHMIN-NEXT: # %bb.1: # %if.else390; RV64IZFHMIN-NEXT: ret391; RV64IZFHMIN-NEXT: .LBB3_2: # %if.then392; RV64IZFHMIN-NEXT: addi sp, sp, -16393; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill394; RV64IZFHMIN-NEXT: call abort395;396; RV32IZHINXMIN-LABEL: br_fcmp_ogt:397; RV32IZHINXMIN: # %bb.0:398; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0399; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a1400; RV32IZHINXMIN-NEXT: flt.s a0, a1, a0401; RV32IZHINXMIN-NEXT: bnez a0, .LBB3_2402; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else403; RV32IZHINXMIN-NEXT: ret404; RV32IZHINXMIN-NEXT: .LBB3_2: # %if.then405; RV32IZHINXMIN-NEXT: addi sp, sp, -16406; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill407; RV32IZHINXMIN-NEXT: call abort408;409; RV64IZHINXMIN-LABEL: br_fcmp_ogt:410; RV64IZHINXMIN: # %bb.0:411; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0412; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a1413; RV64IZHINXMIN-NEXT: flt.s a0, a1, a0414; RV64IZHINXMIN-NEXT: bnez a0, .LBB3_2415; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else416; RV64IZHINXMIN-NEXT: ret417; RV64IZHINXMIN-NEXT: .LBB3_2: # %if.then418; RV64IZHINXMIN-NEXT: addi sp, sp, -16419; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill420; RV64IZHINXMIN-NEXT: call abort421 %1 = fcmp ogt half %a, %b422 br i1 %1, label %if.then, label %if.else423if.else:424 ret void425if.then:426 tail call void @abort()427 unreachable428}429 430define void @br_fcmp_oge(half %a, half %b) nounwind {431; RV32IZFH-LABEL: br_fcmp_oge:432; RV32IZFH: # %bb.0:433; RV32IZFH-NEXT: fle.h a0, fa1, fa0434; RV32IZFH-NEXT: bnez a0, .LBB4_2435; RV32IZFH-NEXT: # %bb.1: # %if.else436; RV32IZFH-NEXT: ret437; RV32IZFH-NEXT: .LBB4_2: # %if.then438; RV32IZFH-NEXT: addi sp, sp, -16439; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill440; RV32IZFH-NEXT: call abort441;442; RV64IZFH-LABEL: br_fcmp_oge:443; RV64IZFH: # %bb.0:444; RV64IZFH-NEXT: fle.h a0, fa1, fa0445; RV64IZFH-NEXT: bnez a0, .LBB4_2446; RV64IZFH-NEXT: # %bb.1: # %if.else447; RV64IZFH-NEXT: ret448; RV64IZFH-NEXT: .LBB4_2: # %if.then449; RV64IZFH-NEXT: addi sp, sp, -16450; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill451; RV64IZFH-NEXT: call abort452;453; RV32IZHINX-LABEL: br_fcmp_oge:454; RV32IZHINX: # %bb.0:455; RV32IZHINX-NEXT: fle.h a0, a1, a0456; RV32IZHINX-NEXT: bnez a0, .LBB4_2457; RV32IZHINX-NEXT: # %bb.1: # %if.else458; RV32IZHINX-NEXT: ret459; RV32IZHINX-NEXT: .LBB4_2: # %if.then460; RV32IZHINX-NEXT: addi sp, sp, -16461; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill462; RV32IZHINX-NEXT: call abort463;464; RV64IZHINX-LABEL: br_fcmp_oge:465; RV64IZHINX: # %bb.0:466; RV64IZHINX-NEXT: fle.h a0, a1, a0467; RV64IZHINX-NEXT: bnez a0, .LBB4_2468; RV64IZHINX-NEXT: # %bb.1: # %if.else469; RV64IZHINX-NEXT: ret470; RV64IZHINX-NEXT: .LBB4_2: # %if.then471; RV64IZHINX-NEXT: addi sp, sp, -16472; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill473; RV64IZHINX-NEXT: call abort474;475; RV32IZFHMIN-LABEL: br_fcmp_oge:476; RV32IZFHMIN: # %bb.0:477; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa0478; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa1479; RV32IZFHMIN-NEXT: fle.s a0, fa4, fa5480; RV32IZFHMIN-NEXT: bnez a0, .LBB4_2481; RV32IZFHMIN-NEXT: # %bb.1: # %if.else482; RV32IZFHMIN-NEXT: ret483; RV32IZFHMIN-NEXT: .LBB4_2: # %if.then484; RV32IZFHMIN-NEXT: addi sp, sp, -16485; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill486; RV32IZFHMIN-NEXT: call abort487;488; RV64IZFHMIN-LABEL: br_fcmp_oge:489; RV64IZFHMIN: # %bb.0:490; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa0491; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa1492; RV64IZFHMIN-NEXT: fle.s a0, fa4, fa5493; RV64IZFHMIN-NEXT: bnez a0, .LBB4_2494; RV64IZFHMIN-NEXT: # %bb.1: # %if.else495; RV64IZFHMIN-NEXT: ret496; RV64IZFHMIN-NEXT: .LBB4_2: # %if.then497; RV64IZFHMIN-NEXT: addi sp, sp, -16498; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill499; RV64IZFHMIN-NEXT: call abort500;501; RV32IZHINXMIN-LABEL: br_fcmp_oge:502; RV32IZHINXMIN: # %bb.0:503; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0504; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a1505; RV32IZHINXMIN-NEXT: fle.s a0, a1, a0506; RV32IZHINXMIN-NEXT: bnez a0, .LBB4_2507; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else508; RV32IZHINXMIN-NEXT: ret509; RV32IZHINXMIN-NEXT: .LBB4_2: # %if.then510; RV32IZHINXMIN-NEXT: addi sp, sp, -16511; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill512; RV32IZHINXMIN-NEXT: call abort513;514; RV64IZHINXMIN-LABEL: br_fcmp_oge:515; RV64IZHINXMIN: # %bb.0:516; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0517; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a1518; RV64IZHINXMIN-NEXT: fle.s a0, a1, a0519; RV64IZHINXMIN-NEXT: bnez a0, .LBB4_2520; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else521; RV64IZHINXMIN-NEXT: ret522; RV64IZHINXMIN-NEXT: .LBB4_2: # %if.then523; RV64IZHINXMIN-NEXT: addi sp, sp, -16524; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill525; RV64IZHINXMIN-NEXT: call abort526 %1 = fcmp oge half %a, %b527 br i1 %1, label %if.then, label %if.else528if.else:529 ret void530if.then:531 tail call void @abort()532 unreachable533}534 535define void @br_fcmp_olt(half %a, half %b) nounwind {536; RV32IZFH-LABEL: br_fcmp_olt:537; RV32IZFH: # %bb.0:538; RV32IZFH-NEXT: flt.h a0, fa0, fa1539; RV32IZFH-NEXT: bnez a0, .LBB5_2540; RV32IZFH-NEXT: # %bb.1: # %if.else541; RV32IZFH-NEXT: ret542; RV32IZFH-NEXT: .LBB5_2: # %if.then543; RV32IZFH-NEXT: addi sp, sp, -16544; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill545; RV32IZFH-NEXT: call abort546;547; RV64IZFH-LABEL: br_fcmp_olt:548; RV64IZFH: # %bb.0:549; RV64IZFH-NEXT: flt.h a0, fa0, fa1550; RV64IZFH-NEXT: bnez a0, .LBB5_2551; RV64IZFH-NEXT: # %bb.1: # %if.else552; RV64IZFH-NEXT: ret553; RV64IZFH-NEXT: .LBB5_2: # %if.then554; RV64IZFH-NEXT: addi sp, sp, -16555; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill556; RV64IZFH-NEXT: call abort557;558; RV32IZHINX-LABEL: br_fcmp_olt:559; RV32IZHINX: # %bb.0:560; RV32IZHINX-NEXT: flt.h a0, a0, a1561; RV32IZHINX-NEXT: bnez a0, .LBB5_2562; RV32IZHINX-NEXT: # %bb.1: # %if.else563; RV32IZHINX-NEXT: ret564; RV32IZHINX-NEXT: .LBB5_2: # %if.then565; RV32IZHINX-NEXT: addi sp, sp, -16566; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill567; RV32IZHINX-NEXT: call abort568;569; RV64IZHINX-LABEL: br_fcmp_olt:570; RV64IZHINX: # %bb.0:571; RV64IZHINX-NEXT: flt.h a0, a0, a1572; RV64IZHINX-NEXT: bnez a0, .LBB5_2573; RV64IZHINX-NEXT: # %bb.1: # %if.else574; RV64IZHINX-NEXT: ret575; RV64IZHINX-NEXT: .LBB5_2: # %if.then576; RV64IZHINX-NEXT: addi sp, sp, -16577; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill578; RV64IZHINX-NEXT: call abort579;580; RV32IZFHMIN-LABEL: br_fcmp_olt:581; RV32IZFHMIN: # %bb.0:582; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa1583; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa0584; RV32IZFHMIN-NEXT: flt.s a0, fa4, fa5585; RV32IZFHMIN-NEXT: bnez a0, .LBB5_2586; RV32IZFHMIN-NEXT: # %bb.1: # %if.else587; RV32IZFHMIN-NEXT: ret588; RV32IZFHMIN-NEXT: .LBB5_2: # %if.then589; RV32IZFHMIN-NEXT: addi sp, sp, -16590; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill591; RV32IZFHMIN-NEXT: call abort592;593; RV64IZFHMIN-LABEL: br_fcmp_olt:594; RV64IZFHMIN: # %bb.0:595; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa1596; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa0597; RV64IZFHMIN-NEXT: flt.s a0, fa4, fa5598; RV64IZFHMIN-NEXT: bnez a0, .LBB5_2599; RV64IZFHMIN-NEXT: # %bb.1: # %if.else600; RV64IZFHMIN-NEXT: ret601; RV64IZFHMIN-NEXT: .LBB5_2: # %if.then602; RV64IZFHMIN-NEXT: addi sp, sp, -16603; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill604; RV64IZFHMIN-NEXT: call abort605;606; RV32IZHINXMIN-LABEL: br_fcmp_olt:607; RV32IZHINXMIN: # %bb.0:608; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a1609; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0610; RV32IZHINXMIN-NEXT: flt.s a0, a0, a1611; RV32IZHINXMIN-NEXT: bnez a0, .LBB5_2612; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else613; RV32IZHINXMIN-NEXT: ret614; RV32IZHINXMIN-NEXT: .LBB5_2: # %if.then615; RV32IZHINXMIN-NEXT: addi sp, sp, -16616; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill617; RV32IZHINXMIN-NEXT: call abort618;619; RV64IZHINXMIN-LABEL: br_fcmp_olt:620; RV64IZHINXMIN: # %bb.0:621; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a1622; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0623; RV64IZHINXMIN-NEXT: flt.s a0, a0, a1624; RV64IZHINXMIN-NEXT: bnez a0, .LBB5_2625; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else626; RV64IZHINXMIN-NEXT: ret627; RV64IZHINXMIN-NEXT: .LBB5_2: # %if.then628; RV64IZHINXMIN-NEXT: addi sp, sp, -16629; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill630; RV64IZHINXMIN-NEXT: call abort631 %1 = fcmp olt half %a, %b632 br i1 %1, label %if.then, label %if.else633if.else:634 ret void635if.then:636 tail call void @abort()637 unreachable638}639 640define void @br_fcmp_ole(half %a, half %b) nounwind {641; RV32IZFH-LABEL: br_fcmp_ole:642; RV32IZFH: # %bb.0:643; RV32IZFH-NEXT: fle.h a0, fa0, fa1644; RV32IZFH-NEXT: bnez a0, .LBB6_2645; RV32IZFH-NEXT: # %bb.1: # %if.else646; RV32IZFH-NEXT: ret647; RV32IZFH-NEXT: .LBB6_2: # %if.then648; RV32IZFH-NEXT: addi sp, sp, -16649; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill650; RV32IZFH-NEXT: call abort651;652; RV64IZFH-LABEL: br_fcmp_ole:653; RV64IZFH: # %bb.0:654; RV64IZFH-NEXT: fle.h a0, fa0, fa1655; RV64IZFH-NEXT: bnez a0, .LBB6_2656; RV64IZFH-NEXT: # %bb.1: # %if.else657; RV64IZFH-NEXT: ret658; RV64IZFH-NEXT: .LBB6_2: # %if.then659; RV64IZFH-NEXT: addi sp, sp, -16660; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill661; RV64IZFH-NEXT: call abort662;663; RV32IZHINX-LABEL: br_fcmp_ole:664; RV32IZHINX: # %bb.0:665; RV32IZHINX-NEXT: fle.h a0, a0, a1666; RV32IZHINX-NEXT: bnez a0, .LBB6_2667; RV32IZHINX-NEXT: # %bb.1: # %if.else668; RV32IZHINX-NEXT: ret669; RV32IZHINX-NEXT: .LBB6_2: # %if.then670; RV32IZHINX-NEXT: addi sp, sp, -16671; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill672; RV32IZHINX-NEXT: call abort673;674; RV64IZHINX-LABEL: br_fcmp_ole:675; RV64IZHINX: # %bb.0:676; RV64IZHINX-NEXT: fle.h a0, a0, a1677; RV64IZHINX-NEXT: bnez a0, .LBB6_2678; RV64IZHINX-NEXT: # %bb.1: # %if.else679; RV64IZHINX-NEXT: ret680; RV64IZHINX-NEXT: .LBB6_2: # %if.then681; RV64IZHINX-NEXT: addi sp, sp, -16682; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill683; RV64IZHINX-NEXT: call abort684;685; RV32IZFHMIN-LABEL: br_fcmp_ole:686; RV32IZFHMIN: # %bb.0:687; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa1688; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa0689; RV32IZFHMIN-NEXT: fle.s a0, fa4, fa5690; RV32IZFHMIN-NEXT: bnez a0, .LBB6_2691; RV32IZFHMIN-NEXT: # %bb.1: # %if.else692; RV32IZFHMIN-NEXT: ret693; RV32IZFHMIN-NEXT: .LBB6_2: # %if.then694; RV32IZFHMIN-NEXT: addi sp, sp, -16695; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill696; RV32IZFHMIN-NEXT: call abort697;698; RV64IZFHMIN-LABEL: br_fcmp_ole:699; RV64IZFHMIN: # %bb.0:700; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa1701; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa0702; RV64IZFHMIN-NEXT: fle.s a0, fa4, fa5703; RV64IZFHMIN-NEXT: bnez a0, .LBB6_2704; RV64IZFHMIN-NEXT: # %bb.1: # %if.else705; RV64IZFHMIN-NEXT: ret706; RV64IZFHMIN-NEXT: .LBB6_2: # %if.then707; RV64IZFHMIN-NEXT: addi sp, sp, -16708; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill709; RV64IZFHMIN-NEXT: call abort710;711; RV32IZHINXMIN-LABEL: br_fcmp_ole:712; RV32IZHINXMIN: # %bb.0:713; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a1714; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0715; RV32IZHINXMIN-NEXT: fle.s a0, a0, a1716; RV32IZHINXMIN-NEXT: bnez a0, .LBB6_2717; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else718; RV32IZHINXMIN-NEXT: ret719; RV32IZHINXMIN-NEXT: .LBB6_2: # %if.then720; RV32IZHINXMIN-NEXT: addi sp, sp, -16721; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill722; RV32IZHINXMIN-NEXT: call abort723;724; RV64IZHINXMIN-LABEL: br_fcmp_ole:725; RV64IZHINXMIN: # %bb.0:726; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a1727; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0728; RV64IZHINXMIN-NEXT: fle.s a0, a0, a1729; RV64IZHINXMIN-NEXT: bnez a0, .LBB6_2730; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else731; RV64IZHINXMIN-NEXT: ret732; RV64IZHINXMIN-NEXT: .LBB6_2: # %if.then733; RV64IZHINXMIN-NEXT: addi sp, sp, -16734; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill735; RV64IZHINXMIN-NEXT: call abort736 %1 = fcmp ole half %a, %b737 br i1 %1, label %if.then, label %if.else738if.else:739 ret void740if.then:741 tail call void @abort()742 unreachable743}744 745define void @br_fcmp_one(half %a, half %b) nounwind {746; RV32IZFH-LABEL: br_fcmp_one:747; RV32IZFH: # %bb.0:748; RV32IZFH-NEXT: flt.h a0, fa0, fa1749; RV32IZFH-NEXT: flt.h a1, fa1, fa0750; RV32IZFH-NEXT: or a0, a1, a0751; RV32IZFH-NEXT: bnez a0, .LBB7_2752; RV32IZFH-NEXT: # %bb.1: # %if.else753; RV32IZFH-NEXT: ret754; RV32IZFH-NEXT: .LBB7_2: # %if.then755; RV32IZFH-NEXT: addi sp, sp, -16756; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill757; RV32IZFH-NEXT: call abort758;759; RV64IZFH-LABEL: br_fcmp_one:760; RV64IZFH: # %bb.0:761; RV64IZFH-NEXT: flt.h a0, fa0, fa1762; RV64IZFH-NEXT: flt.h a1, fa1, fa0763; RV64IZFH-NEXT: or a0, a1, a0764; RV64IZFH-NEXT: bnez a0, .LBB7_2765; RV64IZFH-NEXT: # %bb.1: # %if.else766; RV64IZFH-NEXT: ret767; RV64IZFH-NEXT: .LBB7_2: # %if.then768; RV64IZFH-NEXT: addi sp, sp, -16769; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill770; RV64IZFH-NEXT: call abort771;772; RV32IZHINX-LABEL: br_fcmp_one:773; RV32IZHINX: # %bb.0:774; RV32IZHINX-NEXT: flt.h a2, a0, a1775; RV32IZHINX-NEXT: flt.h a0, a1, a0776; RV32IZHINX-NEXT: or a0, a0, a2777; RV32IZHINX-NEXT: bnez a0, .LBB7_2778; RV32IZHINX-NEXT: # %bb.1: # %if.else779; RV32IZHINX-NEXT: ret780; RV32IZHINX-NEXT: .LBB7_2: # %if.then781; RV32IZHINX-NEXT: addi sp, sp, -16782; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill783; RV32IZHINX-NEXT: call abort784;785; RV64IZHINX-LABEL: br_fcmp_one:786; RV64IZHINX: # %bb.0:787; RV64IZHINX-NEXT: flt.h a2, a0, a1788; RV64IZHINX-NEXT: flt.h a0, a1, a0789; RV64IZHINX-NEXT: or a0, a0, a2790; RV64IZHINX-NEXT: bnez a0, .LBB7_2791; RV64IZHINX-NEXT: # %bb.1: # %if.else792; RV64IZHINX-NEXT: ret793; RV64IZHINX-NEXT: .LBB7_2: # %if.then794; RV64IZHINX-NEXT: addi sp, sp, -16795; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill796; RV64IZHINX-NEXT: call abort797;798; RV32IZFHMIN-LABEL: br_fcmp_one:799; RV32IZFHMIN: # %bb.0:800; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa1801; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa0802; RV32IZFHMIN-NEXT: flt.s a0, fa4, fa5803; RV32IZFHMIN-NEXT: flt.s a1, fa5, fa4804; RV32IZFHMIN-NEXT: or a0, a1, a0805; RV32IZFHMIN-NEXT: bnez a0, .LBB7_2806; RV32IZFHMIN-NEXT: # %bb.1: # %if.else807; RV32IZFHMIN-NEXT: ret808; RV32IZFHMIN-NEXT: .LBB7_2: # %if.then809; RV32IZFHMIN-NEXT: addi sp, sp, -16810; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill811; RV32IZFHMIN-NEXT: call abort812;813; RV64IZFHMIN-LABEL: br_fcmp_one:814; RV64IZFHMIN: # %bb.0:815; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa1816; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa0817; RV64IZFHMIN-NEXT: flt.s a0, fa4, fa5818; RV64IZFHMIN-NEXT: flt.s a1, fa5, fa4819; RV64IZFHMIN-NEXT: or a0, a1, a0820; RV64IZFHMIN-NEXT: bnez a0, .LBB7_2821; RV64IZFHMIN-NEXT: # %bb.1: # %if.else822; RV64IZFHMIN-NEXT: ret823; RV64IZFHMIN-NEXT: .LBB7_2: # %if.then824; RV64IZFHMIN-NEXT: addi sp, sp, -16825; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill826; RV64IZFHMIN-NEXT: call abort827;828; RV32IZHINXMIN-LABEL: br_fcmp_one:829; RV32IZHINXMIN: # %bb.0:830; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a1831; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0832; RV32IZHINXMIN-NEXT: flt.s a2, a0, a1833; RV32IZHINXMIN-NEXT: flt.s a0, a1, a0834; RV32IZHINXMIN-NEXT: or a0, a0, a2835; RV32IZHINXMIN-NEXT: bnez a0, .LBB7_2836; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else837; RV32IZHINXMIN-NEXT: ret838; RV32IZHINXMIN-NEXT: .LBB7_2: # %if.then839; RV32IZHINXMIN-NEXT: addi sp, sp, -16840; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill841; RV32IZHINXMIN-NEXT: call abort842;843; RV64IZHINXMIN-LABEL: br_fcmp_one:844; RV64IZHINXMIN: # %bb.0:845; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a1846; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0847; RV64IZHINXMIN-NEXT: flt.s a2, a0, a1848; RV64IZHINXMIN-NEXT: flt.s a0, a1, a0849; RV64IZHINXMIN-NEXT: or a0, a0, a2850; RV64IZHINXMIN-NEXT: bnez a0, .LBB7_2851; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else852; RV64IZHINXMIN-NEXT: ret853; RV64IZHINXMIN-NEXT: .LBB7_2: # %if.then854; RV64IZHINXMIN-NEXT: addi sp, sp, -16855; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill856; RV64IZHINXMIN-NEXT: call abort857 %1 = fcmp one half %a, %b858 br i1 %1, label %if.then, label %if.else859if.else:860 ret void861if.then:862 tail call void @abort()863 unreachable864}865 866define void @br_fcmp_ord(half %a, half %b) nounwind {867; RV32IZFH-LABEL: br_fcmp_ord:868; RV32IZFH: # %bb.0:869; RV32IZFH-NEXT: feq.h a0, fa1, fa1870; RV32IZFH-NEXT: feq.h a1, fa0, fa0871; RV32IZFH-NEXT: and a0, a1, a0872; RV32IZFH-NEXT: bnez a0, .LBB8_2873; RV32IZFH-NEXT: # %bb.1: # %if.else874; RV32IZFH-NEXT: ret875; RV32IZFH-NEXT: .LBB8_2: # %if.then876; RV32IZFH-NEXT: addi sp, sp, -16877; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill878; RV32IZFH-NEXT: call abort879;880; RV64IZFH-LABEL: br_fcmp_ord:881; RV64IZFH: # %bb.0:882; RV64IZFH-NEXT: feq.h a0, fa1, fa1883; RV64IZFH-NEXT: feq.h a1, fa0, fa0884; RV64IZFH-NEXT: and a0, a1, a0885; RV64IZFH-NEXT: bnez a0, .LBB8_2886; RV64IZFH-NEXT: # %bb.1: # %if.else887; RV64IZFH-NEXT: ret888; RV64IZFH-NEXT: .LBB8_2: # %if.then889; RV64IZFH-NEXT: addi sp, sp, -16890; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill891; RV64IZFH-NEXT: call abort892;893; RV32IZHINX-LABEL: br_fcmp_ord:894; RV32IZHINX: # %bb.0:895; RV32IZHINX-NEXT: feq.h a1, a1, a1896; RV32IZHINX-NEXT: feq.h a0, a0, a0897; RV32IZHINX-NEXT: and a0, a0, a1898; RV32IZHINX-NEXT: bnez a0, .LBB8_2899; RV32IZHINX-NEXT: # %bb.1: # %if.else900; RV32IZHINX-NEXT: ret901; RV32IZHINX-NEXT: .LBB8_2: # %if.then902; RV32IZHINX-NEXT: addi sp, sp, -16903; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill904; RV32IZHINX-NEXT: call abort905;906; RV64IZHINX-LABEL: br_fcmp_ord:907; RV64IZHINX: # %bb.0:908; RV64IZHINX-NEXT: feq.h a1, a1, a1909; RV64IZHINX-NEXT: feq.h a0, a0, a0910; RV64IZHINX-NEXT: and a0, a0, a1911; RV64IZHINX-NEXT: bnez a0, .LBB8_2912; RV64IZHINX-NEXT: # %bb.1: # %if.else913; RV64IZHINX-NEXT: ret914; RV64IZHINX-NEXT: .LBB8_2: # %if.then915; RV64IZHINX-NEXT: addi sp, sp, -16916; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill917; RV64IZHINX-NEXT: call abort918;919; RV32IZFHMIN-LABEL: br_fcmp_ord:920; RV32IZFHMIN: # %bb.0:921; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa1922; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa0923; RV32IZFHMIN-NEXT: feq.s a0, fa5, fa5924; RV32IZFHMIN-NEXT: feq.s a1, fa4, fa4925; RV32IZFHMIN-NEXT: and a0, a1, a0926; RV32IZFHMIN-NEXT: bnez a0, .LBB8_2927; RV32IZFHMIN-NEXT: # %bb.1: # %if.else928; RV32IZFHMIN-NEXT: ret929; RV32IZFHMIN-NEXT: .LBB8_2: # %if.then930; RV32IZFHMIN-NEXT: addi sp, sp, -16931; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill932; RV32IZFHMIN-NEXT: call abort933;934; RV64IZFHMIN-LABEL: br_fcmp_ord:935; RV64IZFHMIN: # %bb.0:936; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa1937; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa0938; RV64IZFHMIN-NEXT: feq.s a0, fa5, fa5939; RV64IZFHMIN-NEXT: feq.s a1, fa4, fa4940; RV64IZFHMIN-NEXT: and a0, a1, a0941; RV64IZFHMIN-NEXT: bnez a0, .LBB8_2942; RV64IZFHMIN-NEXT: # %bb.1: # %if.else943; RV64IZFHMIN-NEXT: ret944; RV64IZFHMIN-NEXT: .LBB8_2: # %if.then945; RV64IZFHMIN-NEXT: addi sp, sp, -16946; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill947; RV64IZFHMIN-NEXT: call abort948;949; RV32IZHINXMIN-LABEL: br_fcmp_ord:950; RV32IZHINXMIN: # %bb.0:951; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a1952; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0953; RV32IZHINXMIN-NEXT: feq.s a1, a1, a1954; RV32IZHINXMIN-NEXT: feq.s a0, a0, a0955; RV32IZHINXMIN-NEXT: and a0, a0, a1956; RV32IZHINXMIN-NEXT: bnez a0, .LBB8_2957; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else958; RV32IZHINXMIN-NEXT: ret959; RV32IZHINXMIN-NEXT: .LBB8_2: # %if.then960; RV32IZHINXMIN-NEXT: addi sp, sp, -16961; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill962; RV32IZHINXMIN-NEXT: call abort963;964; RV64IZHINXMIN-LABEL: br_fcmp_ord:965; RV64IZHINXMIN: # %bb.0:966; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a1967; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0968; RV64IZHINXMIN-NEXT: feq.s a1, a1, a1969; RV64IZHINXMIN-NEXT: feq.s a0, a0, a0970; RV64IZHINXMIN-NEXT: and a0, a0, a1971; RV64IZHINXMIN-NEXT: bnez a0, .LBB8_2972; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else973; RV64IZHINXMIN-NEXT: ret974; RV64IZHINXMIN-NEXT: .LBB8_2: # %if.then975; RV64IZHINXMIN-NEXT: addi sp, sp, -16976; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill977; RV64IZHINXMIN-NEXT: call abort978 %1 = fcmp ord half %a, %b979 br i1 %1, label %if.then, label %if.else980if.else:981 ret void982if.then:983 tail call void @abort()984 unreachable985}986 987define void @br_fcmp_ueq(half %a, half %b) nounwind {988; RV32IZFH-LABEL: br_fcmp_ueq:989; RV32IZFH: # %bb.0:990; RV32IZFH-NEXT: flt.h a0, fa0, fa1991; RV32IZFH-NEXT: flt.h a1, fa1, fa0992; RV32IZFH-NEXT: or a0, a1, a0993; RV32IZFH-NEXT: beqz a0, .LBB9_2994; RV32IZFH-NEXT: # %bb.1: # %if.else995; RV32IZFH-NEXT: ret996; RV32IZFH-NEXT: .LBB9_2: # %if.then997; RV32IZFH-NEXT: addi sp, sp, -16998; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill999; RV32IZFH-NEXT: call abort1000;1001; RV64IZFH-LABEL: br_fcmp_ueq:1002; RV64IZFH: # %bb.0:1003; RV64IZFH-NEXT: flt.h a0, fa0, fa11004; RV64IZFH-NEXT: flt.h a1, fa1, fa01005; RV64IZFH-NEXT: or a0, a1, a01006; RV64IZFH-NEXT: beqz a0, .LBB9_21007; RV64IZFH-NEXT: # %bb.1: # %if.else1008; RV64IZFH-NEXT: ret1009; RV64IZFH-NEXT: .LBB9_2: # %if.then1010; RV64IZFH-NEXT: addi sp, sp, -161011; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1012; RV64IZFH-NEXT: call abort1013;1014; RV32IZHINX-LABEL: br_fcmp_ueq:1015; RV32IZHINX: # %bb.0:1016; RV32IZHINX-NEXT: flt.h a2, a0, a11017; RV32IZHINX-NEXT: flt.h a0, a1, a01018; RV32IZHINX-NEXT: or a0, a0, a21019; RV32IZHINX-NEXT: beqz a0, .LBB9_21020; RV32IZHINX-NEXT: # %bb.1: # %if.else1021; RV32IZHINX-NEXT: ret1022; RV32IZHINX-NEXT: .LBB9_2: # %if.then1023; RV32IZHINX-NEXT: addi sp, sp, -161024; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1025; RV32IZHINX-NEXT: call abort1026;1027; RV64IZHINX-LABEL: br_fcmp_ueq:1028; RV64IZHINX: # %bb.0:1029; RV64IZHINX-NEXT: flt.h a2, a0, a11030; RV64IZHINX-NEXT: flt.h a0, a1, a01031; RV64IZHINX-NEXT: or a0, a0, a21032; RV64IZHINX-NEXT: beqz a0, .LBB9_21033; RV64IZHINX-NEXT: # %bb.1: # %if.else1034; RV64IZHINX-NEXT: ret1035; RV64IZHINX-NEXT: .LBB9_2: # %if.then1036; RV64IZHINX-NEXT: addi sp, sp, -161037; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1038; RV64IZHINX-NEXT: call abort1039;1040; RV32IZFHMIN-LABEL: br_fcmp_ueq:1041; RV32IZFHMIN: # %bb.0:1042; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa11043; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa01044; RV32IZFHMIN-NEXT: flt.s a0, fa4, fa51045; RV32IZFHMIN-NEXT: flt.s a1, fa5, fa41046; RV32IZFHMIN-NEXT: or a0, a1, a01047; RV32IZFHMIN-NEXT: beqz a0, .LBB9_21048; RV32IZFHMIN-NEXT: # %bb.1: # %if.else1049; RV32IZFHMIN-NEXT: ret1050; RV32IZFHMIN-NEXT: .LBB9_2: # %if.then1051; RV32IZFHMIN-NEXT: addi sp, sp, -161052; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1053; RV32IZFHMIN-NEXT: call abort1054;1055; RV64IZFHMIN-LABEL: br_fcmp_ueq:1056; RV64IZFHMIN: # %bb.0:1057; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa11058; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa01059; RV64IZFHMIN-NEXT: flt.s a0, fa4, fa51060; RV64IZFHMIN-NEXT: flt.s a1, fa5, fa41061; RV64IZFHMIN-NEXT: or a0, a1, a01062; RV64IZFHMIN-NEXT: beqz a0, .LBB9_21063; RV64IZFHMIN-NEXT: # %bb.1: # %if.else1064; RV64IZFHMIN-NEXT: ret1065; RV64IZFHMIN-NEXT: .LBB9_2: # %if.then1066; RV64IZFHMIN-NEXT: addi sp, sp, -161067; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1068; RV64IZFHMIN-NEXT: call abort1069;1070; RV32IZHINXMIN-LABEL: br_fcmp_ueq:1071; RV32IZHINXMIN: # %bb.0:1072; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a11073; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a01074; RV32IZHINXMIN-NEXT: flt.s a2, a0, a11075; RV32IZHINXMIN-NEXT: flt.s a0, a1, a01076; RV32IZHINXMIN-NEXT: or a0, a0, a21077; RV32IZHINXMIN-NEXT: beqz a0, .LBB9_21078; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else1079; RV32IZHINXMIN-NEXT: ret1080; RV32IZHINXMIN-NEXT: .LBB9_2: # %if.then1081; RV32IZHINXMIN-NEXT: addi sp, sp, -161082; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1083; RV32IZHINXMIN-NEXT: call abort1084;1085; RV64IZHINXMIN-LABEL: br_fcmp_ueq:1086; RV64IZHINXMIN: # %bb.0:1087; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a11088; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a01089; RV64IZHINXMIN-NEXT: flt.s a2, a0, a11090; RV64IZHINXMIN-NEXT: flt.s a0, a1, a01091; RV64IZHINXMIN-NEXT: or a0, a0, a21092; RV64IZHINXMIN-NEXT: beqz a0, .LBB9_21093; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else1094; RV64IZHINXMIN-NEXT: ret1095; RV64IZHINXMIN-NEXT: .LBB9_2: # %if.then1096; RV64IZHINXMIN-NEXT: addi sp, sp, -161097; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1098; RV64IZHINXMIN-NEXT: call abort1099 %1 = fcmp ueq half %a, %b1100 br i1 %1, label %if.then, label %if.else1101if.else:1102 ret void1103if.then:1104 tail call void @abort()1105 unreachable1106}1107 1108define void @br_fcmp_ugt(half %a, half %b) nounwind {1109; RV32IZFH-LABEL: br_fcmp_ugt:1110; RV32IZFH: # %bb.0:1111; RV32IZFH-NEXT: fle.h a0, fa0, fa11112; RV32IZFH-NEXT: beqz a0, .LBB10_21113; RV32IZFH-NEXT: # %bb.1: # %if.else1114; RV32IZFH-NEXT: ret1115; RV32IZFH-NEXT: .LBB10_2: # %if.then1116; RV32IZFH-NEXT: addi sp, sp, -161117; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1118; RV32IZFH-NEXT: call abort1119;1120; RV64IZFH-LABEL: br_fcmp_ugt:1121; RV64IZFH: # %bb.0:1122; RV64IZFH-NEXT: fle.h a0, fa0, fa11123; RV64IZFH-NEXT: beqz a0, .LBB10_21124; RV64IZFH-NEXT: # %bb.1: # %if.else1125; RV64IZFH-NEXT: ret1126; RV64IZFH-NEXT: .LBB10_2: # %if.then1127; RV64IZFH-NEXT: addi sp, sp, -161128; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1129; RV64IZFH-NEXT: call abort1130;1131; RV32IZHINX-LABEL: br_fcmp_ugt:1132; RV32IZHINX: # %bb.0:1133; RV32IZHINX-NEXT: fle.h a0, a0, a11134; RV32IZHINX-NEXT: beqz a0, .LBB10_21135; RV32IZHINX-NEXT: # %bb.1: # %if.else1136; RV32IZHINX-NEXT: ret1137; RV32IZHINX-NEXT: .LBB10_2: # %if.then1138; RV32IZHINX-NEXT: addi sp, sp, -161139; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1140; RV32IZHINX-NEXT: call abort1141;1142; RV64IZHINX-LABEL: br_fcmp_ugt:1143; RV64IZHINX: # %bb.0:1144; RV64IZHINX-NEXT: fle.h a0, a0, a11145; RV64IZHINX-NEXT: beqz a0, .LBB10_21146; RV64IZHINX-NEXT: # %bb.1: # %if.else1147; RV64IZHINX-NEXT: ret1148; RV64IZHINX-NEXT: .LBB10_2: # %if.then1149; RV64IZHINX-NEXT: addi sp, sp, -161150; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1151; RV64IZHINX-NEXT: call abort1152;1153; RV32IZFHMIN-LABEL: br_fcmp_ugt:1154; RV32IZFHMIN: # %bb.0:1155; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa11156; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa01157; RV32IZFHMIN-NEXT: fle.s a0, fa4, fa51158; RV32IZFHMIN-NEXT: beqz a0, .LBB10_21159; RV32IZFHMIN-NEXT: # %bb.1: # %if.else1160; RV32IZFHMIN-NEXT: ret1161; RV32IZFHMIN-NEXT: .LBB10_2: # %if.then1162; RV32IZFHMIN-NEXT: addi sp, sp, -161163; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1164; RV32IZFHMIN-NEXT: call abort1165;1166; RV64IZFHMIN-LABEL: br_fcmp_ugt:1167; RV64IZFHMIN: # %bb.0:1168; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa11169; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa01170; RV64IZFHMIN-NEXT: fle.s a0, fa4, fa51171; RV64IZFHMIN-NEXT: beqz a0, .LBB10_21172; RV64IZFHMIN-NEXT: # %bb.1: # %if.else1173; RV64IZFHMIN-NEXT: ret1174; RV64IZFHMIN-NEXT: .LBB10_2: # %if.then1175; RV64IZFHMIN-NEXT: addi sp, sp, -161176; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1177; RV64IZFHMIN-NEXT: call abort1178;1179; RV32IZHINXMIN-LABEL: br_fcmp_ugt:1180; RV32IZHINXMIN: # %bb.0:1181; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a11182; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a01183; RV32IZHINXMIN-NEXT: fle.s a0, a0, a11184; RV32IZHINXMIN-NEXT: beqz a0, .LBB10_21185; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else1186; RV32IZHINXMIN-NEXT: ret1187; RV32IZHINXMIN-NEXT: .LBB10_2: # %if.then1188; RV32IZHINXMIN-NEXT: addi sp, sp, -161189; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1190; RV32IZHINXMIN-NEXT: call abort1191;1192; RV64IZHINXMIN-LABEL: br_fcmp_ugt:1193; RV64IZHINXMIN: # %bb.0:1194; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a11195; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a01196; RV64IZHINXMIN-NEXT: fle.s a0, a0, a11197; RV64IZHINXMIN-NEXT: beqz a0, .LBB10_21198; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else1199; RV64IZHINXMIN-NEXT: ret1200; RV64IZHINXMIN-NEXT: .LBB10_2: # %if.then1201; RV64IZHINXMIN-NEXT: addi sp, sp, -161202; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1203; RV64IZHINXMIN-NEXT: call abort1204 %1 = fcmp ugt half %a, %b1205 br i1 %1, label %if.then, label %if.else1206if.else:1207 ret void1208if.then:1209 tail call void @abort()1210 unreachable1211}1212 1213define void @br_fcmp_uge(half %a, half %b) nounwind {1214; RV32IZFH-LABEL: br_fcmp_uge:1215; RV32IZFH: # %bb.0:1216; RV32IZFH-NEXT: flt.h a0, fa0, fa11217; RV32IZFH-NEXT: beqz a0, .LBB11_21218; RV32IZFH-NEXT: # %bb.1: # %if.else1219; RV32IZFH-NEXT: ret1220; RV32IZFH-NEXT: .LBB11_2: # %if.then1221; RV32IZFH-NEXT: addi sp, sp, -161222; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1223; RV32IZFH-NEXT: call abort1224;1225; RV64IZFH-LABEL: br_fcmp_uge:1226; RV64IZFH: # %bb.0:1227; RV64IZFH-NEXT: flt.h a0, fa0, fa11228; RV64IZFH-NEXT: beqz a0, .LBB11_21229; RV64IZFH-NEXT: # %bb.1: # %if.else1230; RV64IZFH-NEXT: ret1231; RV64IZFH-NEXT: .LBB11_2: # %if.then1232; RV64IZFH-NEXT: addi sp, sp, -161233; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1234; RV64IZFH-NEXT: call abort1235;1236; RV32IZHINX-LABEL: br_fcmp_uge:1237; RV32IZHINX: # %bb.0:1238; RV32IZHINX-NEXT: flt.h a0, a0, a11239; RV32IZHINX-NEXT: beqz a0, .LBB11_21240; RV32IZHINX-NEXT: # %bb.1: # %if.else1241; RV32IZHINX-NEXT: ret1242; RV32IZHINX-NEXT: .LBB11_2: # %if.then1243; RV32IZHINX-NEXT: addi sp, sp, -161244; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1245; RV32IZHINX-NEXT: call abort1246;1247; RV64IZHINX-LABEL: br_fcmp_uge:1248; RV64IZHINX: # %bb.0:1249; RV64IZHINX-NEXT: flt.h a0, a0, a11250; RV64IZHINX-NEXT: beqz a0, .LBB11_21251; RV64IZHINX-NEXT: # %bb.1: # %if.else1252; RV64IZHINX-NEXT: ret1253; RV64IZHINX-NEXT: .LBB11_2: # %if.then1254; RV64IZHINX-NEXT: addi sp, sp, -161255; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1256; RV64IZHINX-NEXT: call abort1257;1258; RV32IZFHMIN-LABEL: br_fcmp_uge:1259; RV32IZFHMIN: # %bb.0:1260; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa11261; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa01262; RV32IZFHMIN-NEXT: flt.s a0, fa4, fa51263; RV32IZFHMIN-NEXT: beqz a0, .LBB11_21264; RV32IZFHMIN-NEXT: # %bb.1: # %if.else1265; RV32IZFHMIN-NEXT: ret1266; RV32IZFHMIN-NEXT: .LBB11_2: # %if.then1267; RV32IZFHMIN-NEXT: addi sp, sp, -161268; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1269; RV32IZFHMIN-NEXT: call abort1270;1271; RV64IZFHMIN-LABEL: br_fcmp_uge:1272; RV64IZFHMIN: # %bb.0:1273; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa11274; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa01275; RV64IZFHMIN-NEXT: flt.s a0, fa4, fa51276; RV64IZFHMIN-NEXT: beqz a0, .LBB11_21277; RV64IZFHMIN-NEXT: # %bb.1: # %if.else1278; RV64IZFHMIN-NEXT: ret1279; RV64IZFHMIN-NEXT: .LBB11_2: # %if.then1280; RV64IZFHMIN-NEXT: addi sp, sp, -161281; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1282; RV64IZFHMIN-NEXT: call abort1283;1284; RV32IZHINXMIN-LABEL: br_fcmp_uge:1285; RV32IZHINXMIN: # %bb.0:1286; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a11287; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a01288; RV32IZHINXMIN-NEXT: flt.s a0, a0, a11289; RV32IZHINXMIN-NEXT: beqz a0, .LBB11_21290; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else1291; RV32IZHINXMIN-NEXT: ret1292; RV32IZHINXMIN-NEXT: .LBB11_2: # %if.then1293; RV32IZHINXMIN-NEXT: addi sp, sp, -161294; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1295; RV32IZHINXMIN-NEXT: call abort1296;1297; RV64IZHINXMIN-LABEL: br_fcmp_uge:1298; RV64IZHINXMIN: # %bb.0:1299; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a11300; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a01301; RV64IZHINXMIN-NEXT: flt.s a0, a0, a11302; RV64IZHINXMIN-NEXT: beqz a0, .LBB11_21303; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else1304; RV64IZHINXMIN-NEXT: ret1305; RV64IZHINXMIN-NEXT: .LBB11_2: # %if.then1306; RV64IZHINXMIN-NEXT: addi sp, sp, -161307; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1308; RV64IZHINXMIN-NEXT: call abort1309 %1 = fcmp uge half %a, %b1310 br i1 %1, label %if.then, label %if.else1311if.else:1312 ret void1313if.then:1314 tail call void @abort()1315 unreachable1316}1317 1318define void @br_fcmp_ult(half %a, half %b) nounwind {1319; RV32IZFH-LABEL: br_fcmp_ult:1320; RV32IZFH: # %bb.0:1321; RV32IZFH-NEXT: fle.h a0, fa1, fa01322; RV32IZFH-NEXT: beqz a0, .LBB12_21323; RV32IZFH-NEXT: # %bb.1: # %if.else1324; RV32IZFH-NEXT: ret1325; RV32IZFH-NEXT: .LBB12_2: # %if.then1326; RV32IZFH-NEXT: addi sp, sp, -161327; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1328; RV32IZFH-NEXT: call abort1329;1330; RV64IZFH-LABEL: br_fcmp_ult:1331; RV64IZFH: # %bb.0:1332; RV64IZFH-NEXT: fle.h a0, fa1, fa01333; RV64IZFH-NEXT: beqz a0, .LBB12_21334; RV64IZFH-NEXT: # %bb.1: # %if.else1335; RV64IZFH-NEXT: ret1336; RV64IZFH-NEXT: .LBB12_2: # %if.then1337; RV64IZFH-NEXT: addi sp, sp, -161338; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1339; RV64IZFH-NEXT: call abort1340;1341; RV32IZHINX-LABEL: br_fcmp_ult:1342; RV32IZHINX: # %bb.0:1343; RV32IZHINX-NEXT: fle.h a0, a1, a01344; RV32IZHINX-NEXT: beqz a0, .LBB12_21345; RV32IZHINX-NEXT: # %bb.1: # %if.else1346; RV32IZHINX-NEXT: ret1347; RV32IZHINX-NEXT: .LBB12_2: # %if.then1348; RV32IZHINX-NEXT: addi sp, sp, -161349; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1350; RV32IZHINX-NEXT: call abort1351;1352; RV64IZHINX-LABEL: br_fcmp_ult:1353; RV64IZHINX: # %bb.0:1354; RV64IZHINX-NEXT: fle.h a0, a1, a01355; RV64IZHINX-NEXT: beqz a0, .LBB12_21356; RV64IZHINX-NEXT: # %bb.1: # %if.else1357; RV64IZHINX-NEXT: ret1358; RV64IZHINX-NEXT: .LBB12_2: # %if.then1359; RV64IZHINX-NEXT: addi sp, sp, -161360; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1361; RV64IZHINX-NEXT: call abort1362;1363; RV32IZFHMIN-LABEL: br_fcmp_ult:1364; RV32IZFHMIN: # %bb.0:1365; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa01366; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa11367; RV32IZFHMIN-NEXT: fle.s a0, fa4, fa51368; RV32IZFHMIN-NEXT: beqz a0, .LBB12_21369; RV32IZFHMIN-NEXT: # %bb.1: # %if.else1370; RV32IZFHMIN-NEXT: ret1371; RV32IZFHMIN-NEXT: .LBB12_2: # %if.then1372; RV32IZFHMIN-NEXT: addi sp, sp, -161373; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1374; RV32IZFHMIN-NEXT: call abort1375;1376; RV64IZFHMIN-LABEL: br_fcmp_ult:1377; RV64IZFHMIN: # %bb.0:1378; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa01379; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa11380; RV64IZFHMIN-NEXT: fle.s a0, fa4, fa51381; RV64IZFHMIN-NEXT: beqz a0, .LBB12_21382; RV64IZFHMIN-NEXT: # %bb.1: # %if.else1383; RV64IZFHMIN-NEXT: ret1384; RV64IZFHMIN-NEXT: .LBB12_2: # %if.then1385; RV64IZFHMIN-NEXT: addi sp, sp, -161386; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1387; RV64IZFHMIN-NEXT: call abort1388;1389; RV32IZHINXMIN-LABEL: br_fcmp_ult:1390; RV32IZHINXMIN: # %bb.0:1391; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a01392; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a11393; RV32IZHINXMIN-NEXT: fle.s a0, a1, a01394; RV32IZHINXMIN-NEXT: beqz a0, .LBB12_21395; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else1396; RV32IZHINXMIN-NEXT: ret1397; RV32IZHINXMIN-NEXT: .LBB12_2: # %if.then1398; RV32IZHINXMIN-NEXT: addi sp, sp, -161399; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1400; RV32IZHINXMIN-NEXT: call abort1401;1402; RV64IZHINXMIN-LABEL: br_fcmp_ult:1403; RV64IZHINXMIN: # %bb.0:1404; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a01405; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a11406; RV64IZHINXMIN-NEXT: fle.s a0, a1, a01407; RV64IZHINXMIN-NEXT: beqz a0, .LBB12_21408; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else1409; RV64IZHINXMIN-NEXT: ret1410; RV64IZHINXMIN-NEXT: .LBB12_2: # %if.then1411; RV64IZHINXMIN-NEXT: addi sp, sp, -161412; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1413; RV64IZHINXMIN-NEXT: call abort1414 %1 = fcmp ult half %a, %b1415 br i1 %1, label %if.then, label %if.else1416if.else:1417 ret void1418if.then:1419 tail call void @abort()1420 unreachable1421}1422 1423define void @br_fcmp_ule(half %a, half %b) nounwind {1424; RV32IZFH-LABEL: br_fcmp_ule:1425; RV32IZFH: # %bb.0:1426; RV32IZFH-NEXT: flt.h a0, fa1, fa01427; RV32IZFH-NEXT: beqz a0, .LBB13_21428; RV32IZFH-NEXT: # %bb.1: # %if.else1429; RV32IZFH-NEXT: ret1430; RV32IZFH-NEXT: .LBB13_2: # %if.then1431; RV32IZFH-NEXT: addi sp, sp, -161432; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1433; RV32IZFH-NEXT: call abort1434;1435; RV64IZFH-LABEL: br_fcmp_ule:1436; RV64IZFH: # %bb.0:1437; RV64IZFH-NEXT: flt.h a0, fa1, fa01438; RV64IZFH-NEXT: beqz a0, .LBB13_21439; RV64IZFH-NEXT: # %bb.1: # %if.else1440; RV64IZFH-NEXT: ret1441; RV64IZFH-NEXT: .LBB13_2: # %if.then1442; RV64IZFH-NEXT: addi sp, sp, -161443; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1444; RV64IZFH-NEXT: call abort1445;1446; RV32IZHINX-LABEL: br_fcmp_ule:1447; RV32IZHINX: # %bb.0:1448; RV32IZHINX-NEXT: flt.h a0, a1, a01449; RV32IZHINX-NEXT: beqz a0, .LBB13_21450; RV32IZHINX-NEXT: # %bb.1: # %if.else1451; RV32IZHINX-NEXT: ret1452; RV32IZHINX-NEXT: .LBB13_2: # %if.then1453; RV32IZHINX-NEXT: addi sp, sp, -161454; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1455; RV32IZHINX-NEXT: call abort1456;1457; RV64IZHINX-LABEL: br_fcmp_ule:1458; RV64IZHINX: # %bb.0:1459; RV64IZHINX-NEXT: flt.h a0, a1, a01460; RV64IZHINX-NEXT: beqz a0, .LBB13_21461; RV64IZHINX-NEXT: # %bb.1: # %if.else1462; RV64IZHINX-NEXT: ret1463; RV64IZHINX-NEXT: .LBB13_2: # %if.then1464; RV64IZHINX-NEXT: addi sp, sp, -161465; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1466; RV64IZHINX-NEXT: call abort1467;1468; RV32IZFHMIN-LABEL: br_fcmp_ule:1469; RV32IZFHMIN: # %bb.0:1470; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa01471; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa11472; RV32IZFHMIN-NEXT: flt.s a0, fa4, fa51473; RV32IZFHMIN-NEXT: beqz a0, .LBB13_21474; RV32IZFHMIN-NEXT: # %bb.1: # %if.else1475; RV32IZFHMIN-NEXT: ret1476; RV32IZFHMIN-NEXT: .LBB13_2: # %if.then1477; RV32IZFHMIN-NEXT: addi sp, sp, -161478; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1479; RV32IZFHMIN-NEXT: call abort1480;1481; RV64IZFHMIN-LABEL: br_fcmp_ule:1482; RV64IZFHMIN: # %bb.0:1483; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa01484; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa11485; RV64IZFHMIN-NEXT: flt.s a0, fa4, fa51486; RV64IZFHMIN-NEXT: beqz a0, .LBB13_21487; RV64IZFHMIN-NEXT: # %bb.1: # %if.else1488; RV64IZFHMIN-NEXT: ret1489; RV64IZFHMIN-NEXT: .LBB13_2: # %if.then1490; RV64IZFHMIN-NEXT: addi sp, sp, -161491; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1492; RV64IZFHMIN-NEXT: call abort1493;1494; RV32IZHINXMIN-LABEL: br_fcmp_ule:1495; RV32IZHINXMIN: # %bb.0:1496; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a01497; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a11498; RV32IZHINXMIN-NEXT: flt.s a0, a1, a01499; RV32IZHINXMIN-NEXT: beqz a0, .LBB13_21500; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else1501; RV32IZHINXMIN-NEXT: ret1502; RV32IZHINXMIN-NEXT: .LBB13_2: # %if.then1503; RV32IZHINXMIN-NEXT: addi sp, sp, -161504; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1505; RV32IZHINXMIN-NEXT: call abort1506;1507; RV64IZHINXMIN-LABEL: br_fcmp_ule:1508; RV64IZHINXMIN: # %bb.0:1509; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a01510; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a11511; RV64IZHINXMIN-NEXT: flt.s a0, a1, a01512; RV64IZHINXMIN-NEXT: beqz a0, .LBB13_21513; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else1514; RV64IZHINXMIN-NEXT: ret1515; RV64IZHINXMIN-NEXT: .LBB13_2: # %if.then1516; RV64IZHINXMIN-NEXT: addi sp, sp, -161517; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1518; RV64IZHINXMIN-NEXT: call abort1519 %1 = fcmp ule half %a, %b1520 br i1 %1, label %if.then, label %if.else1521if.else:1522 ret void1523if.then:1524 tail call void @abort()1525 unreachable1526}1527 1528define void @br_fcmp_une(half %a, half %b) nounwind {1529; RV32IZFH-LABEL: br_fcmp_une:1530; RV32IZFH: # %bb.0:1531; RV32IZFH-NEXT: feq.h a0, fa0, fa11532; RV32IZFH-NEXT: beqz a0, .LBB14_21533; RV32IZFH-NEXT: # %bb.1: # %if.else1534; RV32IZFH-NEXT: ret1535; RV32IZFH-NEXT: .LBB14_2: # %if.then1536; RV32IZFH-NEXT: addi sp, sp, -161537; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1538; RV32IZFH-NEXT: call abort1539;1540; RV64IZFH-LABEL: br_fcmp_une:1541; RV64IZFH: # %bb.0:1542; RV64IZFH-NEXT: feq.h a0, fa0, fa11543; RV64IZFH-NEXT: beqz a0, .LBB14_21544; RV64IZFH-NEXT: # %bb.1: # %if.else1545; RV64IZFH-NEXT: ret1546; RV64IZFH-NEXT: .LBB14_2: # %if.then1547; RV64IZFH-NEXT: addi sp, sp, -161548; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1549; RV64IZFH-NEXT: call abort1550;1551; RV32IZHINX-LABEL: br_fcmp_une:1552; RV32IZHINX: # %bb.0:1553; RV32IZHINX-NEXT: feq.h a0, a0, a11554; RV32IZHINX-NEXT: beqz a0, .LBB14_21555; RV32IZHINX-NEXT: # %bb.1: # %if.else1556; RV32IZHINX-NEXT: ret1557; RV32IZHINX-NEXT: .LBB14_2: # %if.then1558; RV32IZHINX-NEXT: addi sp, sp, -161559; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1560; RV32IZHINX-NEXT: call abort1561;1562; RV64IZHINX-LABEL: br_fcmp_une:1563; RV64IZHINX: # %bb.0:1564; RV64IZHINX-NEXT: feq.h a0, a0, a11565; RV64IZHINX-NEXT: beqz a0, .LBB14_21566; RV64IZHINX-NEXT: # %bb.1: # %if.else1567; RV64IZHINX-NEXT: ret1568; RV64IZHINX-NEXT: .LBB14_2: # %if.then1569; RV64IZHINX-NEXT: addi sp, sp, -161570; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1571; RV64IZHINX-NEXT: call abort1572;1573; RV32IZFHMIN-LABEL: br_fcmp_une:1574; RV32IZFHMIN: # %bb.0:1575; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa11576; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa01577; RV32IZFHMIN-NEXT: feq.s a0, fa4, fa51578; RV32IZFHMIN-NEXT: beqz a0, .LBB14_21579; RV32IZFHMIN-NEXT: # %bb.1: # %if.else1580; RV32IZFHMIN-NEXT: ret1581; RV32IZFHMIN-NEXT: .LBB14_2: # %if.then1582; RV32IZFHMIN-NEXT: addi sp, sp, -161583; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1584; RV32IZFHMIN-NEXT: call abort1585;1586; RV64IZFHMIN-LABEL: br_fcmp_une:1587; RV64IZFHMIN: # %bb.0:1588; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa11589; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa01590; RV64IZFHMIN-NEXT: feq.s a0, fa4, fa51591; RV64IZFHMIN-NEXT: beqz a0, .LBB14_21592; RV64IZFHMIN-NEXT: # %bb.1: # %if.else1593; RV64IZFHMIN-NEXT: ret1594; RV64IZFHMIN-NEXT: .LBB14_2: # %if.then1595; RV64IZFHMIN-NEXT: addi sp, sp, -161596; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1597; RV64IZFHMIN-NEXT: call abort1598;1599; RV32IZHINXMIN-LABEL: br_fcmp_une:1600; RV32IZHINXMIN: # %bb.0:1601; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a11602; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a01603; RV32IZHINXMIN-NEXT: feq.s a0, a0, a11604; RV32IZHINXMIN-NEXT: beqz a0, .LBB14_21605; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else1606; RV32IZHINXMIN-NEXT: ret1607; RV32IZHINXMIN-NEXT: .LBB14_2: # %if.then1608; RV32IZHINXMIN-NEXT: addi sp, sp, -161609; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1610; RV32IZHINXMIN-NEXT: call abort1611;1612; RV64IZHINXMIN-LABEL: br_fcmp_une:1613; RV64IZHINXMIN: # %bb.0:1614; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a11615; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a01616; RV64IZHINXMIN-NEXT: feq.s a0, a0, a11617; RV64IZHINXMIN-NEXT: beqz a0, .LBB14_21618; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else1619; RV64IZHINXMIN-NEXT: ret1620; RV64IZHINXMIN-NEXT: .LBB14_2: # %if.then1621; RV64IZHINXMIN-NEXT: addi sp, sp, -161622; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1623; RV64IZHINXMIN-NEXT: call abort1624 %1 = fcmp une half %a, %b1625 br i1 %1, label %if.then, label %if.else1626if.else:1627 ret void1628if.then:1629 tail call void @abort()1630 unreachable1631}1632 1633define void @br_fcmp_uno(half %a, half %b) nounwind {1634; RV32IZFH-LABEL: br_fcmp_uno:1635; RV32IZFH: # %bb.0:1636; RV32IZFH-NEXT: feq.h a0, fa1, fa11637; RV32IZFH-NEXT: feq.h a1, fa0, fa01638; RV32IZFH-NEXT: and a0, a1, a01639; RV32IZFH-NEXT: beqz a0, .LBB15_21640; RV32IZFH-NEXT: # %bb.1: # %if.else1641; RV32IZFH-NEXT: ret1642; RV32IZFH-NEXT: .LBB15_2: # %if.then1643; RV32IZFH-NEXT: addi sp, sp, -161644; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1645; RV32IZFH-NEXT: call abort1646;1647; RV64IZFH-LABEL: br_fcmp_uno:1648; RV64IZFH: # %bb.0:1649; RV64IZFH-NEXT: feq.h a0, fa1, fa11650; RV64IZFH-NEXT: feq.h a1, fa0, fa01651; RV64IZFH-NEXT: and a0, a1, a01652; RV64IZFH-NEXT: beqz a0, .LBB15_21653; RV64IZFH-NEXT: # %bb.1: # %if.else1654; RV64IZFH-NEXT: ret1655; RV64IZFH-NEXT: .LBB15_2: # %if.then1656; RV64IZFH-NEXT: addi sp, sp, -161657; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1658; RV64IZFH-NEXT: call abort1659;1660; RV32IZHINX-LABEL: br_fcmp_uno:1661; RV32IZHINX: # %bb.0:1662; RV32IZHINX-NEXT: feq.h a1, a1, a11663; RV32IZHINX-NEXT: feq.h a0, a0, a01664; RV32IZHINX-NEXT: and a0, a0, a11665; RV32IZHINX-NEXT: beqz a0, .LBB15_21666; RV32IZHINX-NEXT: # %bb.1: # %if.else1667; RV32IZHINX-NEXT: ret1668; RV32IZHINX-NEXT: .LBB15_2: # %if.then1669; RV32IZHINX-NEXT: addi sp, sp, -161670; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1671; RV32IZHINX-NEXT: call abort1672;1673; RV64IZHINX-LABEL: br_fcmp_uno:1674; RV64IZHINX: # %bb.0:1675; RV64IZHINX-NEXT: feq.h a1, a1, a11676; RV64IZHINX-NEXT: feq.h a0, a0, a01677; RV64IZHINX-NEXT: and a0, a0, a11678; RV64IZHINX-NEXT: beqz a0, .LBB15_21679; RV64IZHINX-NEXT: # %bb.1: # %if.else1680; RV64IZHINX-NEXT: ret1681; RV64IZHINX-NEXT: .LBB15_2: # %if.then1682; RV64IZHINX-NEXT: addi sp, sp, -161683; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1684; RV64IZHINX-NEXT: call abort1685;1686; RV32IZFHMIN-LABEL: br_fcmp_uno:1687; RV32IZFHMIN: # %bb.0:1688; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa11689; RV32IZFHMIN-NEXT: fcvt.s.h fa4, fa01690; RV32IZFHMIN-NEXT: feq.s a0, fa5, fa51691; RV32IZFHMIN-NEXT: feq.s a1, fa4, fa41692; RV32IZFHMIN-NEXT: and a0, a1, a01693; RV32IZFHMIN-NEXT: beqz a0, .LBB15_21694; RV32IZFHMIN-NEXT: # %bb.1: # %if.else1695; RV32IZFHMIN-NEXT: ret1696; RV32IZFHMIN-NEXT: .LBB15_2: # %if.then1697; RV32IZFHMIN-NEXT: addi sp, sp, -161698; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1699; RV32IZFHMIN-NEXT: call abort1700;1701; RV64IZFHMIN-LABEL: br_fcmp_uno:1702; RV64IZFHMIN: # %bb.0:1703; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa11704; RV64IZFHMIN-NEXT: fcvt.s.h fa4, fa01705; RV64IZFHMIN-NEXT: feq.s a0, fa5, fa51706; RV64IZFHMIN-NEXT: feq.s a1, fa4, fa41707; RV64IZFHMIN-NEXT: and a0, a1, a01708; RV64IZFHMIN-NEXT: beqz a0, .LBB15_21709; RV64IZFHMIN-NEXT: # %bb.1: # %if.else1710; RV64IZFHMIN-NEXT: ret1711; RV64IZFHMIN-NEXT: .LBB15_2: # %if.then1712; RV64IZFHMIN-NEXT: addi sp, sp, -161713; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1714; RV64IZFHMIN-NEXT: call abort1715;1716; RV32IZHINXMIN-LABEL: br_fcmp_uno:1717; RV32IZHINXMIN: # %bb.0:1718; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a11719; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a01720; RV32IZHINXMIN-NEXT: feq.s a1, a1, a11721; RV32IZHINXMIN-NEXT: feq.s a0, a0, a01722; RV32IZHINXMIN-NEXT: and a0, a0, a11723; RV32IZHINXMIN-NEXT: beqz a0, .LBB15_21724; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else1725; RV32IZHINXMIN-NEXT: ret1726; RV32IZHINXMIN-NEXT: .LBB15_2: # %if.then1727; RV32IZHINXMIN-NEXT: addi sp, sp, -161728; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1729; RV32IZHINXMIN-NEXT: call abort1730;1731; RV64IZHINXMIN-LABEL: br_fcmp_uno:1732; RV64IZHINXMIN: # %bb.0:1733; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a11734; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a01735; RV64IZHINXMIN-NEXT: feq.s a1, a1, a11736; RV64IZHINXMIN-NEXT: feq.s a0, a0, a01737; RV64IZHINXMIN-NEXT: and a0, a0, a11738; RV64IZHINXMIN-NEXT: beqz a0, .LBB15_21739; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else1740; RV64IZHINXMIN-NEXT: ret1741; RV64IZHINXMIN-NEXT: .LBB15_2: # %if.then1742; RV64IZHINXMIN-NEXT: addi sp, sp, -161743; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1744; RV64IZHINXMIN-NEXT: call abort1745 %1 = fcmp uno half %a, %b1746 br i1 %1, label %if.then, label %if.else1747if.else:1748 ret void1749if.then:1750 tail call void @abort()1751 unreachable1752}1753 1754define void @br_fcmp_true(half %a, half %b) nounwind {1755; RV32IZFH-LABEL: br_fcmp_true:1756; RV32IZFH: # %bb.0:1757; RV32IZFH-NEXT: j .LBB16_21758; RV32IZFH-NEXT: # %bb.1: # %if.else1759; RV32IZFH-NEXT: ret1760; RV32IZFH-NEXT: .LBB16_2: # %if.then1761; RV32IZFH-NEXT: addi sp, sp, -161762; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1763; RV32IZFH-NEXT: call abort1764;1765; RV64IZFH-LABEL: br_fcmp_true:1766; RV64IZFH: # %bb.0:1767; RV64IZFH-NEXT: j .LBB16_21768; RV64IZFH-NEXT: # %bb.1: # %if.else1769; RV64IZFH-NEXT: ret1770; RV64IZFH-NEXT: .LBB16_2: # %if.then1771; RV64IZFH-NEXT: addi sp, sp, -161772; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1773; RV64IZFH-NEXT: call abort1774;1775; RV32IZHINX-LABEL: br_fcmp_true:1776; RV32IZHINX: # %bb.0:1777; RV32IZHINX-NEXT: j .LBB16_21778; RV32IZHINX-NEXT: # %bb.1: # %if.else1779; RV32IZHINX-NEXT: ret1780; RV32IZHINX-NEXT: .LBB16_2: # %if.then1781; RV32IZHINX-NEXT: addi sp, sp, -161782; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1783; RV32IZHINX-NEXT: call abort1784;1785; RV64IZHINX-LABEL: br_fcmp_true:1786; RV64IZHINX: # %bb.0:1787; RV64IZHINX-NEXT: j .LBB16_21788; RV64IZHINX-NEXT: # %bb.1: # %if.else1789; RV64IZHINX-NEXT: ret1790; RV64IZHINX-NEXT: .LBB16_2: # %if.then1791; RV64IZHINX-NEXT: addi sp, sp, -161792; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1793; RV64IZHINX-NEXT: call abort1794;1795; RV32IZFHMIN-LABEL: br_fcmp_true:1796; RV32IZFHMIN: # %bb.0:1797; RV32IZFHMIN-NEXT: j .LBB16_21798; RV32IZFHMIN-NEXT: # %bb.1: # %if.else1799; RV32IZFHMIN-NEXT: ret1800; RV32IZFHMIN-NEXT: .LBB16_2: # %if.then1801; RV32IZFHMIN-NEXT: addi sp, sp, -161802; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1803; RV32IZFHMIN-NEXT: call abort1804;1805; RV64IZFHMIN-LABEL: br_fcmp_true:1806; RV64IZFHMIN: # %bb.0:1807; RV64IZFHMIN-NEXT: j .LBB16_21808; RV64IZFHMIN-NEXT: # %bb.1: # %if.else1809; RV64IZFHMIN-NEXT: ret1810; RV64IZFHMIN-NEXT: .LBB16_2: # %if.then1811; RV64IZFHMIN-NEXT: addi sp, sp, -161812; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1813; RV64IZFHMIN-NEXT: call abort1814;1815; RV32IZHINXMIN-LABEL: br_fcmp_true:1816; RV32IZHINXMIN: # %bb.0:1817; RV32IZHINXMIN-NEXT: j .LBB16_21818; RV32IZHINXMIN-NEXT: # %bb.1: # %if.else1819; RV32IZHINXMIN-NEXT: ret1820; RV32IZHINXMIN-NEXT: .LBB16_2: # %if.then1821; RV32IZHINXMIN-NEXT: addi sp, sp, -161822; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1823; RV32IZHINXMIN-NEXT: call abort1824;1825; RV64IZHINXMIN-LABEL: br_fcmp_true:1826; RV64IZHINXMIN: # %bb.0:1827; RV64IZHINXMIN-NEXT: j .LBB16_21828; RV64IZHINXMIN-NEXT: # %bb.1: # %if.else1829; RV64IZHINXMIN-NEXT: ret1830; RV64IZHINXMIN-NEXT: .LBB16_2: # %if.then1831; RV64IZHINXMIN-NEXT: addi sp, sp, -161832; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1833; RV64IZHINXMIN-NEXT: call abort1834 %1 = fcmp true half %a, %b1835 br i1 %1, label %if.then, label %if.else1836if.else:1837 ret void1838if.then:1839 tail call void @abort()1840 unreachable1841}1842