diff options
author | Chris Lattner <sabre@nondot.org> | 2010-11-06 19:57:21 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-11-06 19:57:21 +0000 |
commit | 4869d346e3c50fd7182c275a21169722161d541c (patch) | |
tree | 34aa070844a2506f1207b3c23bc7af174519095d /llvm/lib/Target/X86/AsmParser | |
parent | 7cef447c14472adadfd4dc4915df591aeef0511f (diff) | |
download | bcm5719-llvm-4869d346e3c50fd7182c275a21169722161d541c.tar.gz bcm5719-llvm-4869d346e3c50fd7182c275a21169722161d541c.zip |
add (and document) the ability for alias results to have
fixed physical registers. Start moving fp comparison
aliases to the .td file (which default to using %st1 if
nothing is specified).
llvm-svn: 118352
Diffstat (limited to 'llvm/lib/Target/X86/AsmParser')
-rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 9ab6b56c8f0..eaa69f1708d 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -821,7 +821,7 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, // The assembler accepts these instructions with no operand as a synonym for // an instruction acting on st(1). e.g. "fxch" -> "fxch %st(1)". - if ((Name == "fxch" || Name == "fucom" || Name == "fucomp" || + if ((Name == "fxch" || Name == "faddp" || Name == "fsubp" || Name == "fsubrp" || Name == "fmulp" || Name == "fdivp" || Name == "fdivrp") && Operands.size() == 1) { @@ -829,18 +829,6 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, NameLoc, NameLoc)); } - // The assembler accepts these instructions with two few operands as a synonym - // for taking %st(1),%st(0) or X, %st(0). - if ((Name == "fcomi" || Name == "fucomi" || Name == "fucompi" || - Name == "fcompi" ) && - Operands.size() < 3) { - if (Operands.size() == 1) - Operands.push_back(X86Operand::CreateReg(MatchRegisterName("st(1)"), - NameLoc, NameLoc)); - Operands.push_back(X86Operand::CreateReg(MatchRegisterName("st(0)"), - NameLoc, NameLoc)); - } - return false; } @@ -854,6 +842,8 @@ MatchAndEmitInstruction(SMLoc IDLoc, // First, handle aliases that expand to multiple instructions. // FIXME: This should be replaced with a real .td file alias mechanism. + // Also, MatchInstructionImpl should do actually *do* the EmitInstruction + // call. if (Op->getToken() == "fstsw" || Op->getToken() == "fstcw" || Op->getToken() == "fstsww" || Op->getToken() == "fstcww" || Op->getToken() == "finit" || Op->getToken() == "fsave" || |