brintos

brintos / llvm-project-archived public Read only

0
0
Text · 33.4 KiB · dbfbaa7 Raw
1146 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 Xqcicm instructions3; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \4; RUN:   | FileCheck %s --check-prefixes=RV32I5; RUN: llc -mtriple=riscv32 -mattr=+experimental-xqcicm -verify-machineinstrs < %s \6; RUN:   | FileCheck %s --check-prefixes=RV32IXQCICM7; RUN: llc -mtriple=riscv32 -mattr=+experimental-xqcicm,+experimental-xqcics -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_example(i32 %cond, i32 %x, i32 %y) {13; RV32I-LABEL: select_example:14; RV32I:       # %bb.0: # %entry15; RV32I-NEXT:    andi a3, a0, 116; RV32I-NEXT:    mv a0, a117; RV32I-NEXT:    bnez a3, .LBB0_218; RV32I-NEXT:  # %bb.1: # %entry19; RV32I-NEXT:    mv a0, a220; RV32I-NEXT:  .LBB0_2: # %entry21; RV32I-NEXT:    ret22;23; RV32IXQCICM-LABEL: select_example:24; RV32IXQCICM:       # %bb.0: # %entry25; RV32IXQCICM-NEXT:    andi a0, a0, 126; RV32IXQCICM-NEXT:    qc.mveqi a1, a0, 0, a227; RV32IXQCICM-NEXT:    mv a0, a128; RV32IXQCICM-NEXT:    ret29;30; RV32IXQCI-LABEL: select_example:31; RV32IXQCI:       # %bb.0: # %entry32; RV32IXQCI-NEXT:    andi a0, a0, 133; RV32IXQCI-NEXT:    qc.mveqi a1, a0, 0, a234; RV32IXQCI-NEXT:    mv a0, a135; RV32IXQCI-NEXT:    ret36entry:37  %cond_trunc = trunc i32 %cond to i138  %sel = select i1 %cond_trunc, i32 %x, i32 %y39  ret i32 %sel40}41 42define i32 @select_cc_example_eq(i32 %a, i32 %b, i32 %x, i32 %y) {43; RV32I-LABEL: select_cc_example_eq:44; RV32I:       # %bb.0: # %entry45; RV32I-NEXT:    li a1, 1146; RV32I-NEXT:    beq a0, a1, .LBB1_247; RV32I-NEXT:  # %bb.1: # %entry48; RV32I-NEXT:    mv a2, a349; RV32I-NEXT:  .LBB1_2: # %entry50; RV32I-NEXT:    mv a0, a251; RV32I-NEXT:    ret52;53; RV32IXQCICM-LABEL: select_cc_example_eq:54; RV32IXQCICM:       # %bb.0: # %entry55; RV32IXQCICM-NEXT:    qc.mvnei a2, a0, 11, a356; RV32IXQCICM-NEXT:    mv a0, a257; RV32IXQCICM-NEXT:    ret58;59; RV32IXQCI-LABEL: select_cc_example_eq:60; RV32IXQCI:       # %bb.0: # %entry61; RV32IXQCI-NEXT:    qc.mvnei a2, a0, 11, a362; RV32IXQCI-NEXT:    mv a0, a263; RV32IXQCI-NEXT:    ret64entry:65  %cmp = icmp eq i32 %a, 1166  %sel = select i1 %cmp, i32 %x, i32 %y67  ret i32 %sel68}69 70define i32 @select_cc_example_eq1(i32 %a, i32 %b, i32 %x, i32 %y) {71; RV32I-LABEL: select_cc_example_eq1:72; RV32I:       # %bb.0: # %entry73; RV32I-NEXT:    li a1, 1174; RV32I-NEXT:    beq a0, a1, .LBB2_275; RV32I-NEXT:  # %bb.1: # %entry76; RV32I-NEXT:    mv a2, a377; RV32I-NEXT:  .LBB2_2: # %entry78; RV32I-NEXT:    mv a0, a279; RV32I-NEXT:    ret80;81; RV32IXQCICM-LABEL: select_cc_example_eq1:82; RV32IXQCICM:       # %bb.0: # %entry83; RV32IXQCICM-NEXT:    qc.mvnei a2, a0, 11, a384; RV32IXQCICM-NEXT:    mv a0, a285; RV32IXQCICM-NEXT:    ret86;87; RV32IXQCI-LABEL: select_cc_example_eq1:88; RV32IXQCI:       # %bb.0: # %entry89; RV32IXQCI-NEXT:    qc.mvnei a2, a0, 11, a390; RV32IXQCI-NEXT:    mv a0, a291; RV32IXQCI-NEXT:    ret92entry:93  %cmp = icmp eq i32 11, %a94  %sel = select i1 %cmp, i32 %x, i32 %y95  ret i32 %sel96}97 98define i32 @select_cc_example_ne(i32 %a, i32 %b, i32 %x, i32 %y) {99; RV32I-LABEL: select_cc_example_ne:100; RV32I:       # %bb.0: # %entry101; RV32I-NEXT:    li a1, 11102; RV32I-NEXT:    bne a0, a1, .LBB3_2103; RV32I-NEXT:  # %bb.1: # %entry104; RV32I-NEXT:    mv a2, a3105; RV32I-NEXT:  .LBB3_2: # %entry106; RV32I-NEXT:    mv a0, a2107; RV32I-NEXT:    ret108;109; RV32IXQCICM-LABEL: select_cc_example_ne:110; RV32IXQCICM:       # %bb.0: # %entry111; RV32IXQCICM-NEXT:    qc.mveqi a2, a0, 11, a3112; RV32IXQCICM-NEXT:    mv a0, a2113; RV32IXQCICM-NEXT:    ret114;115; RV32IXQCI-LABEL: select_cc_example_ne:116; RV32IXQCI:       # %bb.0: # %entry117; RV32IXQCI-NEXT:    qc.mveqi a2, a0, 11, a3118; RV32IXQCI-NEXT:    mv a0, a2119; RV32IXQCI-NEXT:    ret120entry:121  %cmp = icmp ne i32 %a, 11122  %sel = select i1 %cmp, i32 %x, i32 %y123  ret i32 %sel124}125 126define i32 @select_cc_example_ne1(i32 %a, i32 %b, i32 %x, i32 %y) {127; RV32I-LABEL: select_cc_example_ne1:128; RV32I:       # %bb.0: # %entry129; RV32I-NEXT:    li a1, 11130; RV32I-NEXT:    bne a0, a1, .LBB4_2131; RV32I-NEXT:  # %bb.1: # %entry132; RV32I-NEXT:    mv a2, a3133; RV32I-NEXT:  .LBB4_2: # %entry134; RV32I-NEXT:    mv a0, a2135; RV32I-NEXT:    ret136;137; RV32IXQCICM-LABEL: select_cc_example_ne1:138; RV32IXQCICM:       # %bb.0: # %entry139; RV32IXQCICM-NEXT:    qc.mveqi a2, a0, 11, a3140; RV32IXQCICM-NEXT:    mv a0, a2141; RV32IXQCICM-NEXT:    ret142;143; RV32IXQCI-LABEL: select_cc_example_ne1:144; RV32IXQCI:       # %bb.0: # %entry145; RV32IXQCI-NEXT:    qc.mveqi a2, a0, 11, a3146; RV32IXQCI-NEXT:    mv a0, a2147; RV32IXQCI-NEXT:    ret148entry:149  %cmp = icmp ne i32 11, %a150  %sel = select i1 %cmp, i32 %x, i32 %y151  ret i32 %sel152}153 154define i32 @select_cc_example_slt(i32 %a, i32 %b, i32 %x, i32 %y) {155; RV32I-LABEL: select_cc_example_slt:156; RV32I:       # %bb.0: # %entry157; RV32I-NEXT:    li a1, 11158; RV32I-NEXT:    blt a0, a1, .LBB5_2159; RV32I-NEXT:  # %bb.1: # %entry160; RV32I-NEXT:    mv a2, a3161; RV32I-NEXT:  .LBB5_2: # %entry162; RV32I-NEXT:    mv a0, a2163; RV32I-NEXT:    ret164;165; RV32IXQCICM-LABEL: select_cc_example_slt:166; RV32IXQCICM:       # %bb.0: # %entry167; RV32IXQCICM-NEXT:    qc.mvgei a2, a0, 11, a3168; RV32IXQCICM-NEXT:    mv a0, a2169; RV32IXQCICM-NEXT:    ret170;171; RV32IXQCI-LABEL: select_cc_example_slt:172; RV32IXQCI:       # %bb.0: # %entry173; RV32IXQCI-NEXT:    qc.mvgei a2, a0, 11, a3174; RV32IXQCI-NEXT:    mv a0, a2175; RV32IXQCI-NEXT:    ret176entry:177  %cmp = icmp slt i32 %a, 11178  %sel = select i1 %cmp, i32 %x, i32 %y179  ret i32 %sel180}181 182define i32 @select_cc_example_slt1(i32 %a, i32 %b, i32 %x, i32 %y) {183; RV32I-LABEL: select_cc_example_slt1:184; RV32I:       # %bb.0: # %entry185; RV32I-NEXT:    li a1, 11186; RV32I-NEXT:    blt a1, a0, .LBB6_2187; RV32I-NEXT:  # %bb.1: # %entry188; RV32I-NEXT:    mv a2, a3189; RV32I-NEXT:  .LBB6_2: # %entry190; RV32I-NEXT:    mv a0, a2191; RV32I-NEXT:    ret192;193; RV32IXQCICM-LABEL: select_cc_example_slt1:194; RV32IXQCICM:       # %bb.0: # %entry195; RV32IXQCICM-NEXT:    qc.mvlti a2, a0, 12, a3196; RV32IXQCICM-NEXT:    mv a0, a2197; RV32IXQCICM-NEXT:    ret198;199; RV32IXQCI-LABEL: select_cc_example_slt1:200; RV32IXQCI:       # %bb.0: # %entry201; RV32IXQCI-NEXT:    qc.mvlti a2, a0, 12, a3202; RV32IXQCI-NEXT:    mv a0, a2203; RV32IXQCI-NEXT:    ret204entry:205  %cmp = icmp slt i32 11, %a206  %sel = select i1 %cmp, i32 %x, i32 %y207  ret i32 %sel208}209 210define i32 @select_cc_example_sle(i32 %a, i32 %b, i32 %x, i32 %y) {211; RV32I-LABEL: select_cc_example_sle:212; RV32I:       # %bb.0: # %entry213; RV32I-NEXT:    li a1, 12214; RV32I-NEXT:    blt a0, a1, .LBB7_2215; RV32I-NEXT:  # %bb.1: # %entry216; RV32I-NEXT:    mv a2, a3217; RV32I-NEXT:  .LBB7_2: # %entry218; RV32I-NEXT:    mv a0, a2219; RV32I-NEXT:    ret220;221; RV32IXQCICM-LABEL: select_cc_example_sle:222; RV32IXQCICM:       # %bb.0: # %entry223; RV32IXQCICM-NEXT:    qc.mvgei a2, a0, 12, a3224; RV32IXQCICM-NEXT:    mv a0, a2225; RV32IXQCICM-NEXT:    ret226;227; RV32IXQCI-LABEL: select_cc_example_sle:228; RV32IXQCI:       # %bb.0: # %entry229; RV32IXQCI-NEXT:    qc.mvgei a2, a0, 12, a3230; RV32IXQCI-NEXT:    mv a0, a2231; RV32IXQCI-NEXT:    ret232entry:233  %cmp = icmp sle i32 %a, 11234  %sel = select i1 %cmp, i32 %x, i32 %y235  ret i32 %sel236}237 238define i32 @select_cc_example_sle1(i32 %a, i32 %b, i32 %x, i32 %y) {239; RV32I-LABEL: select_cc_example_sle1:240; RV32I:       # %bb.0: # %entry241; RV32I-NEXT:    li a1, 10242; RV32I-NEXT:    blt a1, a0, .LBB8_2243; RV32I-NEXT:  # %bb.1: # %entry244; RV32I-NEXT:    mv a2, a3245; RV32I-NEXT:  .LBB8_2: # %entry246; RV32I-NEXT:    mv a0, a2247; RV32I-NEXT:    ret248;249; RV32IXQCICM-LABEL: select_cc_example_sle1:250; RV32IXQCICM:       # %bb.0: # %entry251; RV32IXQCICM-NEXT:    qc.mvlti a2, a0, 11, a3252; RV32IXQCICM-NEXT:    mv a0, a2253; RV32IXQCICM-NEXT:    ret254;255; RV32IXQCI-LABEL: select_cc_example_sle1:256; RV32IXQCI:       # %bb.0: # %entry257; RV32IXQCI-NEXT:    qc.mvlti a2, a0, 11, a3258; RV32IXQCI-NEXT:    mv a0, a2259; RV32IXQCI-NEXT:    ret260entry:261  %cmp = icmp sle i32 11, %a262  %sel = select i1 %cmp, i32 %x, i32 %y263  ret i32 %sel264}265 266define i32 @select_cc_example_sgt(i32 %a, i32 %b, i32 %x, i32 %y) {267; RV32I-LABEL: select_cc_example_sgt:268; RV32I:       # %bb.0: # %entry269; RV32I-NEXT:    li a1, 11270; RV32I-NEXT:    blt a1, a0, .LBB9_2271; RV32I-NEXT:  # %bb.1: # %entry272; RV32I-NEXT:    mv a2, a3273; RV32I-NEXT:  .LBB9_2: # %entry274; RV32I-NEXT:    mv a0, a2275; RV32I-NEXT:    ret276;277; RV32IXQCICM-LABEL: select_cc_example_sgt:278; RV32IXQCICM:       # %bb.0: # %entry279; RV32IXQCICM-NEXT:    qc.mvlti a2, a0, 12, a3280; RV32IXQCICM-NEXT:    mv a0, a2281; RV32IXQCICM-NEXT:    ret282;283; RV32IXQCI-LABEL: select_cc_example_sgt:284; RV32IXQCI:       # %bb.0: # %entry285; RV32IXQCI-NEXT:    qc.mvlti a2, a0, 12, a3286; RV32IXQCI-NEXT:    mv a0, a2287; RV32IXQCI-NEXT:    ret288entry:289  %cmp = icmp sgt i32 %a, 11290  %sel = select i1 %cmp, i32 %x, i32 %y291  ret i32 %sel292}293 294define i32 @select_cc_example_sgt1(i32 %a, i32 %b, i32 %x, i32 %y) {295; RV32I-LABEL: select_cc_example_sgt1:296; RV32I:       # %bb.0: # %entry297; RV32I-NEXT:    li a1, 11298; RV32I-NEXT:    blt a0, a1, .LBB10_2299; RV32I-NEXT:  # %bb.1: # %entry300; RV32I-NEXT:    mv a2, a3301; RV32I-NEXT:  .LBB10_2: # %entry302; RV32I-NEXT:    mv a0, a2303; RV32I-NEXT:    ret304;305; RV32IXQCICM-LABEL: select_cc_example_sgt1:306; RV32IXQCICM:       # %bb.0: # %entry307; RV32IXQCICM-NEXT:    qc.mvgei a2, a0, 11, a3308; RV32IXQCICM-NEXT:    mv a0, a2309; RV32IXQCICM-NEXT:    ret310;311; RV32IXQCI-LABEL: select_cc_example_sgt1:312; RV32IXQCI:       # %bb.0: # %entry313; RV32IXQCI-NEXT:    qc.mvgei a2, a0, 11, a3314; RV32IXQCI-NEXT:    mv a0, a2315; RV32IXQCI-NEXT:    ret316entry:317  %cmp = icmp sgt i32 11, %a318  %sel = select i1 %cmp, i32 %x, i32 %y319  ret i32 %sel320}321 322define i32 @select_cc_example_sge(i32 %a, i32 %b, i32 %x, i32 %y) {323; RV32I-LABEL: select_cc_example_sge:324; RV32I:       # %bb.0: # %entry325; RV32I-NEXT:    li a1, 10326; RV32I-NEXT:    blt a1, a0, .LBB11_2327; RV32I-NEXT:  # %bb.1: # %entry328; RV32I-NEXT:    mv a2, a3329; RV32I-NEXT:  .LBB11_2: # %entry330; RV32I-NEXT:    mv a0, a2331; RV32I-NEXT:    ret332;333; RV32IXQCICM-LABEL: select_cc_example_sge:334; RV32IXQCICM:       # %bb.0: # %entry335; RV32IXQCICM-NEXT:    qc.mvlti a2, a0, 11, a3336; RV32IXQCICM-NEXT:    mv a0, a2337; RV32IXQCICM-NEXT:    ret338;339; RV32IXQCI-LABEL: select_cc_example_sge:340; RV32IXQCI:       # %bb.0: # %entry341; RV32IXQCI-NEXT:    qc.mvlti a2, a0, 11, a3342; RV32IXQCI-NEXT:    mv a0, a2343; RV32IXQCI-NEXT:    ret344entry:345  %cmp = icmp sge i32 %a, 11346  %sel = select i1 %cmp, i32 %x, i32 %y347  ret i32 %sel348}349 350define i32 @select_cc_example_sge1(i32 %a, i32 %b, i32 %x, i32 %y) {351; RV32I-LABEL: select_cc_example_sge1:352; RV32I:       # %bb.0: # %entry353; RV32I-NEXT:    li a1, 12354; RV32I-NEXT:    blt a0, a1, .LBB12_2355; RV32I-NEXT:  # %bb.1: # %entry356; RV32I-NEXT:    mv a2, a3357; RV32I-NEXT:  .LBB12_2: # %entry358; RV32I-NEXT:    mv a0, a2359; RV32I-NEXT:    ret360;361; RV32IXQCICM-LABEL: select_cc_example_sge1:362; RV32IXQCICM:       # %bb.0: # %entry363; RV32IXQCICM-NEXT:    qc.mvgei a2, a0, 12, a3364; RV32IXQCICM-NEXT:    mv a0, a2365; RV32IXQCICM-NEXT:    ret366;367; RV32IXQCI-LABEL: select_cc_example_sge1:368; RV32IXQCI:       # %bb.0: # %entry369; RV32IXQCI-NEXT:    qc.mvgei a2, a0, 12, a3370; RV32IXQCI-NEXT:    mv a0, a2371; RV32IXQCI-NEXT:    ret372entry:373  %cmp = icmp sge i32 11, %a374  %sel = select i1 %cmp, i32 %x, i32 %y375  ret i32 %sel376}377 378define i32 @select_cc_example_ule(i32 %a, i32 %b, i32 %x, i32 %y) {379; RV32I-LABEL: select_cc_example_ule:380; RV32I:       # %bb.0: # %entry381; RV32I-NEXT:    li a1, 12382; RV32I-NEXT:    bltu a0, a1, .LBB13_2383; RV32I-NEXT:  # %bb.1: # %entry384; RV32I-NEXT:    mv a2, a3385; RV32I-NEXT:  .LBB13_2: # %entry386; RV32I-NEXT:    mv a0, a2387; RV32I-NEXT:    ret388;389; RV32IXQCICM-LABEL: select_cc_example_ule:390; RV32IXQCICM:       # %bb.0: # %entry391; RV32IXQCICM-NEXT:    qc.mvgeui a2, a0, 12, a3392; RV32IXQCICM-NEXT:    mv a0, a2393; RV32IXQCICM-NEXT:    ret394;395; RV32IXQCI-LABEL: select_cc_example_ule:396; RV32IXQCI:       # %bb.0: # %entry397; RV32IXQCI-NEXT:    qc.mvgeui a2, a0, 12, a3398; RV32IXQCI-NEXT:    mv a0, a2399; RV32IXQCI-NEXT:    ret400entry:401  %cmp = icmp ule i32 %a, 11402  %sel = select i1 %cmp, i32 %x, i32 %y403  ret i32 %sel404}405 406define i32 @select_cc_example_ule1(i32 %a, i32 %b, i32 %x, i32 %y) {407; RV32I-LABEL: select_cc_example_ule1:408; RV32I:       # %bb.0: # %entry409; RV32I-NEXT:    li a1, 10410; RV32I-NEXT:    bltu a1, a0, .LBB14_2411; RV32I-NEXT:  # %bb.1: # %entry412; RV32I-NEXT:    mv a2, a3413; RV32I-NEXT:  .LBB14_2: # %entry414; RV32I-NEXT:    mv a0, a2415; RV32I-NEXT:    ret416;417; RV32IXQCICM-LABEL: select_cc_example_ule1:418; RV32IXQCICM:       # %bb.0: # %entry419; RV32IXQCICM-NEXT:    qc.mvltui a2, a0, 11, a3420; RV32IXQCICM-NEXT:    mv a0, a2421; RV32IXQCICM-NEXT:    ret422;423; RV32IXQCI-LABEL: select_cc_example_ule1:424; RV32IXQCI:       # %bb.0: # %entry425; RV32IXQCI-NEXT:    qc.mvltui a2, a0, 11, a3426; RV32IXQCI-NEXT:    mv a0, a2427; RV32IXQCI-NEXT:    ret428entry:429  %cmp = icmp ule i32 11, %a430  %sel = select i1 %cmp, i32 %x, i32 %y431  ret i32 %sel432}433 434define i32 @select_cc_example_ugt(i32 %a, i32 %b, i32 %x, i32 %y) {435; RV32I-LABEL: select_cc_example_ugt:436; RV32I:       # %bb.0: # %entry437; RV32I-NEXT:    li a1, 11438; RV32I-NEXT:    bltu a1, a0, .LBB15_2439; RV32I-NEXT:  # %bb.1: # %entry440; RV32I-NEXT:    mv a2, a3441; RV32I-NEXT:  .LBB15_2: # %entry442; RV32I-NEXT:    mv a0, a2443; RV32I-NEXT:    ret444;445; RV32IXQCICM-LABEL: select_cc_example_ugt:446; RV32IXQCICM:       # %bb.0: # %entry447; RV32IXQCICM-NEXT:    qc.mvltui a2, a0, 12, a3448; RV32IXQCICM-NEXT:    mv a0, a2449; RV32IXQCICM-NEXT:    ret450;451; RV32IXQCI-LABEL: select_cc_example_ugt:452; RV32IXQCI:       # %bb.0: # %entry453; RV32IXQCI-NEXT:    qc.mvltui a2, a0, 12, a3454; RV32IXQCI-NEXT:    mv a0, a2455; RV32IXQCI-NEXT:    ret456entry:457  %cmp = icmp ugt i32 %a, 11458  %sel = select i1 %cmp, i32 %x, i32 %y459  ret i32 %sel460}461 462define i32 @select_cc_example_ugt1(i32 %a, i32 %b, i32 %x, i32 %y) {463; RV32I-LABEL: select_cc_example_ugt1:464; RV32I:       # %bb.0: # %entry465; RV32I-NEXT:    li a1, 11466; RV32I-NEXT:    bltu a0, a1, .LBB16_2467; RV32I-NEXT:  # %bb.1: # %entry468; RV32I-NEXT:    mv a2, a3469; RV32I-NEXT:  .LBB16_2: # %entry470; RV32I-NEXT:    mv a0, a2471; RV32I-NEXT:    ret472;473; RV32IXQCICM-LABEL: select_cc_example_ugt1:474; RV32IXQCICM:       # %bb.0: # %entry475; RV32IXQCICM-NEXT:    qc.mvgeui a2, a0, 11, a3476; RV32IXQCICM-NEXT:    mv a0, a2477; RV32IXQCICM-NEXT:    ret478;479; RV32IXQCI-LABEL: select_cc_example_ugt1:480; RV32IXQCI:       # %bb.0: # %entry481; RV32IXQCI-NEXT:    qc.mvgeui a2, a0, 11, a3482; RV32IXQCI-NEXT:    mv a0, a2483; RV32IXQCI-NEXT:    ret484entry:485  %cmp = icmp ugt i32 11, %a486  %sel = select i1 %cmp, i32 %x, i32 %y487  ret i32 %sel488}489 490define i32 @select_cc_example_ult(i32 %a, i32 %b, i32 %x, i32 %y) {491; RV32I-LABEL: select_cc_example_ult:492; RV32I:       # %bb.0: # %entry493; RV32I-NEXT:    li a1, 11494; RV32I-NEXT:    bltu a0, a1, .LBB17_2495; RV32I-NEXT:  # %bb.1: # %entry496; RV32I-NEXT:    mv a2, a3497; RV32I-NEXT:  .LBB17_2: # %entry498; RV32I-NEXT:    mv a0, a2499; RV32I-NEXT:    ret500;501; RV32IXQCICM-LABEL: select_cc_example_ult:502; RV32IXQCICM:       # %bb.0: # %entry503; RV32IXQCICM-NEXT:    qc.mvgeui a2, a0, 11, a3504; RV32IXQCICM-NEXT:    mv a0, a2505; RV32IXQCICM-NEXT:    ret506;507; RV32IXQCI-LABEL: select_cc_example_ult:508; RV32IXQCI:       # %bb.0: # %entry509; RV32IXQCI-NEXT:    qc.mvgeui a2, a0, 11, a3510; RV32IXQCI-NEXT:    mv a0, a2511; RV32IXQCI-NEXT:    ret512entry:513  %cmp = icmp ult i32 %a, 11514  %sel = select i1 %cmp, i32 %x, i32 %y515  ret i32 %sel516}517 518define i32 @select_cc_example_ult1(i32 %a, i32 %b, i32 %x, i32 %y) {519; RV32I-LABEL: select_cc_example_ult1:520; RV32I:       # %bb.0: # %entry521; RV32I-NEXT:    li a1, 11522; RV32I-NEXT:    bltu a1, a0, .LBB18_2523; RV32I-NEXT:  # %bb.1: # %entry524; RV32I-NEXT:    mv a2, a3525; RV32I-NEXT:  .LBB18_2: # %entry526; RV32I-NEXT:    mv a0, a2527; RV32I-NEXT:    ret528;529; RV32IXQCICM-LABEL: select_cc_example_ult1:530; RV32IXQCICM:       # %bb.0: # %entry531; RV32IXQCICM-NEXT:    qc.mvltui a2, a0, 12, a3532; RV32IXQCICM-NEXT:    mv a0, a2533; RV32IXQCICM-NEXT:    ret534;535; RV32IXQCI-LABEL: select_cc_example_ult1:536; RV32IXQCI:       # %bb.0: # %entry537; RV32IXQCI-NEXT:    qc.mvltui a2, a0, 12, a3538; RV32IXQCI-NEXT:    mv a0, a2539; RV32IXQCI-NEXT:    ret540entry:541  %cmp = icmp ult i32 11, %a542  %sel = select i1 %cmp, i32 %x, i32 %y543  ret i32 %sel544}545 546define i32 @select_cc_example_uge(i32 %a, i32 %b, i32 %x, i32 %y) {547; RV32I-LABEL: select_cc_example_uge:548; RV32I:       # %bb.0: # %entry549; RV32I-NEXT:    li a1, 10550; RV32I-NEXT:    bltu a1, a0, .LBB19_2551; RV32I-NEXT:  # %bb.1: # %entry552; RV32I-NEXT:    mv a2, a3553; RV32I-NEXT:  .LBB19_2: # %entry554; RV32I-NEXT:    mv a0, a2555; RV32I-NEXT:    ret556;557; RV32IXQCICM-LABEL: select_cc_example_uge:558; RV32IXQCICM:       # %bb.0: # %entry559; RV32IXQCICM-NEXT:    qc.mvltui a2, a0, 11, a3560; RV32IXQCICM-NEXT:    mv a0, a2561; RV32IXQCICM-NEXT:    ret562;563; RV32IXQCI-LABEL: select_cc_example_uge:564; RV32IXQCI:       # %bb.0: # %entry565; RV32IXQCI-NEXT:    qc.mvltui a2, a0, 11, a3566; RV32IXQCI-NEXT:    mv a0, a2567; RV32IXQCI-NEXT:    ret568entry:569  %cmp = icmp uge i32 %a, 11570  %sel = select i1 %cmp, i32 %x, i32 %y571  ret i32 %sel572}573 574define i32 @select_cc_example_uge1(i32 %a, i32 %b, i32 %x, i32 %y) {575; RV32I-LABEL: select_cc_example_uge1:576; RV32I:       # %bb.0: # %entry577; RV32I-NEXT:    li a1, 12578; RV32I-NEXT:    bltu a0, a1, .LBB20_2579; RV32I-NEXT:  # %bb.1: # %entry580; RV32I-NEXT:    mv a2, a3581; RV32I-NEXT:  .LBB20_2: # %entry582; RV32I-NEXT:    mv a0, a2583; RV32I-NEXT:    ret584;585; RV32IXQCICM-LABEL: select_cc_example_uge1:586; RV32IXQCICM:       # %bb.0: # %entry587; RV32IXQCICM-NEXT:    qc.mvgeui a2, a0, 12, a3588; RV32IXQCICM-NEXT:    mv a0, a2589; RV32IXQCICM-NEXT:    ret590;591; RV32IXQCI-LABEL: select_cc_example_uge1:592; RV32IXQCI:       # %bb.0: # %entry593; RV32IXQCI-NEXT:    qc.mvgeui a2, a0, 12, a3594; RV32IXQCI-NEXT:    mv a0, a2595; RV32IXQCI-NEXT:    ret596entry:597  %cmp = icmp uge i32 11, %a598  %sel = select i1 %cmp, i32 %x, i32 %y599  ret i32 %sel600}601 602define i32 @select_cc_example_eq_reg(i32 %a, i32 %b, i32 %x, i32 %y) {603; RV32I-LABEL: select_cc_example_eq_reg:604; RV32I:       # %bb.0: # %entry605; RV32I-NEXT:    beq a0, a1, .LBB21_2606; RV32I-NEXT:  # %bb.1: # %entry607; RV32I-NEXT:    mv a2, a3608; RV32I-NEXT:  .LBB21_2: # %entry609; RV32I-NEXT:    mv a0, a2610; RV32I-NEXT:    ret611;612; RV32IXQCICM-LABEL: select_cc_example_eq_reg:613; RV32IXQCICM:       # %bb.0: # %entry614; RV32IXQCICM-NEXT:    qc.mvne a2, a0, a1, a3615; RV32IXQCICM-NEXT:    mv a0, a2616; RV32IXQCICM-NEXT:    ret617;618; RV32IXQCI-LABEL: select_cc_example_eq_reg:619; RV32IXQCI:       # %bb.0: # %entry620; RV32IXQCI-NEXT:    qc.mvne a2, a0, a1, a3621; RV32IXQCI-NEXT:    mv a0, a2622; RV32IXQCI-NEXT:    ret623entry:624  %cmp = icmp eq i32 %a, %b625  %sel = select i1 %cmp, i32 %x, i32 %y626  ret i32 %sel627}628 629define i32 @select_cc_example_ne_reg(i32 %a, i32 %b, i32 %x, i32 %y) {630; RV32I-LABEL: select_cc_example_ne_reg:631; RV32I:       # %bb.0: # %entry632; RV32I-NEXT:    bne a0, a1, .LBB22_2633; RV32I-NEXT:  # %bb.1: # %entry634; RV32I-NEXT:    mv a2, a3635; RV32I-NEXT:  .LBB22_2: # %entry636; RV32I-NEXT:    mv a0, a2637; RV32I-NEXT:    ret638;639; RV32IXQCICM-LABEL: select_cc_example_ne_reg:640; RV32IXQCICM:       # %bb.0: # %entry641; RV32IXQCICM-NEXT:    qc.mveq a2, a0, a1, a3642; RV32IXQCICM-NEXT:    mv a0, a2643; RV32IXQCICM-NEXT:    ret644;645; RV32IXQCI-LABEL: select_cc_example_ne_reg:646; RV32IXQCI:       # %bb.0: # %entry647; RV32IXQCI-NEXT:    qc.mveq a2, a0, a1, a3648; RV32IXQCI-NEXT:    mv a0, a2649; RV32IXQCI-NEXT:    ret650entry:651  %cmp = icmp ne i32 %a, %b652  %sel = select i1 %cmp, i32 %x, i32 %y653  ret i32 %sel654}655 656define i32 @select_cc_example_slt_reg(i32 %a, i32 %b, i32 %x, i32 %y) {657; RV32I-LABEL: select_cc_example_slt_reg:658; RV32I:       # %bb.0: # %entry659; RV32I-NEXT:    blt a0, a1, .LBB23_2660; RV32I-NEXT:  # %bb.1: # %entry661; RV32I-NEXT:    mv a2, a3662; RV32I-NEXT:  .LBB23_2: # %entry663; RV32I-NEXT:    mv a0, a2664; RV32I-NEXT:    ret665;666; RV32IXQCICM-LABEL: select_cc_example_slt_reg:667; RV32IXQCICM:       # %bb.0: # %entry668; RV32IXQCICM-NEXT:    qc.mvge a2, a0, a1, a3669; RV32IXQCICM-NEXT:    mv a0, a2670; RV32IXQCICM-NEXT:    ret671;672; RV32IXQCI-LABEL: select_cc_example_slt_reg:673; RV32IXQCI:       # %bb.0: # %entry674; RV32IXQCI-NEXT:    qc.mvge a2, a0, a1, a3675; RV32IXQCI-NEXT:    mv a0, a2676; RV32IXQCI-NEXT:    ret677entry:678  %cmp = icmp slt i32 %a, %b679  %sel = select i1 %cmp, i32 %x, i32 %y680  ret i32 %sel681}682 683define i32 @select_cc_example_sge_reg(i32 %a, i32 %b, i32 %x, i32 %y) {684; RV32I-LABEL: select_cc_example_sge_reg:685; RV32I:       # %bb.0: # %entry686; RV32I-NEXT:    bge a0, a1, .LBB24_2687; RV32I-NEXT:  # %bb.1: # %entry688; RV32I-NEXT:    mv a2, a3689; RV32I-NEXT:  .LBB24_2: # %entry690; RV32I-NEXT:    mv a0, a2691; RV32I-NEXT:    ret692;693; RV32IXQCICM-LABEL: select_cc_example_sge_reg:694; RV32IXQCICM:       # %bb.0: # %entry695; RV32IXQCICM-NEXT:    qc.mvlt a2, a0, a1, a3696; RV32IXQCICM-NEXT:    mv a0, a2697; RV32IXQCICM-NEXT:    ret698;699; RV32IXQCI-LABEL: select_cc_example_sge_reg:700; RV32IXQCI:       # %bb.0: # %entry701; RV32IXQCI-NEXT:    qc.mvlt a2, a0, a1, a3702; RV32IXQCI-NEXT:    mv a0, a2703; RV32IXQCI-NEXT:    ret704entry:705  %cmp = icmp sge i32 %a, %b706  %sel = select i1 %cmp, i32 %x, i32 %y707  ret i32 %sel708}709 710define i32 @select_cc_example_sgt_reg(i32 %a, i32 %b, i32 %x, i32 %y) {711; RV32I-LABEL: select_cc_example_sgt_reg:712; RV32I:       # %bb.0: # %entry713; RV32I-NEXT:    blt a1, a0, .LBB25_2714; RV32I-NEXT:  # %bb.1: # %entry715; RV32I-NEXT:    mv a2, a3716; RV32I-NEXT:  .LBB25_2: # %entry717; RV32I-NEXT:    mv a0, a2718; RV32I-NEXT:    ret719;720; RV32IXQCICM-LABEL: select_cc_example_sgt_reg:721; RV32IXQCICM:       # %bb.0: # %entry722; RV32IXQCICM-NEXT:    qc.mvge a2, a1, a0, a3723; RV32IXQCICM-NEXT:    mv a0, a2724; RV32IXQCICM-NEXT:    ret725;726; RV32IXQCI-LABEL: select_cc_example_sgt_reg:727; RV32IXQCI:       # %bb.0: # %entry728; RV32IXQCI-NEXT:    qc.mvge a2, a1, a0, a3729; RV32IXQCI-NEXT:    mv a0, a2730; RV32IXQCI-NEXT:    ret731entry:732  %cmp = icmp sgt i32 %a, %b733  %sel = select i1 %cmp, i32 %x, i32 %y734  ret i32 %sel735}736 737define i32 @select_cc_example_sle_reg(i32 %a, i32 %b, i32 %x, i32 %y) {738; RV32I-LABEL: select_cc_example_sle_reg:739; RV32I:       # %bb.0: # %entry740; RV32I-NEXT:    bge a1, a0, .LBB26_2741; RV32I-NEXT:  # %bb.1: # %entry742; RV32I-NEXT:    mv a2, a3743; RV32I-NEXT:  .LBB26_2: # %entry744; RV32I-NEXT:    mv a0, a2745; RV32I-NEXT:    ret746;747; RV32IXQCICM-LABEL: select_cc_example_sle_reg:748; RV32IXQCICM:       # %bb.0: # %entry749; RV32IXQCICM-NEXT:    qc.mvlt a2, a1, a0, a3750; RV32IXQCICM-NEXT:    mv a0, a2751; RV32IXQCICM-NEXT:    ret752;753; RV32IXQCI-LABEL: select_cc_example_sle_reg:754; RV32IXQCI:       # %bb.0: # %entry755; RV32IXQCI-NEXT:    qc.mvlt a2, a1, a0, a3756; RV32IXQCI-NEXT:    mv a0, a2757; RV32IXQCI-NEXT:    ret758entry:759  %cmp = icmp sle i32 %a, %b760  %sel = select i1 %cmp, i32 %x, i32 %y761  ret i32 %sel762}763 764define i32 @select_cc_example_ugt_reg(i32 %a, i32 %b, i32 %x, i32 %y) {765; RV32I-LABEL: select_cc_example_ugt_reg:766; RV32I:       # %bb.0: # %entry767; RV32I-NEXT:    bltu a1, a0, .LBB27_2768; RV32I-NEXT:  # %bb.1: # %entry769; RV32I-NEXT:    mv a2, a3770; RV32I-NEXT:  .LBB27_2: # %entry771; RV32I-NEXT:    mv a0, a2772; RV32I-NEXT:    ret773;774; RV32IXQCICM-LABEL: select_cc_example_ugt_reg:775; RV32IXQCICM:       # %bb.0: # %entry776; RV32IXQCICM-NEXT:    qc.mvgeu a2, a1, a0, a3777; RV32IXQCICM-NEXT:    mv a0, a2778; RV32IXQCICM-NEXT:    ret779;780; RV32IXQCI-LABEL: select_cc_example_ugt_reg:781; RV32IXQCI:       # %bb.0: # %entry782; RV32IXQCI-NEXT:    qc.mvgeu a2, a1, a0, a3783; RV32IXQCI-NEXT:    mv a0, a2784; RV32IXQCI-NEXT:    ret785entry:786  %cmp = icmp ugt i32 %a, %b787  %sel = select i1 %cmp, i32 %x, i32 %y788  ret i32 %sel789}790 791define i32 @select_cc_example_ult_reg(i32 %a, i32 %b, i32 %x, i32 %y) {792; RV32I-LABEL: select_cc_example_ult_reg:793; RV32I:       # %bb.0: # %entry794; RV32I-NEXT:    bltu a0, a1, .LBB28_2795; RV32I-NEXT:  # %bb.1: # %entry796; RV32I-NEXT:    mv a2, a3797; RV32I-NEXT:  .LBB28_2: # %entry798; RV32I-NEXT:    mv a0, a2799; RV32I-NEXT:    ret800;801; RV32IXQCICM-LABEL: select_cc_example_ult_reg:802; RV32IXQCICM:       # %bb.0: # %entry803; RV32IXQCICM-NEXT:    qc.mvgeu a2, a0, a1, a3804; RV32IXQCICM-NEXT:    mv a0, a2805; RV32IXQCICM-NEXT:    ret806;807; RV32IXQCI-LABEL: select_cc_example_ult_reg:808; RV32IXQCI:       # %bb.0: # %entry809; RV32IXQCI-NEXT:    qc.mvgeu a2, a0, a1, a3810; RV32IXQCI-NEXT:    mv a0, a2811; RV32IXQCI-NEXT:    ret812entry:813  %cmp = icmp ult i32 %a, %b814  %sel = select i1 %cmp, i32 %x, i32 %y815  ret i32 %sel816}817 818define i32 @select_cc_example_uge_reg(i32 %a, i32 %b, i32 %x, i32 %y) {819; RV32I-LABEL: select_cc_example_uge_reg:820; RV32I:       # %bb.0: # %entry821; RV32I-NEXT:    bgeu a0, a1, .LBB29_2822; RV32I-NEXT:  # %bb.1: # %entry823; RV32I-NEXT:    mv a2, a3824; RV32I-NEXT:  .LBB29_2: # %entry825; RV32I-NEXT:    mv a0, a2826; RV32I-NEXT:    ret827;828; RV32IXQCICM-LABEL: select_cc_example_uge_reg:829; RV32IXQCICM:       # %bb.0: # %entry830; RV32IXQCICM-NEXT:    qc.mvltu a2, a0, a1, a3831; RV32IXQCICM-NEXT:    mv a0, a2832; RV32IXQCICM-NEXT:    ret833;834; RV32IXQCI-LABEL: select_cc_example_uge_reg:835; RV32IXQCI:       # %bb.0: # %entry836; RV32IXQCI-NEXT:    qc.mvltu a2, a0, a1, a3837; RV32IXQCI-NEXT:    mv a0, a2838; RV32IXQCI-NEXT:    ret839entry:840  %cmp = icmp uge i32 %a, %b841  %sel = select i1 %cmp, i32 %x, i32 %y842  ret i32 %sel843}844 845define i32 @select_cc_example_ule_reg(i32 %a, i32 %b, i32 %x, i32 %y) {846; RV32I-LABEL: select_cc_example_ule_reg:847; RV32I:       # %bb.0: # %entry848; RV32I-NEXT:    bgeu a1, a0, .LBB30_2849; RV32I-NEXT:  # %bb.1: # %entry850; RV32I-NEXT:    mv a2, a3851; RV32I-NEXT:  .LBB30_2: # %entry852; RV32I-NEXT:    mv a0, a2853; RV32I-NEXT:    ret854;855; RV32IXQCICM-LABEL: select_cc_example_ule_reg:856; RV32IXQCICM:       # %bb.0: # %entry857; RV32IXQCICM-NEXT:    qc.mvltu a2, a1, a0, a3858; RV32IXQCICM-NEXT:    mv a0, a2859; RV32IXQCICM-NEXT:    ret860;861; RV32IXQCI-LABEL: select_cc_example_ule_reg:862; RV32IXQCI:       # %bb.0: # %entry863; RV32IXQCI-NEXT:    qc.mvltu a2, a1, a0, a3864; RV32IXQCI-NEXT:    mv a0, a2865; RV32IXQCI-NEXT:    ret866entry:867  %cmp = icmp ule i32 %a, %b868  %sel = select i1 %cmp, i32 %x, i32 %y869  ret i32 %sel870}871 872define i32 @select_cc_example_ule_neg(i32 %a, i32 %b, i32 %x, i32 %y) {873; RV32I-LABEL: select_cc_example_ule_neg:874; RV32I:       # %bb.0: # %entry875; RV32I-NEXT:    li a1, -10876; RV32I-NEXT:    bltu a0, a1, .LBB31_2877; RV32I-NEXT:  # %bb.1: # %entry878; RV32I-NEXT:    mv a2, a3879; RV32I-NEXT:  .LBB31_2: # %entry880; RV32I-NEXT:    mv a0, a2881; RV32I-NEXT:    ret882;883; RV32IXQCICM-LABEL: select_cc_example_ule_neg:884; RV32IXQCICM:       # %bb.0: # %entry885; RV32IXQCICM-NEXT:    li a1, -10886; RV32IXQCICM-NEXT:    qc.mvgeu a2, a0, a1, a3887; RV32IXQCICM-NEXT:    mv a0, a2888; RV32IXQCICM-NEXT:    ret889;890; RV32IXQCI-LABEL: select_cc_example_ule_neg:891; RV32IXQCI:       # %bb.0: # %entry892; RV32IXQCI-NEXT:    li a1, -10893; RV32IXQCI-NEXT:    qc.mvgeu a2, a0, a1, a3894; RV32IXQCI-NEXT:    mv a0, a2895; RV32IXQCI-NEXT:    ret896entry:897  %cmp = icmp ule i32 %a, -11898  %sel = select i1 %cmp, i32 %x, i32 %y899  ret i32 %sel900}901 902define i32 @select_cc_example_eq_mv(i32 %a, i32 %b, i32 %x, i32 %y) {903; RV32I-LABEL: select_cc_example_eq_mv:904; RV32I:       # %bb.0: # %entry905; RV32I-NEXT:    beq a2, a1, .LBB32_2906; RV32I-NEXT:  # %bb.1: # %entry907; RV32I-NEXT:    mv a0, a3908; RV32I-NEXT:  .LBB32_2: # %entry909; RV32I-NEXT:    ret910;911; RV32IXQCICM-LABEL: select_cc_example_eq_mv:912; RV32IXQCICM:       # %bb.0: # %entry913; RV32IXQCICM-NEXT:    qc.mvne a0, a2, a1, a3914; RV32IXQCICM-NEXT:    ret915;916; RV32IXQCI-LABEL: select_cc_example_eq_mv:917; RV32IXQCI:       # %bb.0: # %entry918; RV32IXQCI-NEXT:    qc.mvne a0, a2, a1, a3919; RV32IXQCI-NEXT:    ret920entry:921  %cmp = icmp eq i32 %x, %b922  %sel = select i1 %cmp, i32 %a, i32 %y923  ret i32 %sel924}925 926define i32 @select_cc_example_lt_mv(i32 %a, i32 %b, i32 %x, i32 %y) {927; RV32I-LABEL: select_cc_example_lt_mv:928; RV32I:       # %bb.0: # %entry929; RV32I-NEXT:    blt a2, a1, .LBB33_2930; RV32I-NEXT:  # %bb.1: # %entry931; RV32I-NEXT:    mv a0, a3932; RV32I-NEXT:  .LBB33_2: # %entry933; RV32I-NEXT:    ret934;935; RV32IXQCICM-LABEL: select_cc_example_lt_mv:936; RV32IXQCICM:       # %bb.0: # %entry937; RV32IXQCICM-NEXT:    qc.mvge a0, a2, a1, a3938; RV32IXQCICM-NEXT:    ret939;940; RV32IXQCI-LABEL: select_cc_example_lt_mv:941; RV32IXQCI:       # %bb.0: # %entry942; RV32IXQCI-NEXT:    qc.mvge a0, a2, a1, a3943; RV32IXQCI-NEXT:    ret944entry:945  %cmp = icmp slt i32 %x, %b946  %sel = select i1 %cmp, i32 %a, i32 %y947  ret i32 %sel948}949 950define i32 @select_cc_example_ge_mv(i32 %a, i32 %b, i32 %x, i32 %y) {951; RV32I-LABEL: select_cc_example_ge_mv:952; RV32I:       # %bb.0: # %entry953; RV32I-NEXT:    bge a2, a1, .LBB34_2954; RV32I-NEXT:  # %bb.1: # %entry955; RV32I-NEXT:    mv a0, a3956; RV32I-NEXT:  .LBB34_2: # %entry957; RV32I-NEXT:    ret958;959; RV32IXQCICM-LABEL: select_cc_example_ge_mv:960; RV32IXQCICM:       # %bb.0: # %entry961; RV32IXQCICM-NEXT:    qc.mvlt a0, a2, a1, a3962; RV32IXQCICM-NEXT:    ret963;964; RV32IXQCI-LABEL: select_cc_example_ge_mv:965; RV32IXQCI:       # %bb.0: # %entry966; RV32IXQCI-NEXT:    qc.mvlt a0, a2, a1, a3967; RV32IXQCI-NEXT:    ret968entry:969  %cmp = icmp sge i32 %x, %b970  %sel = select i1 %cmp, i32 %a, i32 %y971  ret i32 %sel972}973 974define i32 @select_cc_example_ult_mv(i32 %a, i32 %b, i32 %x, i32 %y) {975; RV32I-LABEL: select_cc_example_ult_mv:976; RV32I:       # %bb.0: # %entry977; RV32I-NEXT:    bltu a2, a1, .LBB35_2978; RV32I-NEXT:  # %bb.1: # %entry979; RV32I-NEXT:    mv a0, a3980; RV32I-NEXT:  .LBB35_2: # %entry981; RV32I-NEXT:    ret982;983; RV32IXQCICM-LABEL: select_cc_example_ult_mv:984; RV32IXQCICM:       # %bb.0: # %entry985; RV32IXQCICM-NEXT:    qc.mvgeu a0, a2, a1, a3986; RV32IXQCICM-NEXT:    ret987;988; RV32IXQCI-LABEL: select_cc_example_ult_mv:989; RV32IXQCI:       # %bb.0: # %entry990; RV32IXQCI-NEXT:    qc.mvgeu a0, a2, a1, a3991; RV32IXQCI-NEXT:    ret992entry:993  %cmp = icmp ult i32 %x, %b994  %sel = select i1 %cmp, i32 %a, i32 %y995  ret i32 %sel996}997 998define i32 @select_cc_example_uge_mv(i32 %a, i32 %b, i32 %x, i32 %y) {999; RV32I-LABEL: select_cc_example_uge_mv:1000; RV32I:       # %bb.0: # %entry1001; RV32I-NEXT:    bgeu a2, a1, .LBB36_21002; RV32I-NEXT:  # %bb.1: # %entry1003; RV32I-NEXT:    mv a0, a31004; RV32I-NEXT:  .LBB36_2: # %entry1005; RV32I-NEXT:    ret1006;1007; RV32IXQCICM-LABEL: select_cc_example_uge_mv:1008; RV32IXQCICM:       # %bb.0: # %entry1009; RV32IXQCICM-NEXT:    qc.mvltu a0, a2, a1, a31010; RV32IXQCICM-NEXT:    ret1011;1012; RV32IXQCI-LABEL: select_cc_example_uge_mv:1013; RV32IXQCI:       # %bb.0: # %entry1014; RV32IXQCI-NEXT:    qc.mvltu a0, a2, a1, a31015; RV32IXQCI-NEXT:    ret1016entry:1017  %cmp = icmp uge i32 %x, %b1018  %sel = select i1 %cmp, i32 %a, i32 %y1019  ret i32 %sel1020}1021 1022define i32 @select_cc_example_eq_imm_mv(i32 %a, i32 %b, i32 %x, i32 %y) {1023; RV32I-LABEL: select_cc_example_eq_imm_mv:1024; RV32I:       # %bb.0: # %entry1025; RV32I-NEXT:    li a1, 111026; RV32I-NEXT:    beq a2, a1, .LBB37_21027; RV32I-NEXT:  # %bb.1: # %entry1028; RV32I-NEXT:    mv a0, a31029; RV32I-NEXT:  .LBB37_2: # %entry1030; RV32I-NEXT:    ret1031;1032; RV32IXQCICM-LABEL: select_cc_example_eq_imm_mv:1033; RV32IXQCICM:       # %bb.0: # %entry1034; RV32IXQCICM-NEXT:    qc.mvnei a0, a2, 11, a31035; RV32IXQCICM-NEXT:    ret1036;1037; RV32IXQCI-LABEL: select_cc_example_eq_imm_mv:1038; RV32IXQCI:       # %bb.0: # %entry1039; RV32IXQCI-NEXT:    qc.mvnei a0, a2, 11, a31040; RV32IXQCI-NEXT:    ret1041entry:1042  %cmp = icmp eq i32 %x, 111043  %sel = select i1 %cmp, i32 %a, i32 %y1044  ret i32 %sel1045}1046 1047define i32 @select_cc_example_lt_imm_mv(i32 %a, i32 %b, i32 %x, i32 %y) {1048; RV32I-LABEL: select_cc_example_lt_imm_mv:1049; RV32I:       # %bb.0: # %entry1050; RV32I-NEXT:    li a1, 111051; RV32I-NEXT:    blt a2, a1, .LBB38_21052; RV32I-NEXT:  # %bb.1: # %entry1053; RV32I-NEXT:    mv a0, a31054; RV32I-NEXT:  .LBB38_2: # %entry1055; RV32I-NEXT:    ret1056;1057; RV32IXQCICM-LABEL: select_cc_example_lt_imm_mv:1058; RV32IXQCICM:       # %bb.0: # %entry1059; RV32IXQCICM-NEXT:    qc.mvgei a0, a2, 11, a31060; RV32IXQCICM-NEXT:    ret1061;1062; RV32IXQCI-LABEL: select_cc_example_lt_imm_mv:1063; RV32IXQCI:       # %bb.0: # %entry1064; RV32IXQCI-NEXT:    qc.mvgei a0, a2, 11, a31065; RV32IXQCI-NEXT:    ret1066entry:1067  %cmp = icmp slt i32 %x, 111068  %sel = select i1 %cmp, i32 %a, i32 %y1069  ret i32 %sel1070}1071 1072define i32 @select_cc_example_ge_imm_mv(i32 %a, i32 %b, i32 %x, i32 %y) {1073; RV32I-LABEL: select_cc_example_ge_imm_mv:1074; RV32I:       # %bb.0: # %entry1075; RV32I-NEXT:    li a1, 101076; RV32I-NEXT:    blt a1, a2, .LBB39_21077; RV32I-NEXT:  # %bb.1: # %entry1078; RV32I-NEXT:    mv a0, a31079; RV32I-NEXT:  .LBB39_2: # %entry1080; RV32I-NEXT:    ret1081;1082; RV32IXQCICM-LABEL: select_cc_example_ge_imm_mv:1083; RV32IXQCICM:       # %bb.0: # %entry1084; RV32IXQCICM-NEXT:    qc.mvlti a0, a2, 11, a31085; RV32IXQCICM-NEXT:    ret1086;1087; RV32IXQCI-LABEL: select_cc_example_ge_imm_mv:1088; RV32IXQCI:       # %bb.0: # %entry1089; RV32IXQCI-NEXT:    qc.mvlti a0, a2, 11, a31090; RV32IXQCI-NEXT:    ret1091entry:1092  %cmp = icmp sge i32 %x, 111093  %sel = select i1 %cmp, i32 %a, i32 %y1094  ret i32 %sel1095}1096 1097define i32 @select_cc_example_ult_imm_mv(i32 %a, i32 %b, i32 %x, i32 %y) {1098; RV32I-LABEL: select_cc_example_ult_imm_mv:1099; RV32I:       # %bb.0: # %entry1100; RV32I-NEXT:    li a1, 111101; RV32I-NEXT:    bltu a2, a1, .LBB40_21102; RV32I-NEXT:  # %bb.1: # %entry1103; RV32I-NEXT:    mv a0, a31104; RV32I-NEXT:  .LBB40_2: # %entry1105; RV32I-NEXT:    ret1106;1107; RV32IXQCICM-LABEL: select_cc_example_ult_imm_mv:1108; RV32IXQCICM:       # %bb.0: # %entry1109; RV32IXQCICM-NEXT:    qc.mvgeui a0, a2, 11, a31110; RV32IXQCICM-NEXT:    ret1111;1112; RV32IXQCI-LABEL: select_cc_example_ult_imm_mv:1113; RV32IXQCI:       # %bb.0: # %entry1114; RV32IXQCI-NEXT:    qc.mvgeui a0, a2, 11, a31115; RV32IXQCI-NEXT:    ret1116entry:1117  %cmp = icmp ult i32 %x, 111118  %sel = select i1 %cmp, i32 %a, i32 %y1119  ret i32 %sel1120}1121 1122define i32 @select_cc_example_uge_imm_mv(i32 %a, i32 %b, i32 %x, i32 %y) {1123; RV32I-LABEL: select_cc_example_uge_imm_mv:1124; RV32I:       # %bb.0: # %entry1125; RV32I-NEXT:    li a1, 101126; RV32I-NEXT:    bltu a1, a2, .LBB41_21127; RV32I-NEXT:  # %bb.1: # %entry1128; RV32I-NEXT:    mv a0, a31129; RV32I-NEXT:  .LBB41_2: # %entry1130; RV32I-NEXT:    ret1131;1132; RV32IXQCICM-LABEL: select_cc_example_uge_imm_mv:1133; RV32IXQCICM:       # %bb.0: # %entry1134; RV32IXQCICM-NEXT:    qc.mvltui a0, a2, 11, a31135; RV32IXQCICM-NEXT:    ret1136;1137; RV32IXQCI-LABEL: select_cc_example_uge_imm_mv:1138; RV32IXQCI:       # %bb.0: # %entry1139; RV32IXQCI-NEXT:    qc.mvltui a0, a2, 11, a31140; RV32IXQCI-NEXT:    ret1141entry:1142  %cmp = icmp uge i32 %x, 111143  %sel = select i1 %cmp, i32 %a, i32 %y1144  ret i32 %sel1145}1146