|
LLZK 2.1.1
An open-source IR for Zero Knowledge (ZK) circuits
|
This file implements the -llzk-array-to-scalar pass. More...
#include "llzk/Dialect/Array/IR/Dialect.h"#include "llzk/Dialect/Array/IR/Ops.h"#include "llzk/Dialect/Array/IR/Types.h"#include "llzk/Dialect/Array/Transforms/TransformationPasses.h"#include "llzk/Dialect/Array/Util/ArrayTypeHelper.h"#include "llzk/Dialect/Bool/IR/Dialect.h"#include "llzk/Dialect/Cast/IR/Dialect.h"#include "llzk/Dialect/Constrain/IR/Dialect.h"#include "llzk/Dialect/Felt/IR/Dialect.h"#include "llzk/Dialect/Function/IR/Dialect.h"#include "llzk/Dialect/Function/IR/Ops.h"#include "llzk/Dialect/Include/IR/Dialect.h"#include "llzk/Dialect/LLZK/IR/Dialect.h"#include "llzk/Dialect/LLZK/IR/Ops.h"#include "llzk/Dialect/POD/IR/Dialect.h"#include "llzk/Dialect/Polymorphic/IR/Dialect.h"#include "llzk/Dialect/RAM/IR/Dialect.h"#include "llzk/Dialect/String/IR/Dialect.h"#include "llzk/Dialect/Struct/IR/Ops.h"#include "llzk/Transforms/LLZKConversionUtils.h"#include "llzk/Transforms/LLZKTransformationPasses.h"#include "llzk/Transforms/SpecializedMemoryPasses.h"#include "llzk/Util/Compare.h"#include "llzk/Util/Concepts.h"#include <mlir/Dialect/SCF/IR/SCF.h>#include <mlir/IR/BuiltinOps.h>#include <mlir/Pass/PassManager.h>#include <mlir/Transforms/DialectConversion.h>#include <mlir/Transforms/Passes.h>#include <llvm/Support/Debug.h>#include <optional>#include "llzk/Dialect/Array/Transforms/TransformationPasses.h.inc"Go to the source code of this file.
Classes | |
| class | llzk::array::impl::ArrayToScalarPassBase< DerivedT > |
Namespaces | |
| namespace | llzk |
| namespace | llzk::array |
| namespace | llzk::array::impl |
Macros | |
| #define | GEN_PASS_DEF_ARRAYTOSCALARPASS |
| #define | DEBUG_TYPE "llzk-array-to-scalar" |
Functions | |
| std::unique_ptr<::mlir::Pass > | llzk::array::impl::createArrayToScalarPass () |
| std::unique_ptr<::mlir::Pass > | llzk::array::createArrayToScalarPass () |
This file implements the -llzk-array-to-scalar pass.
The steps of this transformation are as follows:
Note: This transformation imposes a "last write wins" semantics on array elements. If different/configurable semantics are added in the future, some additional transformation would be necessary before/during this pass so that multiple writes to the same index can be handled properly while they still exist.
Note: This transformation will introduce a nondet op when there exists a read from an array index that was not earlier written to.
Definition in file ArrayToScalarPass.cpp.
| #define DEBUG_TYPE "llzk-array-to-scalar" |
Definition at line 111 of file ArrayToScalarPass.cpp.
| #define GEN_PASS_DEF_ARRAYTOSCALARPASS |
Definition at line 101 of file ArrayToScalarPass.cpp.