CIRCT 21.0.0git
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Typedefs | Functions
Mem2Reg.cpp File Reference
#include "circt/Dialect/HW/HWTypes.h"
#include "circt/Dialect/LLHD/IR/LLHDOps.h"
#include "circt/Dialect/LLHD/Transforms/LLHDPasses.h"
#include "mlir/Analysis/Liveness.h"
#include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
#include "mlir/IR/Dominance.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/GenericIteratedDominanceFrontier.h"
#include "circt/Dialect/LLHD/Transforms/LLHDPasses.h.inc"
Include dependency graph for Mem2Reg.cpp:

Go to the source code of this file.

Classes

struct  llvm::DenseMapInfo< DriveCondition >
 

Namespaces

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

Macros

#define DEBUG_TYPE   "llhd-mem2reg"
 
#define GEN_PASS_DEF_MEM2REGPASS
 

Typedefs

using DefSlot = PointerIntPair< Value, 1 >
 The slot a reaching definition specifies a value for, alongside a bit indicating whether the definition is from a delayed drive or a blocking drive.
 

Functions

static bool isEpsilonDelay (Value value)
 Check whether a value is defined by llhd.constant_time <0ns, 0d, 1e>.
 
static bool isDeltaDelay (Value value)
 Check whether a value is defined by llhd.constant_time <0ns, 1d, 0e>.
 
static bool isBlockingDrive (Operation *op)
 Check whether an operation is a llhd.drive with an epsilon delay.
 
static bool isDeltaDrive (Operation *op)
 Check whether an operation is a llhd.drive with a delta delay.
 
static DefSlot blockingSlot (Value slot)
 
static DefSlot delayedSlot (Value slot)
 
static Value getSlot (DefSlot slot)
 
static bool isDelayed (DefSlot slot)
 
static Type getStoredType (DefSlot slot)
 
static Location getLoc (DefSlot slot)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "llhd-mem2reg"

Definition at line 18 of file Mem2Reg.cpp.

◆ GEN_PASS_DEF_MEM2REGPASS

#define GEN_PASS_DEF_MEM2REGPASS

Definition at line 22 of file Mem2Reg.cpp.

Typedef Documentation

◆ DefSlot

using DefSlot = PointerIntPair<Value, 1>

The slot a reaching definition specifies a value for, alongside a bit indicating whether the definition is from a delayed drive or a blocking drive.

Definition at line 204 of file Mem2Reg.cpp.

Function Documentation

◆ blockingSlot()

static DefSlot blockingSlot ( Value  slot)
static

Definition at line 205 of file Mem2Reg.cpp.

◆ delayedSlot()

static DefSlot delayedSlot ( Value  slot)
static

Definition at line 206 of file Mem2Reg.cpp.

◆ getLoc()

static Location getLoc ( DefSlot  slot)
static

◆ getSlot()

static Value getSlot ( DefSlot  slot)
static

Definition at line 207 of file Mem2Reg.cpp.

◆ getStoredType()

static Type getStoredType ( DefSlot  slot)
static

Definition at line 209 of file Mem2Reg.cpp.

◆ isBlockingDrive()

static bool isBlockingDrive ( Operation *  op)
static

Check whether an operation is a llhd.drive with an epsilon delay.

This corresponds to a blocking assignment in Verilog.

Definition at line 54 of file Mem2Reg.cpp.

References isEpsilonDelay().

◆ isDelayed()

static bool isDelayed ( DefSlot  slot)
static

Definition at line 208 of file Mem2Reg.cpp.

◆ isDeltaDelay()

static bool isDeltaDelay ( Value  value)
static

Check whether a value is defined by llhd.constant_time <0ns, 1d, 0e>.

Definition at line 44 of file Mem2Reg.cpp.

Referenced by isDeltaDrive().

◆ isDeltaDrive()

static bool isDeltaDrive ( Operation *  op)
static

Check whether an operation is a llhd.drive with a delta delay.

This corresponds to a non-blocking assignment in Verilog.

Definition at line 62 of file Mem2Reg.cpp.

References isDeltaDelay().

◆ isEpsilonDelay()

static bool isEpsilonDelay ( Value  value)
static

Check whether a value is defined by llhd.constant_time <0ns, 0d, 1e>.

Definition at line 35 of file Mem2Reg.cpp.

Referenced by isBlockingDrive().