brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.2 KiB · c0234f4 Raw
651 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=riscv32 -target-abi ilp32d -mattr=+c,+f,+d \3; RUN:     -M no-aliases < %s \4; RUN:   | FileCheck -check-prefix=RV32IFDC %s5; RUN: llc -mtriple=riscv32 -target-abi ilp32d -mattr=-c,+f,+d \6; RUN:     -M no-aliases < %s \7; RUN:   | FileCheck -check-prefix=RV32IFD %s8 9; constant is small and fit in 6 bit (compress imm)10define i32 @ne_small_pos(i32 %in0) minsize {11; RV32IFDC-LABEL: ne_small_pos:12; RV32IFDC:       # %bb.0:13; RV32IFDC-NEXT:    c.li a1, 2014; RV32IFDC-NEXT:    bne a0, a1, .LBB0_215; RV32IFDC-NEXT:  # %bb.1:16; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_117; RV32IFDC-NEXT:  .LBB0_2:18; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_019;20; RV32IFD-LABEL: ne_small_pos:21; RV32IFD:       # %bb.0:22; RV32IFD-NEXT:    addi a1, zero, 2023; RV32IFD-NEXT:    bne a0, a1, .LBB0_224; RV32IFD-NEXT:  # %bb.1:25; RV32IFD-NEXT:    addi a0, zero, 4226; RV32IFD-NEXT:    jalr zero, 0(ra)27; RV32IFD-NEXT:  .LBB0_2:28; RV32IFD-NEXT:    addi a0, zero, -9929; RV32IFD-NEXT:    jalr zero, 0(ra)30  %cmp = icmp ne i32 %in0, 2031  %toRet = select i1 %cmp, i32 -99, i32 4232  ret i32 %toRet33}34 35; constant is small and fit in 6 bit (compress imm)36define i32 @ne_small_neg(i32 %in0) minsize {37; RV32IFDC-LABEL: ne_small_neg:38; RV32IFDC:       # %bb.0:39; RV32IFDC-NEXT:    c.li a1, -2040; RV32IFDC-NEXT:    bne a0, a1, .LBB1_241; RV32IFDC-NEXT:  # %bb.1:42; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_143; RV32IFDC-NEXT:  .LBB1_2:44; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_045;46; RV32IFD-LABEL: ne_small_neg:47; RV32IFD:       # %bb.0:48; RV32IFD-NEXT:    addi a1, zero, -2049; RV32IFD-NEXT:    bne a0, a1, .LBB1_250; RV32IFD-NEXT:  # %bb.1:51; RV32IFD-NEXT:    addi a0, zero, 4252; RV32IFD-NEXT:    jalr zero, 0(ra)53; RV32IFD-NEXT:  .LBB1_2:54; RV32IFD-NEXT:    addi a0, zero, -9955; RV32IFD-NEXT:    jalr zero, 0(ra)56  %cmp = icmp ne i32 %in0, -2057  %toRet = select i1 %cmp, i32 -99, i32 4258  ret i32 %toRet59}60 61; constant is small and fit in 6 bit (compress imm)62define i32 @ne_small_edge_pos(i32 %in0) minsize {63; RV32IFDC-LABEL: ne_small_edge_pos:64; RV32IFDC:       # %bb.0:65; RV32IFDC-NEXT:    c.li a1, 3166; RV32IFDC-NEXT:    bne a0, a1, .LBB2_267; RV32IFDC-NEXT:  # %bb.1:68; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_169; RV32IFDC-NEXT:  .LBB2_2:70; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_071;72; RV32IFD-LABEL: ne_small_edge_pos:73; RV32IFD:       # %bb.0:74; RV32IFD-NEXT:    addi a1, zero, 3175; RV32IFD-NEXT:    bne a0, a1, .LBB2_276; RV32IFD-NEXT:  # %bb.1:77; RV32IFD-NEXT:    addi a0, zero, 4278; RV32IFD-NEXT:    jalr zero, 0(ra)79; RV32IFD-NEXT:  .LBB2_2:80; RV32IFD-NEXT:    addi a0, zero, -9981; RV32IFD-NEXT:    jalr zero, 0(ra)82  %cmp = icmp ne i32 %in0, 3183  %toRet = select i1 %cmp, i32 -99, i32 4284  ret i32 %toRet85}86 87; constant is small and fit in 6 bit (compress imm)88define i32 @ne_small_edge_neg(i32 %in0) minsize {89; RV32IFDC-LABEL: ne_small_edge_neg:90; RV32IFDC:       # %bb.0:91; RV32IFDC-NEXT:    c.li a1, -3292; RV32IFDC-NEXT:    bne a0, a1, .LBB3_293; RV32IFDC-NEXT:  # %bb.1:94; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_195; RV32IFDC-NEXT:  .LBB3_2:96; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_097;98; RV32IFD-LABEL: ne_small_edge_neg:99; RV32IFD:       # %bb.0:100; RV32IFD-NEXT:    addi a1, zero, -32101; RV32IFD-NEXT:    bne a0, a1, .LBB3_2102; RV32IFD-NEXT:  # %bb.1:103; RV32IFD-NEXT:    addi a0, zero, 42104; RV32IFD-NEXT:    jalr zero, 0(ra)105; RV32IFD-NEXT:  .LBB3_2:106; RV32IFD-NEXT:    addi a0, zero, -99107; RV32IFD-NEXT:    jalr zero, 0(ra)108  %cmp = icmp ne i32 %in0, -32109  %toRet = select i1 %cmp, i32 -99, i32 42110  ret i32 %toRet111}112 113; constant is medium and not fit in 6 bit (compress imm),114; but fit in 12 bit (imm)115define i32 @ne_medium_ledge_pos(i32 %in0) minsize {116; RV32IFDC-LABEL: ne_medium_ledge_pos:117; RV32IFDC:       # %bb.0:118; RV32IFDC-NEXT:    addi a0, a0, -33119; RV32IFDC-NEXT:    c.bnez a0, .LBB4_2120; RV32IFDC-NEXT:  # %bb.1:121; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1122; RV32IFDC-NEXT:  .LBB4_2:123; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0124;125; RV32IFD-LABEL: ne_medium_ledge_pos:126; RV32IFD:       # %bb.0:127; RV32IFD-NEXT:    addi a1, zero, 33128; RV32IFD-NEXT:    bne a0, a1, .LBB4_2129; RV32IFD-NEXT:  # %bb.1:130; RV32IFD-NEXT:    addi a0, zero, 42131; RV32IFD-NEXT:    jalr zero, 0(ra)132; RV32IFD-NEXT:  .LBB4_2:133; RV32IFD-NEXT:    addi a0, zero, -99134; RV32IFD-NEXT:    jalr zero, 0(ra)135  %cmp = icmp ne i32 %in0, 33136  %toRet = select i1 %cmp, i32 -99, i32 42137  ret i32 %toRet138}139 140; constant is medium and not fit in 6 bit (compress imm),141; but fit in 12 bit (imm)142define i32 @ne_medium_ledge_neg(i32 %in0) minsize {143; RV32IFDC-LABEL: ne_medium_ledge_neg:144; RV32IFDC:       # %bb.0:145; RV32IFDC-NEXT:    addi a0, a0, 33146; RV32IFDC-NEXT:    c.bnez a0, .LBB5_2147; RV32IFDC-NEXT:  # %bb.1:148; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1149; RV32IFDC-NEXT:  .LBB5_2:150; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0151;152; RV32IFD-LABEL: ne_medium_ledge_neg:153; RV32IFD:       # %bb.0:154; RV32IFD-NEXT:    addi a1, zero, -33155; RV32IFD-NEXT:    bne a0, a1, .LBB5_2156; RV32IFD-NEXT:  # %bb.1:157; RV32IFD-NEXT:    addi a0, zero, 42158; RV32IFD-NEXT:    jalr zero, 0(ra)159; RV32IFD-NEXT:  .LBB5_2:160; RV32IFD-NEXT:    addi a0, zero, -99161; RV32IFD-NEXT:    jalr zero, 0(ra)162  %cmp = icmp ne i32 %in0, -33163  %toRet = select i1 %cmp, i32 -99, i32 42164  ret i32 %toRet165}166 167; constant is medium and not fit in 6 bit (compress imm),168; but fit in 12 bit (imm)169define i32 @ne_medium_pos(i32 %in0) minsize {170; RV32IFDC-LABEL: ne_medium_pos:171; RV32IFDC:       # %bb.0:172; RV32IFDC-NEXT:    addi a0, a0, -63173; RV32IFDC-NEXT:    c.bnez a0, .LBB6_2174; RV32IFDC-NEXT:  # %bb.1:175; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1176; RV32IFDC-NEXT:  .LBB6_2:177; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0178;179; RV32IFD-LABEL: ne_medium_pos:180; RV32IFD:       # %bb.0:181; RV32IFD-NEXT:    addi a1, zero, 63182; RV32IFD-NEXT:    bne a0, a1, .LBB6_2183; RV32IFD-NEXT:  # %bb.1:184; RV32IFD-NEXT:    addi a0, zero, 42185; RV32IFD-NEXT:    jalr zero, 0(ra)186; RV32IFD-NEXT:  .LBB6_2:187; RV32IFD-NEXT:    addi a0, zero, -99188; RV32IFD-NEXT:    jalr zero, 0(ra)189  %cmp = icmp ne i32 %in0, 63190  %toRet = select i1 %cmp, i32 -99, i32 42191  ret i32 %toRet192}193 194; constant is medium and not fit in 6 bit (compress imm),195; but fit in 12 bit (imm)196define i32 @ne_medium_neg(i32 %in0) minsize {197; RV32IFDC-LABEL: ne_medium_neg:198; RV32IFDC:       # %bb.0:199; RV32IFDC-NEXT:    addi a0, a0, 63200; RV32IFDC-NEXT:    c.bnez a0, .LBB7_2201; RV32IFDC-NEXT:  # %bb.1:202; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1203; RV32IFDC-NEXT:  .LBB7_2:204; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0205;206; RV32IFD-LABEL: ne_medium_neg:207; RV32IFD:       # %bb.0:208; RV32IFD-NEXT:    addi a1, zero, -63209; RV32IFD-NEXT:    bne a0, a1, .LBB7_2210; RV32IFD-NEXT:  # %bb.1:211; RV32IFD-NEXT:    addi a0, zero, 42212; RV32IFD-NEXT:    jalr zero, 0(ra)213; RV32IFD-NEXT:  .LBB7_2:214; RV32IFD-NEXT:    addi a0, zero, -99215; RV32IFD-NEXT:    jalr zero, 0(ra)216  %cmp = icmp ne i32 %in0, -63217  %toRet = select i1 %cmp, i32 -99, i32 42218  ret i32 %toRet219}220 221; constant is medium and not fit in 6 bit (compress imm),222; but fit in 12 bit (imm)223define i32 @ne_medium_bedge_pos(i32 %in0) minsize {224; RV32IFDC-LABEL: ne_medium_bedge_pos:225; RV32IFDC:       # %bb.0:226; RV32IFDC-NEXT:    addi a0, a0, -2047227; RV32IFDC-NEXT:    c.bnez a0, .LBB8_2228; RV32IFDC-NEXT:  # %bb.1:229; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1230; RV32IFDC-NEXT:  .LBB8_2:231; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0232;233; RV32IFD-LABEL: ne_medium_bedge_pos:234; RV32IFD:       # %bb.0:235; RV32IFD-NEXT:    addi a1, zero, 2047236; RV32IFD-NEXT:    bne a0, a1, .LBB8_2237; RV32IFD-NEXT:  # %bb.1:238; RV32IFD-NEXT:    addi a0, zero, 42239; RV32IFD-NEXT:    jalr zero, 0(ra)240; RV32IFD-NEXT:  .LBB8_2:241; RV32IFD-NEXT:    addi a0, zero, -99242; RV32IFD-NEXT:    jalr zero, 0(ra)243  %cmp = icmp ne i32 %in0, 2047244  %toRet = select i1 %cmp, i32 -99, i32 42245  ret i32 %toRet246}247 248; constant is medium and not fit in 6 bit (compress imm),249; but fit in 12 bit (imm), negative value fit in 12 bit too.250define i32 @ne_medium_bedge_neg(i32 %in0) minsize {251; RV32IFDC-LABEL: ne_medium_bedge_neg:252; RV32IFDC:       # %bb.0:253; RV32IFDC-NEXT:    addi a0, a0, 2047254; RV32IFDC-NEXT:    c.bnez a0, .LBB9_2255; RV32IFDC-NEXT:  # %bb.1:256; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1257; RV32IFDC-NEXT:  .LBB9_2:258; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0259;260; RV32IFD-LABEL: ne_medium_bedge_neg:261; RV32IFD:       # %bb.0:262; RV32IFD-NEXT:    addi a1, zero, -2047263; RV32IFD-NEXT:    bne a0, a1, .LBB9_2264; RV32IFD-NEXT:  # %bb.1:265; RV32IFD-NEXT:    addi a0, zero, 42266; RV32IFD-NEXT:    jalr zero, 0(ra)267; RV32IFD-NEXT:  .LBB9_2:268; RV32IFD-NEXT:    addi a0, zero, -99269; RV32IFD-NEXT:    jalr zero, 0(ra)270  %cmp = icmp ne i32 %in0, -2047271  %toRet = select i1 %cmp, i32 -99, i32 42272  ret i32 %toRet273}274 275; constant is big and do not fit in 12 bit (imm), fit in i32276define i32 @ne_big_ledge_pos(i32 %in0) minsize {277; RV32IFDC-LABEL: ne_big_ledge_pos:278; RV32IFDC:       # %bb.0:279; RV32IFDC-NEXT:    c.li a1, 1280; RV32IFDC-NEXT:    c.slli a1, 11281; RV32IFDC-NEXT:    bne a0, a1, .LBB10_2282; RV32IFDC-NEXT:  # %bb.1:283; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1284; RV32IFDC-NEXT:  .LBB10_2:285; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0286;287; RV32IFD-LABEL: ne_big_ledge_pos:288; RV32IFD:       # %bb.0:289; RV32IFD-NEXT:    addi a1, zero, 1290; RV32IFD-NEXT:    slli a1, a1, 11291; RV32IFD-NEXT:    bne a0, a1, .LBB10_2292; RV32IFD-NEXT:  # %bb.1:293; RV32IFD-NEXT:    addi a0, zero, 42294; RV32IFD-NEXT:    jalr zero, 0(ra)295; RV32IFD-NEXT:  .LBB10_2:296; RV32IFD-NEXT:    addi a0, zero, -99297; RV32IFD-NEXT:    jalr zero, 0(ra)298  %cmp = icmp ne i32 %in0, 2048299  %toRet = select i1 %cmp, i32 -99, i32 42300  ret i32 %toRet301}302 303; constant is big and do not fit in 12 bit (imm), fit in i32304define i32 @ne_big_ledge_neg(i32 %in0) minsize {305; RV32IFDC-LABEL: ne_big_ledge_neg:306; RV32IFDC:       # %bb.0:307; RV32IFDC-NEXT:    addi a1, zero, -2048308; RV32IFDC-NEXT:    bne a0, a1, .LBB11_2309; RV32IFDC-NEXT:  # %bb.1:310; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1311; RV32IFDC-NEXT:  .LBB11_2:312; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0313;314; RV32IFD-LABEL: ne_big_ledge_neg:315; RV32IFD:       # %bb.0:316; RV32IFD-NEXT:    addi a1, zero, -2048317; RV32IFD-NEXT:    bne a0, a1, .LBB11_2318; RV32IFD-NEXT:  # %bb.1:319; RV32IFD-NEXT:    addi a0, zero, 42320; RV32IFD-NEXT:    jalr zero, 0(ra)321; RV32IFD-NEXT:  .LBB11_2:322; RV32IFD-NEXT:    addi a0, zero, -99323; RV32IFD-NEXT:    jalr zero, 0(ra)324  %cmp = icmp ne i32 %in0, -2048325  %toRet = select i1 %cmp, i32 -99, i32 42326  ret i32 %toRet327}328 329 330;; Same as above, but for eq331 332; constant is small and fit in 6 bit (compress imm)333define i32 @eq_small_pos(i32 %in0) minsize {334; RV32IFDC-LABEL: eq_small_pos:335; RV32IFDC:       # %bb.0:336; RV32IFDC-NEXT:    c.li a1, 20337; RV32IFDC-NEXT:    beq a0, a1, .LBB12_2338; RV32IFDC-NEXT:  # %bb.1:339; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1340; RV32IFDC-NEXT:  .LBB12_2:341; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0342;343; RV32IFD-LABEL: eq_small_pos:344; RV32IFD:       # %bb.0:345; RV32IFD-NEXT:    addi a1, zero, 20346; RV32IFD-NEXT:    beq a0, a1, .LBB12_2347; RV32IFD-NEXT:  # %bb.1:348; RV32IFD-NEXT:    addi a0, zero, 42349; RV32IFD-NEXT:    jalr zero, 0(ra)350; RV32IFD-NEXT:  .LBB12_2:351; RV32IFD-NEXT:    addi a0, zero, -99352; RV32IFD-NEXT:    jalr zero, 0(ra)353  %cmp = icmp eq i32 %in0, 20354  %toRet = select i1 %cmp, i32 -99, i32 42355  ret i32 %toRet356}357 358; constant is small and fit in 6 bit (compress imm)359define i32 @eq_small_neg(i32 %in0) minsize {360; RV32IFDC-LABEL: eq_small_neg:361; RV32IFDC:       # %bb.0:362; RV32IFDC-NEXT:    c.li a1, -20363; RV32IFDC-NEXT:    beq a0, a1, .LBB13_2364; RV32IFDC-NEXT:  # %bb.1:365; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1366; RV32IFDC-NEXT:  .LBB13_2:367; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0368;369; RV32IFD-LABEL: eq_small_neg:370; RV32IFD:       # %bb.0:371; RV32IFD-NEXT:    addi a1, zero, -20372; RV32IFD-NEXT:    beq a0, a1, .LBB13_2373; RV32IFD-NEXT:  # %bb.1:374; RV32IFD-NEXT:    addi a0, zero, 42375; RV32IFD-NEXT:    jalr zero, 0(ra)376; RV32IFD-NEXT:  .LBB13_2:377; RV32IFD-NEXT:    addi a0, zero, -99378; RV32IFD-NEXT:    jalr zero, 0(ra)379  %cmp = icmp eq i32 %in0, -20380  %toRet = select i1 %cmp, i32 -99, i32 42381  ret i32 %toRet382}383 384; constant is small and fit in 6 bit (compress imm)385define i32 @eq_small_edge_pos(i32 %in0) minsize {386; RV32IFDC-LABEL: eq_small_edge_pos:387; RV32IFDC:       # %bb.0:388; RV32IFDC-NEXT:    c.li a1, 31389; RV32IFDC-NEXT:    beq a0, a1, .LBB14_2390; RV32IFDC-NEXT:  # %bb.1:391; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1392; RV32IFDC-NEXT:  .LBB14_2:393; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0394;395; RV32IFD-LABEL: eq_small_edge_pos:396; RV32IFD:       # %bb.0:397; RV32IFD-NEXT:    addi a1, zero, 31398; RV32IFD-NEXT:    beq a0, a1, .LBB14_2399; RV32IFD-NEXT:  # %bb.1:400; RV32IFD-NEXT:    addi a0, zero, 42401; RV32IFD-NEXT:    jalr zero, 0(ra)402; RV32IFD-NEXT:  .LBB14_2:403; RV32IFD-NEXT:    addi a0, zero, -99404; RV32IFD-NEXT:    jalr zero, 0(ra)405  %cmp = icmp eq i32 %in0, 31406  %toRet = select i1 %cmp, i32 -99, i32 42407  ret i32 %toRet408}409 410; constant is small and fit in 6 bit (compress imm)411define i32 @eq_small_edge_neg(i32 %in0) minsize {412; RV32IFDC-LABEL: eq_small_edge_neg:413; RV32IFDC:       # %bb.0:414; RV32IFDC-NEXT:    c.li a1, -32415; RV32IFDC-NEXT:    beq a0, a1, .LBB15_2416; RV32IFDC-NEXT:  # %bb.1:417; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1418; RV32IFDC-NEXT:  .LBB15_2:419; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0420;421; RV32IFD-LABEL: eq_small_edge_neg:422; RV32IFD:       # %bb.0:423; RV32IFD-NEXT:    addi a1, zero, -32424; RV32IFD-NEXT:    beq a0, a1, .LBB15_2425; RV32IFD-NEXT:  # %bb.1:426; RV32IFD-NEXT:    addi a0, zero, 42427; RV32IFD-NEXT:    jalr zero, 0(ra)428; RV32IFD-NEXT:  .LBB15_2:429; RV32IFD-NEXT:    addi a0, zero, -99430; RV32IFD-NEXT:    jalr zero, 0(ra)431  %cmp = icmp eq i32 %in0, -32432  %toRet = select i1 %cmp, i32 -99, i32 42433  ret i32 %toRet434}435 436; constant is medium and not fit in 6 bit (compress imm),437; but fit in 12 bit (imm)438define i32 @eq_medium_ledge_pos(i32 %in0) minsize {439; RV32IFDC-LABEL: eq_medium_ledge_pos:440; RV32IFDC:       # %bb.0:441; RV32IFDC-NEXT:    addi a0, a0, -33442; RV32IFDC-NEXT:    c.beqz a0, .LBB16_2443; RV32IFDC-NEXT:  # %bb.1:444; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1445; RV32IFDC-NEXT:  .LBB16_2:446; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0447;448; RV32IFD-LABEL: eq_medium_ledge_pos:449; RV32IFD:       # %bb.0:450; RV32IFD-NEXT:    addi a1, zero, 33451; RV32IFD-NEXT:    beq a0, a1, .LBB16_2452; RV32IFD-NEXT:  # %bb.1:453; RV32IFD-NEXT:    addi a0, zero, 42454; RV32IFD-NEXT:    jalr zero, 0(ra)455; RV32IFD-NEXT:  .LBB16_2:456; RV32IFD-NEXT:    addi a0, zero, -99457; RV32IFD-NEXT:    jalr zero, 0(ra)458  %cmp = icmp eq i32 %in0, 33459  %toRet = select i1 %cmp, i32 -99, i32 42460  ret i32 %toRet461}462 463; constant is medium and not fit in 6 bit (compress imm),464; but fit in 12 bit (imm)465define i32 @eq_medium_ledge_neg(i32 %in0) minsize {466; RV32IFDC-LABEL: eq_medium_ledge_neg:467; RV32IFDC:       # %bb.0:468; RV32IFDC-NEXT:    addi a0, a0, 33469; RV32IFDC-NEXT:    c.beqz a0, .LBB17_2470; RV32IFDC-NEXT:  # %bb.1:471; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1472; RV32IFDC-NEXT:  .LBB17_2:473; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0474;475; RV32IFD-LABEL: eq_medium_ledge_neg:476; RV32IFD:       # %bb.0:477; RV32IFD-NEXT:    addi a1, zero, -33478; RV32IFD-NEXT:    beq a0, a1, .LBB17_2479; RV32IFD-NEXT:  # %bb.1:480; RV32IFD-NEXT:    addi a0, zero, 42481; RV32IFD-NEXT:    jalr zero, 0(ra)482; RV32IFD-NEXT:  .LBB17_2:483; RV32IFD-NEXT:    addi a0, zero, -99484; RV32IFD-NEXT:    jalr zero, 0(ra)485  %cmp = icmp eq i32 %in0, -33486  %toRet = select i1 %cmp, i32 -99, i32 42487  ret i32 %toRet488}489 490; constant is medium and not fit in 6 bit (compress imm),491; but fit in 12 bit (imm)492define i32 @eq_medium_pos(i32 %in0) minsize {493; RV32IFDC-LABEL: eq_medium_pos:494; RV32IFDC:       # %bb.0:495; RV32IFDC-NEXT:    addi a0, a0, -63496; RV32IFDC-NEXT:    c.beqz a0, .LBB18_2497; RV32IFDC-NEXT:  # %bb.1:498; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1499; RV32IFDC-NEXT:  .LBB18_2:500; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0501;502; RV32IFD-LABEL: eq_medium_pos:503; RV32IFD:       # %bb.0:504; RV32IFD-NEXT:    addi a1, zero, 63505; RV32IFD-NEXT:    beq a0, a1, .LBB18_2506; RV32IFD-NEXT:  # %bb.1:507; RV32IFD-NEXT:    addi a0, zero, 42508; RV32IFD-NEXT:    jalr zero, 0(ra)509; RV32IFD-NEXT:  .LBB18_2:510; RV32IFD-NEXT:    addi a0, zero, -99511; RV32IFD-NEXT:    jalr zero, 0(ra)512  %cmp = icmp eq i32 %in0, 63513  %toRet = select i1 %cmp, i32 -99, i32 42514  ret i32 %toRet515}516 517; constant is medium and not fit in 6 bit (compress imm),518; but fit in 12 bit (imm)519define i32 @eq_medium_neg(i32 %in0) minsize {520; RV32IFDC-LABEL: eq_medium_neg:521; RV32IFDC:       # %bb.0:522; RV32IFDC-NEXT:    addi a0, a0, 63523; RV32IFDC-NEXT:    c.beqz a0, .LBB19_2524; RV32IFDC-NEXT:  # %bb.1:525; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1526; RV32IFDC-NEXT:  .LBB19_2:527; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0528;529; RV32IFD-LABEL: eq_medium_neg:530; RV32IFD:       # %bb.0:531; RV32IFD-NEXT:    addi a1, zero, -63532; RV32IFD-NEXT:    beq a0, a1, .LBB19_2533; RV32IFD-NEXT:  # %bb.1:534; RV32IFD-NEXT:    addi a0, zero, 42535; RV32IFD-NEXT:    jalr zero, 0(ra)536; RV32IFD-NEXT:  .LBB19_2:537; RV32IFD-NEXT:    addi a0, zero, -99538; RV32IFD-NEXT:    jalr zero, 0(ra)539  %cmp = icmp eq i32 %in0, -63540  %toRet = select i1 %cmp, i32 -99, i32 42541  ret i32 %toRet542}543 544; constant is medium and not fit in 6 bit (compress imm),545; but fit in 12 bit (imm)546define i32 @eq_medium_bedge_pos(i32 %in0) minsize {547; RV32IFDC-LABEL: eq_medium_bedge_pos:548; RV32IFDC:       # %bb.0:549; RV32IFDC-NEXT:    addi a0, a0, -2047550; RV32IFDC-NEXT:    c.beqz a0, .LBB20_2551; RV32IFDC-NEXT:  # %bb.1:552; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1553; RV32IFDC-NEXT:  .LBB20_2:554; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0555;556; RV32IFD-LABEL: eq_medium_bedge_pos:557; RV32IFD:       # %bb.0:558; RV32IFD-NEXT:    addi a1, zero, 2047559; RV32IFD-NEXT:    beq a0, a1, .LBB20_2560; RV32IFD-NEXT:  # %bb.1:561; RV32IFD-NEXT:    addi a0, zero, 42562; RV32IFD-NEXT:    jalr zero, 0(ra)563; RV32IFD-NEXT:  .LBB20_2:564; RV32IFD-NEXT:    addi a0, zero, -99565; RV32IFD-NEXT:    jalr zero, 0(ra)566  %cmp = icmp eq i32 %in0, 2047567  %toRet = select i1 %cmp, i32 -99, i32 42568  ret i32 %toRet569}570 571; constant is medium and not fit in 6 bit (compress imm),572; but fit in 12 bit (imm), negative value fit in 12 bit too.573define i32 @eq_medium_bedge_neg(i32 %in0) minsize {574; RV32IFDC-LABEL: eq_medium_bedge_neg:575; RV32IFDC:       # %bb.0:576; RV32IFDC-NEXT:    addi a0, a0, 2047577; RV32IFDC-NEXT:    c.beqz a0, .LBB21_2578; RV32IFDC-NEXT:  # %bb.1:579; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1580; RV32IFDC-NEXT:  .LBB21_2:581; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0582;583; RV32IFD-LABEL: eq_medium_bedge_neg:584; RV32IFD:       # %bb.0:585; RV32IFD-NEXT:    addi a1, zero, -2047586; RV32IFD-NEXT:    beq a0, a1, .LBB21_2587; RV32IFD-NEXT:  # %bb.1:588; RV32IFD-NEXT:    addi a0, zero, 42589; RV32IFD-NEXT:    jalr zero, 0(ra)590; RV32IFD-NEXT:  .LBB21_2:591; RV32IFD-NEXT:    addi a0, zero, -99592; RV32IFD-NEXT:    jalr zero, 0(ra)593  %cmp = icmp eq i32 %in0, -2047594  %toRet = select i1 %cmp, i32 -99, i32 42595  ret i32 %toRet596}597 598; constant is big and do not fit in 12 bit (imm), fit in i32599define i32 @eq_big_ledge_pos(i32 %in0) minsize {600; RV32IFDC-LABEL: eq_big_ledge_pos:601; RV32IFDC:       # %bb.0:602; RV32IFDC-NEXT:    c.li a1, 1603; RV32IFDC-NEXT:    c.slli a1, 11604; RV32IFDC-NEXT:    beq a0, a1, .LBB22_2605; RV32IFDC-NEXT:  # %bb.1:606; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1607; RV32IFDC-NEXT:  .LBB22_2:608; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0609;610; RV32IFD-LABEL: eq_big_ledge_pos:611; RV32IFD:       # %bb.0:612; RV32IFD-NEXT:    addi a1, zero, 1613; RV32IFD-NEXT:    slli a1, a1, 11614; RV32IFD-NEXT:    beq a0, a1, .LBB22_2615; RV32IFD-NEXT:  # %bb.1:616; RV32IFD-NEXT:    addi a0, zero, 42617; RV32IFD-NEXT:    jalr zero, 0(ra)618; RV32IFD-NEXT:  .LBB22_2:619; RV32IFD-NEXT:    addi a0, zero, -99620; RV32IFD-NEXT:    jalr zero, 0(ra)621  %cmp = icmp eq i32 %in0, 2048622  %toRet = select i1 %cmp, i32 -99, i32 42623  ret i32 %toRet624}625 626; constant is big and do not fit in 12 bit (imm), fit in i32627define i32 @eq_big_ledge_neg(i32 %in0) minsize {628; RV32IFDC-LABEL: eq_big_ledge_neg:629; RV32IFDC:       # %bb.0:630; RV32IFDC-NEXT:    addi a1, zero, -2048631; RV32IFDC-NEXT:    beq a0, a1, .LBB23_2632; RV32IFDC-NEXT:  # %bb.1:633; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_1634; RV32IFDC-NEXT:  .LBB23_2:635; RV32IFDC-NEXT:    tail OUTLINED_FUNCTION_0636;637; RV32IFD-LABEL: eq_big_ledge_neg:638; RV32IFD:       # %bb.0:639; RV32IFD-NEXT:    addi a1, zero, -2048640; RV32IFD-NEXT:    beq a0, a1, .LBB23_2641; RV32IFD-NEXT:  # %bb.1:642; RV32IFD-NEXT:    addi a0, zero, 42643; RV32IFD-NEXT:    jalr zero, 0(ra)644; RV32IFD-NEXT:  .LBB23_2:645; RV32IFD-NEXT:    addi a0, zero, -99646; RV32IFD-NEXT:    jalr zero, 0(ra)647  %cmp = icmp eq i32 %in0, -2048648  %toRet = select i1 %cmp, i32 -99, i32 42649  ret i32 %toRet650}651