Implement OpenMP lowering for iterator modifier in depend/from/map/to
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
Implement iterator modifier support in depend/from/map/to by following the proposal in omp.iterator PR (#182218).
- [DONE] affinity clause: each iteration returns !omp.iterated.
omp.affinity_entry have enough info to build kmp_task_affinity_info_t.
- [DONE] depend clause: each iteration returns something like !omp.iterated
- [TODO] map/to/from: each iteration returns !omp.iterated
```
%it = omp.iterators(%iv: index) = (%lb to %ub step %step) {
%e = omp.affinity_entry %addr, %len
: (!llvm.ptr, i64) -> !omp.affinity_entry_ty
omp.yield(%e : !omp.affinity_entry_ty)
} -> !omp.iterated>
omp.task affinity(%it : !omp.iterated>) {
omp.terminator
}
```
Conceptually, this lowers to:
```
kmp_task_affinity_info_t affinity_info_list[tripcounts];
for (int i = lb; i < ub; i += step) {
affinity_info_list[i] = omp.iterators(i);
}
```
Contributor guide
Assessment
This issue has not been assessed yet.