13 #ifndef CIRCT_DIALECT_MOORE_MOORETYPES_H
14 #define CIRCT_DIALECT_MOORE_MOORETYPES_H
17 #include "mlir/IR/Attributes.h"
18 #include "mlir/IR/BuiltinAttributes.h"
19 #include "mlir/IR/Location.h"
20 #include "mlir/IR/Types.h"
21 #include "mlir/Interfaces/MemorySlotInterfaces.h"
33 class OpenUnpackedArrayType;
41 class UnpackedArrayType;
42 class UnpackedStructType;
43 class UnpackedUnionType;
85 return llvm::isa<
PackedType, StringType, ChandleType, EventType, RealType,
86 UnpackedArrayType, OpenUnpackedArrayType, AssocArrayType,
87 QueueType, UnpackedStructType, UnpackedUnionType>(type);
101 static Type
parse(mlir::AsmParser &odsParser);
102 void print(mlir::AsmPrinter &odsPrinter)
const;
136 return llvm::isa<VoidType, IntType, ArrayType, OpenArrayType, StructType,
149 using UnpackedType::UnpackedType;
177 #define GET_TYPEDEF_CLASSES
178 #include "circt/Dialect/Moore/MooreTypes.h.inc"
A packed SystemVerilog type.
std::optional< unsigned > getBitSize() const
Get the size of this type in bits.
Domain getDomain() const
Get the value domain of this type.
static bool classof(Type type)
An unpacked SystemVerilog type.
std::optional< unsigned > getBitSize() const
Get the size of this type in bits.
Domain getDomain() const
Get the value domain of this type.
static bool classof(Type type)
static Type parse(mlir::AsmParser &odsParser)
void print(mlir::AsmPrinter &odsPrinter) const
llvm::hash_code hash_value(const StructLikeMember &x)
Domain
The number of values each bit of a type can assume.
@ FourValued
Four-valued types such as logic or integer.
@ TwoValued
Two-valued types such as bit or int.
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
size_t hash_combine(size_t h1, size_t h2)
C++'s stdlib doesn't have a hash_combine function. This is a simple one.
UnpackedType type
The type of this member.
StringAttr name
The name of this member.
bool operator==(const StructLikeMember &other) const