bug 79747: crc32 optimizations #68

wants to merge 12 commits into


None yet

2 participants


previously I failed to notice the difference between crc32c and crc32(-ieee) optimizations.

In these patches I move the crc32 implementations to global mysys, add Power8 optimized crc32 and crc32c implementations.

The rest of the patches change all the places in the code to use optimized crc32 functions.

While I haven't included an implementation of an optimized CRC32-(IEEE) for intel, there is the following links that would enable this:

Note the documentation mentions patents on CRC32 folding (which I haven't done).

Hopefully the commit by commit patches here makes such a large set of changes followable to review.

grooverdan and others added some commits Mar 21, 2016
@grooverdan grooverdan Move innodb crc32 implementation to mysys
During the move use system type definations rather than innobase ones.
@grooverdan grooverdan Rename ut_crc32* function to ut_crc32c*
Current ut_crc32 function represent the CRC32C algorithm so the
rename reflects this.

This change is in preparation for addition of CRC32 functions.

The slice8 table is also abstracted in preparation for a CRC32

Software implementation also extended to allow for input
CRC32 value to which the function will add to.
@grooverdan grooverdan initialize crc32 globally
Also call crc32 init in independent programs like:
* mysqlbinlog
* myisampack
* myisamchk
@grooverdan grooverdan Add slice8 implementation of crc32
Also add extended ut_crc32_ex so crc32 can be calculted in blocks
with a partially calculated crc32.
@grooverdan grooverdan Add CRC32() tests a99f37d
@grooverdan grooverdan Use ut_crc32 for CRC32 SQL function b3e57dd
@grooverdan grooverdan Move crc32_init to init_server_components for embedded to initialize …
@grooverdan grooverdan use ut_crc32_ex instead of zlib crc32 for my_checksum 3df8fe7
@grooverdan grooverdan use ut_crc32{,_ex} for binary log a9869e8
@grooverdan grooverdan Use char* to describe crc32 implemenation e53a7c6
@grooverdan Anton Blanchard Bug#74776: Add POWER8 optimized crc32 and crc32c 8e80dba
@grooverdan grooverdan CRC32 no longer needed from zlib e66eb16
@grooverdan grooverdan referenced this pull request in MariaDB/server Apr 6, 2016

MDEV-9872: crc32-ieee optimization for Power8 #170


Hi, thank you for your contribution. Please confirm this code is submitted under the terms of the OCA (Oracle's Contribution Agreement) you have previously signed by cutting and pasting the following text as a comment:
"I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it."


I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.


Hi, thank you for your contribution. Your code has been assigned to an internal queue. Please follow
bug http://bugs.mysql.com/bug.php?id=79747 for updates.

@grooverdan grooverdan changed the title from bug 79747: crc32 optmizations to bug 79747: crc32 optimizations Apr 29, 2016

Made one small error - fix : linux-on-ibm-power@397fbc5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment