diff options
author | James Zern <jzern@google.com> | 2023-05-23 15:49:29 -0700 |
---|---|---|
committer | James Zern <jzern@google.com> | 2023-05-23 15:52:05 -0700 |
commit | 95b56ab7df669ec5dd29c283fa5bf6d38c2df5d1 (patch) | |
tree | f9b4b2b1997accf8be65e7b148af2245e0a9a34c | |
parent | 62d09a3e94ef2ce0091b6a8e3a298851657c6891 (diff) | |
download | libvpx-95b56ab7df669ec5dd29c283fa5bf6d38c2df5d1.tar libvpx-95b56ab7df669ec5dd29c283fa5bf6d38c2df5d1.tar.gz libvpx-95b56ab7df669ec5dd29c283fa5bf6d38c2df5d1.tar.bz2 libvpx-95b56ab7df669ec5dd29c283fa5bf6d38c2df5d1.zip |
fdct_partial_neon.c: work around VS2022 Arm64 issue
cl.exe targeting AArch64 with optimizations enabled
will fail with an internal compiler error.
See:
https://developercommunity.visualstudio.com/t/Compiler-crash-C1001-when-building-a-for/10346110
Bug: b/277255076
Bug: webm:1788
Change-Id: I55caf34e910dab47a7775f07280677cdfe606f5b
-rw-r--r-- | vpx_dsp/arm/fdct_partial_neon.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/vpx_dsp/arm/fdct_partial_neon.c b/vpx_dsp/arm/fdct_partial_neon.c index 718dba0d9..df0da543c 100644 --- a/vpx_dsp/arm/fdct_partial_neon.c +++ b/vpx_dsp/arm/fdct_partial_neon.c @@ -37,6 +37,15 @@ void vpx_fdct4x4_1_neon(const int16_t *input, tran_low_t *output, int stride) { output[1] = 0; } +// Visual Studio 2022 (cl.exe) targeting AArch64 with optimizations enabled +// will fail with an internal compiler error. +// See: +// https://developercommunity.visualstudio.com/t/Compiler-crash-C1001-when-building-a-for/10346110 +// TODO(jzern): check the compiler version after a fix for the issue is +// released. +#if defined(_MSC_VER) && defined(_M_ARM64) && !defined(__clang__) +#pragma optimize("", off) +#endif void vpx_fdct8x8_1_neon(const int16_t *input, tran_low_t *output, int stride) { int r; int16x8_t sum = vld1q_s16(&input[0]); @@ -49,6 +58,9 @@ void vpx_fdct8x8_1_neon(const int16_t *input, tran_low_t *output, int stride) { output[0] = (tran_low_t)horizontal_add_int16x8(sum); output[1] = 0; } +#if defined(_MSC_VER) && defined(_M_ARM64) && !defined(__clang__) +#pragma optimize("", on) +#endif void vpx_fdct16x16_1_neon(const int16_t *input, tran_low_t *output, int stride) { |