aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2026-04-17 03:02:43 +0000
committeriximeow <me@iximeow.net>2026-05-25 00:59:27 +0000
commitbbdb82bd41234021cc8dbe3337e88bd9f19cade9 (patch)
tree9135b6e5113c2e1455b4dcc00ccc4c0e77d6c941 /test
parent470ddb9a0329a8f1823674bca2c108e012ca2780 (diff)
maskmov{q,dqu} memory access size
Diffstat (limited to 'test')
-rw-r--r--test/long_mode/operand.rs8
-rw-r--r--test/protected_mode/operand.rs8
-rw-r--r--test/real_mode/operand.rs8
3 files changed, 24 insertions, 0 deletions
diff --git a/test/long_mode/operand.rs b/test/long_mode/operand.rs
index 9f594b5..379cc7b 100644
--- a/test/long_mode/operand.rs
+++ b/test/long_mode/operand.rs
@@ -29,6 +29,14 @@ fn memory_widths() {
assert_eq!(mem_size_of(&[0x48, 0x33, 0x00]).size_name(), "qword");
assert_eq!(mem_size_of(&[0x6a, 0x00]).size_name(), "qword");
assert_eq!(mem_size_of(&[0x68, 0x00, 0x00, 0x00, 0x00]).size_name(), "qword");
+
+ // "maskmovq mm0, mm1"
+ assert_eq!(mem_size_of(&[0x4f, 0x0f, 0xf7, 0xc1]).size_name(), "qword");
+ assert_eq!(mem_size_of(&[0x67, 0x0f, 0xf7, 0xc1]).size_name(), "qword");
+
+ // "maskmovdqu xmm0, xmm1"
+ assert_eq!(mem_size_of(&[0x66, 0x4f, 0x0f, 0xf7, 0xc1]).size_name(), "xmmword");
+ assert_eq!(mem_size_of(&[0x67, 0x66, 0x0f, 0xf7, 0xc1]).size_name(), "xmmword");
}
#[test]
diff --git a/test/protected_mode/operand.rs b/test/protected_mode/operand.rs
index 70dcadb..cfda896 100644
--- a/test/protected_mode/operand.rs
+++ b/test/protected_mode/operand.rs
@@ -25,6 +25,14 @@ fn memory_widths() {
assert_eq!(mem_size_of(&[0x32, 0x00]).size_name(), "byte");
assert_eq!(mem_size_of(&[0x66, 0x33, 0x00]).size_name(), "word");
assert_eq!(mem_size_of(&[0x33, 0x00]).size_name(), "dword");
+
+ // "maskmovq mm0, mm1"
+ assert_eq!(mem_size_of(&[0x0f, 0xf7, 0xc1]).size_name(), "qword");
+ assert_eq!(mem_size_of(&[0x67, 0x0f, 0xf7, 0xc1]).size_name(), "qword");
+
+ // "maskmovdqu xmm0, xmm1"
+ assert_eq!(mem_size_of(&[0x66, 0x0f, 0xf7, 0xc1]).size_name(), "xmmword");
+ assert_eq!(mem_size_of(&[0x67, 0x66, 0x0f, 0xf7, 0xc1]).size_name(), "xmmword");
}
#[test]
diff --git a/test/real_mode/operand.rs b/test/real_mode/operand.rs
index cdf5113..68eea48 100644
--- a/test/real_mode/operand.rs
+++ b/test/real_mode/operand.rs
@@ -36,4 +36,12 @@ fn test_implied_memory_width() {
assert_eq!(mem_size_of(&[0x0f, 0xa8]), Some(2));
// pop gs
assert_eq!(mem_size_of(&[0x0f, 0xa9]), Some(2));
+
+ // "maskmovq mm0, mm1"
+ assert_eq!(mem_size_of(&[0x0f, 0xf7, 0xc1]), Some(8));
+ assert_eq!(mem_size_of(&[0x67, 0x0f, 0xf7, 0xc1]), Some(8));
+
+ // "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));
}