LLZK
3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Toggle main menu visibility
Loading...
Searching...
No Matches
WitgenUtils.h
Go to the documentation of this file.
1
//===-- WitgenUtils.h - llzk-witgen shared helpers --------------*- C++ -*-===//
2
//
3
// Part of the LLZK Project, under the Apache License v2.0.
4
// See LICENSE.txt for license information.
5
// Copyright 2026 Project LLZK
6
// SPDX-License-Identifier: Apache-2.0
7
//
8
//===----------------------------------------------------------------------===//
9
10
#pragma once
11
12
#include "
Errors.h
"
13
#include "
WitgenDriver.h
"
14
15
#include <mlir/IR/BuiltinTypes.h>
16
17
#include <llvm/ADT/ArrayRef.h>
18
#include <llvm/ADT/DynamicAPInt.h>
19
#include <llvm/ADT/StringRef.h>
20
#include <llvm/Support/Error.h>
21
22
#include <cstddef>
23
#include <random>
24
#include <utility>
25
26
namespace
llzk::witgen
{
27
28
template
<
typename
T,
typename
U>
inline
llvm::Expected<T>
checkedCast
(U u) {
29
if
(std::in_range<T>(u)) {
30
return
static_cast<
T
>
(u);
31
}
32
return
makeError
(
"lossy integer conversion"
);
33
}
34
36
std::mt19937_64
makeDefaultValueRng
(
const
WitgenOptions &options);
37
39
llvm::DynamicAPInt
randomFieldElement
(std::mt19937_64 &rng,
const
Field
&field);
40
42
int64_t
randomIndexValue
(std::mt19937_64 &rng);
43
45
bool
randomBoolValue
(std::mt19937_64 &rng);
46
48
llvm::Expected<size_t>
checkedShapeDimToSize
(int64_t dim, llvm::StringRef context);
49
51
llvm::Expected<size_t>
52
checkedDynamicAPIntToSize
(
const
llvm::DynamicAPInt &value, llvm::StringRef context);
53
55
llvm::Expected<size_t>
56
getStaticShapeElementCount
(llvm::ArrayRef<int64_t> shape, llvm::StringRef context);
57
59
llvm::Expected<size_t>
getStaticElementCount
(mlir::ShapedType type, llvm::StringRef context);
60
61
}
// namespace llzk::witgen
Errors.h
WitgenDriver.h
llzk::Field
Information about the prime finite field used for the interval analysis.
Definition
Field.h:36
llzk::witgen
Definition
Errors.h:15
llzk::witgen::checkedCast
llvm::Expected< T > checkedCast(U u)
Definition
WitgenUtils.h:28
llzk::witgen::makeDefaultValueRng
std::mt19937_64 makeDefaultValueRng(const WitgenOptions &options)
Seed an RNG for random/default witness value materialization.
Definition
WitgenUtils.cpp:82
llzk::witgen::getStaticShapeElementCount
llvm::Expected< size_t > getStaticShapeElementCount(llvm::ArrayRef< int64_t > shape, llvm::StringRef context)
Return the static element count for one shape, rejecting dynamic sizes.
Definition
WitgenUtils.cpp:59
llzk::witgen::randomFieldElement
llvm::DynamicAPInt randomFieldElement(std::mt19937_64 &rng, const Field &field)
Draw a uniformly distributed field element in [0, prime).
Definition
WitgenUtils.cpp:91
llzk::witgen::randomBoolValue
bool randomBoolValue(std::mt19937_64 &rng)
Draw a uniformly distributed boolean value.
Definition
WitgenUtils.cpp:123
llzk::witgen::checkedDynamicAPIntToSize
llvm::Expected< size_t > checkedDynamicAPIntToSize(const llvm::DynamicAPInt &value, llvm::StringRef context)
Convert a DynamicAPInt into size_t after validating its range.
Definition
WitgenUtils.cpp:43
llzk::witgen::getStaticElementCount
llvm::Expected< size_t > getStaticElementCount(ShapedType type, llvm::StringRef context)
Definition
WitgenUtils.cpp:71
llzk::witgen::checkedShapeDimToSize
llvm::Expected< size_t > checkedShapeDimToSize(int64_t dim, llvm::StringRef context)
Convert one static dimension to size_t, rejecting dynamic or invalid sizes.
Definition
WitgenUtils.cpp:47
llzk::witgen::randomIndexValue
int64_t randomIndexValue(std::mt19937_64 &rng)
Draw a uniformly distributed signed index value.
Definition
WitgenUtils.cpp:118
llzk::witgen::makeError
llvm::Error makeError(const llvm::Twine &msg)
Build a string-backed error for user-facing witgen failures.
Definition
Errors.h:18
tools
llzk-witgen
WitgenUtils.h
Generated by
1.17.0
Copyright 2025 Veridise Inc. under the Apache License v2.0. Copyright 2026 Project LLZK under the Apache License v2.0.