1//===-- Types.td -------------------------------------------*- tablegen -*-===//
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
8//===----------------------------------------------------------------------===//
10#ifndef LLZK_SHARED_TYPES
11#define LLZK_SHARED_TYPES
13include "mlir/IR/AttrTypeBase.td"
15def AnyLLZKType : Type<CPred<"::llzk::isValidType($_self)">,
16 "a valid LLZK type", "::mlir::Type">;
18def GlobalDefType : Type<CPred<"::llzk::isValidGlobalType($_self)">,
19 "any LLZK type except non-constant types">;
22 : Type<CPred<"::llzk::isValidEmitEqType($_self)">,
23 "any LLZK type, excluding non-Signal struct and string types">;
25def ConstReadType : Type<CPred<"::llzk::isValidConstReadType($_self)">,
26 "integral, felt, or typevar type">;
28def AnyLLZKIntType : AnyTypeOf<[I1, Index]>;
30#endif // LLZK_SHARED_TYPES