azabaznov added a comment.

> I guess targets like SPIR will be supporting all features by default?

It sounds confusing for me: can you please elaborate about why does SPIR-V 
target should support all features/extension by default? If we are compiling 
OpenCL C 3.0 with optional functionality we most likely want to get an error in 
FE level if some functionality is not supported by the target, but not in BE 
after SPIR-V translation.



================
Comment at: clang/include/clang/Basic/OpenCLExtensions.def:110
+OPENCLFEAT_INTERNAL(__opencl_c_generic_address_space, 200, ~0U)
+OPENCLFEAT_INTERNAL(__opencl_c_work_group_collective_functions, 200, ~0U)
+OPENCLFEAT_INTERNAL(__opencl_c_atomic_order_acq_rel, 200, ~0U)
----------------
Anastasia wrote:
> Does this need to be in the frontend?
I can remove features which affect only header from this file. But in this case 
we need to extend '-cl-ext' to register unknown features/extensions 
(http://lists.llvm.org/pipermail/cfe-dev/2020-October/066932.html). I think 
this option functionality extending should be done in a separate commit, so we 
can keep this kind of features here at least for now. What do you think?


================
Comment at: clang/include/clang/Basic/OpenCLExtensions.def:121
+OPENCLFEAT_INTERNAL(__opencl_c_fp64, 120, ~0U)
+OPENCLFEAT_INTERNAL(__opencl_c_int64, 100, ~0U)
+OPENCLFEAT_INTERNAL(__opencl_c_images, 100, ~0U)
----------------
Anastasia wrote:
> if we are not going to change clang to make int64 conditional I would suggest 
> we don't add this here for now.
Yes, that sounds reasonable to be.


================
Comment at: clang/include/clang/Basic/OpenCLOptions.h:105
     }
     OptMap[Ext].Supported = V;
   }
----------------
Anastasia wrote:
> I guess we need to make sure that targets can't conditionally support 
> features in OpenCL 2.0 or earlier standards.
This can be done by adding a new method 
//TargetInfo::setSupportedOpenCL30Features()// which can be called in 
//::adjust//, does this make sense? I believe now current  options setting 
(//TargetInfo::setSupportedOpenCLOpts()//) knows nothing about OpenCL version 
which.


================
Comment at: clang/lib/Frontend/CompilerInstance.cpp:950
+  if (getLangOpts().OpenCL)
+    getTarget().getSupportedOpenCLOpts().adjustFeatures(getLangOpts());
+
----------------
Anastasia wrote:
> Would it be possible to move this into `getTarget().adjust(getLangOpts())` 
> just below. There is a FIXME that explains that we should be doing such 
> adjustment differently but we haven't solved it with time so let's keep the 
> flow as is for now. 
Yeah, this can be moved there. Btw a lot of OpenCL C 3.0 options setting will 
take place in //::adjust//...


================
Comment at: clang/test/Preprocessor/opencl-feature-extension-simult.cl:15
+
+// RUN: %clang_cc1 %s -E -cl-std=CL3.0 -cl-ext=-all__opencl_c_fp64
+// RUN: %clang_cc1 %s -E -cl-std=CL3.0 -cl-ext=+__opencl_c_fp64
----------------
Anastasia wrote:
> Is this a typo?
> 
> `all__opencl_c_fp64`
Ah, yeah, thanks, Will definitely change that.


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

https://reviews.llvm.org/D89869

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

Reply via email to