RFR: 8318509: x86 count_positives intrinsic broken for -XX:AVX3Threshold=0

Emanuel Peter epeter at openjdk.org
Mon Oct 23 08:27:35 UTC 2023


On Thu, 19 Oct 2023 12:54:47 GMT, Claes Redestad <redestad at openjdk.org> wrote:

> The AVX-512 implementation of count_positives is broken when there are negative values in the tail block, since the len register is repurposed to then re-read as-if it still contained the original value. 
> 
> Proposed fix is to restore len from the value in tmp1, which at this point holds the count of bytes in the tail. 
> 
> Existing TestCountPositives test is pretty exhaustive and just needs to be run explicitly with AVX3Threshold=0 enabled.

The fix looks reasonable.
But I would suggest that you improve the test as well, or at least add some random example as well (random values in array, random length etc). Currently it is all deterministic, and I'm not sure that the pattern really covers all cases enough.

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

PR Comment: https://git.openjdk.org/jdk/pull/16267#issuecomment-1774672569


More information about the hotspot-compiler-dev mailing list