12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766 |
- //===-- OMP.td - OpenMP directive definition file ----------*- tablegen -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // This is the definition file for OpenMP directives and clauses.
- //
- //===----------------------------------------------------------------------===//
- include "llvm/Frontend/Directive/DirectiveBase.td"
- //===----------------------------------------------------------------------===//
- // Definition of general OpenMP information
- //===----------------------------------------------------------------------===//
- def OpenMP : DirectiveLanguage {
- let name = "OpenMP";
- let cppNamespace = "omp"; // final namespace will be llvm::omp
- let directivePrefix = "OMPD_";
- let clausePrefix = "OMPC_";
- let makeEnumAvailableInNamespace = true;
- let enableBitmaskEnumInNamespace = true;
- let clauseEnumSetClass = "OmpClauseSet";
- let flangClauseBaseClass = "OmpClause";
- }
- //===----------------------------------------------------------------------===//
- // Definition of OpenMP clauses
- //===----------------------------------------------------------------------===//
- def OMPC_Allocator : Clause<"allocator"> {
- let clangClass = "OMPAllocatorClause";
- let flangClass = "ScalarIntExpr";
- }
- def OMPC_If : Clause<"if"> {
- let clangClass = "OMPIfClause";
- let flangClass = "OmpIfClause";
- }
- def OMPC_Final : Clause<"final"> {
- let clangClass = "OMPFinalClause";
- let flangClass = "ScalarLogicalExpr";
- }
- def OMPC_NumThreads : Clause<"num_threads"> {
- let clangClass = "OMPNumThreadsClause";
- let flangClass = "ScalarIntExpr";
- }
- def OMPC_SafeLen : Clause<"safelen"> {
- let clangClass = "OMPSafelenClause";
- let flangClass = "ScalarIntConstantExpr";
- }
- def OMPC_SimdLen : Clause<"simdlen"> {
- let clangClass = "OMPSimdlenClause";
- let flangClass = "ScalarIntConstantExpr";
- }
- def OMPC_Collapse : Clause<"collapse"> {
- let clangClass = "OMPCollapseClause";
- let flangClass = "ScalarIntConstantExpr";
- }
- def OMPC_Default : Clause<"default"> {
- let clangClass = "OMPDefaultClause";
- let flangClass = "OmpDefaultClause";
- }
- def OMPC_Private : Clause<"private"> {
- let clangClass = "OMPPrivateClause";
- let flangClass = "OmpObjectList";
- }
- def OMPC_Sizes: Clause<"sizes"> { let clangClass = "OMPSizesClause"; }
- def OMPC_Full: Clause<"full"> { let clangClass = "OMPFullClause"; }
- def OMPC_Partial: Clause<"partial"> { let clangClass = "OMPPartialClause"; }
- def OMPC_FirstPrivate : Clause<"firstprivate"> {
- let clangClass = "OMPFirstprivateClause";
- let flangClass = "OmpObjectList";
- }
- def OMPC_LastPrivate : Clause<"lastprivate"> {
- let clangClass = "OMPLastprivateClause";
- let flangClass = "OmpObjectList";
- }
- def OMPC_Shared : Clause<"shared"> {
- let clangClass = "OMPSharedClause";
- let flangClass = "OmpObjectList";
- }
- def OMPC_Reduction : Clause<"reduction"> {
- let clangClass = "OMPReductionClause";
- let flangClass = "OmpReductionClause";
- }
- def OMPC_Linear : Clause<"linear"> {
- let clangClass = "OMPLinearClause";
- let flangClass = "OmpLinearClause";
- }
- def OMPC_Aligned : Clause<"aligned"> {
- let clangClass = "OMPAlignedClause";
- let flangClass = "OmpAlignedClause";
- }
- def OMPC_Copyin : Clause<"copyin"> {
- let clangClass = "OMPCopyinClause";
- let flangClass = "OmpObjectList";
- }
- def OMPC_CopyPrivate : Clause<"copyprivate"> {
- let clangClass = "OMPCopyprivateClause";
- let flangClass = "OmpObjectList";
- }
- def OMP_PROC_BIND_master : ClauseVal<"master",2,1> {}
- def OMP_PROC_BIND_close : ClauseVal<"close",3,1> {}
- def OMP_PROC_BIND_spread : ClauseVal<"spread",4,1> {}
- def OMP_PROC_BIND_primary : ClauseVal<"primary",5,1> {}
- def OMP_PROC_BIND_default : ClauseVal<"default",6,0> {}
- def OMP_PROC_BIND_unknown : ClauseVal<"unknown",7,0> { let isDefault = true; }
- def OMPC_ProcBind : Clause<"proc_bind"> {
- let clangClass = "OMPProcBindClause";
- let flangClass = "OmpProcBindClause";
- let enumClauseValue = "ProcBindKind";
- let allowedClauseValues = [
- OMP_PROC_BIND_primary,
- OMP_PROC_BIND_master,
- OMP_PROC_BIND_close,
- OMP_PROC_BIND_spread,
- OMP_PROC_BIND_default,
- OMP_PROC_BIND_unknown
- ];
- }
- // static and auto are C++ keywords so need a capital to disambiguate.
- def OMP_SCHEDULE_Static : ClauseVal<"Static", 2, 1> {}
- def OMP_SCHEDULE_Dynamic : ClauseVal<"Dynamic", 3, 1> {}
- def OMP_SCHEDULE_Guided : ClauseVal<"Guided", 4, 1> {}
- def OMP_SCHEDULE_Auto : ClauseVal<"Auto", 5, 1> {}
- def OMP_SCHEDULE_Runtime : ClauseVal<"Runtime", 6, 1> {}
- def OMP_SCHEDULE_Default : ClauseVal<"Default", 7, 0> { let isDefault = 1; }
- def OMPC_Schedule : Clause<"schedule"> {
- let clangClass = "OMPScheduleClause";
- let flangClass = "OmpScheduleClause";
- let enumClauseValue = "ScheduleKind";
- let allowedClauseValues = [
- OMP_SCHEDULE_Static,
- OMP_SCHEDULE_Dynamic,
- OMP_SCHEDULE_Guided,
- OMP_SCHEDULE_Auto,
- OMP_SCHEDULE_Runtime,
- OMP_SCHEDULE_Default
- ];
- }
- def OMP_MEMORY_ORDER_SeqCst : ClauseVal<"seq_cst", 1, 1> {}
- def OMP_MEMORY_ORDER_AcqRel : ClauseVal<"acq_rel", 2, 1> {}
- def OMP_MEMORY_ORDER_Acquire : ClauseVal<"acquire", 3, 1> {}
- def OMP_MEMORY_ORDER_Release : ClauseVal<"release", 4, 1> {}
- def OMP_MEMORY_ORDER_Relaxed : ClauseVal<"relaxed", 5, 1> {}
- def OMP_MEMORY_ORDER_Default : ClauseVal<"default", 6, 0> {
- let isDefault = 1;
- }
- def OMPC_MemoryOrder : Clause<"memory_order"> {
- let enumClauseValue = "MemoryOrderKind";
- let allowedClauseValues = [
- OMP_MEMORY_ORDER_SeqCst,
- OMP_MEMORY_ORDER_AcqRel,
- OMP_MEMORY_ORDER_Acquire,
- OMP_MEMORY_ORDER_Release,
- OMP_MEMORY_ORDER_Relaxed,
- OMP_MEMORY_ORDER_Default
- ];
- }
- def OMPC_Ordered : Clause<"ordered"> {
- let clangClass = "OMPOrderedClause";
- let flangClass = "ScalarIntConstantExpr";
- let isValueOptional = true;
- }
- def OMPC_NoWait : Clause<"nowait"> {
- let clangClass = "OMPNowaitClause";
- }
- def OMPC_Untied : Clause<"untied"> { let clangClass = "OMPUntiedClause"; }
- def OMPC_Mergeable : Clause<"mergeable"> {
- let clangClass = "OMPMergeableClause";
- }
- def OMPC_Read : Clause<"read"> { let clangClass = "OMPReadClause"; }
- def OMPC_Write : Clause<"write"> { let clangClass = "OMPWriteClause"; }
- def OMPC_Update : Clause<"update"> { let clangClass = "OMPUpdateClause"; }
- def OMPC_Capture : Clause<"capture"> { let clangClass = "OMPCaptureClause"; }
- def OMPC_Compare : Clause<"compare"> { let clangClass = "OMPCompareClause"; }
- def OMPC_SeqCst : Clause<"seq_cst"> { let clangClass = "OMPSeqCstClause"; }
- def OMPC_AcqRel : Clause<"acq_rel"> { let clangClass = "OMPAcqRelClause"; }
- def OMPC_Acquire : Clause<"acquire"> { let clangClass = "OMPAcquireClause"; }
- def OMPC_Release : Clause<"release"> { let clangClass = "OMPReleaseClause"; }
- def OMPC_Relaxed : Clause<"relaxed"> { let clangClass = "OMPRelaxedClause"; }
- def OMPC_Depend : Clause<"depend"> {
- let clangClass = "OMPDependClause";
- let flangClass = "OmpDependClause";
- }
- def OMPC_Device : Clause<"device"> {
- let clangClass = "OMPDeviceClause";
- let flangClass = "ScalarIntExpr";
- }
- def OMPC_Threads : Clause<"threads"> { let clangClass = "OMPThreadsClause"; }
- def OMPC_Simd : Clause<"simd"> { let clangClass = "OMPSIMDClause"; }
- def OMPC_Map : Clause<"map"> {
- let clangClass = "OMPMapClause";
- let flangClass = "OmpMapClause";
- }
- def OMPC_NumTeams : Clause<"num_teams"> {
- let clangClass = "OMPNumTeamsClause";
- let flangClass = "ScalarIntExpr";
- }
- def OMPC_ThreadLimit : Clause<"thread_limit"> {
- let clangClass = "OMPThreadLimitClause";
- let flangClass = "ScalarIntExpr";
- }
- def OMPC_Priority : Clause<"priority"> {
- let clangClass = "OMPPriorityClause";
- let flangClass = "ScalarIntExpr";
- }
- def OMPC_GrainSize : Clause<"grainsize"> {
- let clangClass = "OMPGrainsizeClause";
- let flangClass = "ScalarIntExpr";
- }
- def OMPC_NoGroup : Clause<"nogroup"> {
- let clangClass = "OMPNogroupClause";
- }
- def OMPC_NumTasks : Clause<"num_tasks"> {
- let clangClass = "OMPNumTasksClause";
- let flangClass = "ScalarIntExpr";
- }
- def OMPC_Hint : Clause<"hint"> {
- let clangClass = "OMPHintClause";
- let flangClass = "ConstantExpr";
- }
- def OMPC_DistSchedule : Clause<"dist_schedule"> {
- let clangClass = "OMPDistScheduleClause";
- let flangClass = "ScalarIntExpr";
- let isValueOptional = true;
- }
- def OMPC_DefaultMap : Clause<"defaultmap"> {
- let clangClass = "OMPDefaultmapClause";
- let flangClass = "OmpDefaultmapClause";
- }
- def OMPC_To : Clause<"to"> {
- let clangClass = "OMPToClause";
- let flangClass = "OmpObjectList";
- }
- def OMPC_From : Clause<"from"> {
- let clangClass = "OMPFromClause";
- let flangClass = "OmpObjectList";
- }
- def OMPC_UseDevicePtr : Clause<"use_device_ptr"> {
- let clangClass = "OMPUseDevicePtrClause";
- let flangClass = "Name";
- let isValueList = true;
- }
- def OMPC_IsDevicePtr : Clause<"is_device_ptr"> {
- let clangClass = "OMPIsDevicePtrClause";
- let flangClass = "Name";
- let isValueList = true;
- }
- def OMPC_TaskReduction : Clause<"task_reduction"> {
- let clangClass = "OMPTaskReductionClause";
- let flangClass = "OmpReductionClause";
- }
- def OMPC_InReduction : Clause<"in_reduction"> {
- let clangClass = "OMPInReductionClause";
- }
- def OMPC_UnifiedAddress : Clause<"unified_address"> {
- let clangClass = "OMPUnifiedAddressClause";
- }
- def OMPC_UnifiedSharedMemory : Clause<"unified_shared_memory"> {
- let clangClass = "OMPUnifiedSharedMemoryClause";
- }
- def OMPC_ReverseOffload : Clause<"reverse_offload"> {
- let clangClass = "OMPReverseOffloadClause";
- }
- def OMPC_DynamicAllocators : Clause<"dynamic_allocators"> {
- let clangClass = "OMPDynamicAllocatorsClause";
- }
- def OMPC_AtomicDefaultMemOrder : Clause<"atomic_default_mem_order"> {
- let clangClass = "OMPAtomicDefaultMemOrderClause";
- }
- def OMPC_Allocate : Clause<"allocate"> {
- let clangClass = "OMPAllocateClause";
- let flangClass = "OmpAllocateClause";
- }
- def OMPC_NonTemporal : Clause<"nontemporal"> {
- let clangClass = "OMPNontemporalClause";
- let flangClass = "Name";
- let isValueList = true;
- }
- def OMP_ORDER_concurrent : ClauseVal<"concurrent",1,1> {}
- def OMP_ORDER_unknown : ClauseVal<"unknown",2,0> { let isDefault = 1; }
- def OMPC_Order : Clause<"order"> {
- let clangClass = "OMPOrderClause";
- let enumClauseValue = "OrderKind";
- let allowedClauseValues = [
- OMP_ORDER_unknown,
- OMP_ORDER_concurrent
- ];
- }
- def OMPC_Init : Clause<"init"> {
- let clangClass = "OMPInitClause";
- }
- def OMPC_Use : Clause<"use"> {
- let clangClass = "OMPUseClause";
- }
- def OMPC_Destroy : Clause<"destroy"> {
- let clangClass = "OMPDestroyClause";
- }
- def OMPC_Novariants : Clause<"novariants"> {
- let clangClass = "OMPNovariantsClause";
- let flangClass = "ScalarLogicalExpr";
- }
- def OMPC_Nocontext : Clause<"nocontext"> {
- let clangClass = "OMPNocontextClause";
- let flangClass = "ScalarLogicalExpr";
- }
- def OMPC_Detach : Clause<"detach"> {
- let clangClass = "OMPDetachClause";
- }
- def OMPC_Inclusive : Clause<"inclusive"> {
- let clangClass = "OMPInclusiveClause";
- }
- def OMPC_Exclusive : Clause<"exclusive"> {
- let clangClass = "OMPExclusiveClause";
- }
- def OMPC_UsesAllocators : Clause<"uses_allocators"> {
- let clangClass = "OMPUsesAllocatorsClause";
- }
- def OMPC_Affinity : Clause<"affinity"> {
- let clangClass = "OMPAffinityClause";
- }
- def OMPC_UseDeviceAddr : Clause<"use_device_addr"> {
- let clangClass = "OMPUseDeviceAddrClause";
- }
- def OMPC_Uniform : Clause<"uniform"> {
- let flangClass = "Name";
- let isValueList = true;
- }
- def OMPC_DeviceType : Clause<"device_type"> {}
- def OMPC_Match : Clause<"match"> {}
- def OMPC_AdjustArgs : Clause<"adjust_args"> { }
- def OMPC_AppendArgs : Clause<"append_args"> { }
- def OMPC_Depobj : Clause<"depobj"> {
- let clangClass = "OMPDepobjClause";
- let isImplicit = true;
- }
- def OMPC_Flush : Clause<"flush"> {
- let clangClass = "OMPFlushClause";
- let isImplicit = true;
- }
- def OMPC_ThreadPrivate : Clause<"threadprivate"> {
- let alternativeName = "threadprivate or thread local";
- let isImplicit = true;
- }
- def OMPC_Unknown : Clause<"unknown"> {
- let isImplicit = true;
- let isDefault = true;
- }
- def OMPC_Link : Clause<"link"> {
- let flangClass = "OmpObjectList";
- }
- def OMPC_Indirect : Clause<"indirect"> {}
- def OMPC_Inbranch : Clause<"inbranch"> {}
- def OMPC_Notinbranch : Clause<"notinbranch"> {}
- def OMPC_Filter : Clause<"filter"> {
- let clangClass = "OMPFilterClause";
- let flangClass = "ScalarIntExpr";
- }
- def OMPC_Align : Clause<"align"> {
- let clangClass = "OMPAlignClause";
- }
- def OMPC_When: Clause<"when"> {}
- def OMPC_Bind : Clause<"bind"> {
- let clangClass = "OMPBindClause";
- }
- //===----------------------------------------------------------------------===//
- // Definition of OpenMP directives
- //===----------------------------------------------------------------------===//
- def OMP_ThreadPrivate : Directive<"threadprivate"> {}
- def OMP_Parallel : Directive<"parallel"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Allocate>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- ];
- }
- def OMP_Task : Directive<"task"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Untied>,
- VersionedClause<OMPC_Mergeable>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Detach, 50>,
- VersionedClause<OMPC_Affinity, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_Priority>
- ];
- }
- def OMP_Simd : Directive<"simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_If, 50>,
- ];
- }
- def OMP_Tile : Directive<"tile"> {
- let allowedOnceClauses = [
- VersionedClause<OMPC_Sizes, 51>,
- ];
- }
- def OMP_Unroll : Directive<"unroll"> {
- let allowedOnceClauses = [
- VersionedClause<OMPC_Full, 51>,
- VersionedClause<OMPC_Partial, 51>,
- ];
- }
- def OMP_For : Directive<"for"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Order, 50>
- ];
- }
- def OMP_Do : Directive<"do"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Reduction>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_NoWait>
- ];
- }
- def OMP_Sections : Directive<"sections"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Allocate>
- ];
- }
- def OMP_Section : Directive<"section"> {}
- def OMP_Single : Directive<"single"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_CopyPrivate>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Allocate>
- ];
- }
- def OMP_Master : Directive<"master"> {}
- def OMP_Critical : Directive<"critical"> {
- let allowedClauses = [
- VersionedClause<OMPC_Hint>
- ];
- }
- def OMP_TaskYield : Directive<"taskyield"> {}
- def OMP_Barrier : Directive<"barrier"> {}
- def OMP_TaskWait : Directive<"taskwait"> {
- let allowedClauses = [
- VersionedClause<OMPC_Depend, 50>
- ];
- }
- def OMP_TaskGroup : Directive<"taskgroup"> {
- let allowedClauses = [
- VersionedClause<OMPC_TaskReduction, 50>,
- VersionedClause<OMPC_Allocate, 50>
- ];
- }
- def OMP_Flush : Directive<"flush"> {
- let allowedOnceClauses = [
- VersionedClause<OMPC_AcqRel, 50>,
- VersionedClause<OMPC_Acquire, 50>,
- VersionedClause<OMPC_Release, 50>,
- // TODO This should ne `none` instead. Comment carried over from
- // OMPKinds.def.
- VersionedClause<OMPC_Flush>
- ];
- }
- def OMP_Ordered : Directive<"ordered"> {
- let allowedClauses = [
- VersionedClause<OMPC_Depend>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Threads>,
- VersionedClause<OMPC_Simd>
- ];
- }
- def OMP_Atomic : Directive<"atomic"> {
- let allowedClauses = [
- VersionedClause<OMPC_Read>,
- VersionedClause<OMPC_Write>,
- VersionedClause<OMPC_Update>,
- VersionedClause<OMPC_Capture>,
- VersionedClause<OMPC_Compare, 51>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_SeqCst>,
- VersionedClause<OMPC_AcqRel, 50>,
- VersionedClause<OMPC_Acquire, 50>,
- VersionedClause<OMPC_Release, 50>,
- VersionedClause<OMPC_Relaxed, 50>,
- VersionedClause<OMPC_Hint, 50>
- ];
- }
- def OMP_Target : Directive<"target"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_NoWait>
- ];
- }
- def OMP_Teams : Directive<"teams"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>
- ];
- }
- def OMP_Cancel : Directive<"cancel"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>
- ];
- }
- def OMP_Requires : Directive<"requires"> {
- let allowedClauses = [
- VersionedClause<OMPC_UnifiedAddress>,
- VersionedClause<OMPC_UnifiedSharedMemory>,
- VersionedClause<OMPC_ReverseOffload>,
- VersionedClause<OMPC_DynamicAllocators>,
- VersionedClause<OMPC_AtomicDefaultMemOrder>
- ];
- }
- def OMP_TargetData : Directive<"target data"> {
- let allowedClauses = [
- VersionedClause<OMPC_UseDevicePtr>,
- VersionedClause<OMPC_UseDeviceAddr, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_If>
- ];
- let requiredClauses = [
- VersionedClause<OMPC_Map>
- ];
- }
- def OMP_TargetEnterData : Directive<"target enter data"> {
- let allowedClauses = [
- VersionedClause<OMPC_Depend>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_NoWait>
- ];
- let requiredClauses = [
- VersionedClause<OMPC_Map>
- ];
- }
- def OMP_TargetExitData : Directive<"target exit data"> {
- let allowedClauses = [
- VersionedClause<OMPC_Depend>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NoWait>
- ];
- let requiredClauses = [
- VersionedClause<OMPC_Map>
- ];
- }
- def OMP_TargetParallel : Directive<"target parallel"> {
- let allowedClauses = [
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>
- ];
- }
- def OMP_TargetParallelFor : Directive<"target parallel for"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- }
- def OMP_TargetParallelDo : Directive<"target parallel do"> {
- let allowedClauses = [
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Allocator>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_UsesAllocators>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Copyin>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_NoWait>
- ];
- }
- def OMP_TargetUpdate : Directive<"target update"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_To>,
- VersionedClause<OMPC_From>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Depend>
- ];
- }
- def OMP_ParallelFor : Directive<"parallel for"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Order, 50>
- ];
- }
- def OMP_ParallelDo : Directive<"parallel do"> {
- let allowedClauses = [
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Collapse>
- ];
- }
- def OMP_ParallelForSimd : Directive<"parallel for simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>
- ];
- }
- def OMP_ParallelDoSimd : Directive<"parallel do simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal>,
- VersionedClause<OMPC_Order>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>
- ];
- }
- def OMP_ParallelMaster : Directive<"parallel master"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Allocate>
- ];
- }
- def OMP_ParallelSections : Directive<"parallel sections"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Allocate>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_NumThreads>
- ];
- }
- def OMP_ForSimd : Directive<"for simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_If, 50>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>,
- ];
- }
- def OMP_DoSimd : Directive<"do simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Reduction>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_NoWait>
- ];
- }
- def OMP_CancellationPoint : Directive<"cancellation point"> {}
- def OMP_DeclareReduction : Directive<"declare reduction"> {}
- def OMP_DeclareMapper : Directive<"declare mapper"> {
- let allowedClauses = [
- VersionedClause<OMPC_Map>
- ];
- }
- def OMP_DeclareSimd : Directive<"declare simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Uniform>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_SimdLen>
- ];
- let allowedExclusiveClauses = [
- VersionedClause<OMPC_Inbranch>,
- VersionedClause<OMPC_Notinbranch>
- ];
- }
- def OMP_TaskLoop : Directive<"taskloop"> {
- let allowedClauses = [
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Untied>,
- VersionedClause<OMPC_Mergeable>,
- VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_Allocate>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_Priority>,
- ];
- let allowedExclusiveClauses = [
- VersionedClause<OMPC_GrainSize>,
- VersionedClause<OMPC_NumTasks>
- ];
- }
- def OMP_TaskLoopSimd : Directive<"taskloop simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Mergeable>,
- VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Untied>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_Priority>
- ];
- let allowedExclusiveClauses = [
- VersionedClause<OMPC_GrainSize>,
- VersionedClause<OMPC_NumTasks>
- ];
- }
- def OMP_Distribute : Directive<"distribute"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Allocate>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>
- ];
- }
- def OMP_BeginDeclareTarget : Directive<"begin declare target"> {
- let allowedClauses = [
- VersionedClause<OMPC_To>,
- VersionedClause<OMPC_Link>,
- VersionedClause<OMPC_DeviceType>,
- VersionedClause<OMPC_Indirect>
- ];
- }
- def OMP_DeclareTarget : Directive<"declare target"> {
- let allowedClauses = [
- VersionedClause<OMPC_To>,
- VersionedClause<OMPC_Link>,
- VersionedClause<OMPC_Indirect>
- ];
- }
- def OMP_EndDeclareTarget : Directive<"end declare target"> {}
- def OMP_DistributeParallelFor : Directive<"distribute parallel for"> {
- let allowedClauses = [
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Order, 50>
- ];
- }
- def OMP_DistributeParallelDo : Directive<"distribute parallel do"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Linear>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Ordered>
- ];
- }
- def OMP_DistributeParallelForSimd : Directive<"distribute parallel for simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>
- ];
- }
- def OMP_DistributeParallelDoSimd : Directive<"distribute parallel do simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal>,
- VersionedClause<OMPC_Order>
- ];
- }
- def OMP_DistributeSimd : Directive<"distribute simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_If, 50>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>
- ];
- }
- def OMP_TargetParallelForSimd : Directive<"target parallel for simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- }
- def OMP_TargetParallelDoSimd : Directive<"target parallel do simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_UsesAllocators>
- ];
- }
- def OMP_TargetSimd : Directive<"target simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_Schedule>
- ];
- }
- def OMP_TeamsDistribute : Directive<"teams distribute"> {
- let allowedClauses = [
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_Allocate>
- ];
- }
- def OMP_TeamsDistributeSimd : Directive<"teams distribute simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_If, 50>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_ThreadLimit>
- ];
- }
- def OMP_TeamsDistributeParallelForSimd :
- Directive<"teams distribute parallel for simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>
- ];
- }
- def OMP_TeamsDistributeParallelDoSimd :
- Directive<"teams distribute parallel do simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_NonTemporal>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_If>,
- ];
- }
- def OMP_TeamsDistributeParallelFor :
- Directive<"teams distribute parallel for"> {
- let allowedClauses = [
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Order, 50>
- ];
- }
- def OMP_TeamsDistributeParallelDo :
- Directive<"teams distribute parallel do"> {
- let allowedClauses = [
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Linear>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>
- ];
- }
- def OMP_TargetTeams : Directive<"target teams"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_UsesAllocators, 50>,
- VersionedClause<OMPC_Shared>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>
- ];
- }
- def OMP_TargetTeamsDistribute : Directive<"target teams distribute"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_UsesAllocators, 50>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_LastPrivate>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>
- ];
- }
- def OMP_TargetTeamsDistributeParallelFor :
- Directive<"target teams distribute parallel for"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- }
- def OMP_TargetTeamsDistributeParallelDo :
- Directive<"target teams distribute parallel do"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_UsesAllocators>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Order>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>,
- ];
- }
- def OMP_TargetTeamsDistributeParallelForSimd :
- Directive<"target teams distribute parallel for simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- }
- def OMP_TargetTeamsDistributeParallelDoSimd :
- Directive<"target teams distribute parallel do simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_UsesAllocators>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_NonTemporal>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>
- ];
- }
- def OMP_TargetTeamsDistributeSimd :
- Directive<"target teams distribute simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- ];
- }
- def OMP_Allocate : Directive<"allocate"> {
- let allowedOnceClauses = [
- VersionedClause<OMPC_Allocator>,
- VersionedClause<OMPC_Align, 51>
- ];
- }
- def OMP_DeclareVariant : Directive<"declare variant"> {
- let allowedClauses = [
- VersionedClause<OMPC_Match>
- ];
- let allowedExclusiveClauses = [
- VersionedClause<OMPC_AdjustArgs, 51>,
- VersionedClause<OMPC_AppendArgs, 51>
- ];
- }
- def OMP_MasterTaskloop : Directive<"master taskloop"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_Untied>,
- VersionedClause<OMPC_Mergeable>,
- VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_GrainSize>,
- VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_NumTasks>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_Allocate>
- ];
- }
- def OMP_ParallelMasterTaskloop :
- Directive<"parallel master taskloop"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_Untied>,
- VersionedClause<OMPC_Mergeable>,
- VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_GrainSize>,
- VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_NumTasks>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Copyin>
- ];
- }
- def OMP_MasterTaskloopSimd : Directive<"master taskloop simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_Untied>,
- VersionedClause<OMPC_Mergeable>,
- VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_GrainSize>,
- VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_NumTasks>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>
- ];
- }
- def OMP_ParallelMasterTaskloopSimd :
- Directive<"parallel master taskloop simd"> {
- let allowedClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_Untied>,
- VersionedClause<OMPC_Mergeable>,
- VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_GrainSize>,
- VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_NumTasks>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Aligned>,
- VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>
- ];
- }
- def OMP_Depobj : Directive<"depobj"> {
- let allowedClauses = [
- VersionedClause<OMPC_Depend, 50>,
- VersionedClause<OMPC_Destroy, 50>,
- VersionedClause<OMPC_Update, 50>,
- // TODO This should ne `none` instead. Comment carried over from
- // OMPKinds.def.
- VersionedClause<OMPC_Depobj, 50>
- ];
- }
- def OMP_Scan : Directive<"scan"> {
- let allowedClauses = [
- VersionedClause<OMPC_Inclusive, 50>,
- VersionedClause<OMPC_Exclusive, 50>
- ];
- }
- def OMP_Assumes : Directive<"assumes"> {}
- def OMP_BeginAssumes : Directive<"begin assumes"> {}
- def OMP_EndAssumes : Directive<"end assumes"> {}
- def OMP_BeginDeclareVariant : Directive<"begin declare variant"> {}
- def OMP_EndDeclareVariant : Directive<"end declare variant"> {}
- def OMP_ParallelWorkshare : Directive<"parallel workshare"> {
- let allowedClauses = [
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>
- ];
- }
- def OMP_Workshare : Directive<"workshare"> {}
- def OMP_EndDo : Directive<"end do"> {}
- def OMP_EndDoSimd : Directive<"end do simd"> {}
- def OMP_EndSections : Directive<"end sections"> {
- let allowedOnceClauses = [
- VersionedClause<OMPC_NoWait>
- ];
- }
- def OMP_EndSingle : Directive<"end single"> {
- let allowedClauses = [
- VersionedClause<OMPC_CopyPrivate>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_NoWait>
- ];
- }
- def OMP_EndWorkshare : Directive<"end workshare"> {
- let allowedClauses = [
- VersionedClause<OMPC_NoWait>
- ];
- }
- def OMP_interop : Directive<"interop"> {
- let allowedClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Destroy>,
- VersionedClause<OMPC_Init>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Use>,
- ];
- }
- def OMP_dispatch : Directive<"dispatch"> {
- let allowedClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Novariants>,
- VersionedClause<OMPC_Nocontext>
- ];
- }
- def OMP_masked : Directive<"masked"> {
- let allowedOnceClauses = [
- VersionedClause<OMPC_Filter>
- ];
- }
- def OMP_loop : Directive<"loop"> {
- let allowedClauses = [
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Bind, 50>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Order>,
- ];
- }
- def OMP_Metadirective : Directive<"metadirective"> {
- let allowedClauses = [VersionedClause<OMPC_When>];
- let allowedOnceClauses = [VersionedClause<OMPC_Default>];
- }
- def OMP_Unknown : Directive<"unknown"> {
- let isDefault = true;
- }
|