Package edu.udel.cis.vsl.abc.ast.node.IF.omp
package edu.udel.cis.vsl.abc.ast.node.IF.omp
The ast.node.omp submodule defines AST nodes for representing
OpenMP constructs, which are specified in omp
pragmas.
-
ClassDescriptionThis represents an OpenMP atomic construct, which has the syntax:This represents an OpenMP declarative directive, which can only be placed in a declarative context.The kind of an OpenMP declarative pragma.Represents an OpenMP executable Construct.
The children of an OmpExecutableNode are: SequenceNode<IdentifierExpressionNode> "sharedList", the list of identifiers declared byshared
SequenceNode<IdentifierExpressionNode> "privateList", the list of identifiers declared byprivate
SequenceNode<IdentifierExpressionNode> "firstprivateList", the list of identifiers declared byfirstprivate
SequenceNode<IdentifierExpressionNode> "lastprivateList", the list of identifiers declared bylastprivate
SequenceNode<IdentifierExpressionNode> "copyinList", the list of identifiers declared bycopyin
SequenceNode<IdentifierExpressionNode> "copyprivateList", the list of identifiers declared bycopyprivate
SequenceNode<OmpReductionNode> "reductionList", the list of operators and identifiers declared byreduction
StatementNode, the statement node affected by this pragma.The kind of this OpenMP statement: PARALLEL: the parallel construct SYNCHRONIZATION: synchronization constructs such as master, critical, barrier, taskwait, taskgroup, atomic, flush, ordered, etc. WORKSHARING: worksharing constructs such as sections (section) and single. SIMD: simd directive, objects of this kind are instances ofOmpSimdNode
This interface represents the OpenMP loop construct.The schedule kind of an OpenMP for pragma.This represents an OpenMP reduction identifier.A node representing any kind of an OpenMP pragma.The kind of this OpenMP pragma.This represents an OpenMP parallel pragma.This represents an OpenMP reduction clause.The kind of this reduction clause, either OPERATOR if the reduction-identifier is one of the following:+, -, *, &, |, ^, &&, ||, min and max; or FUNCTION if the reduction-identifier is an identifier except "min" and "max" (ignoring the letter case for these two strings).The kind of this reduction operator, all (SUM, MINUS, MULTIPLY, MAX, MINBAND, BOR, BXOR, LAND, LOR, UDEF) except for "UDEF" are OpenMP built-in operators according to OpenMP Standard ver.4.5 (https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf).A simd directive, which may have the following clauses: if([simd :]scalar-logical-expression) safelen(length) simdlen(length) linear(list[ : linear-step]) aligned(list[ : alignment]) nontemporal(list) private(list) lastprivate([ lastprivate-modifier:] list) reduction([ reduction-modifier,]reduction-identifier : list) collapse(n) order(concurrent)This represents an OpenMP reduction clause with the reduction operator being one of the following operators:
For C:max
,min
,+
,-
,*
,&
,|
,^
,&&
, and||
For Fortran: (NOT case sensitive)MAX
,MIN
,+
,-
,*
,IAND
,IOR
,IEOR
,.AND.
,.OR.
,.EQV.
and.NEQV.
This interface stands for synchronization constructs of OpenMP, including: master critical barrier flush atomic Currently, taskwait and atomic constructs are not supported.The kind of this OmpSyncNode: MASTER: the master construct CRITICAL: the critical construct BARRIER: the barrier construct FLUSH: the flush construct ORDERED: the ordered constructThis represents an OpenMP worksharing construct, either a loop, sections/section, or single construct.The kind of this OmpWorksharingNode: FOR: the loop construct SECTIONS: the sections construct SECTION: the section construct SINGLE: the single construct