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