[PATCH] D128022: [HIP] add -fhip-kernel-arg-name

Artem Belevich via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 22 14:26:01 PDT 2022


tra added inline comments.


================
Comment at: clang/lib/CodeGen/CodeGenModule.cpp:1845-1846
+  }
+  if (getCodeGenOpts().EmitOpenCLArgMetadata ||
+      getCodeGenOpts().HIPSaveKernelArgName)
     Fn->setMetadata("kernel_arg_name",
----------------
yaxunl wrote:
> yaxunl wrote:
> > tra wrote:
> > > tra wrote:
> > > > Should we consolidate both options into `-fkernel-arg-info` and make `-cl-kernel-arg-info` an alias to it?
> > > Also, this check is odd. For some reason only *arg name*  metadata is set conditionally, but for whatever reason OpenCL sets other arg metadata unconditionally.
> > > 
> > > Now I'm really curious what's so special about "kernel_arg_name" vs the other arg metadata.
> > > Should we consolidate both options into `-fkernel-arg-info` and make `-cl-kernel-arg-info` an alias to it?
> > 
> > -cl-kernel-arg-info is an OpenCL option defined in OpenCL spec, therefore is made OpenCL only option. It would be confusing to allow it with other languages.
> > Also, this check is odd. For some reason only *arg name*  metadata is set conditionally, but for whatever reason OpenCL sets other arg metadata unconditionally.
> > 
> > Now I'm really curious what's so special about "kernel_arg_name" vs the other arg metadata.
> 
> The other metadata are mandatory because they are necessary for OpenCL runtime to set kernel argument.
> 
> The kernel argument name is emitted only with -cl-kernel-arg-info since it is only used to support clGetKernelArgInfo which requires -cl-kernel-arg-info to work.
>  It would be confusing to allow it with other languages.

On the other hand having two options that control exactly the same functionality also looks odd to me.

The way I see it is that an entity may have more than one name. OpenCL standard requires that that particular functionality must be enabled via `-cl-kernel-arg-info` and I'm not proposing to change that. The OpenCL standard has no say whether that flag may have a different name in addition to the standard-required one.

This is similar to how over time we've been transitioning what used to be CUDA-only options into their generic `-gpu` and `-offload` variants, only in this case OpenCL functionality becomes useful outside of OpenCL.



CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D128022/new/

https://reviews.llvm.org/D128022



More information about the cfe-commits mailing list