RFR: 8297417: Poly1305IntrinsicFuzzTest fails with tag mismatch exception

Vladimir Ivanov vlivanov at openjdk.org
Wed Nov 23 18:43:31 UTC 2022


On Wed, 23 Nov 2022 02:59:30 GMT, Volodymyr Paprotski <duke at openjdk.org> wrote:

> From https://github.com/openjdk/jdk/pull/10582, `t0` gets clobbered if `rscratch` is used. Example, [here](https://github.com/openjdk/jdk/blob/09f70dad2fe3f0691afacded6c38f61fa8a0d28d/src/hotspot/cpu/x86/stubGenerator_x86_64_poly.cpp#L605-L606): 
> 
> 
>   __ mov(t0, a0);
>   __ andq(t0, ExternalAddress(poly1305_mask44()), rscratch); // First limb (R^4[43:0])

It's a general problem: it's hard to see possible interference when names alias to the same register. I suggest to get rid of `rscratch` declaration and directly refer to `t1` followed by `/*rscratch*/` comment:

  __ movq(t0, a0);
  __ andq(t0, ExternalAddress(poly1305_mask44()), t1 /*rscratch*/); // First limb (Acc[43:0])
  __ movq(C0, t0);

Also, `-XX:+ForceUnreachable` is designed to stress non-rip addressing mode. Worth adding it to the corresponding test.

-------------

PR: https://git.openjdk.org/jdk/pull/11308


More information about the hotspot-compiler-dev mailing list