CIRCT  19.0.0git
Functions
Buffers.cpp File Reference
#include "PassDetails.h"
#include "circt/Dialect/Handshake/HandshakeOps.h"
#include "circt/Dialect/Handshake/HandshakePasses.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/Rewrite/FrozenRewritePatternSet.h"
#include "mlir/Transforms/DialectConversion.h"
Include dependency graph for Buffers.cpp:

Go to the source code of this file.

Functions

static bool shouldBufferArgument (BlockArgument arg)
 
static bool isUnbufferedChannel (Operation *definingOp, Operation *usingOp)
 
static void insertBuffer (Location loc, Value operand, OpBuilder &builder, unsigned numSlots, BufferTypeEnum bufferType)
 
static void bufferResults (OpBuilder &builder, Operation *op, unsigned numSlots, BufferTypeEnum bufferType)
 
static void bufferAllStrategy (Region &r, OpBuilder &builder, unsigned numSlots, BufferTypeEnum bufferType=BufferTypeEnum::seq)
 
static bool inCycle (Operation *src, llvm::function_ref< bool(Operation *)> breaksCycle)
 
static void bufferCyclesStrategy (Region &r, OpBuilder &builder, unsigned numSlots, BufferTypeEnum=BufferTypeEnum::seq)
 
static void bufferAllFIFOStrategy (Region &r, OpBuilder &builder, unsigned numSlots)
 

Function Documentation

◆ bufferAllFIFOStrategy()

static void bufferAllFIFOStrategy ( Region &  r,
OpBuilder &  builder,
unsigned  numSlots 
)
static

Definition at line 161 of file Buffers.cpp.

References bufferAllStrategy(), bufferCyclesStrategy(), and builder.

Referenced by circt::handshake::bufferRegion().

◆ bufferAllStrategy()

static void bufferAllStrategy ( Region &  r,
OpBuilder &  builder,
unsigned  numSlots,
BufferTypeEnum  bufferType = BufferTypeEnum::seq 
)
static

◆ bufferCyclesStrategy()

static void bufferCyclesStrategy ( Region &  r,
OpBuilder &  builder,
unsigned  numSlots,
BufferTypeEnum  = BufferTypeEnum::seq 
)
static

Definition at line 136 of file Buffers.cpp.

References bufferResults(), builder, and inCycle().

Referenced by bufferAllFIFOStrategy(), and circt::handshake::bufferRegion().

◆ bufferResults()

static void bufferResults ( OpBuilder &  builder,
Operation *  op,
unsigned  numSlots,
BufferTypeEnum  bufferType 
)
static

Definition at line 75 of file Buffers.cpp.

References builder, and insertBuffer().

Referenced by bufferCyclesStrategy().

◆ inCycle()

static bool inCycle ( Operation *  src,
llvm::function_ref< bool(Operation *)>  breaksCycle 
)
static

Definition at line 108 of file Buffers.cpp.

Referenced by bufferCyclesStrategy().

◆ insertBuffer()

static void insertBuffer ( Location  loc,
Value  operand,
OpBuilder &  builder,
unsigned  numSlots,
BufferTypeEnum  bufferType 
)
static

Definition at line 61 of file Buffers.cpp.

References builder.

Referenced by bufferAllStrategy(), and bufferResults().

◆ isUnbufferedChannel()

static bool isUnbufferedChannel ( Operation *  definingOp,
Operation *  usingOp 
)
static

Definition at line 57 of file Buffers.cpp.

Referenced by bufferAllStrategy().

◆ shouldBufferArgument()

static bool shouldBufferArgument ( BlockArgument  arg)
static

Definition at line 51 of file Buffers.cpp.

Referenced by bufferAllStrategy().