]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/7396 (ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE intriniscs...
authorJan Hubicka <jh@suse.cz>
Wed, 16 Oct 2002 17:45:27 +0000 (19:45 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 16 Oct 2002 17:45:27 +0000 (17:45 +0000)
PR target/7396
* i386.c (builtin_description):Drop cmpg[te]s[sd].
* xmmintrin.h (__mm_cmpg[te]_s[sd]): Rewrite using
swapped alternative.

From-SVN: r58210

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/i386/xmmintrin.h

index da14609ace06657f924b12df8c4f1709afdd57ac..c5ab70bb002673a962570bba5f897a0b19033f98 100644 (file)
@@ -1,3 +1,10 @@
+Wed Oct 16 19:43:38 CEST 2002  Jan Hubicka  <jh@suse.cz>
+
+       PR target/7396
+       * i386.c (builtin_description):Drop cmpg[te]s[sd].
+       * xmmintrin.h (__mm_cmpg[te]_s[sd]): Rewrite using
+       swapped alternative.
+
 2002-10-16  Jakub Jelinek  <jakub@redhat.com>
 
        * fold-const.c (fold): Fix a typo.
index bb2d7d1959f2c1e14a1983fbb26ce3b5a49fa945..e536cb66c644f3928d1c9d1600b3c079f2335d68 100644 (file)
@@ -10960,14 +10960,10 @@ static const struct builtin_description bdesc_2arg[] =
   { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpeqss", IX86_BUILTIN_CMPEQSS, EQ, 0 },
   { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpltss", IX86_BUILTIN_CMPLTSS, LT, 0 },
   { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpless", IX86_BUILTIN_CMPLESS, LE, 0 },
-  { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpgtss", IX86_BUILTIN_CMPGTSS, LT, 1 },
-  { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpgess", IX86_BUILTIN_CMPGESS, LE, 1 },
   { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpunordss", IX86_BUILTIN_CMPUNORDSS, UNORDERED, 0 },
   { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpneqss", IX86_BUILTIN_CMPNEQSS, EQ, 0 },
   { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnltss", IX86_BUILTIN_CMPNLTSS, LT, 0 },
   { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnless", IX86_BUILTIN_CMPNLESS, LE, 0 },
-  { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpngtss", IX86_BUILTIN_CMPNGTSS, LT, 1 },
-  { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpngess", IX86_BUILTIN_CMPNGESS, LE, 1 },
   { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, UNORDERED, 0 },
 
   { MASK_SSE, CODE_FOR_sminv4sf3, "__builtin_ia32_minps", IX86_BUILTIN_MINPS, 0, 0 },
index 8fd2e6539d542fb6f0eae311abe3f21a208ec5d2..b32b09041c7000914a4de2f10180909cd2c9a9fc 100644 (file)
@@ -2060,13 +2060,9 @@ enum ix86_builtins
   IX86_BUILTIN_CMPEQSS,
   IX86_BUILTIN_CMPLTSS,
   IX86_BUILTIN_CMPLESS,
-  IX86_BUILTIN_CMPGTSS,
-  IX86_BUILTIN_CMPGESS,
   IX86_BUILTIN_CMPNEQSS,
   IX86_BUILTIN_CMPNLTSS,
   IX86_BUILTIN_CMPNLESS,
-  IX86_BUILTIN_CMPNGTSS,
-  IX86_BUILTIN_CMPNGESS,
   IX86_BUILTIN_CMPORDSS,
   IX86_BUILTIN_CMPUNORDSS,
   IX86_BUILTIN_CMPNESS,
index 9f9f2f993933fc52bf23c9a32c6519a11b0c2858..740b63ab8b4da87ca62cae0dfd1c2000733ccea5 100644 (file)
@@ -245,13 +245,21 @@ _mm_cmple_ss (__m128 __A, __m128 __B)
 static __inline __m128
 _mm_cmpgt_ss (__m128 __A, __m128 __B)
 {
-  return (__m128) __builtin_ia32_cmpgtss ((__v4sf)__A, (__v4sf)__B);
+  return (__m128) __builtin_ia32_movss ((__v4sf) __A,
+                                       (__v4sf)
+                                       __builtin_ia32_cmpltss ((__v4sf) __B,
+                                                               (__v4sf)
+                                                               __A));
 }
 
 static __inline __m128
 _mm_cmpge_ss (__m128 __A, __m128 __B)
 {
-  return (__m128) __builtin_ia32_cmpgess ((__v4sf)__A, (__v4sf)__B);
+  return (__m128) __builtin_ia32_movss ((__v4sf) __A,
+                                       (__v4sf)
+                                       __builtin_ia32_cmpless ((__v4sf) __B,
+                                                               (__v4sf)
+                                                               __A));
 }
 
 static __inline __m128
@@ -275,13 +283,21 @@ _mm_cmpnle_ss (__m128 __A, __m128 __B)
 static __inline __m128
 _mm_cmpngt_ss (__m128 __A, __m128 __B)
 {
-  return (__m128) __builtin_ia32_cmpngtss ((__v4sf)__A, (__v4sf)__B);
+  return (__m128) __builtin_ia32_movss ((__v4sf) __A,
+                                       (__v4sf)
+                                       __builtin_ia32_cmpnltss ((__v4sf) __B,
+                                                                (__v4sf)
+                                                                __A));
 }
 
 static __inline __m128
 _mm_cmpnge_ss (__m128 __A, __m128 __B)
 {
-  return (__m128) __builtin_ia32_cmpngess ((__v4sf)__A, (__v4sf)__B);
+  return (__m128) __builtin_ia32_movss ((__v4sf) __A,
+                                       (__v4sf)
+                                       __builtin_ia32_cmpnless ((__v4sf) __B,
+                                                                (__v4sf)
+                                                                __A));
 }
 
 static __inline __m128