predicates.md (general_vector_operand): New predicate.
authorJakub Jelinek <jakub@redhat.com>
Mon, 29 Apr 2013 07:43:20 +0000 (09:43 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 29 Apr 2013 07:43:20 +0000 (09:43 +0200)
commitbaee1763e2c82dab41d55da559292030974b41c6
tree0e4b8e9c518b7c25c2e179d7eba8512edf482d22
parent8f36b23705408ae34094fe24b3a6d155a98b5cb7
predicates.md (general_vector_operand): New predicate.

* config/i386/predicates.md (general_vector_operand): New predicate.
* config/i386/i386.c (const_vector_equal_evenodd_p): New function.
(ix86_expand_mul_widen_evenodd): Force op1 resp. op2 into register
if they aren't nonimmediate operands.  If their original values
satisfy const_vector_equal_evenodd_p, don't shift them.
* config/i386/sse.md (mul<mode>3): Use general_vector_operand
predicates.  For the SSE4.1 case force operands[{1,2}] into registers
if not nonimmediate_operand.
(vec_widen_smult_even_v4si): Use nonimmediate_operand predicates
instead of register_operand.
(vec_widen_<s>mult_odd_<mode>): Use general_vector_operand predicates.

From-SVN: r198387
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/predicates.md
gcc/config/i386/sse.md