From 0206479a08e2667177d93beb3181e752de54990a Mon Sep 17 00:00:00 2001 From: Justin Becker Date: Tue, 22 Sep 2026 11:35:58 -0700 Subject: [PATCH] Clarify new tests --- unittests/ASM/H0F3A/pcmpestri_ranges.asm | 41 ++++++++++++------------ unittests/ASM/H0F3A/pcmpistri_ranges.asm | 33 ++++++++++--------- 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/unittests/ASM/H0F3A/pcmpestri_ranges.asm b/unittests/ASM/H0F3A/pcmpestri_ranges.asm index fa8ef1f5d..536257677 100644 --- a/unittests/ASM/H0F3A/pcmpestri_ranges.asm +++ b/unittests/ASM/H0F3A/pcmpestri_ranges.asm @@ -2,11 +2,11 @@ { "RegData": { "RAX": ["2"], - "RDX": ["16"], - "XMM0": ["0x00060F000F000D01", "0x0000000101070007"], - "XMM1": ["0x3111313131311111", "0x0000001111313131"], - "XMM2": ["0x000000000010FFE0", "0x0000000000000000"], - "XMM3": ["0x7FFFFFF000050030", "0x00410010FFE08000"] + "RDX": ["6"], + "XMM0": ["0x00060F000F000D01", "0x0000000504070007"], + "XMM1": ["0x3111313131311111", "0x0000001919313131"], + "XMM2": ["0x000000000010FFF0", "0x0000000000000000"], + "XMM3": ["0xFFEF0011FF80007F", "0x000100000010FFF0"] }, "HostFeatures": ["SSE4.2"] } @@ -113,20 +113,21 @@ CompareAndStore 9, 0b00110101 ; Range unsigned word check (msb, negative masked) CompareAndStore 10, 0b01110101 -; --- Signed tests (range is empty when read as unsigned) --- +; --- 8-bit signed byte tests --- movaps xmm2, [rel .data_signed] movaps xmm3, [rel .data_signed + 32] -mov rax, 2 -mov rdx, 16 ; Range signed byte check (lsb, positive polarity) +mov rax, 2 +mov rdx, 6 CompareAndStore 11, 0b00000110 +; --- 16-bit signed word tests --- movaps xmm2, [rel .data16_signed] movaps xmm3, [rel .data16_signed + 32] -; Range signed word check (lsb, positive polarity) -CompareAndStore 12, 0b00000111 +; Range signed word check (msb, positive polarity) +CompareAndStore 12, 0b01000111 ; Load all our stored indices and flags for result comparing movaps xmm0, [rel .indices] @@ -158,26 +159,26 @@ dq 0x8888888888888888 dq 0x9999999999999999 .data_signed: -dq 0x00000000000010E0 ; Range [-32, 16] as signed bytes, [224, 16] as unsigned +dq 0x00000000000010F0 ; -16, 16 (240, 16 as unsigned, an empty range) dq 0x0000000000000000 dq 0xFFFFFFFFFFFFFFFF dq 0xEEEEEEEEEEEEEEEE -dq 0x1110E0907FF00530 ; 48, 5, -16, 127, -112, -32, 16, 17 -dq 0x004142434445FFDF ; -33, -1, then "EDCBA" (valid, all outside the range) +dq 0x010010F0EF11807F ; 127, -128, 17, -17, -16, 16 (followed by null and junk) +dq 0x0101010101010101 dq 0xFFFFFFFFFFFFFFFF dq 0xEEEEEEEEEEEEEEEE .data16_signed: -dq 0x000000000010FFE0 ; Range [-32, 16] as signed words, [65504, 16] as unsigned +dq 0x000000000010FFF0 ; -16, 16 (65520, 16 as unsigned, an empty range) dq 0x0000000000000000 -dq 0xFFFFFFFFFFFFFFFF -dq 0xEEEEEEEEEEEEEEEE +dq 0xAAAAAAAAAAAAAAAA +dq 0xBBBBBBBBBBBBBBBB -dq 0x7FFFFFF000050030 ; 48, 5, -16, 32767 -dq 0x00410010FFE08000 ; -32768, -32, 16, 65 -dq 0xFFFFFFFFFFFFFFFF -dq 0xEEEEEEEEEEEEEEEE +dq 0xFFEF0011FF80007F ; 127, -128, 17, -17 +dq 0x000100000010FFF0 ; -16, 16 (followed by null and junk) +dq 0x8888888888888888 +dq 0x9999999999999999 .indices: dq 0x0000000000000000 diff --git a/unittests/ASM/H0F3A/pcmpistri_ranges.asm b/unittests/ASM/H0F3A/pcmpistri_ranges.asm index 8f7d61ec0..9e4eb1197 100644 --- a/unittests/ASM/H0F3A/pcmpistri_ranges.asm +++ b/unittests/ASM/H0F3A/pcmpistri_ranges.asm @@ -1,10 +1,10 @@ %ifdef CONFIG { "RegData": { - "XMM0": ["0x00060F000F000D01", "0x0001011010070007"], + "XMM0": ["0x00060F000F000D01", "0x0005041010070007"], "XMM1": ["0x3111313131311111", "0x0019191818313131"], - "XMM2": ["0x000000000010FFE0", "0x0000000000000000"], - "XMM3": ["0x7FFFFFF000050030", "0x00000010FFE08000"] + "XMM2": ["0x000000000010FFF0", "0x0000000000000000"], + "XMM3": ["0xFFEF0011FF80007F", "0x000100000010FFF0"] }, "HostFeatures": ["SSE4.2"] } @@ -115,18 +115,19 @@ CompareAndStore 11, 0b01000110 ; Range signed byte check (lsb) CompareAndStore 12, 0b01000110 -; --- Signed tests (range is empty when read as unsigned) --- +; --- 8-bit signed byte tests --- movaps xmm2, [rel .data_signed] movaps xmm3, [rel .data_signed + 32] ; Range signed byte check (lsb, positive polarity) CompareAndStore 13, 0b00000110 +; --- 16-bit signed word tests --- movaps xmm2, [rel .data16_signed] movaps xmm3, [rel .data16_signed + 32] -; Range signed word check (lsb, positive polarity) -CompareAndStore 14, 0b00000111 +; Range signed word check (msb, positive polarity) +CompareAndStore 14, 0b01000111 ; Load all our stored indices and flags for result comparing movaps xmm0, [rel .indices] @@ -169,26 +170,26 @@ dq 0x8888888888888888 dq 0x9999999999999999 .data_signed: -dq 0x00000000000010E0 ; Range [-32, 16] as signed bytes, [224, 16] as unsigned +dq 0x00000000000010F0 ; -16, 16 (240, 16 as unsigned, an empty range) dq 0x0000000000000000 dq 0xFFFFFFFFFFFFFFFF dq 0xEEEEEEEEEEEEEEEE -dq 0x1110E0907FF00530 ; 48, 5, -16, 127, -112, -32, 16, 17 -dq 0x000000000000FFDF ; -33, -1, then null +dq 0x010010F0EF11807F ; 127, -128, 17, -17, -16, 16 (followed by null and junk) +dq 0x0101010101010101 dq 0xFFFFFFFFFFFFFFFF dq 0xEEEEEEEEEEEEEEEE .data16_signed: -dq 0x000000000010FFE0 ; Range [-32, 16] as signed words, [65504, 16] as unsigned +dq 0x000000000010FFF0 ; -16, 16 (65520, 16 as unsigned, an empty range) dq 0x0000000000000000 -dq 0xFFFFFFFFFFFFFFFF -dq 0xEEEEEEEEEEEEEEEE +dq 0xAAAAAAAAAAAAAAAA +dq 0xBBBBBBBBBBBBBBBB -dq 0x7FFFFFF000050030 ; 48, 5, -16, 32767 -dq 0x00000010FFE08000 ; -32768, -32, 16, then null -dq 0xFFFFFFFFFFFFFFFF -dq 0xEEEEEEEEEEEEEEEE +dq 0xFFEF0011FF80007F ; 127, -128, 17, -17 +dq 0x000100000010FFF0 ; -16, 16 (followed by null and junk) +dq 0x8888888888888888 +dq 0x9999999999999999 .indices: dq 0x0000000000000000