Use vector_operand on SSE with 16b memory operand
authorH.J. Lu <hongjiu.lu@intel.com>
Tue, 5 Jan 2016 20:19:16 +0000 (20:19 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Tue, 5 Jan 2016 20:19:16 +0000 (12:19 -0800)
commitacf93f1edc9c6148ff34499975acf2f4a7cc9e75
tree0b64428b0a0bdcd6c43da41d501ce77642ef9643
parent3f50525df20bafdcd1e04b2a406e9f83336df32a
Use vector_operand on SSE with 16b memory operand

Add vector_operand, which is vector_memory_operand or register_operand,
and use it, instead of nonimmediate_operand, in SSE patterns with 16-byte
memory operand.

gcc/

PR target/68991
* config/i386/i386.c (ix86_expand_vector_logical_operator):
Replace nonimmediate_operand with vector_operand.
* config/i386/predicates.md (vector_operand): New predicate.
(general_vector_operand): Replace nonimmediate_operand with
vector_operand.
* config/i386/sse.md: Replace nonimmediate_operand with
vector_operand and m constraint with Bm constraint on SSE
patterns with 16-byte memory operand.
* config/i386/subst.md (round_nimm_predicate): Replace
nonimmediate_operand with vector_operand.
(round_saeonly_nimm_predicate): Likewise.
(round_saeonly_nimm_scalar_predicate): New.

gcc/testsuite/

PR target/68991
* gcc.target/i386/pr68991.c: New test.

From-SVN: r232088
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/predicates.md
gcc/config/i386/sse.md
gcc/config/i386/subst.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr68991.c [new file with mode: 0644]