Skip to content

Commit bf13676

Browse files
committed
Add X86 disassembler support for XSAVE, XRSTOR, and XSAVEOPT.
llvm-svn: 141354
1 parent 5aebebe commit bf13676

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

llvm/lib/Target/X86/X86InstrSystem.td

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,21 @@ let Defs = [RDX, RAX], Uses = [RCX] in
406406
let Uses = [RDX, RAX, RCX] in
407407
def XSETBV : I<0x01, MRM_D1, (outs), (ins), "xsetbv", []>, TB;
408408

409+
let Uses = [RDX, RAX] in {
410+
def XSAVE : I<0xAE, MRM4m, (outs opaque512mem:$dst), (ins),
411+
"xsave\t$dst", []>, TB;
412+
def XSAVE64 : I<0xAE, MRM4m, (outs opaque512mem:$dst), (ins),
413+
"xsaveq\t$dst", []>, TB, REX_W, Requires<[In64BitMode]>;
414+
def XRSTOR : I<0xAE, MRM5m, (outs), (ins opaque512mem:$dst),
415+
"xrstor\t$dst", []>, TB;
416+
def XRSTOR64 : I<0xAE, MRM5m, (outs), (ins opaque512mem:$dst),
417+
"xrstorq\t$dst", []>, TB, REX_W, Requires<[In64BitMode]>;
418+
def XSAVEOPT : I<0xAE, MRM6m, (outs opaque512mem:$dst), (ins),
419+
"xsaveopt\t$dst", []>, TB;
420+
def XSAVEOPT64 : I<0xAE, MRM6m, (outs opaque512mem:$dst), (ins),
421+
"xsaveoptq\t$dst", []>, TB, REX_W, Requires<[In64BitMode]>;
422+
}
423+
409424
//===----------------------------------------------------------------------===//
410425
// VIA PadLock crypto instructions
411426
let Defs = [RAX, RDI], Uses = [RDX, RDI] in

llvm/test/MC/Disassembler/X86/simple-tests.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,3 +422,12 @@
422422

423423
# CHECK: vaddss %xmm1, %xmm0, %xmm0
424424
0xc5 0xfe 0x58 0xc1
425+
426+
# CHECK: xsave (%rax)
427+
0x0f 0xae 0x20
428+
429+
# CHECK: xrstor (%rax)
430+
0x0f 0xae 0x28
431+
432+
# CHECK: xsaveopt (%rax)
433+
0x0f 0xae 0x30

llvm/test/MC/Disassembler/X86/x86-32.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,3 +432,12 @@
432432

433433
# CHECK: vaddss %xmm1, %xmm0, %xmm0
434434
0xc5 0xfe 0x58 0xc1
435+
436+
# CHECK: xsave (%eax)
437+
0x0f 0xae 0x20
438+
439+
# CHECK: xrstor (%eax)
440+
0x0f 0xae 0x28
441+
442+
# CHECK: xsaveopt (%eax)
443+
0x0f 0xae 0x30

0 commit comments

Comments
 (0)