aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/common/common_funcs.h
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2015-05-06 23:26:19 -0300
committerGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2015-05-07 15:45:21 -0300
commit1bd1a13a02e317a50252b0b5d5077b6ab2dbef53 (patch)
tree0ef5da2dd302996c2d36ea283d6d6cde663ac16f /src/common/common_funcs.h
parentae963d75f8ac37dd870054c20ff14f4e5418f661 (diff)
Common: Move alignment macros to common_funcs.h
Diffstat (limited to 'src/common/common_funcs.h')
-rw-r--r--src/common/common_funcs.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h
index 973d8354..4f9e514c 100644
--- a/src/common/common_funcs.h
+++ b/src/common/common_funcs.h
@@ -27,6 +27,27 @@
#define INSERT_PADDING_BYTES(num_bytes) u8 CONCAT2(pad, __LINE__)[(num_bytes)]
#define INSERT_PADDING_WORDS(num_words) u32 CONCAT2(pad, __LINE__)[(num_words)]
+#ifdef _WIN32
+ // Alignment
+ #define MEMORY_ALIGNED16(x) __declspec(align(16)) x
+ #define MEMORY_ALIGNED32(x) __declspec(align(32)) x
+ #define MEMORY_ALIGNED64(x) __declspec(align(64)) x
+ #define MEMORY_ALIGNED128(x) __declspec(align(128)) x
+#else
+ // Windows compatibility
+ #ifdef _LP64
+ #define _M_X64 1
+ #else
+ #define _M_IX86 1
+ #endif
+
+ #define __forceinline inline __attribute__((always_inline))
+ #define MEMORY_ALIGNED16(x) __attribute__((aligned(16))) x
+ #define MEMORY_ALIGNED32(x) __attribute__((aligned(32))) x
+ #define MEMORY_ALIGNED64(x) __attribute__((aligned(64))) x
+ #define MEMORY_ALIGNED128(x) __attribute__((aligned(128))) x
+#endif
+
#ifndef _MSC_VER
#include <errno.h>