CIRCT
20.0.0git
|
#include "circt/Dialect/FIRRTL/FIRRTLOps.h"
#include "circt/Dialect/FIRRTL/AnnotationDetails.h"
#include "circt/Dialect/FIRRTL/CHIRRTLDialect.h"
#include "circt/Dialect/FIRRTL/FIRRTLAnnotations.h"
#include "circt/Dialect/FIRRTL/FIRRTLAttributes.h"
#include "circt/Dialect/FIRRTL/FIRRTLInstanceImplementation.h"
#include "circt/Dialect/FIRRTL/FIRRTLTypes.h"
#include "circt/Dialect/FIRRTL/FIRRTLUtils.h"
#include "circt/Dialect/FIRRTL/FIRRTLVisitors.h"
#include "circt/Dialect/FIRRTL/FieldRefCache.h"
#include "circt/Dialect/HW/HWAttributes.h"
#include "circt/Dialect/HW/HWTypes.h"
#include "circt/Support/CustomDirectiveImpl.h"
#include "circt/Support/Utils.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/Diagnostics.h"
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/IR/SymbolTable.h"
#include "mlir/Interfaces/FunctionImplementation.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Support/FormatVariadic.h"
#include "circt/Dialect/FIRRTL/FIRRTL.cpp.inc"
Go to the source code of this file.
Classes | |
struct | HasParameters< Properties, typename > |
struct | HasParameters< Properties, std::void_t< decltype(std::declval< Properties >().parameters)> > |
Macros | |
#define | GET_OP_CLASSES |
Typedefs | |
using | LayerSet = SmallSet< SymbolRefAttr, 4, CompareSymbolRefAttr > |
Functions | |
template<typename T > | |
static SmallVector< T > | removeElementsAtIndices (ArrayRef< T > input, const llvm::BitVector &indicesToDrop) |
Remove elements from the input array corresponding to set bits in indicesToDrop , returning the elements not mentioned. More... | |
template<typename RetTy = FIRRTLType, typename... Args> | |
static RetTy | emitInferRetTypeError (std::optional< Location > loc, const Twine &message, Args &&...args) |
Emit an error if optional location is non-null, return null of return type. More... | |
static MemOp::PortKind | getMemPortKindFromType (FIRRTLType type) |
Return the kind of port this is given the port type from a 'mem' decl. More... | |
const char * | toString (Flow flow) |
void | getAsmBlockArgumentNamesImpl (Operation *op, mlir::Region ®ion, OpAsmSetValueNameFn setNameFn) |
Get a special name to use when printing the entry block arguments of the region contained by an operation in this dialect. More... | |
static ParseResult | parseNameKind (OpAsmParser &parser, firrtl::NameKindEnumAttr &result) |
A forward declaration for NameKind attribute parser. More... | |
static LayerSet | getAmbientLayersAt (Operation *op) |
Get the ambient layers active at the given op. More... | |
static LayerSet | getAmbientLayersFor (Value value) |
Get the ambient layer requirements at the definition site of the value. More... | |
static LayerSet | getLayersFor (Value value) |
Get the effective layer requirements for the given value. More... | |
static bool | isLayerCompatibleWith (mlir::SymbolRefAttr srcLayer, mlir::SymbolRefAttr dstLayer) |
Check that the source layer is compatible with the destination layer. More... | |
static bool | isLayerCompatibleWith (SymbolRefAttr srcLayer, const LayerSet &dstLayers) |
Check that the source layer is present in the destination layers. More... | |
static bool | isLayerSetCompatibleWith (const LayerSet &src, const LayerSet &dst, SmallVectorImpl< SymbolRefAttr > &missing) |
Check that the source layers are all present in the destination layers. More... | |
static ParseResult | parseCircuitOpAttrs (OpAsmParser &parser, NamedAttrList &resultAttrs) |
static void | printCircuitOpAttrs (OpAsmPrinter &p, Operation *op, DictionaryAttr attr) |
static SmallVector< PortInfo > | getPortImpl (FModuleLike module) |
static hw::ModulePort::Direction | dirFtoH (Direction dir) |
static SmallVector< hw::PortInfo > | getPortListImpl (FModuleLike module) |
static hw::PortInfo | getPortImpl (FModuleLike module, size_t idx) |
static void | insertPorts (FModuleLike op, ArrayRef< std::pair< unsigned, PortInfo >> ports, bool supportsInternalPaths=false) |
Inserts the given ports. More... | |
static void | erasePorts (FModuleLike op, const llvm::BitVector &portIndices) |
Erases the ports that have their corresponding bit set in portIndices . More... | |
template<typename T > | |
static void | eraseInternalPaths (T op, const llvm::BitVector &portIndices) |
template<typename OpTy > | |
void | buildModuleLike (OpBuilder &builder, OperationState &result, StringAttr name, ArrayRef< PortInfo > ports) |
template<typename OpTy > | |
static void | buildModule (OpBuilder &builder, OperationState &result, StringAttr name, ArrayRef< PortInfo > ports, ArrayAttr annotations, ArrayAttr layers) |
template<typename OpTy > | |
static void | buildClass (OpBuilder &builder, OperationState &result, StringAttr name, ArrayRef< PortInfo > ports) |
static bool | printModulePorts (OpAsmPrinter &p, Block *block, ArrayRef< bool > portDirections, ArrayRef< Attribute > portNames, ArrayRef< Attribute > portTypes, ArrayRef< Attribute > portAnnotations, ArrayRef< Attribute > portSyms, ArrayRef< Attribute > portLocs) |
Print a list of module ports in the following form: in x: !firrtl.uint<1> [{class = "DontTouch}], out "_port": !firrtl.uint<2> More... | |
static ParseResult | parseModulePorts (OpAsmParser &parser, bool hasSSAIdentifiers, bool supportsSymbols, SmallVectorImpl< OpAsmParser::Argument > &entryArgs, SmallVectorImpl< Direction > &portDirections, SmallVectorImpl< Attribute > &portNames, SmallVectorImpl< Attribute > &portTypes, SmallVectorImpl< Attribute > &portAnnotations, SmallVectorImpl< Attribute > &portSyms, SmallVectorImpl< Attribute > &portLocs) |
Parse a list of module ports. More... | |
static void | printParameterList (OpAsmPrinter &p, Operation *op, ArrayAttr parameters) |
Print a paramter list for a module or instance. More... | |
static void | printFModuleLikeOp (OpAsmPrinter &p, FModuleLike op) |
static ParseResult | parseOptionalParameters (OpAsmParser &parser, SmallVectorImpl< Attribute > ¶meters) |
Parse an parameter list if present. More... | |
static ParseResult | parseParameterList (OpAsmParser &parser, ArrayAttr ¶meters) |
Shim to use with assemblyFormat, custom<ParameterList>. More... | |
template<typename OpTy > | |
static ParseResult | parseFModuleLikeOp (OpAsmParser &parser, OperationState &result, bool hasSSAIdentifiers) |
static LogicalResult | verifyInternalPaths (FModuleLike op, std::optional<::mlir::ArrayAttr > internalPaths) |
static LogicalResult | verifyProbeType (RefType refType, Location loc, CircuitOp circuitOp, SymbolTableCollection &symbolTable, Twine start) |
static LogicalResult | verifyPortSymbolUses (FModuleLike module, SymbolTableCollection &symbolTable) |
template<typename OpTy > | |
ParseResult | parseClassLike (OpAsmParser &parser, OperationState &result, bool hasSSAIdentifiers) |
static void | printClassLike (OpAsmPrinter &p, ClassLike op) |
static size_t | getAddressWidth (size_t depth) |
static void | forceableAsmResultNames (Forceable op, StringRef name, OpAsmSetValueNameFn setNameFn) |
Helper for naming forceable declarations (and their optional ref result). More... | |
static LogicalResult | checkConnectFlow (Operation *connect) |
Check if the source and sink are of appropriate flow. More... | |
static bool | isConstFieldDriven (FIRRTLBaseType type, bool isFlip=false, bool outerTypeIsConst=false) |
Checks if the type has any 'const' leaf elements . More... | |
static LogicalResult | checkConnectConditionality (FConnectLike connect) |
Checks that connections to 'const' destinations are not dependent on non-'const' conditions in when blocks. More... | |
static bool | checkAggConstant (Operation *op, Attribute attr, FIRRTLBaseType type) |
template<typename OpTy > | |
ParseResult | parseSubfieldLikeOp (OpAsmParser &parser, OperationState &result) |
template<typename OpTy > | |
static void | printSubfieldLikeOp (OpTy op, ::mlir::OpAsmPrinter &printer) |
template<typename OpTy > | |
static LogicalResult | verifySubfieldLike (OpTy op) |
static bool | isSameIntTypeKind (Type lhs, Type rhs, int32_t &lhsWidth, int32_t &rhsWidth, bool &isConstResult, std::optional< Location > loc) |
If LHS and RHS are both UInt or SInt types, the return true and fill in the width of them if known. More... | |
static FIRRTLBaseType | inferMuxReturnType (FIRRTLBaseType high, FIRRTLBaseType low, bool isConstCondition, std::optional< Location > loc) |
Infer the result type for a multiplexer given its two operand types, which may be aggregates. More... | |
static bool | isTypeAllowedForDPI (Operation *op, Type type) |
static ParseResult | parseElideAnnotations (OpAsmParser &parser, NamedAttrList &resultAttrs) |
Parse an optional attribute dictionary, adding an empty 'annotations' attribute if not specified. More... | |
static void | printElideAnnotations (OpAsmPrinter &p, Operation *op, DictionaryAttr attr, ArrayRef< StringRef > extraElides={}) |
static ParseResult | parseElidePortAnnotations (OpAsmParser &parser, NamedAttrList &resultAttrs) |
Parse an optional attribute dictionary, adding empty 'annotations' and 'portAnnotations' attributes if not specified. More... | |
static void | printElidePortAnnotations (OpAsmPrinter &p, Operation *op, DictionaryAttr attr, ArrayRef< StringRef > extraElides={}) |
static void | printNameKind (OpAsmPrinter &p, Operation *op, firrtl::NameKindEnumAttr attr, ArrayRef< StringRef > extraElides={}) |
static ParseResult | parseFIRRTLImplicitSSAName (OpAsmParser &parser, NamedAttrList &resultAttrs) |
static void | printFIRRTLImplicitSSAName (OpAsmPrinter &p, Operation *op, DictionaryAttr attrs) |
static ParseResult | parseMemOp (OpAsmParser &parser, NamedAttrList &resultAttrs) |
static void | printMemOp (OpAsmPrinter &p, Operation *op, DictionaryAttr attr) |
Always elide "ruw" and elide "annotations" if it exists or if it is empty. More... | |
static ParseResult | parseClassInterface (OpAsmParser &parser, Type &result) |
static void | printClassInterface (OpAsmPrinter &p, Operation *, ClassType type) |
static ParseResult | parseElideEmptyName (OpAsmParser &p, NamedAttrList &resultAttrs) |
static void | printElideEmptyName (OpAsmPrinter &p, Operation *op, DictionaryAttr attr, ArrayRef< StringRef > extraElides={}) |
static ParseResult | parsePrintfAttrs (OpAsmParser &p, NamedAttrList &resultAttrs) |
static void | printPrintfAttrs (OpAsmPrinter &p, Operation *op, DictionaryAttr attr) |
static ParseResult | parseStopAttrs (OpAsmParser &p, NamedAttrList &resultAttrs) |
static void | printStopAttrs (OpAsmPrinter &p, Operation *op, DictionaryAttr attr) |
static ParseResult | parseVerifAttrs (OpAsmParser &p, NamedAttrList &resultAttrs) |
static void | printVerifAttrs (OpAsmPrinter &p, Operation *op, DictionaryAttr attr) |
static void | genericAsmResultNames (Operation *op, OpAsmSetValueNameFn setNameFn) |
#define GET_OP_CLASSES |
Definition at line 6298 of file FIRRTLOps.cpp.
Definition at line 382 of file FIRRTLOps.cpp.
|
static |
Definition at line 1041 of file FIRRTLOps.cpp.
|
static |
Definition at line 1013 of file FIRRTLOps.cpp.
void buildModuleLike | ( | OpBuilder & | builder, |
OperationState & | result, | ||
StringAttr | name, | ||
ArrayRef< PortInfo > | ports | ||
) |
Definition at line 979 of file FIRRTLOps.cpp.
References circt::calyx::direction::get(), and circt::calyx::direction::packAttribute().
|
static |
Definition at line 4162 of file FIRRTLOps.cpp.
|
static |
Checks that connections to 'const' destinations are not dependent on non-'const' conditions in when blocks.
Looks up the value's defining op until the defining op is null or a declaration of the value. If a SubAccessOp is encountered with a 'const' input, originalFieldType
is made 'const'.
Definition at line 3577 of file FIRRTLOps.cpp.
References Python.support::connect(), and isConstFieldDriven().
|
static |
Check if the source and sink are of appropriate flow.
Definition at line 3513 of file FIRRTLOps.cpp.
References Python.support::connect(), circt::firrtl::foldFlow(), circt::firrtl::getDeclarationKind(), circt::firrtl::getFieldName(), circt::firrtl::getFieldRefFromValue(), circt::firrtl::Instance, circt::firrtl::isValidDst(), circt::firrtl::isValidSrc(), circt::firrtl::Port, and toString().
|
static |
Definition at line 685 of file FIRRTLOps.cpp.
References assert(), circt::firrtl::In, Input, circt::firrtl::Out, and Output.
Referenced by getPortImpl(), and getPortListImpl().
|
static |
Emit an error if optional location is non-null, return null of return type.
Definition at line 95 of file FIRRTLOps.cpp.
|
static |
Definition at line 907 of file FIRRTLOps.cpp.
References empty, circt::calyx::direction::get(), and removeElementsAtIndices().
|
static |
Erases the ports that have their corresponding bit set in portIndices
.
Definition at line 867 of file FIRRTLOps.cpp.
References assert(), circt::calyx::direction::get(), circt::calyx::direction::packAttribute(), and removeElementsAtIndices().
|
static |
Helper for naming forceable declarations (and their optional ref result).
Definition at line 3321 of file FIRRTLOps.cpp.
|
static |
Definition at line 5779 of file FIRRTLOps.cpp.
|
static |
Definition at line 3068 of file FIRRTLOps.cpp.
|
static |
Get the ambient layers active at the given op.
Definition at line 385 of file FIRRTLOps.cpp.
Referenced by getAmbientLayersFor().
|
static |
Get the ambient layer requirements at the definition site of the value.
Definition at line 404 of file FIRRTLOps.cpp.
References getAmbientLayersAt(), and circt::firrtl::getFieldRefFromValue().
Referenced by getLayersFor().
void getAsmBlockArgumentNamesImpl | ( | Operation * | op, |
mlir::Region & | region, | ||
OpAsmSetValueNameFn | setNameFn | ||
) |
Get a special name to use when printing the entry block arguments of the region contained by an operation in this dialect.
Definition at line 328 of file FIRRTLOps.cpp.
|
static |
Get the effective layer requirements for the given value.
The effective layers for a value is the union of
Definition at line 412 of file FIRRTLOps.cpp.
References getAmbientLayersFor().
|
static |
Return the kind of port this is given the port type from a 'mem' decl.
Definition at line 143 of file FIRRTLOps.cpp.
References circt::firrtl::addr, circt::firrtl::clk, circt::firrtl::data, circt::firrtl::en, circt::firrtl::mask, circt::firrtl::rdata, circt::firrtl::wdata, circt::firrtl::wmask, and circt::firrtl::wmode.
|
static |
Definition at line 666 of file FIRRTLOps.cpp.
References circt::firrtl::AnnotationSet::forPort().
|
static |
Definition at line 730 of file FIRRTLOps.cpp.
References dirFtoH(), and circt::calyx::direction::get().
|
static |
Definition at line 694 of file FIRRTLOps.cpp.
References dirFtoH(), circt::calyx::direction::get(), and circt::firrtl::getNumPorts().
|
static |
Infer the result type for a multiplexer given its two operand types, which may be aggregates.
This essentially performs a pairwise comparison of fields and elements, as follows:
Definition at line 5218 of file FIRRTLOps.cpp.
References circt::calyx::direction::get(), circt::firrtl::FIRRTLBaseType::getAllConstDroppedType(), circt::firrtl::FIRRTLBaseType::getBitWidthOrSentinel(), circt::firrtl::FIRRTLBaseType::getConstType(), circt::firrtl::FIRRTLBaseType::isConst(), and numElements.
|
static |
Inserts the given ports.
The insertion indices are expected to be in order. Insertion occurs in-order, such that ports with the same insertion index appear in the module in the same order they appeared in the list.
Definition at line 767 of file FIRRTLOps.cpp.
References assert(), empty, circt::calyx::direction::get(), circt::calyx::direction::packAttribute(), and circt::firrtl::direction::unGet().
|
static |
Checks if the type has any 'const' leaf elements .
If isFlip
is true
, the const
leaf is not considered to be driven.
Definition at line 3553 of file FIRRTLOps.cpp.
References circt::firrtl::FIRRTLBaseType::isConst(), and circt::firrtl::FIRRTLBaseType::isPassive().
Referenced by checkConnectConditionality().
|
static |
Check that the source layer is compatible with the destination layer.
Either the source and destination are identical, or the source-layer is a parent of the destination. For example A
is compatible with A.B.C
, because any definition valid in A
is also valid in A.B.C
.
Definition at line 424 of file FIRRTLOps.cpp.
Referenced by isLayerCompatibleWith(), and isLayerSetCompatibleWith().
|
static |
Check that the source layer is present in the destination layers.
Definition at line 448 of file FIRRTLOps.cpp.
References isLayerCompatibleWith().
|
static |
Check that the source layers are all present in the destination layers.
True if all source layers are present in the destination. Outputs the set of source layers that are missing in the destination.
Definition at line 464 of file FIRRTLOps.cpp.
References isLayerCompatibleWith().
|
static |
If LHS and RHS are both UInt or SInt types, the return true and fill in the width of them if known.
If unknown, return -1 for the widths. The constness of the result is also returned, where if both lhs and rhs are const, then the result is const.
On failure, this reports and error and returns false. This function should not be used if you don't want an error reported.
Definition at line 4867 of file FIRRTLOps.cpp.
|
static |
Definition at line 5457 of file FIRRTLOps.cpp.
References circt::firrtl::WidthQualifiedTypeTrait< ConcreteType >::getWidth().
|
static |
Definition at line 493 of file FIRRTLOps.cpp.
|
static |
Definition at line 5712 of file FIRRTLOps.cpp.
ParseResult parseClassLike | ( | OpAsmParser & | parser, |
OperationState & | result, | ||
bool | hasSSAIdentifiers | ||
) |
Definition at line 1847 of file FIRRTLOps.cpp.
References assert(), empty, circt::calyx::direction::get(), circt::calyx::direction::packAttribute(), and parseModulePorts().
|
static |
Parse an optional attribute dictionary, adding an empty 'annotations' attribute if not specified.
Definition at line 5596 of file FIRRTLOps.cpp.
Referenced by parseElidePortAnnotations(), and parseFIRRTLImplicitSSAName().
|
static |
Definition at line 5728 of file FIRRTLOps.cpp.
Referenced by parsePrintfAttrs(), parseStopAttrs(), and parseVerifAttrs().
|
static |
Parse an optional attribute dictionary, adding empty 'annotations' and 'portAnnotations' attributes if not specified.
Definition at line 5620 of file FIRRTLOps.cpp.
References parseElideAnnotations().
Referenced by parseMemOp().
|
static |
Definition at line 5677 of file FIRRTLOps.cpp.
References circt::inferImplicitSSAName(), and parseElideAnnotations().
|
static |
Definition at line 1446 of file FIRRTLOps.cpp.
|
static |
Definition at line 5698 of file FIRRTLOps.cpp.
References parseElidePortAnnotations().
|
static |
Parse a list of module ports.
If port names are SSA identifiers, then this will populate entryArgs
.
Definition at line 1207 of file FIRRTLOps.cpp.
References assert(), circt::calyx::direction::get(), circt::hw::InnerSymbolTable::getInnerSymbolAttrName(), and isdigit.
Referenced by parseClassLike().
|
static |
A forward declaration for NameKind
attribute parser.
Definition at line 5649 of file FIRRTLOps.cpp.
References circt::calyx::direction::get().
|
static |
Parse an parameter list if present.
module-parameter-list ::= <
parameter-decl (,
parameter-decl)* >
parameter-decl ::= identifier :
type parameter-decl ::= identifier :
type =
attribute
Definition at line 1400 of file FIRRTLOps.cpp.
|
static |
Shim to use with assemblyFormat, custom<ParameterList>.
Definition at line 1426 of file FIRRTLOps.cpp.
|
static |
Definition at line 5747 of file FIRRTLOps.cpp.
References parseElideEmptyName().
|
static |
Definition at line 5757 of file FIRRTLOps.cpp.
References parseElideEmptyName().
ParseResult parseSubfieldLikeOp | ( | OpAsmParser & | parser, |
OperationState & | result | ||
) |
Definition at line 4451 of file FIRRTLOps.cpp.
References circt::calyx::direction::get().
|
static |
Definition at line 5766 of file FIRRTLOps.cpp.
References parseElideEmptyName().
|
static |
Definition at line 502 of file FIRRTLOps.cpp.
|
static |
Definition at line 5720 of file FIRRTLOps.cpp.
|
static |
Definition at line 1924 of file FIRRTLOps.cpp.
References printModulePorts().
|
static |
Definition at line 5605 of file FIRRTLOps.cpp.
Referenced by printFIRRTLImplicitSSAName().
|
static |
Definition at line 5737 of file FIRRTLOps.cpp.
Referenced by printPrintfAttrs(), printStopAttrs(), and printVerifAttrs().
|
static |
Definition at line 5634 of file FIRRTLOps.cpp.
Referenced by printMemOp().
|
static |
Definition at line 5685 of file FIRRTLOps.cpp.
References circt::elideImplicitSSAName(), circt::hw::InnerSymbolTable::getInnerSymbolAttrName(), and printElideAnnotations().
|
static |
Definition at line 1326 of file FIRRTLOps.cpp.
|
static |
Always elide "ruw" and elide "annotations" if it exists or if it is empty.
Definition at line 5703 of file FIRRTLOps.cpp.
References printElidePortAnnotations().
|
static |
Print a list of module ports in the following form: in x: !firrtl.uint<1> [{class = "DontTouch}], out "_port": !firrtl.uint<2>
When there is no block specified, the port names print as MLIR identifiers, wrapping in quotes if not legal to print as-is. When there is no block specified, this function always return false, indicating that there was no issue printing port names.
If there is a block specified, then port names will be printed as SSA values. If there is a reason the printed SSA values can't match the true port name, then this function will return true. When this happens, the caller should print the port names as a part of the attr-dict
.
Definition at line 1133 of file FIRRTLOps.cpp.
References empty, and circt::calyx::direction::get().
Referenced by printClassLike().
|
static |
Definition at line 5666 of file FIRRTLOps.cpp.
|
static |
Print a paramter list for a module or instance.
Definition at line 1309 of file FIRRTLOps.cpp.
|
static |
Definition at line 5752 of file FIRRTLOps.cpp.
References printElideEmptyName().
|
static |
Definition at line 5761 of file FIRRTLOps.cpp.
References printElideEmptyName().
|
static |
Definition at line 4536 of file FIRRTLOps.cpp.
|
static |
Definition at line 5770 of file FIRRTLOps.cpp.
References printElideEmptyName().
|
static |
Remove elements from the input array corresponding to set bits in indicesToDrop
, returning the elements not mentioned.
Definition at line 56 of file FIRRTLOps.cpp.
References assert().
Referenced by eraseInternalPaths(), and erasePorts().
const char* toString | ( | Flow | flow | ) |
Definition at line 197 of file FIRRTLOps.cpp.
References circt::firrtl::Duplex, circt::firrtl::None, circt::firrtl::Sink, and circt::firrtl::Source.
Referenced by checkConnectFlow(), circt::ImportVerilog::Context::convertModuleHeader(), handleRoot(), and circt::firrtl::detail::verifyTypeAgainstClassLike().
|
static |
Definition at line 1591 of file FIRRTLOps.cpp.
|
static |
Definition at line 1686 of file FIRRTLOps.cpp.
References verifyProbeType().
|
static |
Definition at line 1665 of file FIRRTLOps.cpp.
Referenced by verifyPortSymbolUses().
|
static |
Definition at line 4563 of file FIRRTLOps.cpp.