Implement the GOMP functions to support task reductions in taskgroup, parallel, loop, and taskloop constructs. The unused mem argument to many of the work-sharing constructs has to do with the implementation of the scan() directive & inscan() modifier. If mem is set, each function will call KMP_FATAL() and tell the user scan/inscan is unsupported. The GOMP reduction implementation is kept separate from our implementation because of how GOMP presents reduction data and computes the reductions.
GOMP expects the privatized copies to be present even after a #pragma omp parallel reduction(task:...) region has ended so the data is stored inside GOMP's uintptr_t* array structure. This style is tightly coupled with GCC compiler codegen. There isn't any init(), combiner(), fini() functions in GOMP's codegen either so the two implementations are too disparate to attempt wrapping GOMP's methods around our own.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Update tests UNSUPPORTED/XFAIL lines. clang-11 supports task reductions for test task_reduction[2-4].c