RFR: 8321215: Incorrect x86 instruction encoding for VSIB addressing mode
Aleksey Shipilev
shade at openjdk.org
Mon Dec 4 19:49:51 UTC 2023
On Mon, 4 Dec 2023 19:09:33 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:
> For instructions that use VSIB addressing mode (gather/scatter), the assembler incorrectly sets EVEX.X bit when the VSIB vector register is in the range XMM16 - XMM23. The EVEX.X bit should only be set when bit 3 of the register encoding is 1, i.e. if the register encoding is 8 - 15 or 24 - 31.
I am curious which part of SDM it follows from?
In Intel SDM Vol 2, "2.6.1 Instruction Format and EVEX", I see:
"Operand specifier modifier bit for vector register: ... P[6] (Aleksey: EVEX.X) can also provide access to a high 16 vector register when SIB or VSIB addressing are not needed."
This "high 16" seems to differ from "upper 16" like you described, right? I.e. "high 16" means the 3-th bit set (XMM8...XMM15 or XMM24...XMM31), whereas "upper 16" means the actual "upper index" registers e.g. XMM16...XMM31)?
-------------
PR Review: https://git.openjdk.org/jdk/pull/16957#pullrequestreview-1763275276
More information about the hotspot-compiler-dev
mailing list