23 #ifndef INCLUDED_ALIGNMENT 24 #define INCLUDED_ALIGNMENT 32 return (uintptr_t(t) % multiple) == 0;
35 template<
size_t multiple>
38 cassert(multiple != 0 && ((multiple & (multiple-1)) == 0));
39 return (n + multiple-1) & ~(multiple-1);
46 # define ALIGNED(type, multiple) __declspec(align(multiple)) type 48 # define ALIGNED(type, multiple) type __attribute__((aligned(multiple))) 50 # define ALIGNED(type, multiple) type 59 #define VECTOR_ALIGNED(type) ALIGNED(type, 16) // ALIGNED() requires a literal; keep in sync with vectorSize 61 #define ASSERT_VECTOR_MULTIPLE(size)\ 62 ASSERT(IsAligned(size, vectorSize)) 64 #define ASSERT_VECTOR_ALIGNED(pointer)\ 65 ASSERT_VECTOR_MULTIPLE(pointer);\ 66 ASSUME_ALIGNED(pointer, vectorSize) 74 #define CACHE_ALIGNED(type) ALIGNED(type, 64) // ALIGNED() requires a literal; keep in sync with cacheLineSize 104 static const size_t KiB = size_t(1) << 10;
105 static const size_t MiB = size_t(1) << 20;
106 static const size_t GiB = size_t(1) << 30;
117 #endif // #ifndef INCLUDED_ALIGNMENT size_t Align(size_t n)
Definition: alignment.h:36
static const uintptr_t maxSectorSize
Definition: alignment.h:115
static const size_t g_PageSize
Definition: alignment.h:91
bool IsAligned(T t, uintptr_t multiple)
Definition: alignment.h:30
static const size_t GiB
Definition: alignment.h:106
static const size_t KiB
Definition: alignment.h:104
static const size_t MiB
Definition: alignment.h:105
#define T(string_literal)
Definition: secure_crt.cpp:77
static const size_t g_LargePageSize
Definition: alignment.h:95
#define cassert(expr)
Compile-time assertion.
Definition: code_annotation.h:207
static const size_t cacheLineSize
Definition: alignment.h:73
static const size_t vectorSize
Definition: alignment.h:58
static const size_t allocationAlignment
Definition: alignment.h:102