Commit 99c25ac1 by H.J. Lu Committed by H.J. Lu

i386.c (ix86_builtin_type): Replace DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.

2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_builtin_type): Replace
	DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
	(bdesc_args): Updated.
	(ix86_init_mmx_sse_builtins): Likewise.
	(ix86_expand_args_builtin): Likewise.

	* config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
	with __v1di.

	* doc/extend.texi: Correct __builtin_ia32_palignr.

From-SVN: r134864
parent a44acfb9
2008-05-01 H.J. Lu <hongjiu.lu@intel.com> 2008-05-01 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (ix86_builtin_type): Replace
DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
(bdesc_args): Updated.
(ix86_init_mmx_sse_builtins): Likewise.
(ix86_expand_args_builtin): Likewise.
* config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
with __v1di.
* doc/extend.texi: Correct __builtin_ia32_palignr.
2008-05-01 H.J. Lu <hongjiu.lu@intel.com>
PR target/36095 PR target/36095
* config/i386/i386.c (bdesc_crc32): Removed. * config/i386/i386.c (bdesc_crc32): Removed.
(ix86_expand_crc32): Likewise. (ix86_expand_crc32): Likewise.
......
...@@ -18092,10 +18092,10 @@ enum ix86_builtin_type ...@@ -18092,10 +18092,10 @@ enum ix86_builtin_type
V4SF_FTYPE_V4SF_V4SF_INT, V4SF_FTYPE_V4SF_V4SF_INT,
V2DI_FTYPE_V2DI_V2DI_INT, V2DI_FTYPE_V2DI_V2DI_INT,
V2DI2TI_FTYPE_V2DI_V2DI_INT, V2DI2TI_FTYPE_V2DI_V2DI_INT,
V1DI2DI_FTYPE_V1DI_V1DI_INT,
V2DF_FTYPE_V2DF_V2DF_INT, V2DF_FTYPE_V2DF_V2DF_INT,
V2DI_FTYPE_V2DI_UINT_UINT, V2DI_FTYPE_V2DI_UINT_UINT,
V2DI_FTYPE_V2DI_V2DI_UINT_UINT, V2DI_FTYPE_V2DI_V2DI_UINT_UINT
DI_FTYPE_DI_DI_INT
}; };
/* Builtins with variable number of arguments. */ /* Builtins with variable number of arguments. */
...@@ -18492,7 +18492,7 @@ static const struct builtin_description bdesc_args[] = ...@@ -18492,7 +18492,7 @@ static const struct builtin_description bdesc_args[] =
/* SSSE3. */ /* SSSE3. */
{ OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_palignrti, "__builtin_ia32_palignr128", IX86_BUILTIN_PALIGNR128, UNKNOWN, (int) V2DI2TI_FTYPE_V2DI_V2DI_INT }, { OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_palignrti, "__builtin_ia32_palignr128", IX86_BUILTIN_PALIGNR128, UNKNOWN, (int) V2DI2TI_FTYPE_V2DI_V2DI_INT },
{ OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_palignrdi, "__builtin_ia32_palignr", IX86_BUILTIN_PALIGNR, UNKNOWN, (int) DI_FTYPE_DI_DI_INT }, { OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_palignrdi, "__builtin_ia32_palignr", IX86_BUILTIN_PALIGNR, UNKNOWN, (int) V1DI2DI_FTYPE_V1DI_V1DI_INT },
/* SSE4.1 */ /* SSE4.1 */
{ OPTION_MASK_ISA_SSE4_1, CODE_FOR_sse4_1_blendpd, "__builtin_ia32_blendpd", IX86_BUILTIN_BLENDPD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, { OPTION_MASK_ISA_SSE4_1, CODE_FOR_sse4_1_blendpd, "__builtin_ia32_blendpd", IX86_BUILTIN_BLENDPD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT },
...@@ -19011,13 +19011,10 @@ ix86_init_mmx_sse_builtins (void) ...@@ -19011,13 +19011,10 @@ ix86_init_mmx_sse_builtins (void)
tree v1di_ftype_v1di_v1di tree v1di_ftype_v1di_v1di
= build_function_type_list (V1DI_type_node, = build_function_type_list (V1DI_type_node,
V1DI_type_node, V1DI_type_node, NULL_TREE); V1DI_type_node, V1DI_type_node, NULL_TREE);
tree v1di_ftype_v1di_v1di_int
tree di_ftype_di_di_int = build_function_type_list (V1DI_type_node,
= build_function_type_list (long_long_unsigned_type_node, V1DI_type_node, V1DI_type_node,
long_long_unsigned_type_node,
long_long_unsigned_type_node,
integer_type_node, NULL_TREE); integer_type_node, NULL_TREE);
tree v2si_ftype_v2sf tree v2si_ftype_v2sf
= build_function_type_list (V2SI_type_node, V2SF_type_node, NULL_TREE); = build_function_type_list (V2SI_type_node, V2SF_type_node, NULL_TREE);
tree v2sf_ftype_v2si tree v2sf_ftype_v2si
...@@ -19710,8 +19707,8 @@ ix86_init_mmx_sse_builtins (void) ...@@ -19710,8 +19707,8 @@ ix86_init_mmx_sse_builtins (void)
case V2DI_FTYPE_V2DI_V2DI_UINT_UINT: case V2DI_FTYPE_V2DI_V2DI_UINT_UINT:
type = v2di_ftype_v2di_v2di_unsigned_unsigned; type = v2di_ftype_v2di_v2di_unsigned_unsigned;
break; break;
case DI_FTYPE_DI_DI_INT: case V1DI2DI_FTYPE_V1DI_V1DI_INT:
type = di_ftype_di_di_int; type = v1di_ftype_v1di_v1di_int;
break; break;
default: default:
gcc_unreachable (); gcc_unreachable ();
...@@ -20555,6 +20552,11 @@ ix86_expand_args_builtin (const struct builtin_description *d, ...@@ -20555,6 +20552,11 @@ ix86_expand_args_builtin (const struct builtin_description *d,
rmode = V2DImode; rmode = V2DImode;
nargs_constant = 1; nargs_constant = 1;
break; break;
case V1DI2DI_FTYPE_V1DI_V1DI_INT:
nargs = 3;
rmode = DImode;
nargs_constant = 1;
break;
case V2DI_FTYPE_V2DI_UINT_UINT: case V2DI_FTYPE_V2DI_UINT_UINT:
nargs = 3; nargs = 3;
nargs_constant = 2; nargs_constant = 2;
...@@ -20563,10 +20565,6 @@ ix86_expand_args_builtin (const struct builtin_description *d, ...@@ -20563,10 +20565,6 @@ ix86_expand_args_builtin (const struct builtin_description *d,
nargs = 4; nargs = 4;
nargs_constant = 2; nargs_constant = 2;
break; break;
case DI_FTYPE_DI_DI_INT:
nargs = 3;
nargs_constant = 1;
break;
default: default:
gcc_unreachable (); gcc_unreachable ();
} }
......
...@@ -192,8 +192,8 @@ _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N) ...@@ -192,8 +192,8 @@ _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N) _mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N)
{ {
return (__m64) __builtin_ia32_palignr ((long long)__X, return (__m64) __builtin_ia32_palignr ((__v1di)__X,
(long long)__Y, __N * 8); (__v1di)__Y, __N * 8);
} }
#else #else
#define _mm_alignr_epi8(X, Y, N) \ #define _mm_alignr_epi8(X, Y, N) \
...@@ -201,8 +201,8 @@ _mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N) ...@@ -201,8 +201,8 @@ _mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N)
(__v2di)(__m128i)(Y), \ (__v2di)(__m128i)(Y), \
(int)(N) * 8)) (int)(N) * 8))
#define _mm_alignr_pi8(X, Y, N) \ #define _mm_alignr_pi8(X, Y, N) \
((__m64) __builtin_ia32_palignr ((long long)(__m64)(X), \ ((__m64) __builtin_ia32_palignr ((__v1di)(__m64)(X), \
(long long)(__m64)(Y), \ (__v1di)(__m64)(Y), \
(int)(N) * 8)) (int)(N) * 8))
#endif #endif
......
...@@ -7858,7 +7858,7 @@ v8qi __builtin_ia32_pshufb (v8qi, v8qi) ...@@ -7858,7 +7858,7 @@ v8qi __builtin_ia32_pshufb (v8qi, v8qi)
v8qi __builtin_ia32_psignb (v8qi, v8qi) v8qi __builtin_ia32_psignb (v8qi, v8qi)
v2si __builtin_ia32_psignd (v2si, v2si) v2si __builtin_ia32_psignd (v2si, v2si)
v4hi __builtin_ia32_psignw (v4hi, v4hi) v4hi __builtin_ia32_psignw (v4hi, v4hi)
long long __builtin_ia32_palignr (long long, long long, int) v1di __builtin_ia32_palignr (v1di, v1di, int)
v8qi __builtin_ia32_pabsb (v8qi) v8qi __builtin_ia32_pabsb (v8qi)
v2si __builtin_ia32_pabsd (v2si) v2si __builtin_ia32_pabsd (v2si)
v4hi __builtin_ia32_pabsw (v4hi) v4hi __builtin_ia32_pabsw (v4hi)
......
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