Add vector_memory_operand and "Bm" constraint
commitea87c5e3ae1dd4ccb0f063c3b9f035892c25ca43
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Jan 2016 20:17:26 +0000 (5 20:17 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Jan 2016 20:17:26 +0000 (5 20:17 +0000)
tree0bec7b41fbd97e8a68bdfad816048f68a21849d9
parente1bacdb6f1e925381a2bf22432e9158f4df6d3f7
Add vector_memory_operand and "Bm" constraint

SSE vector arithmetic and logic instructions only accept aligned memory
operand.  This patch adds vector_memory_operand and "Bm" constraint for
aligned SSE memory operand.  They are applied to SSE plusminus and
any_logic patterns.

gcc/

PR target/68991
* config/i386/constraints.md (Bm): New constraint.
* config/i386/predicates.md (vector_memory_operand): New
predicate.
* config/i386/sse.md: Replace xm with xBm in plusminus and
any_logic patterns.

gcc/testsuite/

PR target/68991
* g++.dg/pr68991-1.C: New test.
* g++.dg/pr68991-2.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232087 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/i386/constraints.md
gcc/config/i386/predicates.md
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/pr68991-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/pr68991-2.C [new file with mode: 0644]