RFR: 8328998: Encoding support for Intel APX extended general-purpose registers [v26]
Vladimir Kozlov
kvn at openjdk.org
Tue May 21 21:49:08 UTC 2024
On Tue, 21 May 2024 18:50:20 GMT, Steve Dohrmann <duke at openjdk.org> wrote:
>> Add instruction encoding support for Intel APX extended general-purpose registers:
>>
>> Intel Advanced Performance Extensions (APX) doubles the number of general-purpose registers, from 16 to 32. For more information about APX, see https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-performance-extensions-apx.html.
>>
>> By specification, instruction encoding remains unchanged for instructions using only the lower 16 GPRs. For cases where one or more instruction operands reference extended GPRs (Egprs), encoding targets either REX2, an extension of REX encoding, or an extended version of EVEX encoding. These new encoding schemes extend or modify existing instruction prefixes only when Egprs are used.
>
> Steve Dohrmann has updated the pull request incrementally with one additional commit since the last revision:
>
> disable UseAPX for now, move asserts to encoding check functions
src/hotspot/cpu/x86/assembler_x86.cpp line 6397:
> 6395:
> 6396: void Assembler::stmxcsr(Address dst) {
> 6397: if (UseAVX > 0 && !UseAPX ) {
New ` && !UseAPX` check is strange here. If `UseAPX` is `true` we will execute `} else {` part of code which was executed only for SSE (UseAVX == 0) before. Is this intentional? This needs comment explaining why we do that if it is intentional.
I see in other place you have `adr.base_needs_rex2() || adr.index_needs_rex2()` check. Do we need it here too?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/18476#discussion_r1608975763
More information about the hotspot-compiler-dev
mailing list