CIRCT  20.0.0git
Classes | Namespaces | Typedefs | Functions
CalyxLoweringUtils.h File Reference
#include "circt/Dialect/Calyx/CalyxHelpers.h"
#include "circt/Dialect/Calyx/CalyxOps.h"
#include "circt/Dialect/Comb/CombOps.h"
#include "circt/Support/LLVM.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/IR/AsmState.h"
#include "mlir/IR/PatternMatch.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/TypeSwitch.h"
#include <variant>
Include dependency graph for CalyxLoweringUtils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  circt::calyx::MemoryPortsImpl
 
struct  circt::calyx::MemoryInterface
 
class  circt::calyx::BasicLoopInterface
 
class  circt::calyx::LoopInterface
 
class  circt::calyx::WhileOpInterface< T >
 
class  circt::calyx::RepeatOpInterface< T >
 
class  circt::calyx::SchedulerInterface< T >
 Holds common utilities used for scheduling when lowering to Calyx. More...
 
class  circt::calyx::LoopLoweringStateInterface< Loop >
 
class  circt::calyx::ComponentLoweringStateInterface
 
class  circt::calyx::CalyxLoweringState
 An interface for conversion passes that lower Calyx programs. More...
 
class  circt::calyx::PartialLoweringPattern< OpType, RewritePatternType >
 Base class for partial lowering passes. More...
 
class  circt::calyx::FuncOpPartialLoweringPattern
 FuncOpPartialLoweringPatterns are patterns which intend to match on FuncOps and then perform their own walking of the IR. More...
 
class  circt::calyx::ConvertIndexTypes
 Converts all index-typed operations and values to i32 values. More...
 
struct  circt::calyx::NonTerminatingGroupDonePattern
 GroupDoneOp's are terminator operations and should therefore be the last operator in a group. More...
 
struct  circt::calyx::MultipleGroupDonePattern
 When building groups which contain accesses to multiple sequential components, a group_done op is created for each of these. More...
 
struct  circt::calyx::EliminateUnusedCombGroups
 Removes calyx::CombGroupOps which are unused. More...
 
class  circt::calyx::InlineCombGroups
 This pass recursively inlines use-def chains of combinational logic (from non-stateful groups) into groups referenced in the control schedule. More...
 
class  circt::calyx::RewriteMemoryAccesses
 This pass rewrites memory accesses that have a width mismatch. More...
 
class  circt::calyx::BuildBasicBlockRegs
 Builds registers for each block argument in the program. More...
 
class  circt::calyx::BuildReturnRegs
 Builds registers for the return statement of the program and constant assignments to the component return value. More...
 
class  circt::calyx::BuildCallInstance
 Builds instance for the calyx.invoke and calyx.group in order to initialize the instance. More...
 

Namespaces

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

Typedefs

using circt::calyx::PatternApplicationState = DenseMap< const mlir::RewritePattern *, SmallPtrSet< Operation *, 16 > >
 Extra state that is passed to all PartialLoweringPatterns so they can record when they have run on an Operation, and only run once. More...
 

Functions

void circt::calyx::appendPortsForExternalMemref (PatternRewriter &rewriter, StringRef memName, Value memref, unsigned memoryID, SmallVectorImpl< calyx::PortInfo > &inPorts, SmallVectorImpl< calyx::PortInfo > &outPorts)
 
WalkResult circt::calyx::getCiderSourceLocationMetadata (calyx::ComponentOp component, SmallVectorImpl< Attribute > &sourceLocations)
 
bool circt::calyx::matchConstantOp (Operation *op, APInt &value)
 
bool circt::calyx::singleLoadFromMemory (Value memoryReference)
 
bool circt::calyx::noStoresToMemory (Value memoryReference)
 
Value circt::calyx::getComponentOutput (calyx::ComponentOp compOp, unsigned outPortIdx)
 
Type circt::calyx::convIndexType (OpBuilder &builder, Type type)
 
template<typename TGroup >
TGroup circt::calyx::createGroup (OpBuilder &builder, calyx::ComponentOp compOp, Location loc, Twine uniqueName)
 
void circt::calyx::buildAssignmentsForRegisterWrite (OpBuilder &builder, calyx::GroupOp groupOp, calyx::ComponentOp componentOp, calyx::RegisterOp &reg, Value inputValue)
 Creates register assignment operations within the provided groupOp. More...
 
LogicalResult circt::calyx::applyModuleOpConversion (mlir::ModuleOp, StringRef topLevelFunction)
 Helper to update the top-level ModuleOp to set the entrypoing function. More...