aboutsummaryrefslogtreecommitdiff
path: root/test/protected_mode/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'test/protected_mode/mod.rs')
-rw-r--r--test/protected_mode/mod.rs37
1 files changed, 25 insertions, 12 deletions
diff --git a/test/protected_mode/mod.rs b/test/protected_mode/mod.rs
index f0450b1..a82c3bc 100644
--- a/test/protected_mode/mod.rs
+++ b/test/protected_mode/mod.rs
@@ -660,13 +660,13 @@ fn test_sse4_1() {
test_instr(&[0x66, 0x0f, 0x38, 0x20, 0x06], "pmovsxbw xmm0, qword [esi]");
test_invalid(&[0x0f, 0x38, 0x20, 0x06]);
- test_instr(&[0x66, 0x0f, 0x38, 0x21, 0x06], "pmovsxbd xmm0, qword [esi]");
+ test_instr(&[0x66, 0x0f, 0x38, 0x21, 0x06], "pmovsxbd xmm0, dword [esi]");
test_invalid(&[0x0f, 0x38, 0x21, 0x06]);
test_instr(&[0x66, 0x0f, 0x38, 0x22, 0x06], "pmovsxbq xmm0, word [esi]");
test_invalid(&[0x0f, 0x38, 0x22, 0x06]);
test_instr(&[0x66, 0x0f, 0x38, 0x23, 0x06], "pmovsxwd xmm0, qword [esi]");
test_invalid(&[0x0f, 0x38, 0x23, 0x06]);
- test_instr(&[0x66, 0x0f, 0x38, 0x24, 0x06], "pmovsxwq xmm0, qword [esi]");
+ test_instr(&[0x66, 0x0f, 0x38, 0x24, 0x06], "pmovsxwq xmm0, dword [esi]");
test_invalid(&[0x0f, 0x38, 0x24, 0x06]);
test_instr(&[0x66, 0x0f, 0x38, 0x25, 0x06], "pmovsxdq xmm0, qword [esi]");
test_invalid(&[0x0f, 0x38, 0x25, 0x06]);
@@ -721,9 +721,9 @@ fn test_sse4_1() {
test_invalid(&[0x0f, 0x3a, 0x08, 0x06]);
test_instr(&[0x66, 0x0f, 0x3a, 0x09, 0x06, 0x31], "roundpd xmm0, xmmword [esi], 0x31");
test_invalid(&[0x0f, 0x3a, 0x09, 0x06]);
- test_instr(&[0x66, 0x0f, 0x3a, 0x0a, 0x06, 0x31], "roundss xmm0, xmmword [esi], 0x31");
+ test_instr(&[0x66, 0x0f, 0x3a, 0x0a, 0x06, 0x31], "roundss xmm0, dword [esi], 0x31");
test_invalid(&[0x0f, 0x3a, 0x0a, 0x06]);
- test_instr(&[0x66, 0x0f, 0x3a, 0x0b, 0x06, 0x31], "roundsd xmm0, xmmword [esi], 0x31");
+ test_instr(&[0x66, 0x0f, 0x3a, 0x0b, 0x06, 0x31], "roundsd xmm0, qword [esi], 0x31");
test_invalid(&[0x0f, 0x3a, 0x0b, 0x06]);
test_instr(&[0x66, 0x0f, 0x3a, 0x0e, 0x06, 0x31], "pblendw xmm0, xmmword [esi], 0x31");
@@ -860,14 +860,14 @@ fn test_0f01() {
// test_display(&[0x0f, 0x01, 0xfe], "invlpgb rax, edx, ecx");
// test_display(&[0x0f, 0x01, 0xff], "tlbsync");
// test_display(&[0x2e, 0x67, 0x65, 0x2e, 0x46, 0x0f, 0x01, 0xff], "tlbsync");
- test_display(&[0x0f, 0x01, 0xe0], "smsw ax");
- test_display(&[0x0f, 0x01, 0xe1], "smsw cx");
- test_display(&[0x0f, 0x01, 0xe2], "smsw dx");
- test_display(&[0x0f, 0x01, 0xe3], "smsw bx");
- test_display(&[0x0f, 0x01, 0xe4], "smsw sp");
- test_display(&[0x0f, 0x01, 0xe5], "smsw bp");
- test_display(&[0x0f, 0x01, 0xe6], "smsw si");
- test_display(&[0x0f, 0x01, 0xe7], "smsw di");
+ test_display(&[0x0f, 0x01, 0xe0], "smsw eax");
+ test_display(&[0x0f, 0x01, 0xe1], "smsw ecx");
+ test_display(&[0x0f, 0x01, 0xe2], "smsw edx");
+ test_display(&[0x0f, 0x01, 0xe3], "smsw ebx");
+ test_display(&[0x0f, 0x01, 0xe4], "smsw esp");
+ test_display(&[0x0f, 0x01, 0xe5], "smsw ebp");
+ test_display(&[0x0f, 0x01, 0xe6], "smsw esi");
+ test_display(&[0x0f, 0x01, 0xe7], "smsw edi");
test_invalid(&[0x0f, 0x01, 0xe8]);
test_invalid(&[0x0f, 0x01, 0xe8]);
test_invalid(&[0x0f, 0x01, 0xe9]);
@@ -944,6 +944,19 @@ fn test_0fae() {
fn test_system() {
test_display(&[0x63, 0xc1], "arpl cx, ax");
test_display(&[0x63, 0x04, 0xba], "arpl word [edx + edi * 4], ax");
+ test_display(&[0x66, 0x0f, 0xb2, 0x00], "lss ax, word [eax]");
+ test_display(&[0x67, 0x0f, 0xb2, 0x00], "lss eax, far [bx + si * 1]");
+ test_display(&[0x0f, 0xb2, 0x00], "lss eax, far [eax]");
+ test_display(&[0x66, 0x0f, 0xb2, 0x00], "lss ax, word [eax]");
+ test_invalid(&[0x0f, 0x22, 0xc8]);
+ test_invalid(&[0x0f, 0x20, 0xc8]);
+ test_display(&[0x0f, 0x22, 0xd0], "mov cr2, eax");
+ test_invalid(&[0x0f, 0x22, 0xcf]);
+ test_display(&[0x0f, 0x22, 0xd7], "mov cr2, edi");
+ test_display(&[0x0f, 0x20, 0xd0], "mov eax, cr2");
+
+ test_display(&[0x0f, 0x23, 0xc8], "mov dr1, eax");
+ test_display(&[0x0f, 0x21, 0xc8], "mov eax, dr1");
test_display(&[0x0f, 0x06], "clts");
}