LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
TemplateInstantiation.cpp File Reference

Private parameter substitution helpers shared by polymorphic transformations. More...

#include "TemplateInstantiation.h"
#include "SharedImpl.h"
#include "llzk/Dialect/Array/IR/Ops.h"
#include "llzk/Dialect/Array/Util/ArrayTypeHelper.h"
#include "llzk/Dialect/Constrain/IR/Ops.h"
#include "llzk/Dialect/Felt/IR/Ops.h"
#include "llzk/Dialect/LLZK/IR/AttributeHelper.h"
#include "llzk/Dialect/POD/IR/Types.h"
#include "llzk/Util/Debug.h"
#include "llzk/Util/SymbolHelper.h"
#include "llzk/Util/SymbolTableLLZK.h"
#include <mlir/Dialect/Arith/IR/Arith.h>
#include <mlir/IR/AttrTypeSubElements.h>
#include <llvm/ADT/TypeSwitch.h>
Include dependency graph for TemplateInstantiation.cpp:

Go to the source code of this file.

Namespaces

namespace  llzk
namespace  llzk::polymorphic
namespace  llzk::polymorphic::detail
 Common interface for constant parameter-like symbol operations that can be defined within a TemplateOp.

Macros

#define DEBUG_TYPE   "llzk-flatten"

Functions

void llzk::polymorphic::detail::reportDelayedDiagnostics (Operation *site, SmallVector< Diagnostic > &&diagnostics)
FailureOr< ArrayAttr > llzk::polymorphic::detail::rebaseTemplateParams (SymbolTableCollection &tables, ArrayAttr templateParams, Operation *lookupFrom, ModuleOp destinationRoot, Operation *requestSite)
void llzk::polymorphic::detail::convertCalleesInPlace (Operation *op, const DenseMap< Attribute, Attribute > &paramNameToValue)
void llzk::polymorphic::detail::evaluateTemplateExprs (TemplateOp templateOp, DenseMap< Attribute, Attribute > &paramNameToConcrete)
 Evaluate all TemplateExprOps in templateOp that can be computed from the currently-known concrete param values in paramNameToConcrete, and add their results to the map.
std::optional< Attribute > llzk::polymorphic::detail::inferUnifiedParam (const UnificationMap &unifyResult, SymbolRefAttr paramName)
 Return the callee-side unification-derived value for a template parameter, if any.
LogicalResult llzk::polymorphic::detail::substituteStructBody (StructDefOp newStruct, StructType typeAtDef, const DenseMap< Attribute, Attribute > &paramNameToConcrete, SmallVector< Diagnostic > &diagnostics)
LogicalResult llzk::polymorphic::detail::substituteFunctionBody (FuncDefOp newFunc, const DenseMap< Attribute, Attribute > &paramNameToConcrete, SmallVector< Diagnostic > &delayedDiagnostics)

Detailed Description

Private parameter substitution helpers shared by polymorphic transformations.

Callers own cloning, symbol insertion, specialization identity and scheduling.

Definition in file TemplateInstantiation.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "llzk-flatten"

Definition at line 36 of file TemplateInstantiation.cpp.