diff --git a/simd/CMakeLists.txt b/simd/CMakeLists.txt index 9c063d56..aecc9a27 100644 --- a/simd/CMakeLists.txt +++ b/simd/CMakeLists.txt @@ -270,48 +270,33 @@ endif() check_c_source_compiles(" #include int main(int argc, char **argv) { - int16_t input[] = { - (int16_t)argc, (int16_t)argc, (int16_t)argc, (int16_t)argc, - (int16_t)argc, (int16_t)argc, (int16_t)argc, (int16_t)argc, - (int16_t)argc, (int16_t)argc, (int16_t)argc, (int16_t)argc - }; - int16x4x3_t output = vld1_s16_x3(input); + int16_t input[12]; + int16x4x3_t output; + int i; + for (i = 0; i < 12; i++) input[i] = (int16_t)argc; + output = vld1_s16_x3(input); vst3_s16(input, output); return (int)input[0]; }" HAVE_VLD1_S16_X3) check_c_source_compiles(" #include int main(int argc, char **argv) { - uint16_t input[] = { - (uint16_t)argc, (uint16_t)argc, (uint16_t)argc, (uint16_t)argc, - (uint16_t)argc, (uint16_t)argc, (uint16_t)argc, (uint16_t)argc - }; - uint16x4x2_t output = vld1_u16_x2(input); + uint16_t input[8]; + uint16x4x2_t output; + int i; + for (i = 0; i < 8; i++) input[i] = (uint16_t)argc; + output = vld1_u16_x2(input); vst2_u16(input, output); return (int)input[0]; }" HAVE_VLD1_U16_X2) check_c_source_compiles(" #include int main(int argc, char **argv) { - uint8_t input[] = { - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, - (uint8_t)argc, (uint8_t)argc, (uint8_t)argc, (uint8_t)argc - }; - uint8x16x4_t output = vld1q_u8_x4(input); + uint8_t input[64]; + uint8x16x4_t output; + int i; + for (i = 0; i < 64; i++) input[i] = (uint8_t)argc; + output = vld1q_u8_x4(input); vst4q_u8(input, output); return (int)input[0]; }" HAVE_VLD1Q_U8_X4) diff --git a/simd/arm/jcgray-neon.c b/simd/arm/jcgray-neon.c index 71c7b2de..00ca5dc3 100644 --- a/simd/arm/jcgray-neon.c +++ b/simd/arm/jcgray-neon.c @@ -28,6 +28,7 @@ #include "../../jsimddct.h" #include "../jsimd.h" #include "align.h" +#include "neon-compat.h" #include diff --git a/simd/arm/jcsample-neon.c b/simd/arm/jcsample-neon.c index 8a3e2378..d1cb9927 100644 --- a/simd/arm/jcsample-neon.c +++ b/simd/arm/jcsample-neon.c @@ -28,6 +28,7 @@ #include "../../jsimddct.h" #include "../jsimd.h" #include "align.h" +#include "neon-compat.h" #include diff --git a/simd/arm/jdcolor-neon.c b/simd/arm/jdcolor-neon.c index 28dbc572..71b34659 100644 --- a/simd/arm/jdcolor-neon.c +++ b/simd/arm/jdcolor-neon.c @@ -28,6 +28,7 @@ #include "../../jsimddct.h" #include "../jsimd.h" #include "align.h" +#include "neon-compat.h" #include diff --git a/simd/arm/jdmerge-neon.c b/simd/arm/jdmerge-neon.c index 18fb9d8a..436cf04a 100644 --- a/simd/arm/jdmerge-neon.c +++ b/simd/arm/jdmerge-neon.c @@ -28,6 +28,7 @@ #include "../../jsimddct.h" #include "../jsimd.h" #include "align.h" +#include "neon-compat.h" #include diff --git a/simd/arm/jdsample-neon.c b/simd/arm/jdsample-neon.c index 90ec6782..d85e8e07 100644 --- a/simd/arm/jdsample-neon.c +++ b/simd/arm/jdsample-neon.c @@ -28,6 +28,7 @@ #include "../../jdct.h" #include "../../jsimddct.h" #include "../jsimd.h" +#include "neon-compat.h" #include diff --git a/simd/arm/jfdctfst-neon.c b/simd/arm/jfdctfst-neon.c index bb371be3..b4d8d431 100644 --- a/simd/arm/jfdctfst-neon.c +++ b/simd/arm/jfdctfst-neon.c @@ -28,6 +28,7 @@ #include "../../jsimddct.h" #include "../jsimd.h" #include "align.h" +#include "neon-compat.h" #include diff --git a/simd/arm/jidctfst-neon.c b/simd/arm/jidctfst-neon.c index a91be536..25543bd3 100644 --- a/simd/arm/jidctfst-neon.c +++ b/simd/arm/jidctfst-neon.c @@ -28,6 +28,7 @@ #include "../../jsimddct.h" #include "../jsimd.h" #include "align.h" +#include "neon-compat.h" #include diff --git a/simd/arm/jquanti-neon.c b/simd/arm/jquanti-neon.c index d5d95d89..724652af 100644 --- a/simd/arm/jquanti-neon.c +++ b/simd/arm/jquanti-neon.c @@ -27,6 +27,7 @@ #include "../../jdct.h" #include "../../jsimddct.h" #include "../jsimd.h" +#include "neon-compat.h" #include diff --git a/simd/arm/neon-compat.h.in b/simd/arm/neon-compat.h.in index d403f228..63583088 100644 --- a/simd/arm/neon-compat.h.in +++ b/simd/arm/neon-compat.h.in @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020, D. R. Commander. All Rights Reserved. + * Copyright (C) 2020, 2024, D. R. Commander. All Rights Reserved. * Copyright (C) 2020-2021, Arm Limited. All Rights Reserved. * * This software is provided 'as-is', without any express or implied @@ -35,3 +35,11 @@ #else #error "Unknown compiler" #endif + +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wdeclaration-after-statement" +#pragma clang diagnostic ignored "-Wc99-extensions" +#elif defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wdeclaration-after-statement" +#pragma GCC diagnostic ignored "-Wpedantic" +#endif