From: Alex Coplan Date: Tue, 7 Nov 2023 21:25:02 +0000 (+0000) Subject: aarch64: Fix up printing of ldp/stp with -msve-vector-bits=128 X-Git-Tag: basepoints/gcc-15~3537 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b73a685ebf498af62f6a8743303c20fcdee827a1;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 6d973b3901c7..b8eb8d629527 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -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;