From 9f8f3a2c59e5d0e077a36d7cfd0fa91686538bd9 Mon Sep 17 00:00:00 2001 From: Joerg Sonnenberger Date: Thu, 17 Feb 2011 23:36:39 +0000 Subject: [PATCH] Recognize leavel and leaveq aliases for leave. Validate encoding of leave in 64bit mode. llvm-svn: 125795 --- lib/Target/X86/X86InstrInfo.td | 3 +++ test/MC/X86/x86-32-coverage.s | 7 +++++++ test/MC/X86/x86_64-encoding.s | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/lib/Target/X86/X86InstrInfo.td b/lib/Target/X86/X86InstrInfo.td index 14c90662d02..221aa2fdc33 100644 --- a/lib/Target/X86/X86InstrInfo.td +++ b/lib/Target/X86/X86InstrInfo.td @@ -1293,6 +1293,9 @@ def : MnemonicAlias<"cdqe", "cltq">; // lret maps to lretl, it is not ambiguous with lretq. def : MnemonicAlias<"lret", "lretl">; +def : MnemonicAlias<"leavel", "leave">, Requires<[In32BitMode]>; +def : MnemonicAlias<"leaveq", "leave">, Requires<[In64BitMode]>; + def : MnemonicAlias<"pop", "popl">, Requires<[In32BitMode]>; def : MnemonicAlias<"pop", "popq">, Requires<[In64BitMode]>; def : MnemonicAlias<"popf", "popfl">, Requires<[In32BitMode]>; diff --git a/test/MC/X86/x86-32-coverage.s b/test/MC/X86/x86-32-coverage.s index ea30e8d022f..4ec9fcdb1ee 100644 --- a/test/MC/X86/x86-32-coverage.s +++ b/test/MC/X86/x86-32-coverage.s @@ -267,6 +267,9 @@ // CHECK: leave leave +// CHECK: leave + leavel + // CHECK: seto %bl seto %bl @@ -3330,6 +3333,10 @@ // CHECK: encoding: [0xc9] leave +// CHECK: leave +// CHECK: encoding: [0xc9] + leavel + // CHECK: seto %bl // CHECK: encoding: [0x0f,0x90,0xc3] seto %bl diff --git a/test/MC/X86/x86_64-encoding.s b/test/MC/X86/x86_64-encoding.s index c071a1b765e..756da4dc352 100644 --- a/test/MC/X86/x86_64-encoding.s +++ b/test/MC/X86/x86_64-encoding.s @@ -148,3 +148,10 @@ pshufb CPI1_0(%rip), %xmm1 // CHECK: encoding: [0x48,0x0f,0xae,0x08] fxrstorq (%rax) +// CHECK: leave +// CHECK: encoding: [0xc9] + leave + +// CHECK: leave +// CHECK: encoding: [0xc9] + leaveq