RFR: 8348561: Add aarch64 intrinsics for ML-DSA [v5]

Bhavana Kilambi bkilambi at openjdk.org
Mon Feb 24 09:37:54 UTC 2025


On Thu, 20 Feb 2025 17:22:25 GMT, Ferenc Rakoczi <duke at openjdk.org> wrote:

>> src/hotspot/cpu/aarch64/assembler_aarch64.hpp line 2618:
>> 
>>> 2616:   INSN(smaxp,  0, 0b101001, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
>>> 2617:   INSN(sminp,  0, 0b101011, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
>>> 2618:   INSN(sqdmulh,0, 0b101101, false); // accepted arrangements: T4H, T8H, T2S, T4S
>> 
>> Hi, not a comment on the algorithm itself but you might have to add these new instructions in the gtest for aarch64 here - test/hotspot/gtest/aarch64/aarch64-asmtest.py and use this file to generate test/hotspot/gtest/aarch64/asmtest.out.h which would contain these newly added instructions.
>
> I have tried that, but the python script (actually the as command that it started) threw error messages:
> 
> aarch64ops.s:338:24: error: index must be a multiple of 8 in range [0, 32760].
>         prfm    PLDL1KEEP, [x15, 43]
>                                  ^
> aarch64ops.s:357:20: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
>         sub     x1, x10, x23, sxth #2
>                               ^
> aarch64ops.s:359:20: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
>         add     x11, x21, x5, uxtb #3
>                               ^
> aarch64ops.s:360:22: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
>         adds    x11, x17, x17, uxtw #1
>                                ^
> aarch64ops.s:361:20: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
>         sub     x11, x0, x15, uxtb #1
>                               ^
> aarch64ops.s:362:19: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
>         subs    x7, x1, x0, sxth #2
>                             ^
> This is without any modifications from what is in the master branch currently.

You might have to use an assembler from the latest binutils build (if the system default isn't the latest) and add the path to the assembler in the "AS" variable. Also you can run it something like - `python aarch64-asmtest.py | expand > asmtest.out.h`. Please let me know if you still face problems.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/23300#discussion_r1967284270


More information about the hotspot-dev mailing list