CIRCT  20.0.0git
Classes | Namespaces | Typedefs | Functions
Utilities.h File Reference
#include "circt/Dialect/SSP/SSPAttributes.h"
#include "circt/Dialect/SSP/SSPOps.h"
#include "circt/Scheduling/Problems.h"
#include "circt/Support/ValueMapper.h"
#include "mlir/IR/ImplicitLocOpBuilder.h"
#include "mlir/IR/SymbolTable.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/TypeSwitch.h"
#include <functional>
Include dependency graph for Utilities.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  circt::ssp::Default< ProblemT >
 Dummy struct to query a problem's default properties (i.e. More...
 
struct  circt::ssp::Default< scheduling::Problem >
 
struct  circt::ssp::Default< scheduling::CyclicProblem >
 
struct  circt::ssp::Default< scheduling::ChainingProblem >
 
struct  circt::ssp::Default< scheduling::SharedOperatorsProblem >
 
struct  circt::ssp::Default< scheduling::ModuloProblem >
 
struct  circt::ssp::Default< scheduling::ChainingCyclicProblem >
 

Namespaces

 circt
 The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
 
 circt::ssp
 

Typedefs

using circt::ssp::OperatorType = scheduling::Problem::OperatorType
 
using circt::ssp::Dependence = scheduling::Problem::Dependence
 

Functions

template<typename ProblemT >
void circt::ssp::loadOperationProperties (ProblemT &, Operation *, ArrayAttr)
 
template<typename ProblemT , typename OperationPropertyT , typename... OperationPropertyTs>
void circt::ssp::loadOperationProperties (ProblemT &prob, Operation *op, ArrayAttr props)
 
template<typename ProblemT >
void circt::ssp::loadOperatorTypeProperties (ProblemT &, OperatorType, ArrayAttr)
 
template<typename ProblemT , typename OperatorTypePropertyT , typename... OperatorTypePropertyTs>
void circt::ssp::loadOperatorTypeProperties (ProblemT &prob, OperatorType opr, ArrayAttr props)
 
template<typename ProblemT >
void circt::ssp::loadDependenceProperties (ProblemT &, Dependence, ArrayAttr)
 
template<typename ProblemT , typename DependencePropertyT , typename... DependencePropertyTs>
void circt::ssp::loadDependenceProperties (ProblemT &prob, Dependence dep, ArrayAttr props)
 
template<typename ProblemT >
void circt::ssp::loadInstanceProperties (ProblemT &, ArrayAttr)
 
template<typename ProblemT , typename InstancePropertyT , typename... InstancePropertyTs>
void circt::ssp::loadInstanceProperties (ProblemT &prob, ArrayAttr props)
 
template<typename ProblemT , typename... OperatorTypePropertyTs>
OperatorType circt::ssp::loadOperatorType (ProblemT &prob, OperatorTypeOp oprOp, SmallDenseMap< StringAttr, unsigned > &oprIds)
 Load the operator type represented by oprOp into prob under a unique name informed by oprIds, and attempt to set its properties from the given attribute classes. More...
 
template<typename ProblemT , typename... OperationPropertyTs, typename... OperatorTypePropertyTs, typename... DependencePropertyTs, typename... InstancePropertyTs>
ProblemT circt::ssp::loadProblem (InstanceOp instOp, std::tuple< OperationPropertyTs... > opProps, std::tuple< OperatorTypePropertyTs... > oprProps, std::tuple< DependencePropertyTs... > depProps, std::tuple< InstancePropertyTs... > instProps)
 Construct an instance of ProblemT from instOp, and attempt to set properties from the given attribute classes. More...
 
template<typename ProblemT , typename... OperationPropertyTs>
ArrayAttr circt::ssp::saveOperationProperties (ProblemT &prob, Operation *op, ImplicitLocOpBuilder &b)
 
template<typename ProblemT , typename... OperatorTypePropertyTs>
ArrayAttr circt::ssp::saveOperatorTypeProperties (ProblemT &prob, OperatorType opr, ImplicitLocOpBuilder &b)
 
template<typename ProblemT , typename... DependencePropertyTs>
ArrayAttr circt::ssp::saveDependenceProperties (ProblemT &prob, Dependence dep, ImplicitLocOpBuilder &b)
 
template<typename ProblemT , typename... InstancePropertyTs>
ArrayAttr circt::ssp::saveInstanceProperties (ProblemT &prob, ImplicitLocOpBuilder &b)
 
template<typename ProblemT , typename... OperationPropertyTs, typename... OperatorTypePropertyTs, typename... DependencePropertyTs, typename... InstancePropertyTs>
InstanceOp circt::ssp::saveProblem (ProblemT &prob, std::tuple< OperationPropertyTs... > opProps, std::tuple< OperatorTypePropertyTs... > oprProps, std::tuple< DependencePropertyTs... > depProps, std::tuple< InstancePropertyTs... > instProps, OpBuilder &builder)
 Construct an InstanceOp from a given ProblemT instance, and create/attach attributes of the given classes for the corresponding properties on the scheduling problem. More...
 
template<typename ProblemT >
ProblemT circt::ssp::loadProblem (InstanceOp instOp)
 Construct an instance of ProblemT from instOp, and attempt to set all of the problem class' properties. More...
 
template<typename ProblemT >
InstanceOp circt::ssp::saveProblem (ProblemT &prob, OpBuilder &builder)
 Construct an InstanceOp from a given ProblemT instance, and create/attach attributes for all of the problem class' properties. More...