|
|
@ -156,7 +156,7 @@ namespace detail |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
template<typename T, qualifier Q> |
|
|
|
template<typename T, qualifier Q> |
|
|
|
struct compute_vec4_and<uint, Q, true, 32, true> |
|
|
|
struct compute_vec4_and<T, Q, true, 32, true> |
|
|
|
{ |
|
|
|
{ |
|
|
|
static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b) |
|
|
|
static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -180,7 +180,7 @@ namespace detail |
|
|
|
# endif |
|
|
|
# endif |
|
|
|
|
|
|
|
|
|
|
|
template<typename T, qualifier Q> |
|
|
|
template<typename T, qualifier Q> |
|
|
|
struct compute_vec4_or<int, Q, true, 32, true> |
|
|
|
struct compute_vec4_or<T, Q, true, 32, true> |
|
|
|
{ |
|
|
|
{ |
|
|
|
static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b) |
|
|
|
static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -191,19 +191,8 @@ namespace detail |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
# if GLM_ARCH & GLM_ARCH_AVX2_BIT |
|
|
|
# if GLM_ARCH & GLM_ARCH_AVX2_BIT |
|
|
|
template<qualifier Q> |
|
|
|
|
|
|
|
struct compute_vec4_or<int64, Q, true, 64, true> |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER static vec<4, int64, Q> call(vec<4, int64, Q> const& a, vec<4, int64, Q> const& b) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
vec<4, int64, Q> Result; |
|
|
|
|
|
|
|
Result.data = _mm256_or_si256(a.data, b.data); |
|
|
|
|
|
|
|
return Result; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<typename T, qualifier Q> |
|
|
|
template<typename T, qualifier Q> |
|
|
|
struct compute_vec4_or<uint64, Q, true, 64, true> |
|
|
|
struct compute_vec4_or<T, Q, true, 64, true> |
|
|
|
{ |
|
|
|
{ |
|
|
|
static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b) |
|
|
|
static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -215,7 +204,7 @@ namespace detail |
|
|
|
# endif |
|
|
|
# endif |
|
|
|
|
|
|
|
|
|
|
|
template<typename T, qualifier Q> |
|
|
|
template<typename T, qualifier Q> |
|
|
|
struct compute_vec4_xor<int, Q, true, 32, true> |
|
|
|
struct compute_vec4_xor<T, Q, true, 32, true> |
|
|
|
{ |
|
|
|
{ |
|
|
|
static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b) |
|
|
|
static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -274,17 +263,6 @@ namespace detail |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
# if GLM_ARCH & GLM_ARCH_AVX2_BIT |
|
|
|
# if GLM_ARCH & GLM_ARCH_AVX2_BIT |
|
|
|
template<typename T, qualifier Q> |
|
|
|
|
|
|
|
struct compute_vec4_shift_right<int64, Q, true, 64, true> |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER static vec<4, int64, Q> call(vec<4, int64, Q> const& a, vec<4, int64, Q> const& b) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
vec<4, int64, Q> Result; |
|
|
|
|
|
|
|
Result.data = _mm256_srl_epi64(a.data, b.data); |
|
|
|
|
|
|
|
return Result; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<typename T, qualifier Q> |
|
|
|
template<typename T, qualifier Q> |
|
|
|
struct compute_vec4_shift_right<T, Q, true, 64, true> |
|
|
|
struct compute_vec4_shift_right<T, Q, true, 64, true> |
|
|
|
{ |
|
|
|
{ |
|
|
|