port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

View File

@@ -0,0 +1,219 @@
unsigned int myrand()
{
static int i= 0;
i*= 78547803;
i+= 1747627;
return i;
}
#ifdef SUPERSMALL
extern "C" int _fltused;
int _fltused;
extern "C"
{
__declspec(naked) void _ftol2()
{
__asm
{
fistp DWORD PTR [esp-12]
mov eax, DWORD PTR [esp-12]
mov ecx, DWORD PTR [esp-8]
ret
}
}
__declspec(naked) void _ftol2_sse()
{
__asm
{
fistp DWORD PTR [esp-12]
mov eax, DWORD PTR [esp-12]
mov ecx, DWORD PTR [esp-8]
ret
}
}
}
#endif
extern "C" int ____security_cookie;
int ____security_cookie;
#ifdef SUPERSMALL
/*extern "C"
{
__declspec(naked) void _ftol2()
{
__asm
{
fistp DWORD PTR [esp-12]
mov eax, DWORD PTR [esp-12]
mov ecx, DWORD PTR [esp-8]
ret
}
}
__declspec(naked) void _ftol2_sse()
{
__asm
{
fistp DWORD PTR [esp-12]
mov eax, DWORD PTR [esp-12]
mov ecx, DWORD PTR [esp-8]
ret
}
}
}*/
float mypow( float a, float b)
{
// faster pow based on code by agner fog
__asm
{
fld b;
fld a;
// ftst;
// fstsw ax;
// sahf;
// jz zero;
fyl2x;
fist dword ptr [a];
sub esp, 12;
mov dword ptr [esp],0;
mov dword ptr [esp+4],0x80000000;
fisub dword ptr [a];
mov eax, dword ptr [a];
add eax, 0x3fff;
mov [esp+8], eax;
// jle underflow;
// cmp eax, 0x8000;
// jge overflow;
f2xm1;
fld1;
fadd;
fld tbyte ptr [esp];
add esp, 12;
fmul;
//jmp end;
// underflow:
// fstp st;
// fldz;
// add esp, 12;
// jmp end;
//overflow:
// push 0x7f800000;
// fstp st;
// fld dword ptr [esp];
// add esp, 16;
// jmp end;
//zero:
// fstp st(1);
//end:
}
//return st;
}
#endif
void mymemcpy(void* av_Dest_, const void* av_Src_, size_t ai_Size)
{
__asm mov esi, av_Src_
__asm mov edi, av_Dest_
__asm mov ecx, ai_Size
__asm rep movsb
}
void mymemset(void* dest, const char value, size_t ai_size)
{
__asm mov al, value
__asm mov edi, dest
__asm mov ecx, ai_size
__asm rep stosb
}
void mymemzero(void* dest, size_t ai_size)
{
__asm xor al, al
__asm mov edi, dest
__asm mov ecx, ai_size
__asm rep stosb
}
extern "C"
{
double __cdecl sin(double);
double __cdecl cos(double);
double __cdecl sqrt(double);
double __cdecl fabs(double);
void* __cdecl memcpy( void* dest, const void* src, size_t count );
}
#pragma intrinsic ( sin, cos, sqrt, fabs ) // true intrinsic
#pragma intrinsic ( memcpy ) // true intrinsic
/*
__forceinline double sin(double v)
{
__asm fld v;
__asm fsin;
__asm fstp v;
return v;
}
float cos(float v)
{
__asm fld v;
__asm fcos;
__asm fstp v;
return v;
}
*/
/*float sqrt(float v)
{
__asm finit;
__asm fld v;
__asm fsqrt;
__asm fstp v;
return v;
}*/
/*float abs(float X)
{
if(X < 0.0f)
return -X;
return X;
}*/
float maximum(float X, float Y)
{
if(X < Y)
return Y;
return X;
}
float minimum(float X, float Y)
{
if(X > Y)
return Y;
return X;
}
float signpow( float a, float b )
{
float fSign= ( a < 0.0f ? -1.0f : 1.0f );
return fSign * (float)mypow( (float)fabs( (float)a ), b );
}