This commit is contained in:
georges 2001-02-16 22:40:24 +00:00
parent 22c2a719c0
commit afe5c76ebd

View File

@ -24,9 +24,9 @@ INLINE float ccos(float v) {
INLINE void INLINE void
sincosf(float v, float *pSinResult, float *pCosResult) { sincosf(float v, float *pSinResult, float *pCosResult) {
// msvc defines _M_IX86 for x86 // MS VC defines _M_IX86 for x86. gcc should define _X86_
#ifdef _M_IX86 #if defined(_M_IX86) || defined(_X86_)
#define fsincos __asm _emit 0xd9 __asm _emit 0xfb //#define fsincos_opcode __asm _emit 0xd9 __asm _emit 0xfb
__asm { __asm {
mov eax, pSinResult mov eax, pSinResult
mov edx, pCosResult mov edx, pCosResult
@ -35,7 +35,6 @@ sincosf(float v, float *pSinResult, float *pCosResult) {
fstp DWORD ptr [edx] fstp DWORD ptr [edx]
fstp DWORD ptr [eax] fstp DWORD ptr [eax]
} }
#undef fsincos
#else //!_X86_ #else //!_X86_
*pSinResult = sinf(v); *pSinResult = sinf(v);
*pCosResult = cosf(v); *pCosResult = cosf(v);
@ -44,8 +43,8 @@ sincosf(float v, float *pSinResult, float *pCosResult) {
INLINE void INLINE void
sincos(double v, double *pSinResult, double *pCosResult) { sincos(double v, double *pSinResult, double *pCosResult) {
#ifdef _M_IX86 #if defined(_M_IX86) || defined(_X86_)
#define sincos __asm _emit 0xd9 __asm _emit 0xfb //#define fsincos_opcode __asm _emit 0xd9 __asm _emit 0xfb
__asm { __asm {
mov eax, pSinResult mov eax, pSinResult
mov edx, pCosResult mov edx, pCosResult
@ -54,13 +53,20 @@ sincos(double v, double *pSinResult, double *pCosResult) {
fstp QWORD ptr [edx] fstp QWORD ptr [edx]
fstp QWORD ptr [eax] fstp QWORD ptr [eax]
} }
#undef sincos
#else //!_X86_ #else //!_X86_
*pSinResult = sin(v); *pSinResult = sin(v);
*pCosResult = cos(v); *pCosResult = cos(v);
#endif //!_X86_ #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) { INLINE float cabs(float v) {
return fabs(v); return fabs(v);
} }