1
0
Fork 0

Further fixes for libmusl completely static build. (#4474)

* Make crc assembler code position independent.
* Fix PIE compilation for libmusl in alpine linux.
* Use backtrace library if found.
This commit is contained in:
Max Neunhöffer 2018-02-01 13:38:34 +01:00 committed by GitHub
parent bf606bdf89
commit 858d875e8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 687 additions and 6 deletions

View File

@ -39,6 +39,12 @@ void dump_mem_stats_trace() NOEXCEPT {
// MacOS does not have malloc.h and hence no mallinfo() or malloc_stats()
#ifndef __APPLE__
// The following macro exists only in GLIBC, where we have mallinfo().
// If it is not defined, we assume to be on libmusl or something like this
// where we do not have mallinfo.
#ifdef M_ARENA_MAX
// ...........................................................................
// output mallinfo()
// ...........................................................................
@ -75,6 +81,7 @@ Topmost releasable block (keepcost): %lu\n\
// output malloc_stats()
// ...........................................................................
malloc_stats(); // outputs to stderr
#endif
#endif
// ...........................................................................

View File

@ -50,9 +50,9 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
option(SKIP_PACKAGING "" OFF)
option(STATIC_EXECUTABLES "" OFF)
option(STATIC_EXECUTABLES "produce static executables" OFF)
if (STATIC_EXECUTABLES)
set(CMAKE_EXE_LINKER_FLAGS "-static -no-pie")
set(CMAKE_EXE_LINKER_FLAGS "-static")
endif()
# be verbose about flags used
@ -508,16 +508,20 @@ option(USE_BACKTRACE
OFF
)
# iresearch uses backtrace anyway, so we need to find and link libexecinfo
# for the case that we are on libmusl and not on glibc
find_package(Backtrace)
if (USE_BACKTRACE)
if (MSVC)
set(BT_LIBS "Dbghelp" CACHE path "Debug Helper libraries")
else ()
set(BT_LIBS "" CACHE path "Debug Helper libraries")
set(BT_LIBS ${Backtrace_LIBRARY} CACHE path "Debug Helper libraries")
endif ()
add_definitions("-DARANGODB_ENABLE_BACKTRACE=1")
else ()
set(BT_LIBS "" CACHE path "Debug Helper libraries")
set(BT_LIBS ${Backtrace_LIBRARY} CACHE path "Debug Helper libraries")
endif ()
################################################################################

670
lib/Basics/crc5.S Normal file
View File

@ -0,0 +1,670 @@
/////////////////////////////////////////////////////////////////////////////////
/// DISCLAIMER
///
/// Copyright 2016-2016 ArangoDB GmbH, Cologne, Germany
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
/// Copyright holder is ArangoDB GmbH, Cologne, Germany
///
/// @author Richard Parker
////////////////////////////////////////////////////////////////////////////////
/* TRI_BlockCrc32_SSE42 assembler*/
/* assumes SSE4.2 flag set */
/* input */
/* %rdi uint32_t */
/* %rsi char const* data */
/* %rdx size_t length */
/* output */
/* %rax uint32_t */
/* working */
/* %r10 is the remaining length */
/* %r8, %r9, %r11 chunk-CRCs */
/* %rcx holds address of crct2 */
/* %edi %rdx used for x^1024 */
/* no registers spilled */
/* This routine has been tuned extensively on Haswell */
/* architecture. If the data is coming from cache, it */
/* does about 3.8 GB/clock, or 6.58 GB on my 1.7 GHz */
/* laptop for data length median 80, mean 300 bytes */
.text
.globl TRI_BlockCrc32_SSE42
.globl _TRI_BlockCrc32_SSE42
.type TRI_BlockCrc32_SSE42, @function
.type _TRI_BlockCrc32_SSE42, @function
.align 32 /* primarily to stabilize times */
TRI_BlockCrc32_SSE42: /* entry point */
_TRI_BlockCrc32_SSE42:
cmpq $12,%rdx /* if the string < 12 bytes long */
/* note #1, #2 threatens segfault otherwise */
/* 12-15 bytes first fetch OK, second fetch uses all bytes */
jb crca7 /* use the simple approach */
/* Next section does 8-15 bytes and adjusts registers */
/* length is now in %r10 to free the ancient register %rdx */
movq %rdx,%r10 /* copy length to %r10 for later */
andq $7,%rdx /* get length mod 8 */
lea crct1(%rip),%r9 /* get address of crct1 table */
movl (%r9,%rdx,4),%ecx /* table lookup to %ecx */
subq %rdx,%r10 /* subtract 0-7 from length */
subq $8,%r10 /* and subtract another 8 */
xorq (%rsi),%rdi /* #1 xor in data to old CRC */
shlq %cl,%rdi /* shift amount from table */
movzbl %ch,%edx /* get length (ancient regs) */
addq %rdx,%rsi /* update pointer by table-bytes */
movq $0,%rax /* clear old crc - already in */
crc32 %rdi,%rax /* do 4-8 bytes of CRC */
shrq $16,%rcx /* get other two bytes of table */
movq (%rsi),%r8 /* #2 get data to xor */
xorq %rax,%r8 /* . . . into the current one */
shlq %cl,%r8 /* shift amount from table */
movq $0,%rax /* clear old CRC -not used here */
crc32 %r8,%rax /* perform 4-7 byte CRC32 */
movzbl %ch,%edx /* get number of bytes done */
addq %rdx,%rsi /* and add into pointer */
/* at this point we have */
/* %eax hold the CRC of the first few bytes */
/* %rsi points to the next chunk of data */
/* %r10 is the remaining length, divisible by 8 */
/* Next step is to prepare computed go-to */
/* First get the jump address into %rdi */
movq %r10,%rdx /* copy the length */
andq $127,%rdx /* get length mod 128 */
addq %rdx,%rsi /* pointer to next 128 block */
addq $256,%rdx /* table disp for long strings */
cmpq $256,%r10 /* if length less than 256 . . */
cmovb %r10,%rdx /* just use length as disp */
lea crctj(%rip),%rdi /* get address of jump table */
movq (%rdi,%rdx),%rdi /* compute jump address */
/* now for the relative instruction XXXQQQ */
lea x0(%rip),%rdx
/* Your task is to get the address of x0 into %rdx! */
addq %rdx,%rdi
andq $-128,%r10 /* now get length correct */
subq $128,%r10 /* only used in 256+ case ynn */
/* *** now comes the major unpredictable jump! *** */
jmp *%rdi /* go to length-specific code */
/* The following code is used for strings < 272. The jump */
/* above goes to one of the labels and does the entire */
/* computation (apart from initial 8-15 bytes) in line */
x248: crc32q -120(%rsi),%rax
x240: crc32q -112(%rsi),%rax
x232: crc32q -104(%rsi),%rax
x224: crc32q -96(%rsi),%rax
x216: crc32q -88(%rsi),%rax
x208: crc32q -80(%rsi),%rax
x200: crc32q -72(%rsi),%rax
x192: crc32q -64(%rsi),%rax
x184: crc32q -56(%rsi),%rax
x176: crc32q -48(%rsi),%rax
x168: crc32q -40(%rsi),%rax
x160: crc32q -32(%rsi),%rax
x152: crc32q -24(%rsi),%rax
x144: crc32q -16(%rsi),%rax
x136: crc32q -8(%rsi),%rax
x128: crc32q (%rsi),%rax
addq $128,%rsi
x120: crc32q -120(%rsi),%rax
x112: crc32q -112(%rsi),%rax
x104: crc32q -104(%rsi),%rax
x96: crc32q -96(%rsi),%rax
x88: crc32q -88(%rsi),%rax
x80: crc32q -80(%rsi),%rax
x72: crc32q -72(%rsi),%rax
x64: crc32q -64(%rsi),%rax
x56: crc32q -56(%rsi),%rax
x48: crc32q -48(%rsi),%rax
x40: crc32q -40(%rsi),%rax
x32: crc32q -32(%rsi),%rax
x24: crc32q -24(%rsi),%rax
x16: crc32q -16(%rsi),%rax
x8: crc32q -8(%rsi),%rax
x0: ret
/* The following code starts off by doing up to 120 bytes */
/* inline (branch to one of the yNN lables) in a simple way */
/* (it then drops into main triple-stream loop) */
.align 32
.8byte 0,0 /* not sure this matters */
y120: crc32q -120(%rsi),%rax
y112: crc32q -112(%rsi),%rax
y104: crc32q -104(%rsi),%rax
y96: crc32q -96(%rsi),%rax
y88: crc32q -88(%rsi),%rax
y80: crc32q -80(%rsi),%rax
y72: crc32q -72(%rsi),%rax
y64: crc32q -64(%rsi),%rax
y56: crc32q -56(%rsi),%rax
y48: crc32q -48(%rsi),%rax
y40: crc32q -40(%rsi),%rax
y32: crc32q -32(%rsi),%rax
y24: crc32q -24(%rsi),%rax
y16: crc32q -16(%rsi),%rax
y8: crc32q -8(%rsi),%rax
y0:
/* The following code does blocks of 128 bytes (16 words) */
/* The main description is given at the start of the loop */
/* initialization of the triple-stream method */
lea crct2(%rip),%rcx /* set %rcx permanently as crct2 */
movq $0,%r8 /* work out first 11 words of B */
crc32q (%rsi),%r8
crc32q 8(%rsi),%r8
crc32q 16(%rsi),%r8
crc32q 24(%rsi),%r8
crc32q 32(%rsi),%r8
crc32q 40(%rsi),%r8
crc32q 48(%rsi),%r8
crc32q 56(%rsi),%r8
crc32q 64(%rsi),%r8
crc32q 72(%rsi),%r8
crc32q 80(%rsi),%r8
movq $0,%r9 /* work out first six words of C */
crc32q 128(%rsi),%r9
crc32q 136(%rsi),%r9
crc32q 144(%rsi),%r9
crc32q 152(%rsi),%r9
crc32q 160(%rsi),%r9
crc32q 168(%rsi),%r9
jmp crcx7 /* see if we need to do more */
/* main loop of the triple-stream thread */
/* %eax hold the CRC of AAAA */
/* %rsi points to the start of BBBBB... */
/* %r10 is the remaining length, divisible by 128 */
/* %r8 is the CRC of B11 */
/* %r9 is the CRC of C6 */
/* %r11 will hold the CRC of D */
/* %edi accumulates the shifted CRC of AAAA */
/* %rdx holds the 64-bit extended bytes of %eax */
/* %rcx holds the address of table crct2 */
/* we are doing four chunks AAA...BBB...CCC...DDD */
/* where each chunk is 16 words - 128 bytes */
/* AAA has been completed and is multiplied by */
/* X^1024 (mod poly) using the lookup tables */
/* BBB has had 11 words done - 5 more to do */
/* CCC has had 6 words done and 5 more done here */
/* DDD is not started, and 6 words are done */
lp128:
crc32q 88(%rsi),%r8 /* last five words of B */
crc32q 96(%rsi),%r8
crc32q 104(%rsi),%r8
crc32q 112(%rsi),%r8
crc32q 120(%rsi),%r8
crc32q 176(%rsi),%r9 /* middle five words of C */
crc32q 184(%rsi),%r9
crc32q 192(%rsi),%r9
crc32q 200(%rsi),%r9
crc32q 208(%rsi),%r9
movq $0,%r11 /* first six words of D */
crc32q 256(%rsi),%r11
crc32q 264(%rsi),%r11
crc32q 272(%rsi),%r11
crc32q 280(%rsi),%r11
crc32q 288(%rsi),%r11
crc32q 296(%rsi),%r11
/* Next chunk muliplies %eax by X^1024 mod poly by looking */
/* up each byte in the table crct2 pointed to by %rcx */
movzx %al,%edx
movl 0(%rcx,%rdx,4),%edi
movzx %ah,%edx
xorl 1024(%rcx,%rdx,4),%edi
shrl $16,%eax
movzx %al,%edx
xorl 2048(%rcx,%rdx,4),%edi
movzx %ah,%edx
xorl 3072(%rcx,%rdx,4),%edi
xorl %edi,%r8d
/* move chunks up DDD->CCC->BBB->AAA */
movl %r8d,%eax
movl %r9d,%r8d
movl %r11d,%r9d
addq $128,%rsi
crcx7:
subq $128,%r10
jne lp128
/* termination of the triple-stream CRC */
/* Despite the unpredictable drop through here, it seems */
/* (on Haswell anyway) that decode is easily fast enough */
/* and that "mingling" the following instructions */
/* gains nothing measurable */
crc32q 88(%rsi),%r8 /* do last 5 of B */
crc32q 96(%rsi),%r8
crc32q 104(%rsi),%r8
crc32q 112(%rsi),%r8
crc32q 120(%rsi),%r8
movzx %al,%edx /* multiply A by X^1024 */
movl 0(%rcx,%rdx,4),%edi
movzx %ah,%edx
xorl 1024(%rcx,%rdx,4),%edi
shrl $16,%eax
movzx %al,%edx
xorl 2048(%rcx,%rdx,4),%edi
movzx %ah,%edx
xorl 3072(%rcx,%rdx,4),%edi
xorl %edi,%r8d /* combine with B */
movl %r8d,%eax /* and prepare for mul*/
crc32q 176(%rsi),%r9 /* do middle 5 of C */
crc32q 184(%rsi),%r9
crc32q 192(%rsi),%r9
crc32q 200(%rsi),%r9
crc32q 208(%rsi),%r9
crc32q 216(%rsi),%r9 /* and last 5 of C */
crc32q 224(%rsi),%r9
crc32q 232(%rsi),%r9
crc32q 240(%rsi),%r9
crc32q 248(%rsi),%r9
movzx %al,%edx /* multiply again X^1024 */
movl 0(%rcx,%rdx,4),%edi
movzx %ah,%edx
xorl 1024(%rcx,%rdx,4),%edi
shrl $16,%eax
movzx %al,%edx
xorl 2048(%rcx,%rdx,4),%edi
movzx %ah,%edx
xorl 3072(%rcx,%rdx,4),%edi
xorl %edi,%r9d /* combine with C */
movl %r9d,%eax /* and into return reg */
ret
/* This section is only used when there are 0 - 7 bytes */
/* It works by getting each byte into %cl one at a time */
/* and using the CRC32 instruction into %rax */
crca7:
movl %edi,%eax /* move input CRC to output reg */
cmpq $0,%rdx /* works with length = 0 */
je crca9 /* just return when done */
crca8:
movb (%rsi),%cl /* byte of data into a register */
crc32 %cl,%eax /* include that in the CRC */
addq $1,%rsi /* update pointer for next byte */
subq $1,%rdx /* one fewer bytes to process */
jne crca8 /* continue until zero left to do*/
crca9:
ret /* simple case exit */
/* crct1 is used to do the initial 8-15 bytes. It consists */
/* of two <shift,length> pairs. It ends up in %ecx in the */
/* sixth instruction executed. */
.align 64
crct1:
.byte 0x20, 0x04, 0x20, 0x04
.byte 0x20, 0x04, 0x18, 0x05
.byte 0x20, 0x04, 0x10, 0x06
.byte 0x20, 0x04, 0x08, 0x07
.byte 0x20, 0x04, 0x00, 0x08
.byte 0x18, 0x05, 0x00, 0x08
.byte 0x10, 0x06, 0x00, 0x08
.byte 0x08, 0x07, 0x00, 0x08
/* crctj is the jump table. One of the addresses is loaded */
/* from this table and jumped to */
crctj:
.8byte x0-x0
.8byte x8-x0
.8byte x16-x0
.8byte x24-x0
.8byte x32-x0
.8byte x40-x0
.8byte x48-x0
.8byte x56-x0
.8byte x64-x0
.8byte x72-x0
.8byte x80-x0
.8byte x88-x0
.8byte x96-x0
.8byte x104-x0
.8byte x112-x0
.8byte x120-x0
.8byte x128-x0
.8byte x136-x0
.8byte x144-x0
.8byte x152-x0
.8byte x160-x0
.8byte x168-x0
.8byte x176-x0
.8byte x184-x0
.8byte x192-x0
.8byte x200-x0
.8byte x208-x0
.8byte x216-x0
.8byte x224-x0
.8byte x232-x0
.8byte x240-x0
.8byte x248-x0
.8byte y0-x0
.8byte y8-x0
.8byte y16-x0
.8byte y24-x0
.8byte y32-x0
.8byte y40-x0
.8byte y48-x0
.8byte y56-x0
.8byte y64-x0
.8byte y72-x0
.8byte y80-x0
.8byte y88-x0
.8byte y96-x0
.8byte y104-x0
.8byte y112-x0
.8byte y120-x0
/* crct2 is the table used to multiply a 32-bit quantity */
/* by X^1024 modulo the polynomial. It consists of four */
/* consecutive tables of 256 32-bit words . . . for the */
/* least to the most significant bytes of the word */
/* (notice the bit-reversal done by crc32 throughout!) */
/* This table is 4K long */
.align 64
crct2:
.4byte 0x00000000, 0x6992cea2, 0xd3259d44, 0xbab753e6
.4byte 0xa3a74c79, 0xca3582db, 0x7082d13d, 0x19101f9f
.4byte 0x42a2ee03, 0x2b3020a1, 0x91877347, 0xf815bde5
.4byte 0xe105a27a, 0x88976cd8, 0x32203f3e, 0x5bb2f19c
.4byte 0x8545dc06, 0xecd712a4, 0x56604142, 0x3ff28fe0
.4byte 0x26e2907f, 0x4f705edd, 0xf5c70d3b, 0x9c55c399
.4byte 0xc7e73205, 0xae75fca7, 0x14c2af41, 0x7d5061e3
.4byte 0x64407e7c, 0x0dd2b0de, 0xb765e338, 0xdef72d9a
.4byte 0x0f67cefd, 0x66f5005f, 0xdc4253b9, 0xb5d09d1b
.4byte 0xacc08284, 0xc5524c26, 0x7fe51fc0, 0x1677d162
.4byte 0x4dc520fe, 0x2457ee5c, 0x9ee0bdba, 0xf7727318
.4byte 0xee626c87, 0x87f0a225, 0x3d47f1c3, 0x54d53f61
.4byte 0x8a2212fb, 0xe3b0dc59, 0x59078fbf, 0x3095411d
.4byte 0x29855e82, 0x40179020, 0xfaa0c3c6, 0x93320d64
.4byte 0xc880fcf8, 0xa112325a, 0x1ba561bc, 0x7237af1e
.4byte 0x6b27b081, 0x02b57e23, 0xb8022dc5, 0xd190e367
.4byte 0x1ecf9dfa, 0x775d5358, 0xcdea00be, 0xa478ce1c
.4byte 0xbd68d183, 0xd4fa1f21, 0x6e4d4cc7, 0x07df8265
.4byte 0x5c6d73f9, 0x35ffbd5b, 0x8f48eebd, 0xe6da201f
.4byte 0xffca3f80, 0x9658f122, 0x2cefa2c4, 0x457d6c66
.4byte 0x9b8a41fc, 0xf2188f5e, 0x48afdcb8, 0x213d121a
.4byte 0x382d0d85, 0x51bfc327, 0xeb0890c1, 0x829a5e63
.4byte 0xd928afff, 0xb0ba615d, 0x0a0d32bb, 0x639ffc19
.4byte 0x7a8fe386, 0x131d2d24, 0xa9aa7ec2, 0xc038b060
.4byte 0x11a85307, 0x783a9da5, 0xc28dce43, 0xab1f00e1
.4byte 0xb20f1f7e, 0xdb9dd1dc, 0x612a823a, 0x08b84c98
.4byte 0x530abd04, 0x3a9873a6, 0x802f2040, 0xe9bdeee2
.4byte 0xf0adf17d, 0x993f3fdf, 0x23886c39, 0x4a1aa29b
.4byte 0x94ed8f01, 0xfd7f41a3, 0x47c81245, 0x2e5adce7
.4byte 0x374ac378, 0x5ed80dda, 0xe46f5e3c, 0x8dfd909e
.4byte 0xd64f6102, 0xbfddafa0, 0x056afc46, 0x6cf832e4
.4byte 0x75e82d7b, 0x1c7ae3d9, 0xa6cdb03f, 0xcf5f7e9d
.4byte 0x3d9f3bf4, 0x540df556, 0xeebaa6b0, 0x87286812
.4byte 0x9e38778d, 0xf7aab92f, 0x4d1deac9, 0x248f246b
.4byte 0x7f3dd5f7, 0x16af1b55, 0xac1848b3, 0xc58a8611
.4byte 0xdc9a998e, 0xb508572c, 0x0fbf04ca, 0x662dca68
.4byte 0xb8dae7f2, 0xd1482950, 0x6bff7ab6, 0x026db414
.4byte 0x1b7dab8b, 0x72ef6529, 0xc85836cf, 0xa1caf86d
.4byte 0xfa7809f1, 0x93eac753, 0x295d94b5, 0x40cf5a17
.4byte 0x59df4588, 0x304d8b2a, 0x8afad8cc, 0xe368166e
.4byte 0x32f8f509, 0x5b6a3bab, 0xe1dd684d, 0x884fa6ef
.4byte 0x915fb970, 0xf8cd77d2, 0x427a2434, 0x2be8ea96
.4byte 0x705a1b0a, 0x19c8d5a8, 0xa37f864e, 0xcaed48ec
.4byte 0xd3fd5773, 0xba6f99d1, 0x00d8ca37, 0x694a0495
.4byte 0xb7bd290f, 0xde2fe7ad, 0x6498b44b, 0x0d0a7ae9
.4byte 0x141a6576, 0x7d88abd4, 0xc73ff832, 0xaead3690
.4byte 0xf51fc70c, 0x9c8d09ae, 0x263a5a48, 0x4fa894ea
.4byte 0x56b88b75, 0x3f2a45d7, 0x859d1631, 0xec0fd893
.4byte 0x2350a60e, 0x4ac268ac, 0xf0753b4a, 0x99e7f5e8
.4byte 0x80f7ea77, 0xe96524d5, 0x53d27733, 0x3a40b991
.4byte 0x61f2480d, 0x086086af, 0xb2d7d549, 0xdb451beb
.4byte 0xc2550474, 0xabc7cad6, 0x11709930, 0x78e25792
.4byte 0xa6157a08, 0xcf87b4aa, 0x7530e74c, 0x1ca229ee
.4byte 0x05b23671, 0x6c20f8d3, 0xd697ab35, 0xbf056597
.4byte 0xe4b7940b, 0x8d255aa9, 0x3792094f, 0x5e00c7ed
.4byte 0x4710d872, 0x2e8216d0, 0x94354536, 0xfda78b94
.4byte 0x2c3768f3, 0x45a5a651, 0xff12f5b7, 0x96803b15
.4byte 0x8f90248a, 0xe602ea28, 0x5cb5b9ce, 0x3527776c
.4byte 0x6e9586f0, 0x07074852, 0xbdb01bb4, 0xd422d516
.4byte 0xcd32ca89, 0xa4a0042b, 0x1e1757cd, 0x7785996f
.4byte 0xa972b4f5, 0xc0e07a57, 0x7a5729b1, 0x13c5e713
.4byte 0x0ad5f88c, 0x6347362e, 0xd9f065c8, 0xb062ab6a
.4byte 0xebd05af6, 0x82429454, 0x38f5c7b2, 0x51670910
.4byte 0x4877168f, 0x21e5d82d, 0x9b528bcb, 0xf2c04569
.4byte 0x00000000, 0x7b3e77e8, 0xf67cefd0, 0x8d429838
.4byte 0xe915a951, 0x922bdeb9, 0x1f694681, 0x64573169
.4byte 0xd7c72453, 0xacf953bb, 0x21bbcb83, 0x5a85bc6b
.4byte 0x3ed28d02, 0x45ecfaea, 0xc8ae62d2, 0xb390153a
.4byte 0xaa623e57, 0xd15c49bf, 0x5c1ed187, 0x2720a66f
.4byte 0x43779706, 0x3849e0ee, 0xb50b78d6, 0xce350f3e
.4byte 0x7da51a04, 0x069b6dec, 0x8bd9f5d4, 0xf0e7823c
.4byte 0x94b0b355, 0xef8ec4bd, 0x62cc5c85, 0x19f22b6d
.4byte 0x51280a5f, 0x2a167db7, 0xa754e58f, 0xdc6a9267
.4byte 0xb83da30e, 0xc303d4e6, 0x4e414cde, 0x357f3b36
.4byte 0x86ef2e0c, 0xfdd159e4, 0x7093c1dc, 0x0badb634
.4byte 0x6ffa875d, 0x14c4f0b5, 0x9986688d, 0xe2b81f65
.4byte 0xfb4a3408, 0x807443e0, 0x0d36dbd8, 0x7608ac30
.4byte 0x125f9d59, 0x6961eab1, 0xe4237289, 0x9f1d0561
.4byte 0x2c8d105b, 0x57b367b3, 0xdaf1ff8b, 0xa1cf8863
.4byte 0xc598b90a, 0xbea6cee2, 0x33e456da, 0x48da2132
.4byte 0xa25014be, 0xd96e6356, 0x542cfb6e, 0x2f128c86
.4byte 0x4b45bdef, 0x307bca07, 0xbd39523f, 0xc60725d7
.4byte 0x759730ed, 0x0ea94705, 0x83ebdf3d, 0xf8d5a8d5
.4byte 0x9c8299bc, 0xe7bcee54, 0x6afe766c, 0x11c00184
.4byte 0x08322ae9, 0x730c5d01, 0xfe4ec539, 0x8570b2d1
.4byte 0xe12783b8, 0x9a19f450, 0x175b6c68, 0x6c651b80
.4byte 0xdff50eba, 0xa4cb7952, 0x2989e16a, 0x52b79682
.4byte 0x36e0a7eb, 0x4dded003, 0xc09c483b, 0xbba23fd3
.4byte 0xf3781ee1, 0x88466909, 0x0504f131, 0x7e3a86d9
.4byte 0x1a6db7b0, 0x6153c058, 0xec115860, 0x972f2f88
.4byte 0x24bf3ab2, 0x5f814d5a, 0xd2c3d562, 0xa9fda28a
.4byte 0xcdaa93e3, 0xb694e40b, 0x3bd67c33, 0x40e80bdb
.4byte 0x591a20b6, 0x2224575e, 0xaf66cf66, 0xd458b88e
.4byte 0xb00f89e7, 0xcb31fe0f, 0x46736637, 0x3d4d11df
.4byte 0x8edd04e5, 0xf5e3730d, 0x78a1eb35, 0x039f9cdd
.4byte 0x67c8adb4, 0x1cf6da5c, 0x91b44264, 0xea8a358c
.4byte 0x414c5f8d, 0x3a722865, 0xb730b05d, 0xcc0ec7b5
.4byte 0xa859f6dc, 0xd3678134, 0x5e25190c, 0x251b6ee4
.4byte 0x968b7bde, 0xedb50c36, 0x60f7940e, 0x1bc9e3e6
.4byte 0x7f9ed28f, 0x04a0a567, 0x89e23d5f, 0xf2dc4ab7
.4byte 0xeb2e61da, 0x90101632, 0x1d528e0a, 0x666cf9e2
.4byte 0x023bc88b, 0x7905bf63, 0xf447275b, 0x8f7950b3
.4byte 0x3ce94589, 0x47d73261, 0xca95aa59, 0xb1abddb1
.4byte 0xd5fcecd8, 0xaec29b30, 0x23800308, 0x58be74e0
.4byte 0x106455d2, 0x6b5a223a, 0xe618ba02, 0x9d26cdea
.4byte 0xf971fc83, 0x824f8b6b, 0x0f0d1353, 0x743364bb
.4byte 0xc7a37181, 0xbc9d0669, 0x31df9e51, 0x4ae1e9b9
.4byte 0x2eb6d8d0, 0x5588af38, 0xd8ca3700, 0xa3f440e8
.4byte 0xba066b85, 0xc1381c6d, 0x4c7a8455, 0x3744f3bd
.4byte 0x5313c2d4, 0x282db53c, 0xa56f2d04, 0xde515aec
.4byte 0x6dc14fd6, 0x16ff383e, 0x9bbda006, 0xe083d7ee
.4byte 0x84d4e687, 0xffea916f, 0x72a80957, 0x09967ebf
.4byte 0xe31c4b33, 0x98223cdb, 0x1560a4e3, 0x6e5ed30b
.4byte 0x0a09e262, 0x7137958a, 0xfc750db2, 0x874b7a5a
.4byte 0x34db6f60, 0x4fe51888, 0xc2a780b0, 0xb999f758
.4byte 0xddcec631, 0xa6f0b1d9, 0x2bb229e1, 0x508c5e09
.4byte 0x497e7564, 0x3240028c, 0xbf029ab4, 0xc43ced5c
.4byte 0xa06bdc35, 0xdb55abdd, 0x561733e5, 0x2d29440d
.4byte 0x9eb95137, 0xe58726df, 0x68c5bee7, 0x13fbc90f
.4byte 0x77acf866, 0x0c928f8e, 0x81d017b6, 0xfaee605e
.4byte 0xb234416c, 0xc90a3684, 0x4448aebc, 0x3f76d954
.4byte 0x5b21e83d, 0x201f9fd5, 0xad5d07ed, 0xd6637005
.4byte 0x65f3653f, 0x1ecd12d7, 0x938f8aef, 0xe8b1fd07
.4byte 0x8ce6cc6e, 0xf7d8bb86, 0x7a9a23be, 0x01a45456
.4byte 0x18567f3b, 0x636808d3, 0xee2a90eb, 0x9514e703
.4byte 0xf143d66a, 0x8a7da182, 0x073f39ba, 0x7c014e52
.4byte 0xcf915b68, 0xb4af2c80, 0x39edb4b8, 0x42d3c350
.4byte 0x2684f239, 0x5dba85d1, 0xd0f81de9, 0xabc66a01
.4byte 0x00000000, 0x8298bf1a, 0x00dd08c5, 0x8245b7df
.4byte 0x01ba118a, 0x8322ae90, 0x0167194f, 0x83ffa655
.4byte 0x03742314, 0x81ec9c0e, 0x03a92bd1, 0x813194cb
.4byte 0x02ce329e, 0x80568d84, 0x02133a5b, 0x808b8541
.4byte 0x06e84628, 0x8470f932, 0x06354eed, 0x84adf1f7
.4byte 0x075257a2, 0x85cae8b8, 0x078f5f67, 0x8517e07d
.4byte 0x059c653c, 0x8704da26, 0x05416df9, 0x87d9d2e3
.4byte 0x042674b6, 0x86becbac, 0x04fb7c73, 0x8663c369
.4byte 0x0dd08c50, 0x8f48334a, 0x0d0d8495, 0x8f953b8f
.4byte 0x0c6a9dda, 0x8ef222c0, 0x0cb7951f, 0x8e2f2a05
.4byte 0x0ea4af44, 0x8c3c105e, 0x0e79a781, 0x8ce1189b
.4byte 0x0f1ebece, 0x8d8601d4, 0x0fc3b60b, 0x8d5b0911
.4byte 0x0b38ca78, 0x89a07562, 0x0be5c2bd, 0x897d7da7
.4byte 0x0a82dbf2, 0x881a64e8, 0x0a5fd337, 0x88c76c2d
.4byte 0x084ce96c, 0x8ad45676, 0x0891e1a9, 0x8a095eb3
.4byte 0x09f6f8e6, 0x8b6e47fc, 0x092bf023, 0x8bb34f39
.4byte 0x1ba118a0, 0x9939a7ba, 0x1b7c1065, 0x99e4af7f
.4byte 0x1a1b092a, 0x9883b630, 0x1ac601ef, 0x985ebef5
.4byte 0x18d53bb4, 0x9a4d84ae, 0x18083371, 0x9a908c6b
.4byte 0x196f2a3e, 0x9bf79524, 0x19b222fb, 0x9b2a9de1
.4byte 0x1d495e88, 0x9fd1e192, 0x1d94564d, 0x9f0ce957
.4byte 0x1cf34f02, 0x9e6bf018, 0x1c2e47c7, 0x9eb6f8dd
.4byte 0x1e3d7d9c, 0x9ca5c286, 0x1ee07559, 0x9c78ca43
.4byte 0x1f876c16, 0x9d1fd30c, 0x1f5a64d3, 0x9dc2dbc9
.4byte 0x167194f0, 0x94e92bea, 0x16ac9c35, 0x9434232f
.4byte 0x17cb857a, 0x95533a60, 0x17168dbf, 0x958e32a5
.4byte 0x1505b7e4, 0x979d08fe, 0x15d8bf21, 0x9740003b
.4byte 0x14bfa66e, 0x96271974, 0x1462aeab, 0x96fa11b1
.4byte 0x1099d2d8, 0x92016dc2, 0x1044da1d, 0x92dc6507
.4byte 0x1123c352, 0x93bb7c48, 0x11fecb97, 0x9366748d
.4byte 0x13edf1cc, 0x91754ed6, 0x1330f909, 0x91a84613
.4byte 0x1257e046, 0x90cf5f5c, 0x128ae883, 0x90125799
.4byte 0x37423140, 0xb5da8e5a, 0x379f3985, 0xb507869f
.4byte 0x36f820ca, 0xb4609fd0, 0x3625280f, 0xb4bd9715
.4byte 0x34361254, 0xb6aead4e, 0x34eb1a91, 0xb673a58b
.4byte 0x358c03de, 0xb714bcc4, 0x35510b1b, 0xb7c9b401
.4byte 0x31aa7768, 0xb332c872, 0x31777fad, 0xb3efc0b7
.4byte 0x301066e2, 0xb288d9f8, 0x30cd6e27, 0xb255d13d
.4byte 0x32de547c, 0xb046eb66, 0x32035cb9, 0xb09be3a3
.4byte 0x336445f6, 0xb1fcfaec, 0x33b94d33, 0xb121f229
.4byte 0x3a92bd10, 0xb80a020a, 0x3a4fb5d5, 0xb8d70acf
.4byte 0x3b28ac9a, 0xb9b01380, 0x3bf5a45f, 0xb96d1b45
.4byte 0x39e69e04, 0xbb7e211e, 0x393b96c1, 0xbba329db
.4byte 0x385c8f8e, 0xbac43094, 0x3881874b, 0xba193851
.4byte 0x3c7afb38, 0xbee24422, 0x3ca7f3fd, 0xbe3f4ce7
.4byte 0x3dc0eab2, 0xbf5855a8, 0x3d1de277, 0xbf855d6d
.4byte 0x3f0ed82c, 0xbd966736, 0x3fd3d0e9, 0xbd4b6ff3
.4byte 0x3eb4c9a6, 0xbc2c76bc, 0x3e69c163, 0xbcf17e79
.4byte 0x2ce329e0, 0xae7b96fa, 0x2c3e2125, 0xaea69e3f
.4byte 0x2d59386a, 0xafc18770, 0x2d8430af, 0xaf1c8fb5
.4byte 0x2f970af4, 0xad0fb5ee, 0x2f4a0231, 0xadd2bd2b
.4byte 0x2e2d1b7e, 0xacb5a464, 0x2ef013bb, 0xac68aca1
.4byte 0x2a0b6fc8, 0xa893d0d2, 0x2ad6670d, 0xa84ed817
.4byte 0x2bb17e42, 0xa929c158, 0x2b6c7687, 0xa9f4c99d
.4byte 0x297f4cdc, 0xabe7f3c6, 0x29a24419, 0xab3afb03
.4byte 0x28c55d56, 0xaa5de24c, 0x28185593, 0xaa80ea89
.4byte 0x2133a5b0, 0xa3ab1aaa, 0x21eead75, 0xa376126f
.4byte 0x2089b43a, 0xa2110b20, 0x2054bcff, 0xa2cc03e5
.4byte 0x224786a4, 0xa0df39be, 0x229a8e61, 0xa002317b
.4byte 0x23fd972e, 0xa1652834, 0x23209feb, 0xa1b820f1
.4byte 0x27dbe398, 0xa5435c82, 0x2706eb5d, 0xa59e5447
.4byte 0x2661f212, 0xa4f94d08, 0x26bcfad7, 0xa42445cd
.4byte 0x24afc08c, 0xa6377f96, 0x2472c849, 0xa6ea7753
.4byte 0x2515d106, 0xa78d6e1c, 0x25c8d9c3, 0xa75066d9
.4byte 0x00000000, 0x6e846280, 0xdd08c500, 0xb38ca780
.4byte 0xbffdfcf1, 0xd1799e71, 0x62f539f1, 0x0c715b71
.4byte 0x7a178f13, 0x1493ed93, 0xa71f4a13, 0xc99b2893
.4byte 0xc5ea73e2, 0xab6e1162, 0x18e2b6e2, 0x7666d462
.4byte 0xf42f1e26, 0x9aab7ca6, 0x2927db26, 0x47a3b9a6
.4byte 0x4bd2e2d7, 0x25568057, 0x96da27d7, 0xf85e4557
.4byte 0x8e389135, 0xe0bcf3b5, 0x53305435, 0x3db436b5
.4byte 0x31c56dc4, 0x5f410f44, 0xeccda8c4, 0x8249ca44
.4byte 0xedb24abd, 0x8336283d, 0x30ba8fbd, 0x5e3eed3d
.4byte 0x524fb64c, 0x3ccbd4cc, 0x8f47734c, 0xe1c311cc
.4byte 0x97a5c5ae, 0xf921a72e, 0x4aad00ae, 0x2429622e
.4byte 0x2858395f, 0x46dc5bdf, 0xf550fc5f, 0x9bd49edf
.4byte 0x199d549b, 0x7719361b, 0xc495919b, 0xaa11f31b
.4byte 0xa660a86a, 0xc8e4caea, 0x7b686d6a, 0x15ec0fea
.4byte 0x638adb88, 0x0d0eb908, 0xbe821e88, 0xd0067c08
.4byte 0xdc772779, 0xb2f345f9, 0x017fe279, 0x6ffb80f9
.4byte 0xde88e38b, 0xb00c810b, 0x0380268b, 0x6d04440b
.4byte 0x61751f7a, 0x0ff17dfa, 0xbc7dda7a, 0xd2f9b8fa
.4byte 0xa49f6c98, 0xca1b0e18, 0x7997a998, 0x1713cb18
.4byte 0x1b629069, 0x75e6f2e9, 0xc66a5569, 0xa8ee37e9
.4byte 0x2aa7fdad, 0x44239f2d, 0xf7af38ad, 0x992b5a2d
.4byte 0x955a015c, 0xfbde63dc, 0x4852c45c, 0x26d6a6dc
.4byte 0x50b072be, 0x3e34103e, 0x8db8b7be, 0xe33cd53e
.4byte 0xef4d8e4f, 0x81c9eccf, 0x32454b4f, 0x5cc129cf
.4byte 0x333aa936, 0x5dbecbb6, 0xee326c36, 0x80b60eb6
.4byte 0x8cc755c7, 0xe2433747, 0x51cf90c7, 0x3f4bf247
.4byte 0x492d2625, 0x27a944a5, 0x9425e325, 0xfaa181a5
.4byte 0xf6d0dad4, 0x9854b854, 0x2bd81fd4, 0x455c7d54
.4byte 0xc715b710, 0xa991d590, 0x1a1d7210, 0x74991090
.4byte 0x78e84be1, 0x166c2961, 0xa5e08ee1, 0xcb64ec61
.4byte 0xbd023803, 0xd3865a83, 0x600afd03, 0x0e8e9f83
.4byte 0x02ffc4f2, 0x6c7ba672, 0xdff701f2, 0xb1736372
.4byte 0xb8fdb1e7, 0xd679d367, 0x65f574e7, 0x0b711667
.4byte 0x07004d16, 0x69842f96, 0xda088816, 0xb48cea96
.4byte 0xc2ea3ef4, 0xac6e5c74, 0x1fe2fbf4, 0x71669974
.4byte 0x7d17c205, 0x1393a085, 0xa01f0705, 0xce9b6585
.4byte 0x4cd2afc1, 0x2256cd41, 0x91da6ac1, 0xff5e0841
.4byte 0xf32f5330, 0x9dab31b0, 0x2e279630, 0x40a3f4b0
.4byte 0x36c520d2, 0x58414252, 0xebcde5d2, 0x85498752
.4byte 0x8938dc23, 0xe7bcbea3, 0x54301923, 0x3ab47ba3
.4byte 0x554ffb5a, 0x3bcb99da, 0x88473e5a, 0xe6c35cda
.4byte 0xeab207ab, 0x8436652b, 0x37bac2ab, 0x593ea02b
.4byte 0x2f587449, 0x41dc16c9, 0xf250b149, 0x9cd4d3c9
.4byte 0x90a588b8, 0xfe21ea38, 0x4dad4db8, 0x23292f38
.4byte 0xa160e57c, 0xcfe487fc, 0x7c68207c, 0x12ec42fc
.4byte 0x1e9d198d, 0x70197b0d, 0xc395dc8d, 0xad11be0d
.4byte 0xdb776a6f, 0xb5f308ef, 0x067faf6f, 0x68fbcdef
.4byte 0x648a969e, 0x0a0ef41e, 0xb982539e, 0xd706311e
.4byte 0x6675526c, 0x08f130ec, 0xbb7d976c, 0xd5f9f5ec
.4byte 0xd988ae9d, 0xb70ccc1d, 0x04806b9d, 0x6a04091d
.4byte 0x1c62dd7f, 0x72e6bfff, 0xc16a187f, 0xafee7aff
.4byte 0xa39f218e, 0xcd1b430e, 0x7e97e48e, 0x1013860e
.4byte 0x925a4c4a, 0xfcde2eca, 0x4f52894a, 0x21d6ebca
.4byte 0x2da7b0bb, 0x4323d23b, 0xf0af75bb, 0x9e2b173b
.4byte 0xe84dc359, 0x86c9a1d9, 0x35450659, 0x5bc164d9
.4byte 0x57b03fa8, 0x39345d28, 0x8ab8faa8, 0xe43c9828
.4byte 0x8bc718d1, 0xe5437a51, 0x56cfddd1, 0x384bbf51
.4byte 0x343ae420, 0x5abe86a0, 0xe9322120, 0x87b643a0
.4byte 0xf1d097c2, 0x9f54f542, 0x2cd852c2, 0x425c3042
.4byte 0x4e2d6b33, 0x20a909b3, 0x9325ae33, 0xfda1ccb3
.4byte 0x7fe806f7, 0x116c6477, 0xa2e0c3f7, 0xcc64a177
.4byte 0xc015fa06, 0xae919886, 0x1d1d3f06, 0x73995d86
.4byte 0x05ff89e4, 0x6b7beb64, 0xd8f74ce4, 0xb6732e64
.4byte 0xba027515, 0xd4861795, 0x670ab015, 0x098ed295
.size TRI_BlockCrc32_SSE42, .-TRI_BlockCrc32_SSE42
.size _TRI_BlockCrc32_SSE42, .-_TRI_BlockCrc32_SSE42
/* end of TRI_BlockCrc32_SSE42 */

View File

@ -87,7 +87,7 @@ if (ASM_OPTIMIZATIONS AND CMAKE_TARGET_ARCHITECTURE_CODE MATCHES "x86_64")
if (DARWIN)
set(LIB_ASM_SOURCES Basics/crc1.S)
else()
set(LIB_ASM_SOURCES Basics/crc4.S)
set(LIB_ASM_SOURCES Basics/crc5.S)
endif()
add_definitions("-DENABLE_ASM_CRC32=1")