|
LLZK 2.1.1
An open-source IR for Zero Knowledge (ZK) circuits
|
Common implementation for handling MemberWriteOp and MemberReadOp while destructuring an aggregate type (e.g., ArrayType or PodType) stored in a struct member. More...
#include <LLZKConversionUtils.h>
Public Types | |
| using | MemberInfo = std::pair<mlir::StringAttr, mlir::Type> |
| Scalar member name and type. | |
| using | LocalMemberReplacementMap = llvm::DenseMap<IdType, MemberInfo> |
| Maps a scalar element identifier within the aggregate to its new scalar member info. | |
| using | MemberReplacementMap |
| Maps struct -> original aggregate-type member name -> LocalMemberReplacementMap. | |
Public Member Functions | |
| SplitAggregateInMemberRefOp (mlir::MLIRContext *ctx, mlir::SymbolTableCollection &symTables, const MemberReplacementMap &memberRepMap) | |
| mlir::LogicalResult | match (MemberRefOpClass op) const override |
| void | rewrite (MemberRefOpClass op, OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const override |
Static Public Member Functions | |
| static bool | legal (MemberRefOpClass) |
Protected Types | |
| using | OpAdaptor = typename MemberRefOpClass::Adaptor |
Static Protected Member Functions | |
| static GenHeaderType | genHeader (MemberRefOpClass, mlir::ConversionPatternRewriter &) |
| Executed at the start of rewrite() to (optionally) generate anything that should appear before the per-scalar operations that will be added by forId(). | |
| static void | forId (mlir::Location, GenHeaderType &, IdType, MemberInfo, OpAdaptor, mlir::ConversionPatternRewriter &) |
| Executed for each scalar id in the aggregate type of the original member to generate the per-scalar operations on the new scalar members. | |
Common implementation for handling MemberWriteOp and MemberReadOp while destructuring an aggregate type (e.g., ArrayType or PodType) stored in a struct member.
| ImplClass | the concrete subclass (CRTP) |
| MemberRefOpClass | the concrete op class (must implement MemberRefOpInterface) |
| GenHeaderType | return type of genHeader(), used to pass data to forId() |
| IdType | the type used to identify a scalar element within the aggregate |
Definition at line 264 of file LLZKConversionUtils.h.
| using llzk::SplitAggregateInMemberRefOp< ImplClass, MemberRefOpClass, GenHeaderType, IdType >::LocalMemberReplacementMap = llvm::DenseMap<IdType, MemberInfo> |
Maps a scalar element identifier within the aggregate to its new scalar member info.
Definition at line 269 of file LLZKConversionUtils.h.
| using llzk::SplitAggregateInMemberRefOp< ImplClass, MemberRefOpClass, GenHeaderType, IdType >::MemberInfo = std::pair<mlir::StringAttr, mlir::Type> |
Scalar member name and type.
Definition at line 267 of file LLZKConversionUtils.h.
| using llzk::SplitAggregateInMemberRefOp< ImplClass, MemberRefOpClass, GenHeaderType, IdType >::MemberReplacementMap |
Maps struct -> original aggregate-type member name -> LocalMemberReplacementMap.
Definition at line 271 of file LLZKConversionUtils.h.
|
protected |
Definition at line 287 of file LLZKConversionUtils.h.
|
inline |
Definition at line 309 of file LLZKConversionUtils.h.
|
inlinestaticprotected |
Executed for each scalar id in the aggregate type of the original member to generate the per-scalar operations on the new scalar members.
Definition at line 298 of file LLZKConversionUtils.h.
|
inlinestaticprotected |
Executed at the start of rewrite() to (optionally) generate anything that should appear before the per-scalar operations that will be added by forId().
Definition at line 291 of file LLZKConversionUtils.h.
|
inlinestatic |
Definition at line 316 of file LLZKConversionUtils.h.
|
inlineoverride |
Definition at line 322 of file LLZKConversionUtils.h.
|
inlineoverride |
Definition at line 326 of file LLZKConversionUtils.h.