mirror of
https://github.com/recp/cglm.git
synced 2026-02-17 03:39:05 +00:00
Merge branch 'master' into aabb2d
This commit is contained in:
@@ -43,7 +43,6 @@
|
||||
CGLM_INLINE vec3s glms_vec3_minadd(vec3s a, vec3s b, vec3s dest);
|
||||
CGLM_INLINE vec3s glms_vec3_flipsign(vec3s v);
|
||||
CGLM_INLINE vec3s glms_vec3_negate(vec3s v);
|
||||
CGLM_INLINE vec3s glms_vec3_inv(vec3s v);
|
||||
CGLM_INLINE vec3s glms_vec3_normalize(vec3s v);
|
||||
CGLM_INLINE vec3s glms_vec3_cross(vec3s a, vec3s b);
|
||||
CGLM_INLINE vec3s glms_vec3_crossn(vec3s a, vec3s b);
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
CGLM_INLINE vec4s glms_vec4_maxadd(vec4s a, vec4s b, vec4s dest);
|
||||
CGLM_INLINE vec4s glms_vec4_minadd(vec4s a, vec4s b, vec4s dest);
|
||||
CGLM_INLINE vec4s glms_vec4_negate(vec4s v);
|
||||
CGLM_INLINE vec4s glms_vec4_inv(vec4s v);
|
||||
CGLM_INLINE vec4s glms_vec4_normalize(vec4s v);
|
||||
CGLM_INLINE float glms_vec4_distance(vec4s a, vec4s b);
|
||||
CGLM_INLINE float glms_vec4_distance2(vec4s a, vec4s b);
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
#ifndef cglm_types_h
|
||||
#define cglm_types_h
|
||||
|
||||
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
|
||||
# include <stdalign.h>
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
/* do not use alignment for older visual studio versions */
|
||||
# if _MSC_VER < 1913 /* Visual Studio 2017 version 15.6 */
|
||||
@@ -57,8 +61,16 @@
|
||||
# define CGLM_ASSUME_ALIGNED(expr, alignment) (expr)
|
||||
#endif
|
||||
|
||||
#define CGLM_CASTPTR_ASSUME_ALIGNED(expr, type) \
|
||||
((type*)CGLM_ASSUME_ALIGNED((expr), __alignof__(type)))
|
||||
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
|
||||
# define CGLM_CASTPTR_ASSUME_ALIGNED(expr, type) \
|
||||
((type*)CGLM_ASSUME_ALIGNED((expr), alignof(type)))
|
||||
#elif defined(_MSC_VER)
|
||||
# define CGLM_CASTPTR_ASSUME_ALIGNED(expr, type) \
|
||||
((type*)CGLM_ASSUME_ALIGNED((expr), __alignof(type)))
|
||||
#else
|
||||
# define CGLM_CASTPTR_ASSUME_ALIGNED(expr, type) \
|
||||
((type*)CGLM_ASSUME_ALIGNED((expr), __alignof__(type)))
|
||||
#endif
|
||||
|
||||
typedef int ivec2[2];
|
||||
typedef int ivec3[3];
|
||||
|
||||
@@ -649,7 +649,7 @@ glm_vec4_maxadd(vec4 a, vec4 b, vec4 dest) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(dest, wasm_f32x4_add(
|
||||
glmm_load(dest),
|
||||
wasm_f32x4_max(glmm_load(a), glmm_load(b))));
|
||||
wasm_f32x4_pmax(glmm_load(a), glmm_load(b))));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(dest, _mm_add_ps(glmm_load(dest),
|
||||
_mm_max_ps(glmm_load(a),
|
||||
@@ -681,7 +681,7 @@ glm_vec4_minadd(vec4 a, vec4 b, vec4 dest) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(dest, wasm_f32x4_add(
|
||||
glmm_load(dest),
|
||||
wasm_f32x4_min(glmm_load(a), glmm_load(b))));
|
||||
wasm_f32x4_pmin(glmm_load(a), glmm_load(b))));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(dest, _mm_add_ps(glmm_load(dest),
|
||||
_mm_min_ps(glmm_load(a),
|
||||
@@ -854,7 +854,7 @@ CGLM_INLINE
|
||||
void
|
||||
glm_vec4_maxv(vec4 a, vec4 b, vec4 dest) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(dest, wasm_f32x4_max(glmm_load(a), glmm_load(b)));
|
||||
glmm_store(dest, wasm_f32x4_pmax(glmm_load(a), glmm_load(b)));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(dest, _mm_max_ps(glmm_load(a), glmm_load(b)));
|
||||
#elif defined(CGLM_NEON_FP)
|
||||
@@ -878,7 +878,7 @@ CGLM_INLINE
|
||||
void
|
||||
glm_vec4_minv(vec4 a, vec4 b, vec4 dest) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(dest, wasm_f32x4_min(glmm_load(a), glmm_load(b)));
|
||||
glmm_store(dest, wasm_f32x4_pmin(glmm_load(a), glmm_load(b)));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(dest, _mm_min_ps(glmm_load(a), glmm_load(b)));
|
||||
#elif defined(CGLM_NEON_FP)
|
||||
@@ -902,8 +902,8 @@ CGLM_INLINE
|
||||
void
|
||||
glm_vec4_clamp(vec4 v, float minVal, float maxVal) {
|
||||
#if defined(__wasm__) && defined(__wasm_simd128__)
|
||||
glmm_store(v, wasm_f32x4_min(
|
||||
wasm_f32x4_max(glmm_load(v), wasm_f32x4_splat(minVal)),
|
||||
glmm_store(v, wasm_f32x4_pmin(
|
||||
wasm_f32x4_pmax(glmm_load(v), wasm_f32x4_splat(minVal)),
|
||||
wasm_f32x4_splat(maxVal)));
|
||||
#elif defined( __SSE__ ) || defined( __SSE2__ )
|
||||
glmm_store(v, _mm_min_ps(_mm_max_ps(glmm_load(v), _mm_set1_ps(minVal)),
|
||||
|
||||
Reference in New Issue
Block a user