23#ifndef INCLUDED_ALIGNMENT
24#define INCLUDED_ALIGNMENT
34 return (uintptr_t(t) % multiple) == 0;
37template<
size_t multiple>
40 cassert(multiple != 0 && ((multiple & (multiple-1)) == 0));
41 return (n + multiple-1) & ~(multiple-1);
48# define ALIGNED(type, multiple) __declspec(align(multiple)) type
50# define ALIGNED(type, multiple) type __attribute__((aligned(multiple)))
52# define ALIGNED(type, multiple) type
61#define VECTOR_ALIGNED(type) ALIGNED(type, 16)
63#define ASSERT_VECTOR_MULTIPLE(size)\
64 ASSERT(IsAligned(size, vectorSize))
66#define ASSERT_VECTOR_ALIGNED(pointer)\
67 ASSERT_VECTOR_MULTIPLE(pointer);\
68 ASSUME_ALIGNED(pointer, vectorSize)
76#define CACHE_ALIGNED(type) ALIGNED(type, 64)
106static const size_t KiB = size_t(1) << 10;
107static const size_t MiB = size_t(1) << 20;
108static const size_t GiB = size_t(1) << 30;
static const size_t KiB
Definition: alignment.h:106
static const size_t cacheLineSize
Definition: alignment.h:75
static const size_t g_PageSize
Definition: alignment.h:93
static const size_t allocationAlignment
Definition: alignment.h:104
static const size_t MiB
Definition: alignment.h:107
static const size_t GiB
Definition: alignment.h:108
bool IsAligned(T t, uintptr_t multiple)
Definition: alignment.h:32
static const size_t vectorSize
Definition: alignment.h:60
static const uintptr_t maxSectorSize
Definition: alignment.h:117
static const size_t g_LargePageSize
Definition: alignment.h:97
size_t Align(size_t n)
Definition: alignment.h:38
#define cassert(expr)
Compile-time assertion.
Definition: code_annotation.h:209
#define T(string_literal)
Definition: secure_crt.cpp:77