diff options
author | Daniel Axtens <dja@axtens.net> | 2015-11-27 15:18:48 +1100 |
---|---|---|
committer | Daniel Black <daniel.black@au.ibm.com> | 2015-12-15 15:11:17 +1100 |
commit | 2538c7cf89aca60c56d4e6f9fad84723c2a3b015 (patch) | |
tree | 9c597a87d1e352cf49376bc556e3a00d57259b6e /storage/innobase/include/ut0crc32.h | |
parent | 44b107da90a106c128dca278d04c68d804e51497 (diff) | |
download | mariadb-git-2538c7cf89aca60c56d4e6f9fad84723c2a3b015.tar.gz |
Use POWER8 accelerated crc32
- Make accelerated checksum available to InnoDB and XtraDB.
- Fall back to slice-by-eight if not available. The mode used is printed on startup.
- Will only build on POWER systems at the moment until CMakeLists are modified
to only add the crc32_power8/ files when building on POWER.
running MySQL-5.7 unittest/gunit/innodb/ut0crc32-t
Before:
1..2
Using software crc32 implementation, CPU is little-endian
ok 1
Using software crc32 implementation, CPU is little-endian
normal CRC32: real 0.148006 sec
normal CRC32: user 0.148000 sec
normal CRC32: sys 0.000000 sec
big endian CRC32: real 0.144293 sec
big endian CRC32: user 0.144000 sec
big endian CRC32: sys 0.000000 sec
ok 2
After:
1..2
Using POWER8 crc32 implementation, CPU is little-endian
ok 1
Using POWER8 crc32 implementation, CPU is little-endian
normal CRC32: real 0.008097 sec
normal CRC32: user 0.008000 sec
normal CRC32: sys 0.000000 sec
big endian CRC32: real 0.147043 sec
big endian CRC32: user 0.144000 sec
big endian CRC32: sys 0.000000 sec
ok 2
Author CRC32 ASM code: Anton Blanchard <anton@au.ibm.com>
ref: https://github.com/antonblanchard/crc32-vpmsum
Signed-off-by: Daniel Black <daniel.black@au.ibm.com>
Diffstat (limited to 'storage/innobase/include/ut0crc32.h')
-rw-r--r-- | storage/innobase/include/ut0crc32.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/storage/innobase/include/ut0crc32.h b/storage/innobase/include/ut0crc32.h index 86217692764..af6f0bc74e7 100644 --- a/storage/innobase/include/ut0crc32.h +++ b/storage/innobase/include/ut0crc32.h @@ -47,5 +47,6 @@ typedef ib_uint32_t (*ib_ut_crc32_t)(const byte* ptr, ulint len); extern ib_ut_crc32_t ut_crc32; extern bool ut_crc32_sse2_enabled; +extern bool ut_crc32_power8_enabled; #endif /* ut0crc32_h */ |