vcomp: Implement atomic double functions.

This commit is contained in:
Sebastian Lackner 2015-07-27 01:38:52 +02:00 committed by Alexandre Julliard
parent c14db31b9b
commit 36fe1f8a82
4 changed files with 56 additions and 12 deletions

View File

@ -330,6 +330,50 @@ void CDECL _vcomp_atomic_sub_r4(float *dest, float val)
while (interlocked_cmpxchg((int *)dest, new, old) != old);
}
void CDECL _vcomp_atomic_add_r8(double *dest, double val)
{
LONG64 old, new;
do
{
old = *(LONG64 *)dest;
*(double *)&new = *(double *)&old + val;
}
while (interlocked_cmpxchg64((LONG64 *)dest, new, old) != old);
}
void CDECL _vcomp_atomic_div_r8(double *dest, double val)
{
LONG64 old, new;
do
{
old = *(LONG64 *)dest;
*(double *)&new = *(double *)&old / val;
}
while (interlocked_cmpxchg64((LONG64 *)dest, new, old) != old);
}
void CDECL _vcomp_atomic_mul_r8(double *dest, double val)
{
LONG64 old, new;
do
{
old = *(LONG64 *)dest;
*(double *)&new = *(double *)&old * val;
}
while (interlocked_cmpxchg64((LONG64 *)dest, new, old) != old);
}
void CDECL _vcomp_atomic_sub_r8(double *dest, double val)
{
LONG64 old, new;
do
{
old = *(LONG64 *)dest;
*(double *)&new = *(double *)&old - val;
}
while (interlocked_cmpxchg64((LONG64 *)dest, new, old) != old);
}
int CDECL omp_get_dynamic(void)
{
TRACE("stub\n");

View File

@ -3,7 +3,7 @@
@ cdecl _vcomp_atomic_add_i4(ptr long)
@ stub _vcomp_atomic_add_i8
@ cdecl _vcomp_atomic_add_r4(ptr float)
@ stub _vcomp_atomic_add_r8
@ cdecl _vcomp_atomic_add_r8(ptr double)
@ stub _vcomp_atomic_and_i1
@ stub _vcomp_atomic_and_i2
@ cdecl _vcomp_atomic_and_i4(ptr long)
@ -13,7 +13,7 @@
@ cdecl _vcomp_atomic_div_i4(ptr long)
@ stub _vcomp_atomic_div_i8
@ cdecl _vcomp_atomic_div_r4(ptr float)
@ stub _vcomp_atomic_div_r8
@ cdecl _vcomp_atomic_div_r8(ptr double)
@ stub _vcomp_atomic_div_ui1
@ stub _vcomp_atomic_div_ui2
@ cdecl _vcomp_atomic_div_ui4(ptr long)
@ -23,7 +23,7 @@
@ cdecl _vcomp_atomic_mul_i4(ptr long)
@ stub _vcomp_atomic_mul_i8
@ cdecl _vcomp_atomic_mul_r4(ptr float)
@ stub _vcomp_atomic_mul_r8
@ cdecl _vcomp_atomic_mul_r8(ptr double)
@ stub _vcomp_atomic_or_i1
@ stub _vcomp_atomic_or_i2
@ cdecl _vcomp_atomic_or_i4(ptr long)
@ -45,7 +45,7 @@
@ cdecl _vcomp_atomic_sub_i4(ptr long)
@ stub _vcomp_atomic_sub_i8
@ cdecl _vcomp_atomic_sub_r4(ptr float)
@ stub _vcomp_atomic_sub_r8
@ cdecl _vcomp_atomic_sub_r8(ptr double)
@ stub _vcomp_atomic_xor_i1
@ stub _vcomp_atomic_xor_i2
@ cdecl _vcomp_atomic_xor_i4(ptr long)

View File

@ -3,7 +3,7 @@
@ cdecl _vcomp_atomic_add_i4(ptr long) vcomp._vcomp_atomic_add_i4
@ stub _vcomp_atomic_add_i8
@ cdecl _vcomp_atomic_add_r4(ptr float) vcomp._vcomp_atomic_add_r4
@ stub _vcomp_atomic_add_r8
@ cdecl _vcomp_atomic_add_r8(ptr double) vcomp._vcomp_atomic_add_r8
@ stub _vcomp_atomic_and_i1
@ stub _vcomp_atomic_and_i2
@ cdecl _vcomp_atomic_and_i4(ptr long) vcomp._vcomp_atomic_and_i4
@ -13,7 +13,7 @@
@ cdecl _vcomp_atomic_div_i4(ptr long) vcomp._vcomp_atomic_div_i4
@ stub _vcomp_atomic_div_i8
@ cdecl _vcomp_atomic_div_r4(ptr float) vcomp._vcomp_atomic_div_r4
@ stub _vcomp_atomic_div_r8
@ cdecl _vcomp_atomic_div_r8(ptr double) vcomp._vcomp_atomic_div_r8
@ stub _vcomp_atomic_div_ui1
@ stub _vcomp_atomic_div_ui2
@ cdecl _vcomp_atomic_div_ui4(ptr long) vcomp._vcomp_atomic_div_ui4
@ -23,7 +23,7 @@
@ cdecl _vcomp_atomic_mul_i4(ptr long) vcomp._vcomp_atomic_mul_i4
@ stub _vcomp_atomic_mul_i8
@ cdecl _vcomp_atomic_mul_r4(ptr float) vcomp._vcomp_atomic_mul_r4
@ stub _vcomp_atomic_mul_r8
@ cdecl _vcomp_atomic_mul_r8(ptr double) vcomp._vcomp_atomic_mul_r8
@ stub _vcomp_atomic_or_i1
@ stub _vcomp_atomic_or_i2
@ cdecl _vcomp_atomic_or_i4(ptr long) vcomp._vcomp_atomic_or_i4
@ -45,7 +45,7 @@
@ cdecl _vcomp_atomic_sub_i4(ptr long) vcomp._vcomp_atomic_sub_i4
@ stub _vcomp_atomic_sub_i8
@ cdecl _vcomp_atomic_sub_r4(ptr float) vcomp._vcomp_atomic_sub_r4
@ stub _vcomp_atomic_sub_r8
@ cdecl _vcomp_atomic_sub_r8(ptr double) vcomp._vcomp_atomic_sub_r8
@ stub _vcomp_atomic_xor_i1
@ stub _vcomp_atomic_xor_i2
@ cdecl _vcomp_atomic_xor_i4(ptr long) vcomp._vcomp_atomic_xor_i4

View File

@ -3,7 +3,7 @@
@ cdecl _vcomp_atomic_add_i4(ptr long) vcomp._vcomp_atomic_add_i4
@ stub _vcomp_atomic_add_i8
@ cdecl _vcomp_atomic_add_r4(ptr float) vcomp._vcomp_atomic_add_r4
@ stub _vcomp_atomic_add_r8
@ cdecl _vcomp_atomic_add_r8(ptr double) vcomp._vcomp_atomic_add_r8
@ stub _vcomp_atomic_and_i1
@ stub _vcomp_atomic_and_i2
@ cdecl _vcomp_atomic_and_i4(ptr long) vcomp._vcomp_atomic_and_i4
@ -13,7 +13,7 @@
@ cdecl _vcomp_atomic_div_i4(ptr long) vcomp._vcomp_atomic_div_i4
@ stub _vcomp_atomic_div_i8
@ cdecl _vcomp_atomic_div_r4(ptr float) vcomp._vcomp_atomic_div_r4
@ stub _vcomp_atomic_div_r8
@ cdecl _vcomp_atomic_div_r8(ptr double) vcomp._vcomp_atomic_div_r8
@ stub _vcomp_atomic_div_ui1
@ stub _vcomp_atomic_div_ui2
@ cdecl _vcomp_atomic_div_ui4(ptr long) vcomp._vcomp_atomic_div_ui4
@ -23,7 +23,7 @@
@ cdecl _vcomp_atomic_mul_i4(ptr long) vcomp._vcomp_atomic_mul_i4
@ stub _vcomp_atomic_mul_i8
@ cdecl _vcomp_atomic_mul_r4(ptr float) vcomp._vcomp_atomic_mul_r4
@ stub _vcomp_atomic_mul_r8
@ cdecl _vcomp_atomic_mul_r8(ptr double) vcomp._vcomp_atomic_mul_r8
@ stub _vcomp_atomic_or_i1
@ stub _vcomp_atomic_or_i2
@ cdecl _vcomp_atomic_or_i4(ptr long) vcomp._vcomp_atomic_or_i4
@ -45,7 +45,7 @@
@ cdecl _vcomp_atomic_sub_i4(ptr long) vcomp._vcomp_atomic_sub_i4
@ stub _vcomp_atomic_sub_i8
@ cdecl _vcomp_atomic_sub_r4(ptr float) vcomp._vcomp_atomic_sub_r4
@ stub _vcomp_atomic_sub_r8
@ cdecl _vcomp_atomic_sub_r8(ptr double) vcomp._vcomp_atomic_sub_r8
@ stub _vcomp_atomic_xor_i1
@ stub _vcomp_atomic_xor_i2
@ cdecl _vcomp_atomic_xor_i4(ptr long) vcomp._vcomp_atomic_xor_i4