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 | 5572682faa70805397a0722850da7c3b20fcb643 (patch) | |
| tree | 1ef1022556c36aa7c47c8e96216cf08e540bbf4a /llvm/utils/TableGen/CodeGenInstruction.h | |
| parent | 9520d20c8315c816ef3155e7aaffab6564e6b6cd (diff) | |
| download | bcm5719-llvm-5572682faa70805397a0722850da7c3b20fcb643.tar.gz bcm5719-llvm-5572682faa70805397a0722850da7c3b20fcb643.zip | |
Parse the operand list of the instruction. We currently support register and immediate operands.
llvm-svn: 15390
Diffstat (limited to 'llvm/utils/TableGen/CodeGenInstruction.h')
| -rw-r--r-- | llvm/utils/TableGen/CodeGenInstruction.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/CodeGenInstruction.h b/llvm/utils/TableGen/CodeGenInstruction.h index 88f2c17d9d8..5269cc76e2b 100644 --- a/llvm/utils/TableGen/CodeGenInstruction.h +++ b/llvm/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; }; } |

