brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.6 KiB · 229ef67 Raw
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