|
|
@ -9,6 +9,15 @@ |
|
|
|
namespace glm{ |
|
|
|
namespace glm{ |
|
|
|
namespace detail |
|
|
|
namespace detail |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
template<std::size_t N> struct aligned {}; |
|
|
|
|
|
|
|
template<> GLM_ALIGNED_STRUCT(1) aligned<1>{}; |
|
|
|
|
|
|
|
template<> GLM_ALIGNED_STRUCT(2) aligned<2>{}; |
|
|
|
|
|
|
|
template<> GLM_ALIGNED_STRUCT(4) aligned<4>{}; |
|
|
|
|
|
|
|
template<> GLM_ALIGNED_STRUCT(8) aligned<8>{}; |
|
|
|
|
|
|
|
template<> GLM_ALIGNED_STRUCT(16) aligned<16>{}; |
|
|
|
|
|
|
|
template<> GLM_ALIGNED_STRUCT(32) aligned<32>{}; |
|
|
|
|
|
|
|
template<> GLM_ALIGNED_STRUCT(64) aligned<64>{}; |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, std::size_t size, bool aligned> |
|
|
|
template <typename T, std::size_t size, bool aligned> |
|
|
|
struct storage |
|
|
|
struct storage |
|
|
|
{ |
|
|
|
{ |
|
|
@ -20,9 +29,10 @@ namespace detail |
|
|
|
template <typename T, std::size_t size> |
|
|
|
template <typename T, std::size_t size> |
|
|
|
struct storage<T, size, true> |
|
|
|
struct storage<T, size, true> |
|
|
|
{ |
|
|
|
{ |
|
|
|
typedef GLM_ALIGNED_STRUCT(size) type { |
|
|
|
struct type : aligned<size> |
|
|
|
|
|
|
|
{ |
|
|
|
uint8 data[size]; |
|
|
|
uint8 data[size]; |
|
|
|
} type; |
|
|
|
}; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
# if GLM_ARCH & GLM_ARCH_SSE2_BIT |
|
|
|
# if GLM_ARCH & GLM_ARCH_SSE2_BIT |
|
|
|