Hahnfeld added a comment. In https://reviews.llvm.org/D52733#1252966, @ABataev wrote:
> In https://reviews.llvm.org/D52733#1252963, @Hahnfeld wrote: > > > In https://reviews.llvm.org/D52733#1251421, @ABataev wrote: > > > > > It might lead to increased register pressure, isn't it? Currently, I'm > > > trying to emit the code that can be optimized out and, thus, may decrease > > > the register pressure. That's why I tried to reduce the number of the > > > runtime checks. > > > > > > You are right, it's increasing register usage but I think it shouldn't: The > > generated code is always checking `__kmpc_is_spmd_exec_mode` first. So if > > LLVM would be able to optimize this out in SPMD mode, > > `__kmpc_parallel_level` should never be called. > > > > I guess this doesn't work because it's illegal to hoist the load of > > `execution_param` across a barrier? > > > Even if we will be able to reduce register usage for SPMD, it still going to > be high for non-SPMD constructs. The optimizer is not able to understand that > it is in parallel region or not during the compilation phase Instead we avoid the runtime overhead of data sharing. Plus we'll be able to drop around 2 thirds of the static data allocation in `libomptarget-nvptx` which leaves more room for the user's application... We'll see, for now I agree that the added registers for SPMD are unacceptable. Repository: rC Clang https://reviews.llvm.org/D52733 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits