Hi Vladimir,

Please find the updated webrev link. 

Webrev Link: http://cr.openjdk.java.net/~srukmannagar/Base64/webrev.00/
Bug link: https://bugs.openjdk.java.net/browse/JDK-8205528

Please let me know if you have additional questions.

Thanks and Regards,
Smita

-----Original Message-----
From: Vladimir Kozlov [mailto:vladimir.koz...@oracle.com] 
Sent: Monday, June 25, 2018 10:48 AM
To: Kamath, Smita <smita.kam...@intel.com>
Cc: hotspot compiler <hotspot-compiler-...@openjdk.java.net>; 
core-libs-dev@openjdk.java.net; Paul Sandoz <paul.san...@oracle.com>
Subject: Re: RFR(S) JDK-8205528: Base64 Encode Algorithm using AVX512 
Instructions

I forgot to reply to your answers.

On 6/22/18 2:49 PM, Kamath, Smita wrote:
> Hi Vladimir,
> 
> Please see my answers to your questions as below:
> 
> 1) One question so: why you have own copy of base64 charsets and not using 
> one in library:
> I am using vpgatherdd instruction to fetch multiple values from base64 array 
> in a single instruction with a vector index. Vpgatherdd instruction works on 
> 32 bit array and so I need to define base64 charset in a 32 bit array. I have 
> given reference to gather instruction below.

As was discussed in an other e-mail lets keep your copy.

> 
> 2) Some indents in new and old Assembler::emit_operand() are off. In new 
> Assembler::emit_operand() is better use } else { instead of 'return' in one 
> branch.
> I'll make the necessary changes and send an updated webrev.
> 
> 3) This is first time I see that XMM register can be used for index in 
> address. Is it true? Can you point to Intel's document which describes it.
> I am using vpgatherdd instruction which requires index vector with scale. It 
> uses VSIB addressing where the index register is a zmm register.
> Please refer to reference manual, volume 2c, page 2211: 
> https://software.intel.com/sites/default/files/managed/39/c5/325462-sd
> m-vol-1-2abcd-3abcd.pdf Also see, section 2.3.12, page 524 for VSIB 
> memory addressing information.

Got it. Thanks for document reference.

> 
> 4)  Please, add tests to test/hotspot/jtreg/compiler/intrinsics/base64 (may 
> be similar to sha or AES in compiler/codegen/aes) to make sure that all 
> flags, intrinsic is used and it produces correct result.
> I will add test cases as per your suggestion.

Thanks,
Vladimir

> 
> Please let me know if you have additional questions.
> 
> Thanks,
> Smita
> 
> -----Original Message-----
> From: Vladimir Kozlov [mailto:vladimir.koz...@oracle.com]
> Sent: Friday, June 22, 2018 12:29 PM
> To: Kamath, Smita <smita.kam...@intel.com>
> Cc: hotspot compiler <hotspot-compiler-...@openjdk.java.net>
> Subject: Re: RFR(S) JDK-8205528: Base64 Encode Algorithm using AVX512 
> Instructions
> 
> Hi Smita,
> 
> I CCing to Libs to review code changes in Base64.java.
> 
> Looks like you changed all need place to implement intrinsic.
> One question so: why you have own copy of base64 charsets and not using one 
> in library:
> 
>            private int encode0(byte[] src, int off, int end, byte[] dst) {
>                char[] base64 = isURL ? toBase64URL : toBase64;
> 
> Some indents in new and old Assembler::emit_operand() are off.
> 
> In new Assembler::emit_operand() is better use } else { instead of 'return' 
> in one branch.
> 
> This is first time I see that XMM register can be used for index in address. 
> Is it true? Can you point to Intel's document which describes it.
> 
> What testing you did?
> 
> Please, add tests to test/hotspot/jtreg/compiler/intrinsics/base64 (may be 
> similar to sha or AES in compiler/codegen/aes) to make sure that all flags, 
> intrinsic is used and it produces correct result.
> 
> I know there is test/jdk/java/util/Base64/ tests but they may not trigger 
> intrinsic usage. But you can use them as starting point for new tests.
> 
> Thanks,
> Vladimir
> 
> On 6/22/18 11:47 AM, Kamath, Smita wrote:
>> Hi Vladimir,
>>
>> I'd like to contribute an optimization for Base64 Encoding Algorithm 
>> using AVX512 Instructions. This optimization shows 1.5x improvement 
>> on
>> x86_64 platform(SKL).
>>
>> Link to Bug: https://bugs.openjdk.java.net/browse/JDK-8205528
>>
>> Link to webrev:
>> http://cr.openjdk.java.net/~vdeshpande/Base64/webrev.00/
>>
>> For testing the implementation, I have run tests under 
>> test/jdk/java/util/Base64/ and also ran 
>> test/jdk/com/sun/jndi/ldap/Base64Test.java
>>
>> I have also run jtreg.
>>
>> Please review and let me know if you have any comments.
>>
>> Thanks and Regards,
>>
>> Smita
>>

Reply via email to