CIRCT  18.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
 This file defines an intermediate representation for circuits acting as an abstraction for constraints defined over an SMT's solver context.
 
 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...