summaryrefslogtreecommitdiff
path: root/package/php/patches/patch-ext_standard_crc32_c
blob: 2d55e1ed50a8599a18b01562e27809b9df6f3f6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
--- 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 ];
 	}