LLZK 0.1.0
Veridise's ZK Language IR
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
14
15#include "llzk-c/Dialect/Felt.h"
16
17#include <mlir/CAPI/Registration.h>
18#include <mlir/CAPI/Wrap.h>
19
20using namespace mlir;
21using namespace llzk;
22using namespace llzk::felt;
23
24MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(Felt, llzk__felt, FeltDialect)
25
26MlirAttribute llzkFeltConstAttrGet(MlirContext ctx, int64_t value) {
27 return wrap(FeltConstAttr::get(unwrap(ctx), toAPInt(value)));
28}
29
30MlirAttribute llzkFeltConstAttrGetWithBits(MlirContext ctx, unsigned numBits, int64_t value) {
31 return wrap(FeltConstAttr::get(unwrap(ctx), APInt(numBits, value)));
32}
33
34MlirAttribute llzkFeltConstAttrGetFromString(MlirContext ctx, unsigned numBits, MlirStringRef str) {
35 return wrap(FeltConstAttr::get(unwrap(ctx), numBits, unwrap(str)));
36}
37
39 MlirContext context, unsigned numBits, const uint64_t *parts, intptr_t nParts
40) {
41 return wrap(FeltConstAttr::get(unwrap(context), numBits, ArrayRef(parts, nParts)));
42}
43
44bool llzkAttributeIsAFeltConstAttr(MlirAttribute attr) {
45 return llvm::isa<FeltConstAttr>(unwrap(attr));
46}
47
48MlirType llzkFeltTypeGet(MlirContext ctx) { return wrap(FeltType::get(unwrap(ctx))); }
49
50bool llzkTypeIsAFeltType(MlirType type) { return llvm::isa<FeltType>(unwrap(type)); }
MlirAttribute llzkFeltConstAttrGet(MlirContext ctx, int64_t value)
Creates a llzk::felt::FeltConstAttr.
Definition Felt.cpp:26
MlirAttribute llzkFeltConstAttrGetFromParts(MlirContext context, unsigned numBits, const uint64_t *parts, intptr_t nParts)
Creates a llzk::felt::FeltConstAttr from an array of big-integer parts in LSB order.
Definition Felt.cpp:38
MlirType llzkFeltTypeGet(MlirContext ctx)
Creates a llzk::felt::FeltType.
Definition Felt.cpp:48
bool llzkTypeIsAFeltType(MlirType type)
Definition Felt.cpp:50
bool llzkAttributeIsAFeltConstAttr(MlirAttribute attr)
Definition Felt.cpp:44
MlirAttribute llzkFeltConstAttrGetWithBits(MlirContext ctx, unsigned numBits, int64_t value)
Creates a llzk::felt::FeltConstAttr with a set bit length.
Definition Felt.cpp:30
MlirAttribute llzkFeltConstAttrGetFromString(MlirContext ctx, unsigned numBits, MlirStringRef str)
Creates a llzk::felt::FeltConstAttr from a base-10 representation of a number.
Definition Felt.cpp:34
::llzk::felt::FeltType get(::mlir::MLIRContext *context)
Definition Types.h.inc:23
llvm::APInt toAPInt(int64_t i)