diff options
author | Chris Lattner <sabre@nondot.org> | 2010-11-06 07:31:43 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-11-06 07:31:43 +0000 |
commit | 8188fb264f28439e5deddae1efeee30f350b1302 (patch) | |
tree | 08f331e75a456b707106b78bed0aea0bf8566224 /llvm/lib/Target/X86 | |
parent | fecdad623755b657535fbb64b9af9fd9880bdf28 (diff) | |
download | bcm5719-llvm-8188fb264f28439e5deddae1efeee30f350b1302.tar.gz bcm5719-llvm-8188fb264f28439e5deddae1efeee30f350b1302.zip |
fix some bugs in the alias support, unblocking changing of "clr" aliases
from c++ hacks to proper .td InstAlias definitions. Change them!
llvm-svn: 118330
Diffstat (limited to 'llvm/lib/Target/X86')
-rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 11 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.td | 6 |
2 files changed, 6 insertions, 11 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index e57e34fb457..30d3a7e6c5a 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -983,17 +983,6 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, Operands[0] = X86Operand::CreateToken("fstps", NameLoc); } - - // "clr <reg>" -> "xor <reg>, <reg>". - if ((Name == "clrb" || Name == "clrw" || Name == "clrl" || Name == "clrq" || - Name == "clr") && Operands.size() == 2 && - static_cast<X86Operand*>(Operands[1])->isReg()) { - unsigned RegNo = static_cast<X86Operand*>(Operands[1])->getReg(); - Operands.push_back(X86Operand::CreateReg(RegNo, NameLoc, NameLoc)); - delete Operands[0]; - Operands[0] = X86Operand::CreateToken("xor", NameLoc); - } - // FIXME: Hack to handle recognize "aa[dm]" -> "aa[dm] $0xA". if ((Name.startswith("aad") || Name.startswith("aam")) && Operands.size() == 1) { diff --git a/llvm/lib/Target/X86/X86InstrInfo.td b/llvm/lib/Target/X86/X86InstrInfo.td index ad3fe1556be..fdb17a13724 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.td +++ b/llvm/lib/Target/X86/X86InstrInfo.td @@ -1370,6 +1370,12 @@ defm : IntegerCondCodeMnemonicAlias<"cmov", "q">; // Assembler Instruction Aliases //===----------------------------------------------------------------------===// +// clr aliases. +def : InstAlias<"clrb $reg", (XOR8rr GR8 :$reg, GR8 :$reg)>; +def : InstAlias<"clrw $reg", (XOR16rr GR16:$reg, GR16:$reg)>; +def : InstAlias<"clrl $reg", (XOR32rr GR32:$reg, GR32:$reg)>; +def : InstAlias<"clrq $reg", (XOR64rr GR64:$reg, GR64:$reg)>; + // movsx aliases def : InstAlias<"movsx $src, $dst", (MOVSX16rr8W GR16:$dst, GR8:$src)>; |