* config/i386/abmintrin.h (__lzcnt16): New.
(__lzcnt): New.
(__lzcnt64): New.
* config/i386/i386-builtin-types.def (UINT16_FTYPE_UINT16): New.
* config/i386/i386.c (IX86_BUILTIN_CLZS): New.
(bdesc_special_args): Add __builtin_clzs.
(ix86_expand_args_builtin): Handle UINT16_FTYPE_UINT16.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154895
138bc75d-0d04-0410-961f-
82ee72b054a4
2009-12-01 Sebastian Pop <sebastian.pop@amd.com>
+ * config/i386/abmintrin.h (__lzcnt16): New.
+ (__lzcnt): New.
+ (__lzcnt64): New.
+ * config/i386/i386-builtin-types.def (UINT16_FTYPE_UINT16): New.
+ * config/i386/i386.c (IX86_BUILTIN_CLZS): New.
+ (bdesc_special_args): Add __builtin_clzs.
+ (ix86_expand_args_builtin): Handle UINT16_FTYPE_UINT16.
+
+2009-12-01 Sebastian Pop <sebastian.pop@amd.com>
+
* config/i386/abmintrin.h (_mm_popcnt_u32): New.
(_mm_popcnt_u64): New.
#ifndef _ABMINTRIN_H_INCLUDED
#define _ABMINTRIN_H_INCLUDED
+extern __inline unsigned short __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lzcnt16 (unsigned short __X)
+{
+ return __builtin_clzs (__X);
+}
+
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lzcnt (unsigned int __X)
+{
+ return __builtin_clz (__X);
+}
+
+#ifdef __x86_64__
+extern __inline unsigned long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+__lzcnt64 (unsigned long __X)
+{
+ return __builtin_clzl (__X);
+}
+#endif
/* Calculate a number of bits set to 1. */
extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
DEF_FUNCTION_TYPE (INT64, V2DF)
DEF_FUNCTION_TYPE (INT64, V4SF)
DEF_FUNCTION_TYPE (UINT64, INT)
+DEF_FUNCTION_TYPE (UINT16, UINT16)
DEF_FUNCTION_TYPE (UINT64, PUNSIGNED)
DEF_FUNCTION_TYPE (V16QI, PCCHAR)
DEF_FUNCTION_TYPE (V16QI, V16QI)
IX86_BUILTIN_LWPINS32,
IX86_BUILTIN_LWPINS64,
+ IX86_BUILTIN_CLZS,
+
IX86_BUILTIN_MAX
};
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpinssi3, "__builtin_ia32_lwpins32", IX86_BUILTIN_LWPINS64, UNKNOWN, (int) UCHAR_FTYPE_UINT_UINT_UINT },
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpinsdi3, "__builtin_ia32_lwpins64", IX86_BUILTIN_LWPINS64, UNKNOWN, (int) UCHAR_FTYPE_UINT64_UINT_UINT },
+ { OPTION_MASK_ISA_ABM, CODE_FOR_clzhi2_abm, "__builtin_clzs", IX86_BUILTIN_CLZS, UNKNOWN, (int) UINT16_FTYPE_UINT16 },
+
};
/* Builtins with variable number of arguments. */
case FLOAT_FTYPE_FLOAT:
case INT_FTYPE_INT:
case UINT64_FTYPE_INT:
+ case UINT16_FTYPE_UINT16:
case INT64_FTYPE_INT64:
case INT64_FTYPE_V4SF:
case INT64_FTYPE_V2DF: