Compare commits
3 Commits
main
...
users/kpar
Author | SHA1 | Date | |
---|---|---|---|
![]() |
890f64bf59 | ||
![]() |
e00ef602a8 | ||
![]() |
f54e18d9d5 |
@ -67,6 +67,7 @@ template <typename SpecificTy> const OmpModifierDescriptor &OmpGetDescriptor();
|
||||
#define DECLARE_DESCRIPTOR(name) \
|
||||
template <> const OmpModifierDescriptor &OmpGetDescriptor<name>()
|
||||
|
||||
DECLARE_DESCRIPTOR(parser::OmpAccessGroup);
|
||||
DECLARE_DESCRIPTOR(parser::OmpAlignment);
|
||||
DECLARE_DESCRIPTOR(parser::OmpAlignModifier);
|
||||
DECLARE_DESCRIPTOR(parser::OmpAllocatorComplexModifier);
|
||||
|
@ -471,6 +471,45 @@ void OmpStructureChecker::Enter(const parser::OmpClause::Hint &x) {
|
||||
}
|
||||
}
|
||||
|
||||
void OmpStructureChecker::Enter(const parser::OmpClause::DynGroupprivate &x) {
|
||||
CheckAllowedClause(llvm::omp::Clause::OMPC_dyn_groupprivate);
|
||||
parser::CharBlock source{GetContext().clauseSource};
|
||||
|
||||
OmpVerifyModifiers(x.v, llvm::omp::OMPC_dyn_groupprivate, source, context_);
|
||||
}
|
||||
|
||||
void OmpStructureChecker::Enter(const parser::OmpClause::Grainsize &x) {
|
||||
CheckAllowedClause(llvm::omp::Clause::OMPC_grainsize);
|
||||
parser::CharBlock source{GetContext().clauseSource};
|
||||
|
||||
if (OmpVerifyModifiers(x.v, llvm::omp::OMPC_grainsize, source, context_)) {
|
||||
auto &modifiers{OmpGetModifiers(x.v)};
|
||||
for (auto *mod :
|
||||
OmpGetRepeatableModifier<parser::OmpPrescriptiveness>(modifiers)) {
|
||||
if (mod->v != parser::OmpPrescriptiveness::Value::Strict) {
|
||||
context_.Say(OmpGetModifierSource(modifiers, mod),
|
||||
"Only STRICT is allowed as prescriptiveness on this clause"_err_en_US);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OmpStructureChecker::Enter(const parser::OmpClause::NumTasks &x) {
|
||||
CheckAllowedClause(llvm::omp::Clause::OMPC_num_tasks);
|
||||
parser::CharBlock source{GetContext().clauseSource};
|
||||
|
||||
if (OmpVerifyModifiers(x.v, llvm::omp::OMPC_num_tasks, source, context_)) {
|
||||
auto &modifiers{OmpGetModifiers(x.v)};
|
||||
for (auto *mod :
|
||||
OmpGetRepeatableModifier<parser::OmpPrescriptiveness>(modifiers)) {
|
||||
if (mod->v != parser::OmpPrescriptiveness::Value::Strict) {
|
||||
context_.Say(OmpGetModifierSource(modifiers, mod),
|
||||
"Only STRICT is allowed as prescriptiveness on this clause"_err_en_US);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OmpStructureChecker::Enter(const parser::OmpDirectiveSpecification &x) {
|
||||
// OmpDirectiveSpecification exists on its own only in METADIRECTIVE.
|
||||
// In other cases it's a part of other constructs that handle directive
|
||||
@ -2542,6 +2581,32 @@ void OmpStructureChecker::Leave(const parser::OmpClauseList &) {
|
||||
}
|
||||
}
|
||||
|
||||
// Default access-group for DYN_GROUPPRIVATE is "cgroup". On a given
|
||||
// construct there can be at most one DYN_GROUPPRIVATE with a given
|
||||
// access-group.
|
||||
const parser::OmpClause
|
||||
*accGrpClause[parser::OmpAccessGroup::Value_enumSize] = {nullptr};
|
||||
for (auto [_, clause] :
|
||||
FindClauses(llvm::omp::Clause::OMPC_dyn_groupprivate)) {
|
||||
auto &wrapper{std::get<parser::OmpClause::DynGroupprivate>(clause->u)};
|
||||
auto &modifiers{OmpGetModifiers(wrapper.v)};
|
||||
auto accGrp{parser::OmpAccessGroup::Value::Cgroup};
|
||||
if (auto *ag{OmpGetUniqueModifier<parser::OmpAccessGroup>(modifiers)}) {
|
||||
accGrp = ag->v;
|
||||
}
|
||||
auto &firstClause{accGrpClause[llvm::to_underlying(accGrp)]};
|
||||
if (firstClause) {
|
||||
context_
|
||||
.Say(clause->source,
|
||||
"The access-group modifier can only occur on a single clause in a construct"_err_en_US)
|
||||
.Attach(firstClause->source,
|
||||
"Previous clause with access-group modifier"_en_US);
|
||||
break;
|
||||
} else {
|
||||
firstClause = clause;
|
||||
}
|
||||
}
|
||||
|
||||
CheckRequireAtLeastOneOf();
|
||||
}
|
||||
|
||||
@ -2593,18 +2658,15 @@ CHECK_SIMPLE_CLAUSE(Default, OMPC_default)
|
||||
CHECK_SIMPLE_CLAUSE(Depobj, OMPC_depobj)
|
||||
CHECK_SIMPLE_CLAUSE(DeviceType, OMPC_device_type)
|
||||
CHECK_SIMPLE_CLAUSE(DistSchedule, OMPC_dist_schedule)
|
||||
CHECK_SIMPLE_CLAUSE(DynGroupprivate, OMPC_dyn_groupprivate)
|
||||
CHECK_SIMPLE_CLAUSE(Exclusive, OMPC_exclusive)
|
||||
CHECK_SIMPLE_CLAUSE(Final, OMPC_final)
|
||||
CHECK_SIMPLE_CLAUSE(Flush, OMPC_flush)
|
||||
CHECK_SIMPLE_CLAUSE(Full, OMPC_full)
|
||||
CHECK_SIMPLE_CLAUSE(Grainsize, OMPC_grainsize)
|
||||
CHECK_SIMPLE_CLAUSE(Holds, OMPC_holds)
|
||||
CHECK_SIMPLE_CLAUSE(Inclusive, OMPC_inclusive)
|
||||
CHECK_SIMPLE_CLAUSE(Initializer, OMPC_initializer)
|
||||
CHECK_SIMPLE_CLAUSE(Match, OMPC_match)
|
||||
CHECK_SIMPLE_CLAUSE(Nontemporal, OMPC_nontemporal)
|
||||
CHECK_SIMPLE_CLAUSE(NumTasks, OMPC_num_tasks)
|
||||
CHECK_SIMPLE_CLAUSE(Order, OMPC_order)
|
||||
CHECK_SIMPLE_CLAUSE(Read, OMPC_read)
|
||||
CHECK_SIMPLE_CLAUSE(Threadprivate, OMPC_threadprivate)
|
||||
|
@ -74,6 +74,22 @@ unsigned OmpModifierDescriptor::since(llvm::omp::Clause id) const {
|
||||
// Note: The intent for these functions is to have them be automatically-
|
||||
// generated in the future.
|
||||
|
||||
template <>
|
||||
const OmpModifierDescriptor &OmpGetDescriptor<parser::OmpAccessGroup>() {
|
||||
static const OmpModifierDescriptor desc{
|
||||
/*name=*/"access-group",
|
||||
/*props=*/
|
||||
{
|
||||
{61, {OmpProperty::Unique}},
|
||||
},
|
||||
/*clauses=*/
|
||||
{
|
||||
{61, {Clause::OMPC_dyn_groupprivate}},
|
||||
},
|
||||
};
|
||||
return desc;
|
||||
}
|
||||
|
||||
template <>
|
||||
const OmpModifierDescriptor &OmpGetDescriptor<parser::OmpAlignment>() {
|
||||
static const OmpModifierDescriptor desc{
|
||||
@ -482,6 +498,9 @@ const OmpModifierDescriptor &OmpGetDescriptor<parser::OmpPrescriptiveness>() {
|
||||
/*clauses=*/
|
||||
{
|
||||
{51, {Clause::OMPC_grainsize, Clause::OMPC_num_tasks}},
|
||||
{61,
|
||||
{Clause::OMPC_dyn_groupprivate, Clause::OMPC_grainsize,
|
||||
Clause::OMPC_num_tasks}},
|
||||
},
|
||||
};
|
||||
return desc;
|
||||
|
44
flang/test/Semantics/OpenMP/dyn-groupprivate.f90
Normal file
44
flang/test/Semantics/OpenMP/dyn-groupprivate.f90
Normal file
@ -0,0 +1,44 @@
|
||||
!RUN: %python %S/../test_errors.py %s %flang -fopenmp -fopenmp-version=61
|
||||
|
||||
subroutine f00(n)
|
||||
implicit none
|
||||
integer :: n
|
||||
!Expect no diagnostic
|
||||
!$omp target dyn_groupprivate(n)
|
||||
!$omp end target
|
||||
end
|
||||
|
||||
subroutine f01(n)
|
||||
implicit none
|
||||
integer :: n
|
||||
!Expect no diagnostic
|
||||
!$omp target dyn_groupprivate(strict: n)
|
||||
!$omp end target
|
||||
end
|
||||
|
||||
subroutine f02(n)
|
||||
implicit none
|
||||
integer :: n
|
||||
!Expect no diagnostic
|
||||
!$omp target dyn_groupprivate(fallback, cgroup: n)
|
||||
!$omp end target
|
||||
end
|
||||
|
||||
subroutine f03(n)
|
||||
implicit none
|
||||
integer :: n
|
||||
!If absent, access-group is assumed to be CGROUP
|
||||
!ERROR: The access-group modifier can only occur on a single clause in a construct
|
||||
!$omp target dyn_groupprivate(n) dyn_groupprivate(cgroup: n)
|
||||
!$omp end target
|
||||
end
|
||||
|
||||
subroutine f04(n, m)
|
||||
implicit none
|
||||
integer :: n, m
|
||||
!$omp target dyn_groupprivate(fallback, cgroup: n) &
|
||||
!ERROR: The access-group modifier can only occur on a single clause in a construct
|
||||
!$omp & dyn_groupprivate(cgroup: m)
|
||||
!$omp end target
|
||||
end
|
||||
|
47
flang/test/Semantics/OpenMP/prescriptiveness-modifier.f90
Normal file
47
flang/test/Semantics/OpenMP/prescriptiveness-modifier.f90
Normal file
@ -0,0 +1,47 @@
|
||||
!RUN: %python %S/../test_errors.py %s %flang -fopenmp -fopenmp-version=61
|
||||
|
||||
subroutine f00(x)
|
||||
integer :: x, i
|
||||
!No diagnostic expected
|
||||
!$omp taskloop grainsize(strict: x)
|
||||
do i = 1, 10
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine f01(x)
|
||||
integer :: x, i
|
||||
!ERROR: Only STRICT is allowed as prescriptiveness on this clause
|
||||
!$omp taskloop grainsize(fallback: x)
|
||||
do i = 1, 10
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine f02(x)
|
||||
integer :: x, i
|
||||
!No diagnostic expected
|
||||
!$omp taskloop num_tasks(strict: x)
|
||||
do i = 1, 10
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine f03(x)
|
||||
integer :: x, i
|
||||
!ERROR: Only STRICT is allowed as prescriptiveness on this clause
|
||||
!$omp taskloop num_tasks(fallback: x)
|
||||
do i = 1, 10
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine f04(x)
|
||||
integer :: x
|
||||
!No diagnostic expected
|
||||
!$omp target dyn_groupprivate(strict: x)
|
||||
!$omp end target
|
||||
end
|
||||
|
||||
subroutine f05(x)
|
||||
integer :: x
|
||||
!No diagnostic expected
|
||||
!$omp target dyn_groupprivate(fallback: x)
|
||||
!$omp end target
|
||||
end
|
@ -1103,6 +1103,7 @@ def OMP_Target : Directive<[Spelling<"target">]> {
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_InReduction, 50>,
|
||||
@ -1115,7 +1116,6 @@ def OMP_Target : Directive<[Spelling<"target">]> {
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_If>,
|
||||
VersionedClause<OMPC_NoWait>,
|
||||
VersionedClause<OMPC_OMPX_Bare>,
|
||||
@ -1258,6 +1258,7 @@ def OMP_TaskYield : Directive<[Spelling<"taskyield">]> {
|
||||
def OMP_Teams : Directive<[Spelling<"teams">]> {
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_OMPX_Attribute>,
|
||||
VersionedClause<OMPC_Private>,
|
||||
@ -1266,7 +1267,6 @@ def OMP_Teams : Directive<[Spelling<"teams">]> {
|
||||
];
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_If, 52>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_ThreadLimit>,
|
||||
@ -1520,6 +1520,7 @@ def OMP_target_loop : Directive<[Spelling<"target loop">]> {
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_IsDevicePtr>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
@ -1535,7 +1536,6 @@ def OMP_target_loop : Directive<[Spelling<"target loop">]> {
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_Bind, 50>,
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_Order>,
|
||||
VersionedClause<OMPC_ThreadLimit>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
@ -1982,6 +1982,7 @@ def OMP_TargetParallel : Directive<[Spelling<"target parallel">]> {
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -1997,7 +1998,6 @@ def OMP_TargetParallel : Directive<[Spelling<"target parallel">]> {
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NumThreads>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
VersionedClause<OMPC_ProcBind>,
|
||||
@ -2011,6 +2011,7 @@ def OMP_TargetParallelDo : Directive<[Spelling<"target parallel do">]> {
|
||||
VersionedClause<OMPC_Allocator>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2027,7 +2028,6 @@ def OMP_TargetParallelDo : Directive<[Spelling<"target parallel do">]> {
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NoWait>,
|
||||
VersionedClause<OMPC_NumThreads>,
|
||||
VersionedClause<OMPC_Order, 50>,
|
||||
@ -2049,6 +2049,7 @@ def OMP_TargetParallelDoSimd
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2070,9 +2071,6 @@ def OMP_TargetParallelDoSimd
|
||||
VersionedClause<OMPC_SimdLen>,
|
||||
VersionedClause<OMPC_UsesAllocators>,
|
||||
];
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
];
|
||||
let leafConstructs = [OMP_Target, OMP_Parallel, OMP_Do, OMP_Simd];
|
||||
let category = CA_Executable;
|
||||
let languages = [L_Fortran];
|
||||
@ -2085,6 +2083,7 @@ def OMP_TargetParallelFor : Directive<[Spelling<"target parallel for">]> {
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2105,7 +2104,6 @@ def OMP_TargetParallelFor : Directive<[Spelling<"target parallel for">]> {
|
||||
VersionedClause<OMPC_UsesAllocators, 50>,
|
||||
];
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
VersionedClause<OMPC_ThreadLimit, 51>,
|
||||
];
|
||||
@ -2123,6 +2121,7 @@ def OMP_TargetParallelForSimd
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2146,7 +2145,6 @@ def OMP_TargetParallelForSimd
|
||||
VersionedClause<OMPC_UsesAllocators, 50>,
|
||||
];
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
VersionedClause<OMPC_ThreadLimit, 51>,
|
||||
];
|
||||
@ -2159,6 +2157,7 @@ def OMP_target_parallel_loop : Directive<[Spelling<"target parallel loop">]> {
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2176,7 +2175,6 @@ def OMP_target_parallel_loop : Directive<[Spelling<"target parallel loop">]> {
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NoWait>,
|
||||
VersionedClause<OMPC_NumThreads>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
@ -2192,6 +2190,7 @@ def OMP_TargetSimd : Directive<[Spelling<"target simd">]> {
|
||||
VersionedClause<OMPC_Aligned>,
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2211,7 +2210,6 @@ def OMP_TargetSimd : Directive<[Spelling<"target simd">]> {
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NumThreads>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
VersionedClause<OMPC_Order, 50>,
|
||||
@ -2228,6 +2226,7 @@ def OMP_TargetTeams : Directive<[Spelling<"target teams">]> {
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2243,7 +2242,6 @@ def OMP_TargetTeams : Directive<[Spelling<"target teams">]> {
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NoWait>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
@ -2258,6 +2256,7 @@ def OMP_TargetTeamsDistribute
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2276,7 +2275,6 @@ def OMP_TargetTeamsDistribute
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NoWait>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
@ -2291,6 +2289,7 @@ def OMP_TargetTeamsDistributeParallelDo
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2309,7 +2308,6 @@ def OMP_TargetTeamsDistributeParallelDo
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NoWait>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_NumThreads>,
|
||||
@ -2329,6 +2327,7 @@ def OMP_TargetTeamsDistributeParallelDoSimd
|
||||
VersionedClause<OMPC_Aligned>,
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2348,7 +2347,6 @@ def OMP_TargetTeamsDistributeParallelDoSimd
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NoWait>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_NumThreads>,
|
||||
@ -2374,6 +2372,7 @@ def OMP_TargetTeamsDistributeParallelFor
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2394,7 +2393,6 @@ def OMP_TargetTeamsDistributeParallelFor
|
||||
VersionedClause<OMPC_UsesAllocators, 50>,
|
||||
];
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
];
|
||||
let leafConstructs =
|
||||
@ -2413,6 +2411,7 @@ def OMP_TargetTeamsDistributeParallelForSimd
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2437,7 +2436,6 @@ def OMP_TargetTeamsDistributeParallelForSimd
|
||||
VersionedClause<OMPC_UsesAllocators, 50>,
|
||||
];
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
];
|
||||
let leafConstructs =
|
||||
@ -2451,6 +2449,7 @@ def OMP_TargetTeamsDistributeSimd
|
||||
VersionedClause<OMPC_Aligned>,
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2470,7 +2469,6 @@ def OMP_TargetTeamsDistributeSimd
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NoWait>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
@ -2488,6 +2486,7 @@ def OMP_target_teams_loop : Directive<[Spelling<"target teams loop">]> {
|
||||
VersionedClause<OMPC_DefaultMap>,
|
||||
VersionedClause<OMPC_Depend>,
|
||||
VersionedClause<OMPC_Device>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_HasDeviceAddr, 51>,
|
||||
VersionedClause<OMPC_If>,
|
||||
@ -2504,7 +2503,6 @@ def OMP_target_teams_loop : Directive<[Spelling<"target teams loop">]> {
|
||||
VersionedClause<OMPC_Bind, 50>,
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NoWait>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_OMPX_DynCGroupMem>,
|
||||
@ -2553,6 +2551,7 @@ def OMP_TeamsDistribute : Directive<[Spelling<"teams distribute">]> {
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_LastPrivate>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
@ -2563,7 +2562,6 @@ def OMP_TeamsDistribute : Directive<[Spelling<"teams distribute">]> {
|
||||
VersionedClause<OMPC_ThreadLimit>,
|
||||
];
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_If>,
|
||||
VersionedClause<OMPC_Order, 50>,
|
||||
];
|
||||
@ -2575,6 +2573,7 @@ def OMP_TeamsDistributeParallelDo
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_Copyin>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_If>,
|
||||
VersionedClause<OMPC_LastPrivate>,
|
||||
@ -2587,7 +2586,6 @@ def OMP_TeamsDistributeParallelDo
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_NumThreads>,
|
||||
VersionedClause<OMPC_Order, 50>,
|
||||
@ -2604,6 +2602,7 @@ def OMP_TeamsDistributeParallelDoSimd
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Aligned>,
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_If>,
|
||||
VersionedClause<OMPC_LastPrivate>,
|
||||
@ -2617,7 +2616,6 @@ def OMP_TeamsDistributeParallelDoSimd
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_NumThreads>,
|
||||
VersionedClause<OMPC_Order, 50>,
|
||||
@ -2640,6 +2638,7 @@ def OMP_TeamsDistributeParallelFor
|
||||
VersionedClause<OMPC_Copyin>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_If>,
|
||||
VersionedClause<OMPC_LastPrivate>,
|
||||
@ -2654,9 +2653,6 @@ def OMP_TeamsDistributeParallelFor
|
||||
VersionedClause<OMPC_Shared>,
|
||||
VersionedClause<OMPC_ThreadLimit>,
|
||||
];
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
];
|
||||
let leafConstructs = [OMP_Teams, OMP_Distribute, OMP_Parallel, OMP_For];
|
||||
let category = CA_Executable;
|
||||
let languages = [L_C];
|
||||
@ -2669,6 +2665,7 @@ def OMP_TeamsDistributeParallelForSimd
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_If>,
|
||||
VersionedClause<OMPC_LastPrivate>,
|
||||
@ -2687,9 +2684,6 @@ def OMP_TeamsDistributeParallelForSimd
|
||||
VersionedClause<OMPC_SimdLen>,
|
||||
VersionedClause<OMPC_ThreadLimit>,
|
||||
];
|
||||
let allowedOnceClauses = [
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
];
|
||||
let leafConstructs =
|
||||
[OMP_Teams, OMP_Distribute, OMP_Parallel, OMP_For, OMP_Simd];
|
||||
let category = CA_Executable;
|
||||
@ -2699,6 +2693,7 @@ def OMP_TeamsDistributeSimd : Directive<[Spelling<"teams distribute simd">]> {
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Aligned>,
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_If, 50>,
|
||||
VersionedClause<OMPC_LastPrivate>,
|
||||
@ -2713,7 +2708,6 @@ def OMP_TeamsDistributeSimd : Directive<[Spelling<"teams distribute simd">]> {
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DistSchedule>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_Order, 50>,
|
||||
VersionedClause<OMPC_SafeLen>,
|
||||
@ -2726,6 +2720,7 @@ def OMP_TeamsDistributeSimd : Directive<[Spelling<"teams distribute simd">]> {
|
||||
def OMP_teams_loop : Directive<[Spelling<"teams loop">]> {
|
||||
let allowedClauses = [
|
||||
VersionedClause<OMPC_Allocate>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_FirstPrivate>,
|
||||
VersionedClause<OMPC_LastPrivate>,
|
||||
VersionedClause<OMPC_OMPX_Attribute>,
|
||||
@ -2737,7 +2732,6 @@ def OMP_teams_loop : Directive<[Spelling<"teams loop">]> {
|
||||
VersionedClause<OMPC_Bind, 50>,
|
||||
VersionedClause<OMPC_Collapse>,
|
||||
VersionedClause<OMPC_Default>,
|
||||
VersionedClause<OMPC_DynGroupprivate, 61>,
|
||||
VersionedClause<OMPC_NumTeams>,
|
||||
VersionedClause<OMPC_Order>,
|
||||
VersionedClause<OMPC_ThreadLimit>,
|
||||
|
Loading…
x
Reference in New Issue
Block a user