RFR: JDK-8155618 aarch32: implement CRC32 intrinsics

Andrey Petushkov andrey.petushkov at gmail.com
Fri Apr 29 14:59:16 UTC 2016


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

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



More information about the aarch32-port-dev mailing list