[PATCH AArch64 1/2] Improve codegen of vector compares inc. tst instruction
authorAlan Lawrence <alan.lawrence@arm.com>
Fri, 5 Sep 2014 10:50:04 +0000 (10:50 +0000)
committerAlan Lawrence <alalaw01@gcc.gnu.org>
Fri, 5 Sep 2014 10:50:04 +0000 (10:50 +0000)
commitddeabd3e6669f209c8c6aa831cbdb5e6dcf62d41
tree77c1a64665a09ccb722416e639e91de379244c7c
parente625e71548596d96bd4005194fc5d8f70966ad71
[PATCH AArch64 1/2] Improve codegen of vector compares inc. tst instruction

gcc/:

* config/aarch64/aarch64-builtins.c (aarch64_types_cmtst_qualifiers,
TYPES_TST): Define.
(aarch64_fold_builtin): Update pattern for cmtst.

* config/aarch64/aarch64-protos.h (aarch64_const_vec_all_same_int_p):
Declare.

* config/aarch64/aarch64-simd-builtins.def (cmtst): Update qualifiers.

* config/aarch64/aarch64-simd.md (aarch64_vcond_internal<mode><mode>):
Switch operands, separate out more cases, refactor.

(aarch64_cmtst<mode>): Rewrite pattern to match (plus ... -1).

* config/aarch64.c (aarch64_const_vec_all_same_int_p): Take single
argument; rename old version to...
(aarch64_const_vec_all_same_in_range_p): ...this.
(aarch64_print_operand, aarch64_simd_shift_imm_p): Follow renaming.

* config/aarch64/predicates.md (aarch64_simd_imm_minus_one): Define.

gcc/testsuite/:

* gcc.target/aarch64/simd/int_comparisons.x: New file.
* gcc.target/aarch64/simd/int_comparisons_1.c: New test.
* gcc.target/aarch64/simd/int_comparisons_2.c: Ditto.

From-SVN: r214948
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/predicates.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/simd/int_comparisons.x [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_2.c [new file with mode: 0644]