ReactOS 0.4.16-dev-983-g23ad936
stubs.c
Go to the documentation of this file.
1
2#include <stdint.h>
3#include <intrin.h>
4#include <malloc.h>
5#define _USE_MATH_DEFINES
6#include <math.h>
7
8// atexit is needed by libsupc++
9extern int __cdecl _crt_atexit(void (__cdecl*)(void));
10int __cdecl atexit(void (__cdecl* function)(void))
11{
12 return _crt_atexit(function);
13}
14
16{
17 return malloc(size);
18}
19
20void _cdecl operator_delete(void *mem)
21{
22 free(mem);
23}
24
25#ifdef _M_IX86
26void _chkesp_failed(void)
27{
29}
30#endif
31
33{
34 return 0;
35}
36
37// The following stubs cannot be implemented as stubs by spec2def, because they are intrinsics
38
39#ifdef _MSC_VER
40#pragma warning(disable:4163) // not available as an intrinsic function
41#pragma warning(disable:4164) // intrinsic function not declared
42#pragma function(fma)
43#pragma function(fmaf)
44#pragma function(log2)
45#pragma function(log2f)
46#pragma function(lrint)
47#pragma function(lrintf)
48#endif
49
50double fma(double x, double y, double z)
51{
52 // Simplistic implementation
53 return (x * y) + z;
54}
55
56float fmaf(float x, float y, float z)
57{
58 // Simplistic implementation
59 return (x * y) + z;
60}
61
62double log2(double x)
63{
64 // Simplistic implementation: log2(x) = log(x) / log(2)
65 return log(x) * M_LOG2E;
66}
67
68float log2f(float x)
69{
70 return (float)log2((double)x);
71}
72
73long int lrint(double x)
74{
76 return 0;
77}
78
79long int lrintf(float x)
80{
82 return 0;
83}
#define __cdecl
Definition: accygwin.h:79
#define M_LOG2E
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
double log2(double x)
Definition: stubs.c:62
int __cdecl _crt_atexit(void(__cdecl *)(void))
Definition: onexit.cpp:41
long int lrintf(float x)
Definition: stubs.c:79
float log2f(float x)
Definition: stubs.c:68
int __cdecl __acrt_initialize_sse2(void)
Definition: stubs.c:32
int __cdecl atexit(void(__cdecl *function)(void))
Definition: stubs.c:10
float fmaf(float x, float y, float z)
Definition: stubs.c:56
void *__cdecl operator_new(size_t size)
Definition: stubs.c:15
double fma(double x, double y, double z)
Definition: stubs.c:50
long int lrint(double x)
Definition: stubs.c:73
void _cdecl operator_delete(void *mem)
Definition: stubs.c:20
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLsizeiptr size
Definition: glext.h:5919
GLdouble GLdouble z
Definition: glext.h:5874
void __cdecl __debugbreak(void)
Definition: intrin_ppc.h:698
#define log(outFile, fmt,...)
Definition: util.h:15
Definition: mem.c:349