Module dev.civl.abc
Package dev.civl.abc.ast.node.IF.omp
package dev.civl.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 bysharedSequenceNode<IdentifierExpressionNode> "privateList", the list of identifiers declared byprivateSequenceNode<IdentifierExpressionNode> "firstprivateList", the list of identifiers declared byfirstprivateSequenceNode<IdentifierExpressionNode> "lastprivateList", the list of identifiers declared bylastprivateSequenceNode<IdentifierExpressionNode> "copyinList", the list of identifiers declared bycopyinSequenceNode<IdentifierExpressionNode> "copyprivateList", the list of identifiers declared bycopyprivateSequenceNode<OmpReductionNode> "reductionList", the list of operators and identifiers declared byreductionStatementNode, 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 ofOmpSimdNodeThis 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:+, -, *, invalid input: '&', |, ^, invalid input: '&'invalid input: '&', ||, 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,+,-,*,invalid input: '&',|,^,invalid input: '&'invalid input: '&', 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