arm: allow type-punning subregs in vpr_register_operand [PR115439]
Subregs that only change the mode of an operand (ie don't change the size) should be safe for the VPR register. If we don't permit them we may end up with some redundant copy instructions. gcc: PR target/115439 * config/arm/predicates.md (vpr_register_operand): Allow type-punning subregs.
This commit is contained in:
parent
baa9b2b8d2
commit
6e4045513d
1 changed files with 13 additions and 3 deletions
|
@ -99,11 +99,21 @@
|
|||
})
|
||||
|
||||
(define_predicate "vpr_register_operand"
|
||||
(match_code "reg")
|
||||
(match_code "reg,subreg")
|
||||
{
|
||||
return REG_P (op)
|
||||
if (SUBREG_P (op))
|
||||
{
|
||||
/* Only allow subregs if they are strictly type punning. */
|
||||
if ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (op)))
|
||||
!= GET_MODE_SIZE (GET_MODE (op)))
|
||||
|| SUBREG_BYTE (op) != 0)
|
||||
return false;
|
||||
op = SUBREG_REG (op);
|
||||
}
|
||||
|
||||
return (REG_P (op)
|
||||
&& (REGNO (op) >= FIRST_PSEUDO_REGISTER
|
||||
|| IS_VPR_REGNUM (REGNO (op)));
|
||||
|| IS_VPR_REGNUM (REGNO (op))));
|
||||
})
|
||||
|
||||
(define_predicate "imm_for_neon_inv_logic_operand"
|
||||
|
|
Loading…
Add table
Reference in a new issue