Commit d09e61b9 by Jan Hubicka

re PR c++/7386 (ran gcc compiler and it said to report htebug)

	PR target/7386
	* i386.c (builtin_description):Drop cmpg[te]s[sd].
	* xmmintrin.h (__mm_cmpg[te]_s[sd]): Rewrite using
	swapped alternative.
	* doc/extend.texi (X86 Built-in Functions): Remove killed builtins.

From-SVN: r58202
parent daa65de7
...@@ -11790,14 +11790,10 @@ static const struct builtin_description bdesc_2arg[] = ...@@ -11790,14 +11790,10 @@ static const struct builtin_description bdesc_2arg[] =
{ MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpeqss", IX86_BUILTIN_CMPEQSS, EQ, 0 }, { MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpeqss", IX86_BUILTIN_CMPEQSS, EQ, 0 },
{ MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpltss", IX86_BUILTIN_CMPLTSS, LT, 0 }, { MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpltss", IX86_BUILTIN_CMPLTSS, LT, 0 },
{ MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpless", IX86_BUILTIN_CMPLESS, LE, 0 }, { MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpless", IX86_BUILTIN_CMPLESS, LE, 0 },
{ MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpgtss", IX86_BUILTIN_CMPGTSS, LT, 1 },
{ MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpgess", IX86_BUILTIN_CMPGESS, LE, 1 },
{ MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpunordss", IX86_BUILTIN_CMPUNORDSS, UNORDERED, 0 }, { MASK_SSE1, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpunordss", IX86_BUILTIN_CMPUNORDSS, UNORDERED, 0 },
{ MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpneqss", IX86_BUILTIN_CMPNEQSS, EQ, 0 }, { MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpneqss", IX86_BUILTIN_CMPNEQSS, EQ, 0 },
{ MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnltss", IX86_BUILTIN_CMPNLTSS, LT, 0 }, { MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnltss", IX86_BUILTIN_CMPNLTSS, LT, 0 },
{ MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnless", IX86_BUILTIN_CMPNLESS, LE, 0 }, { MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnless", IX86_BUILTIN_CMPNLESS, LE, 0 },
{ MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpngtss", IX86_BUILTIN_CMPNGTSS, LT, 1 },
{ MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpngess", IX86_BUILTIN_CMPNGESS, LE, 1 },
{ MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, UNORDERED, 0 }, { MASK_SSE1, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, UNORDERED, 0 },
{ MASK_SSE1, CODE_FOR_sminv4sf3, "__builtin_ia32_minps", IX86_BUILTIN_MINPS, 0, 0 }, { MASK_SSE1, CODE_FOR_sminv4sf3, "__builtin_ia32_minps", IX86_BUILTIN_MINPS, 0, 0 },
...@@ -11919,14 +11915,10 @@ static const struct builtin_description bdesc_2arg[] = ...@@ -11919,14 +11915,10 @@ static const struct builtin_description bdesc_2arg[] =
{ MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpeqsd", IX86_BUILTIN_CMPEQSD, EQ, 0 }, { MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpeqsd", IX86_BUILTIN_CMPEQSD, EQ, 0 },
{ MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpltsd", IX86_BUILTIN_CMPLTSD, LT, 0 }, { MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpltsd", IX86_BUILTIN_CMPLTSD, LT, 0 },
{ MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmplesd", IX86_BUILTIN_CMPLESD, LE, 0 }, { MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmplesd", IX86_BUILTIN_CMPLESD, LE, 0 },
{ MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpgtsd", IX86_BUILTIN_CMPGTSD, LT, 1 },
{ MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpgesd", IX86_BUILTIN_CMPGESD, LE, 1 },
{ MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpunordsd", IX86_BUILTIN_CMPUNORDSD, UNORDERED, 0 }, { MASK_SSE2, CODE_FOR_vmmaskcmpv2df3, "__builtin_ia32_cmpunordsd", IX86_BUILTIN_CMPUNORDSD, UNORDERED, 0 },
{ MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpneqsd", IX86_BUILTIN_CMPNEQSD, EQ, 0 }, { MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpneqsd", IX86_BUILTIN_CMPNEQSD, EQ, 0 },
{ MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpnltsd", IX86_BUILTIN_CMPNLTSD, LT, 0 }, { MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpnltsd", IX86_BUILTIN_CMPNLTSD, LT, 0 },
{ MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpnlesd", IX86_BUILTIN_CMPNLESD, LE, 0 }, { MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpnlesd", IX86_BUILTIN_CMPNLESD, LE, 0 },
{ MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpngtsd", IX86_BUILTIN_CMPNGTSD, LT, 1 },
{ MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpngesd", IX86_BUILTIN_CMPNGESD, LE, 1 },
{ MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpordsd", IX86_BUILTIN_CMPORDSD, UNORDERED, 0 }, { MASK_SSE2, CODE_FOR_vmmaskncmpv2df3, "__builtin_ia32_cmpordsd", IX86_BUILTIN_CMPORDSD, UNORDERED, 0 },
{ MASK_SSE2, CODE_FOR_sminv2df3, "__builtin_ia32_minpd", IX86_BUILTIN_MINPD, 0, 0 }, { MASK_SSE2, CODE_FOR_sminv2df3, "__builtin_ia32_minpd", IX86_BUILTIN_MINPD, 0, 0 },
...@@ -13731,7 +13723,8 @@ ix86_memory_move_cost (mode, class, in) ...@@ -13731,7 +13723,8 @@ ix86_memory_move_cost (mode, class, in)
if (mode == TFmode) if (mode == TFmode)
mode = XFmode; mode = XFmode;
return ((in ? ix86_cost->int_load[2] : ix86_cost->int_store[2]) return ((in ? ix86_cost->int_load[2] : ix86_cost->int_store[2])
* (int) GET_MODE_SIZE (mode) / 4); * ((int) GET_MODE_SIZE (mode)
+ UNITS_PER_WORD -1 ) / UNITS_PER_WORD);
} }
} }
......
...@@ -2017,13 +2017,9 @@ enum ix86_builtins ...@@ -2017,13 +2017,9 @@ enum ix86_builtins
IX86_BUILTIN_CMPEQSS, IX86_BUILTIN_CMPEQSS,
IX86_BUILTIN_CMPLTSS, IX86_BUILTIN_CMPLTSS,
IX86_BUILTIN_CMPLESS, IX86_BUILTIN_CMPLESS,
IX86_BUILTIN_CMPGTSS,
IX86_BUILTIN_CMPGESS,
IX86_BUILTIN_CMPNEQSS, IX86_BUILTIN_CMPNEQSS,
IX86_BUILTIN_CMPNLTSS, IX86_BUILTIN_CMPNLTSS,
IX86_BUILTIN_CMPNLESS, IX86_BUILTIN_CMPNLESS,
IX86_BUILTIN_CMPNGTSS,
IX86_BUILTIN_CMPNGESS,
IX86_BUILTIN_CMPORDSS, IX86_BUILTIN_CMPORDSS,
IX86_BUILTIN_CMPUNORDSS, IX86_BUILTIN_CMPUNORDSS,
IX86_BUILTIN_CMPNESS, IX86_BUILTIN_CMPNESS,
...@@ -2231,13 +2227,9 @@ enum ix86_builtins ...@@ -2231,13 +2227,9 @@ enum ix86_builtins
IX86_BUILTIN_CMPEQSD, IX86_BUILTIN_CMPEQSD,
IX86_BUILTIN_CMPLTSD, IX86_BUILTIN_CMPLTSD,
IX86_BUILTIN_CMPLESD, IX86_BUILTIN_CMPLESD,
IX86_BUILTIN_CMPGTSD,
IX86_BUILTIN_CMPGESD,
IX86_BUILTIN_CMPNEQSD, IX86_BUILTIN_CMPNEQSD,
IX86_BUILTIN_CMPNLTSD, IX86_BUILTIN_CMPNLTSD,
IX86_BUILTIN_CMPNLESD, IX86_BUILTIN_CMPNLESD,
IX86_BUILTIN_CMPNGTSD,
IX86_BUILTIN_CMPNGESD,
IX86_BUILTIN_CMPORDSD, IX86_BUILTIN_CMPORDSD,
IX86_BUILTIN_CMPUNORDSD, IX86_BUILTIN_CMPUNORDSD,
IX86_BUILTIN_CMPNESD, IX86_BUILTIN_CMPNESD,
......
...@@ -245,13 +245,21 @@ _mm_cmple_ss (__m128 __A, __m128 __B) ...@@ -245,13 +245,21 @@ _mm_cmple_ss (__m128 __A, __m128 __B)
static __inline __m128 static __inline __m128
_mm_cmpgt_ss (__m128 __A, __m128 __B) _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 static __inline __m128
_mm_cmpge_ss (__m128 __A, __m128 __B) _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 static __inline __m128
...@@ -275,13 +283,21 @@ _mm_cmpnle_ss (__m128 __A, __m128 __B) ...@@ -275,13 +283,21 @@ _mm_cmpnle_ss (__m128 __A, __m128 __B)
static __inline __m128 static __inline __m128
_mm_cmpngt_ss (__m128 __A, __m128 __B) _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 static __inline __m128
_mm_cmpnge_ss (__m128 __A, __m128 __B) _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 static __inline __m128
...@@ -1270,13 +1286,21 @@ _mm_cmple_sd (__m128d __A, __m128d __B) ...@@ -1270,13 +1286,21 @@ _mm_cmple_sd (__m128d __A, __m128d __B)
static __inline __m128d static __inline __m128d
_mm_cmpgt_sd (__m128d __A, __m128d __B) _mm_cmpgt_sd (__m128d __A, __m128d __B)
{ {
return (__m128d)__builtin_ia32_cmpgtsd ((__v2df)__A, (__v2df)__B); return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
(__v2df)
__builtin_ia32_cmpltsd ((__v2df) __B,
(__v2df)
__A));
} }
static __inline __m128d static __inline __m128d
_mm_cmpge_sd (__m128d __A, __m128d __B) _mm_cmpge_sd (__m128d __A, __m128d __B)
{ {
return (__m128d)__builtin_ia32_cmpgesd ((__v2df)__A, (__v2df)__B); return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
(__v2df)
__builtin_ia32_cmplesd ((__v2df) __B,
(__v2df)
__A));
} }
static __inline __m128d static __inline __m128d
...@@ -1300,13 +1324,21 @@ _mm_cmpnle_sd (__m128d __A, __m128d __B) ...@@ -1300,13 +1324,21 @@ _mm_cmpnle_sd (__m128d __A, __m128d __B)
static __inline __m128d static __inline __m128d
_mm_cmpngt_sd (__m128d __A, __m128d __B) _mm_cmpngt_sd (__m128d __A, __m128d __B)
{ {
return (__m128d)__builtin_ia32_cmpngtsd ((__v2df)__A, (__v2df)__B); return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
(__v2df)
__builtin_ia32_cmpnltsd ((__v2df) __B,
(__v2df)
__A));
} }
static __inline __m128d static __inline __m128d
_mm_cmpnge_sd (__m128d __A, __m128d __B) _mm_cmpnge_sd (__m128d __A, __m128d __B)
{ {
return (__m128d)__builtin_ia32_cmpngesd ((__v2df)__A, (__v2df)__B); return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
(__v2df)
__builtin_ia32_cmpnlesd ((__v2df) __B,
(__v2df)
__A));
} }
static __inline __m128d static __inline __m128d
......
...@@ -5138,14 +5138,10 @@ v4si __builtin_ia32_cmpordps (v4sf, v4sf) ...@@ -5138,14 +5138,10 @@ v4si __builtin_ia32_cmpordps (v4sf, v4sf)
v4si __builtin_ia32_cmpeqss (v4sf, v4sf) v4si __builtin_ia32_cmpeqss (v4sf, v4sf)
v4si __builtin_ia32_cmpltss (v4sf, v4sf) v4si __builtin_ia32_cmpltss (v4sf, v4sf)
v4si __builtin_ia32_cmpless (v4sf, v4sf) v4si __builtin_ia32_cmpless (v4sf, v4sf)
v4si __builtin_ia32_cmpgtss (v4sf, v4sf)
v4si __builtin_ia32_cmpgess (v4sf, v4sf)
v4si __builtin_ia32_cmpunordss (v4sf, v4sf) v4si __builtin_ia32_cmpunordss (v4sf, v4sf)
v4si __builtin_ia32_cmpneqss (v4sf, v4sf) v4si __builtin_ia32_cmpneqss (v4sf, v4sf)
v4si __builtin_ia32_cmpnlts (v4sf, v4sf) v4si __builtin_ia32_cmpnlts (v4sf, v4sf)
v4si __builtin_ia32_cmpnless (v4sf, v4sf) v4si __builtin_ia32_cmpnless (v4sf, v4sf)
v4si __builtin_ia32_cmpngtss (v4sf, v4sf)
v4si __builtin_ia32_cmpngess (v4sf, v4sf)
v4si __builtin_ia32_cmpordss (v4sf, v4sf) v4si __builtin_ia32_cmpordss (v4sf, v4sf)
v4sf __builtin_ia32_maxps (v4sf, v4sf) v4sf __builtin_ia32_maxps (v4sf, v4sf)
v4sf __builtin_ia32_maxss (v4sf, v4sf) v4sf __builtin_ia32_maxss (v4sf, v4sf)
......
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