LLZK
3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Toggle main menu visibility
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
12
#include "
llzk/Dialect/Polymorphic/IR/Dialect.h
"
13
#include "
llzk/Dialect/Polymorphic/IR/Types.h
"
14
#include "
llzk/Dialect/Shared/OpHelpers.h
"
15
16
#include <mlir/Dialect/Affine/IR/AffineValueMap.h>
17
#include <mlir/Interfaces/ControlFlowInterfaces.h>
18
#include <mlir/Interfaces/InferTypeOpInterface.h>
19
20
#include <llvm/ADT/StringRef.h>
21
22
// Include TableGen'd declarations
23
#include "
llzk/Dialect/Polymorphic/IR/OpInterfaces.h.inc
"
24
25
namespace
llzk::polymorphic
{
26
34
inline
constexpr
llvm::StringLiteral
TEMPLATE_NAME_PATTERN_ATTR
=
"poly.name_pattern"
;
35
37
inline
constexpr
llvm::StringLiteral
SPECIALIZATION_ID_ATTR
=
"poly.specialization_id"
;
38
inline
constexpr
llvm::StringLiteral
SPECIALIZATION_ORIGIN_ATTR
=
"poly.origin"
;
39
inline
constexpr
llvm::StringLiteral
SPECIALIZATION_ARGUMENTS_ATTR
=
"poly.arguments"
;
40
inline
constexpr
llvm::StringLiteral
FAMILY_ATTR
=
"poly.family"
;
41
inline
constexpr
llvm::StringLiteral
FAMILY_SPECIALIZATIONS_ATTR
=
"poly.family_specializations"
;
42
inline
constexpr
llvm::StringLiteral
FAMILY_INDICES_KEY
=
"indices"
;
43
inline
constexpr
llvm::StringLiteral
FAMILY_SPECIALIZATION_KEY
=
"specialization"
;
46
inline
constexpr
llvm::StringLiteral
FAMILY_TYPE_KEY
=
"type"
;
47
48
template
<
typename
OpT>
49
concept
TemplateSymbolBindingOp
=
50
std::is_same_v<OpT, TemplateSymbolBindingOpInterface> ||
51
std::is_base_of_v<TemplateSymbolBindingOpInterface::Trait<OpT>, OpT>;
52
}
// namespace llzk::polymorphic
53
54
// Include TableGen'd declarations
55
#define GET_OP_CLASSES
56
#include "
llzk/Dialect/Polymorphic/IR/Ops.h.inc
"
57
58
namespace
llzk::polymorphic
{
59
61
bool
isInTemplate
(mlir::Operation *op);
62
65
mlir::FailureOr<TemplateOp>
verifyInTemplate
(mlir::Operation *op);
66
67
}
// namespace llzk::polymorphic
OpHelpers.h
Dialect.h
OpInterfaces.h.inc
Ops.h.inc
Types.h
llzk::polymorphic::TemplateSymbolBindingOp
Definition
Ops.h:49
llzk::polymorphic
Definition
Ops.cpp:32
llzk::polymorphic::FAMILY_ATTR
constexpr llvm::StringLiteral FAMILY_ATTR
Definition
Ops.h:40
llzk::polymorphic::TEMPLATE_NAME_PATTERN_ATTR
constexpr llvm::StringLiteral TEMPLATE_NAME_PATTERN_ATTR
Metadata carried across transformation passes preserving the literal chunks of a partially-instantiat...
Definition
Ops.h:34
llzk::polymorphic::SPECIALIZATION_ID_ATTR
constexpr llvm::StringLiteral SPECIALIZATION_ID_ATTR
Metadata on concrete struct clones and rolled affine family uses.
Definition
Ops.h:37
llzk::polymorphic::SPECIALIZATION_ORIGIN_ATTR
constexpr llvm::StringLiteral SPECIALIZATION_ORIGIN_ATTR
Definition
Ops.h:38
llzk::polymorphic::SPECIALIZATION_ARGUMENTS_ATTR
constexpr llvm::StringLiteral SPECIALIZATION_ARGUMENTS_ATTR
Definition
Ops.h:39
llzk::polymorphic::FAMILY_SPECIALIZATION_KEY
constexpr llvm::StringLiteral FAMILY_SPECIALIZATION_KEY
Definition
Ops.h:43
llzk::polymorphic::FAMILY_INDICES_KEY
constexpr llvm::StringLiteral FAMILY_INDICES_KEY
Definition
Ops.h:42
llzk::polymorphic::isInTemplate
bool isInTemplate(Operation *op)
Definition
Ops.cpp:34
llzk::polymorphic::FAMILY_TYPE_KEY
constexpr llvm::StringLiteral FAMILY_TYPE_KEY
The original affine-parameterized struct family, paired with element indices and a concrete specializ...
Definition
Ops.h:46
llzk::polymorphic::verifyInTemplate
FailureOr< TemplateOp > verifyInTemplate(Operation *op)
Definition
Ops.cpp:36
llzk::polymorphic::FAMILY_SPECIALIZATIONS_ATTR
constexpr llvm::StringLiteral FAMILY_SPECIALIZATIONS_ATTR
Definition
Ops.h:41
include
llzk
Dialect
Polymorphic
IR
Ops.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.