12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- --- php-7.4.25.orig/ext/standard/crc32.c 2021-10-19 17:18:19.000000000 +0200
- +++ php-7.4.25/ext/standard/crc32.c 2021-10-29 14:58:12.777563842 +0200
- @@ -20,56 +20,6 @@
- #include "basic_functions.h"
- #include "crc32.h"
-
- -#if HAVE_AARCH64_CRC32
- -# include <arm_acle.h>
- -# if defined(__linux__)
- -# include <sys/auxv.h>
- -# include <asm/hwcap.h>
- -# endif
- -
- -static inline int has_crc32_insn() {
- - /* Only go through the runtime detection once. */
- - static int res = -1;
- - if (res != -1)
- - return res;
- -# if defined(HWCAP_CRC32)
- - res = getauxval(AT_HWCAP) & HWCAP_CRC32;
- - return res;
- -# elif defined(HWCAP2_CRC32)
- - res = getauxval(AT_HWCAP2) & HWCAP2_CRC32;
- - return res;
- -# else
- - res = 0;
- - return res;
- -# endif
- -}
- -
- -# pragma GCC push_options
- -# pragma GCC target ("+nothing+crc")
- -static uint32_t crc32_aarch64(uint32_t crc, char *p, size_t nr) {
- - while (nr >= sizeof(uint64_t)) {
- - crc = __crc32d(crc, *(uint64_t *)p);
- - p += sizeof(uint64_t);
- - nr -= sizeof(uint64_t);
- - }
- - if (nr >= sizeof(int32_t)) {
- - crc = __crc32w(crc, *(uint32_t *)p);
- - p += sizeof(uint32_t);
- - nr -= sizeof(uint32_t);
- - }
- - if (nr >= sizeof(int16_t)) {
- - crc = __crc32h(crc, *(uint16_t *)p);
- - p += sizeof(uint16_t);
- - nr -= sizeof(uint16_t);
- - }
- - if (nr) {
- - crc = __crc32b(crc, *p);
- - }
- - return crc;
- -}
- -# pragma GCC pop_options
- -#endif
- -
- /* {{{ proto string crc32(string str)
- Calculate the crc32 polynomial of a string */
- PHP_NAMED_FUNCTION(php_if_crc32)
- @@ -85,13 +35,6 @@ PHP_NAMED_FUNCTION(php_if_crc32)
-
- crc = crcinit^0xFFFFFFFF;
-
- -#if HAVE_AARCH64_CRC32
- - if (has_crc32_insn()) {
- - crc = crc32_aarch64(crc, p, nr);
- - RETURN_LONG(crc^0xFFFFFFFF);
- - }
- -#endif
- -
- for (; nr--; ++p) {
- crc = ((crc >> 8) & 0x00FFFFFF) ^ crc32tab[(crc ^ (*p)) & 0xFF ];
- }
|