diff --git a/include/cglm/vec4.h b/include/cglm/vec4.h index 1ce7317..fef1e7d 100644 --- a/include/cglm/vec4.h +++ b/include/cglm/vec4.h @@ -781,7 +781,7 @@ CGLM_INLINE void glm_vec4_mulsub(vec4 a, vec4 b, vec4 dest) { #if defined(CGLM_SIMD) - glmm_store(dest, glmm_fnmsub(glmm_load(a), glmm_load(b), glmm_load(dest))); + glmm_store(dest, glmm_fnmadd(glmm_load(a), glmm_load(b), glmm_load(dest))); #else dest[0] -= a[0] * b[0]; dest[1] -= a[1] * b[1]; @@ -803,7 +803,7 @@ CGLM_INLINE void glm_vec4_mulsubs(vec4 a, float s, vec4 dest) { #if defined(CGLM_SIMD) - glmm_store(dest, glmm_fnmsub(glmm_load(a), glmm_set1(s), glmm_load(dest))); + glmm_store(dest, glmm_fnmadd(glmm_load(a), glmm_set1(s), glmm_load(dest))); #else dest[0] -= a[0] * s; dest[1] -= a[1] * s; diff --git a/test/src/test_vec2.h b/test/src/test_vec2.h index 92ab8a2..aa75b1c 100644 --- a/test/src/test_vec2.h +++ b/test/src/test_vec2.h @@ -373,8 +373,8 @@ TEST_IMPL(GLM_PREFIX, vec2_subsub) { GLM(vec2_subsub)(v1, v2, v4); - ASSERT(test_eq(v3[0] - v1[0] - v2[0], v4[0])) - ASSERT(test_eq(v3[1] - v1[1] - v2[1], v4[1])) + ASSERT(test_eq(v3[0] - (v1[0] - v2[0]), v4[0])) + ASSERT(test_eq(v3[1] - (v1[1] - v2[1]), v4[1])) TEST_SUCCESS } @@ -387,8 +387,8 @@ TEST_IMPL(GLM_PREFIX, vec2_addsub) { GLM(vec2_addsub)(v1, v2, v4); - ASSERT(test_eq(v3[0] - v1[0] + v2[0], v4[0])) - ASSERT(test_eq(v3[1] - v1[1] + v2[1], v4[1])) + ASSERT(test_eq(v3[0] - (v1[0] + v2[0]), v4[0])) + ASSERT(test_eq(v3[1] - (v1[1] + v2[1]), v4[1])) TEST_SUCCESS } diff --git a/test/src/test_vec3.h b/test/src/test_vec3.h index 800f8c9..65570c0 100644 --- a/test/src/test_vec3.h +++ b/test/src/test_vec3.h @@ -575,9 +575,9 @@ TEST_IMPL(GLM_PREFIX, vec3_subsub) { GLM(vec3_subsub)(v1, v2, v4); - ASSERT(test_eq(v3[0] - v1[0] - v2[0], v4[0])) - ASSERT(test_eq(v3[1] - v1[1] - v2[1], v4[1])) - ASSERT(test_eq(v3[2] - v1[2] - v2[2], v4[2])) + ASSERT(test_eq(v3[0] - (v1[0] - v2[0]), v4[0])) + ASSERT(test_eq(v3[1] - (v1[1] - v2[1]), v4[1])) + ASSERT(test_eq(v3[2] - (v1[2] - v2[2]), v4[2])) TEST_SUCCESS } @@ -590,9 +590,9 @@ TEST_IMPL(GLM_PREFIX, vec3_addsub) { GLM(vec3_addsub)(v1, v2, v4); - ASSERT(test_eq(v3[0] - v1[0] + v2[0], v4[0])) - ASSERT(test_eq(v3[1] - v1[1] + v2[1], v4[1])) - ASSERT(test_eq(v3[2] - v1[2] + v2[2], v4[2])) + ASSERT(test_eq(v3[0] - (v1[0] + v2[0]), v4[0])) + ASSERT(test_eq(v3[1] - (v1[1] + v2[1]), v4[1])) + ASSERT(test_eq(v3[2] - (v1[2] + v2[2]), v4[2])) TEST_SUCCESS } diff --git a/test/src/test_vec4.h b/test/src/test_vec4.h index 8a89f6b..cf73b67 100644 --- a/test/src/test_vec4.h +++ b/test/src/test_vec4.h @@ -578,10 +578,10 @@ TEST_IMPL(GLM_PREFIX, vec4_addsub) { GLM(vec4_addsub)(v1, v2, v4); - ASSERT(test_eq(v3[0] - v1[0] + v2[0], v4[0])) - ASSERT(test_eq(v3[1] - v1[1] + v2[1], v4[1])) - ASSERT(test_eq(v3[2] - v1[2] + v2[2], v4[2])) - ASSERT(test_eq(v3[3] - v1[3] + v2[3], v4[3])) + ASSERT(test_eq(v3[0] - (v1[0] + v2[0]), v4[0])) + ASSERT(test_eq(v3[1] - (v1[1] + v2[1]), v4[1])) + ASSERT(test_eq(v3[2] - (v1[2] + v2[2]), v4[2])) + ASSERT(test_eq(v3[3] - (v1[3] + v2[3]), v4[3])) TEST_SUCCESS } @@ -594,11 +594,11 @@ TEST_IMPL(GLM_PREFIX, vec4_mulsub) { GLM(vec4_mulsub)(v1, v2, v4); - ASSERT(test_eq(v3[0] - v1[0] * v2[0], v4[0])) - ASSERT(test_eq(v3[1] - v1[1] * v2[1], v4[1])) - ASSERT(test_eq(v3[2] - v1[2] * v2[2], v4[2])) - ASSERT(test_eq(v3[3] - v1[3] * v2[3], v4[3])) - + ASSERT(test_eq(v3[0] - (v1[0] * v2[0]), v4[0])) + ASSERT(test_eq(v3[1] - (v1[1] * v2[1]), v4[1])) + ASSERT(test_eq(v3[2] - (v1[2] * v2[2]), v4[2])) + ASSERT(test_eq(v3[3] - (v1[3] * v2[3]), v4[3])) + TEST_SUCCESS } @@ -610,10 +610,10 @@ TEST_IMPL(GLM_PREFIX, vec4_mulsubs) { GLM(vec4_mulsubs)(v1, s, v3); - ASSERT(test_eq(v2[0] - v1[0] * s, v3[0])) - ASSERT(test_eq(v2[1] - v1[1] * s, v3[1])) - ASSERT(test_eq(v2[2] - v1[2] * s, v3[2])) - ASSERT(test_eq(v2[3] - v1[3] * s, v3[3])) + ASSERT(test_eq(v2[0] - (v1[0] * s), v3[0])) + ASSERT(test_eq(v2[1] - (v1[1] * s), v3[1])) + ASSERT(test_eq(v2[2] - (v1[2] * s), v3[2])) + ASSERT(test_eq(v2[3] - (v1[3] * s), v3[3])) TEST_SUCCESS } diff --git a/test/tests.h b/test/tests.h index 56723b1..00b053a 100644 --- a/test/tests.h +++ b/test/tests.h @@ -1475,6 +1475,12 @@ TEST_LIST { TEST_ENTRY(glm_vec2_muladds) TEST_ENTRY(glm_vec2_maxadd) TEST_ENTRY(glm_vec2_minadd) + TEST_ENTRY(glm_vec2_subsub) + TEST_ENTRY(glm_vec2_addsub) + TEST_ENTRY(glm_vec2_mulsub) + TEST_ENTRY(glm_vec2_mulsubs) + TEST_ENTRY(glm_vec2_maxsub) + TEST_ENTRY(glm_vec2_minsub) TEST_ENTRY(glm_vec2_negate_to) TEST_ENTRY(glm_vec2_negate) TEST_ENTRY(glm_vec2_normalize) @@ -1577,6 +1583,12 @@ TEST_LIST { TEST_ENTRY(glm_vec3_muladds) TEST_ENTRY(glm_vec3_maxadd) TEST_ENTRY(glm_vec3_minadd) + TEST_ENTRY(glm_vec3_subsub) + TEST_ENTRY(glm_vec3_addsub) + TEST_ENTRY(glm_vec3_mulsub) + TEST_ENTRY(glm_vec3_mulsubs) + TEST_ENTRY(glm_vec3_maxsub) + TEST_ENTRY(glm_vec3_minsub) TEST_ENTRY(glm_vec3_negate_to) TEST_ENTRY(glm_vec3_negate) TEST_ENTRY(glm_vec3_normalize) @@ -1738,6 +1750,12 @@ TEST_LIST { TEST_ENTRY(glm_vec4_muladds) TEST_ENTRY(glm_vec4_maxadd) TEST_ENTRY(glm_vec4_minadd) + TEST_ENTRY(glm_vec4_subsub) + TEST_ENTRY(glm_vec4_addsub) + TEST_ENTRY(glm_vec4_mulsub) + TEST_ENTRY(glm_vec4_mulsubs) + TEST_ENTRY(glm_vec4_maxsub) + TEST_ENTRY(glm_vec4_minsub) TEST_ENTRY(glm_vec4_negate_to) TEST_ENTRY(glm_vec4_negate) TEST_ENTRY(glm_vec4_normalize)