diff options
author | Tim Northover <tnorthover@apple.com> | 2014-05-15 13:36:01 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2014-05-15 13:36:01 +0000 |
commit | d0e93f24406585ec3c71bf62690cf61570355894 (patch) | |
tree | e203408a3a1948c77b93d0d20f339fc7cf72b08b /utils/TableGen/CodeGenInstruction.cpp | |
parent | 9f6a386e6a7a8931f824a95f995e76ce32de2e30 (diff) | |
download | llvm-d0e93f24406585ec3c71bf62690cf61570355894.tar.gz llvm-d0e93f24406585ec3c71bf62690cf61570355894.tar.bz2 llvm-d0e93f24406585ec3c71bf62690cf61570355894.tar.xz |
TableGen: use correct MIOperand when printing aliases
Previously, TableGen assumed that every aliased operand consumed precisely 1
MachineInstr slot (this was reasonable because until a couple of days ago,
nothing more complicated was eligible for printing).
This allows a couple more ARM64 aliases to print so we can remove the special
code.
On the X86 side, I've gone for explicit AT&T size specifiers as the default, so
turned off a few of the aliases that would have just started printing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208880 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenInstruction.cpp')
-rw-r--r-- | utils/TableGen/CodeGenInstruction.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/utils/TableGen/CodeGenInstruction.cpp b/utils/TableGen/CodeGenInstruction.cpp index c924ce8d83..2577ad4d91 100644 --- a/utils/TableGen/CodeGenInstruction.cpp +++ b/utils/TableGen/CodeGenInstruction.cpp @@ -536,6 +536,23 @@ bool CodeGenInstAlias::tryAliasOpMatch(DagInit *Result, unsigned AliasOpNo, return false; } +unsigned CodeGenInstAlias::ResultOperand::getMINumOperands() const { + if (!isRecord()) + return 1; + + Record *Rec = getRecord(); + if (!Rec->isSubClassOf("Operand")) + return 1; + + DagInit *MIOpInfo = Rec->getValueAsDag("MIOperandInfo"); + if (MIOpInfo->getNumArgs() == 0) { + // Unspecified, so it defaults to 1 + return 1; + } + + return MIOpInfo->getNumArgs(); +} + CodeGenInstAlias::CodeGenInstAlias(Record *R, unsigned Variant, CodeGenTarget &T) : TheDef(R) { |