diff options
author | Chris Lattner <sabre@nondot.org> | 2004-08-01 07:42:39 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-08-01 07:42:39 +0000 |
commit | 87c5905e0b6f551e21c9a96f1b6418920d908210 (patch) | |
tree | 0fb421aeb2b4b36d9de64878b7787154a022917e /utils/TableGen/CodeGenInstruction.h | |
parent | 3fa861ac6c0be7066e5287092035dbf73a1ae21f (diff) | |
download | llvm-87c5905e0b6f551e21c9a96f1b6418920d908210.tar.gz llvm-87c5905e0b6f551e21c9a96f1b6418920d908210.tar.bz2 llvm-87c5905e0b6f551e21c9a96f1b6418920d908210.tar.xz |
Parse the operand list of the instruction. We currently support register and immediate operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15390 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenInstruction.h')
-rw-r--r-- | utils/TableGen/CodeGenInstruction.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/utils/TableGen/CodeGenInstruction.h b/utils/TableGen/CodeGenInstruction.h index 88f2c17d9d..5269cc76e2 100644 --- a/utils/TableGen/CodeGenInstruction.h +++ b/utils/TableGen/CodeGenInstruction.h @@ -14,6 +14,7 @@ #ifndef CODEGEN_INSTRUCTION_H #define CODEGEN_INSTRUCTION_H +#include "llvm/CodeGen/ValueTypes.h" #include <string> #include <vector> #include <utility> @@ -29,10 +30,21 @@ namespace llvm { /// AsmString - The format string used to emit a .s file for the /// instruction. std::string AsmString; + + /// OperandInfo - For each operand declared in the OperandList of the + /// instruction, keep track of its record (which specifies the class of the + /// operand), its type, and the name given to the operand, if any. + struct OperandInfo { + Record *Rec; + MVT::ValueType Ty; + std::string Name; + OperandInfo(Record *R, MVT::ValueType T, const std::string &N) + : Rec(R), Ty(T), Name(N) {} + }; /// OperandList - The list of declared operands, along with their declared /// type (which is a record). - std::vector<std::pair<Record*, std::string> > OperandList; + std::vector<OperandInfo> OperandList; // Various boolean values we track for the instruction. bool isReturn; @@ -43,6 +55,11 @@ namespace llvm { bool isTerminator; CodeGenInstruction(Record *R); + + /// getOperandNamed - Return the index of the operand with the specified + /// non-empty name. If the instruction does not have an operand with the + /// specified name, throw an exception. + unsigned getOperandNamed(const std::string &Name) const; }; } |