i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED for __builtin_ia32_cmpordss.
* config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED for __builtin_ia32_cmpordss. * gcc.target/i386/ordcmp-1.c: New test. * gcc.target/i386/unordcmp-1.c: New test. From-SVN: r123989
This commit is contained in:
parent
86122f7282
commit
a5b9afd1a1
5 changed files with 79 additions and 1 deletions
|
@ -1,5 +1,8 @@
|
|||
2007-04-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
|
||||
for __builtin_ia32_cmpordss.
|
||||
|
||||
PR tree-optimization/31632
|
||||
* fold-const.c (fold_binary): Use op0 and op1 instead of arg0
|
||||
and arg1 for optimizations of comparison against min/max values.
|
||||
|
|
|
@ -16487,7 +16487,7 @@ static const struct builtin_description bdesc_2arg[] =
|
|||
BUILTIN_DESC_SWAP_OPERANDS },
|
||||
{ MASK_SSE, CODE_FOR_sse_vmmaskcmpv4sf3, "__builtin_ia32_cmpngess", IX86_BUILTIN_CMPNGESS, UNGT,
|
||||
BUILTIN_DESC_SWAP_OPERANDS },
|
||||
{ MASK_SSE, CODE_FOR_sse_vmmaskcmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, UNORDERED, 0 },
|
||||
{ MASK_SSE, CODE_FOR_sse_vmmaskcmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, ORDERED, 0 },
|
||||
|
||||
{ MASK_SSE, CODE_FOR_sminv4sf3, "__builtin_ia32_minps", IX86_BUILTIN_MINPS, 0, 0 },
|
||||
{ MASK_SSE, CODE_FOR_smaxv4sf3, "__builtin_ia32_maxps", IX86_BUILTIN_MAXPS, 0, 0 },
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
2007-04-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.target/i386/ordcmp-1.c: New test.
|
||||
* gcc.target/i386/unordcmp-1.c: New test.
|
||||
|
||||
PR tree-optimization/31632
|
||||
* gcc.c-torture/compile/20070419-1.c: New test.
|
||||
|
||||
|
|
36
gcc/testsuite/gcc.target/i386/ordcmp-1.c
Normal file
36
gcc/testsuite/gcc.target/i386/ordcmp-1.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-O2 -msse2" } */
|
||||
/* { dg-final { scan-assembler "cmpordss" } } */
|
||||
/* { dg-final { scan-assembler "cmpordps" } } */
|
||||
/* { dg-final { scan-assembler "cmpordsd" } } */
|
||||
/* { dg-final { scan-assembler "cmpordpd" } } */
|
||||
/* { dg-final { scan-assembler-not "cmpunordss" } } */
|
||||
/* { dg-final { scan-assembler-not "cmpunordps" } } */
|
||||
/* { dg-final { scan-assembler-not "cmpunordsd" } } */
|
||||
/* { dg-final { scan-assembler-not "cmpunordpd" } } */
|
||||
|
||||
#include <emmintrin.h>
|
||||
|
||||
__m128
|
||||
f1 (__m128 x, __m128 y)
|
||||
{
|
||||
return _mm_cmpord_ss (x, y);
|
||||
}
|
||||
|
||||
__m128
|
||||
f2 (__m128 x, __m128 y)
|
||||
{
|
||||
return _mm_cmpord_ps (x, y);
|
||||
}
|
||||
|
||||
__m128d
|
||||
f3 (__m128d x, __m128d y)
|
||||
{
|
||||
return _mm_cmpord_sd (x, y);
|
||||
}
|
||||
|
||||
__m128d
|
||||
f4 (__m128d x, __m128d y)
|
||||
{
|
||||
return _mm_cmpord_pd (x, y);
|
||||
}
|
36
gcc/testsuite/gcc.target/i386/unordcmp-1.c
Normal file
36
gcc/testsuite/gcc.target/i386/unordcmp-1.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-O2 -msse2" } */
|
||||
/* { dg-final { scan-assembler "cmpunordss" } } */
|
||||
/* { dg-final { scan-assembler "cmpunordps" } } */
|
||||
/* { dg-final { scan-assembler "cmpunordsd" } } */
|
||||
/* { dg-final { scan-assembler "cmpunordpd" } } */
|
||||
/* { dg-final { scan-assembler-not "cmpordss" } } */
|
||||
/* { dg-final { scan-assembler-not "cmpordps" } } */
|
||||
/* { dg-final { scan-assembler-not "cmpordsd" } } */
|
||||
/* { dg-final { scan-assembler-not "cmpordpd" } } */
|
||||
|
||||
#include <emmintrin.h>
|
||||
|
||||
__m128
|
||||
f1 (__m128 x, __m128 y)
|
||||
{
|
||||
return _mm_cmpunord_ss (x, y);
|
||||
}
|
||||
|
||||
__m128
|
||||
f2 (__m128 x, __m128 y)
|
||||
{
|
||||
return _mm_cmpunord_ps (x, y);
|
||||
}
|
||||
|
||||
__m128d
|
||||
f3 (__m128d x, __m128d y)
|
||||
{
|
||||
return _mm_cmpunord_sd (x, y);
|
||||
}
|
||||
|
||||
__m128d
|
||||
f4 (__m128d x, __m128d y)
|
||||
{
|
||||
return _mm_cmpunord_pd (x, y);
|
||||
}
|
Loading…
Add table
Reference in a new issue