RFR: 8248188: Add IntrinsicCandidate and API for Base64 decoding [v8]

CoreyAshford github.com+51754783+coreyashford at openjdk.java.net
Tue Nov 3 02:24:58 UTC 2020


On Sat, 24 Oct 2020 21:38:55 GMT, CoreyAshford <github.com+51754783+CoreyAshford at openjdk.org> wrote:

>> Yes, it assumes uniformly random data, but also recall that the unencoded data bytes get shifted by 2, 4, 6 bits into the encoded bytes, which I'm guessing would tend to make the data somewhat more uniform, even if the source data has low entropy.
>> 
>> That said, I didn't actually benchmark it.  I will do that to make sure there is a gain, and if there isn't I will remove the conditional branch.
>
>> I took a look at the VSX algo. I haven't looked much beyond it. I had a few questions I've inlined. It does look like a faithful VSX implementation of the linked algo.
> 
> I neglected to thank you for reviewing this code!  I realize there's quite a time commitment required to review this properly, and because of that I was having difficulty finding a second reviewer for the PPC64 portion.
> 
> Just to set expectations, I will be on vacation next week, so further commits won't be posted until the following week, but I will address all of your great feedback.  Thanks again!

I just got done running a benchmark without the branch around the xxsel, and your hunch was right.  There's about a 9% performance gain in the benchmark with that branch dropped.  I also changed the previous instruction not to set the condition code, but I doubt that affected performance.  Both regression tests for Base64 encoding/decoding still pass.

The next set of commits will contain this change.

-------------

PR: https://git.openjdk.java.net/jdk/pull/293


More information about the core-libs-dev mailing list