RFR: JDK-8155618 aarch32: implement CRC32 intrinsics

Alex Kashchenko akashche at redhat.com
Fri Apr 29 17:43:49 UTC 2016


Hi Andrey,

On 04/29/2016 03:59 PM, Andrey Petushkov wrote:
> Hi Alex,
>
> In the meanwhile I’ve found one bug in the cc32-based implementation, which is exactly the one chosen on rpi3 by default. Could you please reapply the patch from the same location. Please let me know if the problem persists

I restarted the builds with the new patch. I haven't look at the details 
or a minimal reproducer yet - will wait for the new builds to finish.

>
> Great thanks,
> Andrey
>
>> On 29 Apr 2016, at 01:34, Alex Kashchenko <akashche at redhat.com> wrote:
>>
>> Hi Andrey,
>>
>> On 04/28/2016 11:49 AM, Andrey Petushkov wrote:
>>> Dear Ed, All,
>>>
>>> Please consider the below patch to implement intrinsics for CRC32 functionality
>>> All 3 possible implementations are provided: generic cpu, neon and crc32 ARM v8 instruction based.
>>> The evaluated performance gain of the calculation itself is the following:
>>> cortex		a7		a8		a53
>>> c	123.487		132.013		309.565	
>>> asm	131.755	7%	141.297	7%	307.401	        -1%
>>> neon	118.91	-4%	159.718	21%	479.442	        55%
>>> crc32					1361.446	343%
>>> As you can see there is no benefit in using neon on Cortex A7 (and presumably A5). So neon is turned on by default only on Cortex A8 and above
>>>
>>> The above numbers are for CRC calculation itself, so elimination of JNI overhead provides additional benefit. E.g. on Cortex A7 the generic asm implementation gives the below benefit:
>>>
>>> buffer size	   + ops/s
>>> Xint	128	20.56%
>>>
>>> 512	18.06%
>>>
>>> 1024	14.66%
>>>
>>> 1048576	5.52%
>>>
>>>
>>>
>>> Xcomp Xbatch	128	77.85%
>>>
>>> 512	32.63%
>>>
>>> 1024	20.53%
>>>
>>> 1048576	6.59%
>>>
>>> The patch is here:
>>> http://cr.openjdk.java.net/~snazarki/8155618/ <http://cr.openjdk.java.net/~snazarki/8155618/> <http://cr.openjdk.java.net/~snazarki/8155618/ <http://cr.openjdk.java.net/~snazarki/8155618/>>
>>
>> I am getting the following error in bootcycle build with this patch on Raspberry Pi 3:
>>
>> - crash log: http://cr.openjdk.java.net/~akasko/aarch32/jdk8u/8155618/hs_err_pid13951.log <http://cr.openjdk.java.net/~akasko/aarch32/jdk8u/8155618/hs_err_pid13951.log>
>> - build log: http://cr.openjdk.java.net/~akasko/aarch32/jdk8u/8155618/201604280_rpi3_rpm.log.xz <http://cr.openjdk.java.net/~akasko/aarch32/jdk8u/8155618/201604280_rpi3_rpm.log.xz>
>>
>> I don't have any more details now, builds on all other devices are still in progress. This is the first time I see any problems with the build after prec1 change, so it may well be an incorrect patching or a hardware glitch.
>>
>> --
>> -Alex
>
>


-- 
-Alex


More information about the aarch32-port-dev mailing list