diff options
author | Alex Velenko <Alex.Velenko@arm.com> | 2014-01-23 16:24:13 +0000 |
---|---|---|
committer | James Greenhalgh <jgreenhalgh@gcc.gnu.org> | 2014-01-23 16:24:13 +0000 |
commit | f9a4c9a61396acaea09951aa26b57375a14ac632 (patch) | |
tree | 5f4d182dd6b600e9ccbf121141493e44d1ac6be7 /gcc/config/aarch64/predicates.md | |
parent | 949ad9715a88d9010f3e6470a97b02080d500396 (diff) | |
download | gcc-f9a4c9a61396acaea09951aa26b57375a14ac632.zip gcc-f9a4c9a61396acaea09951aa26b57375a14ac632.tar.gz gcc-f9a4c9a61396acaea09951aa26b57375a14ac632.tar.bz2 |
[PATCH][AArch64] Vector shift by 64 fix
gcc/
* config/aarch64/aarch64-simd-builtins.def (ashr): DI mode removed.
(ashr_simd): New builtin handling DI mode.
* config/aarch64/aarch64-simd.md (aarch64_ashr_simddi): New pattern.
(aarch64_sshr_simddi): New match pattern.
* config/aarch64/arm_neon.h (vshr_n_s32): Builtin call modified.
(vshrd_n_s64): Likewise.
* config/aarch64/predicates.md (aarch64_shift_imm64_di): New predicate.
gcc/testsuite/
* gcc.target/aarch64/sshr64_1.c: New testcase.
From-SVN: r206978
Diffstat (limited to 'gcc/config/aarch64/predicates.md')
-rw-r--r-- | gcc/config/aarch64/predicates.md | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md index 45fcdc9..c8e27d8 100644 --- a/gcc/config/aarch64/predicates.md +++ b/gcc/config/aarch64/predicates.md @@ -86,6 +86,10 @@ (and (match_code "const_int") (match_test "(unsigned HOST_WIDE_INT) INTVAL (op) < 64"))) +(define_predicate "aarch64_shift_imm64_di" + (and (match_code "const_int") + (match_test "(unsigned HOST_WIDE_INT) INTVAL (op) <= 64"))) + (define_predicate "aarch64_reg_or_shift_imm_si" (ior (match_operand 0 "register_operand") (match_operand 0 "aarch64_shift_imm_si"))) |