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