LLZK 2.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
OpTraits.h
Go to the documentation of this file.
1//===-- OpTraits.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//===----------------------------------------------------------------------===//
9
10#pragma once
11
12#include <mlir/IR/OpDefinition.h>
13#include <mlir/IR/Operation.h>
14#include <mlir/Support/LogicalResult.h>
15
16namespace llzk::function {
17
18mlir::LogicalResult verifyConstraintGenTraitImpl(mlir::Operation *op);
19mlir::LogicalResult verifyWitnessGenTraitImpl(mlir::Operation *op);
20mlir::LogicalResult verifyNotFieldNativeTraitImpl(mlir::Operation *op);
21
24template <typename TypeClass>
25// NOLINTNEXTLINE(bugprone-crtp-constructor-accessibility)
26class ConstraintGen : public mlir::OpTrait::TraitBase<TypeClass, ConstraintGen> {
27public:
28 inline static mlir::LogicalResult verifyTrait(mlir::Operation *op) {
30 }
31};
32
35template <typename TypeClass>
36// NOLINTNEXTLINE(bugprone-crtp-constructor-accessibility)
37class WitnessGen : public mlir::OpTrait::TraitBase<TypeClass, WitnessGen> {
38public:
39 inline static mlir::LogicalResult verifyTrait(mlir::Operation *op) {
41 }
42};
43
46template <typename TypeClass>
47// NOLINTNEXTLINE(bugprone-crtp-constructor-accessibility)
48class NotFieldNative : public mlir::OpTrait::TraitBase<TypeClass, NotFieldNative> {
49public:
50 inline static mlir::LogicalResult verifyTrait(mlir::Operation *op) {
52 }
53};
54
55} // namespace llzk::function
Marker for ops that are specific to constraint generation.
Definition OpTraits.h:26
static mlir::LogicalResult verifyTrait(mlir::Operation *op)
Definition OpTraits.h:28
Marker for ops over llzk.felt type operands that are not native to finite field arithmetic.
Definition OpTraits.h:48
static mlir::LogicalResult verifyTrait(mlir::Operation *op)
Definition OpTraits.h:50
Marker for ops that are specific to witness generation.
Definition OpTraits.h:37
static mlir::LogicalResult verifyTrait(mlir::Operation *op)
Definition OpTraits.h:39
LogicalResult verifyNotFieldNativeTraitImpl(Operation *op)
Definition OpTraits.cpp:48
LogicalResult verifyConstraintGenTraitImpl(Operation *op)
Definition OpTraits.cpp:32
LogicalResult verifyWitnessGenTraitImpl(Operation *op)
Definition OpTraits.cpp:40