svenvh added inline comments.

================
Comment at: clang/lib/Sema/OpenCLBuiltins.td:1108
+
+let Extension = FuncExtFloatAtomics in {
+  let MinVersion = CL20 in {
----------------
So now all of those builtins are guarded by `cl_ext_float_atomics`, which is 
good, but not by any of the `__opencl_c_ext_...` macros yet.

To guard by multiple macros, we'd need to do something like:
```
def FuncExtFloatAtomicsFp32GlobalMinMax  : 
FunctionExtension<"cl_ext_float_atomics 
__opencl_c_ext_fp32_global_atomic_min_max">;
def FuncExtFloatAtomicsFp32LocalMinMax   : 
FunctionExtension<"cl_ext_float_atomics 
__opencl_c_ext_fp32_local_atomic_min_max">;
```

And then use `let Extension = FuncExtFloatAtomics...` around the corresponding 
builtins.  You shouldn't have to change the loop structure much for this, as 
you can hopefully use `#` concatenation to construct the appropriate FuncExt 
name (and then `!cast` it to a record).

However, I do see some problematic cases: the generic address space builtins 
are enabled by one of multiple feature macros, which is something that is 
currently not supported by the OpenCLBuiltins.td handling.  If it's not too 
late, could we ask the extension spec editors to provide a dedicated feature 
macro for generic perhaps?


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

https://reviews.llvm.org/D106343

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

Reply via email to