Fixed build

This commit is contained in:
Groove 2018-07-11 03:30:01 +02:00
parent 16106b2e3e
commit da8b136419
7 changed files with 105 additions and 123 deletions

View File

@ -1,6 +1,7 @@
#pragma once
#include "setup.hpp"
#include "_vectorize.hpp"
#include <cstring>
#include <limits>

View File

@ -4,6 +4,7 @@
#pragma once
#include "setup.hpp"
#include "type_int.hpp"
namespace glm
{
@ -46,24 +47,106 @@ namespace detail
static const bool value = false;
};
# if GLM_HAS_ALIGNED_TYPE
template<>
struct is_aligned<glm::aligned_lowp>
{
static const bool value = true;
};
template<>
struct is_aligned<glm::aligned_lowp>
{
static const bool value = true;
};
template<>
struct is_aligned<glm::aligned_mediump>
{
static const bool value = true;
};
template<>
struct is_aligned<glm::aligned_mediump>
{
static const bool value = true;
};
template<>
struct is_aligned<glm::aligned_highp>
{
static const bool value = true;
};
template<>
struct is_aligned<glm::aligned_highp>
{
static const bool value = true;
};
template<length_t L, typename T, bool is_aligned>
struct storage
{
typedef struct type {
T data[L];
} type;
};
template<length_t L, typename T>
struct storage<L, T, true>
{
typedef struct alignas(L * sizeof(T)) type {
T data[L];
} type;
};
template<typename T>
struct storage<3, T, true>
{
typedef struct alignas(4 * sizeof(T)) type {
T data[4];
} type;
};
# if GLM_ARCH & GLM_ARCH_SSE2_BIT
template<>
struct storage<4, float, true>
{
typedef glm_f32vec4 type;
};
template<>
struct storage<4, int32, true>
{
typedef glm_i32vec4 type;
};
template<>
struct storage<4, uint32, true>
{
typedef glm_u32vec4 type;
};
template<>
struct storage<2, double, true>
{
typedef glm_f64vec2 type;
};
template<>
struct storage<2, int64, true>
{
typedef glm_i64vec2 type;
};
template<>
struct storage<2, uint64, true>
{
typedef glm_u64vec2 type;
};
# endif
# if (GLM_ARCH & GLM_ARCH_AVX_BIT)
template<>
struct storage<4, double, true>
{
typedef glm_f64vec4 type;
};
# endif
# if (GLM_ARCH & GLM_ARCH_AVX2_BIT)
template<>
struct storage<4, int64, true>
{
typedef glm_i64vec4 type;
};
template<>
struct storage<4, uint64, true>
{
typedef glm_u64vec4 type;
};
# endif
}//namespace detail
}//namespace glm

View File

@ -7,110 +7,8 @@
#include "type_int.hpp"
#include "compute_vector_relational.hpp"
namespace glm{
namespace detail
namespace glm
{
template<length_t L, typename T, qualifier Q>
struct storage_alignment
{};
template<length_t L, typename T>
struct alignas(L * sizeof(T)) storage_alignment<L, T, aligned_highp>
{};
template<length_t L, typename T>
struct alignas(L * sizeof(T)) storage_alignment<L, T, aligned_mediump>
{};
template<length_t L, typename T>
struct alignas(L * sizeof(T)) storage_alignment<L, T, aligned_lowp>
{};
template<length_t L, typename T, bool is_aligned>
struct storage
{
typedef struct type {
T data[L];
} type;
};
template<length_t L, typename T>
struct storage<L, T, true>
{
typedef struct alignas(L * sizeof(T)) type {
T data[L];
} type;
};
template<typename T>
struct storage<3, T, true>
{
typedef struct alignas(4 * sizeof(T)) type {
T data[4];
} type;
};
# if GLM_ARCH & GLM_ARCH_SSE2_BIT
template<>
struct storage<4, float, true>
{
typedef glm_f32vec4 type;
};
template<>
struct storage<4, int32, true>
{
typedef glm_i32vec4 type;
};
template<>
struct storage<4, uint32, true>
{
typedef glm_u32vec4 type;
};
template<>
struct storage<2, double, true>
{
typedef glm_f64vec2 type;
};
template<>
struct storage<2, int64, true>
{
typedef glm_i64vec2 type;
};
template<>
struct storage<2, uint64, true>
{
typedef glm_u64vec2 type;
};
# endif
# if (GLM_ARCH & GLM_ARCH_AVX_BIT)
template<>
struct storage<4, double, true>
{
typedef glm_f64vec4 type;
};
# endif
# if (GLM_ARCH & GLM_ARCH_AVX2_BIT)
template<>
struct storage<4, int64, true>
{
typedef glm_i64vec4 type;
};
template<>
struct storage<4, uint64, true>
{
typedef glm_u64vec4 type;
};
# endif
}//namespace detail
#if GLM_HAS_TEMPLATE_ALIASES
template <typename T, qualifier Q = defaultp> using tvec2 = vec<2, T, Q>;
template <typename T, qualifier Q = defaultp> using tvec3 = vec<3, T, Q>;

View File

@ -21,7 +21,7 @@ namespace glm
// -- Implementation detail --
typedef T value_type;
typedef vec type;
typedef vec<2, T, Q> type;
typedef vec<2, bool, Q> bool_type;
// -- Data --

View File

@ -21,7 +21,7 @@ namespace glm
// -- Implementation detail --
typedef T value_type;
typedef vec type;
typedef vec<3, T, Q> type;
typedef vec<3, bool, Q> bool_type;
// -- Data --

View File

@ -16,7 +16,7 @@
namespace glm
{
template<typename T, qualifier Q>
struct vec<4, T, Q> : detail::storage_alignment<4, T, Q>
struct vec<4, T, Q>
{
// -- Implementation detail --

View File

@ -38,7 +38,7 @@ namespace glm
// -- Implementation detail --
typedef T value_type;
typedef vec type;
typedef vec<1, T, Q> type;
typedef vec<1, bool, Q> bool_type;
// -- Data --