From afe5c76ebdc7053542dad8f31ca143d451d768d2 Mon Sep 17 00:00:00 2001 From: georges <> Date: Fri, 16 Feb 2001 22:40:24 +0000 Subject: [PATCH] sincos --- panda/src/linmath/cmath.I | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/panda/src/linmath/cmath.I b/panda/src/linmath/cmath.I index c7614c8136..e6865ce5a9 100644 --- a/panda/src/linmath/cmath.I +++ b/panda/src/linmath/cmath.I @@ -24,9 +24,9 @@ INLINE float ccos(float v) { INLINE void sincosf(float v, float *pSinResult, float *pCosResult) { -// msvc defines _M_IX86 for x86 -#ifdef _M_IX86 -#define fsincos __asm _emit 0xd9 __asm _emit 0xfb +// MS VC defines _M_IX86 for x86. gcc should define _X86_ +#if defined(_M_IX86) || defined(_X86_) +//#define fsincos_opcode __asm _emit 0xd9 __asm _emit 0xfb __asm { mov eax, pSinResult mov edx, pCosResult @@ -35,7 +35,6 @@ sincosf(float v, float *pSinResult, float *pCosResult) { fstp DWORD ptr [edx] fstp DWORD ptr [eax] } -#undef fsincos #else //!_X86_ *pSinResult = sinf(v); *pCosResult = cosf(v); @@ -44,8 +43,8 @@ sincosf(float v, float *pSinResult, float *pCosResult) { INLINE void sincos(double v, double *pSinResult, double *pCosResult) { -#ifdef _M_IX86 -#define sincos __asm _emit 0xd9 __asm _emit 0xfb +#if defined(_M_IX86) || defined(_X86_) +//#define fsincos_opcode __asm _emit 0xd9 __asm _emit 0xfb __asm { mov eax, pSinResult mov edx, pCosResult @@ -54,13 +53,20 @@ sincos(double v, double *pSinResult, double *pCosResult) { fstp QWORD ptr [edx] fstp QWORD ptr [eax] } -#undef sincos #else //!_X86_ *pSinResult = sin(v); *pCosResult = cos(v); #endif //!_X86_ } +INLINE void csincos(float v,float *pSinResult, float *pCosResult) { + sincosf(v,pSinResult,pCosResult); +} + +INLINE void csincos(double v,double *pSinResult, double *pCosResult) { + sincos(v,pSinResult,pCosResult); +} + INLINE float cabs(float v) { return fabs(v); }