Rebase against 9c98d632779862aae15e9e3a25f59065fae03386.

[mmsystem.dll16-Fix_Argument_Order]
Removed patch to fix argument order in GlobalAlloc16 call (accepted upstream).

[msvideo-MCIWNDM_SETTIMEFORMATA]
Removed patch to translate 16 bit address in lparam for MCIWNDM_SETTIMEFORMATA
message (accepted upstream).

[vcomp-Atomic_I8]
Removed patch to implement 64-bit atomic instructions in OpenMP (accepted
upstream).

[wined3d-CSMT_Main]
Temporarily disable patchset, needs rebasing.
This commit is contained in:
Sebastian Lackner 2016-02-10 19:06:04 +01:00
parent bca995cef8
commit b7ac6188f9
11 changed files with 43 additions and 1313 deletions

View File

@ -1,25 +0,0 @@
From f1183d4c50ba5fc854873bdc8a6c96ace56a2e00 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 8 Feb 2016 03:24:47 +0100
Subject: mmsystem.dll16: Fix argument order in GlobalAlloc16 call.
---
dlls/mmsystem.dll16/mmsystem.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/mmsystem.dll16/mmsystem.c b/dlls/mmsystem.dll16/mmsystem.c
index fdf1318..d90240d 100644
--- a/dlls/mmsystem.dll16/mmsystem.c
+++ b/dlls/mmsystem.dll16/mmsystem.c
@@ -1943,7 +1943,7 @@ LRESULT WINAPI mmThreadCreate16(FARPROC16 fpThreadAddr, LPHANDLE16 lpHndl, DWORD
TRACE("(%p, %p, %08x, %08x)!\n", fpThreadAddr, lpHndl, dwPmt, dwFlags);
- hndl = GlobalAlloc16(sizeof(WINE_MMTHREAD), GMEM_SHARE|GMEM_ZEROINIT);
+ hndl = GlobalAlloc16(GMEM_SHARE|GMEM_ZEROINIT, sizeof(WINE_MMTHREAD));
if (hndl == 0) {
ret = 2;
--
2.7.0

View File

@ -1,28 +0,0 @@
From 3e131a30d2f1b69de3c378b54f82f03f45bba6bb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 6 Feb 2016 02:24:05 +0100
Subject: msvideo.dll16: Translate 16 bit address in MCIWNDM_SETTIMEFORMATA
command.
---
dlls/msvideo.dll16/msvideo16.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/dlls/msvideo.dll16/msvideo16.c b/dlls/msvideo.dll16/msvideo16.c
index 1b715e4..f39b52d 100644
--- a/dlls/msvideo.dll16/msvideo16.c
+++ b/dlls/msvideo.dll16/msvideo16.c
@@ -991,6 +991,10 @@ static LRESULT WINAPI MCIWndProc16(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp
lparam = (ULONG_PTR)MapSL(lparam);
break;
+ case MCIWNDM_SETTIMEFORMATA:
+ lparam = (ULONG_PTR)MapSL(lparam);
+ break;
+
default:
break;
}
--
2.7.0

View File

@ -1 +0,0 @@
Fixes: Translate 16 bit address in MCIWNDM_SETTIMEFORMATA MCIWndProc16 command

View File

@ -1,16 +1,16 @@
From 37837138f0124582ae9af34643710d619b5b48bc Mon Sep 17 00:00:00 2001
From d9e16cb2bde3371d403da8dbbc2c7d63b9a29a27 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 16 Mar 2015 03:46:36 +0100
Subject: ntdll: Fix return value for missing
ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION key.
---
dlls/kernel32/tests/actctx.c | 68 ++++++++++++++++----------------------------
dlls/ntdll/actctx.c | 3 ++
2 files changed, 27 insertions(+), 44 deletions(-)
dlls/kernel32/tests/actctx.c | 36 ++++++++++++++++--------------------
dlls/ntdll/actctx.c | 3 +++
2 files changed, 19 insertions(+), 20 deletions(-)
diff --git a/dlls/kernel32/tests/actctx.c b/dlls/kernel32/tests/actctx.c
index 7512aed..6d5f2da 100644
index af3dadf..b68c895 100644
--- a/dlls/kernel32/tests/actctx.c
+++ b/dlls/kernel32/tests/actctx.c
@@ -2067,7 +2067,7 @@ static HANDLE create_manifest(const char *filename, const char *data, int line)
@ -22,39 +22,23 @@ index 7512aed..6d5f2da 100644
{
UNICODE_STRING string_to_findW;
ACTCTX_SECTION_KEYED_DATA data;
@@ -2084,13 +2084,8 @@ static void kernel32_find(ULONG section, const char *string_to_find, BOOL should
@@ -2084,7 +2084,6 @@ static void kernel32_find(ULONG section, const char *string_to_find, BOOL should
err = GetLastError();
ok_(__FILE__, line)(ret == should_find,
"FindActCtxSectionStringA: expected ret = %u, got %u\n", should_find, ret);
- if (todo)
- todo_wine
- ok_(__FILE__, line)(err == (should_find ? ERROR_SUCCESS : ERROR_SXS_KEY_NOT_FOUND),
- "FindActCtxSectionStringA: unexpected error %u\n", err);
- else
- ok_(__FILE__, line)(err == (should_find ? ERROR_SUCCESS : ERROR_SXS_KEY_NOT_FOUND),
- "FindActCtxSectionStringA: unexpected error %u\n", err);
+ ok_(__FILE__, line)(err == (should_find ? ERROR_SUCCESS : ERROR_SXS_KEY_NOT_FOUND),
+ "FindActCtxSectionStringA: unexpected error %u\n", err);
- todo_wine_if(todo)
ok_(__FILE__, line)(err == (should_find ? ERROR_SUCCESS : ERROR_SXS_KEY_NOT_FOUND),
"FindActCtxSectionStringA: unexpected error %u\n", err);
memset(&data, 0xfe, sizeof(data));
data.cbSize = sizeof(data);
@@ -2100,13 +2095,8 @@ static void kernel32_find(ULONG section, const char *string_to_find, BOOL should
@@ -2096,7 +2095,6 @@ static void kernel32_find(ULONG section, const char *string_to_find, BOOL should
err = GetLastError();
ok_(__FILE__, line)(ret == should_find,
"FindActCtxSectionStringW: expected ret = %u, got %u\n", should_find, ret);
- if (todo)
- todo_wine
- ok_(__FILE__, line)(err == (should_find ? ERROR_SUCCESS : ERROR_SXS_KEY_NOT_FOUND),
- "FindActCtxSectionStringW: unexpected error %u\n", err);
- else
- ok_(__FILE__, line)(err == (should_find ? ERROR_SUCCESS : ERROR_SXS_KEY_NOT_FOUND),
- "FindActCtxSectionStringW: unexpected error %u\n", err);
+ ok_(__FILE__, line)(err == (should_find ? ERROR_SUCCESS : ERROR_SXS_KEY_NOT_FOUND),
+ "FindActCtxSectionStringW: unexpected error %u\n", err);
- todo_wine_if(todo)
ok_(__FILE__, line)(err == (should_find ? ERROR_SUCCESS : ERROR_SXS_KEY_NOT_FOUND),
"FindActCtxSectionStringW: unexpected error %u\n", err);
SetLastError(0);
ret = pFindActCtxSectionStringA(0, NULL, section, string_to_find, NULL);
@@ -2127,7 +2117,7 @@ static void kernel32_find(ULONG section, const char *string_to_find, BOOL should
@@ -2119,7 +2117,7 @@ static void kernel32_find(ULONG section, const char *string_to_find, BOOL should
pRtlFreeUnicodeString(&string_to_findW);
}
@ -63,34 +47,20 @@ index 7512aed..6d5f2da 100644
{
UNICODE_STRING string_to_findW;
ACTCTX_SECTION_KEYED_DATA data;
@@ -2139,22 +2129,12 @@ static void ntdll_find(ULONG section, const char *string_to_find, BOOL should_fi
@@ -2131,12 +2129,10 @@ static void ntdll_find(ULONG section, const char *string_to_find, BOOL should_fi
data.cbSize = sizeof(data);
ret = pRtlFindActivationContextSectionString(0, NULL, section, &string_to_findW, &data);
- if (todo)
- todo_wine
- ok_(__FILE__, line)(ret == (should_find ? STATUS_SUCCESS : STATUS_SXS_KEY_NOT_FOUND),
- "RtlFindActivationContextSectionString: unexpected status 0x%x\n", ret);
- else
- ok_(__FILE__, line)(ret == (should_find ? STATUS_SUCCESS : STATUS_SXS_KEY_NOT_FOUND),
- "RtlFindActivationContextSectionString: unexpected status 0x%x\n", ret);
+ ok_(__FILE__, line)(ret == (should_find ? STATUS_SUCCESS : STATUS_SXS_KEY_NOT_FOUND),
+ "RtlFindActivationContextSectionString: unexpected status 0x%x\n", ret);
- todo_wine_if(todo)
ok_(__FILE__, line)(ret == (should_find ? STATUS_SUCCESS : STATUS_SXS_KEY_NOT_FOUND),
"RtlFindActivationContextSectionString: unexpected status 0x%x\n", ret);
ret = pRtlFindActivationContextSectionString(0, NULL, section, &string_to_findW, NULL);
- if (todo)
- todo_wine
- ok_(__FILE__, line)(ret == (should_find ? STATUS_SUCCESS : STATUS_SXS_KEY_NOT_FOUND),
- "RtlFindActivationContextSectionString: unexpected status 0x%x\n", ret);
- else
- ok_(__FILE__, line)(ret == (should_find ? STATUS_SUCCESS : STATUS_SXS_KEY_NOT_FOUND),
- "RtlFindActivationContextSectionString: unexpected status 0x%x\n", ret);
+ ok_(__FILE__, line)(ret == (should_find ? STATUS_SUCCESS : STATUS_SXS_KEY_NOT_FOUND),
+ "RtlFindActivationContextSectionString: unexpected status 0x%x\n", ret);
- todo_wine_if(todo)
ok_(__FILE__, line)(ret == (should_find ? STATUS_SUCCESS : STATUS_SXS_KEY_NOT_FOUND),
"RtlFindActivationContextSectionString: unexpected status 0x%x\n", ret);
pRtlFreeUnicodeString(&string_to_findW);
}
@@ -2170,22 +2150,22 @@ static void test_findsectionstring(void)
@@ -2154,22 +2150,22 @@ static void test_findsectionstring(void)
ok(ret, "ActivateActCtx failed: %u\n", GetLastError());
/* first we show the parameter validation from kernel32 */
@ -128,10 +98,10 @@ index 7512aed..6d5f2da 100644
ret = pDeactivateActCtx(0, cookie);
ok(ret, "DeactivateActCtx failed: %u\n", GetLastError());
diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c
index 638daac..08f5b04 100644
index 4aa1a72..8957fad 100644
--- a/dlls/ntdll/actctx.c
+++ b/dlls/ntdll/actctx.c
@@ -4432,6 +4432,9 @@ static NTSTATUS find_string(ACTIVATION_CONTEXT* actctx, ULONG section_kind,
@@ -4431,6 +4431,9 @@ static NTSTATUS find_string(ACTIVATION_CONTEXT* actctx, ULONG section_kind,
switch (section_kind)
{
@ -142,5 +112,5 @@ index 638daac..08f5b04 100644
status = find_dll_redirection(actctx, section_name, data);
break;
--
2.3.2
2.7.0

View File

@ -1,4 +1,4 @@
From 090cf9addeea643d624b4b7c3a6b0fbc04c9c253 Mon Sep 17 00:00:00 2001
From 297d030a4189ce937662004426e21990e4736d25 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 28 Sep 2014 23:39:51 +0200
Subject: ntdll: OutputDebugString should throw the exception a second time, if
@ -6,8 +6,8 @@ Subject: ntdll: OutputDebugString should throw the exception a second time, if
---
dlls/kernel32/debugger.c | 17 +++++++++++++++++
dlls/ntdll/tests/exception.c | 19 +++++++------------
2 files changed, 24 insertions(+), 12 deletions(-)
dlls/ntdll/tests/exception.c | 11 +++++------
2 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/dlls/kernel32/debugger.c b/dlls/kernel32/debugger.c
index d4d66b2..981661b 100644
@ -38,10 +38,10 @@ index d4d66b2..981661b 100644
if (!mutex_inited)
{
diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c
index 98d73f4..f9dd95d 100644
index fc68ea5..693859d 100644
--- a/dlls/ntdll/tests/exception.c
+++ b/dlls/ntdll/tests/exception.c
@@ -1829,7 +1829,7 @@ static LONG CALLBACK outputdebugstring_vectored_handler(EXCEPTION_POINTERS *Exce
@@ -1796,7 +1796,7 @@ static LONG CALLBACK outputdebugstring_vectored_handler(EXCEPTION_POINTERS *Exce
return EXCEPTION_CONTINUE_SEARCH;
}
@ -50,23 +50,15 @@ index 98d73f4..f9dd95d 100644
{
PVOID vectored_handler;
@@ -1844,13 +1844,8 @@ static void test_outputdebugstring(DWORD numexc, BOOL todo)
@@ -1812,7 +1812,6 @@ static void test_outputdebugstring(DWORD numexc, BOOL todo)
outputdebugstring_exceptions = 0;
OutputDebugStringA("Hello World");
- if (todo)
- todo_wine
- ok(outputdebugstring_exceptions == numexc, "OutputDebugStringA generated %d exceptions, expected %d\n",
- outputdebugstring_exceptions, numexc);
- else
- ok(outputdebugstring_exceptions == numexc, "OutputDebugStringA generated %d exceptions, expected %d\n",
- outputdebugstring_exceptions, numexc);
+ ok(outputdebugstring_exceptions == numexc, "OutputDebugStringA generated %d exceptions, expected %d\n",
+ outputdebugstring_exceptions, numexc);
pRtlRemoveVectoredExceptionHandler(vectored_handler);
}
@@ -2064,9 +2059,9 @@ START_TEST(exception)
- todo_wine_if(todo)
ok(outputdebugstring_exceptions == numexc, "OutputDebugStringA generated %d exceptions, expected %d\n",
outputdebugstring_exceptions, numexc);
@@ -2028,9 +2027,9 @@ START_TEST(exception)
run_rtlraiseexception_test(EXCEPTION_BREAKPOINT);
run_rtlraiseexception_test(EXCEPTION_INVALID_HANDLE);
test_stage = 3;
@ -78,7 +70,7 @@ index 98d73f4..f9dd95d 100644
test_stage = 5;
test_ripevent(0);
test_stage = 6;
@@ -2087,7 +2082,7 @@ START_TEST(exception)
@@ -2051,7 +2050,7 @@ START_TEST(exception)
test_exceptions();
test_rtlraiseexception();
test_debug_registers();
@ -87,7 +79,7 @@ index 98d73f4..f9dd95d 100644
test_ripevent(1);
test_closehandle(0);
test_vectored_continue_handler();
@@ -2108,7 +2103,7 @@ START_TEST(exception)
@@ -2072,7 +2071,7 @@ START_TEST(exception)
"RtlLookupFunctionEntry" );
test_debug_registers();
@ -97,5 +89,5 @@ index 98d73f4..f9dd95d 100644
test_closehandle(0);
test_vectored_continue_handler();
--
2.6.4
2.7.0

File diff suppressed because it is too large Load Diff

View File

@ -1,46 +0,0 @@
From 94973c7be88a18b4b4f79cea79f82f450cb659f0 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 14 Jan 2016 07:18:08 +0100
Subject: vcomp/tests: Reenable architecture dependent tests.
---
dlls/vcomp/tests/vcomp.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/vcomp/tests/vcomp.c b/dlls/vcomp/tests/vcomp.c
index 4f030d3..5c177df 100644
--- a/dlls/vcomp/tests/vcomp.c
+++ b/dlls/vcomp/tests/vcomp.c
@@ -1406,13 +1406,15 @@ static void test_atomic_integer32(void)
{ p_vcomp_atomic_mul_i4, 0x11223344, -0x77665544, 0xecccdf0 },
{ p_vcomp_atomic_or_i4, 0x11223344, 0x77665544, 0x77667744 },
{ p_vcomp_atomic_shl_i4, 0x11223344, 3, -0x76ee65e0 },
- /* { p_vcomp_atomic_shl_i4, 0x11223344, 35, -0x76ee65e0 }, */ /* depends on Architecture */
{ p_vcomp_atomic_shl_i4, -0x11223344, 3, 0x76ee65e0 },
{ p_vcomp_atomic_shr_i4, 0x11223344, 3, 0x2244668 },
- /* { p_vcomp_atomic_shr_i4, 0x11223344, 35, 0x2244668 }, */ /* depends on Architecture */
{ p_vcomp_atomic_shr_i4, -0x11223344, 3, -0x2244669 },
{ p_vcomp_atomic_sub_i4, 0x11223344, 0x77665544, -0x66442200 },
{ p_vcomp_atomic_xor_i4, 0x11223344, 0x77665544, 0x66446600 },
+ #if defined(__i386__) || defined(__x86_64__)
+ { p_vcomp_atomic_shl_i4, 0x11223344, 35, -0x76ee65e0 },
+ { p_vcomp_atomic_shr_i4, 0x11223344, 35, 0x2244668 },
+ #endif
};
struct
{
@@ -1424,8 +1426,10 @@ static void test_atomic_integer32(void)
{ p_vcomp_atomic_div_ui4, 0x77665544, 0x11223344, 6 },
{ p_vcomp_atomic_div_ui4, 0x77665544, 0xeeddccbc, 0 },
{ p_vcomp_atomic_shr_ui4, 0x11223344, 3, 0x2244668 },
- /* { p_vcomp_atomic_shr_ui4, 0x11223344, 35, 0x2244668 }, */ /* depends on Architecture */
{ p_vcomp_atomic_shr_ui4, 0xeeddccbc, 3, 0x1ddbb997 },
+ #if defined(__i386__) || defined(__x86_64__)
+ { p_vcomp_atomic_shr_ui4, 0x11223344, 35, 0x2244668 },
+ #endif
};
int i;
--
2.6.4

View File

@ -1,458 +0,0 @@
From bf16d653d692fdb4b3f5f595f1fa9cf58d9b2947 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 14 Jan 2016 07:20:03 +0100
Subject: vcomp: Implement 64-bit atomic instructions.
---
dlls/vcomp/main.c | 68 ++++++++++++++++++++++++++++++++++++++++++++-
dlls/vcomp/vcomp.spec | 22 +++++++--------
dlls/vcomp100/vcomp100.spec | 22 +++++++--------
dlls/vcomp110/vcomp110.spec | 22 +++++++--------
dlls/vcomp120/vcomp120.spec | 22 +++++++--------
dlls/vcomp90/vcomp90.spec | 22 +++++++--------
6 files changed, 122 insertions(+), 56 deletions(-)
diff --git a/dlls/vcomp/main.c b/dlls/vcomp/main.c
index 12fd2a5..446b83d 100644
--- a/dlls/vcomp/main.c
+++ b/dlls/vcomp/main.c
@@ -4,7 +4,7 @@
*
* Copyright 2011 Austin English
* Copyright 2012 Dan Kegel
- * Copyright 2015 Sebastian Lackner
+ * Copyright 2015-2016 Sebastian Lackner
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -356,6 +356,72 @@ void CDECL _vcomp_atomic_xor_i4(int *dest, int val)
do old = *dest; while (interlocked_cmpxchg(dest, old ^ val, old) != old);
}
+void CDECL _vcomp_atomic_add_i8(LONG64 *dest, LONG64 val)
+{
+ LONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64(dest, old + val, old) != old);
+}
+
+void CDECL _vcomp_atomic_and_i8(LONG64 *dest, LONG64 val)
+{
+ LONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64(dest, old & val, old) != old);
+}
+
+void CDECL _vcomp_atomic_div_i8(LONG64 *dest, LONG64 val)
+{
+ LONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64(dest, old / val, old) != old);
+}
+
+void CDECL _vcomp_atomic_div_ui8(ULONG64 *dest, ULONG64 val)
+{
+ ULONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64((LONG64 *)dest, old / val, old) != old);
+}
+
+void CDECL _vcomp_atomic_mul_i8(LONG64 *dest, LONG64 val)
+{
+ LONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64(dest, old * val, old) != old);
+}
+
+void CDECL _vcomp_atomic_or_i8(LONG64 *dest, LONG64 val)
+{
+ LONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64(dest, old | val, old) != old);
+}
+
+void CDECL _vcomp_atomic_shl_i8(LONG64 *dest, unsigned int val)
+{
+ LONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64(dest, old << val, old) != old);
+}
+
+void CDECL _vcomp_atomic_shr_i8(LONG64 *dest, unsigned int val)
+{
+ LONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64(dest, old >> val, old) != old);
+}
+
+void CDECL _vcomp_atomic_shr_ui8(ULONG64 *dest, unsigned int val)
+{
+ ULONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64((LONG64 *)dest, old >> val, old) != old);
+}
+
+void CDECL _vcomp_atomic_sub_i8(LONG64 *dest, LONG64 val)
+{
+ LONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64(dest, old - val, old) != old);
+}
+
+void CDECL _vcomp_atomic_xor_i8(LONG64 *dest, LONG64 val)
+{
+ LONG64 old;
+ do old = *dest; while (interlocked_cmpxchg64(dest, old ^ val, old) != old);
+}
+
void CDECL _vcomp_atomic_add_r4(float *dest, float val)
{
int old, new;
diff --git a/dlls/vcomp/vcomp.spec b/dlls/vcomp/vcomp.spec
index 7703e2e..eff411e 100644
--- a/dlls/vcomp/vcomp.spec
+++ b/dlls/vcomp/vcomp.spec
@@ -1,55 +1,55 @@
@ stub _vcomp_atomic_add_i1
@ stub _vcomp_atomic_add_i2
@ cdecl _vcomp_atomic_add_i4(ptr long)
-@ stub _vcomp_atomic_add_i8
+@ cdecl _vcomp_atomic_add_i8(ptr int64)
@ cdecl _vcomp_atomic_add_r4(ptr float)
@ cdecl _vcomp_atomic_add_r8(ptr double)
@ stub _vcomp_atomic_and_i1
@ stub _vcomp_atomic_and_i2
@ cdecl _vcomp_atomic_and_i4(ptr long)
-@ stub _vcomp_atomic_and_i8
+@ cdecl _vcomp_atomic_and_i8(ptr int64)
@ stub _vcomp_atomic_div_i1
@ stub _vcomp_atomic_div_i2
@ cdecl _vcomp_atomic_div_i4(ptr long)
-@ stub _vcomp_atomic_div_i8
+@ cdecl _vcomp_atomic_div_i8(ptr int64)
@ cdecl _vcomp_atomic_div_r4(ptr float)
@ cdecl _vcomp_atomic_div_r8(ptr double)
@ stub _vcomp_atomic_div_ui1
@ stub _vcomp_atomic_div_ui2
@ cdecl _vcomp_atomic_div_ui4(ptr long)
-@ stub _vcomp_atomic_div_ui8
+@ cdecl _vcomp_atomic_div_ui8(ptr int64)
@ stub _vcomp_atomic_mul_i1
@ stub _vcomp_atomic_mul_i2
@ cdecl _vcomp_atomic_mul_i4(ptr long)
-@ stub _vcomp_atomic_mul_i8
+@ cdecl _vcomp_atomic_mul_i8(ptr int64)
@ cdecl _vcomp_atomic_mul_r4(ptr float)
@ cdecl _vcomp_atomic_mul_r8(ptr double)
@ stub _vcomp_atomic_or_i1
@ stub _vcomp_atomic_or_i2
@ cdecl _vcomp_atomic_or_i4(ptr long)
-@ stub _vcomp_atomic_or_i8
+@ cdecl _vcomp_atomic_or_i8(ptr int64)
@ stub _vcomp_atomic_shl_i1
@ stub _vcomp_atomic_shl_i2
@ cdecl _vcomp_atomic_shl_i4(ptr long)
-@ stub _vcomp_atomic_shl_i8
+@ cdecl _vcomp_atomic_shl_i8(ptr long)
@ stub _vcomp_atomic_shr_i1
@ stub _vcomp_atomic_shr_i2
@ cdecl _vcomp_atomic_shr_i4(ptr long)
-@ stub _vcomp_atomic_shr_i8
+@ cdecl _vcomp_atomic_shr_i8(ptr long)
@ stub _vcomp_atomic_shr_ui1
@ stub _vcomp_atomic_shr_ui2
@ cdecl _vcomp_atomic_shr_ui4(ptr long)
-@ stub _vcomp_atomic_shr_ui8
+@ cdecl _vcomp_atomic_shr_ui8(ptr long)
@ stub _vcomp_atomic_sub_i1
@ stub _vcomp_atomic_sub_i2
@ cdecl _vcomp_atomic_sub_i4(ptr long)
-@ stub _vcomp_atomic_sub_i8
+@ cdecl _vcomp_atomic_sub_i8(ptr int64)
@ cdecl _vcomp_atomic_sub_r4(ptr float)
@ cdecl _vcomp_atomic_sub_r8(ptr double)
@ stub _vcomp_atomic_xor_i1
@ stub _vcomp_atomic_xor_i2
@ cdecl _vcomp_atomic_xor_i4(ptr long)
-@ stub _vcomp_atomic_xor_i8
+@ cdecl _vcomp_atomic_xor_i8(ptr int64)
@ cdecl _vcomp_barrier()
@ stub _vcomp_copyprivate_broadcast
@ stub _vcomp_copyprivate_receive
diff --git a/dlls/vcomp100/vcomp100.spec b/dlls/vcomp100/vcomp100.spec
index 849125f..ba1f414 100644
--- a/dlls/vcomp100/vcomp100.spec
+++ b/dlls/vcomp100/vcomp100.spec
@@ -1,55 +1,55 @@
@ stub _vcomp_atomic_add_i1
@ stub _vcomp_atomic_add_i2
@ cdecl _vcomp_atomic_add_i4(ptr long) vcomp._vcomp_atomic_add_i4
-@ stub _vcomp_atomic_add_i8
+@ cdecl _vcomp_atomic_add_i8(ptr int64) vcomp._vcomp_atomic_add_i8
@ cdecl _vcomp_atomic_add_r4(ptr float) vcomp._vcomp_atomic_add_r4
@ 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
-@ stub _vcomp_atomic_and_i8
+@ cdecl _vcomp_atomic_and_i8(ptr int64) vcomp._vcomp_atomic_and_i8
@ stub _vcomp_atomic_div_i1
@ stub _vcomp_atomic_div_i2
@ cdecl _vcomp_atomic_div_i4(ptr long) vcomp._vcomp_atomic_div_i4
-@ stub _vcomp_atomic_div_i8
+@ cdecl _vcomp_atomic_div_i8(ptr int64) vcomp._vcomp_atomic_div_i8
@ cdecl _vcomp_atomic_div_r4(ptr float) vcomp._vcomp_atomic_div_r4
@ 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
-@ stub _vcomp_atomic_div_ui8
+@ cdecl _vcomp_atomic_div_ui8(ptr int64) vcomp._vcomp_atomic_div_ui8
@ stub _vcomp_atomic_mul_i1
@ stub _vcomp_atomic_mul_i2
@ cdecl _vcomp_atomic_mul_i4(ptr long) vcomp._vcomp_atomic_mul_i4
-@ stub _vcomp_atomic_mul_i8
+@ cdecl _vcomp_atomic_mul_i8(ptr int64) vcomp._vcomp_atomic_mul_i8
@ cdecl _vcomp_atomic_mul_r4(ptr float) vcomp._vcomp_atomic_mul_r4
@ 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
-@ stub _vcomp_atomic_or_i8
+@ cdecl _vcomp_atomic_or_i8(ptr int64) vcomp._vcomp_atomic_or_i8
@ stub _vcomp_atomic_shl_i1
@ stub _vcomp_atomic_shl_i2
@ cdecl _vcomp_atomic_shl_i4(ptr long) vcomp._vcomp_atomic_shl_i4
-@ stub _vcomp_atomic_shl_i8
+@ cdecl _vcomp_atomic_shl_i8(ptr long) vcomp._vcomp_atomic_shl_i8
@ stub _vcomp_atomic_shr_i1
@ stub _vcomp_atomic_shr_i2
@ cdecl _vcomp_atomic_shr_i4(ptr long) vcomp._vcomp_atomic_shr_i4
-@ stub _vcomp_atomic_shr_i8
+@ cdecl _vcomp_atomic_shr_i8(ptr long) vcomp._vcomp_atomic_shr_i8
@ stub _vcomp_atomic_shr_ui1
@ stub _vcomp_atomic_shr_ui2
@ cdecl _vcomp_atomic_shr_ui4(ptr long) vcomp._vcomp_atomic_shr_ui4
-@ stub _vcomp_atomic_shr_ui8
+@ cdecl _vcomp_atomic_shr_ui8(ptr long) vcomp._vcomp_atomic_shr_ui8
@ stub _vcomp_atomic_sub_i1
@ stub _vcomp_atomic_sub_i2
@ cdecl _vcomp_atomic_sub_i4(ptr long) vcomp._vcomp_atomic_sub_i4
-@ stub _vcomp_atomic_sub_i8
+@ cdecl _vcomp_atomic_sub_i8(ptr int64) vcomp._vcomp_atomic_sub_i8
@ cdecl _vcomp_atomic_sub_r4(ptr float) vcomp._vcomp_atomic_sub_r4
@ 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
-@ stub _vcomp_atomic_xor_i8
+@ cdecl _vcomp_atomic_xor_i8(ptr int64) vcomp._vcomp_atomic_xor_i8
@ cdecl _vcomp_barrier() vcomp._vcomp_barrier
@ stub _vcomp_copyprivate_broadcast
@ stub _vcomp_copyprivate_receive
diff --git a/dlls/vcomp110/vcomp110.spec b/dlls/vcomp110/vcomp110.spec
index 87a7205..8389d27 100644
--- a/dlls/vcomp110/vcomp110.spec
+++ b/dlls/vcomp110/vcomp110.spec
@@ -2,55 +2,55 @@
@ stub _vcomp_atomic_add_i1
@ stub _vcomp_atomic_add_i2
@ cdecl _vcomp_atomic_add_i4(ptr long) vcomp._vcomp_atomic_add_i4
-@ stub _vcomp_atomic_add_i8
+@ cdecl _vcomp_atomic_add_i8(ptr int64) vcomp._vcomp_atomic_add_i8
@ cdecl _vcomp_atomic_add_r4(ptr float) vcomp._vcomp_atomic_add_r4
@ 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
-@ stub _vcomp_atomic_and_i8
+@ cdecl _vcomp_atomic_and_i8(ptr int64) vcomp._vcomp_atomic_and_i8
@ stub _vcomp_atomic_div_i1
@ stub _vcomp_atomic_div_i2
@ cdecl _vcomp_atomic_div_i4(ptr long) vcomp._vcomp_atomic_div_i4
-@ stub _vcomp_atomic_div_i8
+@ cdecl _vcomp_atomic_div_i8(ptr int64) vcomp._vcomp_atomic_div_i8
@ cdecl _vcomp_atomic_div_r4(ptr float) vcomp._vcomp_atomic_div_r4
@ 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
-@ stub _vcomp_atomic_div_ui8
+@ cdecl _vcomp_atomic_div_ui8(ptr int64) vcomp._vcomp_atomic_div_ui8
@ stub _vcomp_atomic_mul_i1
@ stub _vcomp_atomic_mul_i2
@ cdecl _vcomp_atomic_mul_i4(ptr long) vcomp._vcomp_atomic_mul_i4
-@ stub _vcomp_atomic_mul_i8
+@ cdecl _vcomp_atomic_mul_i8(ptr int64) vcomp._vcomp_atomic_mul_i8
@ cdecl _vcomp_atomic_mul_r4(ptr float) vcomp._vcomp_atomic_mul_r4
@ 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
-@ stub _vcomp_atomic_or_i8
+@ cdecl _vcomp_atomic_or_i8(ptr int64) vcomp._vcomp_atomic_or_i8
@ stub _vcomp_atomic_shl_i1
@ stub _vcomp_atomic_shl_i2
@ cdecl _vcomp_atomic_shl_i4(ptr long) vcomp._vcomp_atomic_shl_i4
-@ stub _vcomp_atomic_shl_i8
+@ cdecl _vcomp_atomic_shl_i8(ptr long) vcomp._vcomp_atomic_shl_i8
@ stub _vcomp_atomic_shr_i1
@ stub _vcomp_atomic_shr_i2
@ cdecl _vcomp_atomic_shr_i4(ptr long) vcomp._vcomp_atomic_shr_i4
-@ stub _vcomp_atomic_shr_i8
+@ cdecl _vcomp_atomic_shr_i8(ptr long) vcomp._vcomp_atomic_shr_i8
@ stub _vcomp_atomic_shr_ui1
@ stub _vcomp_atomic_shr_ui2
@ cdecl _vcomp_atomic_shr_ui4(ptr long) vcomp._vcomp_atomic_shr_ui4
-@ stub _vcomp_atomic_shr_ui8
+@ cdecl _vcomp_atomic_shr_ui8(ptr long) vcomp._vcomp_atomic_shr_ui8
@ stub _vcomp_atomic_sub_i1
@ stub _vcomp_atomic_sub_i2
@ cdecl _vcomp_atomic_sub_i4(ptr long) vcomp._vcomp_atomic_sub_i4
-@ stub _vcomp_atomic_sub_i8
+@ cdecl _vcomp_atomic_sub_i8(ptr int64) vcomp._vcomp_atomic_sub_i8
@ cdecl _vcomp_atomic_sub_r4(ptr float) vcomp._vcomp_atomic_sub_r4
@ 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
-@ stub _vcomp_atomic_xor_i8
+@ cdecl _vcomp_atomic_xor_i8(ptr int64) vcomp._vcomp_atomic_xor_i8
@ cdecl _vcomp_barrier() vcomp._vcomp_barrier
@ stub _vcomp_copyprivate_broadcast
@ stub _vcomp_copyprivate_receive
diff --git a/dlls/vcomp120/vcomp120.spec b/dlls/vcomp120/vcomp120.spec
index 87a7205..8389d27 100644
--- a/dlls/vcomp120/vcomp120.spec
+++ b/dlls/vcomp120/vcomp120.spec
@@ -2,55 +2,55 @@
@ stub _vcomp_atomic_add_i1
@ stub _vcomp_atomic_add_i2
@ cdecl _vcomp_atomic_add_i4(ptr long) vcomp._vcomp_atomic_add_i4
-@ stub _vcomp_atomic_add_i8
+@ cdecl _vcomp_atomic_add_i8(ptr int64) vcomp._vcomp_atomic_add_i8
@ cdecl _vcomp_atomic_add_r4(ptr float) vcomp._vcomp_atomic_add_r4
@ 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
-@ stub _vcomp_atomic_and_i8
+@ cdecl _vcomp_atomic_and_i8(ptr int64) vcomp._vcomp_atomic_and_i8
@ stub _vcomp_atomic_div_i1
@ stub _vcomp_atomic_div_i2
@ cdecl _vcomp_atomic_div_i4(ptr long) vcomp._vcomp_atomic_div_i4
-@ stub _vcomp_atomic_div_i8
+@ cdecl _vcomp_atomic_div_i8(ptr int64) vcomp._vcomp_atomic_div_i8
@ cdecl _vcomp_atomic_div_r4(ptr float) vcomp._vcomp_atomic_div_r4
@ 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
-@ stub _vcomp_atomic_div_ui8
+@ cdecl _vcomp_atomic_div_ui8(ptr int64) vcomp._vcomp_atomic_div_ui8
@ stub _vcomp_atomic_mul_i1
@ stub _vcomp_atomic_mul_i2
@ cdecl _vcomp_atomic_mul_i4(ptr long) vcomp._vcomp_atomic_mul_i4
-@ stub _vcomp_atomic_mul_i8
+@ cdecl _vcomp_atomic_mul_i8(ptr int64) vcomp._vcomp_atomic_mul_i8
@ cdecl _vcomp_atomic_mul_r4(ptr float) vcomp._vcomp_atomic_mul_r4
@ 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
-@ stub _vcomp_atomic_or_i8
+@ cdecl _vcomp_atomic_or_i8(ptr int64) vcomp._vcomp_atomic_or_i8
@ stub _vcomp_atomic_shl_i1
@ stub _vcomp_atomic_shl_i2
@ cdecl _vcomp_atomic_shl_i4(ptr long) vcomp._vcomp_atomic_shl_i4
-@ stub _vcomp_atomic_shl_i8
+@ cdecl _vcomp_atomic_shl_i8(ptr long) vcomp._vcomp_atomic_shl_i8
@ stub _vcomp_atomic_shr_i1
@ stub _vcomp_atomic_shr_i2
@ cdecl _vcomp_atomic_shr_i4(ptr long) vcomp._vcomp_atomic_shr_i4
-@ stub _vcomp_atomic_shr_i8
+@ cdecl _vcomp_atomic_shr_i8(ptr long) vcomp._vcomp_atomic_shr_i8
@ stub _vcomp_atomic_shr_ui1
@ stub _vcomp_atomic_shr_ui2
@ cdecl _vcomp_atomic_shr_ui4(ptr long) vcomp._vcomp_atomic_shr_ui4
-@ stub _vcomp_atomic_shr_ui8
+@ cdecl _vcomp_atomic_shr_ui8(ptr long) vcomp._vcomp_atomic_shr_ui8
@ stub _vcomp_atomic_sub_i1
@ stub _vcomp_atomic_sub_i2
@ cdecl _vcomp_atomic_sub_i4(ptr long) vcomp._vcomp_atomic_sub_i4
-@ stub _vcomp_atomic_sub_i8
+@ cdecl _vcomp_atomic_sub_i8(ptr int64) vcomp._vcomp_atomic_sub_i8
@ cdecl _vcomp_atomic_sub_r4(ptr float) vcomp._vcomp_atomic_sub_r4
@ 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
-@ stub _vcomp_atomic_xor_i8
+@ cdecl _vcomp_atomic_xor_i8(ptr int64) vcomp._vcomp_atomic_xor_i8
@ cdecl _vcomp_barrier() vcomp._vcomp_barrier
@ stub _vcomp_copyprivate_broadcast
@ stub _vcomp_copyprivate_receive
diff --git a/dlls/vcomp90/vcomp90.spec b/dlls/vcomp90/vcomp90.spec
index 849125f..ba1f414 100644
--- a/dlls/vcomp90/vcomp90.spec
+++ b/dlls/vcomp90/vcomp90.spec
@@ -1,55 +1,55 @@
@ stub _vcomp_atomic_add_i1
@ stub _vcomp_atomic_add_i2
@ cdecl _vcomp_atomic_add_i4(ptr long) vcomp._vcomp_atomic_add_i4
-@ stub _vcomp_atomic_add_i8
+@ cdecl _vcomp_atomic_add_i8(ptr int64) vcomp._vcomp_atomic_add_i8
@ cdecl _vcomp_atomic_add_r4(ptr float) vcomp._vcomp_atomic_add_r4
@ 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
-@ stub _vcomp_atomic_and_i8
+@ cdecl _vcomp_atomic_and_i8(ptr int64) vcomp._vcomp_atomic_and_i8
@ stub _vcomp_atomic_div_i1
@ stub _vcomp_atomic_div_i2
@ cdecl _vcomp_atomic_div_i4(ptr long) vcomp._vcomp_atomic_div_i4
-@ stub _vcomp_atomic_div_i8
+@ cdecl _vcomp_atomic_div_i8(ptr int64) vcomp._vcomp_atomic_div_i8
@ cdecl _vcomp_atomic_div_r4(ptr float) vcomp._vcomp_atomic_div_r4
@ 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
-@ stub _vcomp_atomic_div_ui8
+@ cdecl _vcomp_atomic_div_ui8(ptr int64) vcomp._vcomp_atomic_div_ui8
@ stub _vcomp_atomic_mul_i1
@ stub _vcomp_atomic_mul_i2
@ cdecl _vcomp_atomic_mul_i4(ptr long) vcomp._vcomp_atomic_mul_i4
-@ stub _vcomp_atomic_mul_i8
+@ cdecl _vcomp_atomic_mul_i8(ptr int64) vcomp._vcomp_atomic_mul_i8
@ cdecl _vcomp_atomic_mul_r4(ptr float) vcomp._vcomp_atomic_mul_r4
@ 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
-@ stub _vcomp_atomic_or_i8
+@ cdecl _vcomp_atomic_or_i8(ptr int64) vcomp._vcomp_atomic_or_i8
@ stub _vcomp_atomic_shl_i1
@ stub _vcomp_atomic_shl_i2
@ cdecl _vcomp_atomic_shl_i4(ptr long) vcomp._vcomp_atomic_shl_i4
-@ stub _vcomp_atomic_shl_i8
+@ cdecl _vcomp_atomic_shl_i8(ptr long) vcomp._vcomp_atomic_shl_i8
@ stub _vcomp_atomic_shr_i1
@ stub _vcomp_atomic_shr_i2
@ cdecl _vcomp_atomic_shr_i4(ptr long) vcomp._vcomp_atomic_shr_i4
-@ stub _vcomp_atomic_shr_i8
+@ cdecl _vcomp_atomic_shr_i8(ptr long) vcomp._vcomp_atomic_shr_i8
@ stub _vcomp_atomic_shr_ui1
@ stub _vcomp_atomic_shr_ui2
@ cdecl _vcomp_atomic_shr_ui4(ptr long) vcomp._vcomp_atomic_shr_ui4
-@ stub _vcomp_atomic_shr_ui8
+@ cdecl _vcomp_atomic_shr_ui8(ptr long) vcomp._vcomp_atomic_shr_ui8
@ stub _vcomp_atomic_sub_i1
@ stub _vcomp_atomic_sub_i2
@ cdecl _vcomp_atomic_sub_i4(ptr long) vcomp._vcomp_atomic_sub_i4
-@ stub _vcomp_atomic_sub_i8
+@ cdecl _vcomp_atomic_sub_i8(ptr int64) vcomp._vcomp_atomic_sub_i8
@ cdecl _vcomp_atomic_sub_r4(ptr float) vcomp._vcomp_atomic_sub_r4
@ 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
-@ stub _vcomp_atomic_xor_i8
+@ cdecl _vcomp_atomic_xor_i8(ptr int64) vcomp._vcomp_atomic_xor_i8
@ cdecl _vcomp_barrier() vcomp._vcomp_barrier
@ stub _vcomp_copyprivate_broadcast
@ stub _vcomp_copyprivate_receive
--
2.6.4

View File

@ -1,249 +0,0 @@
From 351810ed0612e63620ec612eee12b15e962de6bc Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 14 Jan 2016 07:22:32 +0100
Subject: vcomp/tests: Add tests for 64-bit atomic instructions.
---
dlls/vcomp/tests/vcomp.c | 148 ++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 147 insertions(+), 1 deletion(-)
diff --git a/dlls/vcomp/tests/vcomp.c b/dlls/vcomp/tests/vcomp.c
index 5c177df..d1c242e 100644
--- a/dlls/vcomp/tests/vcomp.c
+++ b/dlls/vcomp/tests/vcomp.c
@@ -2,7 +2,7 @@
* Unit test suite for vcomp
*
* Copyright 2012 Dan Kegel
- * Copyright 2015 Sebastian Lackner
+ * Copyright 2015-2016 Sebastian Lackner
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -19,6 +19,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include <stdio.h>
#include "wine/test.h"
static char vcomp_manifest_file[MAX_PATH];
@@ -35,24 +36,35 @@ typedef CRITICAL_SECTION *omp_lock_t;
typedef CRITICAL_SECTION *omp_nest_lock_t;
static void (CDECL *p_vcomp_atomic_add_i4)(int *dest, int val);
+static void (CDECL *p_vcomp_atomic_add_i8)(LONG64 *dest, LONG64 val);
static void (CDECL *p_vcomp_atomic_add_r4)(float *dest, float val);
static void (CDECL *p_vcomp_atomic_add_r8)(double *dest, double val);
static void (CDECL *p_vcomp_atomic_and_i4)(int *dest, int val);
+static void (CDECL *p_vcomp_atomic_and_i8)(LONG64 *dest, LONG64 val);
static void (CDECL *p_vcomp_atomic_div_i4)(int *dest, int val);
+static void (CDECL *p_vcomp_atomic_div_i8)(LONG64 *dest, LONG64 val);
static void (CDECL *p_vcomp_atomic_div_r4)(float *dest, float val);
static void (CDECL *p_vcomp_atomic_div_r8)(double *dest, double val);
static void (CDECL *p_vcomp_atomic_div_ui4)(unsigned int *dest, unsigned int val);
+static void (CDECL *p_vcomp_atomic_div_ui8)(ULONG64 *dest, ULONG64 val);
static void (CDECL *p_vcomp_atomic_mul_i4)(int *dest, int val);
+static void (CDECL *p_vcomp_atomic_mul_i8)(LONG64 *dest, LONG64 val);
static void (CDECL *p_vcomp_atomic_mul_r4)(float *dest, float val);
static void (CDECL *p_vcomp_atomic_mul_r8)(double *dest, double val);
static void (CDECL *p_vcomp_atomic_or_i4)(int *dest, int val);
+static void (CDECL *p_vcomp_atomic_or_i8)(LONG64 *dest, LONG64 val);
static void (CDECL *p_vcomp_atomic_shl_i4)(int *dest, int val);
+static void (CDECL *p_vcomp_atomic_shl_i8)(LONG64 *dest, unsigned int val);
static void (CDECL *p_vcomp_atomic_shr_i4)(int *dest, int val);
+static void (CDECL *p_vcomp_atomic_shr_i8)(LONG64 *dest, unsigned int val);
static void (CDECL *p_vcomp_atomic_shr_ui4)(unsigned int *dest, unsigned int val);
+static void (CDECL *p_vcomp_atomic_shr_ui8)(ULONG64 *dest, unsigned int val);
static void (CDECL *p_vcomp_atomic_sub_i4)(int *dest, int val);
+static void (CDECL *p_vcomp_atomic_sub_i8)(LONG64 *dest, LONG64 val);
static void (CDECL *p_vcomp_atomic_sub_r4)(float *dest, float val);
static void (CDECL *p_vcomp_atomic_sub_r8)(double *dest, double val);
static void (CDECL *p_vcomp_atomic_xor_i4)(int *dest, int val);
+static void (CDECL *p_vcomp_atomic_xor_i8)(LONG64 *dest, LONG64 val);
static void (CDECL *p_vcomp_barrier)(void);
static void (CDECL *p_vcomp_enter_critsect)(CRITICAL_SECTION **critsect);
static void (CDECL *p_vcomp_flush)(void);
@@ -134,6 +146,16 @@ static const char vcomp_manifest[] =
#undef ARCH
+static const char *debugstr_longlong(ULONGLONG ll)
+{
+ static char str[17];
+ if (sizeof(ll) > sizeof(unsigned long) && ll >> 32)
+ sprintf(str, "%lx%08lx", (unsigned long)(ll >> 32), (unsigned long)ll);
+ else
+ sprintf(str, "%lx", (unsigned long)ll);
+ return str;
+}
+
static void create_vcomp_manifest(void)
{
char temp_path[MAX_PATH];
@@ -228,24 +250,35 @@ static BOOL init_vcomp(void)
}
VCOMP_GET_PROC(_vcomp_atomic_add_i4);
+ VCOMP_GET_PROC(_vcomp_atomic_add_i8);
VCOMP_GET_PROC(_vcomp_atomic_add_r4);
VCOMP_GET_PROC(_vcomp_atomic_add_r8);
VCOMP_GET_PROC(_vcomp_atomic_and_i4);
+ VCOMP_GET_PROC(_vcomp_atomic_and_i8);
VCOMP_GET_PROC(_vcomp_atomic_div_i4);
+ VCOMP_GET_PROC(_vcomp_atomic_div_i8);
VCOMP_GET_PROC(_vcomp_atomic_div_r4);
VCOMP_GET_PROC(_vcomp_atomic_div_r8);
VCOMP_GET_PROC(_vcomp_atomic_div_ui4);
+ VCOMP_GET_PROC(_vcomp_atomic_div_ui8);
VCOMP_GET_PROC(_vcomp_atomic_mul_i4);
+ VCOMP_GET_PROC(_vcomp_atomic_mul_i8);
VCOMP_GET_PROC(_vcomp_atomic_mul_r4);
VCOMP_GET_PROC(_vcomp_atomic_mul_r8);
VCOMP_GET_PROC(_vcomp_atomic_or_i4);
+ VCOMP_GET_PROC(_vcomp_atomic_or_i8);
VCOMP_GET_PROC(_vcomp_atomic_shl_i4);
+ VCOMP_GET_PROC(_vcomp_atomic_shl_i8);
VCOMP_GET_PROC(_vcomp_atomic_shr_i4);
+ VCOMP_GET_PROC(_vcomp_atomic_shr_i8);
VCOMP_GET_PROC(_vcomp_atomic_shr_ui4);
+ VCOMP_GET_PROC(_vcomp_atomic_shr_ui8);
VCOMP_GET_PROC(_vcomp_atomic_sub_i4);
+ VCOMP_GET_PROC(_vcomp_atomic_sub_i8);
VCOMP_GET_PROC(_vcomp_atomic_sub_r4);
VCOMP_GET_PROC(_vcomp_atomic_sub_r8);
VCOMP_GET_PROC(_vcomp_atomic_xor_i4);
+ VCOMP_GET_PROC(_vcomp_atomic_xor_i8);
VCOMP_GET_PROC(_vcomp_barrier);
VCOMP_GET_PROC(_vcomp_enter_critsect);
VCOMP_GET_PROC(_vcomp_flush);
@@ -1447,6 +1480,118 @@ static void test_atomic_integer32(void)
}
}
+static void test_atomic_integer64(void)
+{
+ struct
+ {
+ void (CDECL *func)(LONG64 *, LONG64);
+ LONG64 v1, v2, expected;
+ }
+ tests1[] =
+ {
+ { p_vcomp_atomic_add_i8, 0x1122334455667788, 0x7766554433221100, -0x7777777777777778 },
+ { p_vcomp_atomic_and_i8, 0x1122334455667788, 0x7766554433221100, 0x1122114411221100 },
+ { p_vcomp_atomic_div_i8, 0x7766554433221100, 0x1122334455667788, 6 },
+ { p_vcomp_atomic_div_i8, 0x7766554433221100, -0x1122334455667788, -6 },
+ { p_vcomp_atomic_mul_i8, 0x1122334455667788, 0x7766554433221100, 0x3e963337c6000800 },
+ { p_vcomp_atomic_mul_i8, 0x1122334455667788, -0x7766554433221100, 0xc169ccc839fff800 },
+ { p_vcomp_atomic_or_i8, 0x1122334455667788, 0x7766554433221100, 0x7766774477667788 },
+ { p_vcomp_atomic_sub_i8, 0x1122334455667788, 0x7766554433221100, -0x664421ffddbb9978 },
+ { p_vcomp_atomic_xor_i8, 0x1122334455667788, 0x7766554433221100, 0x6644660066446688 },
+ };
+ struct
+ {
+ void (CDECL *func)(LONG64 *, unsigned int);
+ LONG64 v1;
+ unsigned int v2;
+ LONG64 expected;
+ BOOL todo;
+ }
+ tests2[] =
+ {
+ { p_vcomp_atomic_shl_i8, 0x1122334455667788, 3, -0x76ee65dd54cc43c0 },
+ { p_vcomp_atomic_shl_i8, 0x1122334455667788, 60, 0x8000000000000000 },
+ { p_vcomp_atomic_shl_i8, -0x1122334455667788, 3, 0x76ee65dd54cc43c0 },
+ { p_vcomp_atomic_shr_i8, 0x1122334455667788, 3, 0x22446688aaccef1 },
+ { p_vcomp_atomic_shr_i8, 0x1122334455667788, 60, 1 },
+ { p_vcomp_atomic_shr_i8, -0x1122334455667788, 3, -0x22446688aaccef1 },
+ #if defined(__i386__)
+ { p_vcomp_atomic_shl_i8, 0x1122334455667788, 64, 0, TRUE },
+ { p_vcomp_atomic_shl_i8, 0x1122334455667788, 67, 0, TRUE },
+ { p_vcomp_atomic_shr_i8, 0x1122334455667788, 64, 0, TRUE },
+ { p_vcomp_atomic_shr_i8, 0x1122334455667788, 67, 0, TRUE },
+ #elif defined(__x86_64__)
+ { p_vcomp_atomic_shl_i8, 0x1122334455667788, 64, 0x1122334455667788 },
+ { p_vcomp_atomic_shl_i8, 0x1122334455667788, 67, -0x76ee65dd54cc43c0 },
+ { p_vcomp_atomic_shr_i8, 0x1122334455667788, 64, 0x1122334455667788 },
+ { p_vcomp_atomic_shr_i8, 0x1122334455667788, 67, 0x22446688aaccef1 },
+ #endif
+ };
+ struct
+ {
+ void (CDECL *func)(ULONG64 *, ULONG64);
+ ULONG64 v1, v2, expected;
+ }
+ tests3[] =
+ {
+ { p_vcomp_atomic_div_ui8, 0x7766554455667788, 0x1122334433221100, 6 },
+ { p_vcomp_atomic_div_ui8, 0x7766554455667788, 0xeeddccbbaa998878, 0 },
+ };
+ struct
+ {
+ void (CDECL *func)(ULONG64 *, unsigned int);
+ ULONG64 v1;
+ unsigned int v2;
+ ULONG64 expected;
+ BOOL todo;
+ }
+ tests4[] =
+ {
+ { p_vcomp_atomic_shr_ui8, 0x1122334455667788, 3, 0x22446688aaccef1 },
+ { p_vcomp_atomic_shr_ui8, 0x1122334455667788, 60, 1 },
+ { p_vcomp_atomic_shr_ui8, 0xeeddccbbaa998878, 3, 0x1ddbb9977553310f },
+ #if defined(__i386__)
+ { p_vcomp_atomic_shr_ui8, 0x1122334455667788, 64, 0, TRUE },
+ { p_vcomp_atomic_shr_ui8, 0x1122334455667788, 67, 0, TRUE },
+ #elif defined(__x86_64__)
+ { p_vcomp_atomic_shr_ui8, 0x1122334455667788, 64, 0x1122334455667788 },
+ { p_vcomp_atomic_shr_ui8, 0x1122334455667788, 67, 0x22446688aaccef1 },
+ #endif
+ };
+ int i;
+
+ for (i = 0; i < sizeof(tests1)/sizeof(tests1[0]); i++)
+ {
+ LONG64 val = tests1[i].v1;
+ tests1[i].func(&val, tests1[i].v2);
+ ok(val == tests1[i].expected, "test %d: unexpectedly got %s\n", i, debugstr_longlong(val));
+ }
+ for (i = 0; i < sizeof(tests2)/sizeof(tests2[0]); i++)
+ {
+ LONG64 val = tests2[i].v1;
+ tests2[i].func(&val, tests2[i].v2);
+ if (!tests2[i].todo)
+ ok(val == tests2[i].expected, "test %d: unexpectedly got %s\n", i, debugstr_longlong(val));
+ else todo_wine
+ ok(val == tests2[i].expected, "test %d: unexpectedly got %s\n", i, debugstr_longlong(val));
+ }
+ for (i = 0; i < sizeof(tests3)/sizeof(tests3[0]); i++)
+ {
+ ULONG64 val = tests3[i].v1;
+ tests3[i].func(&val, tests3[i].v2);
+ ok(val == tests3[i].expected, "test %d: unexpectedly got %s\n", i, debugstr_longlong(val));
+ }
+ for (i = 0; i < sizeof(tests4)/sizeof(tests4[0]); i++)
+ {
+ ULONG64 val = tests4[i].v1;
+ tests4[i].func(&val, tests4[i].v2);
+ if (!tests4[i].todo)
+ ok(val == tests4[i].expected, "test %d: unexpectedly got %s\n", i, debugstr_longlong(val));
+ else todo_wine
+ ok(val == tests4[i].expected, "test %d: unexpectedly got %s\n", i, debugstr_longlong(val));
+ }
+}
+
static void test_atomic_float(void)
{
struct
@@ -1516,6 +1661,7 @@ START_TEST(vcomp)
test_omp_init_lock();
test_omp_init_nest_lock();
test_atomic_integer32();
+ test_atomic_integer64();
test_atomic_float();
test_atomic_double();
--
2.6.4

View File

@ -1 +0,0 @@
Fixes: Implement 64-bit atomic instructions in OpenMP

View File

@ -8,3 +8,6 @@ IfDefined: STAGING_CSMT
# Known issues:
# https://bugs.wine-staging.com/buglist.cgi?component=Bugs&keywords=csmt%2C%20&keywords_type=allwords&list_id=3690&query_format=advanced&resolution=---
# Temporary disabled, needs rebasing
Disabled: true