Yes, this intrinsic is also implemented in gcc in ia32intrin.h.
According ISA this instruction is valid for x86_64: the only difference is
that high 32 bits of rax and rdx become zero, low 32 bits are the same as
in 32 bit.

суббота, 29 марта 2014 г. пользователь Reid Kleckner написал:

> Does gcc provide this intrinsic?
>
> Is this assembly correct for x86_64?
>
>
> On Fri, Mar 28, 2014 at 8:48 AM, Robert Khasanov 
> <[email protected]<javascript:_e(%7B%7D,'cvml','[email protected]');>
> > wrote:
>
>> Hi rnk, echristo,
>>
>> This patch moves _rdtsc() intrinsics from Intrin.h to ia32intrin.h as it
>> used on windows and linux.
>>
>>
>>
>>
>> http://llvm-reviews.chandlerc.com/D3212
>>
>> Files:
>>   lib/Headers/Intrin.h
>>   lib/Headers/ia32intrin.h
>>
>> Index: lib/Headers/Intrin.h
>> ===================================================================
>> --- lib/Headers/Intrin.h
>> +++ lib/Headers/Intrin.h
>> @@ -976,12 +976,6 @@
>>    __asm__ ("xgetbv" : "=a" (__eax), "=d" (__edx) : "c" (__xcr_no));
>>    return ((unsigned __int64)__edx << 32) | __eax;
>>  }
>> -static __inline__ unsigned __int64 __attribute__((__always_inline__,
>> __nodebug__))
>> -__rdtsc(void) {
>> -  unsigned int __eax, __edx;
>> -  __asm__ ("rdtsc" : "=a" (__eax), "=d" (__edx));
>> -  return ((unsigned __int64)__edx << 32) | __eax;
>> -}
>>  static __inline__ void __attribute__((__always_inline__, __nodebug__))
>>  __halt(void) {
>>    __asm__ volatile ("hlt");
>> Index: lib/Headers/ia32intrin.h
>> ===================================================================
>> --- lib/Headers/ia32intrin.h
>> +++ lib/Headers/ia32intrin.h
>> @@ -79,4 +79,14 @@
>>  }
>>  #endif /* !__x86_64__ */
>>
>> +/* __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;
>> +}
>> +
>> +#define _rdtsc() __rdtsc()
>> +
>>  #endif /* __IA32INTRIN_H */
>>
>
>
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to