Commit dfff1aba authored by uros's avatar uros
Browse files

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.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181537 138bc75d-0d04-0410-961f-82ee72b054a4
parent d9713412
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.
......@@ -19619,8 +19619,12 @@ ix86_expand_int_vcond (rtx operands[])
cop0 = operands[4];
cop1 = operands[5];
 
/* XOP supports all of the comparisons on all vector int types. */
if (!TARGET_XOP)
/* XOP supports all of the comparisons on all 128-bit vector int types. */
if (TARGET_XOP
&& (mode == V16QImode || mode == V8HImode
|| mode == V4SImode || mode == V2DImode))
;
else
{
/* Canonicalize the comparison to EQ, GT, GTU. */
switch (code)
......@@ -30013,7 +30017,7 @@ rdrand_step:
icode = CODE_FOR_avx2_gatherdiv8sf;
goto gather_gen;
case IX86_BUILTIN_GATHERALTSIV4DI:
icode = CODE_FOR_avx2_gathersiv4df;
icode = CODE_FOR_avx2_gathersiv4di;
goto gather_gen;
case IX86_BUILTIN_GATHERALTDIV8SI:
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>
* 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