diff --git a/src/lib/openjp2/ht_dec.c b/src/lib/openjp2/ht_dec.c index e648ab0e4..25f314af3 100644 --- a/src/lib/openjp2/ht_dec.c +++ b/src/lib/openjp2/ht_dec.c @@ -55,7 +55,13 @@ #define OPJ_COMPILER_GNUC #endif -#if defined(OPJ_COMPILER_MSVC) && defined(_M_ARM64) +#if defined(OPJ_COMPILER_MSVC) && defined(_M_ARM64) \ + && !defined(_M_ARM64EC) && !defined(_M_CEE_PURE) && !defined(__CUDACC__) \ + && !defined(__INTEL_COMPILER) && !defined(__clang__) +#define MSVC_NEON_INTRINSICS +#endif + +#ifdef MSVC_NEON_INTRINSICS #include #endif @@ -75,7 +81,7 @@ OPJ_UINT32 population_count(OPJ_UINT32 val) { #if defined(OPJ_COMPILER_MSVC) && (defined(_M_IX86) || defined(_M_AMD64)) return (OPJ_UINT32)__popcnt(val); -#elif defined(OPJ_COMPILER_MSVC) && defined(_M_ARM64) +#elif defined(OPJ_COMPILER_MSVC) && defined(MSVC_NEON_INTRINSICS) const __n64 temp = neon_cnt(__uint64ToN64_v(val)); return neon_addv8(temp).n8_i8[0]; #elif (defined OPJ_COMPILER_GNUC)