|
@@ -1693,8 +1693,7 @@ void Sema::ActOnOpenMPRegionStart(OpenMPDirectiveKind DKind, Scope *CurScope) {
|
|
case OMPD_distribute_parallel_for_simd:
|
|
case OMPD_distribute_parallel_for_simd:
|
|
case OMPD_distribute_simd:
|
|
case OMPD_distribute_simd:
|
|
case OMPD_distribute_parallel_for:
|
|
case OMPD_distribute_parallel_for:
|
|
- case OMPD_teams_distribute:
|
|
|
|
- case OMPD_teams_distribute_simd: {
|
|
|
|
|
|
+ case OMPD_teams_distribute: {
|
|
QualType KmpInt32Ty = Context.getIntTypeForBitwidth(32, 1);
|
|
QualType KmpInt32Ty = Context.getIntTypeForBitwidth(32, 1);
|
|
QualType KmpInt32PtrTy =
|
|
QualType KmpInt32PtrTy =
|
|
Context.getPointerType(KmpInt32Ty).withConst().withRestrict();
|
|
Context.getPointerType(KmpInt32Ty).withConst().withRestrict();
|
|
@@ -1923,8 +1922,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | parallel | distribute simd | + |
|
|
// | parallel | distribute simd | + |
|
|
// | parallel | target simd | * |
|
|
// | parallel | target simd | * |
|
|
// | parallel | teams distribute| + |
|
|
// | parallel | teams distribute| + |
|
|
- // | parallel | teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | for | parallel | * |
|
|
// | for | parallel | * |
|
|
// | for | for | + |
|
|
// | for | for | + |
|
|
@@ -1970,8 +1967,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | for | target simd | * |
|
|
// | for | target simd | * |
|
|
// | for | teams distribute| + |
|
|
// | for | teams distribute| + |
|
|
- // | for | teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | master | parallel | * |
|
|
// | master | parallel | * |
|
|
// | master | for | + |
|
|
// | master | for | + |
|
|
@@ -2017,8 +2012,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | master | target simd | * |
|
|
// | master | target simd | * |
|
|
// | master | teams distribute| + |
|
|
// | master | teams distribute| + |
|
|
- // | master | teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | critical | parallel | * |
|
|
// | critical | parallel | * |
|
|
// | critical | for | + |
|
|
// | critical | for | + |
|
|
@@ -2063,8 +2056,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | critical | target simd | * |
|
|
// | critical | target simd | * |
|
|
// | critical | teams distribute| + |
|
|
// | critical | teams distribute| + |
|
|
- // | critical | teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | simd | parallel | |
|
|
// | simd | parallel | |
|
|
// | simd | for | |
|
|
// | simd | for | |
|
|
@@ -2110,8 +2101,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | simd | target simd | |
|
|
// | simd | target simd | |
|
|
// | simd | teams distribute| |
|
|
// | simd | teams distribute| |
|
|
- // | simd | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | for simd | parallel | |
|
|
// | for simd | parallel | |
|
|
// | for simd | for | |
|
|
// | for simd | for | |
|
|
@@ -2157,8 +2146,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | for simd | target simd | |
|
|
// | for simd | target simd | |
|
|
// | for simd | teams distribute| |
|
|
// | for simd | teams distribute| |
|
|
- // | for simd | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | parallel for simd| parallel | |
|
|
// | parallel for simd| parallel | |
|
|
// | parallel for simd| for | |
|
|
// | parallel for simd| for | |
|
|
@@ -2203,8 +2190,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | parallel for simd| target simd | |
|
|
// | parallel for simd| target simd | |
|
|
// | parallel for simd| teams distribute| |
|
|
// | parallel for simd| teams distribute| |
|
|
- // | parallel for simd| teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | sections | parallel | * |
|
|
// | sections | parallel | * |
|
|
// | sections | for | + |
|
|
// | sections | for | + |
|
|
@@ -2249,8 +2234,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | sections | target parallel | + |
|
|
// | sections | target parallel | + |
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | sections | target simd | * |
|
|
// | sections | target simd | * |
|
|
- // | sections | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | section | parallel | * |
|
|
// | section | parallel | * |
|
|
// | section | for | + |
|
|
// | section | for | + |
|
|
@@ -2296,8 +2279,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | section | target simd | * |
|
|
// | section | target simd | * |
|
|
// | section | teams distrubte | + |
|
|
// | section | teams distrubte | + |
|
|
- // | section | teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | single | parallel | * |
|
|
// | single | parallel | * |
|
|
// | single | for | + |
|
|
// | single | for | + |
|
|
@@ -2343,8 +2324,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | single | target simd | * |
|
|
// | single | target simd | * |
|
|
// | single | teams distrubte | + |
|
|
// | single | teams distrubte | + |
|
|
- // | single | teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | parallel for | parallel | * |
|
|
// | parallel for | parallel | * |
|
|
// | parallel for | for | + |
|
|
// | parallel for | for | + |
|
|
@@ -2390,8 +2369,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | parallel for | target simd | * |
|
|
// | parallel for | target simd | * |
|
|
// | parallel for | teams distribute| + |
|
|
// | parallel for | teams distribute| + |
|
|
- // | parallel for | teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | parallel sections| parallel | * |
|
|
// | parallel sections| parallel | * |
|
|
// | parallel sections| for | + |
|
|
// | parallel sections| for | + |
|
|
@@ -2437,8 +2414,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | parallel sections| target simd | * |
|
|
// | parallel sections| target simd | * |
|
|
// | parallel sections| teams distribute| + |
|
|
// | parallel sections| teams distribute| + |
|
|
- // | parallel sections| teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | task | parallel | * |
|
|
// | task | parallel | * |
|
|
// | task | for | + |
|
|
// | task | for | + |
|
|
@@ -2484,8 +2459,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | task | target simd | * |
|
|
// | task | target simd | * |
|
|
// | task | teams distribute| + |
|
|
// | task | teams distribute| + |
|
|
- // | task | teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | ordered | parallel | * |
|
|
// | ordered | parallel | * |
|
|
// | ordered | for | + |
|
|
// | ordered | for | + |
|
|
@@ -2531,8 +2504,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | ordered | target simd | * |
|
|
// | ordered | target simd | * |
|
|
// | ordered | teams distribute| + |
|
|
// | ordered | teams distribute| + |
|
|
- // | ordered | teams distribute| |
|
|
|
|
- // | | simd | + |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | atomic | parallel | |
|
|
// | atomic | parallel | |
|
|
// | atomic | for | |
|
|
// | atomic | for | |
|
|
@@ -2578,8 +2549,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | atomic | target simd | |
|
|
// | atomic | target simd | |
|
|
// | atomic | teams distribute| |
|
|
// | atomic | teams distribute| |
|
|
- // | atomic | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | target | parallel | * |
|
|
// | target | parallel | * |
|
|
// | target | for | * |
|
|
// | target | for | * |
|
|
@@ -2625,8 +2594,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | target | target simd | |
|
|
// | target | target simd | |
|
|
// | target | teams distribute| |
|
|
// | target | teams distribute| |
|
|
- // | target | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | target parallel | parallel | * |
|
|
// | target parallel | parallel | * |
|
|
// | target parallel | for | * |
|
|
// | target parallel | for | * |
|
|
@@ -2672,8 +2639,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | target parallel | target simd | |
|
|
// | target parallel | target simd | |
|
|
// | target parallel | teams distribute| + |
|
|
// | target parallel | teams distribute| + |
|
|
- // | target parallel | teams distribute| + |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | target parallel | parallel | * |
|
|
// | target parallel | parallel | * |
|
|
// | for | | |
|
|
// | for | | |
|
|
@@ -2749,8 +2714,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | for | | |
|
|
// | for | | |
|
|
// | target parallel | teams distribute| |
|
|
// | target parallel | teams distribute| |
|
|
// | for | | |
|
|
// | for | | |
|
|
- // | target parallel | teams distribute| |
|
|
|
|
- // | for | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | teams | parallel | * |
|
|
// | teams | parallel | * |
|
|
// | teams | for | + |
|
|
// | teams | for | + |
|
|
@@ -2796,8 +2759,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | teams | target simd | + |
|
|
// | teams | target simd | + |
|
|
// | teams | teams distribute| + |
|
|
// | teams | teams distribute| + |
|
|
- // | teams | teams distribute| + |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | taskloop | parallel | * |
|
|
// | taskloop | parallel | * |
|
|
// | taskloop | for | + |
|
|
// | taskloop | for | + |
|
|
@@ -2842,8 +2803,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | taskloop | target simd | * |
|
|
// | taskloop | target simd | * |
|
|
// | taskloop | teams distribute| + |
|
|
// | taskloop | teams distribute| + |
|
|
- // | taskloop | teams distribute| + |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | taskloop simd | parallel | |
|
|
// | taskloop simd | parallel | |
|
|
// | taskloop simd | for | |
|
|
// | taskloop simd | for | |
|
|
@@ -2889,8 +2848,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | taskloop simd | target simd | |
|
|
// | taskloop simd | target simd | |
|
|
// | taskloop simd | teams distribute| |
|
|
// | taskloop simd | teams distribute| |
|
|
- // | taskloop simd | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | distribute | parallel | * |
|
|
// | distribute | parallel | * |
|
|
// | distribute | for | * |
|
|
// | distribute | for | * |
|
|
@@ -2936,8 +2893,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | distribute | target simd | |
|
|
// | distribute | target simd | |
|
|
// | distribute | teams distribute| |
|
|
// | distribute | teams distribute| |
|
|
- // | distribute | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | distribute | parallel | * |
|
|
// | distribute | parallel | * |
|
|
// | parallel for | | |
|
|
// | parallel for | | |
|
|
@@ -3014,8 +2969,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | parallel for | | |
|
|
// | parallel for | | |
|
|
// | distribute | teams distribute| |
|
|
// | distribute | teams distribute| |
|
|
// | parallel for | | |
|
|
// | parallel for | | |
|
|
- // | distribute | teams distribute| |
|
|
|
|
- // | parallel for | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | distribute | parallel | * |
|
|
// | distribute | parallel | * |
|
|
// | parallel for simd| | |
|
|
// | parallel for simd| | |
|
|
@@ -3091,8 +3044,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | parallel for simd| | |
|
|
// | parallel for simd| | |
|
|
// | distribute | teams distribute| |
|
|
// | distribute | teams distribute| |
|
|
// | parallel for simd| | |
|
|
// | parallel for simd| | |
|
|
- // | distribute | teams distribute| |
|
|
|
|
- // | parallel for simd| simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | distribute simd | parallel | * |
|
|
// | distribute simd | parallel | * |
|
|
// | distribute simd | for | * |
|
|
// | distribute simd | for | * |
|
|
@@ -3138,8 +3089,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | distribute simd | target simd | * |
|
|
// | distribute simd | target simd | * |
|
|
// | distribute simd | teams distribute| * |
|
|
// | distribute simd | teams distribute| * |
|
|
- // | distribute simd | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | target parallel | parallel | * |
|
|
// | target parallel | parallel | * |
|
|
// | for simd | | |
|
|
// | for simd | | |
|
|
@@ -3215,8 +3164,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | for simd | | |
|
|
// | for simd | | |
|
|
// | target parallel | teams distribute| * |
|
|
// | target parallel | teams distribute| * |
|
|
// | for simd | | |
|
|
// | for simd | | |
|
|
- // | target parallel | teams distribute| |
|
|
|
|
- // | for simd | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | target simd | parallel | |
|
|
// | target simd | parallel | |
|
|
// | target simd | for | |
|
|
// | target simd | for | |
|
|
@@ -3262,8 +3209,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | target simd | target simd | |
|
|
// | target simd | target simd | |
|
|
// | target simd | teams distribute| |
|
|
// | target simd | teams distribute| |
|
|
- // | target simd | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
// | teams distribute | parallel | |
|
|
// | teams distribute | parallel | |
|
|
// | teams distribute | for | |
|
|
// | teams distribute | for | |
|
|
@@ -3308,83 +3253,6 @@ static bool CheckNestingOfRegions(Sema &SemaRef, DSAStackTy *Stack,
|
|
// | teams distribute | target parallel | |
|
|
// | teams distribute | target parallel | |
|
|
// | | for simd | |
|
|
// | | for simd | |
|
|
// | teams distribute | teams distribute| |
|
|
// | teams distribute | teams distribute| |
|
|
- // | teams distribute | teams distribute| |
|
|
|
|
- // | | simd | |
|
|
|
|
- // +------------------+-----------------+------------------------------------+
|
|
|
|
- // | teams distribute | parallel | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | for | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | for simd | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | master | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | critical | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | simd | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | sections | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | section | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | single | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | parallel for | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute |parallel for simd| |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute |parallel sections| |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | task | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | taskyield | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | barrier | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | taskwait | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | taskgroup | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | flush | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | ordered | + (with simd clause) |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | atomic | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | target | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | target parallel | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | target parallel | |
|
|
|
|
- // | simd | for | |
|
|
|
|
- // | teams distribute | target enter | |
|
|
|
|
- // | simd | data | |
|
|
|
|
- // | teams distribute | target exit | |
|
|
|
|
- // | simd | data | |
|
|
|
|
- // | teams distribute | teams | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | cancellation | |
|
|
|
|
- // | simd | point | |
|
|
|
|
- // | teams distribute | cancel | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | taskloop | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | taskloop simd | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | distribute | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | distribute | |
|
|
|
|
- // | simd | parallel for | |
|
|
|
|
- // | teams distribute | distribute | |
|
|
|
|
- // | simd |parallel for simd| |
|
|
|
|
- // | teams distribute | distribute simd | |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | target parallel | |
|
|
|
|
- // | simd | for simd | |
|
|
|
|
- // | teams distribute | teams distribute| |
|
|
|
|
- // | simd | | |
|
|
|
|
- // | teams distribute | teams distribute| |
|
|
|
|
- // | simd | simd | |
|
|
|
|
// +------------------+-----------------+------------------------------------+
|
|
// +------------------+-----------------+------------------------------------+
|
|
if (Stack->getCurScope()) {
|
|
if (Stack->getCurScope()) {
|
|
auto ParentRegion = Stack->getParentDirective();
|
|
auto ParentRegion = Stack->getParentDirective();
|
|
@@ -3905,10 +3773,6 @@ StmtResult Sema::ActOnOpenMPExecutableDirective(
|
|
Res = ActOnOpenMPTeamsDistributeDirective(
|
|
Res = ActOnOpenMPTeamsDistributeDirective(
|
|
ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
|
|
ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
|
|
break;
|
|
break;
|
|
- case OMPD_teams_distribute_simd:
|
|
|
|
- Res = ActOnOpenMPTeamsDistributeSimdDirective(
|
|
|
|
- ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
|
|
|
|
- break;
|
|
|
|
case OMPD_declare_target:
|
|
case OMPD_declare_target:
|
|
case OMPD_end_declare_target:
|
|
case OMPD_end_declare_target:
|
|
case OMPD_threadprivate:
|
|
case OMPD_threadprivate:
|
|
@@ -7601,55 +7465,6 @@ StmtResult Sema::ActOnOpenMPTeamsDistributeDirective(
|
|
Context, StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
|
|
Context, StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
|
|
}
|
|
}
|
|
|
|
|
|
-StmtResult Sema::ActOnOpenMPTeamsDistributeSimdDirective(
|
|
|
|
- ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
|
|
|
|
- SourceLocation EndLoc,
|
|
|
|
- llvm::DenseMap<ValueDecl *, Expr *> &VarsWithImplicitDSA) {
|
|
|
|
- if (!AStmt)
|
|
|
|
- return StmtError();
|
|
|
|
-
|
|
|
|
- CapturedStmt *CS = cast<CapturedStmt>(AStmt);
|
|
|
|
- // 1.2.2 OpenMP Language Terminology
|
|
|
|
- // Structured block - An executable statement with a single entry at the
|
|
|
|
- // top and a single exit at the bottom.
|
|
|
|
- // The point of exit cannot be a branch out of the structured block.
|
|
|
|
- // longjmp() and throw() must not violate the entry/exit criteria.
|
|
|
|
- CS->getCapturedDecl()->setNothrow();
|
|
|
|
-
|
|
|
|
- OMPLoopDirective::HelperExprs B;
|
|
|
|
- // In presence of clause 'collapse' with number of loops, it will
|
|
|
|
- // define the nested loops number.
|
|
|
|
- unsigned NestedLoopCount =
|
|
|
|
- CheckOpenMPLoop(OMPD_teams_distribute_simd,
|
|
|
|
- getCollapseNumberExpr(Clauses),
|
|
|
|
- nullptr /*ordered not a clause on distribute*/, AStmt,
|
|
|
|
- *this, *DSAStack, VarsWithImplicitDSA, B);
|
|
|
|
-
|
|
|
|
- if (NestedLoopCount == 0)
|
|
|
|
- return StmtError();
|
|
|
|
-
|
|
|
|
- assert((CurContext->isDependentContext() || B.builtAll()) &&
|
|
|
|
- "omp teams distribute simd loop exprs were not built");
|
|
|
|
-
|
|
|
|
- if (!CurContext->isDependentContext()) {
|
|
|
|
- // Finalize the clauses that need pre-built expressions for CodeGen.
|
|
|
|
- for (auto C : Clauses) {
|
|
|
|
- if (auto *LC = dyn_cast<OMPLinearClause>(C))
|
|
|
|
- if (FinishOpenMPLinearClause(*LC, cast<DeclRefExpr>(B.IterationVarRef),
|
|
|
|
- B.NumIterations, *this, CurScope,
|
|
|
|
- DSAStack))
|
|
|
|
- return StmtError();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (checkSimdlenSafelenSpecified(*this, Clauses))
|
|
|
|
- return StmtError();
|
|
|
|
-
|
|
|
|
- getCurFunction()->setHasBranchProtectedScope();
|
|
|
|
- return OMPTeamsDistributeSimdDirective::Create(
|
|
|
|
- Context, StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
OMPClause *Sema::ActOnOpenMPSingleExprClause(OpenMPClauseKind Kind, Expr *Expr,
|
|
OMPClause *Sema::ActOnOpenMPSingleExprClause(OpenMPClauseKind Kind, Expr *Expr,
|
|
SourceLocation StartLoc,
|
|
SourceLocation StartLoc,
|
|
SourceLocation LParenLoc,
|
|
SourceLocation LParenLoc,
|