[9] RFR(XS): 8157842: indexOfChar intrinsic is not emitted on x86

Tobias Hartmann tobias.hartmann at oracle.com
Tue May 31 09:32:42 UTC 2016


Hi Vladimir,

thanks for the review!

On 30.05.2016 19:45, Vladimir Kozlov wrote:
> match_rule_supported() should check UseSSE42Intrinsics instead since it is used in predicate:
> 
>   predicate(UseSSE42Intrinsics);
>   match(Set result (StrIndexOfChar (Binary str1 cnt1) ch));

Right, checking for UseSSE42Intrinsics is more consistent.

> Also we can remove "assert(UseSSE >= 4" in MacroAssembler::string_indexof_char() because UseSSE42Intrinsics will be false if UseSSE < 4. See code in vm_version_x86.cpp

Okay, I also removed the same checks from the other string intrinsics.

Here's the new webrev:
http://cr.openjdk.java.net/~thartmann/8157842/webrev.01/

While testing I noticed that the VM crashes if UseSSE < 4 is set. I filed JDK-8158214.

Thanks,
Tobias

[1] https://bugs.openjdk.java.net/browse/JDK-8158214

> 
> Thanks,
> Vladimir
> 
> On 5/30/16 4:22 AM, Tobias Hartmann wrote:
>> Hi,
>>
>> please review the following patch:
>>
>> https://bugs.openjdk.java.net/browse/JDK-8157842
>> http://cr.openjdk.java.net/~thartmann/8157842/webrev.00/
>>
>> Andrew Haley noticed that there is a typo in x86.ad that prevents the StrIndexOfChar intrinsic from being emitted [1]. The problem is that we check for UseSSE > 4 instead of UseSSE >= 4 in Matcher::match_rule_supported() on x86.
>>
>> Tested with JPRT, RBT is running.
>>
>> Thanks,
>> Tobias
>>
>> [1] http://mail.openjdk.java.net/pipermail/hotspot-dev/2016-May/023218.html
>>


More information about the hotspot-compiler-dev mailing list