CIRCT 24.0.0git
Loading...
Searching...
No Matches
OMOps.cpp File Reference
#include "circt/Dialect/OM/OMOps.h"
#include "circt/Dialect/HW/HWOps.h"
#include "circt/Dialect/OM/OMUtils.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/ImplicitLocOpBuilder.h"
#include "mlir/IR/SymbolTable.h"
#include "llvm/ADT/STLExtras.h"
#include "circt/Dialect/OM/OM.cpp.inc"
Include dependency graph for OMOps.cpp:

Go to the source code of this file.

Macros

#define GET_OP_CLASSES

Typedefs

using IntegerBinaryFn

Functions

static ParseResult parseBasePathString (OpAsmParser &parser, PathAttr &path)
static void printBasePathString (OpAsmPrinter &p, Operation *op, PathAttr path)
static ParseResult parsePathString (OpAsmParser &parser, PathAttr &path, StringAttr &module, StringAttr &ref, StringAttr &field)
static void printPathString (OpAsmPrinter &p, Operation *op, PathAttr path, StringAttr module, StringAttr ref, StringAttr field)
static ParseResult parseFieldLocs (OpAsmParser &parser, ArrayAttr &fieldLocs)
static void printFieldLocs (OpAsmPrinter &printer, Operation *op, ArrayAttr fieldLocs)
static ParseResult parseClassFieldsList (OpAsmParser &parser, SmallVectorImpl< Attribute > &fieldNames, SmallVectorImpl< Type > &fieldTypes)
template<typename ClassTy>
static ParseResult parseClassLike (OpAsmParser &parser, OperationState &state)
static void printClassLike (ClassLike classLike, OpAsmPrinter &printer)
LogicalResult verifyClassLike (ClassLike classLike)
void getClassLikeAsmBlockArgumentNames (ClassLike classLike, Region &region, OpAsmSetValueNameFn setNameFn)
NamedAttribute makeFieldType (StringAttr name, Type type)
NamedAttribute makeFieldIdx (MLIRContext *ctx, mlir::StringAttr name, unsigned i)
std::optional< Type > getClassLikeFieldType (ClassLike classLike, StringAttr name)
void replaceClassLikeFieldTypes (ClassLike classLike, AttrTypeReplacer &replacer)
static FailureOr< ClassLike > verifyClassLikeSymbolUser (Operation *op, SymbolTableCollection &symbolTable, ClassType resultType, StringAttr className)
static APSInt getAPSIntForOMIntegerAttr (circt::om::IntegerAttr attr)
static OpFoldResult foldIntegerBinaryArithmetic (Attribute lhsAttr, Attribute rhsAttr, IntegerBinaryFn evaluate)
static FailureOr< mlir::Attribute > evaluateBinaryEquality (mlir::Attribute lhsAttr, mlir::Attribute rhsAttr)
static OpFoldResult foldIntegerBitwise (Attribute lhsAttr, Attribute rhsAttr, IntegerBinaryFn evaluate)
static bool isZeroInt (Attribute a)
static bool isAllOnesInt (Attribute a)

Macro Definition Documentation

◆ GET_OP_CLASSES

#define GET_OP_CLASSES

Definition at line 1308 of file OMOps.cpp.

Typedef Documentation

◆ IntegerBinaryFn

Initial value:
llvm::function_ref<FailureOr<APSInt>(const APSInt &, const APSInt &)>

Definition at line 819 of file OMOps.cpp.

Function Documentation

◆ evaluateBinaryEquality()

FailureOr< mlir::Attribute > evaluateBinaryEquality ( mlir::Attribute lhsAttr,
mlir::Attribute rhsAttr )
static

Definition at line 1096 of file OMOps.cpp.

References failure(), and getAPSIntForOMIntegerAttr().

◆ foldIntegerBinaryArithmetic()

OpFoldResult foldIntegerBinaryArithmetic ( Attribute lhsAttr,
Attribute rhsAttr,
IntegerBinaryFn evaluate )
static

Definition at line 822 of file OMOps.cpp.

References getAPSIntForOMIntegerAttr().

◆ foldIntegerBitwise()

OpFoldResult foldIntegerBitwise ( Attribute lhsAttr,
Attribute rhsAttr,
IntegerBinaryFn evaluate )
static

Definition at line 1203 of file OMOps.cpp.

◆ getAPSIntForOMIntegerAttr()

APSInt getAPSIntForOMIntegerAttr ( circt::om::IntegerAttr attr)
static

Definition at line 808 of file OMOps.cpp.

Referenced by evaluateBinaryEquality(), and foldIntegerBinaryArithmetic().

◆ getClassLikeAsmBlockArgumentNames()

void getClassLikeAsmBlockArgumentNames ( ClassLike classLike,
Region & region,
OpAsmSetValueNameFn setNameFn )

Definition at line 265 of file OMOps.cpp.

◆ getClassLikeFieldType()

std::optional< Type > getClassLikeFieldType ( ClassLike classLike,
StringAttr name )

Definition at line 287 of file OMOps.cpp.

◆ isAllOnesInt()

bool isAllOnesInt ( Attribute a)
static

Definition at line 1225 of file OMOps.cpp.

◆ isZeroInt()

bool isZeroInt ( Attribute a)
static

Definition at line 1219 of file OMOps.cpp.

◆ makeFieldIdx()

NamedAttribute makeFieldIdx ( MLIRContext * ctx,
mlir::StringAttr name,
unsigned i )

Definition at line 281 of file OMOps.cpp.

◆ makeFieldType()

NamedAttribute makeFieldType ( StringAttr name,
Type type )

Definition at line 277 of file OMOps.cpp.

◆ parseBasePathString()

ParseResult parseBasePathString ( OpAsmParser & parser,
PathAttr & path )
static

Definition at line 28 of file OMOps.cpp.

References context, failure(), circt::om::parseBasePath(), and success().

◆ parseClassFieldsList()

ParseResult parseClassFieldsList ( OpAsmParser & parser,
SmallVectorImpl< Attribute > & fieldNames,
SmallVectorImpl< Type > & fieldTypes )
static

Definition at line 102 of file OMOps.cpp.

References failure(), and success().

Referenced by parseClassLike().

◆ parseClassLike()

template<typename ClassTy>
ParseResult parseClassLike ( OpAsmParser & parser,
OperationState & state )
static

Definition at line 135 of file OMOps.cpp.

References failure(), parseClassFieldsList(), and success().

◆ parseFieldLocs()

ParseResult parseFieldLocs ( OpAsmParser & parser,
ArrayAttr & fieldLocs )
static

Definition at line 79 of file OMOps.cpp.

References failure(), and success().

◆ parsePathString()

ParseResult parsePathString ( OpAsmParser & parser,
PathAttr & path,
StringAttr & module,
StringAttr & ref,
StringAttr & field )
static

Definition at line 50 of file OMOps.cpp.

References context, failure(), circt::om::parsePath(), and success().

◆ printBasePathString()

void printBasePathString ( OpAsmPrinter & p,
Operation * op,
PathAttr path )
static

Definition at line 39 of file OMOps.cpp.

References circt::om::PathElement::instance, and circt::om::PathElement::module.

◆ printClassLike()

void printClassLike ( ClassLike classLike,
OpAsmPrinter & printer )
static

Definition at line 192 of file OMOps.cpp.

◆ printFieldLocs()

void printFieldLocs ( OpAsmPrinter & printer,
Operation * op,
ArrayAttr fieldLocs )
static

Definition at line 89 of file OMOps.cpp.

◆ printPathString()

void printPathString ( OpAsmPrinter & p,
Operation * op,
PathAttr path,
StringAttr module,
StringAttr ref,
StringAttr field )
static

Definition at line 64 of file OMOps.cpp.

◆ replaceClassLikeFieldTypes()

void replaceClassLikeFieldTypes ( ClassLike classLike,
AttrTypeReplacer & replacer )

Definition at line 297 of file OMOps.cpp.

◆ verifyClassLike()

LogicalResult verifyClassLike ( ClassLike classLike)

Definition at line 248 of file OMOps.cpp.

References success().

◆ verifyClassLikeSymbolUser()

FailureOr< ClassLike > verifyClassLikeSymbolUser ( Operation * op,
SymbolTableCollection & symbolTable,
ClassType resultType,
StringAttr className )
static

Definition at line 571 of file OMOps.cpp.