MLIR  21.0.0git
Macros | Functions
OpenMPDialect.cpp File Reference
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
#include "mlir/Conversion/ConvertToLLVM/ToLLVMInterface.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/LLVMIR/LLVMTypes.h"
#include "mlir/Dialect/OpenACCMPCommon/Interfaces/AtomicInterfaces.h"
#include "mlir/IR/Attributes.h"
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/OpImplementation.h"
#include "mlir/IR/OperationSupport.h"
#include "mlir/Interfaces/FoldInterfaces.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/STLForwardCompat.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Frontend/OpenMP/OMPConstants.h"
#include "llvm/Frontend/OpenMP/OMPDeviceConstants.h"
#include <cstddef>
#include <iterator>
#include <optional>
#include <variant>
#include "mlir/Dialect/OpenMP/OpenMPOpsDialect.cpp.inc"
#include "mlir/Dialect/OpenMP/OpenMPOpsEnums.cpp.inc"
#include "mlir/Dialect/OpenMP/OpenMPOpsInterfaces.cpp.inc"
#include "mlir/Dialect/OpenMP/OpenMPTypeInterfaces.cpp.inc"
#include "mlir/Dialect/OpenMP/OpenMPOps.cpp.inc"
#include "mlir/Dialect/OpenMP/OpenMPOpsAttributes.cpp.inc"
#include "mlir/Dialect/OpenMP/OpenMPOpsTypes.cpp.inc"

Go to the source code of this file.

Macros

#define GET_OP_LIST
 
#define GET_ATTRDEF_LIST
 
#define GET_TYPEDEF_LIST
 
#define GET_ATTRDEF_CLASSES
 
#define GET_OP_CLASSES
 
#define GET_TYPEDEF_CLASSES
 

Functions

static ArrayAttr makeArrayAttr (MLIRContext *context, llvm::ArrayRef< Attribute > attrs)
 
static DenseBoolArrayAttr makeDenseBoolArrayAttr (MLIRContext *ctx, const ArrayRef< bool > boolArray)
 
static ParseResult parseAllocateAndAllocator (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &allocateVars, SmallVectorImpl< Type > &allocateTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &allocatorVars, SmallVectorImpl< Type > &allocatorTypes)
 Parse an allocate clause with allocators and a list of operands with types. More...
 
static void printAllocateAndAllocator (OpAsmPrinter &p, Operation *op, OperandRange allocateVars, TypeRange allocateTypes, OperandRange allocatorVars, TypeRange allocatorTypes)
 Print allocate clause. More...
 
template<typename ClauseAttr >
static ParseResult parseClauseAttr (AsmParser &parser, ClauseAttr &attr)
 
template<typename ClauseAttr >
void printClauseAttr (OpAsmPrinter &p, Operation *op, ClauseAttr attr)
 
static ParseResult parseLinearClause (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &linearVars, SmallVectorImpl< Type > &linearTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &linearStepVars)
 linear ::= linear ( linear-list ) linear-list := linear-val | linear-val linear-list linear-val := ssa-id-and-type = ssa-id-and-type More...
 
static void printLinearClause (OpAsmPrinter &p, Operation *op, ValueRange linearVars, TypeRange linearTypes, ValueRange linearStepVars)
 Print Linear Clause. More...
 
static LogicalResult verifyNontemporalClause (Operation *op, OperandRange nontemporalVars)
 
static LogicalResult verifyAlignedClause (Operation *op, std::optional< ArrayAttr > alignments, OperandRange alignedVars)
 
static ParseResult parseAlignedClause (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &alignedVars, SmallVectorImpl< Type > &alignedTypes, ArrayAttr &alignmentsAttr)
 aligned ::= aligned ( aligned-list ) aligned-list := aligned-val | aligned-val aligned-list aligned-val := ssa-id-and-type -> alignment More...
 
static void printAlignedClause (OpAsmPrinter &p, Operation *op, ValueRange alignedVars, TypeRange alignedTypes, std::optional< ArrayAttr > alignments)
 Print Aligned Clause. More...
 
static ParseResult verifyScheduleModifiers (OpAsmParser &parser, SmallVectorImpl< SmallString< 12 >> &modifiers)
 
static ParseResult parseScheduleClause (OpAsmParser &parser, ClauseScheduleKindAttr &scheduleAttr, ScheduleModifierAttr &scheduleMod, UnitAttr &scheduleSimd, std::optional< OpAsmParser::UnresolvedOperand > &chunkSize, Type &chunkType)
 schedule ::= schedule ( sched-list ) sched-list ::= sched-val | sched-val sched-list | sched-val , sched-modifier sched-val ::= sched-with-chunk | sched-wo-chunk sched-with-chunk ::= sched-with-chunk-types (= ssa-id-and-type)? sched-with-chunk-types ::= static | dynamic | guided sched-wo-chunk ::= auto | runtime sched-modifier ::= sched-mod-val | sched-mod-val , sched-mod-val sched-mod-val ::= monotonic | nonmonotonic | simd | none More...
 
static void printScheduleClause (OpAsmPrinter &p, Operation *op, ClauseScheduleKindAttr scheduleKind, ScheduleModifierAttr scheduleMod, UnitAttr scheduleSimd, Value scheduleChunk, Type scheduleChunkType)
 Print schedule clause. More...
 
static ParseResult parseOrderClause (OpAsmParser &parser, ClauseOrderKindAttr &order, OrderModifierAttr &orderMod)
 
static void printOrderClause (OpAsmPrinter &p, Operation *op, ClauseOrderKindAttr order, OrderModifierAttr orderMod)
 
template<typename ClauseTypeAttr , typename ClauseType >
static ParseResult parseGranularityClause (OpAsmParser &parser, ClauseTypeAttr &prescriptiveness, std::optional< OpAsmParser::UnresolvedOperand > &operand, Type &operandType, std::optional< ClauseType >(*symbolizeClause)(StringRef), StringRef clauseName)
 
template<typename ClauseTypeAttr , typename ClauseType >
static void printGranularityClause (OpAsmPrinter &p, Operation *op, ClauseTypeAttr prescriptiveness, Value operand, mlir::Type operandType, StringRef(*stringifyClauseType)(ClauseType))
 
static ParseResult parseGrainsizeClause (OpAsmParser &parser, ClauseGrainsizeTypeAttr &grainsizeMod, std::optional< OpAsmParser::UnresolvedOperand > &grainsize, Type &grainsizeType)
 
static void printGrainsizeClause (OpAsmPrinter &p, Operation *op, ClauseGrainsizeTypeAttr grainsizeMod, Value grainsize, mlir::Type grainsizeType)
 
static ParseResult parseNumTasksClause (OpAsmParser &parser, ClauseNumTasksTypeAttr &numTasksMod, std::optional< OpAsmParser::UnresolvedOperand > &numTasks, Type &numTasksType)
 
static void printNumTasksClause (OpAsmPrinter &p, Operation *op, ClauseNumTasksTypeAttr numTasksMod, Value numTasks, mlir::Type numTasksType)
 
static ParseResult parseClauseWithRegionArgs (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &operands, SmallVectorImpl< Type > &types, SmallVectorImpl< OpAsmParser::Argument > &regionPrivateArgs, ArrayAttr *symbols=nullptr, DenseI64ArrayAttr *mapIndices=nullptr, DenseBoolArrayAttr *byref=nullptr, ReductionModifierAttr *modifier=nullptr)
 
static ParseResult parseBlockArgClause (OpAsmParser &parser, llvm::SmallVectorImpl< OpAsmParser::Argument > &entryBlockArgs, StringRef keyword, std::optional< MapParseArgs > mapArgs)
 
static ParseResult parseBlockArgClause (OpAsmParser &parser, llvm::SmallVectorImpl< OpAsmParser::Argument > &entryBlockArgs, StringRef keyword, std::optional< PrivateParseArgs > privateArgs)
 
static ParseResult parseBlockArgClause (OpAsmParser &parser, llvm::SmallVectorImpl< OpAsmParser::Argument > &entryBlockArgs, StringRef keyword, std::optional< ReductionParseArgs > reductionArgs)
 
static ParseResult parseBlockArgRegion (OpAsmParser &parser, Region &region, AllRegionParseArgs args)
 
static ParseResult parseTargetOpRegion (OpAsmParser &parser, Region &region, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &hasDeviceAddrVars, SmallVectorImpl< Type > &hasDeviceAddrTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &hostEvalVars, SmallVectorImpl< Type > &hostEvalTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &inReductionVars, SmallVectorImpl< Type > &inReductionTypes, DenseBoolArrayAttr &inReductionByref, ArrayAttr &inReductionSyms, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &mapVars, SmallVectorImpl< Type > &mapTypes, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms, DenseI64ArrayAttr &privateMaps)
 
static ParseResult parseInReductionPrivateRegion (OpAsmParser &parser, Region &region, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &inReductionVars, SmallVectorImpl< Type > &inReductionTypes, DenseBoolArrayAttr &inReductionByref, ArrayAttr &inReductionSyms, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms)
 
static ParseResult parseInReductionPrivateReductionRegion (OpAsmParser &parser, Region &region, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &inReductionVars, SmallVectorImpl< Type > &inReductionTypes, DenseBoolArrayAttr &inReductionByref, ArrayAttr &inReductionSyms, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms, ReductionModifierAttr &reductionMod, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &reductionVars, SmallVectorImpl< Type > &reductionTypes, DenseBoolArrayAttr &reductionByref, ArrayAttr &reductionSyms)
 
static ParseResult parsePrivateRegion (OpAsmParser &parser, Region &region, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms)
 
static ParseResult parsePrivateReductionRegion (OpAsmParser &parser, Region &region, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms, ReductionModifierAttr &reductionMod, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &reductionVars, SmallVectorImpl< Type > &reductionTypes, DenseBoolArrayAttr &reductionByref, ArrayAttr &reductionSyms)
 
static ParseResult parseTaskReductionRegion (OpAsmParser &parser, Region &region, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &taskReductionVars, SmallVectorImpl< Type > &taskReductionTypes, DenseBoolArrayAttr &taskReductionByref, ArrayAttr &taskReductionSyms)
 
static ParseResult parseUseDeviceAddrUseDevicePtrRegion (OpAsmParser &parser, Region &region, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &useDeviceAddrVars, SmallVectorImpl< Type > &useDeviceAddrTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &useDevicePtrVars, SmallVectorImpl< Type > &useDevicePtrTypes)
 
static void printClauseWithRegionArgs (OpAsmPrinter &p, MLIRContext *ctx, StringRef clauseName, ValueRange argsSubrange, ValueRange operands, TypeRange types, ArrayAttr symbols=nullptr, DenseI64ArrayAttr mapIndices=nullptr, DenseBoolArrayAttr byref=nullptr, ReductionModifierAttr modifier=nullptr)
 
static void printBlockArgClause (OpAsmPrinter &p, MLIRContext *ctx, StringRef clauseName, ValueRange argsSubrange, std::optional< MapPrintArgs > mapArgs)
 
static void printBlockArgClause (OpAsmPrinter &p, MLIRContext *ctx, StringRef clauseName, ValueRange argsSubrange, std::optional< PrivatePrintArgs > privateArgs)
 
static void printBlockArgClause (OpAsmPrinter &p, MLIRContext *ctx, StringRef clauseName, ValueRange argsSubrange, std::optional< ReductionPrintArgs > reductionArgs)
 
static void printBlockArgRegion (OpAsmPrinter &p, Operation *op, Region &region, const AllRegionPrintArgs &args)
 
static void printTargetOpRegion (OpAsmPrinter &p, Operation *op, Region &region, ValueRange hasDeviceAddrVars, TypeRange hasDeviceAddrTypes, ValueRange hostEvalVars, TypeRange hostEvalTypes, ValueRange inReductionVars, TypeRange inReductionTypes, DenseBoolArrayAttr inReductionByref, ArrayAttr inReductionSyms, ValueRange mapVars, TypeRange mapTypes, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms, DenseI64ArrayAttr privateMaps)
 
static void printInReductionPrivateRegion (OpAsmPrinter &p, Operation *op, Region &region, ValueRange inReductionVars, TypeRange inReductionTypes, DenseBoolArrayAttr inReductionByref, ArrayAttr inReductionSyms, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms)
 
static void printInReductionPrivateReductionRegion (OpAsmPrinter &p, Operation *op, Region &region, ValueRange inReductionVars, TypeRange inReductionTypes, DenseBoolArrayAttr inReductionByref, ArrayAttr inReductionSyms, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms, ReductionModifierAttr reductionMod, ValueRange reductionVars, TypeRange reductionTypes, DenseBoolArrayAttr reductionByref, ArrayAttr reductionSyms)
 
static void printPrivateRegion (OpAsmPrinter &p, Operation *op, Region &region, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms)
 
static void printPrivateReductionRegion (OpAsmPrinter &p, Operation *op, Region &region, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms, ReductionModifierAttr reductionMod, ValueRange reductionVars, TypeRange reductionTypes, DenseBoolArrayAttr reductionByref, ArrayAttr reductionSyms)
 
static void printTaskReductionRegion (OpAsmPrinter &p, Operation *op, Region &region, ValueRange taskReductionVars, TypeRange taskReductionTypes, DenseBoolArrayAttr taskReductionByref, ArrayAttr taskReductionSyms)
 
static void printUseDeviceAddrUseDevicePtrRegion (OpAsmPrinter &p, Operation *op, Region &region, ValueRange useDeviceAddrVars, TypeRange useDeviceAddrTypes, ValueRange useDevicePtrVars, TypeRange useDevicePtrTypes)
 
static LogicalResult verifyReductionVarList (Operation *op, std::optional< ArrayAttr > reductionSyms, OperandRange reductionVars, std::optional< ArrayRef< bool >> reductionByref)
 Verifies Reduction Clause. More...
 
static ParseResult parseCopyprivate (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &copyprivateVars, SmallVectorImpl< Type > &copyprivateTypes, ArrayAttr &copyprivateSyms)
 copyprivate-entry-list ::= copyprivate-entry | copyprivate-entry-list , copyprivate-entry copyprivate-entry ::= ssa-id -> symbol-ref : type More...
 
static void printCopyprivate (OpAsmPrinter &p, Operation *op, OperandRange copyprivateVars, TypeRange copyprivateTypes, std::optional< ArrayAttr > copyprivateSyms)
 Print Copyprivate clause. More...
 
static LogicalResult verifyCopyprivateVarList (Operation *op, OperandRange copyprivateVars, std::optional< ArrayAttr > copyprivateSyms)
 Verifies CopyPrivate Clause. More...
 
static ParseResult parseDependVarList (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &dependVars, SmallVectorImpl< Type > &dependTypes, ArrayAttr &dependKinds)
 depend-entry-list ::= depend-entry | depend-entry-list , depend-entry depend-entry ::= depend-kind -> ssa-id : type More...
 
static void printDependVarList (OpAsmPrinter &p, Operation *op, OperandRange dependVars, TypeRange dependTypes, std::optional< ArrayAttr > dependKinds)
 Print Depend clause. More...
 
static LogicalResult verifyDependVarList (Operation *op, std::optional< ArrayAttr > dependKinds, OperandRange dependVars)
 Verifies Depend clause. More...
 
static ParseResult parseSynchronizationHint (OpAsmParser &parser, IntegerAttr &hintAttr)
 Parses a Synchronization Hint clause. More...
 
static void printSynchronizationHint (OpAsmPrinter &p, Operation *op, IntegerAttr hintAttr)
 Prints a Synchronization Hint clause. More...
 
static LogicalResult verifySynchronizationHint (Operation *op, uint64_t hint)
 Verifies a synchronization hint clause. More...
 
uint64_t mapTypeToBitFlag (uint64_t value, llvm::omp::OpenMPOffloadMappingFlags flag)
 
static ParseResult parseMapClause (OpAsmParser &parser, IntegerAttr &mapType)
 Parses a map_entries map type from a string format back into its numeric value. More...
 
static void printMapClause (OpAsmPrinter &p, Operation *op, IntegerAttr mapType)
 Prints a map_entries map type from its numeric value out into its string format. More...
 
static ParseResult parseMembersIndex (OpAsmParser &parser, ArrayAttr &membersIdx)
 
static void printMembersIndex (OpAsmPrinter &p, MapInfoOp op, ArrayAttr membersIdx)
 
static void printCaptureType (OpAsmPrinter &p, Operation *op, VariableCaptureKindAttr mapCaptureType)
 
static ParseResult parseCaptureType (OpAsmParser &parser, VariableCaptureKindAttr &mapCaptureType)
 
static LogicalResult verifyMapClause (Operation *op, OperandRange mapVars)
 
static LogicalResult verifyPrivateVarsMapping (TargetOp targetOp)
 
static OperationfindCapturedOmpOp (Operation *rootOp, bool checkSingleMandatoryExec, llvm::function_ref< bool(Operation *)> siblingAllowedFn)
 
template<typename OpType >
static LogicalResult verifyPrivateVarList (OpType &op)
 
static bool opInGlobalImplicitParallelRegion (Operation *op)
 
static LogicalResult verifyOrderedParent (Operation &op)
 
static OperationgetParentInSameDialect (Operation *thisOp)
 

Macro Definition Documentation

◆ GET_ATTRDEF_CLASSES

#define GET_ATTRDEF_CLASSES

Definition at line 3423 of file OpenMPDialect.cpp.

◆ GET_ATTRDEF_LIST

#define GET_ATTRDEF_LIST

◆ GET_OP_CLASSES

#define GET_OP_CLASSES

Definition at line 3426 of file OpenMPDialect.cpp.

◆ GET_OP_LIST

#define GET_OP_LIST

◆ GET_TYPEDEF_CLASSES

#define GET_TYPEDEF_CLASSES

Definition at line 3429 of file OpenMPDialect.cpp.

◆ GET_TYPEDEF_LIST

#define GET_TYPEDEF_LIST

Function Documentation

◆ findCapturedOmpOp()

static Operation* findCapturedOmpOp ( Operation rootOp,
bool  checkSingleMandatoryExec,
llvm::function_ref< bool(Operation *)>  siblingAllowedFn 
)
static

◆ getParentInSameDialect()

static Operation* getParentInSameDialect ( Operation thisOp)
static

◆ makeArrayAttr()

static ArrayAttr makeArrayAttr ( MLIRContext context,
llvm::ArrayRef< Attribute attrs 
)
static

Definition at line 48 of file OpenMPDialect.cpp.

References mlir::get().

◆ makeDenseBoolArrayAttr()

static DenseBoolArrayAttr makeDenseBoolArrayAttr ( MLIRContext ctx,
const ArrayRef< bool >  boolArray 
)
static

Definition at line 54 of file OpenMPDialect.cpp.

References mlir::detail::DenseArrayAttrImpl< T >::get().

◆ mapTypeToBitFlag()

uint64_t mapTypeToBitFlag ( uint64_t  value,
llvm::omp::OpenMPOffloadMappingFlags  flag 
)

Definition at line 1474 of file OpenMPDialect.cpp.

Referenced by printMapClause(), and verifyMapClause().

◆ opInGlobalImplicitParallelRegion()

static bool opInGlobalImplicitParallelRegion ( Operation op)
static

◆ parseAlignedClause()

static ParseResult parseAlignedClause ( OpAsmParser parser,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  alignedVars,
SmallVectorImpl< Type > &  alignedTypes,
ArrayAttr &  alignmentsAttr 
)
static

aligned ::= aligned ( aligned-list ) aligned-list := aligned-val | aligned-val aligned-list aligned-val := ssa-id-and-type -> alignment

Definition at line 283 of file OpenMPDialect.cpp.

References mlir::AsmParser::parseCommaSeparatedList().

◆ parseAllocateAndAllocator()

static ParseResult parseAllocateAndAllocator ( OpAsmParser parser,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  allocateVars,
SmallVectorImpl< Type > &  allocateTypes,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  allocatorVars,
SmallVectorImpl< Type > &  allocatorTypes 
)
static

Parse an allocate clause with allocators and a list of operands with types.

allocate-operand-list :: = allocate-operand | allocator-operand , allocate-operand-list allocate-operand :: = ssa-id-and-type -> ssa-id-and-type ssa-id-and-type ::= ssa-id : type

Definition at line 122 of file OpenMPDialect.cpp.

References mlir::AsmParser::parseArrow(), mlir::AsmParser::parseColonType(), mlir::AsmParser::parseCommaSeparatedList(), and mlir::OpAsmParser::parseOperand().

◆ parseBlockArgClause() [1/3]

static ParseResult parseBlockArgClause ( OpAsmParser parser,
llvm::SmallVectorImpl< OpAsmParser::Argument > &  entryBlockArgs,
StringRef  keyword,
std::optional< MapParseArgs >  mapArgs 
)
static

◆ parseBlockArgClause() [2/3]

static ParseResult parseBlockArgClause ( OpAsmParser parser,
llvm::SmallVectorImpl< OpAsmParser::Argument > &  entryBlockArgs,
StringRef  keyword,
std::optional< PrivateParseArgs >  privateArgs 
)
static

◆ parseBlockArgClause() [3/3]

static ParseResult parseBlockArgClause ( OpAsmParser parser,
llvm::SmallVectorImpl< OpAsmParser::Argument > &  entryBlockArgs,
StringRef  keyword,
std::optional< ReductionParseArgs >  reductionArgs 
)
static

◆ parseBlockArgRegion()

static ParseResult parseBlockArgRegion ( OpAsmParser parser,
Region region,
AllRegionParseArgs  args 
)
static

◆ parseCaptureType()

static ParseResult parseCaptureType ( OpAsmParser parser,
VariableCaptureKindAttr &  mapCaptureType 
)
static

◆ parseClauseAttr()

template<typename ClauseAttr >
static ParseResult parseClauseAttr ( AsmParser parser,
ClauseAttr &  attr 
)
static

◆ parseClauseWithRegionArgs()

static ParseResult parseClauseWithRegionArgs ( OpAsmParser parser,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  operands,
SmallVectorImpl< Type > &  types,
SmallVectorImpl< OpAsmParser::Argument > &  regionPrivateArgs,
ArrayAttr *  symbols = nullptr,
DenseI64ArrayAttr mapIndices = nullptr,
DenseBoolArrayAttr byref = nullptr,
ReductionModifierAttr *  modifier = nullptr 
)
static

◆ parseCopyprivate()

static ParseResult parseCopyprivate ( OpAsmParser parser,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  copyprivateVars,
SmallVectorImpl< Type > &  copyprivateTypes,
ArrayAttr &  copyprivateSyms 
)
static

copyprivate-entry-list ::= copyprivate-entry | copyprivate-entry-list , copyprivate-entry copyprivate-entry ::= ssa-id -> symbol-ref : type

Definition at line 1220 of file OpenMPDialect.cpp.

References mlir::get(), mlir::AsmParser::getContext(), and mlir::AsmParser::parseCommaSeparatedList().

◆ parseDependVarList()

static ParseResult parseDependVarList ( OpAsmParser parser,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  dependVars,
SmallVectorImpl< Type > &  dependTypes,
ArrayAttr &  dependKinds 
)
static

depend-entry-list ::= depend-entry | depend-entry-list , depend-entry depend-entry ::= depend-kind -> ssa-id : type

Definition at line 1324 of file OpenMPDialect.cpp.

References mlir::get(), mlir::AsmParser::getContext(), and mlir::AsmParser::parseCommaSeparatedList().

◆ parseGrainsizeClause()

static ParseResult parseGrainsizeClause ( OpAsmParser parser,
ClauseGrainsizeTypeAttr &  grainsizeMod,
std::optional< OpAsmParser::UnresolvedOperand > &  grainsize,
Type grainsizeType 
)
static

Definition at line 531 of file OpenMPDialect.cpp.

◆ parseGranularityClause()

template<typename ClauseTypeAttr , typename ClauseType >
static ParseResult parseGranularityClause ( OpAsmParser parser,
ClauseTypeAttr &  prescriptiveness,
std::optional< OpAsmParser::UnresolvedOperand > &  operand,
Type operandType,
std::optional< ClauseType >(*)(StringRef)  symbolizeClause,
StringRef  clauseName 
)
static

◆ parseInReductionPrivateReductionRegion()

static ParseResult parseInReductionPrivateReductionRegion ( OpAsmParser parser,
Region region,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  inReductionVars,
SmallVectorImpl< Type > &  inReductionTypes,
DenseBoolArrayAttr inReductionByref,
ArrayAttr &  inReductionSyms,
llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  privateVars,
llvm::SmallVectorImpl< Type > &  privateTypes,
ArrayAttr &  privateSyms,
ReductionModifierAttr &  reductionMod,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  reductionVars,
SmallVectorImpl< Type > &  reductionTypes,
DenseBoolArrayAttr reductionByref,
ArrayAttr &  reductionSyms 
)
static

Definition at line 852 of file OpenMPDialect.cpp.

References parseBlockArgRegion().

◆ parseInReductionPrivateRegion()

static ParseResult parseInReductionPrivateRegion ( OpAsmParser parser,
Region region,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  inReductionVars,
SmallVectorImpl< Type > &  inReductionTypes,
DenseBoolArrayAttr inReductionByref,
ArrayAttr &  inReductionSyms,
llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  privateVars,
llvm::SmallVectorImpl< Type > &  privateTypes,
ArrayAttr &  privateSyms 
)
static

Definition at line 838 of file OpenMPDialect.cpp.

References parseBlockArgRegion().

◆ parseLinearClause()

static ParseResult parseLinearClause ( OpAsmParser parser,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  linearVars,
SmallVectorImpl< Type > &  linearTypes,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  linearStepVars 
)
static

linear ::= linear ( linear-list ) linear-list := linear-val | linear-val linear-list linear-val := ssa-id-and-type = ssa-id-and-type

Definition at line 190 of file OpenMPDialect.cpp.

References mlir::AsmParser::parseColonType(), mlir::AsmParser::parseCommaSeparatedList(), mlir::AsmParser::parseEqual(), and mlir::OpAsmParser::parseOperand().

◆ parseMapClause()

static ParseResult parseMapClause ( OpAsmParser parser,
IntegerAttr &  mapType 
)
static

Parses a map_entries map type from a string format back into its numeric value.

map-clause = map_clauses ( ((always, ?implicit, ?ompx_hold, ? close, ?present, ? (to|from|delete))+)` )

Definition at line 1484 of file OpenMPDialect.cpp.

References mlir::AsmParser::getBuilder(), mlir::Builder::getIntegerAttr(), mlir::Builder::getIntegerType(), mlir::AsmParser::parseCommaSeparatedList(), and mlir::AsmParser::parseKeyword().

◆ parseMembersIndex()

static ParseResult parseMembersIndex ( OpAsmParser parser,
ArrayAttr &  membersIdx 
)
static

◆ parseNumTasksClause()

static ParseResult parseNumTasksClause ( OpAsmParser parser,
ClauseNumTasksTypeAttr &  numTasksMod,
std::optional< OpAsmParser::UnresolvedOperand > &  numTasks,
Type numTasksType 
)
static

Definition at line 553 of file OpenMPDialect.cpp.

◆ parseOrderClause()

static ParseResult parseOrderClause ( OpAsmParser parser,
ClauseOrderKindAttr &  order,
OrderModifierAttr &  orderMod 
)
static

◆ parsePrivateReductionRegion()

static ParseResult parsePrivateReductionRegion ( OpAsmParser parser,
Region region,
llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  privateVars,
llvm::SmallVectorImpl< Type > &  privateTypes,
ArrayAttr &  privateSyms,
ReductionModifierAttr &  reductionMod,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  reductionVars,
SmallVectorImpl< Type > &  reductionTypes,
DenseBoolArrayAttr reductionByref,
ArrayAttr &  reductionSyms 
)
static

Definition at line 881 of file OpenMPDialect.cpp.

References parseBlockArgRegion().

◆ parsePrivateRegion()

static ParseResult parsePrivateRegion ( OpAsmParser parser,
Region region,
llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  privateVars,
llvm::SmallVectorImpl< Type > &  privateTypes,
ArrayAttr &  privateSyms 
)
static

Definition at line 872 of file OpenMPDialect.cpp.

References parseBlockArgRegion().

◆ parseScheduleClause()

static ParseResult parseScheduleClause ( OpAsmParser parser,
ClauseScheduleKindAttr &  scheduleAttr,
ScheduleModifierAttr &  scheduleMod,
UnitAttr &  scheduleSimd,
std::optional< OpAsmParser::UnresolvedOperand > &  chunkSize,
Type chunkType 
)
static

schedule ::= schedule ( sched-list ) sched-list ::= sched-val | sched-val sched-list | sched-val , sched-modifier sched-val ::= sched-with-chunk | sched-wo-chunk sched-with-chunk ::= sched-with-chunk-types (= ssa-id-and-type)? sched-with-chunk-types ::= static | dynamic | guided sched-wo-chunk ::= auto | runtime sched-modifier ::= sched-mod-val | sched-mod-val , sched-mod-val sched-mod-val ::= monotonic | nonmonotonic | simd | none

Definition at line 361 of file OpenMPDialect.cpp.

References mlir::AsmParser::emitError(), mlir::get(), mlir::AsmParser::getBuilder(), mlir::Builder::getContext(), mlir::AsmParser::getContext(), mlir::AsmParser::getCurrentLocation(), mlir::AsmParser::getNameLoc(), mlir::AsmParser::parseColonType(), mlir::AsmParser::parseKeyword(), mlir::OpAsmParser::parseOperand(), mlir::AsmParser::parseOptionalComma(), mlir::AsmParser::parseOptionalEqual(), and verifyScheduleModifiers().

◆ parseSynchronizationHint()

static ParseResult parseSynchronizationHint ( OpAsmParser parser,
IntegerAttr &  hintAttr 
)
static

Parses a Synchronization Hint clause.

The value of hint is an integer which is a combination of different hints from omp_sync_hint_t.

hint-clause = hint ( hint-value )

Definition at line 1388 of file OpenMPDialect.cpp.

References mlir::AsmParser::emitError(), mlir::get(), mlir::AsmParser::getBuilder(), mlir::AsmParser::getCurrentLocation(), mlir::Builder::getI64Type(), mlir::AsmParser::parseCommaSeparatedList(), mlir::AsmParser::parseKeyword(), and mlir::AsmParser::parseOptionalKeyword().

◆ parseTargetOpRegion()

static ParseResult parseTargetOpRegion ( OpAsmParser parser,
Region region,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  hasDeviceAddrVars,
SmallVectorImpl< Type > &  hasDeviceAddrTypes,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  hostEvalVars,
SmallVectorImpl< Type > &  hostEvalTypes,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  inReductionVars,
SmallVectorImpl< Type > &  inReductionTypes,
DenseBoolArrayAttr inReductionByref,
ArrayAttr &  inReductionSyms,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  mapVars,
SmallVectorImpl< Type > &  mapTypes,
llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  privateVars,
llvm::SmallVectorImpl< Type > &  privateTypes,
ArrayAttr &  privateSyms,
DenseI64ArrayAttr privateMaps 
)
static

Definition at line 813 of file OpenMPDialect.cpp.

References parseBlockArgRegion().

◆ parseTaskReductionRegion()

static ParseResult parseTaskReductionRegion ( OpAsmParser parser,
Region region,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  taskReductionVars,
SmallVectorImpl< Type > &  taskReductionTypes,
DenseBoolArrayAttr taskReductionByref,
ArrayAttr &  taskReductionSyms 
)
static

Definition at line 896 of file OpenMPDialect.cpp.

References parseBlockArgRegion().

◆ parseUseDeviceAddrUseDevicePtrRegion()

static ParseResult parseUseDeviceAddrUseDevicePtrRegion ( OpAsmParser parser,
Region region,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  useDeviceAddrVars,
SmallVectorImpl< Type > &  useDeviceAddrTypes,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > &  useDevicePtrVars,
SmallVectorImpl< Type > &  useDevicePtrTypes 
)
static

Definition at line 907 of file OpenMPDialect.cpp.

References parseBlockArgRegion().

◆ printAlignedClause()

static void printAlignedClause ( OpAsmPrinter p,
Operation op,
ValueRange  alignedVars,
TypeRange  alignedTypes,
std::optional< ArrayAttr >  alignments 
)
static

Print Aligned Clause.

Definition at line 304 of file OpenMPDialect.cpp.

References mlir::ValueRange::getType().

◆ printAllocateAndAllocator()

static void printAllocateAndAllocator ( OpAsmPrinter p,
Operation op,
OperandRange  allocateVars,
TypeRange  allocateTypes,
OperandRange  allocatorVars,
TypeRange  allocatorTypes 
)
static

Print allocate clause.

Definition at line 148 of file OpenMPDialect.cpp.

◆ printBlockArgClause() [1/3]

static void printBlockArgClause ( OpAsmPrinter p,
MLIRContext ctx,
StringRef  clauseName,
ValueRange  argsSubrange,
std::optional< MapPrintArgs >  mapArgs 
)
static

Definition at line 1010 of file OpenMPDialect.cpp.

References printClauseWithRegionArgs().

Referenced by printBlockArgRegion().

◆ printBlockArgClause() [2/3]

static void printBlockArgClause ( OpAsmPrinter p,
MLIRContext ctx,
StringRef  clauseName,
ValueRange  argsSubrange,
std::optional< PrivatePrintArgs >  privateArgs 
)
static

Definition at line 1018 of file OpenMPDialect.cpp.

References printClauseWithRegionArgs().

◆ printBlockArgClause() [3/3]

static void printBlockArgClause ( OpAsmPrinter p,
MLIRContext ctx,
StringRef  clauseName,
ValueRange  argsSubrange,
std::optional< ReductionPrintArgs >  reductionArgs 
)
static

Definition at line 1028 of file OpenMPDialect.cpp.

References printClauseWithRegionArgs().

◆ printBlockArgRegion()

static void printBlockArgRegion ( OpAsmPrinter p,
Operation op,
Region region,
const AllRegionPrintArgs &  args 
)
static

◆ printCaptureType()

static void printCaptureType ( OpAsmPrinter p,
Operation op,
VariableCaptureKindAttr  mapCaptureType 
)
static

Definition at line 1644 of file OpenMPDialect.cpp.

◆ printClauseAttr()

template<typename ClauseAttr >
void printClauseAttr ( OpAsmPrinter p,
Operation op,
ClauseAttr  attr 
)

Definition at line 179 of file OpenMPDialect.cpp.

◆ printClauseWithRegionArgs()

static void printClauseWithRegionArgs ( OpAsmPrinter p,
MLIRContext ctx,
StringRef  clauseName,
ValueRange  argsSubrange,
ValueRange  operands,
TypeRange  types,
ArrayAttr  symbols = nullptr,
DenseI64ArrayAttr  mapIndices = nullptr,
DenseBoolArrayAttr  byref = nullptr,
ReductionModifierAttr  modifier = nullptr 
)
static

Definition at line 961 of file OpenMPDialect.cpp.

References mlir::get().

Referenced by printBlockArgClause().

◆ printCopyprivate()

static void printCopyprivate ( OpAsmPrinter p,
Operation op,
OperandRange  copyprivateVars,
TypeRange  copyprivateTypes,
std::optional< ArrayAttr >  copyprivateSyms 
)
static

Print Copyprivate clause.

Definition at line 1240 of file OpenMPDialect.cpp.

◆ printDependVarList()

static void printDependVarList ( OpAsmPrinter p,
Operation op,
OperandRange  dependVars,
TypeRange  dependTypes,
std::optional< ArrayAttr >  dependKinds 
)
static

Print Depend clause.

Definition at line 1349 of file OpenMPDialect.cpp.

◆ printGrainsizeClause()

static void printGrainsizeClause ( OpAsmPrinter p,
Operation op,
ClauseGrainsizeTypeAttr  grainsizeMod,
Value  grainsize,
mlir::Type  grainsizeType 
)
static

Definition at line 539 of file OpenMPDialect.cpp.

◆ printGranularityClause()

template<typename ClauseTypeAttr , typename ClauseType >
static void printGranularityClause ( OpAsmPrinter p,
Operation op,
ClauseTypeAttr  prescriptiveness,
Value  operand,
mlir::Type  operandType,
StringRef(*)(ClauseType)  stringifyClauseType 
)
static

Definition at line 513 of file OpenMPDialect.cpp.

◆ printInReductionPrivateReductionRegion()

static void printInReductionPrivateReductionRegion ( OpAsmPrinter p,
Operation op,
Region region,
ValueRange  inReductionVars,
TypeRange  inReductionTypes,
DenseBoolArrayAttr  inReductionByref,
ArrayAttr  inReductionSyms,
ValueRange  privateVars,
TypeRange  privateTypes,
ArrayAttr  privateSyms,
ReductionModifierAttr  reductionMod,
ValueRange  reductionVars,
TypeRange  reductionTypes,
DenseBoolArrayAttr  reductionByref,
ArrayAttr  reductionSyms 
)
static

Definition at line 1103 of file OpenMPDialect.cpp.

References printBlockArgRegion().

◆ printInReductionPrivateRegion()

static void printInReductionPrivateRegion ( OpAsmPrinter p,
Operation op,
Region region,
ValueRange  inReductionVars,
TypeRange  inReductionTypes,
DenseBoolArrayAttr  inReductionByref,
ArrayAttr  inReductionSyms,
ValueRange  privateVars,
TypeRange  privateTypes,
ArrayAttr  privateSyms 
)
static

Definition at line 1090 of file OpenMPDialect.cpp.

References printBlockArgRegion().

◆ printLinearClause()

static void printLinearClause ( OpAsmPrinter p,
Operation op,
ValueRange  linearVars,
TypeRange  linearTypes,
ValueRange  linearStepVars 
)
static

Print Linear Clause.

Definition at line 211 of file OpenMPDialect.cpp.

◆ printMapClause()

static void printMapClause ( OpAsmPrinter p,
Operation op,
IntegerAttr  mapType 
)
static

Prints a map_entries map type from its numeric value out into its string format.

Definition at line 1538 of file OpenMPDialect.cpp.

References mapTypeToBitFlag().

◆ printMembersIndex()

static void printMembersIndex ( OpAsmPrinter p,
MapInfoOp  op,
ArrayAttr  membersIdx 
)
static

Definition at line 1629 of file OpenMPDialect.cpp.

◆ printNumTasksClause()

static void printNumTasksClause ( OpAsmPrinter p,
Operation op,
ClauseNumTasksTypeAttr  numTasksMod,
Value  numTasks,
mlir::Type  numTasksType 
)
static

Definition at line 561 of file OpenMPDialect.cpp.

◆ printOrderClause()

static void printOrderClause ( OpAsmPrinter p,
Operation op,
ClauseOrderKindAttr  order,
OrderModifierAttr  orderMod 
)
static

Definition at line 466 of file OpenMPDialect.cpp.

◆ printPrivateReductionRegion()

static void printPrivateReductionRegion ( OpAsmPrinter p,
Operation op,
Region region,
ValueRange  privateVars,
TypeRange  privateTypes,
ArrayAttr  privateSyms,
ReductionModifierAttr  reductionMod,
ValueRange  reductionVars,
TypeRange  reductionTypes,
DenseBoolArrayAttr  reductionByref,
ArrayAttr  reductionSyms 
)
static

Definition at line 1129 of file OpenMPDialect.cpp.

References printBlockArgRegion().

◆ printPrivateRegion()

static void printPrivateRegion ( OpAsmPrinter p,
Operation op,
Region region,
ValueRange  privateVars,
TypeRange  privateTypes,
ArrayAttr  privateSyms 
)
static

Definition at line 1120 of file OpenMPDialect.cpp.

References printBlockArgRegion().

◆ printScheduleClause()

static void printScheduleClause ( OpAsmPrinter p,
Operation op,
ClauseScheduleKindAttr  scheduleKind,
ScheduleModifierAttr  scheduleMod,
UnitAttr  scheduleSimd,
Value  scheduleChunk,
Type  scheduleChunkType 
)
static

Print schedule clause.

Definition at line 422 of file OpenMPDialect.cpp.

References mlir::Value::getType().

◆ printSynchronizationHint()

static void printSynchronizationHint ( OpAsmPrinter p,
Operation op,
IntegerAttr  hintAttr 
)
static

Prints a Synchronization Hint clause.

Definition at line 1419 of file OpenMPDialect.cpp.

◆ printTargetOpRegion()

static void printTargetOpRegion ( OpAsmPrinter p,
Operation op,
Region region,
ValueRange  hasDeviceAddrVars,
TypeRange  hasDeviceAddrTypes,
ValueRange  hostEvalVars,
TypeRange  hostEvalTypes,
ValueRange  inReductionVars,
TypeRange  inReductionTypes,
DenseBoolArrayAttr  inReductionByref,
ArrayAttr  inReductionSyms,
ValueRange  mapVars,
TypeRange  mapTypes,
ValueRange  privateVars,
TypeRange  privateTypes,
ArrayAttr  privateSyms,
DenseI64ArrayAttr  privateMaps 
)
static

Definition at line 1071 of file OpenMPDialect.cpp.

References printBlockArgRegion().

◆ printTaskReductionRegion()

static void printTaskReductionRegion ( OpAsmPrinter p,
Operation op,
Region region,
ValueRange  taskReductionVars,
TypeRange  taskReductionTypes,
DenseBoolArrayAttr  taskReductionByref,
ArrayAttr  taskReductionSyms 
)
static

Definition at line 1143 of file OpenMPDialect.cpp.

References printBlockArgRegion().

◆ printUseDeviceAddrUseDevicePtrRegion()

static void printUseDeviceAddrUseDevicePtrRegion ( OpAsmPrinter p,
Operation op,
Region region,
ValueRange  useDeviceAddrVars,
TypeRange  useDeviceAddrTypes,
ValueRange  useDevicePtrVars,
TypeRange  useDevicePtrTypes 
)
static

Definition at line 1155 of file OpenMPDialect.cpp.

References printBlockArgRegion().

◆ verifyAlignedClause()

static LogicalResult verifyAlignedClause ( Operation op,
std::optional< ArrayAttr >  alignments,
OperandRange  alignedVars 
)
static

Definition at line 243 of file OpenMPDialect.cpp.

References mlir::Operation::emitOpError().

◆ verifyCopyprivateVarList()

static LogicalResult verifyCopyprivateVarList ( Operation op,
OperandRange  copyprivateVars,
std::optional< ArrayAttr >  copyprivateSyms 
)
static

Verifies CopyPrivate Clause.

Definition at line 1256 of file OpenMPDialect.cpp.

References mlir::Operation::emitOpError(), and visit().

◆ verifyDependVarList()

static LogicalResult verifyDependVarList ( Operation op,
std::optional< ArrayAttr >  dependKinds,
OperandRange  dependVars 
)
static

Verifies Depend clause.

Definition at line 1364 of file OpenMPDialect.cpp.

References mlir::Operation::emitOpError().

◆ verifyMapClause()

static LogicalResult verifyMapClause ( Operation op,
OperandRange  mapVars 
)
static

◆ verifyNontemporalClause()

static LogicalResult verifyNontemporalClause ( Operation op,
OperandRange  nontemporalVars 
)
static

Definition at line 228 of file OpenMPDialect.cpp.

References mlir::Operation::emitOpError().

◆ verifyOrderedParent()

static LogicalResult verifyOrderedParent ( Operation op)
static

◆ verifyPrivateVarList()

template<typename OpType >
static LogicalResult verifyPrivateVarList ( OpType &  op)
static

Definition at line 2170 of file OpenMPDialect.cpp.

◆ verifyPrivateVarsMapping()

static LogicalResult verifyPrivateVarsMapping ( TargetOp  targetOp)
static

Definition at line 1757 of file OpenMPDialect.cpp.

References mlir::emitError().

◆ verifyReductionVarList()

static LogicalResult verifyReductionVarList ( Operation op,
std::optional< ArrayAttr >  reductionSyms,
OperandRange  reductionVars,
std::optional< ArrayRef< bool >>  reductionByref 
)
static

Verifies Reduction Clause.

Definition at line 1169 of file OpenMPDialect.cpp.

References mlir::Operation::emitError(), mlir::Operation::emitOpError(), and mlir::Value::getType().

◆ verifyScheduleModifiers()

static ParseResult verifyScheduleModifiers ( OpAsmParser parser,
SmallVectorImpl< SmallString< 12 >> &  modifiers 
)
static

Definition at line 320 of file OpenMPDialect.cpp.

References mlir::AsmParser::emitError(), and mlir::AsmParser::getNameLoc().

Referenced by parseScheduleClause().

◆ verifySynchronizationHint()

static LogicalResult verifySynchronizationHint ( Operation op,
uint64_t  hint 
)
static

Verifies a synchronization hint clause.

Definition at line 1450 of file OpenMPDialect.cpp.

References mlir::Operation::emitOpError().