1 #ifndef INCLUDED_ALIGNMENT
2 #define INCLUDED_ALIGNMENT
10 return (uintptr_t(t) % multiple) == 0;
13 template<
size_t multiple>
17 return (n + multiple-1) & ~(multiple-1);
24 # define ALIGNED(type, multiple) __declspec(align(multiple)) type
26 # define ALIGNED(type, multiple) type __attribute__((aligned(multiple)))
28 # define ALIGNED(type, multiple) type
37 #define VECTOR_ALIGNED(type) ALIGNED(type, 16) // ALIGNED() requires a literal; keep in sync with vectorSize
39 #define ASSERT_VECTOR_MULTIPLE(size)\
40 ASSERT(IsAligned(size, vectorSize))
42 #define ASSERT_VECTOR_ALIGNED(pointer)\
43 ASSERT_VECTOR_MULTIPLE(pointer);\
44 ASSUME_ALIGNED(pointer, vectorSize)
52 #define CACHE_ALIGNED(type) ALIGNED(type, 64) // ALIGNED() requires a literal; keep in sync with cacheLineSize
71 static const size_t KiB = size_t(1) << 10;
72 static const size_t MiB = size_t(1) << 20;
73 static const size_t GiB = size_t(1) << 30;
84 #endif // #ifndef INCLUDED_ALIGNMENT
static const size_t pageSize
static const uintptr_t maxSectorSize
#define cassert_dependent(expr)
Compile-time assertion.
bool IsAligned(T t, uintptr_t multiple)
#define T(string_literal)
static const size_t largePageSize
static const size_t cacheLineSize
static const size_t vectorSize
static const size_t allocationAlignment