11#pragma once
22
3+ #if defined(__x86__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
4+ #define __VECTOR_MATH_ARCH_X86_X64
5+ #undef __VECTOR_MATH_ARCH_ARM
6+ #endif
7+
8+ #if defined(__arm__) || defined(__arm64__)
9+ #undef __VECTOR_MATH_ARCH_X86_X64
10+ #define __VECTOR_MATH_ARCH_ARM
11+ #endif
12+
313#if defined(__x86__) || defined(__x86_64__)
414 // do x64 stuff
515 #include < intrin.h>
@@ -36,7 +46,7 @@ namespace systems::leal::vector_math
3646 };
3747
3848 Matrix4f Matrix4f::operator *(const Matrix4f &rhs) const {
39- #if defined(__x86__) || defined(__x86_64__)
49+ #ifdef __VECTOR_MATH_ARCH_X86_X64
4050 Matrix4f toReturn;
4151 auto transposed = rhs.transpose ();
4252 alignas (float ) float result[4 ];
@@ -61,14 +71,14 @@ namespace systems::leal::vector_math
6171 plhs += 4 ;
6272 }
6373 return toReturn;
64- #elif defined(__arm__) || defined(__arm64__)
74+ #elif __VECTOR_MATH_ARCH_ARM
6575 auto toReturn = ((Matrix4<float > *)this )->operator *(rhs);
6676 return *(Matrix4f *)&toReturn;
6777 #endif
6878 }
6979
7080 Vector4f Matrix4f::operator *(const Vector4f &rhs) const {
71- #if defined(__x86__) || defined(__x86_64__)
81+ #ifdef __VECTOR_MATH_ARCH_X86_X64
7282 Vector4f toReturn;
7383 alignas (float ) float result[4 ];
7484
@@ -89,7 +99,7 @@ namespace systems::leal::vector_math
8999 plhs += 4 ;
90100 }
91101 return toReturn;
92- #elif defined(__arm__) || defined(__arm64__)
102+ #elif __VECTOR_MATH_ARCH_ARM
93103 auto toReturn = ((Matrix4<float > *)this )->operator *(rhs);
94104 return *(Vector4f *)&toReturn;
95105 #endif
0 commit comments