aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/StringExtrasTest.cpp
diff options
context:
space:
mode:
authorChaitanya <Krishna.Sankisa@amd.com>2025-10-18 07:56:32 +0530
committerGitHub <noreply@github.com>2025-10-18 07:56:32 +0530
commitf4fe7145df9f952808884f653b5bb4bb992b7b06 (patch)
treef58dcf711b67d40d64948cd17ab568464ea6dcce /llvm/unittests/ADT/StringExtrasTest.cpp
parenteed8d3aa4aa6efe01fcf7bd56015b671f5f18e29 (diff)
downloadllvm-f4fe7145df9f952808884f653b5bb4bb992b7b06.zip
llvm-f4fe7145df9f952808884f653b5bb4bb992b7b06.tar.gz
llvm-f4fe7145df9f952808884f653b5bb4bb992b7b06.tar.bz2
[Flang][OpenMP] Implement workdistribute construct lowering (#140523)
This PR introduces a new pass "lower-workdistribute" Fortran array statements are lowered to fir as fir.do_loop unordered. "lower-workdistribute" pass works mainly on identifying "fir.do_loop unordered" that is nested in target{teams{workdistribute{fir.do_loop unordered}}} and lowers it to target{teams{parallel{wsloop{loop_nest}}}}. It hoists all the other ops outside target region. Relaces heap allocation on target with omp.target_allocmem and deallocation with omp.target_freemem from host. Also replaces runtime function "Assign" with omp.target_memcpy from host. This pass implements following rewrites and optimisations: - **FissionWorkdistribute**: finds the parallelizable ops within teams {workdistribute} region and moves them to their own teams{workdistribute} region. - **WorkdistributeRuntimeCallLower**: finds the FortranAAssign calls nested in teams {workdistribute{}} and lowers it to unordered do loop if src is scalar and dest is array. Other runtime calls are not handled currently. - **WorkdistributeDoLower**: finds the fir.do_loop unoredered nested in teams {workdistribute{fir.do_loop unoredered}} and lowers it to teams {parallel { distribute {wsloop {loop_nest}}}}. - **TeamsWorkdistributeToSingle**: hoists all the ops inside teams {workdistribute{}} before teams op. The work in this PR is C-P and updated from @ivanradanov commits from coexecute implementation: [flang_workdistribute_iwomp_2024](https://github.com/ivanradanov/llvm-project/commits/flang_workdistribute_iwomp_2024) Paper related to this work by @ivanradanov ["Automatic Parallelization and OpenMP Offloadingof Fortran Array Notation"](https://www.osti.gov/servlets/purl/[2449728](https://www.osti.gov/servlets/purl/2449728))
Diffstat (limited to 'llvm/unittests/ADT/StringExtrasTest.cpp')
0 files changed, 0 insertions, 0 deletions