]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/config/aarch64/aarch64-builtins.cc
[AARCH64] Add support for vectorizable standard math patterns.
authorJames Greenhalgh <james.greenhalgh@arm.com>
Wed, 5 Dec 2012 10:34:31 +0000 (10:34 +0000)
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>
Wed, 5 Dec 2012 10:34:31 +0000 (10:34 +0000)
commit42fc9a7f08f7762b2055e563eeecac81c794b457
tree7add6443c2ec20e9136161c82953fe3d054b8ec3
parentbe4c5193199667c1e167ad558f4c8a9504eeeda6
[AARCH64] Add support for vectorizable standard math patterns.

gcc/

* config/aarch64/aarch64-builtins.c
(aarch64_builtin_vectorized_function): New.
* config/aarch64/aarch64-protos.h
(aarch64_builtin_vectorized_function): Declare.
* config/aarch64/aarch64-simd-builtins.def (frintz, frintp): Add.
(frintm, frinti, frintx, frinta, fcvtzs, fcvtzu): Likewise.
(fcvtas, fcvtau, fcvtps, fcvtpu, fcvtms, fcvtmu): Likewise.
* config/aarch64/aarch64-simd.md
(aarch64_frint_<frint_suffix><mode>): New.
(<frint_pattern><mode>2): Likewise.
(aarch64_fcvt<frint_suffix><su><mode>): Likewise.
(l<fcvt_pattern><su_optab><fcvt_target><VDQF:mode>2): Likewise.
* config/aarch64/aarch64.c (TARGET_VECTORIZE_BUILTINS): Define.
(TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Likewise.
* config/aarch64/aarch64.md
(btrunc<mode>2, ceil<mode>2, floor<mode>2)
(round<mode>2, rint<mode>2, nearbyint<mode>2): Consolidate as...
(<frint_pattern><mode>2): ...this.
(lceil<su_optab><mode><mode>2, lfloor<su_optab><mode><mode>2)
(lround<su_optab><mode><mode>2)
(lrint<su_optab><mode><mode>2): Consolidate as...
(l<fcvt_pattern><su_optab><GPF:mode><GPI:mode>2): ... this.
* config/aarch64/iterators.md (fcvt_target): New.
(FCVT_TARGET): Likewise.
(FRINT): Likewise.
(FCVT): Likewise.
(frint_pattern): Likewise.
(frint_suffix): Likewise.
(fcvt_pattern): Likewise.

gcc/testsuite/

* gcc.dg/vect/vect-rounding-btrunc.c: New test.
* gcc.dg/vect/vect-rounding-btruncf.c: Likewise.
* gcc.dg/vect/vect-rounding-ceil.c: Likewise.
* gcc.dg/vect/vect-rounding-ceilf.c: Likewise.
* gcc.dg/vect/vect-rounding-floor.c: Likewise.
* gcc.dg/vect/vect-rounding-floorf.c: Likewise.
* gcc.dg/vect/vect-rounding-lceil.c: Likewise.
* gcc.dg/vect/vect-rounding-lfloor.c: Likewise.
* gcc.dg/vect/vect-rounding-nearbyint.c: Likewise.
* gcc.dg/vect/vect-rounding-nearbyintf.c: Likewise.
* gcc.dg/vect/vect-rounding-round.c: Likewise.
* gcc.dg/vect/vect-rounding-roundf.c: Likewise.
* target-supports.exp
(check_effective_target_vect_call_btrunc): New.
(check_effective_target_vect_call_btruncf): Likewise.
(check_effective_target_vect_call_ceil): Likewise.
(check_effective_target_vect_call_ceilf): Likewise.
(check_effective_target_vect_call_floor): Likewise.
(check_effective_target_vect_call_floorf): Likewise.
(check_effective_target_vect_call_lceil): Likewise.
(check_effective_target_vect_call_lfloor): Likewise.
(check_effective_target_vect_call_nearbyint): Likewise.
(check_effective_target_vect_call_nearbyintf): Likewise.
(check_effective_target_vect_call_round): Likewise.
(check_effective_target_vect_call_roundf): Likewise.

From-SVN: r194197
22 files changed:
gcc/ChangeLog
gcc/config/aarch64/aarch64-builtins.c
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64-simd-builtins.def
gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.md
gcc/config/aarch64/iterators.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/vect-rounding-btrunc.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-btruncf.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-ceil.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-ceilf.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-floor.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-floorf.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-lceil.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-lfloor.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-nearbyint.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-nearbyintf.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-round.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-rounding-roundf.c [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp