diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/cbasetypes.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/common/cbasetypes.h b/src/common/cbasetypes.h index 731a8b578..bfe8bf8f8 100644 --- a/src/common/cbasetypes.h +++ b/src/common/cbasetypes.h @@ -281,6 +281,24 @@ typedef char bool; //#define swap(a,b) ((a == b) || ((a ^= b), (b ^= a), (a ^= b))) // Avoid "value computed is not used" warning and generates the same assembly code #define swap(a,b) if (a != b) ((a ^= b), (b ^= a), (a ^= b)) +#if 0 //to be activated soon, more tests needed on how VS works with the macro above +#ifdef WIN32 +#undef swap +#define swap(a,b)__asm \ +{ \ + __asm mov eax, dword ptr [a] \ + __asm cmp eax, dword ptr [b] \ + __asm je _ret \ + __asm xor eax, dword ptr [b] \ + __asm mov dword ptr [a], eax \ + __asm xor eax, dword ptr [b] \ + __asm mov dword ptr [b], eax \ + __asm xor eax, dword ptr [a] \ + __asm mov dword ptr [a], eax \ + __asm _ret: \ +} +#endif +#endif #ifndef max #define max(a,b) (((a) > (b)) ? (a) : (b)) |