diff options
Diffstat (limited to 'test/protected_mode/mod.rs')
| -rw-r--r-- | test/protected_mode/mod.rs | 37 |
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"); } |
