azabaznov added a comment.

In D96524#2692376 <https://reviews.llvm.org/D96524#2692376>, @Anastasia wrote:

> In D96524#2691428 <https://reviews.llvm.org/D96524#2691428>, @azabaznov wrote:
>
>> My main idea was to provide an interface which will not make users to 
>> specify `-cl-ext=+__opencl_c_fp64,+cl_khr_fp64`/ 
>> `-cl-ext=-__opencl_c_fp64,-cl_khr_fp64` if they need to enable/disable 
>> functionality in OpenCL C 3.0 because I believe that is not a right thing to 
>> do: why anyone should care about those extensions if there are features 
>> already? Also, this may lead to confusions since, for example, 
>> `__opencl_c_subgroups` and `cl_khr_subgroups `are not the same (subgroup 
>> independent forward progress is required in extension while it is optional 
>> in OpenCL C 3.0, thus implementation may support the extension but not the 
>> feature).
>>
>> To be clear: I'm OK with providing a validation of correct option settings 
>> (`__opencl_c_fp64/cl_khr_fp64` and 
>> `__opencl_c_3d_image_writes/cl_khr_3d_image_writes` should both be set to 
>> the same value). Also, it makes sense to unify a check within header and 
>> clang to the only macro, I'm OK with that too. But I would prefer to keep 
>> the option interface without redundant mentioning of extension.
>
> Ok, let's implement both - we can add an early check of consistency of 
> options and therefore will only need to use one for checking during the 
> parsing and let's simplify the interface of `-cl-ext`.  Since it is a 
> frontend option and new functionality doesn't cause backward compatibility 
> issues i.e. only affects OpenCL 3.0 onwards, so I see no risk. Could you 
> please update the help documentation of the option explaining the new 
> behavior? Then let's concentrate the whole logic for setting the options and 
> keeping the consistency between the equivalent ones in 
> `TargetInfo::setCommandLineOpenCLOpts` directly? This will provide cleaner 
> flow due to encapsulation and will make it clear where the use case comes 
> from. Does it make sense?

Sure, agree. FYI I'm looking to a proper way of validating a target already. 
There already exists `TargetInfo::validateTarget`. I wanted to reuse that (just 
don't want to introduce yet another interface for OpenCL in Target), but I'm 
again bumping into some problems because of our //special// OpenCL options 
settings: a target should be immutable once created; and language options are 
not used to create a target. I'm just wondering if there is some more 
refactoring is needed...


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D96524

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to