CIRCT 24.0.0git
Loading...
Searching...
No Matches
HW.cpp File Reference
#include "circt-c/Dialect/HW.h"
#include "circt/Dialect/HW/HWAttributes.h"
#include "circt/Dialect/HW/HWInstanceGraph.h"
#include "circt/Dialect/HW/HWOps.h"
#include "circt/Dialect/HW/HWPasses.h"
#include "circt/Dialect/HW/HWTypes.h"
#include "circt/Support/LLVM.h"
#include "mlir/CAPI/IR.h"
#include "mlir/CAPI/Registration.h"
#include "mlir/CAPI/Support.h"
#include "llvm/ADT/PostOrderIterator.h"
Include dependency graph for HW.cpp:

Go to the source code of this file.

Functions

void registerHWPasses ()
int64_t hwGetBitWidth (MlirType type)
 Return the hardware bit width of a type.
MlirType hwGetCanonicalType (MlirType type)
 Recursively remove HW type aliases from a type and its subelements.
bool hwTypeIsAValueType (MlirType type)
 Return true if the specified type can be used as an HW value type, that is the set of types that can be composed together to represent synthesized, hardware but not marker types like InOutType or unknown types from other dialects.
bool hwTypeIsAArrayType (MlirType type)
 If the type is an HW array.
MlirType hwArrayTypeGet (MlirType element, size_t size)
 Creates a fixed-size HW array type in the context associated with element.
MlirType hwArrayTypeGetElementType (MlirType type)
 returns the element type of an array type
intptr_t hwArrayTypeGetSize (MlirType type)
 returns the size of an array type
bool hwTypeIsAIntType (MlirType type)
 If the type is an HW int.
MlirType hwParamIntTypeGet (MlirAttribute parameter)
MlirAttribute hwParamIntTypeGetWidthAttr (MlirType type)
MlirType hwInOutTypeGet (MlirType element)
 Creates an HW inout type in the context associated with element.
MlirType hwInOutTypeGetElementType (MlirType type)
 Returns the element type of an inout type.
bool hwTypeIsAInOut (MlirType type)
 If the type is an HW inout.
bool hwTypeIsAModuleType (MlirType type)
 If the type is an HW module type.
MlirType hwModuleTypeGet (MlirContext ctx, intptr_t numPorts, HWModulePort const *ports)
 Creates an HW module type.
intptr_t hwModuleTypeGetNumInputs (MlirType type)
 Get an HW module type's number of inputs.
MlirType hwModuleTypeGetInputType (MlirType type, intptr_t index)
 Get an HW module type's input type at a specific index.
MlirStringRef hwModuleTypeGetInputName (MlirType type, intptr_t index)
 Get an HW module type's input name at a specific index.
intptr_t hwModuleTypeGetNumOutputs (MlirType type)
 Get an HW module type's number of outputs.
MlirType hwModuleTypeGetOutputType (MlirType type, intptr_t index)
 Get an HW module type's output type at a specific index.
MlirStringRef hwModuleTypeGetOutputName (MlirType type, intptr_t index)
 Get an HW module type's output name at a specific index.
void hwModuleTypeGetPort (MlirType type, intptr_t index, HWModulePort *ret)
 Get an HW module type's port info at a specific index.
bool hwTypeIsAStructType (MlirType type)
 If the type is an HW struct.
MlirType hwStructTypeGet (MlirContext ctx, intptr_t numElements, HWStructFieldInfo const *elements)
 Creates an HW struct type in the context associated with the elements.
MlirType hwStructTypeGetField (MlirType structType, MlirStringRef fieldName)
MlirAttribute hwStructTypeGetFieldIndex (MlirType structType, MlirStringRef fieldName)
intptr_t hwStructTypeGetNumFields (MlirType structType)
HWStructFieldInfo hwStructTypeGetFieldNum (MlirType structType, unsigned idx)
bool hwTypeIsAUnionType (MlirType type)
 If the type is an HW union.
MlirType hwUnionTypeGet (MlirContext ctx, intptr_t numElements, HWUnionFieldInfo const *elements)
 Creates an HW union type in the context associated with the elements.
MlirType hwUnionTypeGetField (MlirType unionType, MlirStringRef fieldName)
MlirAttribute hwUnionTypeGetFieldIndex (MlirType unionType, MlirStringRef fieldName)
intptr_t hwUnionTypeGetNumFields (MlirType unionType)
HWUnionFieldInfo hwUnionTypeGetFieldNum (MlirType unionType, unsigned idx)
bool hwTypeIsATypeAliasType (MlirType type)
 If the type is an HW type alias.
MlirType hwTypeAliasTypeGet (MlirStringRef cScope, MlirStringRef cName, MlirType cInnerType)
MlirType hwTypeAliasTypeGetCanonicalType (MlirType typeAlias)
MlirType hwTypeAliasTypeGetInnerType (MlirType typeAlias)
MlirStringRef hwTypeAliasTypeGetName (MlirType typeAlias)
MlirStringRef hwTypeAliasTypeGetScope (MlirType typeAlias)
bool hwAttrIsAInnerSymAttr (MlirAttribute attr)
MlirAttribute hwInnerSymAttrGet (MlirAttribute symName)
MlirAttribute hwInnerSymAttrGetEmpty (MlirContext ctx)
MlirAttribute hwInnerSymAttrGetSymName (MlirAttribute innerSymAttr)
bool hwAttrIsAInnerRefAttr (MlirAttribute attr)
MlirAttribute hwInnerRefAttrGet (MlirAttribute moduleName, MlirAttribute innerSym)
MlirAttribute hwInnerRefAttrGetName (MlirAttribute innerRefAttr)
MlirAttribute hwInnerRefAttrGetModule (MlirAttribute innerRefAttr)
MLIR_CAPI_EXPORTED bool hwAttrIsAParamDeclAttr (MlirAttribute attr)
MLIR_CAPI_EXPORTED MlirAttribute hwParamDeclAttrGet (MlirStringRef cName, MlirType cType, MlirAttribute cValue)
MLIR_CAPI_EXPORTED MlirStringRef hwParamDeclAttrGetName (MlirAttribute decl)
MLIR_CAPI_EXPORTED MlirType hwParamDeclAttrGetType (MlirAttribute decl)
MLIR_CAPI_EXPORTED MlirAttribute hwParamDeclAttrGetValue (MlirAttribute decl)
MLIR_CAPI_EXPORTED bool hwAttrIsAParamDeclRefAttr (MlirAttribute attr)
MLIR_CAPI_EXPORTED MlirAttribute hwParamDeclRefAttrGet (MlirContext ctx, MlirStringRef cName)
MLIR_CAPI_EXPORTED MlirStringRef hwParamDeclRefAttrGetName (MlirAttribute decl)
MLIR_CAPI_EXPORTED MlirType hwParamDeclRefAttrGetType (MlirAttribute decl)
MLIR_CAPI_EXPORTED bool hwAttrIsAParamVerbatimAttr (MlirAttribute attr)
MLIR_CAPI_EXPORTED MlirAttribute hwParamVerbatimAttrGet (MlirAttribute text)
MLIR_CAPI_EXPORTED bool hwAttrIsAOutputFileAttr (MlirAttribute attr)
MLIR_CAPI_EXPORTED MlirAttribute hwOutputFileGetFromFileName (MlirAttribute fileName, bool excludeFromFileList, bool includeReplicatedOp)
MlirStringRef hwOutputFileGetFileName (MlirAttribute outputFile)
MLIR_CAPI_EXPORTED HWInstanceGraph hwInstanceGraphGet (MlirOperation operation)
MLIR_CAPI_EXPORTED void hwInstanceGraphDestroy (HWInstanceGraph instanceGraph)
MLIR_CAPI_EXPORTED HWInstanceGraphNode hwInstanceGraphGetTopLevelNode (HWInstanceGraph instanceGraph)
MLIR_CAPI_EXPORTED void hwInstanceGraphForEachNode (HWInstanceGraph instanceGraph, HWInstanceGraphNodeCallback callback, void *userData)
MLIR_CAPI_EXPORTED bool hwInstanceGraphNodeEqual (HWInstanceGraphNode lhs, HWInstanceGraphNode rhs)
MLIR_CAPI_EXPORTED MlirModule hwInstanceGraphNodeGetModule (HWInstanceGraphNode node)
MLIR_CAPI_EXPORTED MlirOperation hwInstanceGraphNodeGetModuleOp (HWInstanceGraphNode node)

Function Documentation

◆ hwArrayTypeGet()

MlirType hwArrayTypeGet ( MlirType element,
size_t size )

Creates a fixed-size HW array type in the context associated with element.

Definition at line 48 of file HW.cpp.

References unwrap(), and wrap().

◆ hwArrayTypeGetElementType()

MlirType hwArrayTypeGetElementType ( MlirType type)

returns the element type of an array type

Definition at line 52 of file HW.cpp.

References unwrap(), and wrap().

◆ hwArrayTypeGetSize()

intptr_t hwArrayTypeGetSize ( MlirType type)

returns the size of an array type

Definition at line 56 of file HW.cpp.

References unwrap().

◆ hwAttrIsAInnerRefAttr()

bool hwAttrIsAInnerRefAttr ( MlirAttribute attr)

Definition at line 291 of file HW.cpp.

References unwrap().

◆ hwAttrIsAInnerSymAttr()

bool hwAttrIsAInnerSymAttr ( MlirAttribute attr)

Definition at line 275 of file HW.cpp.

References unwrap().

◆ hwAttrIsAOutputFileAttr()

MLIR_CAPI_EXPORTED bool hwAttrIsAOutputFileAttr ( MlirAttribute attr)

Definition at line 359 of file HW.cpp.

References unwrap().

◆ hwAttrIsAParamDeclAttr()

MLIR_CAPI_EXPORTED bool hwAttrIsAParamDeclAttr ( MlirAttribute attr)

Definition at line 310 of file HW.cpp.

References unwrap().

◆ hwAttrIsAParamDeclRefAttr()

MLIR_CAPI_EXPORTED bool hwAttrIsAParamDeclRefAttr ( MlirAttribute attr)

Definition at line 331 of file HW.cpp.

References unwrap().

◆ hwAttrIsAParamVerbatimAttr()

MLIR_CAPI_EXPORTED bool hwAttrIsAParamVerbatimAttr ( MlirAttribute attr)

Definition at line 349 of file HW.cpp.

References unwrap().

◆ hwGetBitWidth()

int64_t hwGetBitWidth ( MlirType type)

Return the hardware bit width of a type.

Does not reflect any encoding, padding, or storage scheme, just the bit (and wire width) of a statically-size type. Reflects the number of wires needed to transmit a value of this type. Returns -1 if the type is not known or cannot be statically computed.

Definition at line 38 of file HW.cpp.

References circt::hw::getBitWidth(), and unwrap().

◆ hwGetCanonicalType()

MlirType hwGetCanonicalType ( MlirType type)

Recursively remove HW type aliases from a type and its subelements.

Definition at line 40 of file HW.cpp.

References circt::hw::getCanonicalType(), unwrap(), and wrap().

◆ hwInnerRefAttrGet()

MlirAttribute hwInnerRefAttrGet ( MlirAttribute moduleName,
MlirAttribute innerSym )

Definition at line 295 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInnerRefAttrGetModule()

MlirAttribute hwInnerRefAttrGetModule ( MlirAttribute innerRefAttr)

Definition at line 306 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInnerRefAttrGetName()

MlirAttribute hwInnerRefAttrGetName ( MlirAttribute innerRefAttr)

Definition at line 302 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInnerSymAttrGet()

MlirAttribute hwInnerSymAttrGet ( MlirAttribute symName)

Definition at line 279 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInnerSymAttrGetEmpty()

MlirAttribute hwInnerSymAttrGetEmpty ( MlirContext ctx)

Definition at line 283 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInnerSymAttrGetSymName()

MlirAttribute hwInnerSymAttrGetSymName ( MlirAttribute innerSymAttr)

Definition at line 287 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInOutTypeGet()

MlirType hwInOutTypeGet ( MlirType element)

Creates an HW inout type in the context associated with element.

Definition at line 70 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInOutTypeGetElementType()

MlirType hwInOutTypeGetElementType ( MlirType type)

Returns the element type of an inout type.

Definition at line 74 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInstanceGraphDestroy()

MLIR_CAPI_EXPORTED void hwInstanceGraphDestroy ( HWInstanceGraph instanceGraph)

Definition at line 380 of file HW.cpp.

References unwrap().

◆ hwInstanceGraphForEachNode()

MLIR_CAPI_EXPORTED void hwInstanceGraphForEachNode ( HWInstanceGraph instanceGraph,
HWInstanceGraphNodeCallback callback,
void * userData )

Definition at line 390 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInstanceGraphGet()

MLIR_CAPI_EXPORTED HWInstanceGraph hwInstanceGraphGet ( MlirOperation operation)

Definition at line 376 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInstanceGraphGetTopLevelNode()

MLIR_CAPI_EXPORTED HWInstanceGraphNode hwInstanceGraphGetTopLevelNode ( HWInstanceGraph instanceGraph)

Definition at line 385 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInstanceGraphNodeEqual()

MLIR_CAPI_EXPORTED bool hwInstanceGraphNodeEqual ( HWInstanceGraphNode lhs,
HWInstanceGraphNode rhs )

Definition at line 399 of file HW.cpp.

References unwrap().

◆ hwInstanceGraphNodeGetModule()

MLIR_CAPI_EXPORTED MlirModule hwInstanceGraphNodeGetModule ( HWInstanceGraphNode node)

Definition at line 405 of file HW.cpp.

References unwrap(), and wrap().

◆ hwInstanceGraphNodeGetModuleOp()

MLIR_CAPI_EXPORTED MlirOperation hwInstanceGraphNodeGetModuleOp ( HWInstanceGraphNode node)

Definition at line 410 of file HW.cpp.

References unwrap(), and wrap().

◆ hwModuleTypeGet()

MlirType hwModuleTypeGet ( MlirContext ctx,
intptr_t numPorts,
HWModulePort const * ports )

◆ hwModuleTypeGetInputName()

MlirStringRef hwModuleTypeGetInputName ( MlirType type,
intptr_t index )

Get an HW module type's input name at a specific index.

Definition at line 117 of file HW.cpp.

References unwrap(), and wrap().

◆ hwModuleTypeGetInputType()

MlirType hwModuleTypeGetInputType ( MlirType type,
intptr_t index )

Get an HW module type's input type at a specific index.

Definition at line 113 of file HW.cpp.

References unwrap(), and wrap().

◆ hwModuleTypeGetNumInputs()

intptr_t hwModuleTypeGetNumInputs ( MlirType type)

Get an HW module type's number of inputs.

Definition at line 109 of file HW.cpp.

References unwrap().

◆ hwModuleTypeGetNumOutputs()

intptr_t hwModuleTypeGetNumOutputs ( MlirType type)

Get an HW module type's number of outputs.

Definition at line 121 of file HW.cpp.

References unwrap().

◆ hwModuleTypeGetOutputName()

MlirStringRef hwModuleTypeGetOutputName ( MlirType type,
intptr_t index )

Get an HW module type's output name at a specific index.

Definition at line 129 of file HW.cpp.

References unwrap(), and wrap().

◆ hwModuleTypeGetOutputType()

MlirType hwModuleTypeGetOutputType ( MlirType type,
intptr_t index )

Get an HW module type's output type at a specific index.

Definition at line 125 of file HW.cpp.

References unwrap(), and wrap().

◆ hwModuleTypeGetPort()

void hwModuleTypeGetPort ( MlirType type,
intptr_t index,
HWModulePort * ret )

Get an HW module type's port info at a specific index.

Definition at line 133 of file HW.cpp.

References HWModulePort::dir, circt::hw::ModulePort::Input, HWModulePort::name, circt::hw::ModulePort::Output, HWModulePort::type, unwrap(), and wrap().

◆ hwOutputFileGetFileName()

MlirStringRef hwOutputFileGetFileName ( MlirAttribute outputFile)

Definition at line 371 of file HW.cpp.

References unwrap(), and wrap().

◆ hwOutputFileGetFromFileName()

MLIR_CAPI_EXPORTED MlirAttribute hwOutputFileGetFromFileName ( MlirAttribute fileName,
bool excludeFromFileList,
bool includeReplicatedOp )

Definition at line 363 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamDeclAttrGet()

MLIR_CAPI_EXPORTED MlirAttribute hwParamDeclAttrGet ( MlirStringRef cName,
MlirType cType,
MlirAttribute cValue )

Definition at line 313 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamDeclAttrGetName()

MLIR_CAPI_EXPORTED MlirStringRef hwParamDeclAttrGetName ( MlirAttribute decl)

Definition at line 321 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamDeclAttrGetType()

MLIR_CAPI_EXPORTED MlirType hwParamDeclAttrGetType ( MlirAttribute decl)

Definition at line 324 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamDeclAttrGetValue()

MLIR_CAPI_EXPORTED MlirAttribute hwParamDeclAttrGetValue ( MlirAttribute decl)

Definition at line 327 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamDeclRefAttrGet()

MLIR_CAPI_EXPORTED MlirAttribute hwParamDeclRefAttrGet ( MlirContext ctx,
MlirStringRef cName )

Definition at line 335 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamDeclRefAttrGetName()

MLIR_CAPI_EXPORTED MlirStringRef hwParamDeclRefAttrGetName ( MlirAttribute decl)

Definition at line 342 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamDeclRefAttrGetType()

MLIR_CAPI_EXPORTED MlirType hwParamDeclRefAttrGetType ( MlirAttribute decl)

Definition at line 345 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamIntTypeGet()

MlirType hwParamIntTypeGet ( MlirAttribute parameter)

Definition at line 62 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamIntTypeGetWidthAttr()

MlirAttribute hwParamIntTypeGetWidthAttr ( MlirType type)

Definition at line 66 of file HW.cpp.

References unwrap(), and wrap().

◆ hwParamVerbatimAttrGet()

MLIR_CAPI_EXPORTED MlirAttribute hwParamVerbatimAttrGet ( MlirAttribute text)

Definition at line 352 of file HW.cpp.

References unwrap(), and wrap().

◆ hwStructTypeGet()

MlirType hwStructTypeGet ( MlirContext ctx,
intptr_t numElements,
HWStructFieldInfo const * elements )

Creates an HW struct type in the context associated with the elements.

Definition at line 155 of file HW.cpp.

References numElements, unwrap(), and wrap().

◆ hwStructTypeGetField()

MlirType hwStructTypeGetField ( MlirType structType,
MlirStringRef fieldName )

Definition at line 166 of file HW.cpp.

References unwrap(), and wrap().

◆ hwStructTypeGetFieldIndex()

MlirAttribute hwStructTypeGetFieldIndex ( MlirType structType,
MlirStringRef fieldName )

Definition at line 171 of file HW.cpp.

References unwrap(), and wrap().

◆ hwStructTypeGetFieldNum()

HWStructFieldInfo hwStructTypeGetFieldNum ( MlirType structType,
unsigned idx )

Definition at line 184 of file HW.cpp.

References HWStructFieldInfo::name, HWStructFieldInfo::type, unwrap(), and wrap().

◆ hwStructTypeGetNumFields()

intptr_t hwStructTypeGetNumFields ( MlirType structType)

Definition at line 179 of file HW.cpp.

References unwrap().

◆ hwTypeAliasTypeGet()

MlirType hwTypeAliasTypeGet ( MlirStringRef cScope,
MlirStringRef cName,
MlirType cInnerType )

Definition at line 239 of file HW.cpp.

References unwrap(), and wrap().

◆ hwTypeAliasTypeGetCanonicalType()

MlirType hwTypeAliasTypeGetCanonicalType ( MlirType typeAlias)

Definition at line 251 of file HW.cpp.

References unwrap(), and wrap().

◆ hwTypeAliasTypeGetInnerType()

MlirType hwTypeAliasTypeGetInnerType ( MlirType typeAlias)

Definition at line 256 of file HW.cpp.

References unwrap(), and wrap().

◆ hwTypeAliasTypeGetName()

MlirStringRef hwTypeAliasTypeGetName ( MlirType typeAlias)

Definition at line 261 of file HW.cpp.

References unwrap(), and wrap().

◆ hwTypeAliasTypeGetScope()

MlirStringRef hwTypeAliasTypeGetScope ( MlirType typeAlias)

Definition at line 266 of file HW.cpp.

References unwrap(), and wrap().

◆ hwTypeIsAArrayType()

bool hwTypeIsAArrayType ( MlirType type)

If the type is an HW array.

Definition at line 46 of file HW.cpp.

References unwrap().

◆ hwTypeIsAInOut()

bool hwTypeIsAInOut ( MlirType type)

If the type is an HW inout.

Definition at line 78 of file HW.cpp.

References unwrap().

◆ hwTypeIsAIntType()

bool hwTypeIsAIntType ( MlirType type)

If the type is an HW int.

Definition at line 60 of file HW.cpp.

References unwrap().

◆ hwTypeIsAModuleType()

bool hwTypeIsAModuleType ( MlirType type)

If the type is an HW module type.

Definition at line 80 of file HW.cpp.

References unwrap().

◆ hwTypeIsAStructType()

bool hwTypeIsAStructType ( MlirType type)

If the type is an HW struct.

Definition at line 151 of file HW.cpp.

References unwrap().

◆ hwTypeIsATypeAliasType()

bool hwTypeIsATypeAliasType ( MlirType type)

If the type is an HW type alias.

Definition at line 235 of file HW.cpp.

References unwrap().

◆ hwTypeIsAUnionType()

bool hwTypeIsAUnionType ( MlirType type)

If the type is an HW union.

Definition at line 193 of file HW.cpp.

References unwrap().

◆ hwTypeIsAValueType()

bool hwTypeIsAValueType ( MlirType type)

Return true if the specified type can be used as an HW value type, that is the set of types that can be composed together to represent synthesized, hardware but not marker types like InOutType or unknown types from other dialects.

Definition at line 44 of file HW.cpp.

References circt::hw::isHWValueType(), and unwrap().

◆ hwUnionTypeGet()

MlirType hwUnionTypeGet ( MlirContext ctx,
intptr_t numElements,
HWUnionFieldInfo const * elements )

Creates an HW union type in the context associated with the elements.

Definition at line 195 of file HW.cpp.

References numElements, HWUnionFieldInfo::offset, unwrap(), and wrap().

◆ hwUnionTypeGetField()

MlirType hwUnionTypeGetField ( MlirType unionType,
MlirStringRef fieldName )

Definition at line 207 of file HW.cpp.

References unwrap(), and wrap().

◆ hwUnionTypeGetFieldIndex()

MlirAttribute hwUnionTypeGetFieldIndex ( MlirType unionType,
MlirStringRef fieldName )

Definition at line 212 of file HW.cpp.

References unwrap(), and wrap().

◆ hwUnionTypeGetFieldNum()

HWUnionFieldInfo hwUnionTypeGetFieldNum ( MlirType unionType,
unsigned idx )

◆ hwUnionTypeGetNumFields()

intptr_t hwUnionTypeGetNumFields ( MlirType unionType)

Definition at line 220 of file HW.cpp.

References unwrap().

◆ registerHWPasses()

void registerHWPasses ( void )

Definition at line 32 of file HW.cpp.

References registerHWPasses(), and registerPasses().

Referenced by registerHWPasses(), and registerPasses().