On Mon, Sep 2, 2024 at 6:12 AM Evgeny Karpov
<evgeny.kar...@microsoft.com> wrote:
>
> The anchors have been disabled as they use symbol + offset, which is
> not applicable for COFF AArch64.

This does not make sense to me at all. Anchors are a small
optimization to group together some static decls so that you could
reuse an anchor point.
Could you expand on this and why you think disabling is correct?
It is so you could do:
        adrp    x0, .LANCHOR0
        add     x2, x0, :lo12:.LANCHOR0
        ldr     w1, [x0, #:lo12:.LANCHOR0]
        ldr     w0, [x2, 4]

Rather than:
        adrp    x1, t
        adrp    x0, t1
        ldr     w1, [x1, #:lo12:t]
        ldr     w0, [x0, #:lo12:t1]
        add     w0, w1, w0

Notice how there is only one adrp in the anchor case.
Could you expand on why the section anchors don't work for pe-coff?

Thanks,
Andrew

>
> gcc/ChangeLog:
>
>         * config/aarch64/aarch64.cc (TARGET_MIN_ANCHOR_OFFSET):
>         Keep default TARGET_MAX_ANCHOR_OFFSET for PECOFF target.
>         (TARGET_MAX_ANCHOR_OFFSET): Likewise.
> ---
>  gcc/config/aarch64/aarch64.cc | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
> index 1d88814f28d..eea9ac02df0 100644
> --- a/gcc/config/aarch64/aarch64.cc
> +++ b/gcc/config/aarch64/aarch64.cc
> @@ -30961,11 +30961,13 @@ aarch64_libgcc_floating_mode_supported_p
>  #undef TARGET_MIN_ANCHOR_OFFSET
>  #define TARGET_MIN_ANCHOR_OFFSET -256
>
> +#if !TARGET_PECOFF
>  /* Limit the maximum anchor offset to 4k-1, since that's the limit for a
>     byte offset; we can do much more for larger data types, but have no way
>     to determine the size of the access.  We assume accesses are aligned.  */
>  #undef TARGET_MAX_ANCHOR_OFFSET
>  #define TARGET_MAX_ANCHOR_OFFSET 4095
> +#endif
>
>  #undef TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT
>  #define TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT \
> --
> 2.34.1
>

Reply via email to