mirror of
https://github.com/recp/cglm.git
synced 2026-02-17 03:39:05 +00:00
drop alignment requirement if CGLM_ALL_UNALIGNED defined
* bring alignment back for visual studio 2017
This commit is contained in:
@@ -52,7 +52,7 @@ glmm_norm(__m128 a) {
|
|||||||
|
|
||||||
static inline
|
static inline
|
||||||
__m128
|
__m128
|
||||||
glmm_load3(vec3 v) {
|
glmm_load3(float v[3]) {
|
||||||
__m128i xy;
|
__m128i xy;
|
||||||
__m128 z;
|
__m128 z;
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ glmm_load3(vec3 v) {
|
|||||||
|
|
||||||
static inline
|
static inline
|
||||||
void
|
void
|
||||||
glmm_store3(__m128 vx, vec3 v) {
|
glmm_store3(__m128 vx, float v[3]) {
|
||||||
_mm_storel_pi((__m64 *)&v[0], vx);
|
_mm_storel_pi((__m64 *)&v[0], vx);
|
||||||
_mm_store_ss(&v[2], _mm_shuffle1_ps(vx, 2, 2, 2, 2));
|
_mm_store_ss(&v[2], _mm_shuffle1_ps(vx, 2, 2, 2, 2));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,18 +9,30 @@
|
|||||||
#define cglm_types_h
|
#define cglm_types_h
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
|
#if _MSC_VER < 1914 /* Visual Studio 2017 version 15.7 */
|
||||||
|
# define CGLM_ALL_UNALIGNED
|
||||||
|
/* do not use alignment for older visual studio versions */
|
||||||
# define CGLM_ALIGN(X) /* __declspec(align(X)) */
|
# define CGLM_ALIGN(X) /* __declspec(align(X)) */
|
||||||
#else
|
#else
|
||||||
|
# define CGLM_ALIGN(X) __declspec(align(X))
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
# define CGLM_ALIGN(X) __attribute((aligned(X)))
|
# define CGLM_ALIGN(X) __attribute((aligned(X)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef CGLM_ALL_UNALIGNED
|
||||||
|
# define CGLM_ALIGN_IF(X) CGLM_ALIGN(X)
|
||||||
|
#else
|
||||||
|
# define CGLM_ALIGN_IF(X) /* no alignment */
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef float vec2[2];
|
typedef float vec2[2];
|
||||||
typedef CGLM_ALIGN(8) float vec3[3];
|
typedef CGLM_ALIGN_IF(8) float vec3[3];
|
||||||
typedef int ivec3[3];
|
typedef int ivec3[3];
|
||||||
typedef CGLM_ALIGN(16) float vec4[4];
|
typedef CGLM_ALIGN_IF(16) float vec4[4];
|
||||||
|
|
||||||
typedef vec3 mat3[3];
|
typedef vec3 mat3[3];
|
||||||
typedef CGLM_ALIGN(16) vec4 mat4[4];
|
typedef CGLM_ALIGN_IF(16) vec4 mat4[4];
|
||||||
|
|
||||||
typedef vec4 versor;
|
typedef vec4 versor;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user