#include "DeseqUtils.h"
#include "circt/Dialect/Comb/CombOps.h"
#include "circt/Dialect/HW/HWOps.h"
#include "circt/Dialect/HW/HWTypeInterfaces.h"
#include "circt/Dialect/LLHD/LLHDOps.h"
#include "circt/Dialect/LLHD/LLHDPasses.h"
#include "circt/Dialect/Seq/SeqOps.h"
#include "mlir/Analysis/Liveness.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
#include "mlir/IR/Dominance.h"
#include "mlir/IR/IRMapping.h"
#include "mlir/IR/Matchers.h"
#include "mlir/Transforms/RegionUtils.h"
#include "llvm/ADT/ScopeExit.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/GenericIteratedDominanceFrontier.h"
#include "circt/Dialect/LLHD/LLHDPasses.h.inc"
Go to the source code of this file.
|
| static LogicalResult | inferRegisterPreset (seq::FirRegOp regOp, DriveInfo &drive) |
| | Attempt to find and set an preset (initializer) value for the newly created register.
|
◆ DEBUG_TYPE
| #define DEBUG_TYPE "llhd-deseq" |
◆ GEN_PASS_DEF_DESEQPASS
| #define GEN_PASS_DEF_DESEQPASS |
◆ VERBOSE_DEBUG
| #define VERBOSE_DEBUG |
( |
| ... | ) |
|
◆ inferRegisterPreset()
| LogicalResult inferRegisterPreset |
( |
seq::FirRegOp | regOp, |
|
|
DriveInfo & | drive ) |
|
static |
Attempt to find and set an preset (initializer) value for the newly created register.
This needs to be a constant value that is either used to initialize the signal itself, or is unconditionally driven to the signal at the same time the register op begins driving the signal. If such an initial drive is found, the constant drive operation(s) are erased. Returns failure if mutiple conflicting initial drivers are found, or if a non-constant value would be inferred from a signal initializer.
Definition at line 1336 of file Deseq.cpp.
References circt::llhd::deseq::DriveInfo::op, and success().