Anastasia added inline comments.

================
Comment at: clang/lib/Sema/OpenCLBuiltins.td:932
+let MinVersion = CL20 in {
+  def : Builtin<"get_fence", [MemFenceFlags, PointerType<Void, GenericAS>]>;
+  def : Builtin<"get_fence", [MemFenceFlags, PointerType<ConstType<Void>, 
GenericAS>]>;
----------------
svenvh wrote:
> Anastasia wrote:
> > Btw, I am guessing you are matching the behavior of `opencl-c.h`, but 
> > however it doesn't seem entirely conformant.
> > 
> > `cl_mem_fence_flags get_fence(gentype *ptr)`
> > 
> > So I guess we should have implemented these as other functions from `Table 
> > 22. Built-in Address Space Qualifier Functions` in clang? But since the 
> > void pointer is only used as a parameter and not return value I doubt this 
> > is customer visible. Should we add a comment or something?
> > 
> > 
> > 
> Yes, I'm matching  `opencl-c.h` here, as the "gentype argument to indicate 
> any of the built-in data types supported by OpenCL C or a user defined type.  
> Since this cannot be captured" can't be expressed literally.  I can add the 
> following comment if that makes sense?
> ```// The OpenCL 3.0 specification defines these with a "gentype" argument 
> indicating any builtin
> // type or user-defined type, which cannot be represented currently.  Hence 
> we slightly diverge
> // from this by providing only the following two overloads with a void 
> pointer.
> ```
Yes, I think a comment is good enough. We could even create a spec bug because 
it is literally not possible to implement without a **magic** and just using 
`void*` is so easy and straight forward.


================
Comment at: clang/lib/Sema/OpenCLBuiltins.td:1103
   }
   foreach TypePair = [[AtomicInt, Int, Int], [AtomicUInt, UInt, UInt],
                       [AtomicLong, Long, Long], [AtomicULong, ULong, ULong],
----------------
I think this should be renamed now, but we can do as a separate change.

I would suggest using something like `OverloadTypes` instead...


================
Comment at: clang/test/SemaOpenCL/fdeclare-opencl-builtins.cl:185
+#if !defined(NO_HEADER) && (defined(__OPENCL_CPP_VERSION__) || 
__OPENCL_C_VERSION__ >= 200)
+  sub_group_barrier(CLK_GLOBAL_MEM_FENCE, memory_scope_device);
+#endif
----------------
svenvh wrote:
> Anastasia wrote:
> > Should `work_group_barrier` and fences also be added to the testing?
> MemFenceFlags are already tested using `barrier()` on line 23, so not 
> strictly needed.  I added this test to verify the combination of 
> MemFenceFlags and extensions.  Do you think we're missing any tablegen 
> functionality coverage that would require adding more builtins to the test 
> (also taking into account the comment on lines 10-13)?
Taking into account the definition it's not easy to tell. I was trying to apply 
the strategy of any new group of declarations is to be tested but it might not 
be the original intention. I still think we do need to come up with some sort 
of unambiguous strategy but perhaps it is not in the scope of this patch. 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D96860

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

Reply via email to