From: Craig Topper Date: Sat, 1 Nov 2014 22:50:57 +0000 (+0000) Subject: Add _lzcnt_u32 and _lzcnt_u64 to lzcntintrin.h to match Intel documentation names... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=75e91bd4be4c6c109a20ebc0ca33fc4d3979193c;p=clang Add _lzcnt_u32 and _lzcnt_u64 to lzcntintrin.h to match Intel documentation names for these intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@221066 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Headers/lzcntintrin.h b/lib/Headers/lzcntintrin.h index 5bb7435504..35d6659d24 100644 --- a/lib/Headers/lzcntintrin.h +++ b/lib/Headers/lzcntintrin.h @@ -44,12 +44,24 @@ __lzcnt32(unsigned int __X) return __X ? __builtin_clz(__X) : 32; } +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_lzcnt_u32(unsigned int __X) +{ + return __X ? __builtin_clz(__X) : 32; +} + #ifdef __x86_64__ static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) __lzcnt64(unsigned long long __X) { return __X ? __builtin_clzll(__X) : 64; } + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +_lzcnt_u64(unsigned long long __X) +{ + return __X ? __builtin_clzll(__X) : 64; +} #endif #endif /* __LZCNTINTRIN_H */ diff --git a/test/CodeGen/lzcnt-builtins.c b/test/CodeGen/lzcnt-builtins.c index a43c4eede4..a083de9d35 100644 --- a/test/CodeGen/lzcnt-builtins.c +++ b/test/CodeGen/lzcnt-builtins.c @@ -22,3 +22,15 @@ unsigned long long test__lzcnt64(unsigned long long __X) // CHECK: @llvm.ctlz.i64 return __lzcnt64(__X); } + +unsigned int test_lzcnt_u32(unsigned int __X) +{ + // CHECK: @llvm.ctlz.i32 + return _lzcnt_u32(__X); +} + +unsigned long long test__lzcnt_u64(unsigned long long __X) +{ + // CHECK: @llvm.ctlz.i64 + return _lzcnt_u64(__X); +}