mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2025-04-19 08:59:18 +00:00
Asm word swap in tier0/platform.h on Linux
This commit is contained in:
parent
d9ac276a95
commit
809c348c2d
2 changed files with 50 additions and 0 deletions
|
@ -935,6 +935,31 @@ inline T QWordSwapC( T dw )
|
|||
|
||||
#pragma warning(pop)
|
||||
|
||||
#elif defined( _LINUX )
|
||||
|
||||
#define WordSwap WordSwapAsm
|
||||
#define DWordSwap DWordSwapAsm
|
||||
|
||||
template <typename T>
|
||||
inline T WordSwapAsm( T w )
|
||||
{
|
||||
__asm__ (
|
||||
"xchg %b0, %h0\n"
|
||||
: "+r" (w)
|
||||
);
|
||||
return w;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline T DWordSwapAsm( T dw )
|
||||
{
|
||||
__asm__ (
|
||||
"bswap %0\n"
|
||||
: "+r" (dw)
|
||||
);
|
||||
return dw;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#define WordSwap WordSwapC
|
||||
|
|
|
@ -935,6 +935,31 @@ inline T QWordSwapC( T dw )
|
|||
|
||||
#pragma warning(pop)
|
||||
|
||||
#elif defined( _LINUX )
|
||||
|
||||
#define WordSwap WordSwapAsm
|
||||
#define DWordSwap DWordSwapAsm
|
||||
|
||||
template <typename T>
|
||||
inline T WordSwapAsm( T w )
|
||||
{
|
||||
__asm__ (
|
||||
"xchg %b0, %h0\n"
|
||||
: "+r" (w)
|
||||
);
|
||||
return w;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline T DWordSwapAsm( T dw )
|
||||
{
|
||||
__asm__ (
|
||||
"bswap %0\n"
|
||||
: "+r" (dw)
|
||||
);
|
||||
return dw;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#define WordSwap WordSwapC
|
||||
|
|
Loading…
Reference in a new issue