CIRCT 24.0.0git
Loading...
Searching...
No Matches
ProjectionUtils.h File Reference
#include "circt/Dialect/LLHD/LLHDTypes.h"
#include "circt/Support/LLVM.h"
#include "mlir/IR/Value.h"
#include <utility>
#include <variant>
Include dependency graph for ProjectionUtils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  circt::llhd::ConstProjectionRange
 Portion of a signal selected by a projection, with a statically known offset and width in bits. More...
struct  circt::llhd::DynProjectionRange
 Portion of a signal selected by a projection with a dynamic index. More...

Namespaces

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

Typedefs

using circt::llhd::ProjectionRange = std::variant<ConstProjectionRange, DynProjectionRange>
 Portion of the signal operand that is selected by a projection.

Functions

bool circt::llhd::isDynamic (const ProjectionRange &range)
 Helper to check if a projection range is dynamic or not.
Type circt::llhd::getStoredType (Value slot)
 Return the type stored in a signal or projection.
bool circt::llhd::isProjection (const Operation *op)
 Check if an op is one of the supported projection types.
std::optional< ProjectionRange > circt::llhd::getProjectionRange (Operation *op)
 Calculate a projection's range.
bool circt::llhd::isProvablyDisjoint (const ProjectionRange &a, const ProjectionRange &b)
 Check whether two projections provably describe disjoint storage.
Operation * circt::llhd::getRootSignal (Value sig)
 Given a signal or a projection, walk back the projection chain until you find the root signal declaration.
std::pair< Operation *, std::optional< ProjectionRange > > circt::llhd::getRootSignalAndRange (Value sig)
 Given a signal or a projection, find the root signal declaration by traversing the projection chain.