RFR: 8073108: GHASH Intrinsics

Anthony Scarpino anthony.scarpino at oracle.com
Tue Feb 17 18:31:37 UTC 2015


On 02/16/2015 06:01 PM, Vladimir Kozlov wrote:
> On 2/16/15 5:23 PM, David Holmes wrote:
>> Hi Tony,
>>
>> Not a review as hotspot compiler folk need to review this.
>>
>> On 17/02/2015 7:11 AM, Anthony Scarpino wrote:
>>> Hi,
>>>
>>> I'm requesting a code review to intrinsify the GHASH operations for both
>>> x86 and SPARC platforms.  This greatly increases performance over
>>> software for AES/GCM crypto operations, details are in the bug.
>>
>> This may be normal for intrinsics but there seems to be a large amount
>> of shared code being updated to support these platform specific
>> enhancements. What happens on other platforms if the user sets
>> UseGHASHIntrinsics? Shouldn't there be a guard against this in
>> arguments.cpp?
>
> Code in vm_version_<arch>.cpp does the check. vm_version_sparc.cpp and
> vm_version_x86.cpp do that.
>
> Tony, please, fix other vm_version_<arch>.cpp files (including closed)
> to set corresponding flag to false. See UseAES as example.

Ok.. thanks Dave & Vladimir for bring that up.. I fix that..


> Also code in vm_version_sparc.cpp should be similar to one in
> vm_version_x86.cpp. Something like:
>
>    // GHASH/GCM intrinsics
>    if (has_vis3() && (UseVIS > 2)) {
>      if (FLAG_IS_DEFAULT(UseGHASHIntrinsics)) {
>        UseGHASHIntrinsics = true;
>      }
>    } else if (UseGHASHIntrinsics) {
>      if (!FLAG_IS_DEFAULT(UseGHASHIntrinsics))
>        warning("GHASH intrinsics require VIS3 insructions support.
> Intriniscs will be disabled");
>      FLAG_SET_DEFAULT(UseGHASHIntrinsics, false);
>    }
>

Sure..

> There is #ifdef _WIN64 in stubGenerator_x86_32.cpp. It is not needed
> since it is 32-bit code.

Sure.. Do I still need to save the xmm6 and xmm7 on 32bit code, or is 
all of the register saving only for Windows 64bit?

>
> I see you switched off -DcheckOutput=false for GCM testing and return
> from compareArrays() after length compare. Is it because it can't be
> done or you did not have time to add needed code?

I'll have to double check, but I believe -DcheckOutput can be turned 
back on.  I suspect I never updated the @run lines after I changed 
compareArrays()

> Otherwise Hotspot code looks good.
>
> Thanks,
> Vladimir
>
>>
>> Thanks,
>> David
>>
>>> The review is for two repos, hotspot and jdk:
>>>
>>> http://cr.openjdk.java.net/~ascarpino/8073108/hotspot/webrev/
>>>
>>> http://cr.openjdk.java.net/~ascarpino/8073108/jdk/webrev/
>>>
>>> thanks
>>>
>>> Tony



More information about the security-dev mailing list