On Mon, Jun 11, 2012 at 3:16 PM, Richard Earnshaw <rearn...@arm.com> wrote:
> The ARM ABI states that vectors larger than 64 bits in size still have
> 64-bit alignment; never-the-less, the HW supports alignment hints of up
> to 128-bits in some cases and will trap in a vector has an alignment
> that less than the hint.  GCC currently hard-codes larger vectors to be
> aligned by the size of the vector, which means that 128-bit vectors are
> marked as being 128-bit aligned.
>
> The ARM ABI unfortunately does not support generating such alignment for
> parameters passed by value and this can lead to traps at run time.  It
> seems that the best way to solve this problem is to allow the back-end
> to set an upper limit on the alignment permitted for a vector.
>
> I've implemented this as a separate hook, rather than using the existing
> hooks because there's a strong likelihood of breaking some existing ABIs
> if I did it another way.
>
> There are a couple of tests that will need some re-working before this
> can be committed to deal with the fall-out of making this change; I'll
> prepare those changes if this patch is deemed generally acceptable.

Hm.  Where would you use that target hook?

Richard.

> R.
>
>        * target.def (TARGET_VECTOR_ALIGNMENT): New hook.
>        * doc/tm.texi.in (TARGET_VECTOR_ALIGNMENT): Likewise.
>        * doc/tm.texi: Regenerate.
>        * targhooks.c (default_vector_alignment): New function.
>        * arm.c (arm_vector_alignment): New function.
>        (TARGET_VECTOR_ALIGNMENT): Define.

Reply via email to