unittests/ASM: Extend pblendw test for all swizzles

We can't sanely test all 256 swizzle masks, so walk the array of random
data for each swizzle and CRC the results each step along the way.
This will give us a final result rather than each individual step.
This commit is contained in:
Ryan Houdek committed 2023-10-31 21:16:19 -07:00
1 parent f45722d2cd
commit f34f4a0227
1 file changed
+21 -1
+21 -1
View File
@@ -1,6 +1,7 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x00000000c3768da8",
"XMM1": ["0x48510f254d2fa47f", "0x2b5774313a974886"],
"XMM2": ["0x30b556de1f6d7718", "0x67d29af330ae762c"],
"XMM3": ["0xb615b953255b4cf4", "0xb76472a37404b890"],
@@ -8,7 +9,8 @@
"XMM5": ["0x4f1694dfa8fb773c", "0x19a26b823d3ca2a9"],
"XMM6": ["0x2ef9bb9202e0077f", "0xc97d9d031ed23dfa"],
"XMM7": ["0x944c0a76f8f69004", "0xb29bfeda8b8db7bc"],
"XMM8": ["0x10c41fa17837c17f", "0x099224327e5e296c"]
"XMM8": ["0x10c41fa17837c17f", "0x099224327e5e296c"],
"XMM9": ["0x48510f254d2fa47f", "0x2b5774313a974886"]
}
}
%endif
@@ -33,6 +35,21 @@ pblendw xmm6, [rdx + 16 * 13], 00011111b
pblendw xmm7, [rdx + 16 * 14], 00111111b
pblendw xmm8, [rdx + 16 * 15], 11111111b
; We can't test all 256 swizzles so loop and crc the results.
; Just loops over the 256-bytes of data, swizzling across all values for the swizzle.
mov rax, 0
%assign swizzle 0
%rep 256
movaps xmm9, [rdx + ((16 * swizzle) % 256)]
pblendw xmm9, [rdx + ((16 * swizzle + 16) % 256)], swizzle
movaps [rel .data_temp], xmm9
crc32 rax, qword [rel .data_temp]
crc32 rax, qword [rel .data_temp + 8]
%assign swizzle swizzle+1
%endrep
hlt
align 16
@@ -54,3 +71,6 @@ db 0x3c, 0x77, 0xfb, 0xa8, 0xdf, 0x94, 0x16, 0x4f, 0xc0, 0x78, 0x00, 0x76, 0x03,
db 0x7f, 0x07, 0xe0, 0x02, 0x92, 0xbb, 0xf9, 0x2e, 0xfa, 0x3d, 0x88, 0xc8, 0x24, 0x27, 0xa6, 0x1e
db 0x04, 0x90, 0xf6, 0xf8, 0x76, 0x0a, 0x4c, 0x94, 0xbc, 0xb7, 0x8d, 0x8b, 0xf9, 0x65, 0xf5, 0x07
db 0x7f, 0xc1, 0x37, 0x78, 0xa1, 0x1f, 0xc4, 0x10, 0x6c, 0x29, 0x5e, 0x7e, 0x32, 0x24, 0x92, 0x09
.data_temp:
dq 0, 0