Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 18.223.121.54
Cant Read [ /etc/named.conf ]
8.1.13
www
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
www /
server /
php /
81 /
src /
ext /
standard /
[ HOME SHELL ]
Name
Size
Permission
Action
html_tables
[ DIR ]
drwxr-xr-x
tests
[ DIR ]
drwxr-xr-x
Makefile.frag
518
B
-rw-r--r--
Makefile.frag.w32
484
B
-rw-r--r--
array.c
171.38
KB
-rw-r--r--
assert.c
8.26
KB
-rw-r--r--
base64.c
30.55
KB
-rw-r--r--
base64.h
3.59
KB
-rw-r--r--
basic_functions.c
66.93
KB
-rw-r--r--
basic_functions.h
4.87
KB
-rw-r--r--
basic_functions.stub.php
48.85
KB
-rw-r--r--
basic_functions_arginfo.h
125.23
KB
-rw-r--r--
browscap.c
20.49
KB
-rw-r--r--
config.m4
10.98
KB
-rw-r--r--
config.w32
1.79
KB
-rw-r--r--
crc32.c
3.85
KB
-rw-r--r--
crc32.h
4.79
KB
-rw-r--r--
crc32_x86.c
11.99
KB
-rw-r--r--
crc32_x86.h
1.82
KB
-rw-r--r--
credits.c
5.71
KB
-rw-r--r--
credits.h
1.53
KB
-rw-r--r--
credits_ext.h
5.24
KB
-rw-r--r--
credits_sapi.h
835
B
-rw-r--r--
crypt.c
6.73
KB
-rw-r--r--
crypt_blowfish.c
30.75
KB
-rw-r--r--
crypt_blowfish.h
790
B
-rw-r--r--
crypt_freesec.c
21.52
KB
-rw-r--r--
crypt_freesec.h
662
B
-rw-r--r--
crypt_sha256.c
21.6
KB
-rw-r--r--
crypt_sha512.c
26.24
KB
-rw-r--r--
css.c
2.24
KB
-rw-r--r--
css.h
1.04
KB
-rw-r--r--
datetime.c
3.28
KB
-rw-r--r--
datetime.h
1.14
KB
-rw-r--r--
dir.c
14.04
KB
-rw-r--r--
dir.stub.php
528
B
-rw-r--r--
dir_arginfo.h
1.83
KB
-rw-r--r--
dl.c
8.18
KB
-rw-r--r--
dl.h
1.46
KB
-rw-r--r--
dl.stub.php
56
B
-rw-r--r--
dl_arginfo.h
269
B
-rw-r--r--
dns.c
29.37
KB
-rw-r--r--
dns_win32.c
15.09
KB
-rw-r--r--
exec.c
12.77
KB
-rw-r--r--
exec.h
1.27
KB
-rw-r--r--
file.c
65.14
KB
-rw-r--r--
file.h
3.93
KB
-rw-r--r--
filestat.c
28.38
KB
-rw-r--r--
filters.c
50.3
KB
-rw-r--r--
flock_compat.c
6
KB
-rw-r--r--
flock_compat.h
2.06
KB
-rw-r--r--
formatted_print.c
23.31
KB
-rw-r--r--
fsock.c
3.67
KB
-rw-r--r--
fsock.h
1.22
KB
-rw-r--r--
ftok.c
1.84
KB
-rw-r--r--
ftp_fopen_wrapper.c
31.54
KB
-rw-r--r--
head.c
10.66
KB
-rw-r--r--
head.h
1.53
KB
-rw-r--r--
hrtime.c
4.86
KB
-rw-r--r--
hrtime.h
2.31
KB
-rw-r--r--
html.c
44.9
KB
-rw-r--r--
html.h
2.34
KB
-rw-r--r--
html_tables.h
472.26
KB
-rw-r--r--
http.c
6.99
KB
-rw-r--r--
http_fopen_wrapper.c
32.23
KB
-rw-r--r--
image.c
44.79
KB
-rw-r--r--
incomplete_class.c
4.95
KB
-rw-r--r--
info.c
40.74
KB
-rw-r--r--
info.h
22.94
KB
-rw-r--r--
iptc.c
9.11
KB
-rw-r--r--
lcg.c
2.8
KB
-rw-r--r--
levenshtein.c
2.57
KB
-rw-r--r--
link.c
5.45
KB
-rw-r--r--
mail.c
15.13
KB
-rw-r--r--
math.c
27.18
KB
-rw-r--r--
md5.c
10.66
KB
-rw-r--r--
md5.h
2.02
KB
-rw-r--r--
metaphone.c
11.53
KB
-rw-r--r--
microtime.c
4.01
KB
-rw-r--r--
mt_rand.c
10.67
KB
-rw-r--r--
net.c
8.97
KB
-rw-r--r--
pack.c
31.65
KB
-rw-r--r--
pack.h
1.05
KB
-rw-r--r--
pageinfo.c
3.23
KB
-rw-r--r--
pageinfo.h
1.15
KB
-rw-r--r--
password.c
19.17
KB
-rw-r--r--
php_array.h
2.24
KB
-rw-r--r--
php_assert.h
1.24
KB
-rw-r--r--
php_browscap.h
1.11
KB
-rw-r--r--
php_crypt.h
1.37
KB
-rw-r--r--
php_crypt_r.c
5.74
KB
-rw-r--r--
php_crypt_r.h
1.64
KB
-rw-r--r--
php_dir.h
1.28
KB
-rw-r--r--
php_dns.h
2.58
KB
-rw-r--r--
php_ext_syslog.h
1.25
KB
-rw-r--r--
php_filestat.h
2.1
KB
-rw-r--r--
php_fopen_wrapper.c
11.47
KB
-rw-r--r--
php_fopen_wrappers.h
1.79
KB
-rw-r--r--
php_http.h
1.33
KB
-rw-r--r--
php_image.h
2.17
KB
-rw-r--r--
php_incomplete_class.h
2.15
KB
-rw-r--r--
php_lcg.h
1.31
KB
-rw-r--r--
php_mail.h
2.16
KB
-rw-r--r--
php_math.h
3.55
KB
-rw-r--r--
php_mt_rand.h
1.81
KB
-rw-r--r--
php_net.h
1.14
KB
-rw-r--r--
php_password.h
2.76
KB
-rw-r--r--
php_rand.h
3
KB
-rw-r--r--
php_random.h
1.86
KB
-rw-r--r--
php_smart_string.h
1.13
KB
-rw-r--r--
php_smart_string_public.h
1.14
KB
-rw-r--r--
php_standard.h
1.91
KB
-rw-r--r--
php_string.h
3.95
KB
-rw-r--r--
php_uuencode.h
1.18
KB
-rw-r--r--
php_var.h
3.41
KB
-rw-r--r--
php_versioning.h
1.18
KB
-rw-r--r--
proc_open.c
35.65
KB
-rw-r--r--
proc_open.h
1.67
KB
-rw-r--r--
quot_print.c
7
KB
-rw-r--r--
quot_print.h
1.23
KB
-rw-r--r--
rand.c
2.22
KB
-rw-r--r--
random.c
7.33
KB
-rw-r--r--
scanf.c
28.32
KB
-rw-r--r--
scanf.h
1.95
KB
-rw-r--r--
sha1.c
11.22
KB
-rw-r--r--
sha1.h
1.62
KB
-rw-r--r--
soundex.c
2.94
KB
-rw-r--r--
streamsfuncs.c
43.35
KB
-rw-r--r--
streamsfuncs.h
1.11
KB
-rw-r--r--
string.c
143.34
KB
-rw-r--r--
strnatcmp.c
4.28
KB
-rw-r--r--
syslog.c
6.02
KB
-rw-r--r--
type.c
10.77
KB
-rw-r--r--
uniqid.c
2.62
KB
-rw-r--r--
url.c
18.08
KB
-rw-r--r--
url.h
2.08
KB
-rw-r--r--
url_scanner_ex.c
38.41
KB
-rw-r--r--
url_scanner_ex.h
2.32
KB
-rw-r--r--
url_scanner_ex.re
27.63
KB
-rw-r--r--
user_filters.c
15.39
KB
-rw-r--r--
user_filters.stub.php
541
B
-rw-r--r--
user_filters_arginfo.h
2.45
KB
-rw-r--r--
uuencode.c
6.35
KB
-rw-r--r--
var.c
40.96
KB
-rw-r--r--
var_unserializer.c
42.18
KB
-rw-r--r--
var_unserializer.re
34.43
KB
-rw-r--r--
versioning.c
5.69
KB
-rw-r--r--
winver.h
6.23
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : crc32_x86.c
/* +----------------------------------------------------------------------+ | Copyright (c) The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | https://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Frank Du <frank.du@intel.com> | +----------------------------------------------------------------------+ | Compute the crc32 of the buffer. Based on: | | "Fast CRC Computation for Generic Polynomials Using PCLMULQDQ" | | V. Gopal, E. Ozturk, et al., 2009, http://intel.ly/2ySEwL0 | */ #include "crc32_x86.h" #if ZEND_INTRIN_SSE4_2_PCLMUL_NATIVE || ZEND_INTRIN_SSE4_2_PCLMUL_RESOLVER # include <nmmintrin.h> # include <wmmintrin.h> #endif #if ZEND_INTRIN_SSE4_2_PCLMUL_RESOLVER # include "Zend/zend_cpuinfo.h" #endif #if ZEND_INTRIN_SSE4_2_PCLMUL_NATIVE || ZEND_INTRIN_SSE4_2_PCLMUL_RESOLVER typedef struct _crc32_pclmul_bit_consts { uint64_t k1k2[2]; uint64_t k3k4[2]; uint64_t k5k6[2]; uint64_t uPx[2]; } crc32_pclmul_consts; static const crc32_pclmul_consts crc32_pclmul_consts_maps[X86_CRC32_MAX] = { { /* X86_CRC32, polynomial: 0x04C11DB7 */ {0x00e6228b11, 0x008833794c}, /* endianness swap */ {0x00e8a45605, 0x00c5b9cd4c}, /* endianness swap */ {0x00490d678d, 0x00f200aa66}, /* endianness swap */ {0x0104d101df, 0x0104c11db7} }, { /* X86_CRC32B, polynomial: 0x04C11DB7 with reversed ordering */ {0x0154442bd4, 0x01c6e41596}, {0x01751997d0, 0x00ccaa009e}, {0x0163cd6124, 0x01db710640}, {0x01f7011641, 0x01db710641}, }, { /* X86_CRC32C, polynomial: 0x1EDC6F41 with reversed ordering */ {0x00740eef02, 0x009e4addf8}, {0x00f20c0dfe, 0x014cd00bd6}, {0x00dd45aab8, 0x0000000000}, {0x00dea713f1, 0x0105ec76f0} } }; static uint8_t pclmul_shuf_mask_table[16] = { 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, }; /* Folding of 128-bit data chunks */ #define CRC32_FOLDING_BLOCK_SIZE (16) /* PCLMUL version of non-relfected crc32 */ ZEND_INTRIN_SSE4_2_PCLMUL_FUNC_DECL(size_t crc32_pclmul_batch(uint32_t *crc, const unsigned char *p, size_t nr, const crc32_pclmul_consts *consts)); size_t crc32_pclmul_batch(uint32_t *crc, const unsigned char *p, size_t nr, const crc32_pclmul_consts *consts) { size_t nr_in = nr; __m128i x0, x1, x2, k, shuf_mask; if (nr < CRC32_FOLDING_BLOCK_SIZE) { return 0; } shuf_mask = _mm_loadu_si128((__m128i *)(pclmul_shuf_mask_table)); x0 = _mm_cvtsi32_si128(*crc); x1 = _mm_loadu_si128((__m128i *)(p + 0x00)); x0 = _mm_slli_si128(x0, 12); x1 = _mm_shuffle_epi8(x1, shuf_mask); /* endianness swap */ x0 = _mm_xor_si128(x1, x0); p += CRC32_FOLDING_BLOCK_SIZE; nr -= CRC32_FOLDING_BLOCK_SIZE; if (nr >= (CRC32_FOLDING_BLOCK_SIZE * 3)) { __m128i x3, x4; x1 = _mm_loadu_si128((__m128i *)(p + 0x00)); x1 = _mm_shuffle_epi8(x1, shuf_mask); /* endianness swap */ x2 = _mm_loadu_si128((__m128i *)(p + 0x10)); x2 = _mm_shuffle_epi8(x2, shuf_mask); /* endianness swap */ x3 = _mm_loadu_si128((__m128i *)(p + 0x20)); x3 = _mm_shuffle_epi8(x3, shuf_mask); /* endianness swap */ p += CRC32_FOLDING_BLOCK_SIZE * 3; nr -= CRC32_FOLDING_BLOCK_SIZE * 3; k = _mm_loadu_si128((__m128i *)consts->k1k2); /* parallel folding by 4 */ while (nr >= (CRC32_FOLDING_BLOCK_SIZE * 4)) { __m128i x5, x6, x7, x8, x9, x10, x11; x4 = _mm_clmulepi64_si128(x0, k, 0x00); x5 = _mm_clmulepi64_si128(x1, k, 0x00); x6 = _mm_clmulepi64_si128(x2, k, 0x00); x7 = _mm_clmulepi64_si128(x3, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x1 = _mm_clmulepi64_si128(x1, k, 0x11); x2 = _mm_clmulepi64_si128(x2, k, 0x11); x3 = _mm_clmulepi64_si128(x3, k, 0x11); x8 = _mm_loadu_si128((__m128i *)(p + 0x00)); x8 = _mm_shuffle_epi8(x8, shuf_mask); /* endianness swap */ x9 = _mm_loadu_si128((__m128i *)(p + 0x10)); x9 = _mm_shuffle_epi8(x9, shuf_mask); /* endianness swap */ x10 = _mm_loadu_si128((__m128i *)(p + 0x20)); x10 = _mm_shuffle_epi8(x10, shuf_mask); /* endianness swap */ x11 = _mm_loadu_si128((__m128i *)(p + 0x30)); x11 = _mm_shuffle_epi8(x11, shuf_mask); /* endianness swap */ x0 = _mm_xor_si128(x0, x4); x1 = _mm_xor_si128(x1, x5); x2 = _mm_xor_si128(x2, x6); x3 = _mm_xor_si128(x3, x7); x0 = _mm_xor_si128(x0, x8); x1 = _mm_xor_si128(x1, x9); x2 = _mm_xor_si128(x2, x10); x3 = _mm_xor_si128(x3, x11); p += CRC32_FOLDING_BLOCK_SIZE * 4; nr -= CRC32_FOLDING_BLOCK_SIZE * 4; } k = _mm_loadu_si128((__m128i *)consts->k3k4); /* fold 4 to 1, [x1, x2, x3] -> x0 */ x4 = _mm_clmulepi64_si128(x0, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x0 = _mm_xor_si128(x0, x1); x0 = _mm_xor_si128(x0, x4); x4 = _mm_clmulepi64_si128(x0, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x0 = _mm_xor_si128(x0, x2); x0 = _mm_xor_si128(x0, x4); x4 = _mm_clmulepi64_si128(x0, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x0 = _mm_xor_si128(x0, x3); x0 = _mm_xor_si128(x0, x4); } k = _mm_loadu_si128((__m128i *)consts->k3k4); /* folding by 1 */ while (nr >= CRC32_FOLDING_BLOCK_SIZE) { /* load next to x2, fold to x0, x1 */ x2 = _mm_loadu_si128((__m128i *)(p + 0x00)); x2 = _mm_shuffle_epi8(x2, shuf_mask); /* endianness swap */ x1 = _mm_clmulepi64_si128(x0, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x0 = _mm_xor_si128(x0, x2); x0 = _mm_xor_si128(x0, x1); p += CRC32_FOLDING_BLOCK_SIZE; nr -= CRC32_FOLDING_BLOCK_SIZE; } /* reduce 128-bits(final fold) to 96-bits */ k = _mm_loadu_si128((__m128i*)consts->k5k6); x1 = _mm_clmulepi64_si128(x0, k, 0x11); x0 = _mm_slli_si128(x0, 8); x0 = _mm_srli_si128(x0, 4); x0 = _mm_xor_si128(x0, x1); /* reduce 96-bits to 64-bits */ x1 = _mm_clmulepi64_si128(x0, k, 0x01); x0 = _mm_xor_si128(x0, x1); /* barrett reduction */ k = _mm_loadu_si128((__m128i*)consts->uPx); x1 = _mm_move_epi64(x0); x1 = _mm_srli_si128(x1, 4); x1 = _mm_clmulepi64_si128(x1, k, 0x00); x1 = _mm_srli_si128(x1, 4); x1 = _mm_clmulepi64_si128(x1, k, 0x10); x0 = _mm_xor_si128(x1, x0); *crc = _mm_extract_epi32(x0, 0); return (nr_in - nr); /* the nr processed */ } /* PCLMUL version of relfected crc32 */ ZEND_INTRIN_SSE4_2_PCLMUL_FUNC_DECL(size_t crc32_pclmul_reflected_batch(uint32_t *crc, const unsigned char *p, size_t nr, const crc32_pclmul_consts *consts)); size_t crc32_pclmul_reflected_batch(uint32_t *crc, const unsigned char *p, size_t nr, const crc32_pclmul_consts *consts) { size_t nr_in = nr; __m128i x0, x1, x2, k; if (nr < CRC32_FOLDING_BLOCK_SIZE) { return 0; } x0 = _mm_loadu_si128((__m128i *)(p + 0x00)); x0 = _mm_xor_si128(x0, _mm_cvtsi32_si128(*crc)); p += CRC32_FOLDING_BLOCK_SIZE; nr -= CRC32_FOLDING_BLOCK_SIZE; if (nr >= (CRC32_FOLDING_BLOCK_SIZE * 3)) { __m128i x3, x4; x1 = _mm_loadu_si128((__m128i *)(p + 0x00)); x2 = _mm_loadu_si128((__m128i *)(p + 0x10)); x3 = _mm_loadu_si128((__m128i *)(p + 0x20)); p += CRC32_FOLDING_BLOCK_SIZE * 3; nr -= CRC32_FOLDING_BLOCK_SIZE * 3; k = _mm_loadu_si128((__m128i *)consts->k1k2); /* parallel folding by 4 */ while (nr >= (CRC32_FOLDING_BLOCK_SIZE * 4)) { __m128i x5, x6, x7, x8, x9, x10, x11; x4 = _mm_clmulepi64_si128(x0, k, 0x00); x5 = _mm_clmulepi64_si128(x1, k, 0x00); x6 = _mm_clmulepi64_si128(x2, k, 0x00); x7 = _mm_clmulepi64_si128(x3, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x1 = _mm_clmulepi64_si128(x1, k, 0x11); x2 = _mm_clmulepi64_si128(x2, k, 0x11); x3 = _mm_clmulepi64_si128(x3, k, 0x11); x8 = _mm_loadu_si128((__m128i *)(p + 0x00)); x9 = _mm_loadu_si128((__m128i *)(p + 0x10)); x10 = _mm_loadu_si128((__m128i *)(p + 0x20)); x11 = _mm_loadu_si128((__m128i *)(p + 0x30)); x0 = _mm_xor_si128(x0, x4); x1 = _mm_xor_si128(x1, x5); x2 = _mm_xor_si128(x2, x6); x3 = _mm_xor_si128(x3, x7); x0 = _mm_xor_si128(x0, x8); x1 = _mm_xor_si128(x1, x9); x2 = _mm_xor_si128(x2, x10); x3 = _mm_xor_si128(x3, x11); p += CRC32_FOLDING_BLOCK_SIZE * 4; nr -= CRC32_FOLDING_BLOCK_SIZE * 4; } k = _mm_loadu_si128((__m128i *)consts->k3k4); /* fold 4 to 1, [x1, x2, x3] -> x0 */ x4 = _mm_clmulepi64_si128(x0, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x0 = _mm_xor_si128(x0, x1); x0 = _mm_xor_si128(x0, x4); x4 = _mm_clmulepi64_si128(x0, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x0 = _mm_xor_si128(x0, x2); x0 = _mm_xor_si128(x0, x4); x4 = _mm_clmulepi64_si128(x0, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x0 = _mm_xor_si128(x0, x3); x0 = _mm_xor_si128(x0, x4); } k = _mm_loadu_si128((__m128i *)consts->k3k4); /* folding by 1 */ while (nr >= CRC32_FOLDING_BLOCK_SIZE) { /* load next to x2, fold to x0, x1 */ x2 = _mm_loadu_si128((__m128i *)(p + 0x00)); x1 = _mm_clmulepi64_si128(x0, k, 0x00); x0 = _mm_clmulepi64_si128(x0, k, 0x11); x0 = _mm_xor_si128(x0, x2); x0 = _mm_xor_si128(x0, x1); p += CRC32_FOLDING_BLOCK_SIZE; nr -= CRC32_FOLDING_BLOCK_SIZE; } /* reduce 128-bits(final fold) to 96-bits */ x1 = _mm_clmulepi64_si128(x0, k, 0x10); x0 = _mm_srli_si128(x0, 8); x0 = _mm_xor_si128(x0, x1); /* reduce 96-bits to 64-bits */ x1 = _mm_shuffle_epi32(x0, 0xfc); x0 = _mm_shuffle_epi32(x0, 0xf9); k = _mm_loadu_si128((__m128i*)consts->k5k6); x1 = _mm_clmulepi64_si128(x1, k, 0x00); x0 = _mm_xor_si128(x0, x1); /* barrett reduction */ x1 = _mm_shuffle_epi32(x0, 0xf3); x0 = _mm_slli_si128(x0, 4); k = _mm_loadu_si128((__m128i*)consts->uPx); x1 = _mm_clmulepi64_si128(x1, k, 0x00); x1 = _mm_clmulepi64_si128(x1, k, 0x10); x0 = _mm_xor_si128(x1, x0); *crc = _mm_extract_epi32(x0, 2); return (nr_in - nr); /* the nr processed */ } # if ZEND_INTRIN_SSE4_2_PCLMUL_NATIVE size_t crc32_x86_simd_update(X86_CRC32_TYPE type, uint32_t *crc, const unsigned char *p, size_t nr) # else /* ZEND_INTRIN_SSE4_2_PCLMUL_RESOLVER */ size_t crc32_sse42_pclmul_update(X86_CRC32_TYPE type, uint32_t *crc, const unsigned char *p, size_t nr) # endif { if (type > X86_CRC32_MAX) { return 0; } const crc32_pclmul_consts *consts = &crc32_pclmul_consts_maps[type]; switch (type) { case X86_CRC32: return crc32_pclmul_batch(crc, p, nr, consts); case X86_CRC32B: case X86_CRC32C: return crc32_pclmul_reflected_batch(crc, p, nr, consts); default: return 0; } } #endif #if ZEND_INTRIN_SSE4_2_PCLMUL_RESOLVER static size_t crc32_x86_simd_update_default(X86_CRC32_TYPE type, uint32_t *crc, const unsigned char *p, size_t nr) { return 0; } # if ZEND_INTRIN_SSE4_2_PCLMUL_FUNC_PROTO size_t crc32_x86_simd_update(X86_CRC32_TYPE type, uint32_t *crc, const unsigned char *p, size_t nr) __attribute__((ifunc("resolve_crc32_x86_simd_update"))); typedef size_t (*crc32_x86_simd_func_t)(X86_CRC32_TYPE type, uint32_t *crc, const unsigned char *p, size_t nr); ZEND_NO_SANITIZE_ADDRESS ZEND_ATTRIBUTE_UNUSED /* clang mistakenly warns about this */ static crc32_x86_simd_func_t resolve_crc32_x86_simd_update() { if (zend_cpu_supports_sse42() && zend_cpu_supports_pclmul()) { return crc32_sse42_pclmul_update; } return crc32_x86_simd_update_default; } # else /* ZEND_INTRIN_SSE4_2_PCLMUL_FUNC_PTR */ static size_t (*crc32_x86_simd_ptr)(X86_CRC32_TYPE type, uint32_t *crc, const unsigned char *p, size_t nr) = crc32_x86_simd_update_default; size_t crc32_x86_simd_update(X86_CRC32_TYPE type, uint32_t *crc, const unsigned char *p, size_t nr) { return crc32_x86_simd_ptr(type, crc, p, nr); } /* {{{ PHP_MINIT_FUNCTION */ PHP_MINIT_FUNCTION(crc32_x86_intrin) { if (zend_cpu_supports_sse42() && zend_cpu_supports_pclmul()) { crc32_x86_simd_ptr = crc32_sse42_pclmul_update; } return SUCCESS; } /* }}} */ # endif #endif
Close