diff --git a/ext/standard/base64.c b/ext/standard/base64.c index 9c6a457b858..8d4feee8497 100644 --- a/ext/standard/base64.c +++ b/ext/standard/base64.c @@ -329,12 +329,12 @@ fail: /* {{{ php_base64_encode */ -#if ZEND_INTRIN_AVX2_NATIVE +#ifdef ZEND_INTRIN_AVX2_NATIVE # undef ZEND_INTRIN_SSSE3_NATIVE # undef ZEND_INTRIN_SSSE3_RESOLVER # undef ZEND_INTRIN_SSSE3_FUNC_PROTO # undef ZEND_INTRIN_SSSE3_FUNC_PTR -#elif ZEND_INTRIN_AVX2_FUNC_PROTO && ZEND_INTRIN_SSSE3_NATIVE +#elif defined(ZEND_INTRIN_AVX2_FUNC_PROTO) && defined(ZEND_INTRIN_SSSE3_NATIVE) # undef ZEND_INTRIN_SSSE3_NATIVE # undef ZEND_INTRIN_SSSE3_RESOLVER # define ZEND_INTRIN_SSSE3_RESOLVER 1 @@ -345,7 +345,7 @@ fail: # else # define ZEND_INTRIN_SSSE3_FUNC_DECL(func) ZEND_API func # endif -#elif ZEND_INTRIN_AVX2_FUNC_PTR && ZEND_INTRIN_SSSE3_NATIVE +#elif defined(ZEND_INTRIN_AVX2_FUNC_PTR) && defined(ZEND_INTRIN_SSSE3_NATIVE) # undef ZEND_INTRIN_SSSE3_NATIVE # undef ZEND_INTRIN_SSSE3_RESOLVER # define ZEND_INTRIN_SSSE3_RESOLVER 1 @@ -359,46 +359,46 @@ fail: #endif /* Only enable avx512 resolver if avx2 use resolver also */ -#if ZEND_INTRIN_AVX2_FUNC_PROTO && ZEND_INTRIN_AVX512_FUNC_PROTO +#if defined(ZEND_INTRIN_AVX2_FUNC_PROTO) && defined(ZEND_INTRIN_AVX512_FUNC_PROTO) #define BASE64_INTRIN_AVX512_FUNC_PROTO 1 #endif -#if ZEND_INTRIN_AVX2_FUNC_PTR && ZEND_INTRIN_AVX512_FUNC_PTR +#if defined(ZEND_INTRIN_AVX2_FUNC_PTR) && defined(ZEND_INTRIN_AVX512_FUNC_PTR) #define BASE64_INTRIN_AVX512_FUNC_PTR 1 #endif -#if ZEND_INTRIN_AVX2_FUNC_PROTO && ZEND_INTRIN_AVX512_VBMI_FUNC_PROTO +#if defined(ZEND_INTRIN_AVX2_FUNC_PROTO) && defined(ZEND_INTRIN_AVX512_VBMI_FUNC_PROTO) #define BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO 1 #endif -#if ZEND_INTRIN_AVX2_FUNC_PTR && ZEND_INTRIN_AVX512_VBMI_FUNC_PTR +#if defined(ZEND_INTRIN_AVX2_FUNC_PTR) && defined(ZEND_INTRIN_AVX512_VBMI_FUNC_PTR) #define BASE64_INTRIN_AVX512_VBMI_FUNC_PTR 1 #endif -#if ZEND_INTRIN_AVX2_NATIVE +#ifdef ZEND_INTRIN_AVX2_NATIVE # include -#elif ZEND_INTRIN_SSSE3_NATIVE +#elif defined(ZEND_INTRIN_SSSE3_NATIVE) # include -#elif (ZEND_INTRIN_SSSE3_RESOLVER || ZEND_INTRIN_AVX2_RESOLVER) -# if ZEND_INTRIN_AVX2_RESOLVER +#elif defined(ZEND_INTRIN_SSSE3_RESOLVER) || defined(ZEND_INTRIN_AVX2_RESOLVER) +# ifdef ZEND_INTRIN_AVX2_RESOLVER # include # else # include # endif /* (ZEND_INTRIN_SSSE3_RESOLVER || ZEND_INTRIN_AVX2_RESOLVER) */ # include "Zend/zend_cpuinfo.h" -# if BASE64_INTRIN_AVX512_FUNC_PROTO || BASE64_INTRIN_AVX512_FUNC_PTR +# if defined(BASE64_INTRIN_AVX512_FUNC_PROTO) || defined(BASE64_INTRIN_AVX512_FUNC_PTR) ZEND_INTRIN_AVX512_FUNC_DECL(zend_string *php_base64_encode_avx512(const unsigned char *str, size_t length, zend_long flags)); ZEND_INTRIN_AVX512_FUNC_DECL(zend_string *php_base64_decode_ex_avx512(const unsigned char *str, size_t length, bool strict)); # endif -# if BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO || BASE64_INTRIN_AVX512_VBMI_FUNC_PTR +# if defined(BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO) || defined(BASE64_INTRIN_AVX512_VBMI_FUNC_PTR) ZEND_INTRIN_AVX512_VBMI_FUNC_DECL(zend_string *php_base64_encode_avx512_vbmi(const unsigned char *str, size_t length, zend_long flags)); ZEND_INTRIN_AVX512_VBMI_FUNC_DECL(zend_string *php_base64_decode_ex_avx512_vbmi(const unsigned char *str, size_t length, bool strict)); # endif -# if ZEND_INTRIN_AVX2_RESOLVER +# ifdef ZEND_INTRIN_AVX2_RESOLVER ZEND_INTRIN_AVX2_FUNC_DECL(zend_string *php_base64_encode_avx2(const unsigned char *str, size_t length, zend_long flags)); ZEND_INTRIN_AVX2_FUNC_DECL(zend_string *php_base64_decode_ex_avx2(const unsigned char *str, size_t length, bool strict)); # endif -# if ZEND_INTRIN_SSSE3_RESOLVER +# ifdef ZEND_INTRIN_SSSE3_RESOLVER ZEND_INTRIN_SSSE3_FUNC_DECL(zend_string *php_base64_encode_ssse3(const unsigned char *str, size_t length, zend_long flags)); ZEND_INTRIN_SSSE3_FUNC_DECL(zend_string *php_base64_decode_ex_ssse3(const unsigned char *str, size_t length, bool strict)); # endif @@ -406,7 +406,7 @@ ZEND_INTRIN_SSSE3_FUNC_DECL(zend_string *php_base64_decode_ex_ssse3(const unsign zend_string *php_base64_encode_default(const unsigned char *str, size_t length, zend_long flags); zend_string *php_base64_decode_ex_default(const unsigned char *str, size_t length, bool strict); -# if (ZEND_INTRIN_AVX2_FUNC_PROTO || ZEND_INTRIN_SSSE3_FUNC_PROTO || BASE64_INTRIN_AVX512_FUNC_PROTO || BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO) +# if (defined(ZEND_INTRIN_AVX2_FUNC_PROTO) || defined(ZEND_INTRIN_SSSE3_FUNC_PROTO) || defined(BASE64_INTRIN_AVX512_FUNC_PROTO) || defined(BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO)) PHPAPI zend_string *php_base64_encode_ex(const unsigned char *str, size_t length, zend_long flags) __attribute__((ifunc("resolve_base64_encode"))); PHPAPI zend_string *php_base64_decode_ex(const unsigned char *str, size_t length, bool strict) __attribute__((ifunc("resolve_base64_decode"))); @@ -416,22 +416,22 @@ typedef zend_string *(*base64_decode_func_t)(const unsigned char *, size_t, bool ZEND_NO_SANITIZE_ADDRESS ZEND_ATTRIBUTE_UNUSED /* clang mistakenly warns about this */ static base64_encode_func_t resolve_base64_encode(void) { -# if BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO +# ifdef BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO if (zend_cpu_supports_avx512_vbmi()) { return php_base64_encode_avx512_vbmi; } else # endif -# if BASE64_INTRIN_AVX512_FUNC_PROTO +# ifdef BASE64_INTRIN_AVX512_FUNC_PROTO if (zend_cpu_supports_avx512()) { return php_base64_encode_avx512; } else # endif -# if ZEND_INTRIN_AVX2_FUNC_PROTO +# ifdef ZEND_INTRIN_AVX2_FUNC_PROTO if (zend_cpu_supports_avx2()) { return php_base64_encode_avx2; } else # endif -#if ZEND_INTRIN_SSSE3_FUNC_PROTO +#ifdef ZEND_INTRIN_SSSE3_FUNC_PROTO if (zend_cpu_supports_ssse3()) { return php_base64_encode_ssse3; } @@ -442,22 +442,22 @@ static base64_encode_func_t resolve_base64_encode(void) { ZEND_NO_SANITIZE_ADDRESS ZEND_ATTRIBUTE_UNUSED /* clang mistakenly warns about this */ static base64_decode_func_t resolve_base64_decode(void) { -# if BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO +# ifdef BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO if (zend_cpu_supports_avx512_vbmi()) { return php_base64_decode_ex_avx512_vbmi; } else # endif -# if BASE64_INTRIN_AVX512_FUNC_PROTO +# ifdef BASE64_INTRIN_AVX512_FUNC_PROTO if (zend_cpu_supports_avx512()) { return php_base64_decode_ex_avx512; } else # endif -# if ZEND_INTRIN_AVX2_FUNC_PROTO +# ifdef ZEND_INTRIN_AVX2_FUNC_PROTO if (zend_cpu_supports_avx2()) { return php_base64_decode_ex_avx2; } else # endif -#if ZEND_INTRIN_SSSE3_FUNC_PROTO +#ifdef ZEND_INTRIN_SSSE3_FUNC_PROTO if (zend_cpu_supports_ssse3()) { return php_base64_decode_ex_ssse3; } @@ -478,25 +478,25 @@ PHPAPI zend_string *php_base64_decode_ex(const unsigned char *str, size_t length PHP_MINIT_FUNCTION(base64_intrin) { -# if BASE64_INTRIN_AVX512_VBMI_FUNC_PTR +# ifdef BASE64_INTRIN_AVX512_VBMI_FUNC_PTR if (zend_cpu_supports_avx512_vbmi()) { php_base64_encode_ptr = php_base64_encode_avx512_vbmi; php_base64_decode_ex_ptr = php_base64_decode_ex_avx512_vbmi; } else # endif -# if BASE64_INTRIN_AVX512_FUNC_PTR +# ifdef BASE64_INTRIN_AVX512_FUNC_PTR if (zend_cpu_supports_avx512()) { php_base64_encode_ptr = php_base64_encode_avx512; php_base64_decode_ex_ptr = php_base64_decode_ex_avx512; } else # endif -# if ZEND_INTRIN_AVX2_FUNC_PTR +# ifdef ZEND_INTRIN_AVX2_FUNC_PTR if (zend_cpu_supports_avx2()) { php_base64_encode_ptr = php_base64_encode_avx2; php_base64_decode_ex_ptr = php_base64_decode_ex_avx2; } else # endif -#if ZEND_INTRIN_SSSE3_FUNC_PTR +#ifdef ZEND_INTRIN_SSSE3_FUNC_PTR if (zend_cpu_supports_ssse3()) { php_base64_encode_ptr = php_base64_encode_ssse3; php_base64_decode_ex_ptr = php_base64_decode_ex_ssse3; @@ -511,7 +511,7 @@ PHP_MINIT_FUNCTION(base64_intrin) # endif /* (ZEND_INTRIN_AVX2_FUNC_PROTO || ZEND_INTRIN_SSSE3_FUNC_PROTO) */ #endif /* ZEND_INTRIN_AVX2_NATIVE */ -#if BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO || BASE64_INTRIN_AVX512_VBMI_FUNC_PTR +#if defined(BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO) || defined(BASE64_INTRIN_AVX512_VBMI_FUNC_PTR) zend_string *php_base64_encode_avx512_vbmi(const unsigned char *str, size_t length, zend_long flags) { const unsigned char *c = str; @@ -621,7 +621,7 @@ zend_string *php_base64_decode_ex_avx512_vbmi(const unsigned char *str, size_t l } #endif -#if BASE64_INTRIN_AVX512_FUNC_PROTO || BASE64_INTRIN_AVX512_FUNC_PTR +#if defined(BASE64_INTRIN_AVX512_FUNC_PROTO) || defined(BASE64_INTRIN_AVX512_FUNC_PTR) zend_string *php_base64_encode_avx512(const unsigned char *str, size_t length, zend_long flags) { const unsigned char *c = str; @@ -754,8 +754,8 @@ zend_string *php_base64_decode_ex_avx512(const unsigned char *str, size_t length } #endif -#if ZEND_INTRIN_AVX2_NATIVE || ZEND_INTRIN_AVX2_RESOLVER -# if ZEND_INTRIN_AVX2_RESOLVER && defined(HAVE_FUNC_ATTRIBUTE_TARGET) +#if defined(ZEND_INTRIN_AVX2_NATIVE) || defined(ZEND_INTRIN_AVX2_RESOLVER) +# if defined(ZEND_INTRIN_AVX2_RESOLVER) && defined(HAVE_FUNC_ATTRIBUTE_TARGET) static __m256i php_base64_encode_avx2_reshuffle(__m256i in) __attribute__((target("avx2"))); static __m256i php_base64_encode_avx2_translate(__m256i in) __attribute__((target("avx2"))); # endif @@ -819,9 +819,9 @@ static __m256i php_base64_encode_avx2_translate(__m256i in) } #endif /* ZEND_INTRIN_AVX2_NATIVE || (ZEND_INTRIN_AVX2_RESOLVER && !ZEND_INTRIN_SSSE3_NATIVE) */ -#if ZEND_INTRIN_SSSE3_NATIVE || ZEND_INTRIN_SSSE3_RESOLVER +#if defined(ZEND_INTRIN_SSSE3_NATIVE) || defined(ZEND_INTRIN_SSSE3_RESOLVER) -# if ZEND_INTRIN_SSSE3_RESOLVER && defined(HAVE_FUNC_ATTRIBUTE_TARGET) +# if defined(ZEND_INTRIN_SSSE3_RESOLVER) && defined(HAVE_FUNC_ATTRIBUTE_TARGET) static __m128i php_base64_encode_ssse3_reshuffle(__m128i in) __attribute__((target("ssse3"))); static __m128i php_base64_encode_ssse3_translate(__m128i in) __attribute__((target("ssse3"))); # endif @@ -902,10 +902,10 @@ static __m128i php_base64_encode_ssse3_translate(__m128i in) #endif /* ZEND_INTRIN_SSSE3_NATIVE || (ZEND_INTRIN_SSSE3_RESOLVER && !ZEND_INTRIN_AVX2_NATIVE) */ -#if ZEND_INTRIN_AVX2_NATIVE || ZEND_INTRIN_AVX2_RESOLVER || ZEND_INTRIN_SSSE3_NATIVE || ZEND_INTRIN_SSSE3_RESOLVER -# if ZEND_INTRIN_AVX2_NATIVE || ZEND_INTRIN_SSSE3_NATIVE +#if defined(ZEND_INTRIN_AVX2_NATIVE) || defined(ZEND_INTRIN_AVX2_RESOLVER) || defined(ZEND_INTRIN_SSSE3_NATIVE) || defined(ZEND_INTRIN_SSSE3_RESOLVER) +# if defined(ZEND_INTRIN_AVX2_NATIVE) || defined(ZEND_INTRIN_SSSE3_NATIVE) PHPAPI zend_string *php_base64_encode_ex(const unsigned char *str, size_t length, zend_long flags) -# elif ZEND_INTRIN_AVX2_RESOLVER +# elif defined(ZEND_INTRIN_AVX2_RESOLVER) zend_string *php_base64_encode_avx2(const unsigned char *str, size_t length, zend_long flags) # else /* ZEND_INTRIN_SSSE3_RESOLVER */ zend_string *php_base64_encode_ssse3(const unsigned char *str, size_t length, zend_long flags) @@ -917,7 +917,7 @@ zend_string *php_base64_encode_ssse3(const unsigned char *str, size_t length, ze result = zend_string_safe_alloc(((length + 2) / 3), 4 * sizeof(char), 0, 0); o = (unsigned char *)ZSTR_VAL(result); -# if ZEND_INTRIN_AVX2_NATIVE || ZEND_INTRIN_AVX2_RESOLVER +# if defined(ZEND_INTRIN_AVX2_NATIVE) || defined(ZEND_INTRIN_AVX2_RESOLVER) if (length > 31) { __m256i s = _mm256_loadu_si256((__m256i *)c); @@ -949,7 +949,7 @@ zend_string *php_base64_encode_ssse3(const unsigned char *str, size_t length, ze return result; } -# if ZEND_INTRIN_SSSE3_RESOLVER && ZEND_INTRIN_AVX2_RESOLVER +# if defined(ZEND_INTRIN_SSSE3_RESOLVER) && defined(ZEND_INTRIN_AVX2_RESOLVER) zend_string *php_base64_encode_ssse3(const unsigned char *str, size_t length, zend_long flags) { const unsigned char *c = str; @@ -972,8 +972,8 @@ zend_string *php_base64_encode_ssse3(const unsigned char *str, size_t length, ze /* }}} */ -#if ZEND_INTRIN_AVX2_NATIVE || ZEND_INTRIN_AVX2_RESOLVER -# if ZEND_INTRIN_AVX2_RESOLVER && defined(HAVE_FUNC_ATTRIBUTE_TARGET) +#if defined(ZEND_INTRIN_AVX2_NATIVE) || defined(ZEND_INTRIN_AVX2_RESOLVER) +# if defined(ZEND_INTRIN_AVX2_RESOLVER) && defined(HAVE_FUNC_ATTRIBUTE_TARGET) static __m256i php_base64_decode_avx2_reshuffle(__m256i in) __attribute__((target("avx2"))); # endif @@ -993,8 +993,8 @@ static __m256i php_base64_decode_avx2_reshuffle(__m256i in) } #endif -#if ZEND_INTRIN_SSSE3_NATIVE || ZEND_INTRIN_SSSE3_RESOLVER -# if ZEND_INTRIN_SSSE3_RESOLVER && defined(HAVE_FUNC_ATTRIBUTE_TARGET) +#if defined(ZEND_INTRIN_SSSE3_NATIVE) || defined(ZEND_INTRIN_SSSE3_RESOLVER) +# if defined(ZEND_INTRIN_SSSE3_RESOLVER) && defined(HAVE_FUNC_ATTRIBUTE_TARGET) static __m128i php_base64_decode_ssse3_reshuffle(__m128i in) __attribute__((target("ssse3"))); # endif @@ -1075,10 +1075,10 @@ static __m128i php_base64_decode_ssse3_reshuffle(__m128i in) #endif -#if ZEND_INTRIN_AVX2_NATIVE || ZEND_INTRIN_AVX2_RESOLVER || ZEND_INTRIN_SSSE3_NATIVE || ZEND_INTRIN_SSSE3_RESOLVER -# if ZEND_INTRIN_AVX2_NATIVE || ZEND_INTRIN_SSSE3_NATIVE +#if defined(ZEND_INTRIN_AVX2_NATIVE) || defined(ZEND_INTRIN_AVX2_RESOLVER) || defined(ZEND_INTRIN_SSSE3_NATIVE) || defined(ZEND_INTRIN_SSSE3_RESOLVER) +# if defined(ZEND_INTRIN_AVX2_NATIVE) || defined(ZEND_INTRIN_SSSE3_NATIVE) PHPAPI zend_string *php_base64_decode_ex(const unsigned char *str, size_t length, bool strict) -# elif ZEND_INTRIN_AVX2_RESOLVER +# elif defined(ZEND_INTRIN_AVX2_RESOLVER) zend_string *php_base64_decode_ex_avx2(const unsigned char *str, size_t length, bool strict) # else zend_string *php_base64_decode_ex_ssse3(const unsigned char *str, size_t length, bool strict) @@ -1094,7 +1094,7 @@ zend_string *php_base64_decode_ex_ssse3(const unsigned char *str, size_t length, /* See: "Faster Base64 Encoding and Decoding using AVX2 Instructions" * https://arxiv.org/pdf/1704.00605.pdf */ -# if ZEND_INTRIN_AVX2_NATIVE || ZEND_INTRIN_AVX2_RESOLVER +# if defined(ZEND_INTRIN_AVX2_NATIVE) || defined(ZEND_INTRIN_AVX2_RESOLVER) while (length > 31 + 11 + 2) { __m256i lut_lo, lut_hi, lut_roll; __m256i hi_nibbles, lo_nibbles, hi, lo; @@ -1157,7 +1157,7 @@ zend_string *php_base64_decode_ex_ssse3(const unsigned char *str, size_t length, return result; } -# if ZEND_INTRIN_SSSE3_RESOLVER && ZEND_INTRIN_AVX2_RESOLVER +# if defined(ZEND_INTRIN_SSSE3_RESOLVER) && defined(ZEND_INTRIN_AVX2_RESOLVER) zend_string *php_base64_decode_ex_ssse3(const unsigned char *str, size_t length, bool strict) { const unsigned char *c = str; @@ -1182,8 +1182,8 @@ zend_string *php_base64_decode_ex_ssse3(const unsigned char *str, size_t length, # endif #endif /* ZEND_INTRIN_AVX2_NATIVE || ZEND_INTRIN_AVX2_RESOLVER || ZEND_INTRIN_SSSE3_NATIVE || ZEND_INTRIN_SSSE3_RESOLVER */ -#if !ZEND_INTRIN_AVX2_NATIVE && !ZEND_INTRIN_SSSE3_NATIVE -#if ZEND_INTRIN_AVX2_RESOLVER || ZEND_INTRIN_SSSE3_RESOLVER +#if !defined(ZEND_INTRIN_AVX2_NATIVE) && !defined(ZEND_INTRIN_SSSE3_NATIVE) +#if defined(ZEND_INTRIN_AVX2_RESOLVER) || defined(ZEND_INTRIN_SSSE3_RESOLVER) zend_string *php_base64_encode_default(const unsigned char *str, size_t length, zend_long flags) #else PHPAPI zend_string *php_base64_encode_ex(const unsigned char *str, size_t length, zend_long flags) @@ -1203,8 +1203,8 @@ PHPAPI zend_string *php_base64_encode_ex(const unsigned char *str, size_t length } #endif -#if !ZEND_INTRIN_AVX2_NATIVE && !ZEND_INTRIN_SSSE3_NATIVE -#if ZEND_INTRIN_AVX2_RESOLVER || ZEND_INTRIN_SSSE3_RESOLVER +#if !defined(ZEND_INTRIN_AVX2_NATIVE) && !defined(ZEND_INTRIN_SSSE3_NATIVE) +#if defined(ZEND_INTRIN_AVX2_RESOLVER) || defined(ZEND_INTRIN_SSSE3_RESOLVER) zend_string *php_base64_decode_ex_default(const unsigned char *str, size_t length, bool strict) #else PHPAPI zend_string *php_base64_decode_ex(const unsigned char *str, size_t length, bool strict) diff --git a/ext/standard/base64.h b/ext/standard/base64.h index c5a24f8e1f5..19ff0b60d25 100644 --- a/ext/standard/base64.h +++ b/ext/standard/base64.h @@ -57,7 +57,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#if (ZEND_INTRIN_AVX2_FUNC_PTR || ZEND_INTRIN_SSSE3_FUNC_PTR || ZEND_INTRIN_AVX512_FUNC_PTR || ZEND_INTRIN_AVX512_VBMI_FUNC_PTR) && !ZEND_INTRIN_AVX2_NATIVE +#if (defined(ZEND_INTRIN_AVX2_FUNC_PTR) || defined(ZEND_INTRIN_SSSE3_FUNC_PTR) || defined(ZEND_INTRIN_AVX512_FUNC_PTR) || defined(ZEND_INTRIN_AVX512_VBMI_FUNC_PTR)) && !defined(ZEND_INTRIN_AVX2_NATIVE) PHP_MINIT_FUNCTION(base64_intrin); #endif