1594579b7SPhilip Reames; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2594579b7SPhilip Reames; RUN: llc -mtriple=riscv32 -target-abi ilp32d -mattr=+c,+f,+d \ 3594579b7SPhilip Reames; RUN: -riscv-no-aliases < %s \ 4c532e6dbSPhilip Reames; RUN: | FileCheck -check-prefix=RV32IFDC %s 5594579b7SPhilip Reames; RUN: llc -mtriple=riscv32 -target-abi ilp32d -mattr=-c,+f,+d \ 6594579b7SPhilip Reames; RUN: -riscv-no-aliases < %s \ 7c532e6dbSPhilip Reames; RUN: | FileCheck -check-prefix=RV32IFD %s 80e6c1576SIvan Tetyushkin 90e6c1576SIvan Tetyushkin; constant is small and fit in 6 bit (compress imm) 10c532e6dbSPhilip Reamesdefine i32 @ne_small_pos(i32 %in0) minsize { 11594579b7SPhilip Reames; RV32IFDC-LABEL: ne_small_pos: 12594579b7SPhilip Reames; RV32IFDC: # %bb.0: 136657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, 20 146657d4bdSPhilip Reames; RV32IFDC-NEXT: bne a0, a1, .LBB0_2 15594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 16*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 17594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB0_2: 18*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 19594579b7SPhilip Reames; 20594579b7SPhilip Reames; RV32IFD-LABEL: ne_small_pos: 21594579b7SPhilip Reames; RV32IFD: # %bb.0: 226657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 20 236657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB0_2 24594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 25594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 266657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 27594579b7SPhilip Reames; RV32IFD-NEXT: .LBB0_2: 286657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 29594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 30c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, 20 311c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 320e6c1576SIvan Tetyushkin ret i32 %toRet 330e6c1576SIvan Tetyushkin} 340e6c1576SIvan Tetyushkin 350e6c1576SIvan Tetyushkin; constant is small and fit in 6 bit (compress imm) 36c532e6dbSPhilip Reamesdefine i32 @ne_small_neg(i32 %in0) minsize { 37594579b7SPhilip Reames; RV32IFDC-LABEL: ne_small_neg: 38594579b7SPhilip Reames; RV32IFDC: # %bb.0: 396657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, -20 406657d4bdSPhilip Reames; RV32IFDC-NEXT: bne a0, a1, .LBB1_2 41594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 42*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 43594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB1_2: 44*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 45594579b7SPhilip Reames; 46594579b7SPhilip Reames; RV32IFD-LABEL: ne_small_neg: 47594579b7SPhilip Reames; RV32IFD: # %bb.0: 486657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -20 496657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB1_2 50594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 51594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 526657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 53594579b7SPhilip Reames; RV32IFD-NEXT: .LBB1_2: 546657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 55594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 56c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, -20 571c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 580e6c1576SIvan Tetyushkin ret i32 %toRet 590e6c1576SIvan Tetyushkin} 600e6c1576SIvan Tetyushkin 610e6c1576SIvan Tetyushkin; constant is small and fit in 6 bit (compress imm) 62c532e6dbSPhilip Reamesdefine i32 @ne_small_edge_pos(i32 %in0) minsize { 63594579b7SPhilip Reames; RV32IFDC-LABEL: ne_small_edge_pos: 64594579b7SPhilip Reames; RV32IFDC: # %bb.0: 656657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, 31 666657d4bdSPhilip Reames; RV32IFDC-NEXT: bne a0, a1, .LBB2_2 67594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 68*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 69594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB2_2: 70*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 71594579b7SPhilip Reames; 72594579b7SPhilip Reames; RV32IFD-LABEL: ne_small_edge_pos: 73594579b7SPhilip Reames; RV32IFD: # %bb.0: 746657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 31 756657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB2_2 76594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 77594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 786657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 79594579b7SPhilip Reames; RV32IFD-NEXT: .LBB2_2: 806657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 81594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 82c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, 31 831c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 840e6c1576SIvan Tetyushkin ret i32 %toRet 850e6c1576SIvan Tetyushkin} 860e6c1576SIvan Tetyushkin 870e6c1576SIvan Tetyushkin; constant is small and fit in 6 bit (compress imm) 88c532e6dbSPhilip Reamesdefine i32 @ne_small_edge_neg(i32 %in0) minsize { 89594579b7SPhilip Reames; RV32IFDC-LABEL: ne_small_edge_neg: 90594579b7SPhilip Reames; RV32IFDC: # %bb.0: 916657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, -32 926657d4bdSPhilip Reames; RV32IFDC-NEXT: bne a0, a1, .LBB3_2 93594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 94*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 95594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB3_2: 96*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 97594579b7SPhilip Reames; 98594579b7SPhilip Reames; RV32IFD-LABEL: ne_small_edge_neg: 99594579b7SPhilip Reames; RV32IFD: # %bb.0: 1006657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -32 1016657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB3_2 102594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 103594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 1046657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 105594579b7SPhilip Reames; RV32IFD-NEXT: .LBB3_2: 1066657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 107594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 108c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, -32 1091c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 1100e6c1576SIvan Tetyushkin ret i32 %toRet 1110e6c1576SIvan Tetyushkin} 1120e6c1576SIvan Tetyushkin 1130e6c1576SIvan Tetyushkin; constant is medium and not fit in 6 bit (compress imm), 1140e6c1576SIvan Tetyushkin; but fit in 12 bit (imm) 115c532e6dbSPhilip Reamesdefine i32 @ne_medium_ledge_pos(i32 %in0) minsize { 116594579b7SPhilip Reames; RV32IFDC-LABEL: ne_medium_ledge_pos: 117594579b7SPhilip Reames; RV32IFDC: # %bb.0: 1186657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, -33 1196657d4bdSPhilip Reames; RV32IFDC-NEXT: c.bnez a0, .LBB4_2 120594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 121*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 122594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB4_2: 123*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 124594579b7SPhilip Reames; 125594579b7SPhilip Reames; RV32IFD-LABEL: ne_medium_ledge_pos: 126594579b7SPhilip Reames; RV32IFD: # %bb.0: 1276657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 33 1286657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB4_2 129594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 130594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 1316657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 132594579b7SPhilip Reames; RV32IFD-NEXT: .LBB4_2: 1336657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 134594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 135c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, 33 1361c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 1370e6c1576SIvan Tetyushkin ret i32 %toRet 1380e6c1576SIvan Tetyushkin} 1390e6c1576SIvan Tetyushkin 1400e6c1576SIvan Tetyushkin; constant is medium and not fit in 6 bit (compress imm), 1410e6c1576SIvan Tetyushkin; but fit in 12 bit (imm) 142c532e6dbSPhilip Reamesdefine i32 @ne_medium_ledge_neg(i32 %in0) minsize { 143594579b7SPhilip Reames; RV32IFDC-LABEL: ne_medium_ledge_neg: 144594579b7SPhilip Reames; RV32IFDC: # %bb.0: 1456657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, 33 1466657d4bdSPhilip Reames; RV32IFDC-NEXT: c.bnez a0, .LBB5_2 147594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 148*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 149594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB5_2: 150*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 151594579b7SPhilip Reames; 152594579b7SPhilip Reames; RV32IFD-LABEL: ne_medium_ledge_neg: 153594579b7SPhilip Reames; RV32IFD: # %bb.0: 1546657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -33 1556657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB5_2 156594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 157594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 1586657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 159594579b7SPhilip Reames; RV32IFD-NEXT: .LBB5_2: 1606657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 161594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 162c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, -33 1631c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 1640e6c1576SIvan Tetyushkin ret i32 %toRet 1650e6c1576SIvan Tetyushkin} 1660e6c1576SIvan Tetyushkin 1670e6c1576SIvan Tetyushkin; constant is medium and not fit in 6 bit (compress imm), 1680e6c1576SIvan Tetyushkin; but fit in 12 bit (imm) 169c532e6dbSPhilip Reamesdefine i32 @ne_medium_pos(i32 %in0) minsize { 170594579b7SPhilip Reames; RV32IFDC-LABEL: ne_medium_pos: 171594579b7SPhilip Reames; RV32IFDC: # %bb.0: 1726657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, -63 1736657d4bdSPhilip Reames; RV32IFDC-NEXT: c.bnez a0, .LBB6_2 174594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 175*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 176594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB6_2: 177*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 178594579b7SPhilip Reames; 179594579b7SPhilip Reames; RV32IFD-LABEL: ne_medium_pos: 180594579b7SPhilip Reames; RV32IFD: # %bb.0: 1816657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 63 1826657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB6_2 183594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 184594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 1856657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 186594579b7SPhilip Reames; RV32IFD-NEXT: .LBB6_2: 1876657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 188594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 189c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, 63 1901c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 1910e6c1576SIvan Tetyushkin ret i32 %toRet 1920e6c1576SIvan Tetyushkin} 1930e6c1576SIvan Tetyushkin 1940e6c1576SIvan Tetyushkin; constant is medium and not fit in 6 bit (compress imm), 1950e6c1576SIvan Tetyushkin; but fit in 12 bit (imm) 196c532e6dbSPhilip Reamesdefine i32 @ne_medium_neg(i32 %in0) minsize { 197594579b7SPhilip Reames; RV32IFDC-LABEL: ne_medium_neg: 198594579b7SPhilip Reames; RV32IFDC: # %bb.0: 1996657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, 63 2006657d4bdSPhilip Reames; RV32IFDC-NEXT: c.bnez a0, .LBB7_2 201594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 202*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 203594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB7_2: 204*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 205594579b7SPhilip Reames; 206594579b7SPhilip Reames; RV32IFD-LABEL: ne_medium_neg: 207594579b7SPhilip Reames; RV32IFD: # %bb.0: 2086657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -63 2096657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB7_2 210594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 211594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 2126657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 213594579b7SPhilip Reames; RV32IFD-NEXT: .LBB7_2: 2146657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 215594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 216c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, -63 2171c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 2180e6c1576SIvan Tetyushkin ret i32 %toRet 2190e6c1576SIvan Tetyushkin} 2200e6c1576SIvan Tetyushkin 2210e6c1576SIvan Tetyushkin; constant is medium and not fit in 6 bit (compress imm), 2220e6c1576SIvan Tetyushkin; but fit in 12 bit (imm) 223c532e6dbSPhilip Reamesdefine i32 @ne_medium_bedge_pos(i32 %in0) minsize { 224594579b7SPhilip Reames; RV32IFDC-LABEL: ne_medium_bedge_pos: 225594579b7SPhilip Reames; RV32IFDC: # %bb.0: 2266657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, -2047 2276657d4bdSPhilip Reames; RV32IFDC-NEXT: c.bnez a0, .LBB8_2 228594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 229*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 230594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB8_2: 231*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 232594579b7SPhilip Reames; 233594579b7SPhilip Reames; RV32IFD-LABEL: ne_medium_bedge_pos: 234594579b7SPhilip Reames; RV32IFD: # %bb.0: 2356657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 2047 2366657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB8_2 237594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 238594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 2396657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 240594579b7SPhilip Reames; RV32IFD-NEXT: .LBB8_2: 2416657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 242594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 243c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, 2047 2441c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 2450e6c1576SIvan Tetyushkin ret i32 %toRet 2460e6c1576SIvan Tetyushkin} 2470e6c1576SIvan Tetyushkin 2480e6c1576SIvan Tetyushkin; constant is medium and not fit in 6 bit (compress imm), 2490e6c1576SIvan Tetyushkin; but fit in 12 bit (imm), negative value fit in 12 bit too. 250c532e6dbSPhilip Reamesdefine i32 @ne_medium_bedge_neg(i32 %in0) minsize { 251594579b7SPhilip Reames; RV32IFDC-LABEL: ne_medium_bedge_neg: 252594579b7SPhilip Reames; RV32IFDC: # %bb.0: 2536657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, 2047 2546657d4bdSPhilip Reames; RV32IFDC-NEXT: c.bnez a0, .LBB9_2 255594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 256*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 257594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB9_2: 258*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 259594579b7SPhilip Reames; 260594579b7SPhilip Reames; RV32IFD-LABEL: ne_medium_bedge_neg: 261594579b7SPhilip Reames; RV32IFD: # %bb.0: 2626657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -2047 2636657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB9_2 264594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 265594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 2666657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 267594579b7SPhilip Reames; RV32IFD-NEXT: .LBB9_2: 2686657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 269594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 270c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, -2047 2711c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 2720e6c1576SIvan Tetyushkin ret i32 %toRet 2730e6c1576SIvan Tetyushkin} 2740e6c1576SIvan Tetyushkin 2750e6c1576SIvan Tetyushkin; constant is big and do not fit in 12 bit (imm), fit in i32 276c532e6dbSPhilip Reamesdefine i32 @ne_big_ledge_pos(i32 %in0) minsize { 277594579b7SPhilip Reames; RV32IFDC-LABEL: ne_big_ledge_pos: 278594579b7SPhilip Reames; RV32IFDC: # %bb.0: 2796657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, 1 2806657d4bdSPhilip Reames; RV32IFDC-NEXT: c.slli a1, 11 2816657d4bdSPhilip Reames; RV32IFDC-NEXT: bne a0, a1, .LBB10_2 282594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 283*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 284594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB10_2: 285*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 286594579b7SPhilip Reames; 287594579b7SPhilip Reames; RV32IFD-LABEL: ne_big_ledge_pos: 288594579b7SPhilip Reames; RV32IFD: # %bb.0: 2896657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 1 2906657d4bdSPhilip Reames; RV32IFD-NEXT: slli a1, a1, 11 2916657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB10_2 292594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 293594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 2946657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 295594579b7SPhilip Reames; RV32IFD-NEXT: .LBB10_2: 2966657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 297594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 298c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, 2048 2991c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 3000e6c1576SIvan Tetyushkin ret i32 %toRet 3010e6c1576SIvan Tetyushkin} 3020e6c1576SIvan Tetyushkin 3030e6c1576SIvan Tetyushkin; constant is big and do not fit in 12 bit (imm), fit in i32 304c532e6dbSPhilip Reamesdefine i32 @ne_big_ledge_neg(i32 %in0) minsize { 305594579b7SPhilip Reames; RV32IFDC-LABEL: ne_big_ledge_neg: 306594579b7SPhilip Reames; RV32IFDC: # %bb.0: 3076657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a1, zero, -2048 3086657d4bdSPhilip Reames; RV32IFDC-NEXT: bne a0, a1, .LBB11_2 309594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 310*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 311594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB11_2: 312*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 313594579b7SPhilip Reames; 314594579b7SPhilip Reames; RV32IFD-LABEL: ne_big_ledge_neg: 315594579b7SPhilip Reames; RV32IFD: # %bb.0: 3166657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -2048 3176657d4bdSPhilip Reames; RV32IFD-NEXT: bne a0, a1, .LBB11_2 318594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 319594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 3206657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 321594579b7SPhilip Reames; RV32IFD-NEXT: .LBB11_2: 3226657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 323594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 324c532e6dbSPhilip Reames %cmp = icmp ne i32 %in0, -2048 325c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 326c532e6dbSPhilip Reames ret i32 %toRet 327c532e6dbSPhilip Reames} 328c532e6dbSPhilip Reames 329c532e6dbSPhilip Reames 330c532e6dbSPhilip Reames;; Same as above, but for eq 331c532e6dbSPhilip Reames 332c532e6dbSPhilip Reames; constant is small and fit in 6 bit (compress imm) 333c532e6dbSPhilip Reamesdefine i32 @eq_small_pos(i32 %in0) minsize { 334594579b7SPhilip Reames; RV32IFDC-LABEL: eq_small_pos: 335594579b7SPhilip Reames; RV32IFDC: # %bb.0: 3366657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, 20 3376657d4bdSPhilip Reames; RV32IFDC-NEXT: beq a0, a1, .LBB12_2 338594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 339*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 340594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB12_2: 341*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 342594579b7SPhilip Reames; 343594579b7SPhilip Reames; RV32IFD-LABEL: eq_small_pos: 344594579b7SPhilip Reames; RV32IFD: # %bb.0: 3456657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 20 3466657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB12_2 347594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 348594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 3496657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 350594579b7SPhilip Reames; RV32IFD-NEXT: .LBB12_2: 3516657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 352594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 353c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, 20 354c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 355c532e6dbSPhilip Reames ret i32 %toRet 356c532e6dbSPhilip Reames} 357c532e6dbSPhilip Reames 358c532e6dbSPhilip Reames; constant is small and fit in 6 bit (compress imm) 359c532e6dbSPhilip Reamesdefine i32 @eq_small_neg(i32 %in0) minsize { 360594579b7SPhilip Reames; RV32IFDC-LABEL: eq_small_neg: 361594579b7SPhilip Reames; RV32IFDC: # %bb.0: 3626657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, -20 3636657d4bdSPhilip Reames; RV32IFDC-NEXT: beq a0, a1, .LBB13_2 364594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 365*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 366594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB13_2: 367*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 368594579b7SPhilip Reames; 369594579b7SPhilip Reames; RV32IFD-LABEL: eq_small_neg: 370594579b7SPhilip Reames; RV32IFD: # %bb.0: 3716657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -20 3726657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB13_2 373594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 374594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 3756657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 376594579b7SPhilip Reames; RV32IFD-NEXT: .LBB13_2: 3776657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 378594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 379c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, -20 380c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 381c532e6dbSPhilip Reames ret i32 %toRet 382c532e6dbSPhilip Reames} 383c532e6dbSPhilip Reames 384c532e6dbSPhilip Reames; constant is small and fit in 6 bit (compress imm) 385c532e6dbSPhilip Reamesdefine i32 @eq_small_edge_pos(i32 %in0) minsize { 386594579b7SPhilip Reames; RV32IFDC-LABEL: eq_small_edge_pos: 387594579b7SPhilip Reames; RV32IFDC: # %bb.0: 3886657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, 31 3896657d4bdSPhilip Reames; RV32IFDC-NEXT: beq a0, a1, .LBB14_2 390594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 391*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 392594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB14_2: 393*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 394594579b7SPhilip Reames; 395594579b7SPhilip Reames; RV32IFD-LABEL: eq_small_edge_pos: 396594579b7SPhilip Reames; RV32IFD: # %bb.0: 3976657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 31 3986657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB14_2 399594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 400594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 4016657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 402594579b7SPhilip Reames; RV32IFD-NEXT: .LBB14_2: 4036657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 404594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 405c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, 31 406c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 407c532e6dbSPhilip Reames ret i32 %toRet 408c532e6dbSPhilip Reames} 409c532e6dbSPhilip Reames 410c532e6dbSPhilip Reames; constant is small and fit in 6 bit (compress imm) 411c532e6dbSPhilip Reamesdefine i32 @eq_small_edge_neg(i32 %in0) minsize { 412594579b7SPhilip Reames; RV32IFDC-LABEL: eq_small_edge_neg: 413594579b7SPhilip Reames; RV32IFDC: # %bb.0: 4146657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, -32 4156657d4bdSPhilip Reames; RV32IFDC-NEXT: beq a0, a1, .LBB15_2 416594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 417*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 418594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB15_2: 419*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 420594579b7SPhilip Reames; 421594579b7SPhilip Reames; RV32IFD-LABEL: eq_small_edge_neg: 422594579b7SPhilip Reames; RV32IFD: # %bb.0: 4236657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -32 4246657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB15_2 425594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 426594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 4276657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 428594579b7SPhilip Reames; RV32IFD-NEXT: .LBB15_2: 4296657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 430594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 431c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, -32 432c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 433c532e6dbSPhilip Reames ret i32 %toRet 434c532e6dbSPhilip Reames} 435c532e6dbSPhilip Reames 436c532e6dbSPhilip Reames; constant is medium and not fit in 6 bit (compress imm), 437c532e6dbSPhilip Reames; but fit in 12 bit (imm) 438c532e6dbSPhilip Reamesdefine i32 @eq_medium_ledge_pos(i32 %in0) minsize { 439594579b7SPhilip Reames; RV32IFDC-LABEL: eq_medium_ledge_pos: 440594579b7SPhilip Reames; RV32IFDC: # %bb.0: 4416657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, -33 4426657d4bdSPhilip Reames; RV32IFDC-NEXT: c.beqz a0, .LBB16_2 443594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 444*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 445594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB16_2: 446*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 447594579b7SPhilip Reames; 448594579b7SPhilip Reames; RV32IFD-LABEL: eq_medium_ledge_pos: 449594579b7SPhilip Reames; RV32IFD: # %bb.0: 4506657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 33 4516657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB16_2 452594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 453594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 4546657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 455594579b7SPhilip Reames; RV32IFD-NEXT: .LBB16_2: 4566657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 457594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 458c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, 33 459c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 460c532e6dbSPhilip Reames ret i32 %toRet 461c532e6dbSPhilip Reames} 462c532e6dbSPhilip Reames 463c532e6dbSPhilip Reames; constant is medium and not fit in 6 bit (compress imm), 464c532e6dbSPhilip Reames; but fit in 12 bit (imm) 465c532e6dbSPhilip Reamesdefine i32 @eq_medium_ledge_neg(i32 %in0) minsize { 466594579b7SPhilip Reames; RV32IFDC-LABEL: eq_medium_ledge_neg: 467594579b7SPhilip Reames; RV32IFDC: # %bb.0: 4686657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, 33 4696657d4bdSPhilip Reames; RV32IFDC-NEXT: c.beqz a0, .LBB17_2 470594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 471*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 472594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB17_2: 473*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 474594579b7SPhilip Reames; 475594579b7SPhilip Reames; RV32IFD-LABEL: eq_medium_ledge_neg: 476594579b7SPhilip Reames; RV32IFD: # %bb.0: 4776657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -33 4786657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB17_2 479594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 480594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 4816657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 482594579b7SPhilip Reames; RV32IFD-NEXT: .LBB17_2: 4836657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 484594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 485c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, -33 486c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 487c532e6dbSPhilip Reames ret i32 %toRet 488c532e6dbSPhilip Reames} 489c532e6dbSPhilip Reames 490c532e6dbSPhilip Reames; constant is medium and not fit in 6 bit (compress imm), 491c532e6dbSPhilip Reames; but fit in 12 bit (imm) 492c532e6dbSPhilip Reamesdefine i32 @eq_medium_pos(i32 %in0) minsize { 493594579b7SPhilip Reames; RV32IFDC-LABEL: eq_medium_pos: 494594579b7SPhilip Reames; RV32IFDC: # %bb.0: 4956657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, -63 4966657d4bdSPhilip Reames; RV32IFDC-NEXT: c.beqz a0, .LBB18_2 497594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 498*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 499594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB18_2: 500*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 501594579b7SPhilip Reames; 502594579b7SPhilip Reames; RV32IFD-LABEL: eq_medium_pos: 503594579b7SPhilip Reames; RV32IFD: # %bb.0: 5046657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 63 5056657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB18_2 506594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 507594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 5086657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 509594579b7SPhilip Reames; RV32IFD-NEXT: .LBB18_2: 5106657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 511594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 512c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, 63 513c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 514c532e6dbSPhilip Reames ret i32 %toRet 515c532e6dbSPhilip Reames} 516c532e6dbSPhilip Reames 517c532e6dbSPhilip Reames; constant is medium and not fit in 6 bit (compress imm), 518c532e6dbSPhilip Reames; but fit in 12 bit (imm) 519c532e6dbSPhilip Reamesdefine i32 @eq_medium_neg(i32 %in0) minsize { 520594579b7SPhilip Reames; RV32IFDC-LABEL: eq_medium_neg: 521594579b7SPhilip Reames; RV32IFDC: # %bb.0: 5226657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, 63 5236657d4bdSPhilip Reames; RV32IFDC-NEXT: c.beqz a0, .LBB19_2 524594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 525*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 526594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB19_2: 527*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 528594579b7SPhilip Reames; 529594579b7SPhilip Reames; RV32IFD-LABEL: eq_medium_neg: 530594579b7SPhilip Reames; RV32IFD: # %bb.0: 5316657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -63 5326657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB19_2 533594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 534594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 5356657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 536594579b7SPhilip Reames; RV32IFD-NEXT: .LBB19_2: 5376657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 538594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 539c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, -63 540c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 541c532e6dbSPhilip Reames ret i32 %toRet 542c532e6dbSPhilip Reames} 543c532e6dbSPhilip Reames 544c532e6dbSPhilip Reames; constant is medium and not fit in 6 bit (compress imm), 545c532e6dbSPhilip Reames; but fit in 12 bit (imm) 546c532e6dbSPhilip Reamesdefine i32 @eq_medium_bedge_pos(i32 %in0) minsize { 547594579b7SPhilip Reames; RV32IFDC-LABEL: eq_medium_bedge_pos: 548594579b7SPhilip Reames; RV32IFDC: # %bb.0: 5496657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, -2047 5506657d4bdSPhilip Reames; RV32IFDC-NEXT: c.beqz a0, .LBB20_2 551594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 552*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 553594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB20_2: 554*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 555594579b7SPhilip Reames; 556594579b7SPhilip Reames; RV32IFD-LABEL: eq_medium_bedge_pos: 557594579b7SPhilip Reames; RV32IFD: # %bb.0: 5586657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 2047 5596657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB20_2 560594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 561594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 5626657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 563594579b7SPhilip Reames; RV32IFD-NEXT: .LBB20_2: 5646657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 565594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 566c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, 2047 567c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 568c532e6dbSPhilip Reames ret i32 %toRet 569c532e6dbSPhilip Reames} 570c532e6dbSPhilip Reames 571c532e6dbSPhilip Reames; constant is medium and not fit in 6 bit (compress imm), 572c532e6dbSPhilip Reames; but fit in 12 bit (imm), negative value fit in 12 bit too. 573c532e6dbSPhilip Reamesdefine i32 @eq_medium_bedge_neg(i32 %in0) minsize { 574594579b7SPhilip Reames; RV32IFDC-LABEL: eq_medium_bedge_neg: 575594579b7SPhilip Reames; RV32IFDC: # %bb.0: 5766657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a0, a0, 2047 5776657d4bdSPhilip Reames; RV32IFDC-NEXT: c.beqz a0, .LBB21_2 578594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 579*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 580594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB21_2: 581*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 582594579b7SPhilip Reames; 583594579b7SPhilip Reames; RV32IFD-LABEL: eq_medium_bedge_neg: 584594579b7SPhilip Reames; RV32IFD: # %bb.0: 5856657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -2047 5866657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB21_2 587594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 588594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 5896657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 590594579b7SPhilip Reames; RV32IFD-NEXT: .LBB21_2: 5916657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 592594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 593c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, -2047 594c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 595c532e6dbSPhilip Reames ret i32 %toRet 596c532e6dbSPhilip Reames} 597c532e6dbSPhilip Reames 598c532e6dbSPhilip Reames; constant is big and do not fit in 12 bit (imm), fit in i32 599c532e6dbSPhilip Reamesdefine i32 @eq_big_ledge_pos(i32 %in0) minsize { 600594579b7SPhilip Reames; RV32IFDC-LABEL: eq_big_ledge_pos: 601594579b7SPhilip Reames; RV32IFDC: # %bb.0: 6026657d4bdSPhilip Reames; RV32IFDC-NEXT: c.li a1, 1 6036657d4bdSPhilip Reames; RV32IFDC-NEXT: c.slli a1, 11 6046657d4bdSPhilip Reames; RV32IFDC-NEXT: beq a0, a1, .LBB22_2 605594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 606*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 607594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB22_2: 608*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 609594579b7SPhilip Reames; 610594579b7SPhilip Reames; RV32IFD-LABEL: eq_big_ledge_pos: 611594579b7SPhilip Reames; RV32IFD: # %bb.0: 6126657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, 1 6136657d4bdSPhilip Reames; RV32IFD-NEXT: slli a1, a1, 11 6146657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB22_2 615594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 616594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 6176657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 618594579b7SPhilip Reames; RV32IFD-NEXT: .LBB22_2: 6196657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 620594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 621c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, 2048 622c532e6dbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 623c532e6dbSPhilip Reames ret i32 %toRet 624c532e6dbSPhilip Reames} 625c532e6dbSPhilip Reames 626c532e6dbSPhilip Reames; constant is big and do not fit in 12 bit (imm), fit in i32 627c532e6dbSPhilip Reamesdefine i32 @eq_big_ledge_neg(i32 %in0) minsize { 628594579b7SPhilip Reames; RV32IFDC-LABEL: eq_big_ledge_neg: 629594579b7SPhilip Reames; RV32IFDC: # %bb.0: 6306657d4bdSPhilip Reames; RV32IFDC-NEXT: addi a1, zero, -2048 6316657d4bdSPhilip Reames; RV32IFDC-NEXT: beq a0, a1, .LBB23_2 632594579b7SPhilip Reames; RV32IFDC-NEXT: # %bb.1: 633*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_1 634594579b7SPhilip Reames; RV32IFDC-NEXT: .LBB23_2: 635*80df56e0SMark Goncharov; RV32IFDC-NEXT: tail OUTLINED_FUNCTION_0 636594579b7SPhilip Reames; 637594579b7SPhilip Reames; RV32IFD-LABEL: eq_big_ledge_neg: 638594579b7SPhilip Reames; RV32IFD: # %bb.0: 6396657d4bdSPhilip Reames; RV32IFD-NEXT: addi a1, zero, -2048 6406657d4bdSPhilip Reames; RV32IFD-NEXT: beq a0, a1, .LBB23_2 641594579b7SPhilip Reames; RV32IFD-NEXT: # %bb.1: 642594579b7SPhilip Reames; RV32IFD-NEXT: addi a0, zero, 42 6436657d4bdSPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 644594579b7SPhilip Reames; RV32IFD-NEXT: .LBB23_2: 6456657d4bdSPhilip Reames; RV32IFD-NEXT: addi a0, zero, -99 646594579b7SPhilip Reames; RV32IFD-NEXT: jalr zero, 0(ra) 647c532e6dbSPhilip Reames %cmp = icmp eq i32 %in0, -2048 6481c41d0cbSPhilip Reames %toRet = select i1 %cmp, i32 -99, i32 42 6490e6c1576SIvan Tetyushkin ret i32 %toRet 6500e6c1576SIvan Tetyushkin} 651