| //===--------------------- InstructionTables.h ------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| /// \file |
| /// |
| /// This file implements a custom driver to generate instruction tables. |
| /// See the description of command-line flag -instruction-tables in |
| /// docs/CommandGuide/lvm-mca.rst |
| /// |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_TOOLS_LLVM_MCA_INSTRUCTIONTABLES_H |
| #define LLVM_TOOLS_LLVM_MCA_INSTRUCTIONTABLES_H |
| |
| #include "View.h" |
| #include "InstrBuilder.h" |
| #include "SourceMgr.h" |
| #include "llvm/ADT/SmallVector.h" |
| #include "llvm/MC/MCSchedule.h" |
| |
| namespace mca { |
| |
| class InstructionTables { |
| const llvm::MCSchedModel &SM; |
| InstrBuilder &IB; |
| SourceMgr &S; |
| llvm::SmallVector<std::unique_ptr<View>, 8> Views; |
| |
| public: |
| InstructionTables(const llvm::MCSchedModel &Model, InstrBuilder &Builder, |
| SourceMgr &Source) |
| : SM(Model), IB(Builder), S(Source) {} |
| |
| void addView(std::unique_ptr<View> V) { |
| Views.emplace_back(std::move(V)); |
| } |
| |
| void run(); |
| |
| void printReport(llvm::raw_ostream &OS) const; |
| }; |
| } // namespace mca |
| |
| #endif |