mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-15 09:33:39 +00:00
Change the sysexit mnemonic (and sysexitl) to never have the REX.W prefix and
not depend on In32BitMode. Use the sysexitq mnemonic for the version with the REX.W prefix and only allow it only In64BitMode. rdar://9738584 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143112 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
88484c0030
commit
55c4127134
@ -1573,6 +1573,7 @@ def : MnemonicAlias<"verrw", "verr">;
|
||||
// System instruction aliases.
|
||||
def : MnemonicAlias<"iret", "iretl">;
|
||||
def : MnemonicAlias<"sysret", "sysretl">;
|
||||
def : MnemonicAlias<"sysexit", "sysexitl">;
|
||||
|
||||
def : MnemonicAlias<"lgdtl", "lgdt">, Requires<[In32BitMode]>;
|
||||
def : MnemonicAlias<"lgdtq", "lgdt">, Requires<[In64BitMode]>;
|
||||
|
@ -51,9 +51,8 @@ def SYSRETQ :RI<0x07, RawFrm, (outs), (ins), "sysretq", []>, TB,
|
||||
|
||||
def SYSENTER : I<0x34, RawFrm, (outs), (ins), "sysenter", []>, TB;
|
||||
|
||||
def SYSEXIT : I<0x35, RawFrm, (outs), (ins), "sysexit", []>, TB,
|
||||
Requires<[In32BitMode]>;
|
||||
def SYSEXIT64 :RI<0x35, RawFrm, (outs), (ins), "sysexit", []>, TB,
|
||||
def SYSEXIT : I<0x35, RawFrm, (outs), (ins), "sysexitl", []>, TB;
|
||||
def SYSEXIT64 :RI<0x35, RawFrm, (outs), (ins), "sysexitq", []>, TB,
|
||||
Requires<[In64BitMode]>;
|
||||
|
||||
def IRET16 : I<0xcf, RawFrm, (outs), (ins), "iretw", []>, OpSize;
|
||||
|
@ -500,6 +500,9 @@
|
||||
// CHECK: sysexit
|
||||
sysexit
|
||||
|
||||
// CHECK: sysexitl
|
||||
sysexitl
|
||||
|
||||
// CHECK: ud2
|
||||
ud2
|
||||
|
||||
@ -4417,6 +4420,10 @@
|
||||
// CHECK: encoding: [0x0f,0x35]
|
||||
sysexit
|
||||
|
||||
// CHECK: sysexitl
|
||||
// CHECK: encoding: [0x0f,0x35]
|
||||
sysexitl
|
||||
|
||||
// CHECK: fxsave 3735928559(%ebx,%ecx,8)
|
||||
// CHECK: encoding: [0x0f,0xae,0x84,0xcb,0xef,0xbe,0xad,0xde]
|
||||
fxsave 0xdeadbeef(%ebx,%ecx,8)
|
||||
|
@ -1191,3 +1191,15 @@ xchgl %ecx, %eax
|
||||
// CHECK: xchgl %ecx, %eax
|
||||
// CHECK: encoding: [0x91]
|
||||
xchgl %eax, %ecx
|
||||
|
||||
// CHECK: sysexit
|
||||
// CHECK: encoding: [0x0f,0x35]
|
||||
sysexit
|
||||
|
||||
// CHECK: sysexitl
|
||||
// CHECK: encoding: [0x0f,0x35]
|
||||
sysexitl
|
||||
|
||||
// CHECK: sysexitq
|
||||
// CHECK: encoding: [0x48,0x0f,0x35]
|
||||
sysexitq
|
||||
|
@ -18,3 +18,5 @@ addl $0, 0(%rax)
|
||||
|
||||
movl 0(%rax), 0(%edx) // error: invalid operand for instruction
|
||||
|
||||
// 32: error: instruction requires a CPU feature not currently enabled
|
||||
sysexitq
|
||||
|
Loading…
x
Reference in New Issue
Block a user