CIRCT 24.0.0git
Loading...
Searching...
No Matches
HWIMDeadCodeElim.cpp File Reference
#include "circt/Dialect/HW/HWInstanceGraph.h"
#include "circt/Dialect/HW/HWOpInterfaces.h"
#include "circt/Dialect/HW/HWOps.h"
#include "circt/Dialect/HW/HWPasses.h"
#include "circt/Support/Utils.h"
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/Iterators.h"
#include "mlir/Interfaces/SideEffectInterfaces.h"
#include "llvm/ADT/DenseMapInfoVariant.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/SmallVector.h"
#include <variant>
#include "circt/Dialect/HW/Passes.h.inc"
Include dependency graph for HWIMDeadCodeElim.cpp:

Go to the source code of this file.

Namespaces

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

Macros

#define DEBUG_TYPE   "hw-imdeadcodeelim"
#define GEN_PASS_DEF_IMDEADCODEELIM

Functions

static bool hasUnknownSideEffect (Operation *op)
static InstanceOp cloneWithErasedPorts (InstanceOp &instance, const llvm::BitVector &inErasures, const llvm::BitVector &outErasures)
 Clone instance, but with ports deleted according to the inErasures and outErasures BitVectors.
static InstanceOp cloneWithErasePortsAndReplaceUses (InstanceOp &instance, const llvm::BitVector &inErasures, const llvm::BitVector &outErasures)
 Static method for cloning instance of type InstanceOp with in- and output ports erased based on inErasures and outErasures respectively.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "hw-imdeadcodeelim"

Definition at line 22 of file HWIMDeadCodeElim.cpp.

◆ GEN_PASS_DEF_IMDEADCODEELIM

#define GEN_PASS_DEF_IMDEADCODEELIM

Definition at line 26 of file HWIMDeadCodeElim.cpp.

Function Documentation

◆ cloneWithErasedPorts()

InstanceOp cloneWithErasedPorts ( InstanceOp & instance,
const llvm::BitVector & inErasures,
const llvm::BitVector & outErasures )
static

Clone instance, but with ports deleted according to the inErasures and outErasures BitVectors.

Definition at line 105 of file HWIMDeadCodeElim.cpp.

References assert(), and circt::removeElementsAtIndices().

Referenced by cloneWithErasePortsAndReplaceUses().

◆ cloneWithErasePortsAndReplaceUses()

InstanceOp cloneWithErasePortsAndReplaceUses ( InstanceOp & instance,
const llvm::BitVector & inErasures,
const llvm::BitVector & outErasures )
static

Static method for cloning instance of type InstanceOp with in- and output ports erased based on inErasures and outErasures respectively.

The users of the results of the instance are also updated.

Definition at line 152 of file HWIMDeadCodeElim.cpp.

References cloneWithErasedPorts().

◆ hasUnknownSideEffect()

bool hasUnknownSideEffect ( Operation * op)
static

Definition at line 89 of file HWIMDeadCodeElim.cpp.