simd-everywhere / simde

Implementations of SIMD instruction sets for systems which don't natively support them.
https://simd-everywhere.github.io/blog/
MIT License
2.33k stars 241 forks source link

arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu build failed #1211

Closed Qingwu-Li closed 2 days ago

Qingwu-Li commented 2 weeks ago

The issue was introduced from commit d08d67cf , which is gone after reverting this commit. The issue was found with arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.
the same issue was found with my yocto-generated arm64 gcc version 11.4. but there is no issue with arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu

Here is the detail cross file

[binaries]
c = 'aarch64-none-linux-gnu-gcc'
cpp = 'aarch64-none-linux-gnu-g++'
ar = 'aarch64-none-linux-gnu-ar'
strip = 'aarch64-none-linux-gnu-strip'
objcopy = 'aarch64-none-linux-gnu-objcopy'
ld = 'aarch64-none-linux-gnu-ld'

[properties]
c_args = ['-march=armv8-a+simd', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+simd', '-Wextra', '-Werror']

[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'armv8-a'
endian = 'little'

logs

aarch64-none-linux-gnu-gcc -Itest/arm/neon/cadd_rot270-emul-c.p -Itest/arm/neon -I../test/arm/neon -I. -I.. -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -g -march=armv8-a+simd -Wextra -Werror -fopenmp-simd -DSIMDE_CONSTRAINED_COMPILATION -DSIMDE_ENABLE_OPENMP -Wno-psabi -DSIMDE_TEST_BARE -DSIMDE_NO_NATIVE -MD -MQ test/arm/neon/cadd_rot270-emul-c.p/cadd_rot270.c.o -MF test/arm/neon/cadd_rot270-emul-c.p/cadd_rot270.c.o.d -o test/arm/neon/cadd_rot270-emul-c.p/cadd_rot270.c.o -c ../test/arm/neon/cadd_rot270.c
In file included from ../test/arm/neon/../../test.h:5,
                 from ../test/arm/neon/test-neon.h:4,
                 from ../test/arm/neon/cadd_rot270.c:3:
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h: In function ‘simde_vcadd_rot270_f16’:
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:57:77: error: excess elements in vector initializer [-Werror]
   57 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 4, -b_.values, b_.values, 5, 0, 7, 2);
      |                                                                             ^
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:57:77: note: (near initialization for ‘simde_shuffle_’)
   57 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 4, -b_.values, b_.values, 5, 0, 7, 2);
      |                                                                             ^
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:57:80: error: excess elements in vector initializer [-Werror]
   57 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 4, -b_.values, b_.values, 5, 0, 7, 2);
      |                                                                                ^
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:57:80: note: (near initialization for ‘simde_shuffle_’)
   57 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 4, -b_.values, b_.values, 5, 0, 7, 2);
      |                                                                                ^
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/simde-common.h:307:12: error: ‘__builtin_shuffle’ number of elements of the argument vector(s) and the mask vector should be the same
  307 |            __builtin_shuffle(a, b, simde_shuffle_); \
      |            ^~~~~~~~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:57:19: note: in expansion of macro ‘SIMDE_SHUFFLE_VECTOR_’
   57 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 4, -b_.values, b_.values, 5, 0, 7, 2);
      |                   ^~~~~~~~~~~~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h: In function ‘simde_vcaddq_rot270_f16’:
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:93:84: error: excess elements in vector initializer [-Werror]
   93 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 8, -b_.values, b_.values, 9, 0, 11, 2, 13, 4, 15, 6);
      |                                                                                    ^~
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:93:84: note: (near initialization for ‘simde_shuffle_’)
   93 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 8, -b_.values, b_.values, 9, 0, 11, 2, 13, 4, 15, 6);
      |                                                                                    ^~
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:93:88: error: excess elements in vector initializer [-Werror]
   93 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 8, -b_.values, b_.values, 9, 0, 11, 2, 13, 4, 15, 6);
      |                                                                                        ^
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:93:88: note: (near initialization for ‘simde_shuffle_’)
   93 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 8, -b_.values, b_.values, 9, 0, 11, 2, 13, 4, 15, 6);
      |                                                                                        ^
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:93:91: error: excess elements in vector initializer [-Werror]
   93 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 8, -b_.values, b_.values, 9, 0, 11, 2, 13, 4, 15, 6);
      |                                                                                           ^~
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:93:91: note: (near initialization for ‘simde_shuffle_’)
   93 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 8, -b_.values, b_.values, 9, 0, 11, 2, 13, 4, 15, 6);
      |                                                                                           ^~
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:93:95: error: excess elements in vector initializer [-Werror]
   93 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 8, -b_.values, b_.values, 9, 0, 11, 2, 13, 4, 15, 6);
      |                                                                                               ^
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:93:95: note: (near initialization for ‘simde_shuffle_’)
   93 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 8, -b_.values, b_.values, 9, 0, 11, 2, 13, 4, 15, 6);
      |                                                                                               ^
../test/arm/neon/../../../simde/simde-common.h:306:71: note: in definition of macro ‘SIMDE_SHUFFLE_VECTOR_’
  306 |          int##elem_size##_t SIMDE_VECTOR(vec_size) simde_shuffle_ = { __VA_ARGS__ }; \
      |                                                                       ^~~~~~~~~~~
../test/arm/neon/../../../simde/simde-common.h:307:12: error: ‘__builtin_shuffle’ number of elements of the argument vector(s) and the mask vector should be the same
  307 |            __builtin_shuffle(a, b, simde_shuffle_); \
      |            ^~~~~~~~~~~~~~~~~
../test/arm/neon/../../../simde/arm/neon/cadd_rot270.h:93:19: note: in expansion of macro ‘SIMDE_SHUFFLE_VECTOR_’
   93 |       b_.values = SIMDE_SHUFFLE_VECTOR_(16, 8, -b_.values, b_.values, 9, 0, 11, 2, 13, 4, 15, 6);
      |                   ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
gmarcusm commented 1 week ago

I can confirm this error happens with a fresh checkout in a aarch64 processor running Ubuntu 22.04 and gcc 11.4.0.

I had to go all the way back to v0.7.6 for it to compile successfully.

Qingwu-Li commented 1 week ago

I can confirm this error happens with a fresh checkout in a aarch64 processor running Ubuntu 22.04 and gcc 11.4.0.

I had to go all the way back to v0.7.6 for it to compile successfully.

Exactly, v0.7.6 is the last version that can be compiled with arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.

Qingwu-Li commented 2 days ago

Fixed in https://github.com/simd-everywhere/simde/pull/1216