Skip to content

Commit f52e8ad

Browse files
committed
patch 8.3 src to use avx512 cache vars
1 parent 4318ef8 commit f52e8ad

2 files changed

Lines changed: 95 additions & 0 deletions

File tree

src/SPC/store/SourcePatcher.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ public static function patchBeforeBuildconf(BuilderBase $builder): void
9595
// patch php-src/build/php.m4 PKG_CHECK_MODULES -> PKG_CHECK_MODULES_STATIC
9696
FileSystem::replaceFileStr(SOURCE_PATH . '/php-src/build/php.m4', 'PKG_CHECK_MODULES(', 'PKG_CHECK_MODULES_STATIC(');
9797

98+
if ($builder->getPHPVersionID() >= 80300 && $builder->getPHPVersionID() < 80400) {
99+
self::patchFile('spc_fix_avx512_cache_before_80400.patch', SOURCE_PATH . '/php-src');
100+
}
101+
98102
if ($builder->getOption('enable-micro-win32')) {
99103
self::patchMicroWin32();
100104
} else {
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
--- a/build/php.m4
2+
+++ b/build/php.m4
3+
@@ -2812,27 +2812,26 @@
4+
dnl PHP_CHECK_AVX512_SUPPORTS
5+
dnl
6+
AC_DEFUN([PHP_CHECK_AVX512_SUPPORTS], [
7+
- AC_MSG_CHECKING([for avx512 supports in compiler])
8+
- save_CFLAGS="$CFLAGS"
9+
- CFLAGS="-mavx512f -mavx512cd -mavx512vl -mavx512dq -mavx512bw $CFLAGS"
10+
-
11+
- AC_LINK_IFELSE([AC_LANG_SOURCE([[
12+
- #include <immintrin.h>
13+
- int main(void) {
14+
- __m512i mask = _mm512_set1_epi32(0x1);
15+
- char out[32];
16+
- _mm512_storeu_si512(out, _mm512_shuffle_epi8(mask, mask));
17+
- return 0;
18+
- }]])], [
19+
+ AC_CACHE_CHECK([whether compiler supports AVX-512], [php_cv_have_avx512], [
20+
+ save_CFLAGS="$CFLAGS"
21+
+ CFLAGS="-mavx512f -mavx512cd -mavx512vl -mavx512dq -mavx512bw $CFLAGS"
22+
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[
23+
+ #include <immintrin.h>
24+
+ int main(void) {
25+
+ __m512i mask = _mm512_set1_epi32(0x1);
26+
+ char out[32];
27+
+ _mm512_storeu_si512(out, _mm512_shuffle_epi8(mask, mask));
28+
+ return 0;
29+
+ }]])],
30+
+ [php_cv_have_avx512=yes],
31+
+ [php_cv_have_avx512=no])
32+
+ CFLAGS="$save_CFLAGS"
33+
+ ])
34+
+ if test "$php_cv_have_avx512" = "yes"; then
35+
have_avx512_supports=1
36+
- AC_MSG_RESULT([yes])
37+
- ], [
38+
+ else
39+
have_avx512_supports=0
40+
- AC_MSG_RESULT([no])
41+
- ])
42+
-
43+
- CFLAGS="$save_CFLAGS"
44+
-
45+
+ fi
46+
AC_DEFINE_UNQUOTED([PHP_HAVE_AVX512_SUPPORTS],
47+
[$have_avx512_supports], [Whether the compiler supports AVX512])
48+
])
49+
@@ -2841,24 +2840,26 @@
50+
dnl PHP_CHECK_AVX512_VBMI_SUPPORTS
51+
dnl
52+
AC_DEFUN([PHP_CHECK_AVX512_VBMI_SUPPORTS], [
53+
- AC_MSG_CHECKING([for avx512 vbmi supports in compiler])
54+
- save_CFLAGS="$CFLAGS"
55+
- CFLAGS="-mavx512f -mavx512cd -mavx512vl -mavx512dq -mavx512bw -mavx512vbmi $CFLAGS"
56+
- AC_LINK_IFELSE([AC_LANG_SOURCE([[
57+
- #include <immintrin.h>
58+
- int main(void) {
59+
- __m512i mask = _mm512_set1_epi32(0x1);
60+
- char out[32];
61+
- _mm512_storeu_si512(out, _mm512_permutexvar_epi8(mask, mask));
62+
- return 0;
63+
- }]])], [
64+
+ AC_CACHE_CHECK([whether compiler supports AVX-512 VBMI], [php_cv_have_avx512vbmi], [
65+
+ save_CFLAGS="$CFLAGS"
66+
+ CFLAGS="-mavx512f -mavx512cd -mavx512vl -mavx512dq -mavx512bw -mavx512vbmi $CFLAGS"
67+
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[
68+
+ #include <immintrin.h>
69+
+ int main(void) {
70+
+ __m512i mask = _mm512_set1_epi32(0x1);
71+
+ char out[32];
72+
+ _mm512_storeu_si512(out, _mm512_permutexvar_epi8(mask, mask));
73+
+ return 0;
74+
+ }]])],
75+
+ [php_cv_have_avx512vbmi=yes],
76+
+ [php_cv_have_avx512vbmi=no])
77+
+ CFLAGS="$save_CFLAGS"
78+
+ ])
79+
+ if test "$php_cv_have_avx512vbmi" = "yes"; then
80+
have_avx512_vbmi_supports=1
81+
- AC_MSG_RESULT([yes])
82+
- ], [
83+
+ else
84+
have_avx512_vbmi_supports=0
85+
- AC_MSG_RESULT([no])
86+
- ])
87+
- CFLAGS="$save_CFLAGS"
88+
+ fi
89+
AC_DEFINE_UNQUOTED([PHP_HAVE_AVX512_VBMI_SUPPORTS],
90+
[$have_avx512_vbmi_supports], [Whether the compiler supports AVX512 VBMI])
91+
])

0 commit comments

Comments
 (0)