//===- ScheduleDFS.h - ILP metric for ScheduleDAGInstrs ---------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Definition of an ILP metric for machine level instruction scheduling. // //===----------------------------------------------------------------------===// #ifndef LLVM_CODEGEN_SCHEDULEDFS_H #define LLVM_CODEGEN_SCHEDULEDFS_H #include "llvm/ADT/SmallVector.h" #include "llvm/CodeGen/ScheduleDAG.h" #include <cassert> #include <cstdint> #include <vector> namespace llvm { template <typename T> class ArrayRef; class raw_ostream; /// Represent the ILP of the subDAG rooted at a DAG node. /// /// ILPValues summarize the DAG subtree rooted at each node. ILPValues are /// valid for all nodes regardless of their subtree membership. /// /// When computed using bottom-up DFS, this metric assumes that the DAG is a /// forest of trees with roots at the bottom of the schedule branching upward. struct ILPValue { … }; /// Compute the values of each DAG node for various metrics during DFS. class SchedDFSResult { … }; raw_ostream &operator<<(raw_ostream &OS, const ILPValue &Val); } // end namespace llvm #endif // LLVM_CODEGEN_SCHEDULEDFS_H