[VCRUNTIME] Fix _rotl64/_rotr64 inline asm

%k is only valid for 32 bit operands.
This commit is contained in:
Timo Kreuzer 2024-12-02 17:44:37 +02:00
parent 9db517f324
commit 13356a9001

View file

@ -1227,7 +1227,7 @@ __INTRIN_INLINE unsigned int __cdecl _rotl(unsigned int value, int shift)
__INTRIN_INLINE unsigned long long _rotl64(unsigned long long value, int shift) __INTRIN_INLINE unsigned long long _rotl64(unsigned long long value, int shift)
{ {
unsigned long long retval; unsigned long long retval;
__asm__("rolq %b[shift], %k[retval]" : [retval] "=rm" (retval) : "[retval]" (value), [shift] "Nc" (shift)); __asm__("rolq %b[shift], %[retval]" : [retval] "=rm" (retval) : "[retval]" (value), [shift] "Nc" (shift));
return retval; return retval;
} }
#else /* __x86_64__ */ #else /* __x86_64__ */
@ -1271,7 +1271,7 @@ __INTRIN_INLINE unsigned short __cdecl _rotr16(unsigned short value, unsigned ch
__INTRIN_INLINE unsigned long long _rotr64(unsigned long long value, int shift) __INTRIN_INLINE unsigned long long _rotr64(unsigned long long value, int shift)
{ {
unsigned long long retval; unsigned long long retval;
__asm__("rorq %b[shift], %k[retval]" : [retval] "=rm" (retval) : "[retval]" (value), [shift] "Nc" (shift)); __asm__("rorq %b[shift], %[retval]" : [retval] "=rm" (retval) : "[retval]" (value), [shift] "Nc" (shift));
return retval; return retval;
} }
#else /* __x86_64__ */ #else /* __x86_64__ */