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:
parent
6685810faf
commit
637633ae5d
|
@ -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];
|
||||
|
|
10
src/3DMath.h
10
src/3DMath.h
|
@ -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
|
||||
|
|
|
@ -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 (
|
||||
|
|
Loading…
Reference in New Issue
Block a user