summaryrefslogtreecommitdiffstats
path: root/clang/lib/Headers
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-04-24 18:26:35 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-04-24 18:26:35 +0000
commit7ceec07cf6be763267f757b3bc1b1cd46eccf89c (patch)
tree5df3000dd9d30edfaca681121102a62e6e89990e /clang/lib/Headers
parent16f2f18105e0c4b0d7bf247a70c82f955113b69b (diff)
downloadbcm5719-llvm-7ceec07cf6be763267f757b3bc1b1cd46eccf89c.tar.gz
bcm5719-llvm-7ceec07cf6be763267f757b3bc1b1cd46eccf89c.zip
[X86] Add Clang support for intrinsics __rdtsc and __rdtscp.
This patch: 1. Adds a definition for two new GCCBuiltins in BuiltinsX86.def: __builtin_ia32_rdtsc; __builtin_ia32_rdtscp; 2. Replaces the already existing definition of intrinsic __rdtsc in ia32intrin.h with a simple call to the new GCC builtin __builtin_ia32_rdtsc. 3. Adds a definition for the new intrinsic __rdtscp in ia32intrin.h llvm-svn: 207132
Diffstat (limited to 'clang/lib/Headers')
-rw-r--r--clang/lib/Headers/ia32intrin.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/Headers/ia32intrin.h b/clang/lib/Headers/ia32intrin.h
index a5985f660bb..55c22473ba7 100644
--- a/clang/lib/Headers/ia32intrin.h
+++ b/clang/lib/Headers/ia32intrin.h
@@ -82,9 +82,13 @@ __writeeflags(unsigned int __f)
/* __rdtsc */
static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__))
__rdtsc(void) {
- unsigned int __eax, __edx;
- __asm__ ("rdtsc" : "=a" (__eax), "=d" (__edx));
- return ((unsigned long long)__edx << 32) | __eax;
+ return __builtin_ia32_rdtsc();
+}
+
+/* __rdtscp */
+static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__))
+__rdtscp(unsigned int *__A) {
+ return __builtin_ia32_rdtscp(__A);
}
#define _rdtsc() __rdtsc()
OpenPOWER on IntegriCloud