<font size=2 face="sans-serif">Hi Vladimir,</font><br><br><font size=2 face="sans-serif">Thank you a lots for your quick response
and review.</font><br><br><font size=2 face="sans-serif">To use load_array_element, SEGV happened,
I needed the following change.</font><br><font size=2 face="sans-serif">Could you also review this change is
reasonable?</font><br><br><font size=2 face="sans-serif">diff --git a/src/share/vm/opto/graphKit.cpp
b/src/share/vm/opto/graphKit.cpp</font><br><font size=2 face="sans-serif">--- a/src/share/vm/opto/graphKit.cpp</font><br><font size=2 face="sans-serif">+++ b/src/share/vm/opto/graphKit.cpp</font><br><font size=2 face="sans-serif">@@ -1680,6 +1680,8 @@</font><br><font size=2 face="sans-serif"> Node* GraphKit::load_array_element(Node*
ctl, Node* ary, Node* idx, const TypeAryPtr* arytype) {</font><br><font size=2 face="sans-serif">   const Type* elemtype =
arytype->elem();</font><br><font size=2 face="sans-serif">   BasicType elembt = elemtype->array_element_basic_type();</font><br><font size=2 face="sans-serif">+  if (elembt == T_NARROWOOP)</font><br><font size=2 face="sans-serif">+    elembt = T_OBJECT;</font><br><font size=2 face="sans-serif">   Node* adr = array_element_address(ary,
idx, elembt, arytype->size());</font><br><font size=2 face="sans-serif">   Node* ld = make_load(ctl,
adr, elemtype, elembt, arytype, MemNode::unordered);</font><br><font size=2 face="sans-serif">   return ld;</font><br><br><font size=2 face="sans-serif">I attached a full diff that is applied
your kind suggestions.</font><br><br><br><br><font size=2 face="sans-serif">Regards,<br>Hiroshi<br>-----------------------<br>Hiroshi Horii, Ph.D.<br>IBM Research - Tokyo<br></font><br><br><tt><font size=2>Vladimir Kozlov <vladimir.kozlov@oracle.com>
wrote on 03/15/2016 05:24:49:<br><br>> From: Vladimir Kozlov <vladimir.kozlov@oracle.com></font></tt><br><tt><font size=2>> To: Hiroshi H Horii/Japan/IBM@IBMJP, hotspot-compiler-dev@openjdk.java.net</font></tt><br><tt><font size=2>> Cc: "Simonis, Volker" <volker.simonis@sap.com>,
Tim Ellison <br>> <Tim_Ellison@uk.ibm.com></font></tt><br><tt><font size=2>> Date: 03/15/2016 05:25</font></tt><br><tt><font size=2>> Subject: Re: Support for AES on ppc64le</font></tt><br><tt><font size=2>> <br>> Hi Hiroshi<br>> <br>> About library_call.cpp changes.<br>> <br>> You don't need GraphKit::<br>> <br>> And you can use load_array_element() instead:<br>> <br>> Node* objAESCryptKey = load_array_element(control(), objSessionK,
<br>> intcon(0), TypeAryPtr::OOPS);<br>> <br>> You may need additional check and cast because next expression expects
<br>> the objAESCryptKey points to int[]:<br>> <br>> Node* k_start = array_element_address(objAESCryptKey, intcon(0), T_INT);<br>> <br>> Thanks,<br>> Vladimir<br>> <br>> On 3/14/16 9:34 AM, Hiroshi H Horii wrote:<br>> > Dear all:<br>> ><br>> > Can I please request reviews for the following change?<br>> > This change was created for JDK 9.<br>> ><br>> > Description:<br>> > This change adds stub routines support for single-block AES encryption
and<br>> > decryption operations on the POWER8 platform. They are available
only when<br>> > the application is configured to use SunJCE crypto provider on
little<br>> > endian.<br>> > These stubs make use of efficient hardware AES instructions and
thus<br>> > offer significant performance improvements over JITed code on
POWER8<br>> > as on x86 and SPARC. AES stub routines are enabled by default
on POWER8<br>> > platforms that support AES instructions (vcipher). They can be<br>> > explicitly enabled or<br>> > disabled on the command-line using UseAES and UseAESIntrinsics
JVM flags.<br>> > Unlike x86 and SPARC, vcipher and vnchiper of POWER8 need the
same round<br>> > keys of AES. Therefore, inline_aescrypt_Block in library_call.cpp
calls<br>> > the stub with<br>> > AESCrypt.sessionK[0] as round keys.<br>> ><br>> > Summary of source code changes:<br>> ><br>> >   *src/cpu/ppc/vm/assembler_ppc.hpp<br>> >   *src/cpu/ppc/vm/assembler_ppc.inline.hpp<br>> >     - Adds support for vrld instruction to rotate vector
register values<br>> > with<br>> >        left doubleword.<br>> ><br>> >   *src/cpu/ppc/vm/stubGenerator_ppc.cpp<br>> >     - Defines stubs for single-block AES encryption
and decryption routines<br>> >        supporting all key sizes (128-bit,
192-bit and 256-bit).<br>> >     - Current POWER AES decryption instructions are
not compatible with<br>> >        SunJCE expanded decryption key format.
Thus decryption stubs read<br>> >        the expanded encryption keys (sessionK[0])
with descendant order.<br>> >     - Encryption stubs use SunJCE expanded encryption
key as their is<br>> >        no incompatibility issue between POWER8
AES encryption instructions<br>> >        and SunJCE expanded encryption keys.<br>> ><br>> >   *src/cpu/ppc/vm/vm_version_ppc.cpp<br>> >     - Detects AES capabilities of the underlying CPU
by using has_vcipher().<br>> >     - Enables UseAES and UseAESIntrinsics flags if
the underlying CPU<br>> >        supports AES instructions and neither
of them is explicitly<br>> > disabled on<br>> >        the command-line. Generate warning
message if either of these<br>> > flags are<br>> >        enabled on the command-line whereas
the underlying CPU does not<br>> > support<br>> >        AES instructions.<br>> ><br>> >   *src/share/vm/opto/library_call.cpp<br>> >      - Passes the first input parameter, reference
to sessionK[0] to the<br>> > AES stubs<br>> >         only on the POWER platform.<br>> ><br>> > Code change:<br>> >     Please see an attached diff file that was generated
with "hg diff<br>> > -g" under<br>> >     the latest hotspot directory.<br>> ><br>> > Passed tests:<br>> >    jtreg compiler/codegen/7184394/<br>> >    jtreg compiler/cpuflags/ (after removing @ignored
annotation)<br>> ><br>> > * This is my first post of a change. I'm sorry in advance if
I don't<br>> > follow the<br>> >     community manners.<br>> ><br>> > * I wrote this description based on the follows.<br>> > </font></tt><a href="http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2013-"><tt><font size=2>http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2013-</font></tt></a><tt><font size=2><br>> November/012670.html<br>> ><br>> ><br>> ><br>> > Regards,<br>> > Hiroshi<br>> > -----------------------<br>> > Hiroshi Horii,<br>> > IBM Research - Tokyo<br>> ><br>> <br></font></tt><BR>