diff options
author | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2014-04-24 18:26:35 +0000 |
---|---|---|
committer | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2014-04-24 18:26:35 +0000 |
commit | 7ceec07cf6be763267f757b3bc1b1cd46eccf89c (patch) | |
tree | 5df3000dd9d30edfaca681121102a62e6e89990e /clang/lib/Headers | |
parent | 16f2f18105e0c4b0d7bf247a70c82f955113b69b (diff) | |
download | bcm5719-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.h | 10 |
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() |