namespace mlir::omp { struct AffinityClauseOps { ::llvm::SmallVector<::mlir::Value> iterated; ::llvm::SmallVector<::mlir::Value> affinityVars; }; struct AlignClauseOps { ::mlir::IntegerAttr align; }; struct AlignedClauseOps { ::llvm::SmallVector<::mlir::Value> alignedVars; ::llvm::SmallVector<::mlir::Attribute> alignments; }; struct AllocateClauseOps { ::llvm::SmallVector<::mlir::Value> allocateVars; ::llvm::SmallVector<::mlir::Value> allocatorVars; }; struct AllocatorClauseOps { ::mlir::Value allocator; }; struct BareClauseOps { ::mlir::UnitAttr bare; }; struct BindClauseOps { ::mlir::omp::ClauseBindKindAttr bindKind; }; struct CancelDirectiveNameClauseOps { ::mlir::omp::ClauseCancellationConstructTypeAttr cancelDirective; }; struct CollapseClauseOps { ::mlir::IntegerAttr collapseNumLoops; }; struct CopyprivateClauseOps { ::llvm::SmallVector<::mlir::Value> copyprivateVars; ::llvm::SmallVector<::mlir::Attribute> copyprivateSyms; }; struct CriticalNameClauseOps { ::mlir::StringAttr symName; }; struct DependClauseOps { ::llvm::SmallVector<::mlir::Attribute> dependKinds; ::llvm::SmallVector<::mlir::Value> dependVars; ::llvm::SmallVector<::mlir::Attribute> dependIteratedKinds; ::llvm::SmallVector<::mlir::Value> dependIterated; }; struct DetachClauseOps { ::mlir::Value eventHandle; }; struct DeviceClauseOps { ::mlir::Value device; }; struct DistScheduleClauseOps { ::mlir::UnitAttr distScheduleStatic; ::mlir::Value distScheduleChunkSize; }; struct DoacrossClauseOps { ::mlir::omp::ClauseDependAttr doacrossDependType; ::mlir::IntegerAttr doacrossNumLoops; ::llvm::SmallVector<::mlir::Value> doacrossDependVars; }; struct DynGroupprivateClauseOps { ::mlir::omp::AccessGroupModifierAttr dynGroupprivateAccessGroup; ::mlir::omp::FallbackModifierAttr dynGroupprivateFallback; ::mlir::Value dynGroupprivateSize; }; struct ExclusiveClauseOps { ::llvm::SmallVector<::mlir::Value> exclusiveVars; }; struct FilterClauseOps { ::mlir::Value filteredThreadId; }; struct FinalClauseOps { ::mlir::Value final; }; struct GrainsizeClauseOps { ::mlir::omp::ClauseGrainsizeTypeAttr grainsizeMod; ::mlir::Value grainsize; }; struct HasDeviceAddrClauseOps { ::llvm::SmallVector<::mlir::Value> hasDeviceAddrVars; }; struct HeapAllocClauseOps { ::mlir::TypeAttr inType; ::mlir::StringAttr uniqName; ::mlir::StringAttr bindcName; ::llvm::SmallVector<::mlir::Value> typeparams; ::llvm::SmallVector<::mlir::Value> shape; }; struct HintClauseOps { ::mlir::IntegerAttr hint; }; struct HostEvalClauseOps { ::llvm::SmallVector<::mlir::Value> hostEvalVars; }; struct IfClauseOps { ::mlir::Value ifExpr; }; struct InReductionClauseOps { ::llvm::SmallVector<::mlir::Value> inReductionVars; ::llvm::SmallVector inReductionByref; ::llvm::SmallVector<::mlir::Attribute> inReductionSyms; }; struct InbranchClauseOps { ::mlir::UnitAttr inbranch; }; struct InclusiveClauseOps { ::llvm::SmallVector<::mlir::Value> inclusiveVars; }; struct IsDevicePtrClauseOps { ::llvm::SmallVector<::mlir::Value> isDevicePtrVars; }; struct LinearClauseOps { ::llvm::SmallVector<::mlir::Value> linearVars; ::llvm::SmallVector<::mlir::Value> linearStepVars; ::mlir::ArrayAttr linearVarTypes; ::mlir::ArrayAttr linearModifiers; }; struct LoopRelatedClauseOps { ::llvm::SmallVector<::mlir::Value> loopLowerBounds; ::llvm::SmallVector<::mlir::Value> loopUpperBounds; ::llvm::SmallVector<::mlir::Value> loopSteps; ::mlir::UnitAttr loopInclusive; }; struct LooprangeClauseOps { ::mlir::IntegerAttr first; ::mlir::IntegerAttr count; }; struct MapClauseOps { ::llvm::SmallVector<::mlir::Value> mapVars; ::llvm::SmallVector<::mlir::Value> mapIterated; }; struct MemAllocationSizeClauseOps { ::mlir::TypeAttr memElemType; ::mlir::Value memArraySize; ::mlir::IntegerAttr memAlignment; }; struct MemoryOrderClauseOps { ::mlir::omp::ClauseMemoryOrderKindAttr memoryOrder; }; struct MergeableClauseOps { ::mlir::UnitAttr mergeable; }; struct NogroupClauseOps { ::mlir::UnitAttr nogroup; }; struct NontemporalClauseOps { ::llvm::SmallVector<::mlir::Value> nontemporalVars; }; struct NotinbranchClauseOps { ::mlir::UnitAttr notinbranch; }; struct NowaitClauseOps { ::mlir::UnitAttr nowait; }; struct NumTasksClauseOps { ::mlir::omp::ClauseNumTasksTypeAttr numTasksMod; ::mlir::Value numTasks; }; struct NumTeamsClauseOps { ::mlir::Value numTeamsLower; ::llvm::SmallVector<::mlir::Value> numTeamsUpperVars; }; struct NumThreadsClauseOps { ::llvm::SmallVector<::mlir::Value> numThreadsVars; }; struct OrderClauseOps { ::mlir::omp::ClauseOrderKindAttr order; ::mlir::omp::OrderModifierAttr orderMod; }; struct OrderedClauseOps { ::mlir::IntegerAttr ordered; }; struct ParallelizationLevelClauseOps { ::mlir::UnitAttr parLevelSimd; }; struct PriorityClauseOps { ::mlir::Value priority; }; struct PrivateClauseOps { ::llvm::SmallVector<::mlir::Value> privateVars; ::llvm::SmallVector<::mlir::Attribute> privateSyms; ::mlir::UnitAttr privateNeedsBarrier; }; struct ProcBindClauseOps { ::mlir::omp::ClauseProcBindKindAttr procBindKind; }; struct ReductionClauseOps { ::mlir::omp::ReductionModifierAttr reductionMod; ::llvm::SmallVector<::mlir::Value> reductionVars; ::llvm::SmallVector reductionByref; ::llvm::SmallVector<::mlir::Attribute> reductionSyms; }; struct SafelenClauseOps { ::mlir::IntegerAttr safelen; }; struct ScheduleClauseOps { ::mlir::omp::ClauseScheduleKindAttr scheduleKind; ::mlir::Value scheduleChunk; ::mlir::omp::ScheduleModifierAttr scheduleMod; ::mlir::UnitAttr scheduleSimd; }; struct SimdlenClauseOps { ::mlir::IntegerAttr simdlen; }; struct SizesClauseOps { ::llvm::SmallVector<::mlir::Value> sizes; }; struct TaskReductionClauseOps { ::llvm::SmallVector<::mlir::Value> taskReductionVars; ::llvm::SmallVector taskReductionByref; ::llvm::SmallVector<::mlir::Attribute> taskReductionSyms; }; struct ThreadLimitClauseOps { ::llvm::SmallVector<::mlir::Value> threadLimitVars; }; struct TileSizesClauseOps { ::llvm::SmallVector tileSizes; }; struct UniformClauseOps { ::llvm::SmallVector<::mlir::Value> uniformVars; }; struct UntiedClauseOps { ::mlir::UnitAttr untied; }; struct UseDeviceAddrClauseOps { ::llvm::SmallVector<::mlir::Value> useDeviceAddrVars; }; struct UseDevicePtrClauseOps { ::llvm::SmallVector<::mlir::Value> useDevicePtrVars; }; namespace detail { template struct Clauses : public Mixins... {}; } // namespace detail using AffinityEntryOperands = detail::Clauses<>; using AllocSharedMemOperands = detail::Clauses; using AllocateDirOperands = detail::Clauses; using AllocateFreeOperands = detail::Clauses; using AtomicCaptureOperands = detail::Clauses; using AtomicCompareOperands = detail::Clauses; using AtomicReadOperands = detail::Clauses; using AtomicUpdateOperands = detail::Clauses; using AtomicWriteOperands = detail::Clauses; using BarrierOperands = detail::Clauses<>; using CancelOperands = detail::Clauses; using CancellationPointOperands = detail::Clauses; using CanonicalLoopOperands = detail::Clauses<>; using CriticalDeclareOperands = detail::Clauses; using CriticalOperands = detail::Clauses<>; using DeclareMapperInfoOperands = detail::Clauses; using DeclareMapperOperands = detail::Clauses<>; using DeclareReductionOperands = detail::Clauses<>; using DeclareSimdOperands = detail::Clauses; using DistributeOperands = detail::Clauses; using FlushOperands = detail::Clauses<>; using FreeSharedMemOperands = detail::Clauses; using FuseOperands = detail::Clauses; using GroupprivateOperands = detail::Clauses<>; using IteratorOperands = detail::Clauses; using LoopNestOperands = detail::Clauses; using LoopOperands = detail::Clauses; using MapBoundsOperands = detail::Clauses<>; using MapInfoOperands = detail::Clauses<>; using MaskedOperands = detail::Clauses; using MasterOperands = detail::Clauses<>; using NewCliOperands = detail::Clauses<>; using OrderedOperands = detail::Clauses; using OrderedRegionOperands = detail::Clauses; using ParallelOperands = detail::Clauses; using PrivateClauseOperands = detail::Clauses<>; using ScanOperands = detail::Clauses; using ScopeOperands = detail::Clauses; using SectionOperands = detail::Clauses<>; using SectionsOperands = detail::Clauses; using SimdOperands = detail::Clauses; using SingleOperands = detail::Clauses; using TargetAllocMemOperands = detail::Clauses; using TargetDataOperands = detail::Clauses; using TargetEnterDataOperands = detail::Clauses; using TargetExitDataOperands = detail::Clauses; using TargetFreeMemOperands = detail::Clauses<>; using TargetOperands = detail::Clauses; using TargetUpdateOperands = detail::Clauses; using TaskOperands = detail::Clauses; using TaskgroupOperands = detail::Clauses; using TaskloopContextOperands = detail::Clauses; using TaskloopWrapperOperands = detail::Clauses<>; using TaskwaitOperands = detail::Clauses; using TaskyieldOperands = detail::Clauses<>; using TeamsOperands = detail::Clauses; using TerminatorOperands = detail::Clauses<>; using ThreadprivateOperands = detail::Clauses<>; using TileOperands = detail::Clauses; using UnrollHeuristicOperands = detail::Clauses<>; using WorkdistributeOperands = detail::Clauses<>; using WorkshareLoopWrapperOperands = detail::Clauses<>; using WorkshareOperands = detail::Clauses; using WsloopOperands = detail::Clauses; using YieldOperands = detail::Clauses<>; } // namespace mlir::omp