summaryrefslogtreecommitdiff
path: root/gcc/optabs.c
diff options
context:
space:
mode:
authorDmitry Plotnikov <dplotnikov@ispras.ru>2011-06-22 11:57:52 +0000
committerAlexander Monakov <amonakov@gcc.gnu.org>2011-06-22 15:57:52 +0400
commit31a0c8251b9fb551d9979988e5e63df8bcc1d65f (patch)
tree377aee52f4ebe050c91bd7309e7509eaf305f3ab /gcc/optabs.c
parent1da9434b4ba81839aa43dfb53344a6dbfb0e314f (diff)
downloadgcc-31a0c8251b9fb551d9979988e5e63df8bcc1d65f.tar.gz
arm.c (neon_immediate_valid_for_shift): New function.
2011-06-22 Dmitry Plotnikov <dplotnikov@ispras.ru> Dmitry Melnik <dm@ispras.ru> * config/arm/arm.c (neon_immediate_valid_for_shift): New function. (neon_output_shift_immediate): Ditto. * config/arm/arm-protos.h (neon_immediate_valid_for_shift): New prototype. (neon_output_shift_immediate): Ditto. * config/arm/neon.md (vashl<mode>3): Modified constraint. (vashr<mode>3_imm): New insn pattern. (vlshr<mode>3_imm): Ditto. (vashr<mode>3): Modified constraint. (vlshr<mode>3): Ditto. * config/arm/predicates.md (imm_for_neon_lshift_operand): New predicate. (imm_for_neon_rshift_operand): Ditto. (imm_lshift_or_reg_neon): Ditto. (imm_rshift_or_reg_neon): Ditto. * optabs.c (init_optabs): Init optab codes for vashl, vashr, vlshr. testsuite: * gcc.target/arm/neon-vshr-imm-1.c: New testcase. * gcc.target/arm/neon-vshl-imm-1.c: New testcase. * gcc.target/arm/neon-vlshr-imm-1.c: New testcase. Co-Authored-By: Dmitry Melnik <dm@ispras.ru> From-SVN: r175293
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r--gcc/optabs.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 969d5cf5594..bf15ab4fbc6 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -5925,6 +5925,9 @@ init_optabs (void)
init_optab (usashl_optab, US_ASHIFT);
init_optab (ashr_optab, ASHIFTRT);
init_optab (lshr_optab, LSHIFTRT);
+ init_optabv (vashl_optab, ASHIFT);
+ init_optabv (vashr_optab, ASHIFTRT);
+ init_optabv (vlshr_optab, LSHIFTRT);
init_optab (rotl_optab, ROTATE);
init_optab (rotr_optab, ROTATERT);
init_optab (smin_optab, SMIN);