RFR: 8329035: New Data Destination instructions support [v5]
Vladimir Kozlov
kvn at openjdk.org
Wed Sep 11 19:30:12 UTC 2024
On Tue, 10 Sep 2024 23:51:21 GMT, Steve Dohrmann <sdohrmann at openjdk.org> wrote:
>> Adds assembler support for APX New Data Destination (NDD) and No Flags (NF) features.
>>
>> The NDD feature is supported by new functions that take an additional destination-only register operand. If the instruction also supports NF, a no_flags boolean parameter is present. To use these instructions with NF behavior, but without NDD semantics, the same register can be supplied for both the new destination and the (first) source operand.
>>
>> Some instructions support NF but not NDD. These instructions have a new function that just adds a boolean no_flags parameter. Existing functions were not overloaded with a boolean here because of signature collisions (bool / int) with functions that take immediate operands.
>>
>> All of the new functions have a letter "e" prefix, to avoid signature collisions and to indicate they will be evex encoded.
>
> Steve Dohrmann has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains six commits:
>
> - Merge master
> - remove instr. functions based on review comments
> - refactoring and fixes based on review comments
> - function name changes based on review comments
> - fix 32-bit build name errors, missing no_flags arg, and addw functions
> - 8329035: New Data Destination instructions support
Changes looks fine. I have only two comments.
Testing is running. I will let you know results.
src/hotspot/cpu/x86/assembler_x86.cpp line 7496:
> 7494: emit_arith(0x33, 0xC0, src1, src2);
> 7495: }
> 7496:
We just removed `xorw(reg, reg)` because it is not used: [#20901](https://git.openjdk.org/jdk/pull/20901)
Please, don't add it back.
src/hotspot/cpu/x86/assembler_x86.hpp line 796:
> 794: void evex_prefix_ndd(Address adr, int ndd_enc, int xreg_enc, VexSimdPrefix pre, VexOpcode opc, InstructionAttr *attributes, bool no_flags = false);
> 795:
> 796: void evex_prefix_nf(Address adr, int ndd_enc, int xreg_enc, VexSimdPrefix pre, VexOpcode opc, InstructionAttr *attributes, bool no_flags = false);
May be split these lines.
-------------
PR Review: https://git.openjdk.org/jdk/pull/20698#pullrequestreview-2298438176
PR Review Comment: https://git.openjdk.org/jdk/pull/20698#discussion_r1755454321
PR Review Comment: https://git.openjdk.org/jdk/pull/20698#discussion_r1755452920
More information about the hotspot-compiler-dev
mailing list