RISC-V: costs: handle BSWAP
The BSWAP operation is not handled in rtx_costs. Add it. With Zbb, BSWAP for XLEN is a single instruction; for smaller modes, it will expand into two. gcc/ChangeLog: * config/riscv/riscv.cc (riscv_rtx_costs): Add BSWAP.
This commit is contained in:
parent
d699d32f47
commit
e7c8f5005b
1 changed files with 10 additions and 0 deletions
|
@ -2562,6 +2562,16 @@ riscv_rtx_costs (rtx x, machine_mode mode, int outer_code, int opno ATTRIBUTE_UN
|
|||
*total = riscv_extend_cost (XEXP (x, 0), GET_CODE (x) == ZERO_EXTEND);
|
||||
return false;
|
||||
|
||||
case BSWAP:
|
||||
if (TARGET_ZBB)
|
||||
{
|
||||
/* RISC-V only defines rev8 for XLEN, so we will need an extra
|
||||
shift-right instruction for smaller modes. */
|
||||
*total = COSTS_N_INSNS (mode == word_mode ? 1 : 2);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
case FLOAT:
|
||||
case UNSIGNED_FLOAT:
|
||||
case FIX:
|
||||
|
|
Loading…
Add table
Reference in a new issue