aarch64: Fix up printing of ldp/stp with -msve-vector-bits=128
Later patches allow using SVE modes in ldp/stp with -msve-vector-bits=128, so we need to make sure that we don't use SVE addressing modes when printing the address for the ldp/stp. This patch does that. gcc/ChangeLog: * config/aarch64/aarch64.cc (aarch64_print_address_internal): Handle SVE modes when printing ldp/stp addresses.
This commit is contained in:
parent
94415eb7a4
commit
b73a685ebf
1 changed files with 7 additions and 1 deletions
|
@ -12345,6 +12345,9 @@ aarch64_print_address_internal (FILE *f, machine_mode mode, rtx x,
|
|||
return false;
|
||||
}
|
||||
|
||||
const bool load_store_pair_p = (type == ADDR_QUERY_LDP_STP
|
||||
|| type == ADDR_QUERY_LDP_STP_N);
|
||||
|
||||
if (aarch64_classify_address (&addr, x, mode, true, type))
|
||||
switch (addr.type)
|
||||
{
|
||||
|
@ -12356,7 +12359,7 @@ aarch64_print_address_internal (FILE *f, machine_mode mode, rtx x,
|
|||
}
|
||||
|
||||
vec_flags = aarch64_classify_vector_mode (mode);
|
||||
if (vec_flags & VEC_ANY_SVE)
|
||||
if ((vec_flags & VEC_ANY_SVE) && !load_store_pair_p)
|
||||
{
|
||||
HOST_WIDE_INT vnum
|
||||
= exact_div (addr.const_offset,
|
||||
|
@ -12366,6 +12369,9 @@ aarch64_print_address_internal (FILE *f, machine_mode mode, rtx x,
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!CONST_INT_P (addr.offset))
|
||||
return false;
|
||||
|
||||
asm_fprintf (f, "[%s, %wd]", reg_names[REGNO (addr.base)],
|
||||
INTVAL (addr.offset));
|
||||
return true;
|
||||
|
|
Loading…
Add table
Reference in a new issue