123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103 |
- //===-- 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";
- let flangClass = "ScalarIntExpr";
- let isValueList = true;
- }
- def OMPC_Full: Clause<"full"> {
- let clangClass = "OMPFullClause";
- }
- def OMPC_Partial: Clause<"partial"> {
- let clangClass = "OMPPartialClause";
- let flangClass = "ScalarIntConstantExpr";
- let isValueOptional = true;
- }
- 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
- ];
- }
- 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 OMP_CANCELLATION_CONSTRUCT_Parallel : ClauseVal<"parallel", 1, 1> {}
- def OMP_CANCELLATION_CONSTRUCT_Loop : ClauseVal<"loop", 2, 1> {}
- def OMP_CANCELLATION_CONSTRUCT_Sections : ClauseVal<"sections", 3, 1> {}
- def OMP_CANCELLATION_CONSTRUCT_Taskgroup : ClauseVal<"taskgroup", 4, 1> {}
- def OMP_CANCELLATION_CONSTRUCT_None : ClauseVal<"none", 5, 0> {
- let isDefault = 1;
- }
- def OMPC_CancellationConstructType : Clause<"cancellation_construct_type"> {
- let enumClauseValue = "CancellationConstructType";
- let allowedClauseValues = [
- OMP_CANCELLATION_CONSTRUCT_Parallel,
- OMP_CANCELLATION_CONSTRUCT_Loop,
- OMP_CANCELLATION_CONSTRUCT_Sections,
- OMP_CANCELLATION_CONSTRUCT_Taskgroup,
- OMP_CANCELLATION_CONSTRUCT_None
- ];
- }
- 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 = "OmpDeviceClause";
- }
- 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 OMP_GRAINSIZE_Strict : ClauseVal<"strict", 1, 1> {}
- def OMP_GRAINSIZE_Unknown : ClauseVal<"unkonwn", 2, 0> { let isDefault = 1; }
- def OMPC_GrainSize : Clause<"grainsize"> {
- let clangClass = "OMPGrainsizeClause";
- let flangClass = "ScalarIntExpr";
- let enumClauseValue = "GrainsizeType";
- let allowedClauseValues = [
- OMP_GRAINSIZE_Strict,
- OMP_GRAINSIZE_Unknown
- ];
- }
- def OMPC_NoGroup : Clause<"nogroup"> {
- let clangClass = "OMPNogroupClause";
- }
- def OMP_NUMTASKS_Strict : ClauseVal<"strict", 1, 1> {}
- def OMP_NUMTASKS_Unknown : ClauseVal<"unkonwn", 2, 0> { let isDefault = 1; }
- def OMPC_NumTasks : Clause<"num_tasks"> {
- let clangClass = "OMPNumTasksClause";
- let flangClass = "ScalarIntExpr";
- let enumClauseValue = "NumTasksType";
- let allowedClauseValues = [
- OMP_NUMTASKS_Strict,
- OMP_NUMTASKS_Unknown
- ];
- }
- 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_HasDeviceAddr : Clause<"has_device_addr"> {
- let clangClass = "OMPHasDeviceAddrClause";
- 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";
- let flangClass = "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";
- let flangClass = "OmpAtomicDefaultMemOrderClause";
- }
- def OMPC_At : Clause<"at"> {
- let clangClass = "OMPAtClause";
- }
- def OMPC_Severity : Clause<"severity"> {
- let clangClass = "OMPSeverityClause";
- }
- def OMPC_Message : Clause<"message"> {
- let clangClass = "OMPMessageClause";
- }
- 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";
- }
- def OMPC_OMPX_DynCGroupMem : Clause<"ompx_dyn_cgroup_mem"> {
- let clangClass = "OMPXDynCGroupMemClause";
- let flangClass = "ScalarIntExpr";
- }
- //===----------------------------------------------------------------------===//
- // 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_Error : Directive<"error"> {
- let allowedClauses = [
- VersionedClause<OMPC_At, 51>,
- VersionedClause<OMPC_Severity, 51>,
- VersionedClause<OMPC_Message, 51>
- ];
- }
- def OMP_TaskWait : Directive<"taskwait"> {
- let allowedClauses = [
- VersionedClause<OMPC_Depend, 50>,
- VersionedClause<OMPC_NoWait, 51>
- ];
- }
- 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_HasDeviceAddr, 51>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_InReduction, 50>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_ThreadLimit, 51>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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 allowedOnceClauses = [
- VersionedClause<OMPC_UnifiedAddress>,
- VersionedClause<OMPC_UnifiedSharedMemory>,
- // OpenMP 5.2 Spec: If an implementation is not supporting a requirement
- // (reverse offload in this case) then it should give compile-time error
- // termination.
- // Seeting supported version for reverse_offload to a distant future version
- // 9.9 so that its partial support can be tested in the meantime.
- //
- // TODO: Correct this supprted version number whenever complete
- // implementation of reverse_offload is available.
- VersionedClause<OMPC_ReverseOffload, 99>,
- VersionedClause<OMPC_DynamicAllocators>,
- VersionedClause<OMPC_AtomicDefaultMemOrder>
- ];
- }
- def OMP_Nothing : Directive<"nothing"> {}
- 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_HasDeviceAddr, 51>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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_HasDeviceAddr, 51>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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_HasDeviceAddr, 51>,
- 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_To>,
- VersionedClause<OMPC_From>,
- VersionedClause<OMPC_Depend>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NoWait>
- ];
- }
- 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_ParallelMasked : Directive<"parallel masked"> {
- 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>,
- VersionedClause<OMPC_Filter>
- ];
- }
- 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_HasDeviceAddr, 51>,
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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_HasDeviceAddr, 51>,
- 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_HasDeviceAddr, 51>,
- 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>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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_HasDeviceAddr, 51>,
- 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>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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_HasDeviceAddr, 51>,
- 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>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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_HasDeviceAddr, 51>,
- 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>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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_HasDeviceAddr, 51>,
- 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_HasDeviceAddr, 51>,
- 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>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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_HasDeviceAddr, 51>,
- 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_HasDeviceAddr, 51>,
- 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>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- 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_MaskedTaskloop : Directive<"masked 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>,
- VersionedClause<OMPC_Filter>
- ];
- }
- 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_ParallelMaskedTaskloop :
- Directive<"parallel masked 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>,
- VersionedClause<OMPC_Filter>
- ];
- }
- 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_MaskedTaskloopSimd : Directive<"masked 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>,
- VersionedClause<OMPC_Filter>
- ];
- }
- 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_ParallelMaskedTaskloopSimd :
- Directive<"parallel masked 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>,
- VersionedClause<OMPC_Filter>
- ];
- }
- 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_HasDeviceAddr, 51>,
- 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_teams_loop : Directive<"teams loop"> {
- let allowedClauses = [
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>,
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Bind, 50>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_ThreadLimit>,
- ];
- }
- def OMP_target_teams_loop : Directive<"target teams loop"> {
- let allowedClauses = [
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_HasDeviceAddr, 51>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_UsesAllocators, 50>
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Bind, 50>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- def OMP_parallel_loop : Directive<"parallel loop"> {
- let allowedClauses = [
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>,
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Bind, 50>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_ProcBind>,
- ];
- }
- def OMP_target_parallel_loop : Directive<"target parallel loop"> {
- let allowedClauses = [
- VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_IsDevicePtr>,
- VersionedClause<OMPC_HasDeviceAddr, 51>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_UsesAllocators, 50>,
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_Bind, 50>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DefaultMap>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- ];
- }
- def OMP_Metadirective : Directive<"metadirective"> {
- let allowedClauses = [VersionedClause<OMPC_When>];
- let allowedOnceClauses = [VersionedClause<OMPC_Default>];
- }
- def OMP_Unknown : Directive<"unknown"> {
- let isDefault = true;
- }
|