RFR(S)JDK-8214074: Ghash optimization using AVX instructions

Kamath, Smita smita.kamath at intel.com
Tue Nov 20 17:58:31 UTC 2018

Hi Bernd,

I agree to both of your comments and will update my code with the changes.


From: Bernd Eckenfels [mailto:ecki at zusammenkunft.net]
Sent: Monday, November 19, 2018 2:27 PM
To: Kamath, Smita <smita.kamath at intel.com>; 'Vladimir Kozlov' <vladimir.kozlov at oracle.com>
Cc: core-libs-dev at openjdk.java.net; security-dev at openjdk.java.net
Subject: Re: RFR(S)JDK-8214074: Ghash optimization using AVX instructions


What is the purpose of setting some of them to 0 twice? (It's a new array which should be all-0 anyway.)

+      for (int i = 1; i < 9 ; i++) {
+            subkeyHtbl[2*i] = 0;
+            subkeyHtbl[2*i+1] = 0;
+        }

Also, is the subkeyH no longer be needed (or can be redesigned to use subkeyHtbl[0] and 1?


Von: core-libs-dev <core-libs-dev-bounces at openjdk.java.net<mailto:core-libs-dev-bounces at openjdk.java.net>> im Auftrag von Kamath, Smita <smita.kamath at intel.com<mailto:smita.kamath at intel.com>>
Gesendet: Montag, November 19, 2018 10:52 PM
An: 'Vladimir Kozlov'
Cc: Anthony Scarpino; core-libs-dev at openjdk.java.net<mailto:core-libs-dev at openjdk.java.net>; hotspot compiler
Betreff: RFR(S)JDK-8214074: Ghash optimization using AVX instructions

Hi Vladimir,

I'd like to contribute an optimization for GHASH Algorithm using AVX Instructions. I have tested this optimization on SKX x86_64 platform and it shows ~20-30% performance improvement for larger message sizes (for example 8k).

I, smita.kamath at intel.com<mailto:smita.kamath at intel.com<mailto:smita.kamath at intel.com%3cmailto:smita.kamath at intel.com>> , Shay Gueuron, (shay.gueron at intel.com<mailto:shay.gueron at intel.com<mailto:shay.gueron at intel.com%3cmailto:shay.gueron at intel.com>>) and Regev Shemy (regev.shemy at intel.com<mailto:regev.shemy at intel.com<mailto:regev.shemy at intel.com%3cmailto:regev.shemy at intel.com>>) are contributors to this code.

Link to Bug: https://bugs.openjdk.java.net/browse/JDK-8214074

Link to webrev: http://cr.openjdk.java.net/~svkamath/ghash/webrev/

For testing the implementation, I have executed TestAESMain.java. I have executed Jtreg tests and tested this code on 64 bit Windows and Linux platforms.

Please review and let me know if you have any comments.

Thanks and Regards,

More information about the core-libs-dev mailing list