Add vector_memory_operand and "Bm" constraint
authorH.J. Lu <hongjiu.lu@intel.com>
Tue, 5 Jan 2016 20:17:26 +0000 (20:17 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Tue, 5 Jan 2016 20:17:26 +0000 (12:17 -0800)
commit3f50525df20bafdcd1e04b2a406e9f83336df32a
tree0bec7b41fbd97e8a68bdfad816048f68a21849d9
parentae120683c6a300fecd8b82ef2451faec3932688e
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.

From-SVN: r232087
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]