910 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; Test that we are able to generate the Xqcicli instructions3; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \4; RUN: | FileCheck %s --check-prefixes=RV32I5; RUN: llc -mtriple=riscv32 -mattr=+experimental-xqcicli -verify-machineinstrs < %s \6; RUN: | FileCheck %s --check-prefixes=RV32IXQCICLI7; RUN: llc -mtriple=riscv32 -mattr=+experimental-xqcicm,+experimental-xqcics,+experimental-xqcicli,+zca,+short-forward-branch-ialu,+conditional-cmv-fusion -verify-machineinstrs < %s \8; RUN: | FileCheck %s --check-prefixes=RV32IXQCI9 10define i32 @select_cc_example_eq(i32 %a, i32 %b, i32 %x, i32 %y) {11; RV32I-LABEL: select_cc_example_eq:12; RV32I: # %bb.0: # %entry13; RV32I-NEXT: bne a1, a2, .LBB0_214; RV32I-NEXT: # %bb.1: # %entry15; RV32I-NEXT: li a0, 1116; RV32I-NEXT: .LBB0_2: # %entry17; RV32I-NEXT: ret18;19; RV32IXQCICLI-LABEL: select_cc_example_eq:20; RV32IXQCICLI: # %bb.0: # %entry21; RV32IXQCICLI-NEXT: qc.lieq a0, a1, a2, 1122; RV32IXQCICLI-NEXT: ret23;24; RV32IXQCI-LABEL: select_cc_example_eq:25; RV32IXQCI: # %bb.0: # %entry26; RV32IXQCI-NEXT: qc.selectine a1, a2, a0, 1127; RV32IXQCI-NEXT: mv a0, a128; RV32IXQCI-NEXT: ret29entry:30 %cmp = icmp eq i32 %b, %x31 %sel = select i1 %cmp, i32 11, i32 %a32 ret i32 %sel33}34 35define i32 @select_cc_example_ne(i32 %a, i32 %b, i32 %x, i32 %y) {36; RV32I-LABEL: select_cc_example_ne:37; RV32I: # %bb.0: # %entry38; RV32I-NEXT: beq a1, a2, .LBB1_239; RV32I-NEXT: # %bb.1: # %entry40; RV32I-NEXT: li a0, 1141; RV32I-NEXT: .LBB1_2: # %entry42; RV32I-NEXT: ret43;44; RV32IXQCICLI-LABEL: select_cc_example_ne:45; RV32IXQCICLI: # %bb.0: # %entry46; RV32IXQCICLI-NEXT: qc.line a0, a1, a2, 1147; RV32IXQCICLI-NEXT: ret48;49; RV32IXQCI-LABEL: select_cc_example_ne:50; RV32IXQCI: # %bb.0: # %entry51; RV32IXQCI-NEXT: qc.selectieq a1, a2, a0, 1152; RV32IXQCI-NEXT: mv a0, a153; RV32IXQCI-NEXT: ret54entry:55 %cmp = icmp ne i32 %b, %x56 %sel = select i1 %cmp, i32 11, i32 %a57 ret i32 %sel58}59 60define i32 @select_cc_example_slt(i32 %a, i32 %b, i32 %x, i32 %y) {61; RV32I-LABEL: select_cc_example_slt:62; RV32I: # %bb.0: # %entry63; RV32I-NEXT: bge a1, a2, .LBB2_264; RV32I-NEXT: # %bb.1: # %entry65; RV32I-NEXT: li a0, 1166; RV32I-NEXT: .LBB2_2: # %entry67; RV32I-NEXT: ret68;69; RV32IXQCICLI-LABEL: select_cc_example_slt:70; RV32IXQCICLI: # %bb.0: # %entry71; RV32IXQCICLI-NEXT: qc.lilt a0, a1, a2, 1172; RV32IXQCICLI-NEXT: ret73;74; RV32IXQCI-LABEL: select_cc_example_slt:75; RV32IXQCI: # %bb.0: # %entry76; RV32IXQCI-NEXT: qc.lilt a0, a1, a2, 1177; RV32IXQCI-NEXT: ret78entry:79 %cmp = icmp slt i32 %b, %x80 %sel = select i1 %cmp, i32 11, i32 %a81 ret i32 %sel82}83 84define i32 @select_cc_example_sge(i32 %a, i32 %b, i32 %x, i32 %y) {85; RV32I-LABEL: select_cc_example_sge:86; RV32I: # %bb.0: # %entry87; RV32I-NEXT: blt a1, a2, .LBB3_288; RV32I-NEXT: # %bb.1: # %entry89; RV32I-NEXT: li a0, 1190; RV32I-NEXT: .LBB3_2: # %entry91; RV32I-NEXT: ret92;93; RV32IXQCICLI-LABEL: select_cc_example_sge:94; RV32IXQCICLI: # %bb.0: # %entry95; RV32IXQCICLI-NEXT: qc.lige a0, a1, a2, 1196; RV32IXQCICLI-NEXT: ret97;98; RV32IXQCI-LABEL: select_cc_example_sge:99; RV32IXQCI: # %bb.0: # %entry100; RV32IXQCI-NEXT: qc.lige a0, a1, a2, 11101; RV32IXQCI-NEXT: ret102entry:103 %cmp = icmp sge i32 %b, %x104 %sel = select i1 %cmp, i32 11, i32 %a105 ret i32 %sel106}107 108define i32 @select_cc_example_uge(i32 %a, i32 %b, i32 %x, i32 %y) {109; RV32I-LABEL: select_cc_example_uge:110; RV32I: # %bb.0: # %entry111; RV32I-NEXT: bltu a1, a2, .LBB4_2112; RV32I-NEXT: # %bb.1: # %entry113; RV32I-NEXT: li a0, 11114; RV32I-NEXT: .LBB4_2: # %entry115; RV32I-NEXT: ret116;117; RV32IXQCICLI-LABEL: select_cc_example_uge:118; RV32IXQCICLI: # %bb.0: # %entry119; RV32IXQCICLI-NEXT: qc.ligeu a0, a1, a2, 11120; RV32IXQCICLI-NEXT: ret121;122; RV32IXQCI-LABEL: select_cc_example_uge:123; RV32IXQCI: # %bb.0: # %entry124; RV32IXQCI-NEXT: qc.ligeu a0, a1, a2, 11125; RV32IXQCI-NEXT: ret126entry:127 %cmp = icmp uge i32 %b, %x128 %sel = select i1 %cmp, i32 11, i32 %a129 ret i32 %sel130}131 132define i32 @select_cc_example_ult(i32 %a, i32 %b, i32 %x, i32 %y) {133; RV32I-LABEL: select_cc_example_ult:134; RV32I: # %bb.0: # %entry135; RV32I-NEXT: bgeu a1, a2, .LBB5_2136; RV32I-NEXT: # %bb.1: # %entry137; RV32I-NEXT: li a0, 11138; RV32I-NEXT: .LBB5_2: # %entry139; RV32I-NEXT: ret140;141; RV32IXQCICLI-LABEL: select_cc_example_ult:142; RV32IXQCICLI: # %bb.0: # %entry143; RV32IXQCICLI-NEXT: qc.liltu a0, a1, a2, 11144; RV32IXQCICLI-NEXT: ret145;146; RV32IXQCI-LABEL: select_cc_example_ult:147; RV32IXQCI: # %bb.0: # %entry148; RV32IXQCI-NEXT: qc.liltu a0, a1, a2, 11149; RV32IXQCI-NEXT: ret150entry:151 %cmp = icmp ult i32 %b, %x152 %sel = select i1 %cmp, i32 11, i32 %a153 ret i32 %sel154}155 156define i32 @select_cc_example_eq_c(i32 %a, i32 %b, i32 %x, i32 %y) {157; RV32I-LABEL: select_cc_example_eq_c:158; RV32I: # %bb.0: # %entry159; RV32I-NEXT: beq a1, a2, .LBB6_2160; RV32I-NEXT: # %bb.1: # %entry161; RV32I-NEXT: li a0, 11162; RV32I-NEXT: .LBB6_2: # %entry163; RV32I-NEXT: ret164;165; RV32IXQCICLI-LABEL: select_cc_example_eq_c:166; RV32IXQCICLI: # %bb.0: # %entry167; RV32IXQCICLI-NEXT: qc.line a0, a1, a2, 11168; RV32IXQCICLI-NEXT: ret169;170; RV32IXQCI-LABEL: select_cc_example_eq_c:171; RV32IXQCI: # %bb.0: # %entry172; RV32IXQCI-NEXT: qc.selectieq a1, a2, a0, 11173; RV32IXQCI-NEXT: mv a0, a1174; RV32IXQCI-NEXT: ret175entry:176 %cmp = icmp eq i32 %b, %x177 %sel = select i1 %cmp, i32 %a, i32 11178 ret i32 %sel179}180 181define i32 @select_cc_example_ne_c(i32 %a, i32 %b, i32 %x, i32 %y) {182; RV32I-LABEL: select_cc_example_ne_c:183; RV32I: # %bb.0: # %entry184; RV32I-NEXT: bne a1, a2, .LBB7_2185; RV32I-NEXT: # %bb.1: # %entry186; RV32I-NEXT: li a0, 11187; RV32I-NEXT: .LBB7_2: # %entry188; RV32I-NEXT: ret189;190; RV32IXQCICLI-LABEL: select_cc_example_ne_c:191; RV32IXQCICLI: # %bb.0: # %entry192; RV32IXQCICLI-NEXT: qc.lieq a0, a1, a2, 11193; RV32IXQCICLI-NEXT: ret194;195; RV32IXQCI-LABEL: select_cc_example_ne_c:196; RV32IXQCI: # %bb.0: # %entry197; RV32IXQCI-NEXT: qc.selectine a1, a2, a0, 11198; RV32IXQCI-NEXT: mv a0, a1199; RV32IXQCI-NEXT: ret200entry:201 %cmp = icmp ne i32 %b, %x202 %sel = select i1 %cmp, i32 %a, i32 11203 ret i32 %sel204}205 206define i32 @select_cc_example_slt_c(i32 %a, i32 %b, i32 %x, i32 %y) {207; RV32I-LABEL: select_cc_example_slt_c:208; RV32I: # %bb.0: # %entry209; RV32I-NEXT: blt a1, a2, .LBB8_2210; RV32I-NEXT: # %bb.1: # %entry211; RV32I-NEXT: li a0, 11212; RV32I-NEXT: .LBB8_2: # %entry213; RV32I-NEXT: ret214;215; RV32IXQCICLI-LABEL: select_cc_example_slt_c:216; RV32IXQCICLI: # %bb.0: # %entry217; RV32IXQCICLI-NEXT: qc.lige a0, a1, a2, 11218; RV32IXQCICLI-NEXT: ret219;220; RV32IXQCI-LABEL: select_cc_example_slt_c:221; RV32IXQCI: # %bb.0: # %entry222; RV32IXQCI-NEXT: qc.lige a0, a1, a2, 11223; RV32IXQCI-NEXT: ret224entry:225 %cmp = icmp slt i32 %b, %x226 %sel = select i1 %cmp, i32 %a, i32 11227 ret i32 %sel228}229 230define i32 @select_cc_example_sge_c(i32 %a, i32 %b, i32 %x, i32 %y) {231; RV32I-LABEL: select_cc_example_sge_c:232; RV32I: # %bb.0: # %entry233; RV32I-NEXT: bge a1, a2, .LBB9_2234; RV32I-NEXT: # %bb.1: # %entry235; RV32I-NEXT: li a0, 11236; RV32I-NEXT: .LBB9_2: # %entry237; RV32I-NEXT: ret238;239; RV32IXQCICLI-LABEL: select_cc_example_sge_c:240; RV32IXQCICLI: # %bb.0: # %entry241; RV32IXQCICLI-NEXT: qc.lilt a0, a1, a2, 11242; RV32IXQCICLI-NEXT: ret243;244; RV32IXQCI-LABEL: select_cc_example_sge_c:245; RV32IXQCI: # %bb.0: # %entry246; RV32IXQCI-NEXT: qc.lilt a0, a1, a2, 11247; RV32IXQCI-NEXT: ret248entry:249 %cmp = icmp sge i32 %b, %x250 %sel = select i1 %cmp, i32 %a, i32 11251 ret i32 %sel252}253 254define i32 @select_cc_example_uge_c(i32 %a, i32 %b, i32 %x, i32 %y) {255; RV32I-LABEL: select_cc_example_uge_c:256; RV32I: # %bb.0: # %entry257; RV32I-NEXT: bgeu a1, a2, .LBB10_2258; RV32I-NEXT: # %bb.1: # %entry259; RV32I-NEXT: li a0, 11260; RV32I-NEXT: .LBB10_2: # %entry261; RV32I-NEXT: ret262;263; RV32IXQCICLI-LABEL: select_cc_example_uge_c:264; RV32IXQCICLI: # %bb.0: # %entry265; RV32IXQCICLI-NEXT: qc.liltu a0, a1, a2, 11266; RV32IXQCICLI-NEXT: ret267;268; RV32IXQCI-LABEL: select_cc_example_uge_c:269; RV32IXQCI: # %bb.0: # %entry270; RV32IXQCI-NEXT: qc.liltu a0, a1, a2, 11271; RV32IXQCI-NEXT: ret272entry:273 %cmp = icmp uge i32 %b, %x274 %sel = select i1 %cmp, i32 %a, i32 11275 ret i32 %sel276}277 278define i32 @select_cc_example_ult_c(i32 %a, i32 %b, i32 %x, i32 %y) {279; RV32I-LABEL: select_cc_example_ult_c:280; RV32I: # %bb.0: # %entry281; RV32I-NEXT: bltu a1, a2, .LBB11_2282; RV32I-NEXT: # %bb.1: # %entry283; RV32I-NEXT: li a0, 11284; RV32I-NEXT: .LBB11_2: # %entry285; RV32I-NEXT: ret286;287; RV32IXQCICLI-LABEL: select_cc_example_ult_c:288; RV32IXQCICLI: # %bb.0: # %entry289; RV32IXQCICLI-NEXT: qc.ligeu a0, a1, a2, 11290; RV32IXQCICLI-NEXT: ret291;292; RV32IXQCI-LABEL: select_cc_example_ult_c:293; RV32IXQCI: # %bb.0: # %entry294; RV32IXQCI-NEXT: qc.ligeu a0, a1, a2, 11295; RV32IXQCI-NEXT: ret296entry:297 %cmp = icmp ult i32 %b, %x298 %sel = select i1 %cmp, i32 %a, i32 11299 ret i32 %sel300}301 302define i32 @select_cc_example_eqi(i32 %a, i32 %b, i32 %x, i32 %y) {303; RV32I-LABEL: select_cc_example_eqi:304; RV32I: # %bb.0: # %entry305; RV32I-NEXT: li a2, 12306; RV32I-NEXT: bne a1, a2, .LBB12_2307; RV32I-NEXT: # %bb.1: # %entry308; RV32I-NEXT: li a0, 11309; RV32I-NEXT: .LBB12_2: # %entry310; RV32I-NEXT: ret311;312; RV32IXQCICLI-LABEL: select_cc_example_eqi:313; RV32IXQCICLI: # %bb.0: # %entry314; RV32IXQCICLI-NEXT: qc.lieqi a0, a1, 12, 11315; RV32IXQCICLI-NEXT: ret316;317; RV32IXQCI-LABEL: select_cc_example_eqi:318; RV32IXQCI: # %bb.0: # %entry319; RV32IXQCI-NEXT: qc.selectinei a1, 12, a0, 11320; RV32IXQCI-NEXT: mv a0, a1321; RV32IXQCI-NEXT: ret322entry:323 %cmp = icmp eq i32 %b, 12324 %sel = select i1 %cmp, i32 11, i32 %a325 ret i32 %sel326}327 328define i32 @select_cc_example_nei(i32 %a, i32 %b, i32 %x, i32 %y) {329; RV32I-LABEL: select_cc_example_nei:330; RV32I: # %bb.0: # %entry331; RV32I-NEXT: li a2, 12332; RV32I-NEXT: beq a1, a2, .LBB13_2333; RV32I-NEXT: # %bb.1: # %entry334; RV32I-NEXT: li a0, 11335; RV32I-NEXT: .LBB13_2: # %entry336; RV32I-NEXT: ret337;338; RV32IXQCICLI-LABEL: select_cc_example_nei:339; RV32IXQCICLI: # %bb.0: # %entry340; RV32IXQCICLI-NEXT: qc.linei a0, a1, 12, 11341; RV32IXQCICLI-NEXT: ret342;343; RV32IXQCI-LABEL: select_cc_example_nei:344; RV32IXQCI: # %bb.0: # %entry345; RV32IXQCI-NEXT: qc.selectieqi a1, 12, a0, 11346; RV32IXQCI-NEXT: mv a0, a1347; RV32IXQCI-NEXT: ret348entry:349 %cmp = icmp ne i32 %b, 12350 %sel = select i1 %cmp, i32 11, i32 %a351 ret i32 %sel352}353 354define i32 @select_cc_example_slti(i32 %a, i32 %b, i32 %x, i32 %y) {355; RV32I-LABEL: select_cc_example_slti:356; RV32I: # %bb.0: # %entry357; RV32I-NEXT: li a2, 12358; RV32I-NEXT: bge a1, a2, .LBB14_2359; RV32I-NEXT: # %bb.1: # %entry360; RV32I-NEXT: li a0, 11361; RV32I-NEXT: .LBB14_2: # %entry362; RV32I-NEXT: ret363;364; RV32IXQCICLI-LABEL: select_cc_example_slti:365; RV32IXQCICLI: # %bb.0: # %entry366; RV32IXQCICLI-NEXT: qc.lilti a0, a1, 12, 11367; RV32IXQCICLI-NEXT: ret368;369; RV32IXQCI-LABEL: select_cc_example_slti:370; RV32IXQCI: # %bb.0: # %entry371; RV32IXQCI-NEXT: qc.lilti a0, a1, 12, 11372; RV32IXQCI-NEXT: ret373entry:374 %cmp = icmp slt i32 %b, 12375 %sel = select i1 %cmp, i32 11, i32 %a376 ret i32 %sel377}378 379define i32 @select_cc_example_sgei(i32 %a, i32 %b, i32 %x, i32 %y) {380; RV32I-LABEL: select_cc_example_sgei:381; RV32I: # %bb.0: # %entry382; RV32I-NEXT: li a2, 11383; RV32I-NEXT: bge a2, a1, .LBB15_2384; RV32I-NEXT: # %bb.1: # %entry385; RV32I-NEXT: li a0, 11386; RV32I-NEXT: .LBB15_2: # %entry387; RV32I-NEXT: ret388;389; RV32IXQCICLI-LABEL: select_cc_example_sgei:390; RV32IXQCICLI: # %bb.0: # %entry391; RV32IXQCICLI-NEXT: qc.ligei a0, a1, 12, 11392; RV32IXQCICLI-NEXT: ret393;394; RV32IXQCI-LABEL: select_cc_example_sgei:395; RV32IXQCI: # %bb.0: # %entry396; RV32IXQCI-NEXT: qc.ligei a0, a1, 12, 11397; RV32IXQCI-NEXT: ret398entry:399 %cmp = icmp sge i32 %b, 12400 %sel = select i1 %cmp, i32 11, i32 %a401 ret i32 %sel402}403 404define i32 @select_cc_example_ulti(i32 %a, i32 %b, i32 %x, i32 %y) {405; RV32I-LABEL: select_cc_example_ulti:406; RV32I: # %bb.0: # %entry407; RV32I-NEXT: li a2, 12408; RV32I-NEXT: bgeu a1, a2, .LBB16_2409; RV32I-NEXT: # %bb.1: # %entry410; RV32I-NEXT: li a0, 11411; RV32I-NEXT: .LBB16_2: # %entry412; RV32I-NEXT: ret413;414; RV32IXQCICLI-LABEL: select_cc_example_ulti:415; RV32IXQCICLI: # %bb.0: # %entry416; RV32IXQCICLI-NEXT: qc.liltui a0, a1, 12, 11417; RV32IXQCICLI-NEXT: ret418;419; RV32IXQCI-LABEL: select_cc_example_ulti:420; RV32IXQCI: # %bb.0: # %entry421; RV32IXQCI-NEXT: qc.liltui a0, a1, 12, 11422; RV32IXQCI-NEXT: ret423entry:424 %cmp = icmp ult i32 %b, 12425 %sel = select i1 %cmp, i32 11, i32 %a426 ret i32 %sel427}428 429define i32 @select_cc_example_ugei(i32 %a, i32 %b, i32 %x, i32 %y) {430; RV32I-LABEL: select_cc_example_ugei:431; RV32I: # %bb.0: # %entry432; RV32I-NEXT: li a2, 11433; RV32I-NEXT: bgeu a2, a1, .LBB17_2434; RV32I-NEXT: # %bb.1: # %entry435; RV32I-NEXT: li a0, 11436; RV32I-NEXT: .LBB17_2: # %entry437; RV32I-NEXT: ret438;439; RV32IXQCICLI-LABEL: select_cc_example_ugei:440; RV32IXQCICLI: # %bb.0: # %entry441; RV32IXQCICLI-NEXT: qc.ligeui a0, a1, 12, 11442; RV32IXQCICLI-NEXT: ret443;444; RV32IXQCI-LABEL: select_cc_example_ugei:445; RV32IXQCI: # %bb.0: # %entry446; RV32IXQCI-NEXT: qc.ligeui a0, a1, 12, 11447; RV32IXQCI-NEXT: ret448entry:449 %cmp = icmp uge i32 %b, 12450 %sel = select i1 %cmp, i32 11, i32 %a451 ret i32 %sel452}453 454define i32 @select_cc_example_eqi_c1(i32 %a, i32 %b, i32 %x, i32 %y) {455; RV32I-LABEL: select_cc_example_eqi_c1:456; RV32I: # %bb.0: # %entry457; RV32I-NEXT: li a2, 12458; RV32I-NEXT: bne a1, a2, .LBB18_2459; RV32I-NEXT: # %bb.1: # %entry460; RV32I-NEXT: li a0, 11461; RV32I-NEXT: .LBB18_2: # %entry462; RV32I-NEXT: ret463;464; RV32IXQCICLI-LABEL: select_cc_example_eqi_c1:465; RV32IXQCICLI: # %bb.0: # %entry466; RV32IXQCICLI-NEXT: qc.lieqi a0, a1, 12, 11467; RV32IXQCICLI-NEXT: ret468;469; RV32IXQCI-LABEL: select_cc_example_eqi_c1:470; RV32IXQCI: # %bb.0: # %entry471; RV32IXQCI-NEXT: qc.selectinei a1, 12, a0, 11472; RV32IXQCI-NEXT: mv a0, a1473; RV32IXQCI-NEXT: ret474entry:475 %cmp = icmp eq i32 12, %b476 %sel = select i1 %cmp, i32 11, i32 %a477 ret i32 %sel478}479 480define i32 @select_cc_example_nei_c1(i32 %a, i32 %b, i32 %x, i32 %y) {481; RV32I-LABEL: select_cc_example_nei_c1:482; RV32I: # %bb.0: # %entry483; RV32I-NEXT: li a2, 12484; RV32I-NEXT: beq a1, a2, .LBB19_2485; RV32I-NEXT: # %bb.1: # %entry486; RV32I-NEXT: li a0, 11487; RV32I-NEXT: .LBB19_2: # %entry488; RV32I-NEXT: ret489;490; RV32IXQCICLI-LABEL: select_cc_example_nei_c1:491; RV32IXQCICLI: # %bb.0: # %entry492; RV32IXQCICLI-NEXT: qc.linei a0, a1, 12, 11493; RV32IXQCICLI-NEXT: ret494;495; RV32IXQCI-LABEL: select_cc_example_nei_c1:496; RV32IXQCI: # %bb.0: # %entry497; RV32IXQCI-NEXT: qc.selectieqi a1, 12, a0, 11498; RV32IXQCI-NEXT: mv a0, a1499; RV32IXQCI-NEXT: ret500entry:501 %cmp = icmp ne i32 12, %b502 %sel = select i1 %cmp, i32 11, i32 %a503 ret i32 %sel504}505 506define i32 @select_cc_example_slti_c1(i32 %a, i32 %b, i32 %x, i32 %y) {507; RV32I-LABEL: select_cc_example_slti_c1:508; RV32I: # %bb.0: # %entry509; RV32I-NEXT: li a2, 12510; RV32I-NEXT: bge a2, a1, .LBB20_2511; RV32I-NEXT: # %bb.1: # %entry512; RV32I-NEXT: li a0, 11513; RV32I-NEXT: .LBB20_2: # %entry514; RV32I-NEXT: ret515;516; RV32IXQCICLI-LABEL: select_cc_example_slti_c1:517; RV32IXQCICLI: # %bb.0: # %entry518; RV32IXQCICLI-NEXT: qc.ligei a0, a1, 13, 11519; RV32IXQCICLI-NEXT: ret520;521; RV32IXQCI-LABEL: select_cc_example_slti_c1:522; RV32IXQCI: # %bb.0: # %entry523; RV32IXQCI-NEXT: qc.ligei a0, a1, 13, 11524; RV32IXQCI-NEXT: ret525entry:526 %cmp = icmp slt i32 12, %b527 %sel = select i1 %cmp, i32 11, i32 %a528 ret i32 %sel529}530 531define i32 @select_cc_example_sgei_c1(i32 %a, i32 %b, i32 %x, i32 %y) {532; RV32I-LABEL: select_cc_example_sgei_c1:533; RV32I: # %bb.0: # %entry534; RV32I-NEXT: li a2, 13535; RV32I-NEXT: bge a1, a2, .LBB21_2536; RV32I-NEXT: # %bb.1: # %entry537; RV32I-NEXT: li a0, 11538; RV32I-NEXT: .LBB21_2: # %entry539; RV32I-NEXT: ret540;541; RV32IXQCICLI-LABEL: select_cc_example_sgei_c1:542; RV32IXQCICLI: # %bb.0: # %entry543; RV32IXQCICLI-NEXT: qc.lilti a0, a1, 13, 11544; RV32IXQCICLI-NEXT: ret545;546; RV32IXQCI-LABEL: select_cc_example_sgei_c1:547; RV32IXQCI: # %bb.0: # %entry548; RV32IXQCI-NEXT: qc.lilti a0, a1, 13, 11549; RV32IXQCI-NEXT: ret550entry:551 %cmp = icmp sge i32 12, %b552 %sel = select i1 %cmp, i32 11, i32 %a553 ret i32 %sel554}555 556define i32 @select_cc_example_ulti_c1(i32 %a, i32 %b, i32 %x, i32 %y) {557; RV32I-LABEL: select_cc_example_ulti_c1:558; RV32I: # %bb.0: # %entry559; RV32I-NEXT: li a2, 12560; RV32I-NEXT: bgeu a2, a1, .LBB22_2561; RV32I-NEXT: # %bb.1: # %entry562; RV32I-NEXT: li a0, 11563; RV32I-NEXT: .LBB22_2: # %entry564; RV32I-NEXT: ret565;566; RV32IXQCICLI-LABEL: select_cc_example_ulti_c1:567; RV32IXQCICLI: # %bb.0: # %entry568; RV32IXQCICLI-NEXT: qc.ligeui a0, a1, 13, 11569; RV32IXQCICLI-NEXT: ret570;571; RV32IXQCI-LABEL: select_cc_example_ulti_c1:572; RV32IXQCI: # %bb.0: # %entry573; RV32IXQCI-NEXT: qc.ligeui a0, a1, 13, 11574; RV32IXQCI-NEXT: ret575entry:576 %cmp = icmp ult i32 12, %b577 %sel = select i1 %cmp, i32 11, i32 %a578 ret i32 %sel579}580 581define i32 @select_cc_example_ugei_c1(i32 %a, i32 %b, i32 %x, i32 %y) {582; RV32I-LABEL: select_cc_example_ugei_c1:583; RV32I: # %bb.0: # %entry584; RV32I-NEXT: li a2, 13585; RV32I-NEXT: bgeu a1, a2, .LBB23_2586; RV32I-NEXT: # %bb.1: # %entry587; RV32I-NEXT: li a0, 11588; RV32I-NEXT: .LBB23_2: # %entry589; RV32I-NEXT: ret590;591; RV32IXQCICLI-LABEL: select_cc_example_ugei_c1:592; RV32IXQCICLI: # %bb.0: # %entry593; RV32IXQCICLI-NEXT: qc.liltui a0, a1, 13, 11594; RV32IXQCICLI-NEXT: ret595;596; RV32IXQCI-LABEL: select_cc_example_ugei_c1:597; RV32IXQCI: # %bb.0: # %entry598; RV32IXQCI-NEXT: qc.liltui a0, a1, 13, 11599; RV32IXQCI-NEXT: ret600entry:601 %cmp = icmp uge i32 12, %b602 %sel = select i1 %cmp, i32 11, i32 %a603 ret i32 %sel604}605 606define i32 @select_cc_example_eqi_c2(i32 %a, i32 %b, i32 %x, i32 %y) {607; RV32I-LABEL: select_cc_example_eqi_c2:608; RV32I: # %bb.0: # %entry609; RV32I-NEXT: li a2, 12610; RV32I-NEXT: beq a1, a2, .LBB24_2611; RV32I-NEXT: # %bb.1: # %entry612; RV32I-NEXT: li a0, 11613; RV32I-NEXT: .LBB24_2: # %entry614; RV32I-NEXT: ret615;616; RV32IXQCICLI-LABEL: select_cc_example_eqi_c2:617; RV32IXQCICLI: # %bb.0: # %entry618; RV32IXQCICLI-NEXT: qc.linei a0, a1, 12, 11619; RV32IXQCICLI-NEXT: ret620;621; RV32IXQCI-LABEL: select_cc_example_eqi_c2:622; RV32IXQCI: # %bb.0: # %entry623; RV32IXQCI-NEXT: qc.selectieqi a1, 12, a0, 11624; RV32IXQCI-NEXT: mv a0, a1625; RV32IXQCI-NEXT: ret626entry:627 %cmp = icmp eq i32 12, %b628 %sel = select i1 %cmp, i32 %a, i32 11629 ret i32 %sel630}631 632define i32 @select_cc_example_nei_c2(i32 %a, i32 %b, i32 %x, i32 %y) {633; RV32I-LABEL: select_cc_example_nei_c2:634; RV32I: # %bb.0: # %entry635; RV32I-NEXT: li a2, 12636; RV32I-NEXT: bne a1, a2, .LBB25_2637; RV32I-NEXT: # %bb.1: # %entry638; RV32I-NEXT: li a0, 11639; RV32I-NEXT: .LBB25_2: # %entry640; RV32I-NEXT: ret641;642; RV32IXQCICLI-LABEL: select_cc_example_nei_c2:643; RV32IXQCICLI: # %bb.0: # %entry644; RV32IXQCICLI-NEXT: qc.lieqi a0, a1, 12, 11645; RV32IXQCICLI-NEXT: ret646;647; RV32IXQCI-LABEL: select_cc_example_nei_c2:648; RV32IXQCI: # %bb.0: # %entry649; RV32IXQCI-NEXT: qc.selectinei a1, 12, a0, 11650; RV32IXQCI-NEXT: mv a0, a1651; RV32IXQCI-NEXT: ret652entry:653 %cmp = icmp ne i32 12, %b654 %sel = select i1 %cmp, i32 %a, i32 11655 ret i32 %sel656}657 658define i32 @select_cc_example_slti_c2(i32 %a, i32 %b, i32 %x, i32 %y) {659; RV32I-LABEL: select_cc_example_slti_c2:660; RV32I: # %bb.0: # %entry661; RV32I-NEXT: li a2, 12662; RV32I-NEXT: blt a2, a1, .LBB26_2663; RV32I-NEXT: # %bb.1: # %entry664; RV32I-NEXT: li a0, 11665; RV32I-NEXT: .LBB26_2: # %entry666; RV32I-NEXT: ret667;668; RV32IXQCICLI-LABEL: select_cc_example_slti_c2:669; RV32IXQCICLI: # %bb.0: # %entry670; RV32IXQCICLI-NEXT: qc.lilti a0, a1, 13, 11671; RV32IXQCICLI-NEXT: ret672;673; RV32IXQCI-LABEL: select_cc_example_slti_c2:674; RV32IXQCI: # %bb.0: # %entry675; RV32IXQCI-NEXT: qc.lilti a0, a1, 13, 11676; RV32IXQCI-NEXT: ret677entry:678 %cmp = icmp slt i32 12, %b679 %sel = select i1 %cmp, i32 %a, i32 11680 ret i32 %sel681}682 683define i32 @select_cc_example_sgei_c2(i32 %a, i32 %b, i32 %x, i32 %y) {684; RV32I-LABEL: select_cc_example_sgei_c2:685; RV32I: # %bb.0: # %entry686; RV32I-NEXT: li a2, 13687; RV32I-NEXT: blt a1, a2, .LBB27_2688; RV32I-NEXT: # %bb.1: # %entry689; RV32I-NEXT: li a0, 11690; RV32I-NEXT: .LBB27_2: # %entry691; RV32I-NEXT: ret692;693; RV32IXQCICLI-LABEL: select_cc_example_sgei_c2:694; RV32IXQCICLI: # %bb.0: # %entry695; RV32IXQCICLI-NEXT: qc.ligei a0, a1, 13, 11696; RV32IXQCICLI-NEXT: ret697;698; RV32IXQCI-LABEL: select_cc_example_sgei_c2:699; RV32IXQCI: # %bb.0: # %entry700; RV32IXQCI-NEXT: qc.ligei a0, a1, 13, 11701; RV32IXQCI-NEXT: ret702entry:703 %cmp = icmp sge i32 12, %b704 %sel = select i1 %cmp, i32 %a, i32 11705 ret i32 %sel706}707 708define i32 @select_cc_example_ulti_c2(i32 %a, i32 %b, i32 %x, i32 %y) {709; RV32I-LABEL: select_cc_example_ulti_c2:710; RV32I: # %bb.0: # %entry711; RV32I-NEXT: li a2, 12712; RV32I-NEXT: bltu a2, a1, .LBB28_2713; RV32I-NEXT: # %bb.1: # %entry714; RV32I-NEXT: li a0, 11715; RV32I-NEXT: .LBB28_2: # %entry716; RV32I-NEXT: ret717;718; RV32IXQCICLI-LABEL: select_cc_example_ulti_c2:719; RV32IXQCICLI: # %bb.0: # %entry720; RV32IXQCICLI-NEXT: qc.liltui a0, a1, 13, 11721; RV32IXQCICLI-NEXT: ret722;723; RV32IXQCI-LABEL: select_cc_example_ulti_c2:724; RV32IXQCI: # %bb.0: # %entry725; RV32IXQCI-NEXT: qc.liltui a0, a1, 13, 11726; RV32IXQCI-NEXT: ret727entry:728 %cmp = icmp ult i32 12, %b729 %sel = select i1 %cmp, i32 %a, i32 11730 ret i32 %sel731}732 733define i32 @select_cc_example_ugei_c2(i32 %a, i32 %b, i32 %x, i32 %y) {734; RV32I-LABEL: select_cc_example_ugei_c2:735; RV32I: # %bb.0: # %entry736; RV32I-NEXT: li a2, 13737; RV32I-NEXT: bltu a1, a2, .LBB29_2738; RV32I-NEXT: # %bb.1: # %entry739; RV32I-NEXT: li a0, 11740; RV32I-NEXT: .LBB29_2: # %entry741; RV32I-NEXT: ret742;743; RV32IXQCICLI-LABEL: select_cc_example_ugei_c2:744; RV32IXQCICLI: # %bb.0: # %entry745; RV32IXQCICLI-NEXT: qc.ligeui a0, a1, 13, 11746; RV32IXQCICLI-NEXT: ret747;748; RV32IXQCI-LABEL: select_cc_example_ugei_c2:749; RV32IXQCI: # %bb.0: # %entry750; RV32IXQCI-NEXT: qc.ligeui a0, a1, 13, 11751; RV32IXQCI-NEXT: ret752entry:753 %cmp = icmp uge i32 12, %b754 %sel = select i1 %cmp, i32 %a, i32 11755 ret i32 %sel756}757 758define i32 @select_cc_example_eqi_c3(i32 %a, i32 %b, i32 %x, i32 %y) {759; RV32I-LABEL: select_cc_example_eqi_c3:760; RV32I: # %bb.0: # %entry761; RV32I-NEXT: li a2, 12762; RV32I-NEXT: beq a1, a2, .LBB30_2763; RV32I-NEXT: # %bb.1: # %entry764; RV32I-NEXT: li a0, 11765; RV32I-NEXT: .LBB30_2: # %entry766; RV32I-NEXT: ret767;768; RV32IXQCICLI-LABEL: select_cc_example_eqi_c3:769; RV32IXQCICLI: # %bb.0: # %entry770; RV32IXQCICLI-NEXT: qc.linei a0, a1, 12, 11771; RV32IXQCICLI-NEXT: ret772;773; RV32IXQCI-LABEL: select_cc_example_eqi_c3:774; RV32IXQCI: # %bb.0: # %entry775; RV32IXQCI-NEXT: qc.selectieqi a1, 12, a0, 11776; RV32IXQCI-NEXT: mv a0, a1777; RV32IXQCI-NEXT: ret778entry:779 %cmp = icmp eq i32 %b, 12780 %sel = select i1 %cmp, i32 %a, i32 11781 ret i32 %sel782}783 784define i32 @select_cc_example_nei_c3(i32 %a, i32 %b, i32 %x, i32 %y) {785; RV32I-LABEL: select_cc_example_nei_c3:786; RV32I: # %bb.0: # %entry787; RV32I-NEXT: li a2, 12788; RV32I-NEXT: bne a1, a2, .LBB31_2789; RV32I-NEXT: # %bb.1: # %entry790; RV32I-NEXT: li a0, 11791; RV32I-NEXT: .LBB31_2: # %entry792; RV32I-NEXT: ret793;794; RV32IXQCICLI-LABEL: select_cc_example_nei_c3:795; RV32IXQCICLI: # %bb.0: # %entry796; RV32IXQCICLI-NEXT: qc.lieqi a0, a1, 12, 11797; RV32IXQCICLI-NEXT: ret798;799; RV32IXQCI-LABEL: select_cc_example_nei_c3:800; RV32IXQCI: # %bb.0: # %entry801; RV32IXQCI-NEXT: qc.selectinei a1, 12, a0, 11802; RV32IXQCI-NEXT: mv a0, a1803; RV32IXQCI-NEXT: ret804entry:805 %cmp = icmp ne i32 %b, 12806 %sel = select i1 %cmp, i32 %a, i32 11807 ret i32 %sel808}809 810define i32 @select_cc_example_slti_c3(i32 %a, i32 %b, i32 %x, i32 %y) {811; RV32I-LABEL: select_cc_example_slti_c3:812; RV32I: # %bb.0: # %entry813; RV32I-NEXT: li a2, 12814; RV32I-NEXT: blt a1, a2, .LBB32_2815; RV32I-NEXT: # %bb.1: # %entry816; RV32I-NEXT: li a0, 11817; RV32I-NEXT: .LBB32_2: # %entry818; RV32I-NEXT: ret819;820; RV32IXQCICLI-LABEL: select_cc_example_slti_c3:821; RV32IXQCICLI: # %bb.0: # %entry822; RV32IXQCICLI-NEXT: qc.ligei a0, a1, 12, 11823; RV32IXQCICLI-NEXT: ret824;825; RV32IXQCI-LABEL: select_cc_example_slti_c3:826; RV32IXQCI: # %bb.0: # %entry827; RV32IXQCI-NEXT: qc.ligei a0, a1, 12, 11828; RV32IXQCI-NEXT: ret829entry:830 %cmp = icmp slt i32 %b, 12831 %sel = select i1 %cmp, i32 %a, i32 11832 ret i32 %sel833}834 835define i32 @select_cc_example_sgei_c3(i32 %a, i32 %b, i32 %x, i32 %y) {836; RV32I-LABEL: select_cc_example_sgei_c3:837; RV32I: # %bb.0: # %entry838; RV32I-NEXT: li a2, 11839; RV32I-NEXT: blt a2, a1, .LBB33_2840; RV32I-NEXT: # %bb.1: # %entry841; RV32I-NEXT: li a0, 11842; RV32I-NEXT: .LBB33_2: # %entry843; RV32I-NEXT: ret844;845; RV32IXQCICLI-LABEL: select_cc_example_sgei_c3:846; RV32IXQCICLI: # %bb.0: # %entry847; RV32IXQCICLI-NEXT: qc.lilti a0, a1, 12, 11848; RV32IXQCICLI-NEXT: ret849;850; RV32IXQCI-LABEL: select_cc_example_sgei_c3:851; RV32IXQCI: # %bb.0: # %entry852; RV32IXQCI-NEXT: qc.lilti a0, a1, 12, 11853; RV32IXQCI-NEXT: ret854entry:855 %cmp = icmp sge i32 %b, 12856 %sel = select i1 %cmp, i32 %a, i32 11857 ret i32 %sel858}859 860define i32 @select_cc_example_ulti_c3(i32 %a, i32 %b, i32 %x, i32 %y) {861; RV32I-LABEL: select_cc_example_ulti_c3:862; RV32I: # %bb.0: # %entry863; RV32I-NEXT: li a2, 12864; RV32I-NEXT: bltu a1, a2, .LBB34_2865; RV32I-NEXT: # %bb.1: # %entry866; RV32I-NEXT: li a0, 11867; RV32I-NEXT: .LBB34_2: # %entry868; RV32I-NEXT: ret869;870; RV32IXQCICLI-LABEL: select_cc_example_ulti_c3:871; RV32IXQCICLI: # %bb.0: # %entry872; RV32IXQCICLI-NEXT: qc.ligeui a0, a1, 12, 11873; RV32IXQCICLI-NEXT: ret874;875; RV32IXQCI-LABEL: select_cc_example_ulti_c3:876; RV32IXQCI: # %bb.0: # %entry877; RV32IXQCI-NEXT: qc.ligeui a0, a1, 12, 11878; RV32IXQCI-NEXT: ret879entry:880 %cmp = icmp ult i32 %b, 12881 %sel = select i1 %cmp, i32 %a, i32 11882 ret i32 %sel883}884 885define i32 @select_cc_example_ugei_c3(i32 %a, i32 %b, i32 %x, i32 %y) {886; RV32I-LABEL: select_cc_example_ugei_c3:887; RV32I: # %bb.0: # %entry888; RV32I-NEXT: li a2, 11889; RV32I-NEXT: bltu a2, a1, .LBB35_2890; RV32I-NEXT: # %bb.1: # %entry891; RV32I-NEXT: li a0, 11892; RV32I-NEXT: .LBB35_2: # %entry893; RV32I-NEXT: ret894;895; RV32IXQCICLI-LABEL: select_cc_example_ugei_c3:896; RV32IXQCICLI: # %bb.0: # %entry897; RV32IXQCICLI-NEXT: qc.liltui a0, a1, 12, 11898; RV32IXQCICLI-NEXT: ret899;900; RV32IXQCI-LABEL: select_cc_example_ugei_c3:901; RV32IXQCI: # %bb.0: # %entry902; RV32IXQCI-NEXT: qc.liltui a0, a1, 12, 11903; RV32IXQCI-NEXT: ret904entry:905 %cmp = icmp uge i32 %b, 12906 %sel = select i1 %cmp, i32 %a, i32 11907 ret i32 %sel908}909 910