brintos

brintos / llvm-project-archived public Read only

0
0
Text · 23.9 KiB · 1232266 Raw
803 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 Xqcics instructions3; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \4; RUN:   | FileCheck %s --check-prefixes=RV32I5; RUN: llc -mtriple=riscv32 -mattr=+experimental-xqcics -verify-machineinstrs < %s \6; RUN:   | FileCheck %s --check-prefixes=RV32IXQCICS7; RUN: llc -mtriple=riscv32 -mattr=+experimental-xqcics,+experimental-xqcicm -verify-machineinstrs < %s \8; RUN:   | FileCheck %s --check-prefixes=RV32IXQCICM9; RUN: llc -mtriple=riscv32 -mattr=+experimental-xqcicm,+experimental-xqcics,+experimental-xqcicli,+zca,+short-forward-branch-ialu,+conditional-cmv-fusion -verify-machineinstrs < %s \10; RUN:   | FileCheck %s --check-prefixes=RV32IXQCI11 12define i32 @select_cc_example_eq_s1(i32 %a, i32 %b, i32 %x, i32 %y) {13; RV32I-LABEL: select_cc_example_eq_s1:14; RV32I:       # %bb.0: # %entry15; RV32I-NEXT:    andi a1, a0, 116; RV32I-NEXT:    mv a0, a217; RV32I-NEXT:    bnez a1, .LBB0_218; RV32I-NEXT:  # %bb.1: # %entry19; RV32I-NEXT:    li a0, 1220; RV32I-NEXT:  .LBB0_2: # %entry21; RV32I-NEXT:    ret22;23; RV32IXQCICS-LABEL: select_cc_example_eq_s1:24; RV32IXQCICS:       # %bb.0: # %entry25; RV32IXQCICS-NEXT:    andi a0, a0, 126; RV32IXQCICS-NEXT:    qc.selectinei a0, 0, a2, 1227; RV32IXQCICS-NEXT:    ret28;29; RV32IXQCICM-LABEL: select_cc_example_eq_s1:30; RV32IXQCICM:       # %bb.0: # %entry31; RV32IXQCICM-NEXT:    andi a0, a0, 132; RV32IXQCICM-NEXT:    qc.selectinei a0, 0, a2, 1233; RV32IXQCICM-NEXT:    ret34;35; RV32IXQCI-LABEL: select_cc_example_eq_s1:36; RV32IXQCI:       # %bb.0: # %entry37; RV32IXQCI-NEXT:    andi a0, a0, 138; RV32IXQCI-NEXT:    qc.selectinei a0, 0, a2, 1239; RV32IXQCI-NEXT:    ret40entry:41  %cond_trunc = trunc i32 %a to i142  %sel = select i1 %cond_trunc, i32 %x, i32 1243  ret i32 %sel44}45 46define i32 @select_cc_example_eq_s2(i32 %a, i32 %b, i32 %x, i32 %y) {47; RV32I-LABEL: select_cc_example_eq_s2:48; RV32I:       # %bb.0: # %entry49; RV32I-NEXT:    andi a1, a0, 150; RV32I-NEXT:    bnez a1, .LBB1_251; RV32I-NEXT:  # %bb.1: # %entry52; RV32I-NEXT:    mv a0, a253; RV32I-NEXT:    ret54; RV32I-NEXT:  .LBB1_2:55; RV32I-NEXT:    li a0, 1256; RV32I-NEXT:    ret57;58; RV32IXQCICS-LABEL: select_cc_example_eq_s2:59; RV32IXQCICS:       # %bb.0: # %entry60; RV32IXQCICS-NEXT:    andi a0, a0, 161; RV32IXQCICS-NEXT:    qc.selectieqi a0, 0, a2, 1262; RV32IXQCICS-NEXT:    ret63;64; RV32IXQCICM-LABEL: select_cc_example_eq_s2:65; RV32IXQCICM:       # %bb.0: # %entry66; RV32IXQCICM-NEXT:    andi a0, a0, 167; RV32IXQCICM-NEXT:    qc.selectieqi a0, 0, a2, 1268; RV32IXQCICM-NEXT:    ret69;70; RV32IXQCI-LABEL: select_cc_example_eq_s2:71; RV32IXQCI:       # %bb.0: # %entry72; RV32IXQCI-NEXT:    andi a0, a0, 173; RV32IXQCI-NEXT:    qc.selectieqi a0, 0, a2, 1274; RV32IXQCI-NEXT:    ret75entry:76  %cond_trunc = trunc i32 %a to i177  %sel = select i1 %cond_trunc, i32 12, i32 %x78  ret i32 %sel79}80 81define i32 @select_cc_example_eq_s3(i32 %a, i32 %b, i32 %x, i32 %y) {82; RV32I-LABEL: select_cc_example_eq_s3:83; RV32I:       # %bb.0: # %entry84; RV32I-NEXT:    andi a0, a0, 185; RV32I-NEXT:    bnez a0, .LBB2_286; RV32I-NEXT:  # %bb.1: # %entry87; RV32I-NEXT:    li a0, 2588; RV32I-NEXT:    ret89; RV32I-NEXT:  .LBB2_2:90; RV32I-NEXT:    li a0, 1291; RV32I-NEXT:    ret92;93; RV32IXQCICS-LABEL: select_cc_example_eq_s3:94; RV32IXQCICS:       # %bb.0: # %entry95; RV32IXQCICS-NEXT:    andi a0, a0, 196; RV32IXQCICS-NEXT:    li a1, 2597; RV32IXQCICS-NEXT:    qc.selectieqi a0, 0, a1, 1298; RV32IXQCICS-NEXT:    ret99;100; RV32IXQCICM-LABEL: select_cc_example_eq_s3:101; RV32IXQCICM:       # %bb.0: # %entry102; RV32IXQCICM-NEXT:    andi a0, a0, 1103; RV32IXQCICM-NEXT:    li a1, 25104; RV32IXQCICM-NEXT:    qc.selectieqi a0, 0, a1, 12105; RV32IXQCICM-NEXT:    ret106;107; RV32IXQCI-LABEL: select_cc_example_eq_s3:108; RV32IXQCI:       # %bb.0: # %entry109; RV32IXQCI-NEXT:    andi a0, a0, 1110; RV32IXQCI-NEXT:    li a1, 25111; RV32IXQCI-NEXT:    qc.selectieqi a0, 0, a1, 12112; RV32IXQCI-NEXT:    ret113entry:114  %cond_trunc = trunc i32 %a to i1115  %sel = select i1 %cond_trunc, i32 12, i32 25116  ret i32 %sel117}118 119define i32 @select_cc_example_eq(i32 %a, i32 %b, i32 %x, i32 %y) {120; RV32I-LABEL: select_cc_example_eq:121; RV32I:       # %bb.0: # %entry122; RV32I-NEXT:    li a1, 11123; RV32I-NEXT:    beq a0, a1, .LBB3_2124; RV32I-NEXT:  # %bb.1: # %entry125; RV32I-NEXT:    mv a2, a3126; RV32I-NEXT:  .LBB3_2: # %entry127; RV32I-NEXT:    mv a0, a2128; RV32I-NEXT:    ret129;130; RV32IXQCICS-LABEL: select_cc_example_eq:131; RV32IXQCICS:       # %bb.0: # %entry132; RV32IXQCICS-NEXT:    qc.selecteqi a0, 11, a2, a3133; RV32IXQCICS-NEXT:    ret134;135; RV32IXQCICM-LABEL: select_cc_example_eq:136; RV32IXQCICM:       # %bb.0: # %entry137; RV32IXQCICM-NEXT:    qc.mvnei a2, a0, 11, a3138; RV32IXQCICM-NEXT:    mv a0, a2139; RV32IXQCICM-NEXT:    ret140;141; RV32IXQCI-LABEL: select_cc_example_eq:142; RV32IXQCI:       # %bb.0: # %entry143; RV32IXQCI-NEXT:    qc.mvnei a2, a0, 11, a3144; RV32IXQCI-NEXT:    mv a0, a2145; RV32IXQCI-NEXT:    ret146entry:147  %cmp = icmp eq i32 %a, 11148  %sel = select i1 %cmp, i32 %x, i32 %y149  ret i32 %sel150}151 152define i32 @select_cc_example_eq_c(i32 %a, i32 %b, i32 %x, i32 %y) {153; RV32I-LABEL: select_cc_example_eq_c:154; RV32I:       # %bb.0: # %entry155; RV32I-NEXT:    li a1, 11156; RV32I-NEXT:    beq a0, a1, .LBB4_2157; RV32I-NEXT:  # %bb.1: # %entry158; RV32I-NEXT:    mv a2, a3159; RV32I-NEXT:  .LBB4_2: # %entry160; RV32I-NEXT:    mv a0, a2161; RV32I-NEXT:    ret162;163; RV32IXQCICS-LABEL: select_cc_example_eq_c:164; RV32IXQCICS:       # %bb.0: # %entry165; RV32IXQCICS-NEXT:    qc.selecteqi a0, 11, a2, a3166; RV32IXQCICS-NEXT:    ret167;168; RV32IXQCICM-LABEL: select_cc_example_eq_c:169; RV32IXQCICM:       # %bb.0: # %entry170; RV32IXQCICM-NEXT:    qc.mvnei a2, a0, 11, a3171; RV32IXQCICM-NEXT:    mv a0, a2172; RV32IXQCICM-NEXT:    ret173;174; RV32IXQCI-LABEL: select_cc_example_eq_c:175; RV32IXQCI:       # %bb.0: # %entry176; RV32IXQCI-NEXT:    qc.mvnei a2, a0, 11, a3177; RV32IXQCI-NEXT:    mv a0, a2178; RV32IXQCI-NEXT:    ret179entry:180  %cmp = icmp eq i32 11, %a181  %sel = select i1 %cmp, i32 %x, i32 %y182  ret i32 %sel183}184 185define i32 @select_cc_example_ne(i32 %a, i32 %b, i32 %x, i32 %y) {186; RV32I-LABEL: select_cc_example_ne:187; RV32I:       # %bb.0: # %entry188; RV32I-NEXT:    li a1, 11189; RV32I-NEXT:    bne a0, a1, .LBB5_2190; RV32I-NEXT:  # %bb.1: # %entry191; RV32I-NEXT:    mv a2, a3192; RV32I-NEXT:  .LBB5_2: # %entry193; RV32I-NEXT:    mv a0, a2194; RV32I-NEXT:    ret195;196; RV32IXQCICS-LABEL: select_cc_example_ne:197; RV32IXQCICS:       # %bb.0: # %entry198; RV32IXQCICS-NEXT:    qc.selectnei a0, 11, a2, a3199; RV32IXQCICS-NEXT:    ret200;201; RV32IXQCICM-LABEL: select_cc_example_ne:202; RV32IXQCICM:       # %bb.0: # %entry203; RV32IXQCICM-NEXT:    qc.mveqi a2, a0, 11, a3204; RV32IXQCICM-NEXT:    mv a0, a2205; RV32IXQCICM-NEXT:    ret206;207; RV32IXQCI-LABEL: select_cc_example_ne:208; RV32IXQCI:       # %bb.0: # %entry209; RV32IXQCI-NEXT:    qc.mveqi a2, a0, 11, a3210; RV32IXQCI-NEXT:    mv a0, a2211; RV32IXQCI-NEXT:    ret212entry:213  %cmp = icmp ne i32 %a, 11214  %sel = select i1 %cmp, i32 %x, i32 %y215  ret i32 %sel216}217 218define i32 @select_cc_example_ne_c(i32 %a, i32 %b, i32 %x, i32 %y) {219; RV32I-LABEL: select_cc_example_ne_c:220; RV32I:       # %bb.0: # %entry221; RV32I-NEXT:    li a1, 11222; RV32I-NEXT:    bne a0, a1, .LBB6_2223; RV32I-NEXT:  # %bb.1: # %entry224; RV32I-NEXT:    mv a2, a3225; RV32I-NEXT:  .LBB6_2: # %entry226; RV32I-NEXT:    mv a0, a2227; RV32I-NEXT:    ret228;229; RV32IXQCICS-LABEL: select_cc_example_ne_c:230; RV32IXQCICS:       # %bb.0: # %entry231; RV32IXQCICS-NEXT:    qc.selectnei a0, 11, a2, a3232; RV32IXQCICS-NEXT:    ret233;234; RV32IXQCICM-LABEL: select_cc_example_ne_c:235; RV32IXQCICM:       # %bb.0: # %entry236; RV32IXQCICM-NEXT:    qc.mveqi a2, a0, 11, a3237; RV32IXQCICM-NEXT:    mv a0, a2238; RV32IXQCICM-NEXT:    ret239;240; RV32IXQCI-LABEL: select_cc_example_ne_c:241; RV32IXQCI:       # %bb.0: # %entry242; RV32IXQCI-NEXT:    qc.mveqi a2, a0, 11, a3243; RV32IXQCI-NEXT:    mv a0, a2244; RV32IXQCI-NEXT:    ret245entry:246  %cmp = icmp ne i32 11, %a247  %sel = select i1 %cmp, i32 %x, i32 %y248  ret i32 %sel249}250 251define i32 @select_cc_example_eqi(i32 %a, i32 %b, i32 %x, i32 %y) {252; RV32I-LABEL: select_cc_example_eqi:253; RV32I:       # %bb.0: # %entry254; RV32I-NEXT:    beq a0, a1, .LBB7_2255; RV32I-NEXT:  # %bb.1: # %entry256; RV32I-NEXT:    li a2, 11257; RV32I-NEXT:  .LBB7_2: # %entry258; RV32I-NEXT:    mv a0, a2259; RV32I-NEXT:    ret260;261; RV32IXQCICS-LABEL: select_cc_example_eqi:262; RV32IXQCICS:       # %bb.0: # %entry263; RV32IXQCICS-NEXT:    qc.selectieq a0, a1, a2, 11264; RV32IXQCICS-NEXT:    ret265;266; RV32IXQCICM-LABEL: select_cc_example_eqi:267; RV32IXQCICM:       # %bb.0: # %entry268; RV32IXQCICM-NEXT:    qc.selectieq a0, a1, a2, 11269; RV32IXQCICM-NEXT:    ret270;271; RV32IXQCI-LABEL: select_cc_example_eqi:272; RV32IXQCI:       # %bb.0: # %entry273; RV32IXQCI-NEXT:    qc.selectieq a0, a1, a2, 11274; RV32IXQCI-NEXT:    ret275entry:276  %cmp = icmp eq i32 %a, %b277  %sel = select i1 %cmp, i32 %x, i32 11278  ret i32 %sel279}280 281define i32 @select_cc_example_eqi_c(i32 %a, i32 %b, i32 %x, i32 %y) {282; RV32I-LABEL: select_cc_example_eqi_c:283; RV32I:       # %bb.0: # %entry284; RV32I-NEXT:    bne a0, a1, .LBB8_2285; RV32I-NEXT:  # %bb.1: # %entry286; RV32I-NEXT:    li a2, 11287; RV32I-NEXT:  .LBB8_2: # %entry288; RV32I-NEXT:    mv a0, a2289; RV32I-NEXT:    ret290;291; RV32IXQCICS-LABEL: select_cc_example_eqi_c:292; RV32IXQCICS:       # %bb.0: # %entry293; RV32IXQCICS-NEXT:    qc.selectine a0, a1, a2, 11294; RV32IXQCICS-NEXT:    ret295;296; RV32IXQCICM-LABEL: select_cc_example_eqi_c:297; RV32IXQCICM:       # %bb.0: # %entry298; RV32IXQCICM-NEXT:    qc.selectine a0, a1, a2, 11299; RV32IXQCICM-NEXT:    ret300;301; RV32IXQCI-LABEL: select_cc_example_eqi_c:302; RV32IXQCI:       # %bb.0: # %entry303; RV32IXQCI-NEXT:    qc.selectine a0, a1, a2, 11304; RV32IXQCI-NEXT:    ret305entry:306  %cmp = icmp eq i32 %a, %b307  %sel = select i1 %cmp, i32 11, i32 %x308  ret i32 %sel309}310 311define i32 @select_cc_example_nei(i32 %a, i32 %b, i32 %x, i32 %y) {312; RV32I-LABEL: select_cc_example_nei:313; RV32I:       # %bb.0: # %entry314; RV32I-NEXT:    bne a0, a1, .LBB9_2315; RV32I-NEXT:  # %bb.1: # %entry316; RV32I-NEXT:    li a2, 11317; RV32I-NEXT:  .LBB9_2: # %entry318; RV32I-NEXT:    mv a0, a2319; RV32I-NEXT:    ret320;321; RV32IXQCICS-LABEL: select_cc_example_nei:322; RV32IXQCICS:       # %bb.0: # %entry323; RV32IXQCICS-NEXT:    qc.selectine a0, a1, a2, 11324; RV32IXQCICS-NEXT:    ret325;326; RV32IXQCICM-LABEL: select_cc_example_nei:327; RV32IXQCICM:       # %bb.0: # %entry328; RV32IXQCICM-NEXT:    qc.selectine a0, a1, a2, 11329; RV32IXQCICM-NEXT:    ret330;331; RV32IXQCI-LABEL: select_cc_example_nei:332; RV32IXQCI:       # %bb.0: # %entry333; RV32IXQCI-NEXT:    qc.selectine a0, a1, a2, 11334; RV32IXQCI-NEXT:    ret335entry:336  %cmp = icmp ne i32 %a, %b337  %sel = select i1 %cmp, i32 %x, i32 11338  ret i32 %sel339}340 341define i32 @select_cc_example_nei_c(i32 %a, i32 %b, i32 %x, i32 %y) {342; RV32I-LABEL: select_cc_example_nei_c:343; RV32I:       # %bb.0: # %entry344; RV32I-NEXT:    beq a0, a1, .LBB10_2345; RV32I-NEXT:  # %bb.1: # %entry346; RV32I-NEXT:    li a2, 11347; RV32I-NEXT:  .LBB10_2: # %entry348; RV32I-NEXT:    mv a0, a2349; RV32I-NEXT:    ret350;351; RV32IXQCICS-LABEL: select_cc_example_nei_c:352; RV32IXQCICS:       # %bb.0: # %entry353; RV32IXQCICS-NEXT:    qc.selectieq a0, a1, a2, 11354; RV32IXQCICS-NEXT:    ret355;356; RV32IXQCICM-LABEL: select_cc_example_nei_c:357; RV32IXQCICM:       # %bb.0: # %entry358; RV32IXQCICM-NEXT:    qc.selectieq a0, a1, a2, 11359; RV32IXQCICM-NEXT:    ret360;361; RV32IXQCI-LABEL: select_cc_example_nei_c:362; RV32IXQCI:       # %bb.0: # %entry363; RV32IXQCI-NEXT:    qc.selectieq a0, a1, a2, 11364; RV32IXQCI-NEXT:    ret365entry:366  %cmp = icmp ne i32 %a, %b367  %sel = select i1 %cmp, i32 11, i32 %x368  ret i32 %sel369}370 371define i32 @select_cc_example_ieqi(i32 %a, i32 %b, i32 %x, i32 %y) {372; RV32I-LABEL: select_cc_example_ieqi:373; RV32I:       # %bb.0: # %entry374; RV32I-NEXT:    li a1, 12375; RV32I-NEXT:    beq a0, a1, .LBB11_2376; RV32I-NEXT:  # %bb.1: # %entry377; RV32I-NEXT:    li a2, 11378; RV32I-NEXT:  .LBB11_2: # %entry379; RV32I-NEXT:    mv a0, a2380; RV32I-NEXT:    ret381;382; RV32IXQCICS-LABEL: select_cc_example_ieqi:383; RV32IXQCICS:       # %bb.0: # %entry384; RV32IXQCICS-NEXT:    qc.selectieqi a0, 12, a2, 11385; RV32IXQCICS-NEXT:    ret386;387; RV32IXQCICM-LABEL: select_cc_example_ieqi:388; RV32IXQCICM:       # %bb.0: # %entry389; RV32IXQCICM-NEXT:    qc.selectieqi a0, 12, a2, 11390; RV32IXQCICM-NEXT:    ret391;392; RV32IXQCI-LABEL: select_cc_example_ieqi:393; RV32IXQCI:       # %bb.0: # %entry394; RV32IXQCI-NEXT:    qc.selectieqi a0, 12, a2, 11395; RV32IXQCI-NEXT:    ret396entry:397  %cmp = icmp eq i32 %a, 12398  %sel = select i1 %cmp, i32 %x, i32 11399  ret i32 %sel400}401 402define i32 @select_cc_example_ieqi_c1(i32 %a, i32 %b, i32 %x, i32 %y) {403; RV32I-LABEL: select_cc_example_ieqi_c1:404; RV32I:       # %bb.0: # %entry405; RV32I-NEXT:    li a1, 12406; RV32I-NEXT:    beq a0, a1, .LBB12_2407; RV32I-NEXT:  # %bb.1: # %entry408; RV32I-NEXT:    li a2, 11409; RV32I-NEXT:  .LBB12_2: # %entry410; RV32I-NEXT:    mv a0, a2411; RV32I-NEXT:    ret412;413; RV32IXQCICS-LABEL: select_cc_example_ieqi_c1:414; RV32IXQCICS:       # %bb.0: # %entry415; RV32IXQCICS-NEXT:    qc.selectieqi a0, 12, a2, 11416; RV32IXQCICS-NEXT:    ret417;418; RV32IXQCICM-LABEL: select_cc_example_ieqi_c1:419; RV32IXQCICM:       # %bb.0: # %entry420; RV32IXQCICM-NEXT:    qc.selectieqi a0, 12, a2, 11421; RV32IXQCICM-NEXT:    ret422;423; RV32IXQCI-LABEL: select_cc_example_ieqi_c1:424; RV32IXQCI:       # %bb.0: # %entry425; RV32IXQCI-NEXT:    qc.selectieqi a0, 12, a2, 11426; RV32IXQCI-NEXT:    ret427entry:428  %cmp = icmp eq i32 12, %a429  %sel = select i1 %cmp, i32 %x, i32 11430  ret i32 %sel431}432 433define i32 @select_cc_example_ieqi_c2(i32 %a, i32 %b, i32 %x, i32 %y) {434; RV32I-LABEL: select_cc_example_ieqi_c2:435; RV32I:       # %bb.0: # %entry436; RV32I-NEXT:    li a1, 12437; RV32I-NEXT:    bne a0, a1, .LBB13_2438; RV32I-NEXT:  # %bb.1: # %entry439; RV32I-NEXT:    li a2, 11440; RV32I-NEXT:  .LBB13_2: # %entry441; RV32I-NEXT:    mv a0, a2442; RV32I-NEXT:    ret443;444; RV32IXQCICS-LABEL: select_cc_example_ieqi_c2:445; RV32IXQCICS:       # %bb.0: # %entry446; RV32IXQCICS-NEXT:    qc.selectinei a0, 12, a2, 11447; RV32IXQCICS-NEXT:    ret448;449; RV32IXQCICM-LABEL: select_cc_example_ieqi_c2:450; RV32IXQCICM:       # %bb.0: # %entry451; RV32IXQCICM-NEXT:    qc.selectinei a0, 12, a2, 11452; RV32IXQCICM-NEXT:    ret453;454; RV32IXQCI-LABEL: select_cc_example_ieqi_c2:455; RV32IXQCI:       # %bb.0: # %entry456; RV32IXQCI-NEXT:    qc.selectinei a0, 12, a2, 11457; RV32IXQCI-NEXT:    ret458entry:459  %cmp = icmp eq i32 %a, 12460  %sel = select i1 %cmp, i32 11, i32 %x461  ret i32 %sel462}463 464define i32 @select_cc_example_ieqi_c3(i32 %a, i32 %b, i32 %x, i32 %y) {465; RV32I-LABEL: select_cc_example_ieqi_c3:466; RV32I:       # %bb.0: # %entry467; RV32I-NEXT:    li a1, 12468; RV32I-NEXT:    bne a0, a1, .LBB14_2469; RV32I-NEXT:  # %bb.1: # %entry470; RV32I-NEXT:    li a2, 11471; RV32I-NEXT:  .LBB14_2: # %entry472; RV32I-NEXT:    mv a0, a2473; RV32I-NEXT:    ret474;475; RV32IXQCICS-LABEL: select_cc_example_ieqi_c3:476; RV32IXQCICS:       # %bb.0: # %entry477; RV32IXQCICS-NEXT:    qc.selectinei a0, 12, a2, 11478; RV32IXQCICS-NEXT:    ret479;480; RV32IXQCICM-LABEL: select_cc_example_ieqi_c3:481; RV32IXQCICM:       # %bb.0: # %entry482; RV32IXQCICM-NEXT:    qc.selectinei a0, 12, a2, 11483; RV32IXQCICM-NEXT:    ret484;485; RV32IXQCI-LABEL: select_cc_example_ieqi_c3:486; RV32IXQCI:       # %bb.0: # %entry487; RV32IXQCI-NEXT:    qc.selectinei a0, 12, a2, 11488; RV32IXQCI-NEXT:    ret489entry:490  %cmp = icmp eq i32 12, %a491  %sel = select i1 %cmp, i32 11, i32 %x492  ret i32 %sel493}494 495define i32 @select_cc_example_inei(i32 %a, i32 %b, i32 %x, i32 %y) {496; RV32I-LABEL: select_cc_example_inei:497; RV32I:       # %bb.0: # %entry498; RV32I-NEXT:    li a1, 12499; RV32I-NEXT:    bne a0, a1, .LBB15_2500; RV32I-NEXT:  # %bb.1: # %entry501; RV32I-NEXT:    li a2, 11502; RV32I-NEXT:  .LBB15_2: # %entry503; RV32I-NEXT:    mv a0, a2504; RV32I-NEXT:    ret505;506; RV32IXQCICS-LABEL: select_cc_example_inei:507; RV32IXQCICS:       # %bb.0: # %entry508; RV32IXQCICS-NEXT:    qc.selectinei a0, 12, a2, 11509; RV32IXQCICS-NEXT:    ret510;511; RV32IXQCICM-LABEL: select_cc_example_inei:512; RV32IXQCICM:       # %bb.0: # %entry513; RV32IXQCICM-NEXT:    qc.selectinei a0, 12, a2, 11514; RV32IXQCICM-NEXT:    ret515;516; RV32IXQCI-LABEL: select_cc_example_inei:517; RV32IXQCI:       # %bb.0: # %entry518; RV32IXQCI-NEXT:    qc.selectinei a0, 12, a2, 11519; RV32IXQCI-NEXT:    ret520entry:521  %cmp = icmp ne i32 %a, 12522  %sel = select i1 %cmp, i32 %x, i32 11523  ret i32 %sel524}525 526define i32 @select_cc_example_inei_c1(i32 %a, i32 %b, i32 %x, i32 %y) {527; RV32I-LABEL: select_cc_example_inei_c1:528; RV32I:       # %bb.0: # %entry529; RV32I-NEXT:    li a1, 12530; RV32I-NEXT:    bne a0, a1, .LBB16_2531; RV32I-NEXT:  # %bb.1: # %entry532; RV32I-NEXT:    li a2, 11533; RV32I-NEXT:  .LBB16_2: # %entry534; RV32I-NEXT:    mv a0, a2535; RV32I-NEXT:    ret536;537; RV32IXQCICS-LABEL: select_cc_example_inei_c1:538; RV32IXQCICS:       # %bb.0: # %entry539; RV32IXQCICS-NEXT:    qc.selectinei a0, 12, a2, 11540; RV32IXQCICS-NEXT:    ret541;542; RV32IXQCICM-LABEL: select_cc_example_inei_c1:543; RV32IXQCICM:       # %bb.0: # %entry544; RV32IXQCICM-NEXT:    qc.selectinei a0, 12, a2, 11545; RV32IXQCICM-NEXT:    ret546;547; RV32IXQCI-LABEL: select_cc_example_inei_c1:548; RV32IXQCI:       # %bb.0: # %entry549; RV32IXQCI-NEXT:    qc.selectinei a0, 12, a2, 11550; RV32IXQCI-NEXT:    ret551entry:552  %cmp = icmp ne i32 12, %a553  %sel = select i1 %cmp, i32 %x, i32 11554  ret i32 %sel555}556 557define i32 @select_cc_example_inei_c2(i32 %a, i32 %b, i32 %x, i32 %y) {558; RV32I-LABEL: select_cc_example_inei_c2:559; RV32I:       # %bb.0: # %entry560; RV32I-NEXT:    li a1, 12561; RV32I-NEXT:    beq a0, a1, .LBB17_2562; RV32I-NEXT:  # %bb.1: # %entry563; RV32I-NEXT:    li a2, 11564; RV32I-NEXT:  .LBB17_2: # %entry565; RV32I-NEXT:    mv a0, a2566; RV32I-NEXT:    ret567;568; RV32IXQCICS-LABEL: select_cc_example_inei_c2:569; RV32IXQCICS:       # %bb.0: # %entry570; RV32IXQCICS-NEXT:    qc.selectieqi a0, 12, a2, 11571; RV32IXQCICS-NEXT:    ret572;573; RV32IXQCICM-LABEL: select_cc_example_inei_c2:574; RV32IXQCICM:       # %bb.0: # %entry575; RV32IXQCICM-NEXT:    qc.selectieqi a0, 12, a2, 11576; RV32IXQCICM-NEXT:    ret577;578; RV32IXQCI-LABEL: select_cc_example_inei_c2:579; RV32IXQCI:       # %bb.0: # %entry580; RV32IXQCI-NEXT:    qc.selectieqi a0, 12, a2, 11581; RV32IXQCI-NEXT:    ret582entry:583  %cmp = icmp ne i32 %a, 12584  %sel = select i1 %cmp, i32 11, i32 %x585  ret i32 %sel586}587 588define i32 @select_cc_example_inei_c3(i32 %a, i32 %b, i32 %x, i32 %y) {589; RV32I-LABEL: select_cc_example_inei_c3:590; RV32I:       # %bb.0: # %entry591; RV32I-NEXT:    li a1, 12592; RV32I-NEXT:    beq a0, a1, .LBB18_2593; RV32I-NEXT:  # %bb.1: # %entry594; RV32I-NEXT:    li a2, 11595; RV32I-NEXT:  .LBB18_2: # %entry596; RV32I-NEXT:    mv a0, a2597; RV32I-NEXT:    ret598;599; RV32IXQCICS-LABEL: select_cc_example_inei_c3:600; RV32IXQCICS:       # %bb.0: # %entry601; RV32IXQCICS-NEXT:    qc.selectieqi a0, 12, a2, 11602; RV32IXQCICS-NEXT:    ret603;604; RV32IXQCICM-LABEL: select_cc_example_inei_c3:605; RV32IXQCICM:       # %bb.0: # %entry606; RV32IXQCICM-NEXT:    qc.selectieqi a0, 12, a2, 11607; RV32IXQCICM-NEXT:    ret608;609; RV32IXQCI-LABEL: select_cc_example_inei_c3:610; RV32IXQCI:       # %bb.0: # %entry611; RV32IXQCI-NEXT:    qc.selectieqi a0, 12, a2, 11612; RV32IXQCI-NEXT:    ret613entry:614  %cmp = icmp ne i32 12, %a615  %sel = select i1 %cmp, i32 11, i32 %x616  ret i32 %sel617}618 619define i32 @select_cc_example_eqii(i32 %a, i32 %b, i32 %x, i32 %y) {620; RV32I-LABEL: select_cc_example_eqii:621; RV32I:       # %bb.0: # %entry622; RV32I-NEXT:    beq a0, a1, .LBB19_2623; RV32I-NEXT:  # %bb.1: # %entry624; RV32I-NEXT:    li a0, 11625; RV32I-NEXT:    ret626; RV32I-NEXT:  .LBB19_2:627; RV32I-NEXT:    li a0, 13628; RV32I-NEXT:    ret629;630; RV32IXQCICS-LABEL: select_cc_example_eqii:631; RV32IXQCICS:       # %bb.0: # %entry632; RV32IXQCICS-NEXT:    qc.selectiieq a0, a1, 13, 11633; RV32IXQCICS-NEXT:    ret634;635; RV32IXQCICM-LABEL: select_cc_example_eqii:636; RV32IXQCICM:       # %bb.0: # %entry637; RV32IXQCICM-NEXT:    qc.selectiieq a0, a1, 13, 11638; RV32IXQCICM-NEXT:    ret639;640; RV32IXQCI-LABEL: select_cc_example_eqii:641; RV32IXQCI:       # %bb.0: # %entry642; RV32IXQCI-NEXT:    qc.selectiieq a0, a1, 13, 11643; RV32IXQCI-NEXT:    ret644entry:645  %cmp = icmp eq i32 %a, %b646  %sel = select i1 %cmp, i32 13, i32 11647  ret i32 %sel648}649 650define i32 @select_cc_example_neii(i32 %a, i32 %b, i32 %x, i32 %y) {651; RV32I-LABEL: select_cc_example_neii:652; RV32I:       # %bb.0: # %entry653; RV32I-NEXT:    bne a0, a1, .LBB20_2654; RV32I-NEXT:  # %bb.1: # %entry655; RV32I-NEXT:    li a0, 11656; RV32I-NEXT:    ret657; RV32I-NEXT:  .LBB20_2:658; RV32I-NEXT:    li a0, 13659; RV32I-NEXT:    ret660;661; RV32IXQCICS-LABEL: select_cc_example_neii:662; RV32IXQCICS:       # %bb.0: # %entry663; RV32IXQCICS-NEXT:    qc.selectiine a0, a1, 13, 11664; RV32IXQCICS-NEXT:    ret665;666; RV32IXQCICM-LABEL: select_cc_example_neii:667; RV32IXQCICM:       # %bb.0: # %entry668; RV32IXQCICM-NEXT:    qc.selectiine a0, a1, 13, 11669; RV32IXQCICM-NEXT:    ret670;671; RV32IXQCI-LABEL: select_cc_example_neii:672; RV32IXQCI:       # %bb.0: # %entry673; RV32IXQCI-NEXT:    qc.selectiine a0, a1, 13, 11674; RV32IXQCI-NEXT:    ret675entry:676  %cmp = icmp ne i32 %a, %b677  %sel = select i1 %cmp, i32 13, i32 11678  ret i32 %sel679}680 681define i32 @select_cc_example_eq1(i32 %a, i32 %b, i32 %x, i32 %y) {682; RV32I-LABEL: select_cc_example_eq1:683; RV32I:       # %bb.0: # %entry684; RV32I-NEXT:    beq a1, a0, .LBB21_2685; RV32I-NEXT:  # %bb.1: # %entry686; RV32I-NEXT:    li a2, 11687; RV32I-NEXT:  .LBB21_2: # %entry688; RV32I-NEXT:    mv a0, a2689; RV32I-NEXT:    ret690;691; RV32IXQCICS-LABEL: select_cc_example_eq1:692; RV32IXQCICS:       # %bb.0: # %entry693; RV32IXQCICS-NEXT:    qc.selectieq a0, a1, a2, 11694; RV32IXQCICS-NEXT:    ret695;696; RV32IXQCICM-LABEL: select_cc_example_eq1:697; RV32IXQCICM:       # %bb.0: # %entry698; RV32IXQCICM-NEXT:    qc.selectieq a0, a1, a2, 11699; RV32IXQCICM-NEXT:    ret700;701; RV32IXQCI-LABEL: select_cc_example_eq1:702; RV32IXQCI:       # %bb.0: # %entry703; RV32IXQCI-NEXT:    qc.selectieq a0, a1, a2, 11704; RV32IXQCI-NEXT:    ret705entry:706  %cmp = icmp eq i32 %b, %a707  %sel = select i1 %cmp, i32 %x, i32 11708  ret i32 %sel709}710 711define i32 @select_cc_example_ne1(i32 %a, i32 %b, i32 %x, i32 %y) {712; RV32I-LABEL: select_cc_example_ne1:713; RV32I:       # %bb.0: # %entry714; RV32I-NEXT:    bne a1, a0, .LBB22_2715; RV32I-NEXT:  # %bb.1: # %entry716; RV32I-NEXT:    li a2, 11717; RV32I-NEXT:  .LBB22_2: # %entry718; RV32I-NEXT:    mv a0, a2719; RV32I-NEXT:    ret720;721; RV32IXQCICS-LABEL: select_cc_example_ne1:722; RV32IXQCICS:       # %bb.0: # %entry723; RV32IXQCICS-NEXT:    qc.selectine a0, a1, a2, 11724; RV32IXQCICS-NEXT:    ret725;726; RV32IXQCICM-LABEL: select_cc_example_ne1:727; RV32IXQCICM:       # %bb.0: # %entry728; RV32IXQCICM-NEXT:    qc.selectine a0, a1, a2, 11729; RV32IXQCICM-NEXT:    ret730;731; RV32IXQCI-LABEL: select_cc_example_ne1:732; RV32IXQCI:       # %bb.0: # %entry733; RV32IXQCI-NEXT:    qc.selectine a0, a1, a2, 11734; RV32IXQCI-NEXT:    ret735entry:736  %cmp = icmp ne i32 %b, %a737  %sel = select i1 %cmp, i32 %x, i32 11738  ret i32 %sel739}740 741 742define i32 @select_cc_example_eq2(i32 %a, i32 %b, i32 %x, i32 %y) {743; RV32I-LABEL: select_cc_example_eq2:744; RV32I:       # %bb.0: # %entry745; RV32I-NEXT:    beq a1, a0, .LBB23_2746; RV32I-NEXT:  # %bb.1: # %entry747; RV32I-NEXT:    li a0, 11748; RV32I-NEXT:    ret749; RV32I-NEXT:  .LBB23_2:750; RV32I-NEXT:    li a0, 15751; RV32I-NEXT:    ret752;753; RV32IXQCICS-LABEL: select_cc_example_eq2:754; RV32IXQCICS:       # %bb.0: # %entry755; RV32IXQCICS-NEXT:    qc.selectiieq a0, a1, 15, 11756; RV32IXQCICS-NEXT:    ret757;758; RV32IXQCICM-LABEL: select_cc_example_eq2:759; RV32IXQCICM:       # %bb.0: # %entry760; RV32IXQCICM-NEXT:    qc.selectiieq a0, a1, 15, 11761; RV32IXQCICM-NEXT:    ret762;763; RV32IXQCI-LABEL: select_cc_example_eq2:764; RV32IXQCI:       # %bb.0: # %entry765; RV32IXQCI-NEXT:    qc.selectiieq a0, a1, 15, 11766; RV32IXQCI-NEXT:    ret767entry:768  %cmp = icmp eq i32 %b, %a769  %sel = select i1 %cmp, i32 15, i32 11770  ret i32 %sel771}772 773define i32 @select_cc_example_ne2(i32 %a, i32 %b, i32 %x, i32 %y) {774; RV32I-LABEL: select_cc_example_ne2:775; RV32I:       # %bb.0: # %entry776; RV32I-NEXT:    bne a1, a0, .LBB24_2777; RV32I-NEXT:  # %bb.1: # %entry778; RV32I-NEXT:    li a0, 11779; RV32I-NEXT:    ret780; RV32I-NEXT:  .LBB24_2:781; RV32I-NEXT:    li a0, 15782; RV32I-NEXT:    ret783;784; RV32IXQCICS-LABEL: select_cc_example_ne2:785; RV32IXQCICS:       # %bb.0: # %entry786; RV32IXQCICS-NEXT:    qc.selectiine a0, a1, 15, 11787; RV32IXQCICS-NEXT:    ret788;789; RV32IXQCICM-LABEL: select_cc_example_ne2:790; RV32IXQCICM:       # %bb.0: # %entry791; RV32IXQCICM-NEXT:    qc.selectiine a0, a1, 15, 11792; RV32IXQCICM-NEXT:    ret793;794; RV32IXQCI-LABEL: select_cc_example_ne2:795; RV32IXQCI:       # %bb.0: # %entry796; RV32IXQCI-NEXT:    qc.selectiine a0, a1, 15, 11797; RV32IXQCI-NEXT:    ret798entry:799  %cmp = icmp ne i32 %b, %a800  %sel = select i1 %cmp, i32 15, i32 11801  ret i32 %sel802}803