[clang] b5995fc - [OpenCL] Limit popcount to OpenCL 1.2 and above

Sven van Haastregt via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 31 01:54:30 PDT 2021


Author: Sven van Haastregt
Date: 2021-03-31T09:54:18+01:00
New Revision: b5995fced41de0885a5ef8f1b8a25ef45d8be711

URL: https://github.com/llvm/llvm-project/commit/b5995fced41de0885a5ef8f1b8a25ef45d8be711
DIFF: https://github.com/llvm/llvm-project/commit/b5995fced41de0885a5ef8f1b8a25ef45d8be711.diff

LOG: [OpenCL] Limit popcount to OpenCL 1.2 and above

s6.15.3 of the OpenCL C Specification v3.0.6 states that OpenCL 1.2 or
newer is required.

Added: 
    

Modified: 
    clang/lib/Headers/opencl-c.h
    clang/lib/Sema/OpenCLBuiltins.td

Removed: 
    


################################################################################
diff  --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h
index c0b7072d5b0ae..6a532db4b1cb2 100644
--- a/clang/lib/Headers/opencl-c.h
+++ b/clang/lib/Headers/opencl-c.h
@@ -9907,6 +9907,7 @@ ulong16 __ovld __cnfn upsample(uint16 hi, uint16 lo);
 /*
  * popcount(x): returns the number of set bit in x
  */
+#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
 char __ovld __cnfn popcount(char x);
 uchar __ovld __cnfn popcount(uchar x);
 char2 __ovld __cnfn popcount(char2 x);
@@ -9955,6 +9956,7 @@ long8 __ovld __cnfn popcount(long8 x);
 ulong8 __ovld __cnfn popcount(ulong8 x);
 long16 __ovld __cnfn popcount(long16 x);
 ulong16 __ovld __cnfn popcount(ulong16 x);
+#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
 
 /**
  * Multiply two 24-bit integer values x and y and add

diff  --git a/clang/lib/Sema/OpenCLBuiltins.td b/clang/lib/Sema/OpenCLBuiltins.td
index 1ff658e567b84..2ea70ae3234d9 100644
--- a/clang/lib/Sema/OpenCLBuiltins.td
+++ b/clang/lib/Sema/OpenCLBuiltins.td
@@ -579,8 +579,9 @@ foreach name = ["half_divide", "half_powr",
 foreach name = ["abs"] in {
   def : Builtin<name, [AI2UGenTypeN, AIGenTypeN], Attr.Const>;
 }
-foreach name = ["clz", "popcount"] in {
-  def : Builtin<name, [AIGenTypeN, AIGenTypeN], Attr.Const>;
+def : Builtin<"clz", [AIGenTypeN, AIGenTypeN], Attr.Const>;
+let MinVersion = CL12 in {
+  def : Builtin<"popcount", [AIGenTypeN, AIGenTypeN], Attr.Const>;
 }
 let MinVersion = CL20 in {
   foreach name = ["ctz"] in {


        


More information about the cfe-commits mailing list