diff options
| -rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86Instr64bit.td | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.td | 4 | ||||
| -rw-r--r-- | llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s | 8 | ||||
| -rw-r--r-- | llvm/test/MC/AsmParser/X86/x86_64-new-encoder.s | 11 | 
5 files changed, 25 insertions, 3 deletions
| diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 484ffce8c6d..90bd4e3d1b5 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/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/llvm/lib/Target/X86/X86Instr64bit.td b/llvm/lib/Target/X86/X86Instr64bit.td index 5f6c68bf882..fe12a97c77a 100644 --- a/llvm/lib/Target/X86/X86Instr64bit.td +++ b/llvm/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/llvm/lib/Target/X86/X86InstrInfo.td b/llvm/lib/Target/X86/X86InstrInfo.td index f50132b2170..875dfa26235 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.td +++ b/llvm/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, diff --git a/llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s b/llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s index e99af15a1da..ed8ee868196 100644 --- a/llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s +++ b/llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s @@ -444,3 +444,11 @@ iretw  iretl  // CHECK: iretl  // CHECK: encoding: [0xcf] + +// rdar://8403907 +sysret +// CHECK: sysretl +// CHECK: encoding: [0x0f,0x07] +sysretl +// CHECK: sysretl +// CHECK: encoding: [0x0f,0x07] diff --git a/llvm/test/MC/AsmParser/X86/x86_64-new-encoder.s b/llvm/test/MC/AsmParser/X86/x86_64-new-encoder.s index 75a424322b4..6f5f8fae1d0 100644 --- a/llvm/test/MC/AsmParser/X86/x86_64-new-encoder.s +++ b/llvm/test/MC/AsmParser/X86/x86_64-new-encoder.s @@ -201,4 +201,13 @@ iretq  // CHECK: iretq  // CHECK: encoding: [0x48,0xcf] - +// rdar://8403907 +sysret +// CHECK: sysretl +// CHECK: encoding: [0x0f,0x07] +sysretl +// CHECK: sysretl +// CHECK: encoding: [0x0f,0x07] +sysretq +// CHECK: sysretq +// CHECK: encoding: [0x48,0x0f,0x07] | 

