diff options
Diffstat (limited to 'include/alignment.h')
| -rw-r--r-- | include/alignment.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/include/alignment.h b/include/alignment.h new file mode 100644 index 0000000..9fb3b57 --- /dev/null +++ b/include/alignment.h @@ -0,0 +1,33 @@ +#ifndef ALIGNMENT_H +#define ALIGNMENT_H + +#include "attributes.h" + +#define ALIGN4(val) (((val) + 3) & ~3) +#define ALIGN8(val) (((val) + 7) & ~7) +#define ALIGN16(val) (((val) + 0xF) & ~0xF) +#define ALIGN32(val) (((val) + 0x1F) & ~0x1F) +#define ALIGN64(val) (((val) + 0x3F) & ~0x3F) +#define ALIGN128(val) (((val) + 0x7F) & ~0x7F) +#define ALIGN256(val) (((val) + 0xFF) & ~0xFF) + + +#ifndef ALIGNED8 +#define ALIGNED8 __attribute__ ((aligned (8))) +#endif + +#ifndef ALIGNOF +#ifdef __sgi /* IDO compiler */ +#define ALIGNOF(x) __builtin_alignof(x) +#elif (__STDC_VERSION__ >= 201112L) /* C11 */ +#define ALIGNOF(x) _Alignof(x) +#else /* __GNUC__ */ +#define ALIGNOF(x) __alignof__(x) +#endif +#endif + +#define ALIGN_MASK(n) (~((n) - 1)) + +#define ALIGNOF_MASK(x) ALIGN_MASK(ALIGNOF(x)) + +#endif |
