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