Add round_nimm_scalar_predicate and use xBm
commitcd45d7a5e57a76ae9d71569d79def584574d91b8
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Jan 2016 12:43:06 +0000 (7 12:43 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Jan 2016 12:43:06 +0000 (7 12:43 +0000)
tree076f8017e501ee48e47d9e59842fe038f35ac797
parent4a86a91a4ae5b313913fa7f7bc039379963911c6
Add round_nimm_scalar_predicate and use xBm

Add round_nimm_scalar_predicate for scalar SSE integer to floating point
conversions since round_nimm_predicate is for vector operand.

round_constraint can't be used on vector SSE patterns since it is mapped
to "vm".  The "xBm" constraint must be used in this case.

gcc/

PR target/69171
* config/i386/sse.md (<sse>_sqrt<mode>2<mask_name><round_name>):
Use the "xBm" constraint.
(float<sseintvecmodelower><mode>2<mask_name><round_name):
Likewise.
(sse_cvtsi2ss<round_name>): Use round_nimm_scalar_predicate.
(sse_cvtsi2ssq<round_name>): Likewise.
(sse_cvtss2si<round_name>): Likewise.
(sse_cvtss2siq<round_name>): Likewise.
(sse2_cvtsi2sdq<round_name>): Likewise.
(sse2_cvtsd2si<round_name>): Likewise.
(sse2_cvtsd2siq<round_name>): Likewise.
* config/i386/subst.md (round_nimm_scalar_predicate): New
predicate.

gcc/testsuite/

PR target/69171
* gcc.target/i386/pr69171-1.c: New test.
* gcc.target/i386/pr69171-2.c: Likewise.
* gcc.target/i386/pr69171-3.c: Likewise.
* gcc.target/i386/pr69171-4.c: Likewise.
* gcc.target/i386/pr69171-5.c: Likewise.
* gcc.target/i386/pr69171-6.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232126 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/i386/sse.md
gcc/config/i386/subst.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr69171-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr69171-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr69171-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr69171-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr69171-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr69171-6.c [new file with mode: 0644]