Commit fd9ee597 by Uros Bizjak Committed by Uros Bizjak

re PR target/51235 (ICE: in extract_insn, at recog.c:2137 (unrecognizable insn)…

re PR target/51235 (ICE: in extract_insn, at recog.c:2137 (unrecognizable insn) with -O -ftree-vectorize -mavx2 -mxop)

	PR target/51235
	* config/i386/i386.c (ix86_expand_vcond): Generate TARGET_XOP
	patterns for supported mode only.

	PR target/51236
	* config/i386/i386.c (ix86_expand_builtin)
	<IX86_BUILTIN_GATHERALTSIV4DI>: Use CODE_FOR_avx2_gathersiv4di.

testsuite/ChangeLog:

	PR target/51235
	* gcc.target/i386/pr51235.c: New test.

	PR target/51236
	* gcc.target/i386/pr51236.c: New test.

From-SVN: r181537
parent 215c6c97
2011-11-20 Uros Bizjak <ubizjak@gmail.com> 2011-11-20 Uros Bizjak <ubizjak@gmail.com>
PR target/51235
* config/i386/i386.c (ix86_expand_vcond): Generate TARGET_XOP
patterns for supported mode only.
PR target/51236
* config/i386/i386.c (ix86_expand_builtin)
<IX86_BUILTIN_GATHERALTSIV4DI>: Use CODE_FOR_avx2_gathersiv4di.
2011-11-20 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (UNSPEC_MOVNTI): Remove. * config/i386/i386.md (UNSPEC_MOVNTI): Remove.
(UNSPEC_MOVNTQ): New unspec. (UNSPEC_MOVNTQ): New unspec.
* config/i386/mmx.md (sse_movntq): Rename from sse_movntdi. * config/i386/mmx.md (sse_movntq): Rename from sse_movntdi.
...@@ -19619,8 +19619,12 @@ ix86_expand_int_vcond (rtx operands[]) ...@@ -19619,8 +19619,12 @@ ix86_expand_int_vcond (rtx operands[])
cop0 = operands[4]; cop0 = operands[4];
cop1 = operands[5]; cop1 = operands[5];
/* XOP supports all of the comparisons on all vector int types. */ /* XOP supports all of the comparisons on all 128-bit vector int types. */
if (!TARGET_XOP) if (TARGET_XOP
&& (mode == V16QImode || mode == V8HImode
|| mode == V4SImode || mode == V2DImode))
;
else
{ {
/* Canonicalize the comparison to EQ, GT, GTU. */ /* Canonicalize the comparison to EQ, GT, GTU. */
switch (code) switch (code)
...@@ -30013,7 +30017,7 @@ rdrand_step: ...@@ -30013,7 +30017,7 @@ rdrand_step:
icode = CODE_FOR_avx2_gatherdiv8sf; icode = CODE_FOR_avx2_gatherdiv8sf;
goto gather_gen; goto gather_gen;
case IX86_BUILTIN_GATHERALTSIV4DI: case IX86_BUILTIN_GATHERALTSIV4DI:
icode = CODE_FOR_avx2_gathersiv4df; icode = CODE_FOR_avx2_gathersiv4di;
goto gather_gen; goto gather_gen;
case IX86_BUILTIN_GATHERALTDIV8SI: case IX86_BUILTIN_GATHERALTDIV8SI:
icode = CODE_FOR_avx2_gatherdiv8si; icode = CODE_FOR_avx2_gatherdiv8si;
2011-11-20 Uros Bizjak <ubizjak@gmail.com>
PR target/51235
* gcc.target/i386/pr51235.c: New test.
PR target/51236
* gcc.target/i386/pr51236.c: New test.
2011-11-20 Eric Botcazou <ebotcazou@adacore.com> 2011-11-20 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/discr32.adb: New test. * gnat.dg/discr32.adb: New test.
......
/* { dg-do compile } */
/* { dg-options "-O -ftree-vectorize -mxop -mavx2" } */
void *foo (int count, void **list)
{
void *minaddr = list[0];
int i;
for (i = 1; i < count; i++)
{
void *addr = list[i];
if (addr < minaddr)
minaddr = addr;
}
return minaddr;
}
/* { dg-do compile } */
/* { dg-options "-O -ftree-vectorize -mavx2" } */
long foo (long *p, int i)
{
long x = 0;
while (--i)
x ^= p[i];
return x;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment