From 5466ea4df2f58dcc425aa8a964abae765406d617 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sun, 4 Oct 2020 16:12:22 -0700 Subject: [PATCH] Extends PSHUFB unit tests to ensure correct behaviour Explicitly testign bits being set in the reserved bits --- unittests/ASM/H0F38/66_00_2.asm | 36 +++++++++++++++++++++++++++++++++ unittests/ASM/H0F38/XX_00_2.asm | 28 +++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 unittests/ASM/H0F38/66_00_2.asm create mode 100644 unittests/ASM/H0F38/XX_00_2.asm diff --git a/unittests/ASM/H0F38/66_00_2.asm b/unittests/ASM/H0F38/66_00_2.asm new file mode 100644 index 000000000..e13631da7 --- /dev/null +++ b/unittests/ASM/H0F38/66_00_2.asm @@ -0,0 +1,36 @@ +%ifdef CONFIG +{ + "RegData": { + "XMM0": ["0x5858585858585858", "0x5858585858585858"], + "XMM1": ["0x0", "0x0"] + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [rdx + 8 * 0], rax +mov rax, 0x5152535455565758 +mov [rdx + 8 * 1], rax + +movaps xmm0, [rdx + 8 * 0] +movaps xmm1, [rdx + 8 * 0] + +lea rdx, [rel .data] + +pshufb xmm0, [rdx + 8 * 0] +pshufb xmm1, [rdx + 8 * 2] + +hlt + +align 8 +.data: +; Test bits with trash data in reserved bits to ensure it is ignored +; Select single element +dq 0x7878787878787878 +dq 0x7878787878787878 +; Clear element +dq 0xF0F0F0F0F0F0F0F0 +dq 0xF0F0F0F0F0F0F0F0 + diff --git a/unittests/ASM/H0F38/XX_00_2.asm b/unittests/ASM/H0F38/XX_00_2.asm new file mode 100644 index 000000000..fe0633927 --- /dev/null +++ b/unittests/ASM/H0F38/XX_00_2.asm @@ -0,0 +1,28 @@ +%ifdef CONFIG +{ + "RegData": { + "MM0": "0x4444444444444444", + "MM1": "0x0" + } +} +%endif + +lea rdx, [rel .data] + +movq mm0, [rdx + 8 * 0] +movq mm1, [rdx + 8 * 0] + +pshufb mm0, [rdx + 8 * 1] +pshufb mm1, [rdx + 8 * 2] + +hlt + +align 8 +.data: +; Incoming vector +dq 0x4142434445464748 +; Test bits with trash data in reserved bits to ensure it is ignored +; Select single element +dq 0x7C7C7C7C7C7C7C7C +; Clear element +dq 0xF8F8F8F8F8F8F8F8