diff options
author | iximeow <me@iximeow.net> | 2023-12-16 15:05:08 -0800 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2023-12-16 15:05:08 -0800 |
commit | d7d84b3be6c929ee9d1b425a82b7121936a7cd34 (patch) | |
tree | 83dffdbf52d2ee3b19eba1cef44ea1f06bb86360 /test/real_mode | |
parent | 2d303b6121e318e30572dd1134ddb0cf12bd0776 (diff) |
fix incorrect register selection for `vpmov*2m` with `rex.r` set
Diffstat (limited to 'test/real_mode')
-rw-r--r-- | test/real_mode/mod.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/test/real_mode/mod.rs b/test/real_mode/mod.rs index a321e64..b422887 100644 --- a/test/real_mode/mod.rs +++ b/test/real_mode/mod.rs @@ -18406,6 +18406,11 @@ fn test_invalid_sequences() { test_display(&[0x62, 0xd2, 0x7e, 0x08, 0x28, 0xc2], "vpmovm2b xmm0, k2"); test_display(&[0x62, 0xf2, 0x7e, 0x08, 0x28, 0xc1], "vpmovm2b xmm0, k1"); + // vpmovb2m (and larger forms). out-of-range `k` are invalid in 64-bit mode, are part of the + // `bound` instruction for 32- and 16-bit modes. + test_display(&[0x62, 0x72, 0x7e /* , 0x28, 0x29, 0xfd */], "bound si, dword [bp + si * 1 + 0x7e]"); + test_display(&[0x62, 0xf2, 0x7e, 0x28, 0x29, 0xfd], "vpmovb2m k7, ymm5"); + } #[test] |