msvcp: Add _Dscale implementation.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
This commit is contained in:
Piotr Caban 2015-10-01 18:42:29 +02:00 committed by Alexandre Julliard
parent aa612612b7
commit 643ff988c4
11 changed files with 95 additions and 27 deletions

View File

@ -2891,14 +2891,14 @@
@ stub _Cosh
@ extern _Denorm
@ stub _Dnorm
@ stub _Dscale
@ cdecl _Dscale(ptr long)
@ cdecl _Dtest(ptr)
@ extern _Eps
@ stub _Exp
@ stub _FCosh
@ extern _FDenorm
@ stub _FDnorm
@ stub _FDscale
@ cdecl _FDscale(ptr long)
@ cdecl _FDtest(ptr)
@ extern _FEps
@ stub _FExp
@ -2919,7 +2919,7 @@
@ extern _Inf
@ stub _LCosh
@ extern _LDenorm
@ stub _LDscale
@ cdecl _LDscale(ptr long) _Dscale
@ cdecl _LDtest(ptr) _Dtest
@ extern _LEps
@ stub _LExp

View File

@ -3743,7 +3743,7 @@
@ stub _Dint
@ stub _Dnorm
@ cdecl _Do_call(ptr)
@ stub _Dscale
@ cdecl _Dscale(ptr long)
@ stub _Dtento
@ cdecl _Dtest(ptr)
@ stub _Dunscale
@ -3753,7 +3753,7 @@
@ extern _FDenorm
@ stub _FDint
@ stub _FDnorm
@ stub _FDscale
@ cdecl _FDscale(ptr long)
@ stub _FDtento
@ cdecl _FDtest(ptr)
@ stub _FDunscale
@ -3789,7 +3789,7 @@
@ stub _LCosh
@ extern _LDenorm
@ stub _LDint
@ stub _LDscale
@ cdecl _LDscale(ptr long) _Dscale
@ stub _LDtento
@ cdecl _LDtest(ptr) _Dtest
@ stub _LDunscale

View File

@ -3684,7 +3684,7 @@
@ stub _Dint
@ stub _Dnorm
@ cdecl _Do_call(ptr)
@ stub _Dscale
@ cdecl _Dscale(ptr long)
@ stub _Dtento
@ cdecl _Dtest(ptr)
@ stub _Dunscale
@ -3694,7 +3694,7 @@
@ extern _FDenorm
@ stub _FDint
@ stub _FDnorm
@ stub _FDscale
@ cdecl _FDscale(ptr long)
@ stub _FDtento
@ cdecl _FDtest(ptr)
@ stub _FDunscale
@ -3732,7 +3732,7 @@
@ stub _LCosh
@ extern _LDenorm
@ stub _LDint
@ stub _LDscale
@ cdecl _LDscale(ptr long) _Dscale
@ stub _LDtento
@ cdecl _LDtest(ptr) _Dtest
@ stub _LDunscale

View File

@ -86,6 +86,7 @@ static void (CDECL *p__Call_once)(int *once, void (CDECL *func)(void));
static void (CDECL *p__Call_onceEx)(int *once, void (CDECL *func)(void*), void *argv);
static void (CDECL *p__Do_call)(void *this);
static short (__cdecl *p__Dtest)(double *d);
static short (__cdecl *p__Dscale)(double *d, int exp);
/* filesystem */
static ULONGLONG(__cdecl *p_tr2_sys__File_size)(char const*);
@ -139,6 +140,8 @@ static BOOL init(void)
"_Do_call");
SET(p__Dtest,
"_Dtest");
SET(p__Dscale,
"_Dscale");
if(sizeof(void*) == 8) { /* 64-bit initialization */
SET(p_tr2_sys__File_size,
"?_File_size@sys@tr2@std@@YA_KPEBD@Z");
@ -461,6 +464,56 @@ static void test__Dtest(void)
ok(ret == FP_NAN, "_Dtest(NAN) returned %x\n", ret);
}
static void test__Dscale(void)
{
double d;
short ret;
d = 0;
ret = p__Dscale(&d, 0);
ok(d == 0, "d = %f\n", d);
ok(ret == FP_ZERO, "ret = %x\n", ret);
d = 0;
ret = p__Dscale(&d, 1);
ok(d == 0, "d = %f\n", d);
ok(ret == FP_ZERO, "ret = %x\n", ret);
d = 0;
ret = p__Dscale(&d, -1);
ok(d == 0, "d = %f\n", d);
ok(ret == FP_ZERO, "ret = %x\n", ret);
d = 1;
ret = p__Dscale(&d, 0);
ok(d == 1, "d = %f\n", d);
ok(ret == FP_NORMAL, "ret = %x\n", ret);
d = 1;
ret = p__Dscale(&d, 1);
ok(d == 2, "d = %f\n", d);
ok(ret == FP_NORMAL, "ret = %x\n", ret);
d = 1;
ret = p__Dscale(&d, -1);
ok(d == 0.5, "d = %f\n", d);
ok(ret == FP_NORMAL, "ret = %x\n", ret);
d = 1;
ret = p__Dscale(&d, -99999);
ok(d == 0, "d = %f\n", d);
ok(ret == FP_ZERO, "ret = %x\n", ret);
d = 1;
ret = p__Dscale(&d, 999999);
ok(d == INFINITY, "d = %f\n", d);
ok(ret == FP_INFINITE, "ret = %x\n", ret);
d = NAN;
ret = p__Dscale(&d, 1);
ok(ret == FP_NAN, "ret = %x\n", ret);
}
static void test_tr2_sys__File_size(void)
{
ULONGLONG val;
@ -1001,6 +1054,7 @@ START_TEST(msvcp120)
test__Call_once();
test__Do_call();
test__Dtest();
test__Dscale();
test_tr2_sys__File_size();
test_tr2_sys__Equivalent();

View File

@ -3684,7 +3684,7 @@
@ stub _Dint
@ stub _Dnorm
@ cdecl _Do_call(ptr) msvcp120._Do_call
@ stub _Dscale
@ cdecl _Dscale(ptr long) msvcp120._Dscale
@ stub _Dtento
@ cdecl _Dtest(ptr) msvcp120._Dtest
@ stub _Dunscale
@ -3694,7 +3694,7 @@
@ extern _FDenorm msvcp120._FDenorm
@ stub _FDint
@ stub _FDnorm
@ stub _FDscale
@ cdecl _FDscale(ptr long) msvcp120._FDscale
@ stub _FDtento
@ cdecl _FDtest(ptr) msvcp120._FDtest
@ stub _FDunscale
@ -3732,7 +3732,7 @@
@ stub _LCosh
@ extern _LDenorm msvcp120._LDenorm
@ stub _LDint
@ stub _LDscale
@ cdecl _LDscale(ptr long) msvcp120._LDscale
@ stub _LDtento
@ cdecl _LDtest(ptr) msvcp120._LDtest
@ stub _LDunscale

View File

@ -4257,14 +4257,14 @@
@ stub _Cosh
@ extern _Denorm _Denorm
@ stub _Dnorm
@ stub _Dscale
@ cdecl _Dscale(ptr long)
@ cdecl _Dtest(ptr)
@ extern _Eps _Eps
@ stub _Exp
@ stub _FCosh
@ extern _FDenorm _FDenorm
@ stub _FDnorm
@ stub _FDscale
@ cdecl _FDscale(ptr long)
@ cdecl _FDtest(ptr)
@ extern _FEps _FEps
@ stub _FExp
@ -4281,7 +4281,7 @@
@ extern _Inf _Inf
@ stub _LCosh
@ extern _LDenorm _LDenorm
@ stub _LDscale
@ cdecl _LDscale(ptr long) _Dscale
@ cdecl _LDtest(ptr) _Dtest
@ extern _LEps _LEps
@ stub _LExp

View File

@ -5043,14 +5043,14 @@
@ stub _Cosh
@ extern _Denorm
@ stub _Dnorm
@ stub _Dscale
@ cdecl _Dscale(ptr long)
@ cdecl _Dtest(ptr)
@ extern _Eps
@ stub _Exp
@ stub _FCosh
@ extern _FDenorm
@ stub _FDnorm
@ stub _FDscale
@ cdecl _FDscale(ptr long)
@ cdecl _FDtest(ptr)
@ extern _FEps
@ stub _FExp
@ -5068,7 +5068,7 @@
@ extern _Inf
@ stub _LCosh
@ extern _LDenorm
@ stub _LDscale
@ cdecl _LDscale(ptr long) _Dscale
@ cdecl _LDtest(ptr) _Dtest
@ extern _LEps
@ stub _LExp

View File

@ -5097,14 +5097,14 @@
@ stub _Cosh
@ extern _Denorm
@ stub _Dnorm
@ stub _Dscale
@ cdecl _Dscale(ptr long)
@ cdecl _Dtest(ptr)
@ extern _Eps
@ stub _Exp
@ stub _FCosh
@ extern _FDenorm
@ stub _FDnorm
@ stub _FDscale
@ cdecl _FDscale(ptr long)
@ cdecl _FDtest(ptr)
@ extern _FEps
@ stub _FExp
@ -5124,7 +5124,7 @@
@ extern _Inf
@ stub _LCosh
@ extern _LDenorm
@ stub _LDscale
@ cdecl _LDscale(ptr long) _Dscale
@ cdecl _LDtest(ptr) _Dtest
@ extern _LEps
@ stub _LExp

View File

@ -5703,7 +5703,7 @@
@ stub _Cosh
@ extern _Denorm
@ stub _Dnorm
@ stub _Dscale
@ cdecl _Dscale(ptr long)
@ stub _Dtentox
@ cdecl _Dtest(ptr)
@ stub _Dunscale
@ -5712,7 +5712,7 @@
@ stub _FCosh
@ extern _FDenorm
@ stub _FDnorm
@ stub _FDscale
@ cdecl _FDscale(ptr long)
@ stub _FDtentox
@ cdecl _FDtest(ptr)
@ stub _FDunscale
@ -5734,7 +5734,7 @@
@ extern _Inf
@ stub _LCosh
@ extern _LDenorm
@ stub _LDscale
@ cdecl _LDscale(ptr long) _Dscale
@ stub _LDtentox
@ cdecl _LDtest(ptr) _Dtest
@ stub _LDunscale

View File

@ -2260,3 +2260,17 @@ short __cdecl _FDtest(float *x)
{
return dclass(*x);
}
/* _Dscale */
short __cdecl _Dscale(double *x, int exp)
{
*x *= pow(2, exp);
return dclass(*x);
}
/* _FDscale */
short __cdecl _FDscale(float *x, int exp)
{
*x *= pow(2, exp);
return dclass(*x);
}

View File

@ -6479,14 +6479,14 @@
@ stub _Cosh
@ extern _Denorm
@ stub _Dnorm
@ stub _Dscale
@ cdecl _Dscale(ptr long)
@ cdecl _Dtest(ptr)
@ extern _Eps
@ stub _Exp
@ stub _FCosh
@ extern _FDenorm
@ stub _FDnorm
@ stub _FDscale
@ cdecl _FDscale(ptr long)
@ cdecl _FDtest(ptr)
@ extern _FEps
@ stub _FExp
@ -6506,7 +6506,7 @@
@ extern _Inf
@ stub _LCosh
@ extern _LDenorm
@ stub _LDscale
@ cdecl _LDscale(ptr long) _Dscale
@ cdecl _LDtest(ptr) _Dtest
@ extern _LEps
@ stub _LExp