LLZK 2.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
Felt.cpp
Go to the documentation of this file.
1//===-- Felt.cpp - Felt dialect C API implementation ------------*- 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//===----------------------------------------------------------------------===//
9
10#include "llzk-c/Dialect/Felt.h"
11
12#include "llzk-c/Dialect/LLZK.h"
13
14#include "llzk/CAPI/Support.h"
20
21#include <mlir/CAPI/Registration.h>
22#include <mlir/CAPI/Wrap.h>
23
24using namespace mlir;
25using namespace llzk;
26using namespace llzk::felt;
27
28// Include the generated CAPI
32
33MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(Felt, llzk__felt, FeltDialect)
34
35MLIR_CAPI_EXPORTED MlirAttribute
36llzkFelt_FeltConstAttrGetInField(MlirContext ctx, int64_t value, MlirStringRef fieldName) {
37 return wrap(FeltConstAttr::get(unwrap(ctx), toAPInt(value), unwrap(fieldName)));
38}
39
40MLIR_CAPI_EXPORTED MlirAttribute
41llzkFelt_FeltConstAttrGetUnspecified(MlirContext ctx, int64_t value) {
42 return wrap(FeltConstAttr::get(unwrap(ctx), toAPInt(value)));
43}
44
45MLIR_CAPI_EXPORTED MlirAttribute
46llzkFelt_FeltConstAttrGetWithBits(MlirContext ctx, unsigned numBits, int64_t value, MlirType type) {
47 return wrap(FeltConstAttr::get(unwrap(ctx), APInt(numBits, value), unwrap_cast<FeltType>(type)));
48}
49
50MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetWithBitsInField(
51 MlirContext ctx, unsigned numBits, int64_t value, MlirStringRef fieldName
52) {
53 return wrap(FeltConstAttr::get(unwrap(ctx), APInt(numBits, value), unwrap(fieldName)));
54}
55
56MLIR_CAPI_EXPORTED MlirAttribute
57llzkFelt_FeltConstAttrGetWithBitsUnspecified(MlirContext ctx, unsigned numBits, int64_t value) {
58 return wrap(FeltConstAttr::get(unwrap(ctx), APInt(numBits, value)));
59}
60
61MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromString(
62 MlirContext ctx, unsigned numBits, MlirStringRef str, MlirType type
63) {
64 return wrap(FeltConstAttr::get(unwrap(ctx), numBits, unwrap(str), unwrap_cast<FeltType>(type)));
65}
66
67MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromStringInField(
68 MlirContext ctx, unsigned numBits, MlirStringRef str, MlirStringRef fieldName
69) {
70 return wrap(FeltConstAttr::get(unwrap(ctx), numBits, unwrap(str), unwrap(fieldName)));
71}
72
73MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromStringUnspecified(
74 MlirContext ctx, unsigned numBits, MlirStringRef str
75) {
76 return wrap(FeltConstAttr::get(unwrap(ctx), numBits, unwrap(str)));
77}
78
79MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromParts(
80 MlirContext ctx, unsigned numBits, const uint64_t *parts, intptr_t nParts, MlirType type
81) {
82 return wrap(
83 FeltConstAttr::get(unwrap(ctx), numBits, ArrayRef(parts, nParts), unwrap_cast<FeltType>(type))
84 );
85}
86
87MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromPartsInField(
88 MlirContext ctx, unsigned numBits, const uint64_t *parts, intptr_t nParts,
89 MlirStringRef fieldName
90) {
91 return wrap(FeltConstAttr::get(unwrap(ctx), numBits, ArrayRef(parts, nParts), unwrap(fieldName)));
92}
93
94MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromPartsUnspecified(
95 MlirContext ctx, unsigned numBits, const uint64_t *parts, intptr_t nParts
96) {
97 return wrap(FeltConstAttr::get(unwrap(ctx), numBits, ArrayRef(parts, nParts)));
98}
99
101 MlirContext ctx, MlirIdentifier fieldName, unsigned numBits, MlirStringRef primeStr
102) {
103 return wrap(
104 FieldSpecAttr::get(unwrap(ctx), unwrap(fieldName), APInt(numBits, unwrap(primeStr), 10))
105 );
106}
107
109 MlirContext ctx, MlirIdentifier fieldName, unsigned numBits, const uint64_t *parts,
110 intptr_t nParts
111) {
112 return wrap(
113 FieldSpecAttr::get(unwrap(ctx), unwrap(fieldName), APInt(numBits, ArrayRef(parts, nParts)))
114 );
115}
116
117MlirType llzkFelt_FeltTypeGetUnspecified(MlirContext ctx) {
118 return wrap(FeltType::get(unwrap(ctx)));
119}
120
121MlirType llzkFelt_FeltTypeGetFromRef(MlirContext ctx, MlirStringRef fieldName) {
122 return wrap(FeltType::get(unwrap(ctx), unwrap(fieldName)));
123}
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromPartsInField(MlirContext ctx, unsigned numBits, const uint64_t *parts, intptr_t nParts, MlirStringRef fieldName)
Creates a llzk::felt::FeltConstAttr from an array of big-integer parts in LSB order in the specified ...
Definition Felt.cpp:87
MlirType llzkFelt_FeltTypeGetUnspecified(MlirContext ctx)
Creates a llzk::felt::FeltType with an unspecified field.
Definition Felt.cpp:117
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetUnspecified(MlirContext ctx, int64_t value)
Creates a llzk::felt::FeltConstAttr with the given value in an unspecified field.
Definition Felt.cpp:41
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromParts(MlirContext ctx, unsigned numBits, const uint64_t *parts, intptr_t nParts, MlirType type)
Creates a llzk::felt::FeltConstAttr from an array of big-integer parts in LSB order in the specified ...
Definition Felt.cpp:79
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromPartsUnspecified(MlirContext ctx, unsigned numBits, const uint64_t *parts, intptr_t nParts)
Creates a llzk::felt::FeltConstAttr from an array of big-integer parts in LSB order in an unspecified...
Definition Felt.cpp:94
MlirAttribute llzkFelt_FieldSpecAttrGetFromString(MlirContext ctx, MlirIdentifier fieldName, unsigned numBits, MlirStringRef primeStr)
Creates a llzk::felt::FieldSpecAttr from a base-10 representation of the prime.
Definition Felt.cpp:100
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromString(MlirContext ctx, unsigned numBits, MlirStringRef str, MlirType type)
Creates a llzk::felt::FeltConstAttr from a base-10 representation of a number in the specified field.
Definition Felt.cpp:61
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetInField(MlirContext ctx, int64_t value, MlirStringRef fieldName)
Creates a llzk::felt::FeltConstAttr with the given value in the specified field.
Definition Felt.cpp:36
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetWithBitsInField(MlirContext ctx, unsigned numBits, int64_t value, MlirStringRef fieldName)
Creates a llzk::felt::FeltConstAttr with a set bit length and value in the specified field.
Definition Felt.cpp:50
MlirAttribute llzkFelt_FieldSpecAttrGetFromParts(MlirContext ctx, MlirIdentifier fieldName, unsigned numBits, const uint64_t *parts, intptr_t nParts)
Creates a llzk::felt::FieldSpecAttr from an array of big-integer parts in LSB order representing the ...
Definition Felt.cpp:108
MlirType llzkFelt_FeltTypeGetFromRef(MlirContext ctx, MlirStringRef fieldName)
Create a llzk::felt::FeltType Type with the given parameters.
Definition Felt.cpp:121
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromStringInField(MlirContext ctx, unsigned numBits, MlirStringRef str, MlirStringRef fieldName)
Creates a llzk::felt::FeltConstAttr from a base-10 representation of a number in the specified field.
Definition Felt.cpp:67
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetWithBitsUnspecified(MlirContext ctx, unsigned numBits, int64_t value)
Creates a llzk::felt::FeltConstAttr with a set bit length and value in an unspecified field.
Definition Felt.cpp:57
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetFromStringUnspecified(MlirContext ctx, unsigned numBits, MlirStringRef str)
Creates a llzk::felt::FeltConstAttr from a base-10 representation of a number in an unspecified field...
Definition Felt.cpp:73
MLIR_CAPI_EXPORTED MlirAttribute llzkFelt_FeltConstAttrGetWithBits(MlirContext ctx, unsigned numBits, int64_t value, MlirType type)
Creates a llzk::felt::FeltConstAttr with a set bit length and value in the specified field.
Definition Felt.cpp:46
static FeltType get(::mlir::MLIRContext *context, ::mlir::StringAttr fieldName)
Definition Types.cpp.inc:67
APInt toAPInt(const DynamicAPInt &val, unsigned bitWidth)
auto unwrap_cast(auto &from)
Definition Support.h:51