This patch adds support for immediate shift values for NEON in ARM backend. We have added the new predicates for immediate shift value or register operands and have used them in the new patterns. The only tiny modification in target-independent part is in optabs.c and it has been tested on x86_64 without any regressions. OK for 4.6? For trunk? We think that the changes should be safe for 4.5. 2010-02-10 Dmitry Plotnikov Dmitry Melnik * config/arm/arm.c (neon_immediate_valid_for_shift): New function. (neon_output_shift_immediate): New function. * config/arm/neon.md (vashl3): Modified constraint. (vashr3_imm): New insn pattern. (vlshr3_imm): New insn pattern. (vashr3): Modified constraint. (vlshr3): Modified constraint. * config/arm/predicates.md (imm_for_neon_shift_operand): New predicate. (imm_shift_or_reg_neon): New predicate. * optabs.c (init_optabs): Init optab codes for vashl, vashr, vlshr. * testsuite/gcc.target/arm/neon-vshr-imm-1.c: New testcase.