Fwd: RFR(S): 8248188 Add HotSpotIntrinsicCandidate and API for Base64 decoding (repost to correct mailing list)
Corey Ashford
cjashfor at linux.ibm.com
Tue Aug 11 18:52:50 UTC 2020
This is an accidental duplicate post. Please disregard.
On 8/10/20 2:00 PM, Corey Ashford wrote:
> Hello,
>
> I had originally made two posts to the hotspot-compiler-dev and
> ppc-aix-port-dev mailing lists, but since this RFR requires modifying
> the core library code, it makes sense to post it to core-lib-devs instead.
>
> The two original posts:
>
> https://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2020-June/004110.html
>
>
> https://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2020-July/004115.html
>
>
> Webrev: http://cr.openjdk.java.net/~mhorie/8248188/webrev.01/
>
> To recap the current state:
>
> Currently in java.util.Base64, there is a HotSpotIntrinsicCandidate and
> API for encodeBlock, but none for decoding. This means that only
> encoding gets acceleration from the underlying CPU's vector or other
> accelerator hardware.
>
> I'd like to propose adding a new intrinsic for decodeBlock. The
> considerations I have for this new intrinsic's API:
>
> * Don't make any assumptions about the underlying capability of the
> hardware. For example, do not impose any specific block size granularity.
>
> * Because of the difficulty of handling the isMIME=true option in a
> vector-based accelerator, do not call this intrinsic when isMIME=true.
> If desired, a new HotSpotIntrinsicCandidate can be introduced in the
> future for this case.
>
> * Any remaining data that is not processed by the intrinsic will be
> processed by the pure Java implementation. This allows the intrinsic to
> process whatever block sizes it's good at without the complexity of
> handling the end fragments.
>
> * If any illegal character is discovered in the decoding process, the
> intrinsic can return 0, or any number of bytes produced, up to but not
> including the byte containing the error. At this point, the pure-Java
> algorithm will be called, which will discover the error and report it
> via a thrown exception as usual.
>
> I've tested the patch in the webrev with an actual intrinsic coded up
> for Power9/Power10, but that runtime intrinsic and arch-specific patches
> aren't in the webrev, because I want to get some consensus on the
> library-level intrinsic API first.
>
> I'm open to any comments about this.
>
> Thanks for your consideration,
>
> - Corey
>
> Corey Ashford
> Software Engineer
> IBM Systems, LTC OpenJDK team
> 503-985-8699 Home office
> cjashfor at us.ibm.com
>
> IBM
More information about the core-libs-dev
mailing list