LLZK
3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Toggle main menu visibility
Loading...
Searching...
No Matches
DynamicAPIntHelper.h
Go to the documentation of this file.
1
//===-- DynamicAPIntHelper.h ------------------------------------*- C++ -*-===//
2
//
3
// Part of the LLZK Project, under the Apache License v2.0.
4
// See LICENSE.txt for license information.
5
// Copyright 2025 Veridise Inc.
6
// SPDX-License-Identifier: Apache-2.0
7
//
8
//===----------------------------------------------------------------------===//
17
//===----------------------------------------------------------------------===//
18
19
#pragma once
20
21
#include "
llzk/Util/Compare.h
"
22
23
#include <llvm/ADT/APInt.h>
24
#include <llvm/ADT/APSInt.h>
25
#include <llvm/ADT/DynamicAPInt.h>
26
#include <llvm/ADT/SlowDynamicAPInt.h>
27
#include <llvm/ADT/StringRef.h>
28
29
#include <climits>
30
#include <cstddef>
31
#include <cstdint>
32
33
namespace
llzk
{
34
35
llvm::DynamicAPInt
operator&
(
const
llvm::DynamicAPInt &lhs,
const
llvm::DynamicAPInt &rhs);
36
llvm::DynamicAPInt
operator|
(
const
llvm::DynamicAPInt &lhs,
const
llvm::DynamicAPInt &rhs);
37
llvm::DynamicAPInt
operator^
(
const
llvm::DynamicAPInt &lhs,
const
llvm::DynamicAPInt &rhs);
38
llvm::DynamicAPInt
operator<<
(
const
llvm::DynamicAPInt &lhs,
const
llvm::DynamicAPInt &rhs);
39
llvm::DynamicAPInt
operator>>
(
const
llvm::DynamicAPInt &lhs,
const
llvm::DynamicAPInt &rhs);
40
41
llvm::DynamicAPInt
toDynamicAPInt
(llvm::StringRef str);
42
43
llvm::DynamicAPInt
toDynamicAPInt
(
const
llvm::APSInt &i);
44
45
inline
llvm::DynamicAPInt
toDynamicAPInt
(
const
llvm::APInt &i) {
46
return
toDynamicAPInt
(llvm::APSInt(i));
47
}
48
49
inline
llvm::DynamicAPInt
toDynamicAPInt
(
size_t
i) {
50
return
toDynamicAPInt
(llvm::APInt(
sizeof
(
size_t
) * CHAR_BIT,
llzk::checkedCast<uint64_t>
(i)));
51
}
52
53
llvm::APSInt
toAPSInt
(
const
llvm::DynamicAPInt &i);
54
58
llvm::APInt
toAPInt
(
const
llvm::DynamicAPInt &i,
unsigned
bitWidth);
59
61
llvm::APInt
toExactWidthAPInt
(
const
llvm::DynamicAPInt &i,
unsigned
bitWidth);
62
63
llvm::DynamicAPInt
modExp
(
64
const
llvm::DynamicAPInt &base,
const
llvm::DynamicAPInt &exp,
const
llvm::DynamicAPInt &
mod
65
);
66
67
llvm::DynamicAPInt
modInversePrime
(
const
llvm::DynamicAPInt &f,
const
llvm::DynamicAPInt &p);
68
69
}
// namespace llzk
Compare.h
llzk
Definition
AnalysisPassEnums.cpp:19
llzk::mod
ExpressionValue mod(const llvm::SMTSolverRef &solver, const ExpressionValue &lhs, const ExpressionValue &rhs)
Definition
IntervalAnalysis.cpp:416
llzk::operator|
Interval operator|(const Interval &lhs, const Interval &rhs)
Definition
Intervals.cpp:643
llzk::operator^
Interval operator^(const Interval &lhs, const Interval &rhs)
Definition
Intervals.cpp:661
llzk::toDynamicAPInt
DynamicAPInt toDynamicAPInt(StringRef str)
Definition
DynamicAPIntHelper.cpp:93
llzk::operator<<
Interval operator<<(const Interval &lhs, const Interval &rhs)
Definition
Intervals.cpp:679
llzk::checkedCast
constexpr T checkedCast(U u) noexcept
Definition
Compare.h:94
llzk::toAPInt
APInt toAPInt(const DynamicAPInt &val, unsigned bitWidth)
Definition
DynamicAPIntHelper.cpp:143
llzk::toExactWidthAPInt
APInt toExactWidthAPInt(const DynamicAPInt &val, unsigned bitWidth)
Definition
DynamicAPIntHelper.cpp:149
llzk::operator>>
Interval operator>>(const Interval &lhs, const Interval &rhs)
Definition
Intervals.cpp:695
llzk::operator&
Interval operator&(const Interval &lhs, const Interval &rhs)
Definition
Intervals.cpp:628
llzk::modInversePrime
DynamicAPInt modInversePrime(const DynamicAPInt &f, const DynamicAPInt &p)
Definition
DynamicAPIntHelper.cpp:172
llzk::toAPSInt
APSInt toAPSInt(const DynamicAPInt &i)
Definition
DynamicAPIntHelper.cpp:122
llzk::modExp
DynamicAPInt modExp(const DynamicAPInt &base, const DynamicAPInt &exp, const DynamicAPInt &mod)
Definition
DynamicAPIntHelper.cpp:155
include
llzk
Util
DynamicAPIntHelper.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.