RFR(S): 8225169: fix LongDoubleTest on AArch64
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Fri Jun 14 12:35:25 UTC 2019
Looks good - well spotted!
Maurizio
On 14/06/2019 04:33, Nick Gasson wrote:
> Hi,
>
> LongDoubleTest fails on AArch64 when using the direct invoker but
> passes with the universal invoker.
>
> DirectSignatureShuffler::isDirectBinding accepts vector arguments
> where the argument size matches the storage size. On AArch64 a `long
> double' argument is passed as a quad precision IEEE754-2008 floating
> point number using all 128 bits of a vector register, whereas a
> `double' argument uses the least significant 64 bits of a vector
> register. But both are passed using the vector storage class which has
> size 128 bits.
>
> The direct invoker only has specialisations for `double' so
> isDirectBinding should only accept vector class arguments that are
> exactly 64 bits wide.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8225169
> Webrev: http://cr.openjdk.java.net/~ngasson/foreign/8225169/webrev.0/
>
> There's also a trivial unrelated change to LayoutTypeImpl::pointerSize
> to switch NativeTypes.LittleEndian.SysVABI to AArch64ABI that I missed
> before.
>
> Tested jtreg jdk_foreign on x86 and AArch64.
>
> Thanks,
> Nick
More information about the panama-dev
mailing list