RFR: 8287091: aarch64 : guarantee(val < (1ULL << nbits)) failed: Field too big for insn
Aleksey Shipilev
shade at openjdk.java.net
Tue May 24 08:39:39 UTC 2022
On Mon, 23 May 2022 14:55:34 GMT, Andrew Haley <aph at openjdk.org> wrote:
> This is fallout from the patch for JDK-8285923.
>
> The root cause of this bug is that there is a template definition of `cmp(register, immediate)` but there is not a template definition of `cmn(register, immediate)`. Given that we are close to rampdown, this patch fixes the bug in the most minimal way possible, by using `adds(zr, register, immediate)`, which correctly handles 64-bit operands.
>
> In the next release cycle we should tidy up `cmn()` in the same way that was done for JDK-8206895.
>
> Alternatively, we could back out JDK-8285923. I'd rather not, given that it fixes a real (if latent) bug, but if needs be I'll do so.
All right, so we just store the result to `zr`, which is effectively no-op, and ride on the updated flags done by `add*s*`. Looks fine.
-------------
Marked as reviewed by shade (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/8845
More information about the hotspot-compiler-dev
mailing list