diff options
author | Justin Bogner <mail@justinbogner.com> | 2016-07-15 16:31:37 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2016-07-15 16:31:37 +0000 |
commit | 92a8c6112c6571112e8b622bfddc7e4d1685a6fe (patch) | |
tree | b64e83abab5974bab6c86724769cebbc6f8cf2eb /llvm/utils/TableGen/CodeGenIntrinsics.h | |
parent | f24f468e6de5119a934da72b50d39cab21c63de9 (diff) | |
download | bcm5719-llvm-92a8c6112c6571112e8b622bfddc7e4d1685a6fe.tar.gz bcm5719-llvm-92a8c6112c6571112e8b622bfddc7e4d1685a6fe.zip |
IR: Sort generic intrinsics before target specific ones
This splits out the intrinsic table such that generic intrinsics come
first and target specific intrinsics are grouped by target. From here
we can find out which target an intrinsic is for or differentiate
between generic and target intrinsics.
The motivation here is to make it easier to move target specific
intrinsic handling out of generic code.
llvm-svn: 275575
Diffstat (limited to 'llvm/utils/TableGen/CodeGenIntrinsics.h')
-rw-r--r-- | llvm/utils/TableGen/CodeGenIntrinsics.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/llvm/utils/TableGen/CodeGenIntrinsics.h b/llvm/utils/TableGen/CodeGenIntrinsics.h index 76554a52a15..ea3ec67d62e 100644 --- a/llvm/utils/TableGen/CodeGenIntrinsics.h +++ b/llvm/utils/TableGen/CodeGenIntrinsics.h @@ -114,9 +114,27 @@ struct CodeGenIntrinsic { CodeGenIntrinsic(Record *R); }; -/// Read all of the intrinsics defined in the specified .td file. -std::vector<CodeGenIntrinsic> LoadIntrinsics(const RecordKeeper &RC, - bool TargetOnly); +class CodeGenIntrinsicTable { + std::vector<CodeGenIntrinsic> Intrinsics; + +public: + struct TargetSet { + std::string Name; + size_t Offset; + size_t Count; + }; + std::vector<TargetSet> Targets; + + explicit CodeGenIntrinsicTable(const RecordKeeper &RC, bool TargetOnly); + CodeGenIntrinsicTable() = default; + + bool empty() const { return Intrinsics.empty(); } + size_t size() const { return Intrinsics.size(); } + CodeGenIntrinsic &operator[](size_t Pos) { return Intrinsics[Pos]; } + const CodeGenIntrinsic &operator[](size_t Pos) const { + return Intrinsics[Pos]; + } +}; } #endif |