aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKirill Yukhin <kirill.yukhin@intel.com>2012-07-20 08:24:24 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2012-07-20 08:24:24 +0000
commit83c8cdd7eccd811725200dd04f697362a160debd (patch)
tree238081dc8441c31b1807181633eb15a8ba65ad1d /gcc
parent6d876e0b31aab2bf03e93b1d4705330f20f2c656 (diff)
downloadgcc-83c8cdd7eccd811725200dd04f697362a160debd.zip
gcc-83c8cdd7eccd811725200dd04f697362a160debd.tar.gz
gcc-83c8cdd7eccd811725200dd04f697362a160debd.tar.bz2
re PR target/53877 (__lzcnt_u16/__lzcnt_u32/__lzcnt_u64 aren't implemented)
2012-07-20 Kirill Yukhin <kirill.yukhin@intel.com> PR target/53877 * config/i386/lzcntintrin.h (_lzcnt_u32): New. (_lzcnt_u64): Ditto. From-SVN: r189703
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/lzcntintrin.h12
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f900f08..16cb34d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-07-20 Kirill Yukhin <kirill.yukhin@intel.com>
+
+ PR target/53877
+ * config/i386/lzcntintrin.h (_lzcnt_u32): New.
+ (_lzcnt_u64): Ditto.
+
2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
* config/sparc/sparc.md (adddi3_insn_sp32): Add earlyclobber.
diff --git a/gcc/config/i386/lzcntintrin.h b/gcc/config/i386/lzcntintrin.h
index 31db7dc..31a7163 100644
--- a/gcc/config/i386/lzcntintrin.h
+++ b/gcc/config/i386/lzcntintrin.h
@@ -44,12 +44,24 @@ __lzcnt32 (unsigned int __X)
return __builtin_clz (__X);
}
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_lzcnt_u32 (unsigned int __X)
+{
+ return __builtin_clz (__X);
+}
+
#ifdef __x86_64__
extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
__lzcnt64 (unsigned long long __X)
{
return __builtin_clzll (__X);
}
+
+extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_lzcnt_u64 (unsigned long long __X)
+{
+ return __builtin_clzll (__X);
+}
#endif
#endif /* _LZCNTINTRIN_H_INCLUDED */