Lines 891-907
riscv_compressed_lw_address_p (rtx x)
Link Here
|
891 |
bool result = riscv_classify_address (&addr, x, GET_MODE (x), |
891 |
bool result = riscv_classify_address (&addr, x, GET_MODE (x), |
892 |
reload_completed); |
892 |
reload_completed); |
893 |
|
893 |
|
894 |
/* Before reload, assuming all load/stores of valid addresses get compressed |
|
|
895 |
gives better code size than checking if the address is reg + small_offset |
896 |
early on. */ |
897 |
if (result && !reload_completed) |
898 |
return true; |
899 |
|
900 |
/* Return false if address is not compressed_reg + small_offset. */ |
894 |
/* Return false if address is not compressed_reg + small_offset. */ |
901 |
if (!result |
895 |
if (!result |
902 |
|| addr.type != ADDRESS_REG |
896 |
|| addr.type != ADDRESS_REG |
903 |
|| (!riscv_compressed_reg_p (REGNO (addr.reg)) |
897 |
/* Before reload, assume all registers are OK. */ |
904 |
&& addr.reg != stack_pointer_rtx) |
898 |
|| (reload_completed |
|
|
899 |
&& !riscv_compressed_reg_p (REGNO (addr.reg)) |
900 |
&& addr.reg != stack_pointer_rtx) |
905 |
|| !riscv_compressed_lw_offset_p (addr.offset)) |
901 |
|| !riscv_compressed_lw_offset_p (addr.offset)) |
906 |
return false; |
902 |
return false; |
907 |
|
903 |
|
Lines 1708-1713
riscv_rtx_costs (rtx x, machine_mode mode, int outer_code, int opno ATTRIBUTE_UN
Link Here
|
1708 |
instructions it needs. */ |
1726 |
instructions it needs. */ |
1709 |
if ((cost = riscv_address_insns (XEXP (x, 0), mode, true)) > 0) |
1727 |
if ((cost = riscv_address_insns (XEXP (x, 0), mode, true)) > 0) |
1710 |
{ |
1728 |
{ |
|
|
1729 |
/* When optimizing for size, make uncompressible 32-bit addresses |
1730 |
more expensive so that compressible 32-bit addresses are |
1731 |
preferred. */ |
1732 |
if (TARGET_RVC && !speed && riscv_mshorten_memrefs && mode == SImode |
1733 |
&& !riscv_compressed_lw_address_p (XEXP (x, 0))) |
1734 |
cost++; |
1735 |
|
1711 |
*total = COSTS_N_INSNS (cost + tune_param->memory_cost); |
1736 |
*total = COSTS_N_INSNS (cost + tune_param->memory_cost); |
1712 |
return true; |
1737 |
return true; |
1713 |
} |
1738 |
} |