]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: enable mixed-types for aarch64 simdclones
authorAndre Vieira <andre.simoesdiasvieira@arm.com>
Mon, 11 Dec 2023 14:24:41 +0000 (14:24 +0000)
committerAndre Vieira <andre.simoesdiasvieira@arm.com>
Mon, 11 Dec 2023 14:51:14 +0000 (14:51 +0000)
commitf5fc001a84a7dbb942a6252b3162dd38b4aae311
tree312f29ae7f9128f6b2dee2608db7bc57b63f8e9e
parentf5aa23f7f633313039c840ab36695a38efbb1a99
aarch64: enable mixed-types for aarch64 simdclones

This patch enables the use of mixed-types for simd clones for AArch64, adds
aarch64 as a target_vect_simd_clones and corrects the way the simdlen is chosen
for non-specified simdlen clauses according to the 'Vector Function Application
Binary Interface Specification for AArch64'.

Additionally this patch also restricts combinations of simdlen and
return/argument types that map to vectors larger than 128 bits as we currently
do not have a way to represent these types in a way that is consistent
internally and externally.

gcc/ChangeLog:

* config/aarch64/aarch64.cc (lane_size): New function.
(aarch64_simd_clone_compute_vecsize_and_simdlen): Determine simdlen according to NDS rule
and reject combination of simdlen and types that lead to vectors larger than 128bits.

gcc/testsuite/ChangeLog:

* lib/target-supports.exp: Add aarch64 targets to vect_simd_clones.
* c-c++-common/gomp/declare-variant-14.c: Adapt test for aarch64.
* c-c++-common/gomp/pr60823-1.c: Likewise.
* c-c++-common/gomp/pr60823-2.c: Likewise.
* c-c++-common/gomp/pr60823-3.c: Likewise.
* g++.dg/gomp/attrs-10.C: Likewise.
* g++.dg/gomp/declare-simd-1.C: Likewise.
* g++.dg/gomp/declare-simd-3.C: Likewise.
* g++.dg/gomp/declare-simd-4.C: Likewise.
* g++.dg/gomp/declare-simd-7.C: Likewise.
* g++.dg/gomp/declare-simd-8.C: Likewise.
* g++.dg/gomp/pr88182.C: Likewise.
* gcc.dg/declare-simd.c: Likewise.
* gcc.dg/gomp/declare-simd-1.c: Likewise.
* gcc.dg/gomp/declare-simd-3.c: Likewise.
* gcc.dg/gomp/pr87887-1.c: Likewise.
* gcc.dg/gomp/pr87895-1.c: Likewise.
* gcc.dg/gomp/pr89246-1.c: Likewise.
* gcc.dg/gomp/pr99542.c: Likewise.
* gcc.dg/gomp/simd-clones-2.c: Likewise.
* gcc.dg/vect/vect-simd-clone-1.c: Likewise.
* gcc.dg/vect/vect-simd-clone-2.c: Likewise.
* gcc.dg/vect/vect-simd-clone-4.c: Likewise.
* gcc.dg/vect/vect-simd-clone-5.c: Likewise.
* gcc.dg/vect/vect-simd-clone-6.c: Likewise.
* gcc.dg/vect/vect-simd-clone-7.c: Likewise.
* gcc.dg/vect/vect-simd-clone-8.c: Likewise.
* gfortran.dg/gomp/declare-simd-2.f90: Likewise.
* gfortran.dg/gomp/declare-simd-coarray-lib.f90: Likewise.
* gfortran.dg/gomp/declare-variant-14.f90: Likewise.
* gfortran.dg/gomp/pr79154-1.f90: Likewise.
* gfortran.dg/gomp/pr83977.f90: Likewise.

libgomp/ChangeLog:

* testsuite/libgomp.c/declare-variant-1.c: Adapt test for aarch64.
* testsuite/libgomp.fortran/declare-simd-1.f90: Likewise.
37 files changed:
gcc/config/aarch64/aarch64.cc
gcc/testsuite/c-c++-common/gomp/declare-variant-14.c
gcc/testsuite/c-c++-common/gomp/pr60823-1.c
gcc/testsuite/c-c++-common/gomp/pr60823-2.c
gcc/testsuite/c-c++-common/gomp/pr60823-3.c
gcc/testsuite/g++.dg/gomp/attrs-10.C
gcc/testsuite/g++.dg/gomp/declare-simd-1.C
gcc/testsuite/g++.dg/gomp/declare-simd-3.C
gcc/testsuite/g++.dg/gomp/declare-simd-4.C
gcc/testsuite/g++.dg/gomp/declare-simd-7.C
gcc/testsuite/g++.dg/gomp/declare-simd-8.C
gcc/testsuite/g++.dg/gomp/pr88182.C
gcc/testsuite/gcc.dg/declare-simd.c
gcc/testsuite/gcc.dg/gomp/declare-simd-1.c
gcc/testsuite/gcc.dg/gomp/declare-simd-3.c
gcc/testsuite/gcc.dg/gomp/pr87887-1.c
gcc/testsuite/gcc.dg/gomp/pr87895-1.c
gcc/testsuite/gcc.dg/gomp/pr89246-1.c
gcc/testsuite/gcc.dg/gomp/pr99542.c
gcc/testsuite/gcc.dg/gomp/simd-clones-2.c
gcc/testsuite/gcc.dg/vect/vect-simd-clone-1.c
gcc/testsuite/gcc.dg/vect/vect-simd-clone-2.c
gcc/testsuite/gcc.dg/vect/vect-simd-clone-4.c
gcc/testsuite/gcc.dg/vect/vect-simd-clone-5.c
gcc/testsuite/gcc.dg/vect/vect-simd-clone-6.c
gcc/testsuite/gcc.dg/vect/vect-simd-clone-7.c
gcc/testsuite/gcc.dg/vect/vect-simd-clone-8.c
gcc/testsuite/gcc.target/aarch64/declare-simd-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/declare-simd-2.c [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/declare-simd-2.f90
gcc/testsuite/gfortran.dg/gomp/declare-simd-coarray-lib.f90
gcc/testsuite/gfortran.dg/gomp/declare-variant-14.f90
gcc/testsuite/gfortran.dg/gomp/pr79154-1.f90
gcc/testsuite/gfortran.dg/gomp/pr83977.f90
gcc/testsuite/lib/target-supports.exp
libgomp/testsuite/libgomp.c/declare-variant-1.c
libgomp/testsuite/libgomp.fortran/declare-simd-1.f90