LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
Ops.h
Go to the documentation of this file.
1//===-- Ops.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
18#include "llzk/Util/Constants.h"
20
21#include <mlir/IR/OpImplementation.h>
22#include <mlir/Interfaces/CallInterfaces.h>
23#include <mlir/Interfaces/ControlFlowInterfaces.h>
24#include <mlir/Interfaces/FunctionInterfaces.h>
25
26#include <cstdint>
27#include <optional>
28
29// Include TableGen'd declarations
30#define GET_OP_CLASSES
32
33namespace llzk::function {
34
36constexpr char ARG_NAME_ATTR_NAME[] = "function.arg_name";
37
39constexpr char RES_NAME_ATTR_NAME[] = "function.res_name";
40
52
59FunctionKind fnNameToKind(mlir::StringRef name);
60
61} // namespace llzk::function
constexpr char ARG_NAME_ATTR_NAME[]
Attribute name for source-level function argument names.
Definition Ops.h:36
constexpr char RES_NAME_ATTR_NAME[]
Attribute name for source-level function result names.
Definition Ops.h:39
FunctionKind fnNameToKind(mlir::StringRef name)
Given a function name, return the corresponding FunctionKind.
Definition Ops.cpp:52
FunctionKind
Kinds of functions in LLZK.
Definition Ops.h:42
@ StructConstrain
Function within a struct named FUNC_NAME_CONSTRAIN.
Definition Ops.h:46
@ StructProduct
Function within a struct named FUNC_NAME_PRODUCT.
Definition Ops.h:48
@ StructCompute
Function within a struct named FUNC_NAME_COMPUTE.
Definition Ops.h:44
@ Free
Function that is not within a struct.
Definition Ops.h:50