From 4f03044fe760e32546774ee30e626676e745c0be Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Tue, 15 Oct 2024 06:51:23 -0700 Subject: [PATCH] unittests/ASM: Adds missing unaligned atomic tests Fixes #2670 Walked through all the unaligned atomic tests to find which ones were missing. Turns out it was only ADC, NEG, NOT, and SBB. --- unittests/ASM/Atomics/adc_atomic16.asm | 52 ++++++++++++++++++++++++++ unittests/ASM/Atomics/adc_atomic32.asm | 49 ++++++++++++++++++++++++ unittests/ASM/Atomics/adc_atomic64.asm | 46 +++++++++++++++++++++++ unittests/ASM/Atomics/neg_atomic16.asm | 50 +++++++++++++++++++++++++ unittests/ASM/Atomics/neg_atomic32.asm | 47 +++++++++++++++++++++++ unittests/ASM/Atomics/neg_atomic64.asm | 44 ++++++++++++++++++++++ unittests/ASM/Atomics/not_atomic16.asm | 50 +++++++++++++++++++++++++ unittests/ASM/Atomics/not_atomic32.asm | 47 +++++++++++++++++++++++ unittests/ASM/Atomics/not_atomic64.asm | 44 ++++++++++++++++++++++ unittests/ASM/Atomics/sbb_atomic16.asm | 52 ++++++++++++++++++++++++++ unittests/ASM/Atomics/sbb_atomic32.asm | 49 ++++++++++++++++++++++++ unittests/ASM/Atomics/sbb_atomic64.asm | 46 +++++++++++++++++++++++ unittests/ASM/Disabled_Tests_Simulator | 12 ++++++ 13 files changed, 588 insertions(+) create mode 100644 unittests/ASM/Atomics/adc_atomic16.asm create mode 100644 unittests/ASM/Atomics/adc_atomic32.asm create mode 100644 unittests/ASM/Atomics/adc_atomic64.asm create mode 100644 unittests/ASM/Atomics/neg_atomic16.asm create mode 100644 unittests/ASM/Atomics/neg_atomic32.asm create mode 100644 unittests/ASM/Atomics/neg_atomic64.asm create mode 100644 unittests/ASM/Atomics/not_atomic16.asm create mode 100644 unittests/ASM/Atomics/not_atomic32.asm create mode 100644 unittests/ASM/Atomics/not_atomic64.asm create mode 100644 unittests/ASM/Atomics/sbb_atomic16.asm create mode 100644 unittests/ASM/Atomics/sbb_atomic32.asm create mode 100644 unittests/ASM/Atomics/sbb_atomic64.asm diff --git a/unittests/ASM/Atomics/adc_atomic16.asm b/unittests/ASM/Atomics/adc_atomic16.asm new file mode 100644 index 0000000000..647de1d8d1 --- /dev/null +++ b/unittests/ASM/Atomics/adc_atomic16.asm @@ -0,0 +1,52 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x4242434446464848", + "RBX": "0x4242434445464748", + "RCX": "0x4142434445464748", + "RDX": "0x4142434445464748", + "RSI": "0x4242434445464748", + "RDI": "0x4142434445464748" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +mov rax, 1 + +; Test 1 byte offset within 4byte boundary +lock adc word [r15 + 8 * 0 + 1], ax + +; Test 3 byte offset across 4byte boundary +lock adc word [r15 + 8 * 0 + 3], ax + +; Test 7 byte offset across 8byte boundary +lock adc word [r15 + 8 * 0 + 7], ax + +; Test 15 byte offset across 16byte boundary +lock adc word [r15 + 8 * 0 + 15], ax + +; Test 63 byte offset across cacheline boundary +lock adc word [r15 + 8 * 0 + 63], ax + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/adc_atomic32.asm b/unittests/ASM/Atomics/adc_atomic32.asm new file mode 100644 index 0000000000..8d28cb3172 --- /dev/null +++ b/unittests/ASM/Atomics/adc_atomic32.asm @@ -0,0 +1,49 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x4242434446464748", + "RBX": "0x4242434445464748", + "RCX": "0x4142434445464748", + "RDX": "0x4142434445464748", + "RSI": "0x4242434445464748", + "RDI": "0x4142434445464748" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +mov rax, 1 + +; Test 3 byte offset across 4byte boundary +lock adc dword [r15 + 8 * 0 + 3], eax + +; Test 7 byte offset across 8byte boundary +lock adc dword [r15 + 8 * 0 + 7], eax + +; Test 15 byte offset across 16byte boundary +lock adc dword [r15 + 8 * 0 + 15], eax + +; Test 63 byte offset across cacheline boundary +lock adc dword [r15 + 8 * 0 + 63], eax + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/adc_atomic64.asm b/unittests/ASM/Atomics/adc_atomic64.asm new file mode 100644 index 0000000000..4496848f98 --- /dev/null +++ b/unittests/ASM/Atomics/adc_atomic64.asm @@ -0,0 +1,46 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x4242434445464748", + "RBX": "0x4242434445464748", + "RCX": "0x4142434445464748", + "RDX": "0x4142434445464748", + "RSI": "0x4242434445464748", + "RDI": "0x4142434445464748" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +mov rax, 1 + +; Test 7 byte offset across 8byte boundary +lock adc qword [r15 + 8 * 0 + 7], rax + +; Test 15 byte offset across 16byte boundary +lock adc qword [r15 + 8 * 0 + 15], rax + +; Test 63 byte offset across cacheline boundary +lock adc qword [r15 + 8 * 0 + 63], rax + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/neg_atomic16.asm b/unittests/ASM/Atomics/neg_atomic16.asm new file mode 100644 index 0000000000..9b86287192 --- /dev/null +++ b/unittests/ASM/Atomics/neg_atomic16.asm @@ -0,0 +1,50 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0xbf4243bbbbb9b948", + "RBX": "0xbf424344454647b7", + "RCX": "0x41424344454647b7", + "RDX": "0x4142434445464748", + "RSI": "0xbf42434445464748", + "RDI": "0x41424344454647b7" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +; Test 1 byte offset within 4byte boundary +lock neg word [r15 + 8 * 0 + 1] + +; Test 3 byte offset across 4byte boundary +lock neg word [r15 + 8 * 0 + 3] + +; Test 7 byte offset across 8byte boundary +lock neg word [r15 + 8 * 0 + 7] + +; Test 15 byte offset across 16byte boundary +lock neg word [r15 + 8 * 0 + 15] + +; Test 63 byte offset across cacheline boundary +lock neg word [r15 + 8 * 0 + 63] + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/neg_atomic32.asm b/unittests/ASM/Atomics/neg_atomic32.asm new file mode 100644 index 0000000000..735dd87e05 --- /dev/null +++ b/unittests/ASM/Atomics/neg_atomic32.asm @@ -0,0 +1,47 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0xbfbdbcbbbb464748", + "RBX": "0xbf42434445b9b8b7", + "RCX": "0x4142434445b9b8b7", + "RDX": "0x4142434445464748", + "RSI": "0xbf42434445464748", + "RDI": "0x4142434445b9b8b7" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +; Test 3 byte offset across 4byte boundary +lock neg dword [r15 + 8 * 0 + 3] + +; Test 7 byte offset across 8byte boundary +lock neg dword [r15 + 8 * 0 + 7] + +; Test 15 byte offset across 16byte boundary +lock neg dword [r15 + 8 * 0 + 15] + +; Test 63 byte offset across cacheline boundary +lock neg dword [r15 + 8 * 0 + 63] + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/neg_atomic64.asm b/unittests/ASM/Atomics/neg_atomic64.asm new file mode 100644 index 0000000000..6825b0c033 --- /dev/null +++ b/unittests/ASM/Atomics/neg_atomic64.asm @@ -0,0 +1,44 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0xbf42434445464748", + "RBX": "0xbfbdbcbbbab9b8b7", + "RCX": "0x41bdbcbbbab9b8b7", + "RDX": "0x4142434445464748", + "RSI": "0xbf42434445464748", + "RDI": "0x41bdbcbbbab9b8b7" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +; Test 7 byte offset across 8byte boundary +lock neg qword [r15 + 8 * 0 + 7] + +; Test 15 byte offset across 16byte boundary +lock neg qword [r15 + 8 * 0 + 15] + +; Test 63 byte offset across cacheline boundary +lock neg qword [r15 + 8 * 0 + 63] + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/not_atomic16.asm b/unittests/ASM/Atomics/not_atomic16.asm new file mode 100644 index 0000000000..d441688379 --- /dev/null +++ b/unittests/ASM/Atomics/not_atomic16.asm @@ -0,0 +1,50 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0xbe4243bbbab9b848", + "RBX": "0xbe424344454647b7", + "RCX": "0x41424344454647b7", + "RDX": "0x4142434445464748", + "RSI": "0xbe42434445464748", + "RDI": "0x41424344454647b7" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +; Test 1 byte offset within 4byte boundary +lock not word [r15 + 8 * 0 + 1] + +; Test 3 byte offset across 4byte boundary +lock not word [r15 + 8 * 0 + 3] + +; Test 7 byte offset across 8byte boundary +lock not word [r15 + 8 * 0 + 7] + +; Test 15 byte offset across 16byte boundary +lock not word [r15 + 8 * 0 + 15] + +; Test 63 byte offset across cacheline boundary +lock not word [r15 + 8 * 0 + 63] + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/not_atomic32.asm b/unittests/ASM/Atomics/not_atomic32.asm new file mode 100644 index 0000000000..e48609ee52 --- /dev/null +++ b/unittests/ASM/Atomics/not_atomic32.asm @@ -0,0 +1,47 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0xbebdbcbbba464748", + "RBX": "0xbe42434445b9b8b7", + "RCX": "0x4142434445b9b8b7", + "RDX": "0x4142434445464748", + "RSI": "0xbe42434445464748", + "RDI": "0x4142434445b9b8b7" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +; Test 3 byte offset across 4byte boundary +lock not dword [r15 + 8 * 0 + 3] + +; Test 7 byte offset across 8byte boundary +lock not dword [r15 + 8 * 0 + 7] + +; Test 15 byte offset across 16byte boundary +lock not dword [r15 + 8 * 0 + 15] + +; Test 63 byte offset across cacheline boundary +lock not dword [r15 + 8 * 0 + 63] + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/not_atomic64.asm b/unittests/ASM/Atomics/not_atomic64.asm new file mode 100644 index 0000000000..5b98fff0eb --- /dev/null +++ b/unittests/ASM/Atomics/not_atomic64.asm @@ -0,0 +1,44 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0xbe42434445464748", + "RBX": "0xbebdbcbbbab9b8b7", + "RCX": "0x41bdbcbbbab9b8b7", + "RDX": "0x4142434445464748", + "RSI": "0xbe42434445464748", + "RDI": "0x41bdbcbbbab9b8b7" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +; Test 7 byte offset across 8byte boundary +lock not qword [r15 + 8 * 0 + 7] + +; Test 15 byte offset across 16byte boundary +lock not qword [r15 + 8 * 0 + 15] + +; Test 63 byte offset across cacheline boundary +lock not qword [r15 + 8 * 0 + 63] + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/sbb_atomic16.asm b/unittests/ASM/Atomics/sbb_atomic16.asm new file mode 100644 index 0000000000..3c2a77c6c1 --- /dev/null +++ b/unittests/ASM/Atomics/sbb_atomic16.asm @@ -0,0 +1,52 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x4042434444464648", + "RBX": "0x4042434445464748", + "RCX": "0x4142434445464748", + "RDX": "0x4142434445464748", + "RSI": "0x4042434445464748", + "RDI": "0x4142434445464748" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +mov rax, 1 + +; Test 1 byte offset within 4byte boundary +lock sbb word [r15 + 8 * 0 + 1], ax + +; Test 3 byte offset across 4byte boundary +lock sbb word [r15 + 8 * 0 + 3], ax + +; Test 7 byte offset across 8byte boundary +lock sbb word [r15 + 8 * 0 + 7], ax + +; Test 15 byte offset across 16byte boundary +lock sbb word [r15 + 8 * 0 + 15], ax + +; Test 63 byte offset across cacheline boundary +lock sbb word [r15 + 8 * 0 + 63], ax + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/sbb_atomic32.asm b/unittests/ASM/Atomics/sbb_atomic32.asm new file mode 100644 index 0000000000..d8cecd946c --- /dev/null +++ b/unittests/ASM/Atomics/sbb_atomic32.asm @@ -0,0 +1,49 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x4042434444464748", + "RBX": "0x4042434445464748", + "RCX": "0x4142434445464748", + "RDX": "0x4142434445464748", + "RSI": "0x4042434445464748", + "RDI": "0x4142434445464748" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +mov rax, 1 + +; Test 3 byte offset across 4byte boundary +lock sbb dword [r15 + 8 * 0 + 3], eax + +; Test 7 byte offset across 8byte boundary +lock sbb dword [r15 + 8 * 0 + 7], eax + +; Test 15 byte offset across 16byte boundary +lock sbb dword [r15 + 8 * 0 + 15], eax + +; Test 63 byte offset across cacheline boundary +lock sbb dword [r15 + 8 * 0 + 63], eax + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Atomics/sbb_atomic64.asm b/unittests/ASM/Atomics/sbb_atomic64.asm new file mode 100644 index 0000000000..e9afa34d00 --- /dev/null +++ b/unittests/ASM/Atomics/sbb_atomic64.asm @@ -0,0 +1,46 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x4042434445464748", + "RBX": "0x4042434445464748", + "RCX": "0x4142434445464748", + "RDX": "0x4142434445464748", + "RSI": "0x4042434445464748", + "RDI": "0x4142434445464748" + } +} +%endif + +mov r15, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [r15 + 8 * 0], rax +mov [r15 + 8 * 1], rax +mov [r15 + 8 * 2], rax +mov [r15 + 8 * 3], rax +mov [r15 + 8 * 4], rax +mov [r15 + 8 * 5], rax +mov [r15 + 8 * 6], rax +mov [r15 + 8 * 7], rax +mov [r15 + 8 * 8], rax +mov [r15 + 8 * 9], rax + +mov rax, 1 + +; Test 7 byte offset across 8byte boundary +lock sbb qword [r15 + 8 * 0 + 7], rax + +; Test 15 byte offset across 16byte boundary +lock sbb qword [r15 + 8 * 0 + 15], rax + +; Test 63 byte offset across cacheline boundary +lock sbb qword [r15 + 8 * 0 + 63], rax + +mov rax, qword [r15 + 8 * 0] +mov rbx, qword [r15 + 8 * 1] +mov rcx, qword [r15 + 8 * 2] +mov rdx, qword [r15 + 8 * 3] +mov rsi, qword [r15 + 8 * 7] +mov rdi, qword [r15 + 8 * 8] + +hlt diff --git a/unittests/ASM/Disabled_Tests_Simulator b/unittests/ASM/Disabled_Tests_Simulator index e9589d09c8..394fc90649 100644 --- a/unittests/ASM/Disabled_Tests_Simulator +++ b/unittests/ASM/Disabled_Tests_Simulator @@ -51,6 +51,18 @@ Test_Primary/Primary_FF_0_Atomic64.asm Test_Primary/Primary_FF_1_Atomic16.asm Test_Primary/Primary_FF_1_Atomic32.asm Test_Primary/Primary_FF_1_Atomic64.asm +Test_Atomics/adc_atomic16.asm +Test_Atomics/adc_atomic32.asm +Test_Atomics/adc_atomic64.asm +Test_Atomics/sbb_atomic16.asm +Test_Atomics/sbb_atomic32.asm +Test_Atomics/sbb_atomic64.asm +Test_Atomics/neg_atomic16.asm +Test_Atomics/neg_atomic32.asm +Test_Atomics/neg_atomic64.asm +Test_Atomics/not_atomic16.asm +Test_Atomics/not_atomic32.asm +Test_Atomics/not_atomic64.asm Test_PrimaryGroup/3_F7_02_2.asm Test_PrimaryGroup/3_F7_02_3.asm