summaryrefslogtreecommitdiff
path: root/src/inc/bitposition.h
diff options
context:
space:
mode:
authorJiyoung Yun <jy910.yun@samsung.com>2016-12-27 16:46:08 +0900
committerJiyoung Yun <jy910.yun@samsung.com>2016-12-27 16:46:08 +0900
commitdb20f3f1bb8595633a7e16c8900fd401a453a6b5 (patch)
treee5435159cd1bf0519276363a6fe1663d1721bed3 /src/inc/bitposition.h
parent4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (diff)
downloadcoreclr-db20f3f1bb8595633a7e16c8900fd401a453a6b5.tar.gz
coreclr-db20f3f1bb8595633a7e16c8900fd401a453a6b5.tar.bz2
coreclr-db20f3f1bb8595633a7e16c8900fd401a453a6b5.zip
Imported Upstream version 1.0.0.9127upstream/1.0.0.9127
Diffstat (limited to 'src/inc/bitposition.h')
-rw-r--r--src/inc/bitposition.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/inc/bitposition.h b/src/inc/bitposition.h
index 0f3831fce9..392d9a6632 100644
--- a/src/inc/bitposition.h
+++ b/src/inc/bitposition.h
@@ -25,7 +25,11 @@ inline
unsigned BitPosition(unsigned value)
{
_ASSERTE((value != 0) && ((value & (value-1)) == 0));
-#ifndef _TARGET_AMD64_
+#if defined(_TARGET_ARM_) && defined(__llvm__)
+ // use intrinsic functions for arm32
+ // this is applied for LLVM only but it may work for some compilers
+ DWORD index = __builtin_clz(__builtin_arm_rbit(value));
+#elif !defined(_TARGET_AMD64_)
const unsigned PRIME = 37;
static const char hashTable[PRIME] =