RFR:8144771: AVX3 patch for MacroAssembler::string_compare
Civlin, Jan
jan.civlin at intel.com
Tue Dec 8 08:16:22 UTC 2015
Thank you, Tobias.
Best,
Jan
-----Original Message-----
From: Tobias Hartmann [mailto:tobias.hartmann at oracle.com]
Sent: Monday, December 7, 2015 11:20 PM
To: Vladimir Kozlov <vladimir.kozlov at oracle.com>; Civlin, Jan <jan.civlin at intel.com>; hotspot compiler <hotspot-compiler-dev at openjdk.java.net>
Subject: Re: RFR:8144771: AVX3 patch for MacroAssembler::string_compare
Hi Jan,
On 08.12.2015 03:10, Vladimir Kozlov wrote:
> http://cr.openjdk.java.net/~kvn/8144771/webrev.01/
>
> Vladimir
>
> On 12/7/15 5:50 PM, Civlin, Jan wrote:
>> Tobias,
>>
>> Thank you for spotting this.
>> These comments were from the design and reflected the original order str1/str2. I'm removing them since the function calls say enough.
>> The order should remain str2/str1 since the "result" is modified in the "str1" line.
Right, looks good to me!
Best,
Tobias
>>
>> Vladimir,
>> could you please upload the updated patch (I still do not have an access).
>>
>>
>> Yes, the test has been run:
>>
>> [jcivlin at SKY71 test]$ date; echo $JAVA_HOME; ls -l
>> $JAVA_HOME/lib/amd64/server/libjvm.so; time
>> /home/jcivlin/Tools/jtreg/bin/jtreg
>> compiler/intrinsics/string/TestStringIntrinsics.java
>> Mon Dec 7 11:00:07 PST 2015
>> /home/jcivlin/Java/mberg-100915-11K/build/linux-x86_64-normal-server-
>> release/jdk -rwxrwxr-x 1 jcivlin jcivlin 17999532 Dec 2 22:13
>> /home/jcivlin/Java/mberg-100915-11K/build/linux-x86_64-normal-server-
>> release/jdk/lib/amd64/server/libjvm.so
>> Test results: passed: 1
>> Report written to
>> /home/jcivlin/Java/mberg-100915-11K/hotspot/test/JTreport/html/report
>> .html Results written to
>> /home/jcivlin/Java/mberg-100915-11K/hotspot/test/JTwork
>>
>> Thank you,
>>
>> Jan
>>
>> -----Original Message-----
>> From: Tobias Hartmann [mailto:tobias.hartmann at oracle.com]
>> Sent: Monday, December 07, 2015 6:39 AM
>> To: Civlin, Jan; hotspot compiler
>> Cc: Vladimir Kozlov
>> Subject: Re: RFR:8144771: AVX3 patch for
>> MacroAssembler::string_compare
>>
>> Hi Jan,
>>
>> the intrinsic looks good to me (not a reviewer). Here are two minor suggestions:
>> - The following comments are wrong:
>> 8355 } else { //ae == StrIntrinsicNode::UL
>> 8356 load_unsigned_short(cnt1, Address(str2, result, scale2)); // L string
>> 8357 load_unsigned_byte(result, Address(str1, result, scale1)); // U string
>> The first line then loads a UTF16 (two-byte) String and the second line loads a Latin1 (one-byte) String. Maybe you should also exchange the lines to first load str1 and then load str2. I would omit the comment after "else" because ae could either be UL or LU (both have the Latin1 string in str1).
>> - Missing whitespace after comma:
>> 8143 cmpl(cnt2,stride2x2);
>>
>> I assume you executed the hotspot JTREG tests (including /compiler/intrinsics/string/TestStringIntrinsics.java).
>>
>> Best,
>> Tobias
>>
>> On 05.12.2015 05:07, Civlin, Jan wrote:
>>> We would like to contribute AVX3 patch for MacroAssembler::string_compare.
>>>
>>> This utilizes 512 bits registers on AVX3 architecture and delivers performance gain (speed-up) on long strings at about x 1.33 and on random string about x 1.22. This was measured vs AVX2 (256 bits registers).
>>>
>>>
>>> Contributors:
>>> MacroAssembler::string_compare - Jan Civlin.
>>> Rest of code, including all x86 AVX3 extensions - Michael Berg
>>>
>>>
>>> Bug-id: https://bugs.openjdk.java.net/browse/JDK-8144771
>>> Webrev: http://cr.openjdk.java.net/~kvn/8144771/webrev/
More information about the hotspot-compiler-dev
mailing list