[aarch64-port-dev ] RFR(S/M): 8247766: [aarch64] guarantee(val < (1U << nbits)) failed: Field too big for insn
Andrew Haley
aph at redhat.com
Thu Jul 9 14:26:36 UTC 2020
On 07/07/2020 12:17, Patric Hedlin wrote:
> C1 code generation for reading and writing stack-slots does not handle
> large immediate offsets on aarch64. This patch will ensure that
> immediate offsets are admissible for base+(immediate)offset encoding or,
> if this is not the case, will enforce an explicit address calculation to
> a scratch register. (Also correcting a small glitch in 9-bit signed
> immediate encoding check.)
>
> NOTE: Current patch includes (local) definitions of is_simm/9 and
> is_uimm/12, for review purpose only. With JDK-8248901 these will move to
> Assembler, and will not be included in the change-set.
Umm, OK. These functions seem too complicated: all you have to do is
int64_t chk = val >> (nbits - 1); |(gdb)
guarantee (chk == -1 || chk == 0, "Field too big for insn"); |#9 0x0000ffffbcab5c30 in Compilation::compile_method (this=0xffff80b7dde8)
but the AArch64 part of it looks fine.
--
Andrew Haley (he/him)
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
https://keybase.io/andrewhaley
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671
More information about the hotspot-compiler-dev
mailing list