1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

arm asm: add MultMatrix2 without memcpy

Unlike the C function of MultMatrix neon asm writes m0 only after
calculation.
This commit is contained in:
gizmo98 2017-03-15 21:59:13 +01:00 committed by Sergey Lipskiy
parent 6685810faf
commit 637633ae5d
3 changed files with 14 additions and 8 deletions

View File

@ -13,6 +13,13 @@ void MultMatrix(float m0[4][4], float m1[4][4], float dest[4][4])
}
}
void MultMatrix2(float m0[4][4], float m1[4][4])
{
float dst[4][4];
MultMatrix(m0, m1, dst);
memcpy( m0, dst, sizeof(float) * 16 );
}
void TransformVectorNormalize(float vec[3], float mtx[4][4])
{
float vres[3];

View File

@ -3,19 +3,13 @@
#include <memory.h>
#include <string.h>
void MultMatrix( float m0[4][4], float m1[4][4], float dest[4][4]);
void MultMatrix(float m0[4][4], float m1[4][4], float dest[4][4]);
void MultMatrix2(float m0[4][4], float m1[4][4]);
void TransformVectorNormalize(float vec[3], float mtx[4][4]);
void InverseTransformVectorNormalize(float src[3], float dst[3], float mtx[4][4]);
void Normalize(float v[3]);
float DotProduct(const float v0[3], const float v1[3]);
inline void MultMatrix2(float m0[4][4], float m1[4][4])
{
float dst[4][4];
MultMatrix(m0, m1, dst);
memcpy( m0, dst, sizeof(float) * 16 );
}
inline void CopyMatrix( float m0[4][4], float m1[4][4] )
{
#ifdef WIN32_ASM

View File

@ -38,6 +38,11 @@ void MultMatrix( float m0[4][4], float m1[4][4], float dest[4][4])
);
}
void MultMatrix2(float m0[4][4], float m1[4][4])
{
MultMatrix(m0, m1, m0);
}
void TransformVectorNormalize(float vec[3], float mtx[4][4])
{
asm volatile (