|
2 | 2 |
|
3 | 3 | #include "matrix4x4.hpp" |
4 | 4 | #include "functions.hpp" |
| 5 | +#include "functions_simd.hpp" |
5 | 6 |
|
6 | 7 | #include <limits> |
7 | 8 |
|
@@ -221,8 +222,7 @@ namespace ecm::math |
221 | 222 | template<typename U, typename> |
222 | 223 | constexpr Matrix4x4_Base<T>& Matrix4x4_Base<T>::operator*=(Matrix4x4_Base<U> const& m) |
223 | 224 | { |
224 | | - // TODO: Use this code: return (*this = *this * m); |
225 | | - return *this; |
| 225 | + return (*this = *this * m); |
226 | 226 | } |
227 | 227 |
|
228 | 228 | template<typename T> |
@@ -448,11 +448,10 @@ namespace ecm::math |
448 | 448 | typename Matrix4x4_Base<U>::column_type const sourceB3 = m2[3]; |
449 | 449 |
|
450 | 450 | Matrix4x4_Base<T> result; |
451 | | - // TODO: Implement this: |
452 | | - // result[0] = Fma(srca3, SplatW(srcb0), Fma(srca2, SplatZ(srcb0), Fma(srca1, SplatY(srcb0), srca0 * SplatX(srcb0)))); |
453 | | - // result[1] = Fma(srca3, SplatW(srcb1), Fma(srca2, SplatZ(srcb1), Fma(srca1, SplatY(srcb1), srca0 * SplatX(srcb1)))); |
454 | | - // result[2] = Fma(srca3, SplatW(srcb2), Fma(srca2, SplatZ(srcb2), Fma(srca1, SplatY(srcb2), srca0 * SplatX(srcb2)))); |
455 | | - // result[3] = Fma(srca3, SplatW(srcb3), Fma(srca2, SplatZ(srcb3), Fma(srca1, SplatY(srcb3), srca0 * SplatX(srcb3)))); |
| 451 | + result[0] = Fma(sourceA3, SplatW(sourceB0), Fma(sourceA2, SplatZ(sourceB0), Fma(sourceA1, SplatY(sourceB0), sourceA0 * SplatX(sourceB0)))); |
| 452 | + result[1] = Fma(sourceA3, SplatW(sourceB1), Fma(sourceA2, SplatZ(sourceB1), Fma(sourceA1, SplatY(sourceB1), sourceA0 * SplatX(sourceB1)))); |
| 453 | + result[2] = Fma(sourceA3, SplatW(sourceB2), Fma(sourceA2, SplatZ(sourceB2), Fma(sourceA1, SplatY(sourceB2), sourceA0 * SplatX(sourceB2)))); |
| 454 | + result[3] = Fma(sourceA3, SplatW(sourceB3), Fma(sourceA2, SplatZ(sourceB2), Fma(sourceA1, SplatY(sourceB3), sourceA0 * SplatX(sourceB3)))); |
456 | 455 | return result; |
457 | 456 | } |
458 | 457 | else |
|
0 commit comments