From e09a9fb6513ec27628e1c1ebeafaee742d1f90ea Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Thu, 24 Sep 2020 22:09:29 -0700 Subject: [PATCH] Adds XMM register PABS unit tests verified with host runner --- unittests/ASM/H0F38/66_1C.asm | 42 ++++++++++++++++++++++++++++++++++ unittests/ASM/H0F38/66_1D.asm | 43 +++++++++++++++++++++++++++++++++++ unittests/ASM/H0F38/66_1E.asm | 43 +++++++++++++++++++++++++++++++++++ 3 files changed, 128 insertions(+) create mode 100644 unittests/ASM/H0F38/66_1C.asm create mode 100644 unittests/ASM/H0F38/66_1D.asm create mode 100644 unittests/ASM/H0F38/66_1E.asm diff --git a/unittests/ASM/H0F38/66_1C.asm b/unittests/ASM/H0F38/66_1C.asm new file mode 100644 index 000000000..e7dd56b77 --- /dev/null +++ b/unittests/ASM/H0F38/66_1C.asm @@ -0,0 +1,42 @@ +%ifdef CONFIG +{ + "RegData": { + "XMM0": ["0x0", "0x0"], + "XMM1": ["0x0101010101010101", "0x0101010101010101"], + "XMM2": ["0x0101010101010101", "0x0101010101010101"], + "XMM3": ["0x0100010001010100", "0x0100010001010100"] + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x0000000000000000 +mov [rdx + 8 * 0], rax +mov [rdx + 8 * 1], rax + +mov rax, 0xFFFFFFFFFFFFFFFF +mov [rdx + 8 * 2], rax +mov [rdx + 8 * 3], rax + +mov rax, 0x0101010101010101 +mov [rdx + 8 * 4], rax +mov [rdx + 8 * 5], rax + +mov rax, 0xFF000100FF01FF00 +mov [rdx + 8 * 6], rax +mov [rdx + 8 * 7], rax + +; Test with full zero +pabsb xmm0, [rdx + 8 * 0] + +; Test with full negative +pabsb xmm1, [rdx + 8 * 2] + +; Test with full positive +pabsb xmm2, [rdx + 8 * 4] + +; Test a mix +pabsb xmm3, [rdx + 8 * 6] + +hlt diff --git a/unittests/ASM/H0F38/66_1D.asm b/unittests/ASM/H0F38/66_1D.asm new file mode 100644 index 000000000..4b4794ebf --- /dev/null +++ b/unittests/ASM/H0F38/66_1D.asm @@ -0,0 +1,43 @@ +%ifdef CONFIG +{ + "RegData": { + "XMM0": ["0x0", "0x0"], + "XMM1": ["0x0001000100010001", "0x0001000100010001"], + "XMM2": ["0x0001000100010001", "0x0001000100010001"], + "XMM3": ["0x0001000100000000", "0x0001000100010000"] + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x0000000000000000 +mov [rdx + 8 * 0], rax +mov [rdx + 8 * 1], rax + +mov rax, 0xFFFFFFFFFFFFFFFF +mov [rdx + 8 * 2], rax +mov [rdx + 8 * 3], rax + +mov rax, 0x0001000100010001 +mov [rdx + 8 * 4], rax +mov [rdx + 8 * 5], rax + +mov rax, 0xFFFFFFFF00000000 +mov [rdx + 8 * 6], rax +mov rax, 0x00010001FFFF0000 +mov [rdx + 8 * 7], rax + +; Test with full zero +pabsw xmm0, [rdx + 8 * 0] + +; Test with full negative +pabsw xmm1, [rdx + 8 * 2] + +; Test with full positive +pabsw xmm2, [rdx + 8 * 4] + +; Test a mix +pabsw xmm3, [rdx + 8 * 6] + +hlt diff --git a/unittests/ASM/H0F38/66_1E.asm b/unittests/ASM/H0F38/66_1E.asm new file mode 100644 index 000000000..3c9430b70 --- /dev/null +++ b/unittests/ASM/H0F38/66_1E.asm @@ -0,0 +1,43 @@ +%ifdef CONFIG +{ + "RegData": { + "XMM0": ["0x0", "0x0"], + "XMM1": ["0x0000000100000001", "0x0000000100000001"], + "XMM2": ["0x0000000100000001", "0x0000000100000001"], + "XMM3": ["0x0000000100000000", "0x0000000100000001"] + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x0000000000000000 +mov [rdx + 8 * 0], rax +mov [rdx + 8 * 1], rax + +mov rax, 0xFFFFFFFFFFFFFFFF +mov [rdx + 8 * 2], rax +mov [rdx + 8 * 3], rax + +mov rax, 0x0000000100000001 +mov [rdx + 8 * 4], rax +mov [rdx + 8 * 5], rax + +mov rax, 0xFFFFFFFF00000000 +mov [rdx + 8 * 6], rax +mov rax, 0x00000001FFFFFFFF +mov [rdx + 8 * 7], rax + +; Test with full zero +pabsd xmm0, [rdx + 8 * 0] + +; Test with full negative +pabsd xmm1, [rdx + 8 * 2] + +; Test with full positive +pabsd xmm2, [rdx + 8 * 4] + +; Test a mix +pabsd xmm3, [rdx + 8 * 6] + +hlt