From 0ecec94ba527f2479459b5318c9b49e457a6b4f3 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Fri, 9 Aug 2024 18:36:38 +0200 Subject: [PATCH 1/2] Support SHA256_Transform_shani() with MSVC, too --- ext/hash/hash_sha_ni.c | 2 +- ext/hash/php_hash_sha.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ext/hash/hash_sha_ni.c b/ext/hash/hash_sha_ni.c index 92a2235e28415..f5784c296f6f7 100644 --- a/ext/hash/hash_sha_ni.c +++ b/ext/hash/hash_sha_ni.c @@ -31,7 +31,7 @@ # include -# if PHP_HASH_INTRIN_SHA_RESOLVER +# if defined(HAVE_FUNC_ATTRIBUTE_TARGET) static __m128i be32dec_128(const uint8_t * src) __attribute__((target("ssse3"))); void SHA256_Transform_shani(uint32_t state[PHP_STATIC_RESTRICT 8], const uint8_t block[PHP_STATIC_RESTRICT 64]) __attribute__((target("ssse3,sha"))); # endif diff --git a/ext/hash/php_hash_sha.h b/ext/hash/php_hash_sha.h index d5b04ddd2f479..52fa09cf3ed75 100644 --- a/ext/hash/php_hash_sha.h +++ b/ext/hash/php_hash_sha.h @@ -55,10 +55,10 @@ PHP_HASH_API void PHP_SHA256Update(PHP_SHA256_CTX *, const unsigned char *, size void SHA256_Transform_sse2(uint32_t state[PHP_STATIC_RESTRICT 8], const uint8_t block[PHP_STATIC_RESTRICT 64], uint32_t W[PHP_STATIC_RESTRICT 64], uint32_t S[PHP_STATIC_RESTRICT 8]); #endif -#if (defined(__i386__) || defined(__x86_64__)) && defined(HAVE_IMMINTRIN_H) +#if ((defined(__i386__) || defined(__x86_64__)) && defined(HAVE_IMMINTRIN_H)) || defined(_M_X64) || defined(_M_IX86) # if defined(__SSSE3__) && defined(__SHA__) # define PHP_HASH_INTRIN_SHA_NATIVE 1 -# elif defined(HAVE_FUNC_ATTRIBUTE_TARGET) +# elif defined(HAVE_FUNC_ATTRIBUTE_TARGET) || defined(_M_X64) || defined(_M_IX86) # define PHP_HASH_INTRIN_SHA_RESOLVER 1 # endif #endif From 4e00439b0c53d2f96564a51489b901c3713e4a88 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Wed, 4 Sep 2024 16:15:56 +0200 Subject: [PATCH 2/2] Update ext/hash/hash_sha_ni.c --- ext/hash/hash_sha_ni.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/hash/hash_sha_ni.c b/ext/hash/hash_sha_ni.c index f5784c296f6f7..f6c5936804091 100644 --- a/ext/hash/hash_sha_ni.c +++ b/ext/hash/hash_sha_ni.c @@ -31,7 +31,7 @@ # include -# if defined(HAVE_FUNC_ATTRIBUTE_TARGET) +# if defined(PHP_HASH_INTRIN_SHA_RESOLVER) && defined(HAVE_FUNC_ATTRIBUTE_TARGET) static __m128i be32dec_128(const uint8_t * src) __attribute__((target("ssse3"))); void SHA256_Transform_shani(uint32_t state[PHP_STATIC_RESTRICT 8], const uint8_t block[PHP_STATIC_RESTRICT 64]) __attribute__((target("ssse3,sha"))); # endif