RFR: 8320448: Accelerate IndexOf using AVX2 [v43]

Scott Gibbons sgibbons at openjdk.org
Tue May 28 22:33:18 UTC 2024


On Tue, 28 May 2024 21:17:07 GMT, Scott Gibbons <sgibbons at openjdk.org> wrote:

>> src/hotspot/cpu/x86/c2_stubGenerator_x86_64_string.cpp line 488:
>> 
>>> 486:   __ cmpq(r11, nMinusK);
>>> 487:   __ ja_b(L_return);
>>> 488:   __ movq(rax, r11);
>> 
>> At places where we know that return value in r11 is correct, we dont need to checkRange so this could have its own label.
>
> Disabling causes the test to succeed, so we're not finding matches beyond the end of the string, correct?  Are we confident that this test passing can warrant removing the range check? @sviswa7 ?

Removed.

>> src/hotspot/cpu/x86/c2_stubGenerator_x86_64_string.cpp line 621:
>> 
>>> 619:     __ addq(hsPtrRet, index);
>>> 620:     __ movq(r11, hsPtrRet);
>>> 621:     __ jmp(L_checkRangeAndReturn);
>> 
>> Why do we have to checkRange here, would it not be always correct? It so we could return r11 directly (by moving into rax).
>
> There are cases where r11 could have a value that, when added to (k - 1) would go past the end of the haystack.  I did all in my power to ensure that it doesn't but there's no test I know of to ensure that condition.  I would recommend leaving this in for now.

Removed checkRangeAndReturn

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16753#discussion_r1617956870
PR Review Comment: https://git.openjdk.org/jdk/pull/16753#discussion_r1617956635


More information about the hotspot-compiler-dev mailing list