[PATCH] D90670: Simplifying memory globalization from the front end to move optimizations to the middle end.

Jose Manuel Monsalve Diaz via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 2 22:42:28 PST 2020


josemonsalve2 created this revision.
josemonsalve2 added a reviewer: jdoerfert.
Herald added projects: clang, OpenMP, LLVM.
Herald added subscribers: llvm-commits, openmp-commits, cfe-commits.
josemonsalve2 requested review of this revision.
Herald added a subscriber: sstefan1.

Memory globalization was fully implemented in the front end. There are three runtime
functions in Libomptarget:

- __kmpc_data_sharing_push_stack
- __kmpc_data_sharing_coalesced_push_stack
- __kmpc_data_sharing_pop_stack

The front end performed a scape analysis and created a record declare with all the stack
variables. Then, based on the context (isTTD and other parameters) it would create a push
for the size of the record, or for that size multiplied by the WARP (to globalize for the 
whole WARP.

This PR removes the record creation, and it simplifies the front end to be a simple runtime
call that will be later on optimized in the middle end. The middle end will be able to 
determine the stack variables that do scape, and those that do not, as well as the 
approrpiate merging of different globalized variables


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D90670

Files:
  clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
  clang/lib/CodeGen/CGOpenMPRuntimeGPU.h
  llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
  openmp/libomptarget/deviceRTLs/common/src/data_sharing.cu
  openmp/libomptarget/deviceRTLs/interface.h

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90670.302467.patch
Type: text/x-patch
Size: 29630 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201103/224b794d/attachment.bin>


More information about the llvm-commits mailing list