summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2023-05-23 15:49:29 -0700
committerJames Zern <jzern@google.com>2023-05-23 15:52:05 -0700
commit95b56ab7df669ec5dd29c283fa5bf6d38c2df5d1 (patch)
treef9b4b2b1997accf8be65e7b148af2245e0a9a34c
parent62d09a3e94ef2ce0091b6a8e3a298851657c6891 (diff)
downloadlibvpx-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.c12
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) {