On Wed, 7 Jan 2026 16:43:30 GMT, Volodymyr Paprotski <[email protected]>
wrote:
>> I believe the numbers are right: with each pass 256 bytes of coefficients
>> are `parsed` into the parse buffer. This means that half of the
>> coefficients have been processed (`parsedLength` = 128). Would having a
>> comment stating as such address your concerns?
>
> I wasn't as clear in my question. The asm is indeed processing the bytes in
> the increment. What I was trying to convince myself about.. 'how come we are
> not reading past the end of the array. Or are we?'.
>
> On one hand, this is exactly what the existing asm code does, so I will
> assume that its correct. However, on the java side/version of this code, I
> could only convince myself about processing ~two AVX512 vectors at a time,
> not four.
>
> So either I cant count, or there is some further (implicit) restrictions on
> the callers of `twelve2Sixteen`
In ML_KEM.java there is this assert (and this is the only call to
implKyber12To16()
assert ((remainder == 0) || (remainder == 48)) &&
(index + i * 96 <= condensed.length);
implKyber12To16(condensed, index, parsed, parsedLength);
and one can check how the callers of twelve2Sixteen() make sure that this is
the case.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/28815#discussion_r2669490940