[llvm] r282601 - [x86] Accept 'retn' as an alias to 'ret[lqw]'\'ret' (At&t\Intel)

Marina Yatsina via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 28 08:52:56 PDT 2016


Author: myatsina
Date: Wed Sep 28 10:52:56 2016
New Revision: 282601

URL: http://llvm.org/viewvc/llvm-project?rev=282601&view=rev
Log:
[x86] Accept 'retn' as an alias to 'ret[lqw]'\'ret' (At&t\Intel)

Implement 'retn' simply by aliasing it to the relevant 'ret' instruction

Commit on behalf of coby

Differential Revision: https://reviews.llvm.org/D24346


Modified:
    llvm/trunk/lib/Target/X86/X86InstrInfo.td
    llvm/trunk/test/MC/X86/ret.s

Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=282601&r1=282600&r2=282601&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Wed Sep 28 10:52:56 2016
@@ -2630,6 +2630,12 @@ def : MnemonicAlias<"ret", "retw", "att"
 def : MnemonicAlias<"ret", "retl", "att">, Requires<[In32BitMode]>;
 def : MnemonicAlias<"ret", "retq", "att">, Requires<[In64BitMode]>;
 
+// Apply 'ret' behavior to 'retn'
+def : MnemonicAlias<"retn", "retw", "att">, Requires<[In16BitMode]>;
+def : MnemonicAlias<"retn", "retl", "att">, Requires<[In32BitMode]>;
+def : MnemonicAlias<"retn", "retq", "att">, Requires<[In64BitMode]>;
+def : MnemonicAlias<"retn", "ret", "intel">;
+
 def : MnemonicAlias<"sal", "shl", "intel">;
 def : MnemonicAlias<"salb", "shlb", "att">;
 def : MnemonicAlias<"salw", "shlw", "att">;

Modified: llvm/trunk/test/MC/X86/ret.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/X86/ret.s?rev=282601&r1=282600&r2=282601&view=diff
==============================================================================
--- llvm/trunk/test/MC/X86/ret.s (original)
+++ llvm/trunk/test/MC/X86/ret.s Wed Sep 28 10:52:56 2016
@@ -57,6 +57,22 @@
 // ERR32: error: instruction requires: 64-bit mode
 // ERR16: error: instruction requires: 64-bit mode
 
+	retn
+// 64: retq
+// 64: encoding: [0xc3]
+// 32: retl
+// 32: encoding: [0xc3]
+// 16: retw
+// 16: encoding: [0xc3]
+
+  retn $0
+// 64: retq $0
+// 64: encoding: [0xc2,0x00,0x00]
+// 32: retl $0
+// 32: encoding: [0xc2,0x00,0x00]
+// 16: retw $0
+// 16: encoding: [0xc2,0x00,0x00]
+
 	lret
 // 64: lretl
 // 64: encoding: [0xcb]




More information about the llvm-commits mailing list