aboutsummaryrefslogtreecommitdiff
path: root/test/real_mode
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2026-05-02 22:04:07 +0000
committeriximeow <me@iximeow.net>2026-05-25 01:30:19 +0000
commit706ec278edebe06eff9f91f5cb30f5faba46132d (patch)
tree8b6dea2263c387fe0dfd9ea318b306cf26846b5f /test/real_mode
parent1652c236ee3441c89f294fda93faefadb10874e7 (diff)
vmaskmovdqu, vmovq were also incorrect in some ways...
Diffstat (limited to 'test/real_mode')
-rw-r--r--test/real_mode/mod.rs4
-rw-r--r--test/real_mode/operand.rs4
2 files changed, 7 insertions, 1 deletions
diff --git a/test/real_mode/mod.rs b/test/real_mode/mod.rs
index 90a6c60..f6ace8b 100644
--- a/test/real_mode/mod.rs
+++ b/test/real_mode/mod.rs
@@ -18244,6 +18244,7 @@ fn test_invalid_sequences() {
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_001, 0x14, 0b00_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_001, 0x15, 0b00_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_001, 0x16, 0b00_001_010, 0x77]);
+ test_invalid(&[0xc4, 0b110_00011, 0b0_0111_001, 0x38, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_001, 0x60, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_001, 0x61, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_001, 0x62, 0b11_001_010, 0x77]);
@@ -18254,6 +18255,7 @@ fn test_invalid_sequences() {
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_101, 0x20, 0b00_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_101, 0x21, 0b00_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_101, 0x22, 0b00_001_010, 0x77]);
+ test_invalid(&[0xc4, 0b110_00011, 0b0_0111_101, 0x39, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_101, 0x41, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_101, 0x60, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_0111_101, 0x61, 0b11_001_010, 0x77]);
@@ -18273,7 +18275,7 @@ fn test_invalid_sequences() {
test_invalid(&[0xc4, 0b110_00011, 0b0_1111_101, 0x62, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b0_1111_101, 0x63, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b1_0111_001, 0x16, 0b00_001_010, 0x77]);
- test_invalid(&[0xc4, 0b110_00011, 0b1_0111_001, 0x18, 0b11_001_010, 0x77]);
+ test_invalid(&[0xc4, 0b110_00011, 0b1_0111_001, 0x38, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b1_0111_001, 0x4c, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b1_0111_001, 0xdf, 0b11_001_010, 0x77]);
test_invalid(&[0xc4, 0b110_00011, 0b1_0111_101, 0x18, 0b11_001_010, 0x77]);
diff --git a/test/real_mode/operand.rs b/test/real_mode/operand.rs
index 68eea48..9b37f36 100644
--- a/test/real_mode/operand.rs
+++ b/test/real_mode/operand.rs
@@ -44,4 +44,8 @@ fn test_implied_memory_width() {
// "maskmovdqu xmm0, xmm1"
assert_eq!(mem_size_of(&[0x66, 0x0f, 0xf7, 0xc1]), Some(16));
assert_eq!(mem_size_of(&[0x67, 0x66, 0x0f, 0xf7, 0xc1]), Some(16));
+
+ // "vmaskmovdqu xmm0, xmm1"
+ assert_eq!(mem_size_of(&[0xc4, 0xe1, 0x79, 0xf7, 0xc1]), Some(16));
+ assert_eq!(mem_size_of(&[0x67, 0xc4, 0xe1, 0x79, 0xf7, 0xc1]), Some(16));
}