From bbdb82bd41234021cc8dbe3337e88bd9f19cade9 Mon Sep 17 00:00:00 2001 From: iximeow Date: Fri, 17 Apr 2026 03:02:43 +0000 Subject: maskmov{q,dqu} memory access size --- test/long_mode/operand.rs | 8 ++++++++ test/protected_mode/operand.rs | 8 ++++++++ test/real_mode/operand.rs | 8 ++++++++ 3 files changed, 24 insertions(+) (limited to 'test') 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)); } -- cgit v1.1