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