Revert "[OpenMP] Codegen aggregate for outlined function captures"This reverts commit 1d66649adf28d48ae1731516d87fb899426e3349.Revert to fix AMG GPU issue.
[OpenMP] Codegen aggregate for outlined function capturesParallel regions are outlined as functions with capture variables explicitly generated as distinct parameters in the function's argument lis
[OpenMP] Codegen aggregate for outlined function capturesParallel regions are outlined as functions with capture variables explicitly generated as distinct parameters in the function's argument list. That complicates the fork_call interface in the OpenMP runtime: (1) the fork_call is variadic since there is a variable number of arguments to forward to the outlined function, (2) wrapping/unwrapping arguments happens in the OpenMP runtime, which is sub-optimal, has been a source of ABI bugs, and has a hardcoded limit (16) in the number of arguments, (3) forwarded arguments must cast to pointer types, which complicates debugging. This patch avoids those issues by aggregating captured arguments in a struct to pass to the fork_call.Reviewed By: jdoerfert, jhuber6Differential Revision: https://reviews.llvm.org/D102107
show more ...
Revert "[OpenMP] Codegen aggregate for outlined function captures"This reverts commit e9c7291cb25f071f1a1dfa4049ed9f5a8a217b3e.Fix failing tests
[OpenMP] Codegen aggregate for outlined function capturesParallel regions are outlined as functions with capture variables explicitly generated as distinct parameters in the function's argument list. That complicates the fork_call interface in the OpenMP runtime: (1) the fork_call is variadic since there is a variable number of arguments to forward to the outlined function, (2) wrapping/unwrapping arguments happens in the OpenMP runtime, which is sub-optimal, has been a source of ABI bugs, and has a hardcoded limit (16) in the number of arguments, (3) forwarded arguments must cast to pointer types, which complicates debugging. This patch avoids those issues by aggregating captured arguments in a struct to pass to the fork_call.Reviewed By: jdoerfertDifferential Revision: https://reviews.llvm.org/D102107
[OpenMP] Simplify offloading parallel call codegenThis revision simplifies Clang codegen for parallel regions in OpenMP GPU target offloading and corresponding changes in libomptarget: SPMD/non-SPM
[OpenMP] Simplify offloading parallel call codegenThis revision simplifies Clang codegen for parallel regions in OpenMP GPU target offloading and corresponding changes in libomptarget: SPMD/non-SPMD parallel calls are unified under a single `kmpc_parallel_51` runtime entry point for parallel regions (which will be commonized between target, host-side parallel regions), data sharing is internalized to the runtime. Tests have been auto-generated using `update_cc_test_checks.py`. Also, the revision contains changes to OpenMPOpt for remark creation on target offloading regions.Reviewed By: jdoerfert, MeinersburDifferential Revision: https://reviews.llvm.org/D95976