re PR target/49411 ([4.6/4.7] ICE: unrecognizable insn with -mxop in _mm_roti_epi8...
authorJakub Jelinek <jakub@redhat.com>
Sat, 18 Jun 2011 06:43:38 +0000 (08:43 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 18 Jun 2011 06:43:38 +0000 (08:43 +0200)
commitc96b410243a383fb39a9c92f0632df9e60bb75c4
treef0e31a8c58959324acc1421fc8531e571e53178c
parentdfe8601ce70a97d09e08e14e0ebd0f2ef4608d0f
re PR target/49411 ([4.6/4.7] ICE: unrecognizable insn with -mxop in _mm_roti_epi8 with negative number)

PR target/49411
* config/i386/i386.c (ix86_expand_multi_arg_builtins): If
last_arg_constant and last argument doesn't match its predicate,
for xop_vpermil2<mode>3 error out and for xop_rotl<mode>3
if it is CONST_INT, mask it, otherwise expand using rotl<mode>3.
(ix86_expand_sse_pcmpestr, ix86_expand_sse_pcmpistr): Fix
spelling of error message.
* config/i386/sse.md (sse4a_extrqi, sse4a_insertqi,
vcvtps2ph, *vcvtps2ph, *vcvtps2ph_store, vcvtps2ph256): Use
const_0_to_255_operand instead of const_int_operand.

Revert:
2011-05-09  Uros Bizjak  <ubizjak@gmail.com>

* config/i386/sse.md (blendbits): Remove mode attribute.
(<sse4_1>_blend<ssemodesuffix><avxsizesuffix>): Use const_int_operand
instead of const_0_to_<blendbits>_operand for operand 3 predicate.
Check integer value of operand 3 in insn constraint.

* gcc.target/i386/testimm-1.c: New test.
* gcc.target/i386/testimm-2.c: New test.
* gcc.target/i386/testimm-3.c: New test.
* gcc.target/i386/testimm-4.c: New test.
* gcc.target/i386/testimm-5.c: New test.
* gcc.target/i386/testimm-6.c: New test.
* gcc.target/i386/testimm-7.c: New test.
* gcc.target/i386/testimm-8.c: New test.
* gcc.target/i386/xop-vpermil2px-2.c: New test.
* gcc.target/i386/xop-rotate1-int.c: New test.
* gcc.target/i386/xop-rotate2-int.c: New test.

From-SVN: r175165
14 files changed:
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/testimm-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/testimm-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/testimm-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/testimm-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/testimm-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/testimm-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/testimm-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/testimm-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/xop-rotate1-int.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/xop-rotate2-int.c [new file with mode: 0644]