diff options
| author | Owen Anderson <resistor@mac.com> | 2011-07-28 21:54:31 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2011-07-28 21:54:31 +0000 |
| commit | e3591657a04fafc8c3676440464278402dcb6f38 (patch) | |
| tree | 8cef63b8a0aeb293af3054aefb8873907e497054 /llvm/utils/TableGen/FixedLenDecoderEmitter.h | |
| parent | c9a551ebed9fe4e5320a8c3d216d98907a8f20cc (diff) | |
| download | bcm5719-llvm-e3591657a04fafc8c3676440464278402dcb6f38.tar.gz bcm5719-llvm-e3591657a04fafc8c3676440464278402dcb6f38.zip | |
Enhance the fixed-length decoder emitter to support parsing scattered fields.
llvm-svn: 136405
Diffstat (limited to 'llvm/utils/TableGen/FixedLenDecoderEmitter.h')
| -rw-r--r-- | llvm/utils/TableGen/FixedLenDecoderEmitter.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/llvm/utils/TableGen/FixedLenDecoderEmitter.h b/llvm/utils/TableGen/FixedLenDecoderEmitter.h index fc3710e6904..300a2f49f80 100644 --- a/llvm/utils/TableGen/FixedLenDecoderEmitter.h +++ b/llvm/utils/TableGen/FixedLenDecoderEmitter.h @@ -22,13 +22,29 @@ namespace llvm { +struct EncodingField { + unsigned Base, Width, Offset; + EncodingField(unsigned B, unsigned W, unsigned O) + : Base(B), Width(W), Offset(O) { } +}; + struct OperandInfo { - unsigned FieldBase; - unsigned FieldLength; + std::vector<EncodingField> Fields; std::string Decoder; - OperandInfo(unsigned FB, unsigned FL, std::string D) - : FieldBase(FB), FieldLength(FL), Decoder(D) { } + OperandInfo(std::string D) + : Decoder(D) { } + + void addField(unsigned Base, unsigned Width, unsigned Offset) { + Fields.push_back(EncodingField(Base, Width, Offset)); + } + + unsigned numFields() { return Fields.size(); } + + typedef std::vector<EncodingField>::iterator iterator; + + iterator begin() { return Fields.begin(); } + iterator end() { return Fields.end(); } }; class FixedLenDecoderEmitter : public TableGenBackend { |

