|
MLIR 24.0.0git
|
#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/OpenMP/OpenMPClauseOperands.h"#include "mlir/IR/Attributes.h"#include "mlir/IR/BuiltinAttributes.h"#include "mlir/IR/Matchers.h"#include "mlir/IR/OpImplementation.h"#include "mlir/IR/OperationSupport.h"#include "mlir/IR/SymbolTable.h"#include "mlir/Interfaces/FoldInterfaces.h"#include "mlir/Interfaces/SideEffectInterfaces.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/PostOrderIterator.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/STLForwardCompat.h"#include "llvm/ADT/SmallString.h"#include "llvm/ADT/StringRef.h"#include "llvm/ADT/TypeSwitch.h"#include "llvm/ADT/bit.h"#include "llvm/Support/InterleavedRange.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 DenseI64ArrayAttr | makeDenseI64ArrayAttr (MLIRContext *ctx, const ArrayRef< int64_t > intArray) |
| static std::string | generateLoopNestingName (StringRef prefix, CanonicalLoopOp op) |
| Generate a name of a canonical loop nest of the format <prefix>(_r<idx>_s<idx>)*. | |
| static LogicalResult | verifyDeclareTargetAttr (Operation *op, Attribute attr) |
| 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. | |
| static void | printAllocateAndAllocator (OpAsmPrinter &p, Operation *op, OperandRange allocateVars, TypeRange allocateTypes, OperandRange allocatorVars, TypeRange allocatorTypes) |
| Print allocate clause. | |
| template<typename ClauseAttr> | |
| static ParseResult | parseClauseAttr (AsmParser &parser, ClauseAttr &attr) |
| template<typename ClauseAttr> | |
| static void | printClauseAttr (OpAsmPrinter &p, Operation *op, ClauseAttr attr) |
| static ParseResult | parseLinearClause (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &linearVars, SmallVectorImpl< Type > &linearTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &linearStepVars, SmallVectorImpl< Type > &linearStepTypes, ArrayAttr &linearModifiers, ArrayAttr &linearSyms) |
| linear ::= linear ( linear-list ) linear-list := linear-val | linear-val linear-list linear-val := ssa-id-and-type = ssa-id-and-type | val ( ssa-id-and-type = ssa-id-and-type ) | ref ( ssa-id-and-type = ssa-id-and-type ) | uval ( ssa-id-and-type = ssa-id-and-type ) | |
| static void | printLinearClause (OpAsmPrinter &p, Operation *op, ValueRange linearVars, TypeRange linearTypes, ValueRange linearStepVars, TypeRange stepVarTypes, ArrayAttr linearModifiers, ArrayAttr linearSyms) |
| Print Linear Clause. | |
| static LogicalResult | verifyLinearModifiers (Operation *op, std::optional< ArrayAttr > linearModifiers, OperandRange linearVars, bool isDeclareSimd=false) |
| OpenMP 5.2, Section 5.4.6: "A linear-modifier may be specified as ref or uval only on a declare simd directive. | |
| 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 | |
| static void | printAlignedClause (OpAsmPrinter &p, Operation *op, ValueRange alignedVars, TypeRange alignedTypes, std::optional< ArrayAttr > alignments) |
| Print Aligned Clause. | |
| static LogicalResult | verifyAllocateClause (Operation *op, ValueRange allocateVars, ValueRange allocatorVars, DenseI64ArrayAttr allocateAlignments, DenseI64ArrayAttr allocatePrivateIndices, ValueRange privateVars={}, ArrayAttr privateSyms=nullptr, bool requirePrivateIndices=false) |
| 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)? | |
| static void | printScheduleClause (OpAsmPrinter &p, Operation *op, ClauseScheduleKindAttr scheduleKind, ScheduleModifierAttr scheduleMod, UnitAttr scheduleSimd, Value scheduleChunk, Type scheduleChunkType) |
| Print schedule clause. | |
| 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 | parseHeapAllocClause (OpAsmParser &parser, TypeAttr &inTypeAttr, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &typeparams, SmallVectorImpl< Type > &typeparamsTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &shape, SmallVectorImpl< Type > &shapeTypes) |
| operation ::= $in_type ( ( $typeparams ) )? ( , $shape )? | |
| static void | printHeapAllocClause (OpAsmPrinter &p, Operation *op, TypeAttr inType, ValueRange typeparams, TypeRange typeparamsTypes, ValueRange shape, TypeRange shapeTypes) |
| static LogicalResult | verifyDynGroupprivateClause (Operation *op, AccessGroupModifierAttr accessGroup, FallbackModifierAttr fallback, Value dynGroupprivateSize) |
| static ParseResult | parseDynGroupprivateClause (OpAsmParser &parser, AccessGroupModifierAttr &accessGroupAttr, FallbackModifierAttr &fallbackAttr, std::optional< OpAsmParser::UnresolvedOperand > &dynGroupprivateSize, Type &sizeType) |
| static void | printDynGroupprivateClause (OpAsmPrinter &printer, Operation *op, AccessGroupModifierAttr modifierFirst, FallbackModifierAttr modifierSecond, Value dynGroupprivateSize, Type sizeType) |
| static ParseResult | parseInReductionClause (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &inReductionVars, SmallVectorImpl< Type > &inReductionTypes, DenseBoolArrayAttr &inReductionByref, ArrayAttr &inReductionSyms) |
| Parses an in_reduction clause for an operation that does not give its list items entry block arguments (e.g. | |
| static void | printInReductionClause (OpAsmPrinter &p, Operation *op, ValueRange inReductionVars, TypeRange inReductionTypes, DenseBoolArrayAttr inReductionByref, ArrayAttr inReductionSyms) |
| Prints an in_reduction clause for an operation that does not give its list items entry block arguments (e.g. | |
| static constexpr StringRef | getPrivateNeedsBarrierSpelling () |
| static ParseResult | parseClauseWithRegionArgs (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &operands, SmallVectorImpl< Type > &types, SmallVectorImpl< OpAsmParser::Argument > ®ionPrivateArgs, ArrayAttr *symbols=nullptr, DenseI64ArrayAttr *mapIndices=nullptr, DenseBoolArrayAttr *byref=nullptr, ArrayAttr *modifier=nullptr, UnitAttr *needsBarrier=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 | parseBlockArgClause (OpAsmParser &parser, llvm::SmallVectorImpl< OpAsmParser::Argument > &entryBlockArgs, StringRef keyword, std::optional< LinearParseArgs > linearArgs) |
| linear-entry := [modifier (] symbol ssa-id -> ssa-id : type = ssa-id : type [)] | |
| static ParseResult | parseBlockArgRegion (OpAsmParser &parser, Region ®ion, AllRegionParseArgs args) |
| static ParseResult | parseTargetOpRegion (OpAsmParser &parser, Region ®ion, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &hasDeviceAddrVars, SmallVectorImpl< Type > &hasDeviceAddrTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &hostEvalVars, SmallVectorImpl< Type > &hostEvalTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &mapVars, SmallVectorImpl< Type > &mapTypes, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms, UnitAttr &privateNeedsBarrier, DenseI64ArrayAttr &privateMaps) |
| static ParseResult | parseInReductionPrivateRegion (OpAsmParser &parser, Region ®ion, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &inReductionVars, SmallVectorImpl< Type > &inReductionTypes, DenseBoolArrayAttr &inReductionByref, ArrayAttr &inReductionSyms, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms, UnitAttr &privateNeedsBarrier) |
| static ParseResult | parseInReductionPrivateReductionRegion (OpAsmParser &parser, Region ®ion, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &inReductionVars, SmallVectorImpl< Type > &inReductionTypes, DenseBoolArrayAttr &inReductionByref, ArrayAttr &inReductionSyms, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms, UnitAttr &privateNeedsBarrier, ArrayAttr &reductionMods, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &reductionVars, SmallVectorImpl< Type > &reductionTypes, DenseBoolArrayAttr &reductionByref, ArrayAttr &reductionSyms) |
| static ParseResult | parsePrivateRegion (OpAsmParser &parser, Region ®ion, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms, UnitAttr &privateNeedsBarrier) |
| static ParseResult | parsePrivateReductionRegion (OpAsmParser &parser, Region ®ion, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms, UnitAttr &privateNeedsBarrier, ArrayAttr &reductionMods, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &reductionVars, SmallVectorImpl< Type > &reductionTypes, DenseBoolArrayAttr &reductionByref, ArrayAttr &reductionSyms) |
| static ParseResult | parseLinearPrivateReductionRegion (OpAsmParser &parser, Region ®ion, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &linearVars, SmallVectorImpl< Type > &linearTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &linearStepVars, SmallVectorImpl< Type > &linearStepTypes, ArrayAttr &linearVarTypes, ArrayAttr &linearModifiers, ArrayAttr &linearSyms, llvm::SmallVectorImpl< OpAsmParser::UnresolvedOperand > &privateVars, llvm::SmallVectorImpl< Type > &privateTypes, ArrayAttr &privateSyms, UnitAttr &privateNeedsBarrier, ArrayAttr &reductionMods, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &reductionVars, SmallVectorImpl< Type > &reductionTypes, DenseBoolArrayAttr &reductionByref, ArrayAttr &reductionSyms) |
| static ParseResult | parseTaskReductionRegion (OpAsmParser &parser, Region ®ion, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &taskReductionVars, SmallVectorImpl< Type > &taskReductionTypes, DenseBoolArrayAttr &taskReductionByref, ArrayAttr &taskReductionSyms) |
| static ParseResult | parseUseDeviceAddrUseDevicePtrRegion (OpAsmParser &parser, Region ®ion, 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, ArrayAttr modifier=nullptr, UnitAttr needsBarrier=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 | printBlockArgClause (OpAsmPrinter &p, MLIRContext *ctx, StringRef clauseName, ValueRange argsSubrange, std::optional< LinearPrintArgs > linearArgs) |
| static void | printBlockArgRegion (OpAsmPrinter &p, Operation *op, Region ®ion, const AllRegionPrintArgs &args) |
| static void | printTargetOpRegion (OpAsmPrinter &p, Operation *op, Region ®ion, ValueRange hasDeviceAddrVars, TypeRange hasDeviceAddrTypes, ValueRange hostEvalVars, TypeRange hostEvalTypes, ValueRange mapVars, TypeRange mapTypes, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms, UnitAttr privateNeedsBarrier, DenseI64ArrayAttr privateMaps) |
| static void | printInReductionPrivateRegion (OpAsmPrinter &p, Operation *op, Region ®ion, ValueRange inReductionVars, TypeRange inReductionTypes, DenseBoolArrayAttr inReductionByref, ArrayAttr inReductionSyms, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms, UnitAttr privateNeedsBarrier) |
| static void | printInReductionPrivateReductionRegion (OpAsmPrinter &p, Operation *op, Region ®ion, ValueRange inReductionVars, TypeRange inReductionTypes, DenseBoolArrayAttr inReductionByref, ArrayAttr inReductionSyms, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms, UnitAttr privateNeedsBarrier, ArrayAttr reductionMods, ValueRange reductionVars, TypeRange reductionTypes, DenseBoolArrayAttr reductionByref, ArrayAttr reductionSyms) |
| static void | printPrivateRegion (OpAsmPrinter &p, Operation *op, Region ®ion, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms, UnitAttr privateNeedsBarrier) |
| static void | printPrivateReductionRegion (OpAsmPrinter &p, Operation *op, Region ®ion, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms, UnitAttr privateNeedsBarrier, ArrayAttr reductionMods, ValueRange reductionVars, TypeRange reductionTypes, DenseBoolArrayAttr reductionByref, ArrayAttr reductionSyms) |
| static void | printLinearPrivateReductionRegion (OpAsmPrinter &p, Operation *op, Region ®ion, ValueRange linearVars, TypeRange linearTypes, ValueRange linearStepVars, TypeRange linearStepTypes, ArrayAttr linearVarTypes, ArrayAttr linearModifiers, ArrayAttr linearSyms, ValueRange privateVars, TypeRange privateTypes, ArrayAttr privateSyms, UnitAttr privateNeedsBarrier, ArrayAttr reductionMods, ValueRange reductionVars, TypeRange reductionTypes, DenseBoolArrayAttr reductionByref, ArrayAttr reductionSyms) |
| static void | printTaskReductionRegion (OpAsmPrinter &p, Operation *op, Region ®ion, ValueRange taskReductionVars, TypeRange taskReductionTypes, DenseBoolArrayAttr taskReductionByref, ArrayAttr taskReductionSyms) |
| static void | printUseDeviceAddrUseDevicePtrRegion (OpAsmPrinter &p, Operation *op, Region ®ion, ValueRange useDeviceAddrVars, TypeRange useDeviceAddrTypes, ValueRange useDevicePtrVars, TypeRange useDevicePtrTypes) |
| template<typename ParsePrefixFn> | |
| static ParseResult | parseSplitIteratedList (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &iteratedVars, SmallVectorImpl< Type > &iteratedTypes, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &plainVars, SmallVectorImpl< Type > &plainTypes, ParsePrefixFn &&parsePrefix) |
| template<typename PrintPrefixFn> | |
| static void | printSplitIteratedList (OpAsmPrinter &p, ValueRange iteratedVars, TypeRange iteratedTypes, ValueRange plainVars, TypeRange plainTypes, PrintPrefixFn &&printPrefixForPlain, PrintPrefixFn &&printPrefixForIterated) |
| static LogicalResult | verifyReductionModifiers (Operation *op, OperandRange reductionVars, ArrayAttr reductionMods) |
| Verify the per-variable modifier list has one entry per reduction variable. | |
| static LogicalResult | verifyReductionVarList (Operation *op, std::optional< ArrayAttr > reductionSyms, OperandRange reductionVars, std::optional< ArrayRef< bool > > reductionByref, ArrayAttr reductionMods=nullptr) |
| Verifies Reduction Clause. | |
| static ParseResult | parseCopyprivate (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > ©privateVars, SmallVectorImpl< Type > ©privateTypes, ArrayAttr ©privateSyms) |
| copyprivate-entry-list ::= copyprivate-entry | copyprivate-entry-list , copyprivate-entry copyprivate-entry ::= ssa-id -> symbol-ref : type | |
| static void | printCopyprivate (OpAsmPrinter &p, Operation *op, OperandRange copyprivateVars, TypeRange copyprivateTypes, std::optional< ArrayAttr > copyprivateSyms) |
| Print Copyprivate clause. | |
| static LogicalResult | verifyCopyprivateVarList (Operation *op, OperandRange copyprivateVars, std::optional< ArrayAttr > copyprivateSyms) |
| Verifies CopyPrivate Clause. | |
| static ParseResult | parseDependVarList (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &dependVars, SmallVectorImpl< Type > &dependTypes, ArrayAttr &dependKinds, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &iteratedVars, SmallVectorImpl< Type > &iteratedTypes, ArrayAttr &iteratedKinds) |
| depend-entry-list ::= depend-entry | depend-entry-list , depend-entry depend-entry ::= depend-kind -> ssa-id : type | depend-kind -> ssa-id : iterated-type | |
| static void | printDependVarList (OpAsmPrinter &p, Operation *op, OperandRange dependVars, TypeRange dependTypes, std::optional< ArrayAttr > dependKinds, OperandRange iteratedVars, TypeRange iteratedTypes, std::optional< ArrayAttr > iteratedKinds) |
| Print Depend clause. | |
| static LogicalResult | verifyDependVarList (Operation *op, std::optional< ArrayAttr > dependKinds, OperandRange dependVars, std::optional< ArrayAttr > iteratedKinds, OperandRange iteratedVars) |
| Verifies Depend clause. | |
| static ParseResult | parseSynchronizationHint (OpAsmParser &parser, IntegerAttr &hintAttr) |
| Parses a Synchronization Hint clause. | |
| static void | printSynchronizationHint (OpAsmPrinter &p, Operation *op, IntegerAttr hintAttr) |
| Prints a Synchronization Hint clause. | |
| static LogicalResult | verifySynchronizationHint (Operation *op, uint64_t hint) |
| Verifies a synchronization hint clause. | |
| static bool | mapTypeToBool (ClauseMapFlags value, ClauseMapFlags flag) |
| return | success () |
| if (parser.parseCommaSeparatedList(parseIndices)) return failure() | |
| if (failed(parser.parseRSquare())) return failure() | |
| memberIdxs | push_back (ArrayAttr::get(parser.getContext(), values)) |
| values | clear () |
| while (succeeded(parser.parseOptionalComma())) | |
| if (!memberIdxs.empty()) 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 | verifyMapInfoForMapClause (Operation *op, mlir::omp::MapInfoOp mapInfoOp, llvm::DenseSet< mlir::TypedValue< mlir::omp::PointerLikeType > > &updateToVars, llvm::DenseSet< mlir::TypedValue< mlir::omp::PointerLikeType > > &updateFromVars) |
| static LogicalResult | verifyMapClause (Operation *op, OperandRange mapVars, OperandRange mapIterated) |
| template<typename OpType> | |
| static LogicalResult | verifyPrivateVarList (OpType &op) |
| static LogicalResult | verifyPrivateVarsMapping (TargetOp targetOp) |
| static LogicalResult | verifyMapInfoDefinedArgs (Operation *op, StringRef clauseName, OperandRange vars) |
| static bool | targetInReductionCapturedBy (Value inReductionVar, Value mapVarPtr) |
| An omp.target in_reduction operand is captured by a map_entries entry when the entry's MapInfoOp var_ptr is the same SSA value, or another result of the same defining op. At this stage, exact identity can only be required for block arguments, which have no defining op. Flang emits hlfir.declare #0 for the in_reduction operand and #1 for the map var_ptr; these collapse to the same value after lowering, but that cannot be enforced here. | |
| template<typename OpType> | |
| static LogicalResult | verifyLinearSyms (OpType op) |
| Verifies that each linear variable has a linear privatizer. | |
| static bool | opInGlobalImplicitParallelRegion (Operation *op) |
| static LogicalResult | verifyNumTeamsClause (Operation *op, Value numTeamsLower, OperandRange numTeamsUpperVars) |
| static void | addUnknownMemoryEffects (SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
| Add arbitrary read, write, allocate, and free effects. | |
| static void | getPrivatisationEffects (Operation *op, SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
| Privatisation may read the original as a mold or firstprivate copy source. Any lastprivate copy-back is explicit in the nested operations. | |
| static void | getReductionEffects (Operation *op, SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
| Reductions initialise private accumulators and combine them into the original variables. Account for reduction and in_reduction clauses. | |
| static void | getBarrierEffects (llvm::SmallVectorImpl< SideEffects::EffectInstance< MemoryEffects::Effect > > &effects) |
| static void | getTaskReductionEffects (Operation *op, SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
| static void | getTaskSchedulingPointEffects (llvm::SmallVectorImpl< SideEffects::EffectInstance< MemoryEffects::Effect > > &effects) |
| static void | printLoopTransformClis (OpAsmPrinter &p, TileOp op, OperandRange generatees, OperandRange applyees) |
| static ParseResult | parseLoopTransformClis (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &generateesOperands, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &applyeesOperands) |
| static LogicalResult | checkApplyeesNesting (TileOp op) |
| Check properties of the loop nest consisting of the transformation's applyees: | |
| static void | printLoopTransformClis (OpAsmPrinter &p, FuseOp op, OperandRange generatees, OperandRange applyees) |
| static LogicalResult | verifyOrderedParent (Operation &op) |
| static Operation * | getParentInSameDialect (Operation *thisOp) |
| LogicalResult | verifyAlignment (Operation &op, std::optional< uint64_t > alignment) |
| Verifies align clause in allocate directive. | |
| static ParseResult | parseUniformClause (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &uniformVars, SmallVectorImpl< Type > &uniformTypes) |
| uniform ::= uniform ( uniform-list ) uniform-list := uniform-val (, uniform-val)* uniform-val := ssa-id : type | |
| static void | printUniformClause (OpAsmPrinter &p, Operation *op, ValueRange uniformVars, TypeRange uniformTypes) |
| Print Uniform Clauses. | |
| static ParseResult | parseAffinityClause (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &iterated, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &affinityVars, SmallVectorImpl< Type > &iteratedTypes, SmallVectorImpl< Type > &affinityVarTypes) |
| static void | printAffinityClause (OpAsmPrinter &p, Operation *op, ValueRange iterated, ValueRange affinityVars, TypeRange iteratedTypes, TypeRange affinityVarTypes) |
| static ParseResult | parseIteratorHeader (OpAsmParser &parser, Region ®ion, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &lbs, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &ubs, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &steps, SmallVectorImpl< Type > &lbTypes, SmallVectorImpl< Type > &ubTypes, SmallVectorImpl< Type > &stepTypes) |
| static void | printIteratorHeader (OpAsmPrinter &p, Operation *op, Region ®ion, ValueRange lbs, ValueRange ubs, ValueRange steps, TypeRange, TypeRange, TypeRange) |
Variables | |
| false | |
| Parses a map_entries map type from a string format back into its numeric value. | |
| do | |
| #define GET_ATTRDEF_CLASSES |
Definition at line 6246 of file OpenMPDialect.cpp.
| #define GET_ATTRDEF_LIST |
| #define GET_OP_CLASSES |
Definition at line 6249 of file OpenMPDialect.cpp.
| #define GET_OP_LIST |
| #define GET_TYPEDEF_CLASSES |
Definition at line 6252 of file OpenMPDialect.cpp.
| #define GET_TYPEDEF_LIST |
|
static |
Add arbitrary read, write, allocate, and free effects.
Definition at line 3483 of file OpenMPDialect.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get().
|
static |
Check properties of the loop nest consisting of the transformation's applyees:
TODO: Generalize for LoopTransformationInterface.
Definition at line 5117 of file OpenMPDialect.cpp.
References mlir::Block::begin(), mlir::omp::decodeCli(), mlir::Block::end(), mlir::Block::front(), and success().
| values clear | ( | ) |
|
static |
Generate a name of a canonical loop nest of the format <prefix>(_r<idx>_s<idx>)*.
Hereby, _r<idx> identifies the region argument index of an operation that has multiple regions, if the operation has multiple regions. _s<idx> identifies the position of an operation within a region, where only operations that may potentially contain loops ("container operations" i.e. have region arguments) are counted. Again, it is omitted if there is only one such operation in a region. If there are canonical loops nested inside each other, also may also use the format _d<num> where <num> is the nesting depth of the loop.
The generated name is a best-effort to make canonical loop unique within an SSA namespace. This also means that regions with IsolatedFromAbove property do not consider any parents or siblings.
If true, this component describes a region operand of an operation (the operand's owner) If false, this component describes an operation located in a parent region
Definition at line 94 of file OpenMPDialect.cpp.
References b, mlir::Region::getBlocks(), mlir::Region::getParentOp(), mlir::Operation::getParentRegion(), mlir::Operation::getRegions(), mlir::Operation::hasTrait(), and isUnique().
|
static |
Definition at line 3535 of file OpenMPDialect.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get().
Definition at line 5602 of file OpenMPDialect.cpp.
References mlir::Operation::getDialect(), and mlir::Operation::getParentOp().
|
inlinestaticconstexpr |
Definition at line 1318 of file OpenMPDialect.cpp.
|
static |
Privatisation may read the original as a mold or firstprivate copy source. Any lastprivate copy-back is explicit in the nested operations.
Definition at line 3493 of file OpenMPDialect.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get().
|
static |
Reductions initialise private accumulators and combine them into the original variables. Account for reduction and in_reduction clauses.
Definition at line 3511 of file OpenMPDialect.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get().
|
static |
Definition at line 4259 of file OpenMPDialect.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get().
|
static |
Definition at line 4282 of file OpenMPDialect.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get().
| if | ( | !memberIdxs. | empty() | ) |
| if | ( | failed(parser.parseRSquare()) | ) |
| if | ( | parser. | parseCommaSeparatedListparseIndices | ) |
|
static |
Definition at line 49 of file OpenMPDialect.cpp.
References ArrayAttr(), and nullptr.
|
static |
Definition at line 55 of file OpenMPDialect.cpp.
References mlir::detail::DenseArrayAttrImpl< bool >::get(), and nullptr.
Referenced by parseInReductionClause().
|
static |
Definition at line 60 of file OpenMPDialect.cpp.
References mlir::detail::DenseArrayAttrImpl< int64_t >::get(), and nullptr.
|
static |
Definition at line 2449 of file OpenMPDialect.cpp.
Referenced by verifyMapInfoForMapClause().
Definition at line 3342 of file OpenMPDialect.cpp.
References mlir::Operation::getDialect(), and mlir::Operation::getParentOp().
|
static |
Definition at line 6040 of file OpenMPDialect.cpp.
References parseSplitIteratedList(), and success().
|
static |
aligned ::= aligned ( aligned-list ) aligned-list := aligned-val | aligned-val aligned-list aligned-val := ssa-id-and-type -> alignment
Definition at line 633 of file OpenMPDialect.cpp.
References ArrayAttr(), mlir::AsmParser::parseCommaSeparatedList(), and success().
|
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 396 of file OpenMPDialect.cpp.
References mlir::AsmParser::parseArrow(), mlir::AsmParser::parseColonType(), mlir::AsmParser::parseCommaSeparatedList(), mlir::OpAsmParser::parseOperand(), and success().
|
static |
linear-entry := [modifier (] symbol ssa-id -> ssa-id : type = ssa-id : type [)]
Definition at line 1473 of file OpenMPDialect.cpp.
References mlir::AsmParser::getContext(), mlir::AsmParser::parseAttribute(), mlir::AsmParser::parseCommaSeparatedList(), mlir::AsmParser::parseLParen(), mlir::AsmParser::parseOptionalKeyword(), mlir::AsmParser::parseRParen(), and success().
|
static |
Definition at line 1423 of file OpenMPDialect.cpp.
References parseClauseWithRegionArgs(), mlir::AsmParser::parseOptionalKeyword(), and success().
Referenced by parseBlockArgRegion().
|
static |
Definition at line 1438 of file OpenMPDialect.cpp.
References parseClauseWithRegionArgs(), mlir::AsmParser::parseOptionalKeyword(), and success().
|
static |
Definition at line 1455 of file OpenMPDialect.cpp.
References parseClauseWithRegionArgs(), mlir::AsmParser::parseOptionalKeyword(), and success().
|
static |
Definition at line 1528 of file OpenMPDialect.cpp.
References mlir::AsmParser::emitError(), mlir::AsmParser::getCurrentLocation(), parseBlockArgClause(), and mlir::OpAsmParser::parseRegion().
Referenced by parseInReductionPrivateReductionRegion(), parseInReductionPrivateRegion(), parseLinearPrivateReductionRegion(), parsePrivateReductionRegion(), parsePrivateRegion(), parseTargetOpRegion(), parseTaskReductionRegion(), and parseUseDeviceAddrUseDevicePtrRegion().
|
static |
Definition at line 2676 of file OpenMPDialect.cpp.
References mlir::AsmParser::getContext(), mlir::AsmParser::parseKeyword(), and success().
|
static |
Definition at line 439 of file OpenMPDialect.cpp.
References mlir::AsmParser::emitError(), mlir::AsmParser::getContext(), mlir::AsmParser::getCurrentLocation(), mlir::AsmParser::parseKeyword(), and success().
|
static |
Definition at line 1322 of file OpenMPDialect.cpp.
References ArrayAttr(), if(), mlir::OpAsmParser::parseArgument(), mlir::AsmParser::parseArrow(), mlir::AsmParser::parseAttribute(), mlir::AsmParser::parseCommaSeparatedList(), mlir::AsmParser::parseEqual(), mlir::AsmParser::parseInteger(), mlir::AsmParser::parseKeyword(), mlir::AsmParser::parseLParen(), mlir::OpAsmParser::parseOperand(), mlir::AsmParser::parseOptionalKeyword(), mlir::AsmParser::parseOptionalLSquare(), mlir::AsmParser::parseRSquare(), and success().
Referenced by parseBlockArgClause(), parseBlockArgClause(), and parseBlockArgClause().
|
static |
copyprivate-entry-list ::= copyprivate-entry | copyprivate-entry-list , copyprivate-entry copyprivate-entry ::= ssa-id -> symbol-ref : type
Definition at line 2159 of file OpenMPDialect.cpp.
References ArrayAttr(), mlir::AsmParser::getContext(), mlir::AsmParser::parseCommaSeparatedList(), and success().
|
static |
depend-entry-list ::= depend-entry | depend-entry-list , depend-entry depend-entry ::= depend-kind -> ssa-id : type | depend-kind -> ssa-id : iterated-type
Definition at line 2263 of file OpenMPDialect.cpp.
References ArrayAttr(), mlir::AsmParser::parseCommaSeparatedList(), and success().
|
static |
Definition at line 1075 of file OpenMPDialect.cpp.
References mlir::AsmParser::emitError(), mlir::AsmParser::getContext(), mlir::AsmParser::getCurrentLocation(), mlir::AsmParser::parseColon(), mlir::AsmParser::parseCommaSeparatedList(), mlir::AsmParser::parseKeyword(), mlir::AsmParser::parseLParen(), mlir::OpAsmParser::parseOperand(), mlir::AsmParser::parseOptionalKeyword(), mlir::AsmParser::parseRParen(), mlir::AsmParser::parseType(), and success().
|
static |
Definition at line 972 of file OpenMPDialect.cpp.
References parseGranularityClause().
|
static |
Definition at line 918 of file OpenMPDialect.cpp.
References mlir::AsmParser::emitError(), mlir::AsmParser::getContext(), mlir::AsmParser::getCurrentLocation(), mlir::AsmParser::parseColonType(), mlir::AsmParser::parseComma(), mlir::OpAsmParser::parseOperand(), mlir::AsmParser::parseOptionalKeyword(), and success().
Referenced by parseGrainsizeClause(), and parseNumTasksClause().
|
static |
operation ::= $in_type ( ( $typeparams ) )? ( , $shape )?
Definition at line 1014 of file OpenMPDialect.cpp.
References mlir::AsmParser::getContext(), mlir::AsmParser::None, mlir::AsmParser::parseColonTypeList(), mlir::OpAsmParser::parseOperandList(), mlir::AsmParser::parseOptionalComma(), mlir::AsmParser::parseOptionalLParen(), mlir::AsmParser::parseRParen(), mlir::AsmParser::parseType(), and success().
|
static |
Parses an in_reduction clause for an operation that does not give its list items entry block arguments (e.g.
omp.target). The expected format is a comma-separated list of [byref] @sym var followed by : types.
Definition at line 1180 of file OpenMPDialect.cpp.
References ArrayAttr(), mlir::AsmParser::getContext(), makeDenseBoolArrayAttr(), mlir::AsmParser::parseColon(), mlir::AsmParser::parseCommaSeparatedList(), and success().
|
static |
Definition at line 1623 of file OpenMPDialect.cpp.
References ArrayAttr(), and parseBlockArgRegion().
|
static |
Definition at line 1607 of file OpenMPDialect.cpp.
References ArrayAttr(), and parseBlockArgRegion().
|
static |
Definition at line 6069 of file OpenMPDialect.cpp.
References mlir::AsmParser::getCurrentLocation(), mlir::AsmParser::parseCommaSeparatedList(), and success().
|
static |
linear ::= linear ( linear-list ) linear-list := linear-val | linear-val linear-list linear-val := ssa-id-and-type = ssa-id-and-type | val ( ssa-id-and-type = ssa-id-and-type ) | ref ( ssa-id-and-type = ssa-id-and-type ) | uval ( ssa-id-and-type = ssa-id-and-type )
Definition at line 467 of file OpenMPDialect.cpp.
References ArrayAttr(), mlir::AsmParser::getContext(), mlir::AsmParser::parseColonType(), mlir::AsmParser::parseCommaSeparatedList(), mlir::AsmParser::parseEqual(), mlir::AsmParser::parseLParen(), mlir::OpAsmParser::parseOperand(), mlir::AsmParser::parseOptionalKeyword(), mlir::AsmParser::parseRParen(), result, and success().
|
static |
Definition at line 1671 of file OpenMPDialect.cpp.
References ArrayAttr(), and parseBlockArgRegion().
|
static |
Definition at line 5080 of file OpenMPDialect.cpp.
References mlir::AsmParser::Paren, mlir::AsmParser::parseLess(), mlir::AsmParser::parseMinus(), mlir::OpAsmParser::parseOperandList(), mlir::AsmParser::parseOptionalLess(), and success().
|
static |
Definition at line 994 of file OpenMPDialect.cpp.
References parseGranularityClause().
|
static |
Definition at line 883 of file OpenMPDialect.cpp.
References mlir::AsmParser::emitError(), mlir::AsmParser::getContext(), mlir::AsmParser::getCurrentLocation(), mlir::AsmParser::parseKeyword(), mlir::AsmParser::parseOptionalColon(), and success().
|
static |
Definition at line 1655 of file OpenMPDialect.cpp.
References ArrayAttr(), and parseBlockArgRegion().
|
static |
Definition at line 1644 of file OpenMPDialect.cpp.
References ArrayAttr(), and parseBlockArgRegion().
|
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 801 of file OpenMPDialect.cpp.
References mlir::AsmParser::emitError(), mlir::AsmParser::getBuilder(), mlir::AsmParser::getContext(), mlir::Builder::getContext(), mlir::AsmParser::getCurrentLocation(), mlir::AsmParser::getNameLoc(), mlir::AsmParser::parseColonType(), mlir::AsmParser::parseKeyword(), mlir::OpAsmParser::parseOperand(), mlir::AsmParser::parseOptionalComma(), mlir::AsmParser::parseOptionalEqual(), success(), and verifyScheduleModifiers().
|
static |
Definition at line 2044 of file OpenMPDialect.cpp.
References mlir::AsmParser::parseColonType(), mlir::AsmParser::parseCommaSeparatedList(), mlir::OpAsmParser::parseOperand(), and success().
Referenced by parseAffinityClause().
|
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 2362 of file OpenMPDialect.cpp.
References mlir::AsmParser::emitError(), mlir::AsmParser::getBuilder(), mlir::AsmParser::getCurrentLocation(), mlir::Builder::getI64Type(), mlir::AsmParser::parseCommaSeparatedList(), mlir::AsmParser::parseKeyword(), mlir::AsmParser::parseOptionalKeyword(), and success().
|
static |
Definition at line 1587 of file OpenMPDialect.cpp.
References ArrayAttr(), and parseBlockArgRegion().
|
static |
Definition at line 1695 of file OpenMPDialect.cpp.
References ArrayAttr(), and parseBlockArgRegion().
|
static |
uniform ::= uniform ( uniform-list ) uniform-list := uniform-val (, uniform-val)* uniform-val := ssa-id : type
Definition at line 6015 of file OpenMPDialect.cpp.
References mlir::AsmParser::parseColonType(), mlir::AsmParser::parseCommaSeparatedList(), and mlir::OpAsmParser::parseOperand().
|
static |
Definition at line 1706 of file OpenMPDialect.cpp.
References parseBlockArgRegion().
|
static |
Definition at line 6053 of file OpenMPDialect.cpp.
References printSplitIteratedList().
|
static |
Print Aligned Clause.
Definition at line 654 of file OpenMPDialect.cpp.
References mlir::ValueRange::getType().
|
static |
Print allocate clause.
Definition at line 422 of file OpenMPDialect.cpp.
|
static |
Definition at line 1861 of file OpenMPDialect.cpp.
|
static |
Definition at line 1832 of file OpenMPDialect.cpp.
References printClauseWithRegionArgs().
Referenced by printBlockArgRegion().
|
static |
Definition at line 1840 of file OpenMPDialect.cpp.
References printClauseWithRegionArgs().
|
static |
Definition at line 1851 of file OpenMPDialect.cpp.
References printClauseWithRegionArgs().
|
static |
Definition at line 1890 of file OpenMPDialect.cpp.
References mlir::Operation::getContext(), printBlockArgClause(), and mlir::OpAsmPrinter::printRegion().
Referenced by printInReductionPrivateReductionRegion(), printInReductionPrivateRegion(), printLinearPrivateReductionRegion(), printPrivateReductionRegion(), printPrivateRegion(), printTargetOpRegion(), printTaskReductionRegion(), and printUseDeviceAddrUseDevicePtrRegion().
|
static |
Definition at line 2661 of file OpenMPDialect.cpp.
|
static |
Definition at line 453 of file OpenMPDialect.cpp.
|
static |
Definition at line 1777 of file OpenMPDialect.cpp.
References ArrayAttr(), mlir::detail::DenseArrayAttrImpl< bool >::get(), mlir::detail::DenseArrayAttrImpl< int64_t >::get(), and if().
Referenced by printBlockArgClause(), printBlockArgClause(), and printBlockArgClause().
|
static |
Print Copyprivate clause.
Definition at line 2179 of file OpenMPDialect.cpp.
|
static |
Print Depend clause.
Definition at line 2304 of file OpenMPDialect.cpp.
|
static |
Definition at line 1144 of file OpenMPDialect.cpp.
|
static |
Definition at line 980 of file OpenMPDialect.cpp.
References printGranularityClause().
|
static |
Definition at line 954 of file OpenMPDialect.cpp.
Referenced by printGrainsizeClause(), and printNumTasksClause().
|
static |
Definition at line 1047 of file OpenMPDialect.cpp.
References mlir::OpAsmPrinter::printOperand().
|
static |
Prints an in_reduction clause for an operation that does not give its list items entry block arguments (e.g.
omp.target). Mirrors parseInReductionClause.
Definition at line 1216 of file OpenMPDialect.cpp.
References ArrayAttr(), mlir::detail::DenseArrayAttrImpl< T >::asArrayRef(), mlir::detail::DenseArrayAttrImpl< bool >::get(), and mlir::Operation::getContext().
|
static |
Definition at line 1956 of file OpenMPDialect.cpp.
References ArrayAttr(), and printBlockArgRegion().
|
static |
Definition at line 1942 of file OpenMPDialect.cpp.
References ArrayAttr(), and printBlockArgRegion().
|
static |
Definition at line 6133 of file OpenMPDialect.cpp.
References mlir::Region::front(), mlir::Block::getArgument(), mlir::Block::getNumArguments(), mlir::OpAsmPrinter::printRegion(), and mlir::OpAsmPrinter::printRegionArgument().
|
static |
Print Linear Clause.
linearSyms is only used by ops with a region, which print the linear clause with their entry block arguments.
Definition at line 521 of file OpenMPDialect.cpp.
References ArrayAttr().
|
static |
Definition at line 1999 of file OpenMPDialect.cpp.
References ArrayAttr(), and printBlockArgRegion().
|
static |
Definition at line 5220 of file OpenMPDialect.cpp.
|
static |
Definition at line 5070 of file OpenMPDialect.cpp.
|
static |
Definition at line 2646 of file OpenMPDialect.cpp.
References ArrayAttr().
|
static |
Definition at line 1002 of file OpenMPDialect.cpp.
References printGranularityClause().
|
static |
Definition at line 907 of file OpenMPDialect.cpp.
|
static |
Definition at line 1985 of file OpenMPDialect.cpp.
References ArrayAttr(), and printBlockArgRegion().
|
static |
Definition at line 1974 of file OpenMPDialect.cpp.
References ArrayAttr(), and printBlockArgRegion().
|
static |
Print schedule clause.
Definition at line 863 of file OpenMPDialect.cpp.
References mlir::Value::getType().
|
static |
Definition at line 2072 of file OpenMPDialect.cpp.
References emit().
Referenced by printAffinityClause().
|
static |
Prints a Synchronization Hint clause.
Definition at line 2393 of file OpenMPDialect.cpp.
|
static |
Definition at line 1924 of file OpenMPDialect.cpp.
References ArrayAttr(), and printBlockArgRegion().
|
static |
Definition at line 2019 of file OpenMPDialect.cpp.
References ArrayAttr(), and printBlockArgRegion().
|
static |
Print Uniform Clauses.
Definition at line 6027 of file OpenMPDialect.cpp.
|
static |
Definition at line 2031 of file OpenMPDialect.cpp.
References printBlockArgRegion().
| memberIdxs push_back | ( | ArrayAttr::get(parser.getContext(), values) | ) |
| return success | ( | ) |
Referenced by checkApplyeesNesting(), parseAffinityClause(), parseAllocateAndAllocator(), parseBlockArgClause(), parseBlockArgClause(), parseBlockArgClause(), parseBlockArgClause(), parseCaptureType(), parseClauseAttr(), parseClauseWithRegionArgs(), parseCopyprivate(), parseDynGroupprivateClause(), parseGranularityClause(), parseHeapAllocClause(), parseInReductionClause(), parseLinearClause(), parseLoopTransformClis(), parseOrderClause(), parseScheduleClause(), parseSplitIteratedList(), parseSynchronizationHint(), verifyAlignedClause(), verifyAlignment(), verifyCopyprivateVarList(), verifyDeclareTargetAttr(), verifyDependVarList(), verifyDynGroupprivateClause(), verifyLinearModifiers(), verifyLinearSyms(), verifyMapClause(), verifyMapInfoDefinedArgs(), verifyMapInfoForMapClause(), verifyNontemporalClause(), verifyNumTeamsClause(), verifyOrderedParent(), verifyPrivateVarList(), verifyPrivateVarsMapping(), verifyReductionModifiers(), verifyReductionVarList(), verifyScheduleModifiers(), and verifySynchronizationHint().
An omp.target in_reduction operand is captured by a map_entries entry when the entry's MapInfoOp var_ptr is the same SSA value, or another result of the same defining op. At this stage, exact identity can only be required for block arguments, which have no defining op. Flang emits hlfir.declare #0 for the in_reduction operand and #1 for the map var_ptr; these collapse to the same value after lowering, but that cannot be enforced here.
Definition at line 3030 of file OpenMPDialect.cpp.
References mlir::Value::getDefiningOp().
|
static |
Definition at line 593 of file OpenMPDialect.cpp.
References mlir::Operation::emitOpError(), and success().
| LogicalResult verifyAlignment | ( | Operation & | op, |
| std::optional< uint64_t > | alignment ) |
Verifies align clause in allocate directive.
Definition at line 5887 of file OpenMPDialect.cpp.
References mlir::Operation::emitError(), and success().
|
static |
Definition at line 665 of file OpenMPDialect.cpp.
|
static |
Verifies CopyPrivate Clause.
Definition at line 2195 of file OpenMPDialect.cpp.
References mlir::Operation::emitOpError(), mlir::SymbolTable::lookupNearestSymbolFrom(), and success().
Definition at line 348 of file OpenMPDialect.cpp.
References mlir::Operation::emitError(), mlir::Operation::emitOpError(), and success().
|
static |
Verifies Depend clause.
Definition at line 2328 of file OpenMPDialect.cpp.
References mlir::Operation::emitOpError(), and success().
|
static |
Definition at line 1066 of file OpenMPDialect.cpp.
References mlir::Operation::emitOpError(), and success().
|
static |
OpenMP 5.2, Section 5.4.6: "A linear-modifier may be specified as ref or uval only on a declare simd directive.
" Also verifies that modifier count matches variable count.
Definition at line 550 of file OpenMPDialect.cpp.
References mlir::Operation::emitOpError(), and success().
|
static |
Verifies that each linear variable has a linear privatizer.
Definition at line 3264 of file OpenMPDialect.cpp.
References mlir::SymbolTable::lookupNearestSymbolFrom(), and success().
|
static |
Definition at line 2770 of file OpenMPDialect.cpp.
References mlir::emitError(), mlir::Operation::emitOpError(), mlir::Operation::getLoc(), success(), and verifyMapInfoForMapClause().
|
static |
Definition at line 2839 of file OpenMPDialect.cpp.
References mlir::Operation::emitOpError(), and success().
|
static |
Definition at line 2698 of file OpenMPDialect.cpp.
References mlir::emitError(), mlir::Operation::getLoc(), mapTypeToBool(), and success().
Referenced by verifyMapClause().
|
static |
Definition at line 578 of file OpenMPDialect.cpp.
References mlir::Operation::emitOpError(), and success().
|
static |
Definition at line 3367 of file OpenMPDialect.cpp.
References mlir::Operation::emitError(), mlir::OperandRange::getType(), mlir::Value::getType(), and success().
|
static |
Definition at line 5339 of file OpenMPDialect.cpp.
References mlir::Operation::emitOpError(), mlir::Operation::getNumRegions(), mlir::Operation::getParentOfType(), mlir::Operation::getParentOp(), and success().
|
static |
Definition at line 3218 of file OpenMPDialect.cpp.
References mlir::SymbolTable::lookupNearestSymbolFrom(), and success().
|
static |
Definition at line 2817 of file OpenMPDialect.cpp.
References mlir::emitError(), and success().
|
static |
Verify the per-variable modifier list has one entry per reduction variable.
Definition at line 2094 of file OpenMPDialect.cpp.
References ArrayAttr(), mlir::Operation::emitOpError(), and success().
Referenced by verifyReductionVarList().
|
static |
Verifies Reduction Clause.
Definition at line 2105 of file OpenMPDialect.cpp.
References ArrayAttr(), mlir::Operation::emitError(), mlir::Operation::emitOpError(), mlir::Value::getType(), mlir::SymbolTable::lookupNearestSymbolFrom(), success(), and verifyReductionModifiers().
|
static |
Definition at line 760 of file OpenMPDialect.cpp.
References mlir::AsmParser::emitError(), mlir::AsmParser::getNameLoc(), and success().
Referenced by parseScheduleClause().
|
static |
Verifies a synchronization hint clause.
Definition at line 2424 of file OpenMPDialect.cpp.
References mlir::Operation::emitOpError(), and success().
| while | ( | succeeded(parser.parseOptionalComma()) | ) |
| do |
Definition at line 2626 of file OpenMPDialect.cpp.
| false |
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 ) )+ )` ) static ParseResult parseMapClause(OpAsmParser &parser, ClauseMapFlagsAttr &mapType) { ClauseMapFlags mapTypeBits = ClauseMapFlags::none; This simply verifies the correct keyword is read in, the keyword itself is stored inside of the operation auto parseTypeAndMod = [&]() -> ParseResult { StringRef mapTypeMod; if (parser.parseKeyword(&mapTypeMod)) return failure();
if (mapTypeMod == "always") mapTypeBits |= ClauseMapFlags::always;
if (mapTypeMod == "implicit") mapTypeBits |= ClauseMapFlags::implicit;
if (mapTypeMod == "ompx_hold") mapTypeBits |= ClauseMapFlags::ompx_hold;
if (mapTypeMod == "close") mapTypeBits |= ClauseMapFlags::close;
if (mapTypeMod == "present") mapTypeBits |= ClauseMapFlags::present;
if (mapTypeMod == "to") mapTypeBits |= ClauseMapFlags::to;
if (mapTypeMod == "from") mapTypeBits |= ClauseMapFlags::from;
if (mapTypeMod == "tofrom") mapTypeBits |= ClauseMapFlags::to | ClauseMapFlags::from;
if (mapTypeMod == "delete") mapTypeBits |= ClauseMapFlags::del;
if (mapTypeMod == "storage") mapTypeBits |= ClauseMapFlags::storage;
if (mapTypeMod == "return_param") mapTypeBits |= ClauseMapFlags::return_param;
if (mapTypeMod == "private") mapTypeBits |= ClauseMapFlags::priv;
if (mapTypeMod == "literal") mapTypeBits |= ClauseMapFlags::literal;
if (mapTypeMod == "attach") mapTypeBits |= ClauseMapFlags::attach;
if (mapTypeMod == "attach_always") mapTypeBits |= ClauseMapFlags::attach_always;
if (mapTypeMod == "attach_never") mapTypeBits |= ClauseMapFlags::attach_never;
if (mapTypeMod == "attach_auto") mapTypeBits |= ClauseMapFlags::attach_auto;
if (mapTypeMod == "ref_ptr") mapTypeBits |= ClauseMapFlags::ref_ptr;
if (mapTypeMod == "ref_ptee") mapTypeBits |= ClauseMapFlags::ref_ptee;
if (mapTypeMod == "is_device_ptr") mapTypeBits |= ClauseMapFlags::is_device_ptr;
if (mapTypeMod == "target_param") mapTypeBits |= ClauseMapFlags::target_param;
return success(); };
if (parser.parseCommaSeparatedList(parseTypeAndMod)) return failure();
mapType = parser.getBuilder().getAttr<mlir::omp::ClauseMapFlagsAttr>(mapTypeBits);
return success(); }
/ Prints a map_entries map type from its numeric value out into its string / format. static void printMapClause(OpAsmPrinter &p, Operation *op, ClauseMapFlagsAttr mapType) { llvm::SmallVector<std::string, 4> mapTypeStrs; ClauseMapFlags mapFlags = mapType.getValue();
handling of always, close, present placed at the beginning of the string to aid readability if (mapTypeToBool(mapFlags, ClauseMapFlags::always)) mapTypeStrs.push_back("always"); if (mapTypeToBool(mapFlags, ClauseMapFlags::implicit)) mapTypeStrs.push_back("implicit"); if (mapTypeToBool(mapFlags, ClauseMapFlags::ompx_hold)) mapTypeStrs.push_back("ompx_hold"); if (mapTypeToBool(mapFlags, ClauseMapFlags::close)) mapTypeStrs.push_back("close"); if (mapTypeToBool(mapFlags, ClauseMapFlags::present)) mapTypeStrs.push_back("present"); if (mapTypeToBool(mapFlags, ClauseMapFlags::target_param)) mapTypeStrs.push_back("target_param");
special handling of to/from/tofrom/delete and release/alloc, release + alloc are the abscense of one of the other flags, whereas tofrom requires both the to and from flag to be set. bool to = mapTypeToBool(mapFlags, ClauseMapFlags::to); bool from = mapTypeToBool(mapFlags, ClauseMapFlags::from);
if (to && from) mapTypeStrs.push_back("tofrom"); else if (from) mapTypeStrs.push_back("from"); else if (to) mapTypeStrs.push_back("to");
if (mapTypeToBool(mapFlags, ClauseMapFlags::del)) mapTypeStrs.push_back("delete"); if (mapTypeToBool(mapFlags, ClauseMapFlags::return_param)) mapTypeStrs.push_back("return_param"); if (mapTypeToBool(mapFlags, ClauseMapFlags::storage)) mapTypeStrs.push_back("storage"); if (mapTypeToBool(mapFlags, ClauseMapFlags::priv)) mapTypeStrs.push_back("private"); if (mapTypeToBool(mapFlags, ClauseMapFlags::literal)) mapTypeStrs.push_back("literal"); if (mapTypeToBool(mapFlags, ClauseMapFlags::attach)) mapTypeStrs.push_back("attach"); if (mapTypeToBool(mapFlags, ClauseMapFlags::attach_always)) mapTypeStrs.push_back("attach_always"); if (mapTypeToBool(mapFlags, ClauseMapFlags::attach_never)) mapTypeStrs.push_back("attach_never"); if (mapTypeToBool(mapFlags, ClauseMapFlags::attach_auto)) mapTypeStrs.push_back("attach_auto"); if (mapTypeToBool(mapFlags, ClauseMapFlags::ref_ptr)) mapTypeStrs.push_back("ref_ptr"); if (mapTypeToBool(mapFlags, ClauseMapFlags::ref_ptee)) mapTypeStrs.push_back("ref_ptee"); if (mapTypeToBool(mapFlags, ClauseMapFlags::is_device_ptr)) mapTypeStrs.push_back("is_device_ptr"); if (mapFlags == ClauseMapFlags::none) mapTypeStrs.push_back("none");
for (unsigned int i = 0; i < mapTypeStrs.size(); ++i) { p << mapTypeStrs[i]; if (i + 1 < mapTypeStrs.size()) { p << ", "; } } }
static ParseResult parseMembersIndex(OpAsmParser &parser, ArrayAttr &membersIdx) { SmallVector<Attribute> values, memberIdxs;
auto parseIndices = [&]() -> ParseResult { int64_t value; if (parser.parseInteger(value)) return failure(); values.push_back(IntegerAttr::get(parser.getBuilder().getIntegerType(64), APInt(64, value, /*isSigned=
Definition at line 2622 of file OpenMPDialect.cpp.
Referenced by mlir::Operation::CloneOptions::CloneOptions(), mlir::LLVM::detail::DebugTranslation::DebugTranslation(), mlir::sparse_tensor::ir_detail::DimLvlMap::DimLvlMap(), mlir::SideEffects::EffectInstance< Effect >::EffectInstance(), mlir::SideEffects::EffectInstance< Effect >::EffectInstance(), mlir::SideEffects::EffectInstance< Effect >::EffectInstance(), mlir::SideEffects::EffectInstance< Effect >::EffectInstance(), mlir::SideEffects::EffectInstance< Effect >::EffectInstance(), mlir::SideEffects::EffectInstance< Effect >::EffectInstance(), mlir::LLVM::detail::LLVMStructTypeStorage::Key::Key(), mlir::sparse_tensor::LatPoint::LatPoint(), mlir::pdll::Lexer::Lexer(), mlir::sparse_tensor::Merger::Merger(), mlir::detail::OperandStorage::OperandStorage(), mlir::OpPrintingFlags::OpPrintingFlags(), mlir::detail::PassOptions::Option< DataType, OptionParser >::Option(), mlir::detail::PassExecutionState::PassExecutionState(), mlir::PassManager::PassManager(), mlir::PassManager::PassManager(), mlir::PassPipelineCLParser::PassPipelineCLParser(), mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyRewritePatternSet::PyRewritePatternSet(), mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyTypeConverter::PyTypeConverter(), mlir::ShapedTypeComponents::ShapedTypeComponents(), mlir::presburger::Simplex::Simplex(), mlir::presburger::SimplexBase::SimplexBase(), mlir::spirv::detail::StructTypeStorage::StructTypeStorage(), mlir::spirv::detail::StructTypeStorage::StructTypeStorage(), and mlir::tosa::ValueKnowledge::ValueKnowledge().