diff options
author | Chris Lattner <sabre@nondot.org> | 2010-09-08 05:45:34 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-09-08 05:45:34 +0000 |
commit | ba8e81cca281a92fe30c25a10d8990521128be39 (patch) | |
tree | 55ebd932590df7600dbf1d69b33f410fab4d4cfc /lib | |
parent | ba8cea450f330145cc7764e23e5d8b1aadd5e131 (diff) | |
download | external_llvm-ba8e81cca281a92fe30c25a10d8990521128be39.zip external_llvm-ba8e81cca281a92fe30c25a10d8990521128be39.tar.gz external_llvm-ba8e81cca281a92fe30c25a10d8990521128be39.tar.bz2 |
implement proper support for sysret{,l,q}, rdar://8403907
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113350 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/X86/AsmParser/X86AsmParser.cpp | 1 | ||||
-rw-r--r-- | lib/Target/X86/X86Instr64bit.td | 4 | ||||
-rw-r--r-- | lib/Target/X86/X86InstrInfo.td | 4 |
3 files changed, 7 insertions, 2 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index 484ffce..90bd4e3 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -628,6 +628,7 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, .Case("repz", "rep") .Case("repnz", "repne") .Case("iret", "iretl") + .Case("sysret", "sysretl") .Case("push", Is64Bit ? "pushq" : "pushl") .Case("pushf", Is64Bit ? "pushfq" : "pushfl") .Case("popf", Is64Bit ? "popfq" : "popfl") diff --git a/lib/Target/X86/X86Instr64bit.td b/lib/Target/X86/X86Instr64bit.td index 5f6c68b..fe12a97 100644 --- a/lib/Target/X86/X86Instr64bit.td +++ b/lib/Target/X86/X86Instr64bit.td @@ -120,6 +120,10 @@ def ADJCALLSTACKUP64 : I<0, Pseudo, (outs), (ins i32imm:$amt1, i32imm:$amt2), def IRET64 : RI<0xcf, RawFrm, (outs), (ins), "iretq", []>, Requires<[In64BitMode]>; +def SYSRETQ : RI<0x07, RawFrm, + (outs), (ins), "sysretq", []>, TB, Requires<[In64BitMode]>; + + //===----------------------------------------------------------------------===// // Call Instructions... // diff --git a/lib/Target/X86/X86InstrInfo.td b/lib/Target/X86/X86InstrInfo.td index f50132b..875dfa2 100644 --- a/lib/Target/X86/X86InstrInfo.td +++ b/lib/Target/X86/X86InstrInfo.td @@ -971,8 +971,8 @@ def TRAP : I<0x0B, RawFrm, (outs), (ins), "ud2", [(trap)]>, TB; def SYSCALL : I<0x05, RawFrm, (outs), (ins), "syscall", []>, TB; -def SYSRET : I<0x07, RawFrm, - (outs), (ins), "sysret", []>, TB; +def SYSRETL : I<0x07, RawFrm, + (outs), (ins), "sysretl", []>, TB; def SYSENTER : I<0x34, RawFrm, (outs), (ins), "sysenter", []>, TB; def SYSEXIT : I<0x35, RawFrm, |