PPC64 VSX load/store instructions in stubs

Gustavo Romero gromero at linux.vnet.ibm.com
Tue May 31 12:53:44 UTC 2016


Hi Goetz

Got it. Thanks for clarifying it.

Best regards,
Gustavo

On 31-05-2016 04:24, Lindenmaier, Goetz wrote:
> Hi Gustavo, 
> 
> you need a new bugId, as the change with the other one has been 
> pushed by Martin.  You can't have the same bugId on two different
> changes.
> http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/rev/f8f067457966
> 
> Best regards,
>   Goetz.
> 
> 
> 
>> -----Original Message-----
>> From: ppc-aix-port-dev [mailto:ppc-aix-port-dev-
>> bounces at openjdk.java.net] On Behalf Of Gustavo Romero
>> Sent: Dienstag, 31. Mai 2016 03:50
>> To: Doerr, Martin <martin.doerr at sap.com>; Michihiro Horie
>> <HORIE at jp.ibm.com>; Miki M Enoki <ENOMIKI at jp.ibm.com>
>> Cc: Simonis, Volker <volker.simonis at sap.com>; ppc-aix-port-
>> dev at openjdk.java.net; hotspot-dev at openjdk.java.net; Breno Leitao
>> <brenohl at br.ibm.com>
>> Subject: Re: PPC64 VSX load/store instructions in stubs
>>
>> Hi Michihiro
>>
>> Thanks a lot for providing a result summary for byte, short, int, and
>> long.
>>
>> Using VSR0, 1, 2, and 3 (instead of the VR registers) will not violate
>> the ABI, so you can use them as Martin suggested.
>>
>> Martin, should we use the same BugID (8154156: https://goo.gl/z2eGLi)
>> for byte, short, int, and long webrevs or open a new one?
>>
>> Thank you.
>>
>> Best regards,
>> Gustavo
>>
>> On 30-05-2016 06:56, Doerr, Martin wrote:
>>> Hi Michihiro,
>>>
>>> thanks for implementing the VSX versions.
>>>
>>> Gustavo's change "8154156: PPC64: improve array copy stubs by using
>> vector instructions" is pushed into hs-comp.
>>> Your change needs to get adapted:
>>>
>>> -          The vm_version and assembler parts are already there.
>>>
>>> -          Vector-scalar load/store instructions use VectorSRegisters, now.
>>>
>>> The byte and int version look good to me. I think the long version should be
>> implemented in a similar way: check for has_vsx() is necessary, the length
>> comparison should be done inside of the block.
>>>
>>> Best regards,
>>> Martin
>>>
>>>
>>> From: Michihiro Horie [mailto:HORIE at jp.ibm.com]
>>> Sent: Montag, 30. Mai 2016 03:43
>>> To: Miki M Enoki <ENOMIKI at jp.ibm.com>
>>> Cc: Breno Leitao <brenohl at br.ibm.com>; Gustavo Romero
>> <gromero at linux.vnet.ibm.com>; hotspot-dev at openjdk.java.net; Doerr,
>> Martin <martin.doerr at sap.com>; ppc-aix-port-dev at openjdk.java.net;
>> Simonis, Volker <volker.simonis at sap.com>; Volker Simonis
>> <volker.simonis at gmail.com>
>>> Subject: Re: PPC64 VSX load/store instructions in stubs
>>>
>>>
>>> Dear Breno, Gustavo, Voker, and Martin,
>>> I am a cowoker of Miki.
>>>
>>> I implemented VSX disjoint arraycopy functions for byte, int, and long.
>> Although Miki had implemented VSX disjoint long arraycopy, we found a
>> couple of bugs so I fixed it. Would you please review them?
>>>
>>> Micro benchmarks for byte and int are as follows. (The one for long is the
>> same as Miki's, which was attached before by Miki)
>>> (See attached file: ArrayCopyTest_byte.java)(See attached file:
>> ArrayCopyTest_int.java)
>>>
>>> Results are as follows. (For the short result, I used Gustavo's code.)
>>> (See attached file: result_disjoint-arraycopy_vsx-max.jpg)
>>>
>>> Patch for Java8:
>>> (See attached file: hotspot_jdk8.diff)
>>>
>>> Patch for Java9:
>>> (See attached file: hotspot_jdk9.diff)
>>>
>>> Best regards,
>>> --
>>> Michihiro Horie,
>>> IBM Research - Tokyo
>>>
>>> [Inactive hide details for Miki M Enoki---2016/05/25 00:15:19---Hi Breno,
>> Thank you for your reply.]Miki M Enoki---2016/05/25 00:15:19---Hi Breno,
>> Thank you for your reply.
>>>
>>> From: Miki M Enoki/Japan/IBM
>>> To: Breno Leitao <brenohl at br.ibm.com<mailto:brenohl at br.ibm.com>>
>>> Cc: Gustavo Romero
>> <gromero at linux.vnet.ibm.com<mailto:gromero at linux.vnet.ibm.com>>,
>> "hotspot-dev at openjdk.java.net<mailto:hotspot-dev at openjdk.java.net>"
>> <hotspot-dev at openjdk.java.net<mailto:hotspot-dev at openjdk.java.net>>,
>> "Doerr, Martin" <martin.doerr at sap.com<mailto:martin.doerr at sap.com>>,
>> "ppc-aix-port-dev at openjdk.java.net<mailto:ppc-aix-port-
>> dev at openjdk.java.net>" <ppc-aix-port-dev at openjdk.java.net<mailto:ppc-
>> aix-port-dev at openjdk.java.net>>, "Simonis, Volker"
>> <volker.simonis at sap.com<mailto:volker.simonis at sap.com>>, Volker
>> Simonis <volker.simonis at gmail.com<mailto:volker.simonis at gmail.com>>
>>> Date: 2016/05/25 00:15
>>> Subject: Re: PPC64 VSX load/store instructions in stubs
>>>
>>> ________________________________
>>>
>>>
>>> Hi Breno,
>>>
>>> Thank you for your reply.
>>>
>>>> The same mechanism could be used to copy arrays of short elements, as
>> Gustavo was
>>>> working on. Do you agree?
>>>
>>> I think the mechanism is different with type (byte, short, int, long...).
>>> Gustavo will apply a pach with VSX for short array copy, so it would be
>> reasonable to use VSX instruction for long array copy, too.
>>>
>>> My coworker is also creating byte and int arraycopy with VSX. He will post
>> an email to this mailing list.
>>> I appreciate it if our patch for byte, int and long copy is applied to OpenJDK.
>>>
>>>
>>> Best regards,
>>> Miki
>>>
>>>
>>>
>>>
>>> [Inactive hide details for Breno Leitao ---2016/05/17 02:29:32---Hi Miki, On
>> 05/16/2016 02:53 AM, Miki M Enoki wrote:]Breno Leitao ---2016/05/17
>> 02:29:32---Hi Miki, On 05/16/2016 02:53 AM, Miki M Enoki wrote:
>>>
>>> From: Breno Leitao <brenohl at br.ibm.com<mailto:brenohl at br.ibm.com>>
>>> To: Miki M Enoki/Japan/IBM at IBMJP, "Doerr, Martin"
>> <martin.doerr at sap.com<mailto:martin.doerr at sap.com>>,
>>> Cc: Gustavo Romero
>> <gromero at linux.vnet.ibm.com<mailto:gromero at linux.vnet.ibm.com>>,
>> Volker Simonis
>> <volker.simonis at gmail.com<mailto:volker.simonis at gmail.com>>, "Simonis,
>> Volker" <volker.simonis at sap.com<mailto:volker.simonis at sap.com>>, "ppc-
>> aix-port-dev at openjdk.java.net<mailto:ppc-aix-port-
>> dev at openjdk.java.net>" <ppc-aix-port-dev at openjdk.java.net<mailto:ppc-
>> aix-port-dev at openjdk.java.net>>, "hotspot-
>> dev at openjdk.java.net<mailto:hotspot-dev at openjdk.java.net>" <hotspot-
>> dev at openjdk.java.net<mailto:hotspot-dev at openjdk.java.net>>
>>> Date: 2016/05/17 02:29
>>> Subject: Re: PPC64 VSX load/store instructions in stubs
>>> ________________________________
>>>
>>>
>>>
>>> Hi Miki,
>>>
>>> On 05/16/2016 02:53 AM, Miki M Enoki wrote:
>>>> I also implemented VSX disjoint long arraycopy.
>>>> I appreciate it if it is applied to OpenJDK, too.
>>>
>>> Thanks for the summarized information, this is helpful. Based on your plot,
>> I
>>> understand we can split the whole scenario in two:
>>>
>>>  * Array size smaller than 4k, and then use VSX instructions to perform copy
>>>  * Array size bigger than 4k, and then use VMX instructions to perform copy
>>>
>>> The same mechanism could be used to copy arrays of short elements, as
>> Gustavo was
>>> working on. Do you agree?
>>>
>>> That said, I understand that a new patch should be generated that
>> contemplates
>>> both cases on a single patch, ready to be applied on OpenJDK 9 source
>> code. Hence
>>> a webrev should be generated mapping to bug id
>>> https://bugs.openjdk.java.net/browse/JDK-8154156
>>>
>>> If you need any help on the webrev[1] creation and hosting, Gustavo might
>> help,
>>> since he did this process already.
>>>
>>> [1] http://openjdk.java.net/guide/webrevHelp.html
>>>
>>>
> 



More information about the hotspot-dev mailing list