Skip to content

Commit bf7fd24

Browse files
authored
Merge pull request #185 from azabazno/predef_macros_opencl_30_clang_10
OpenCL C 3.0 patch update: define predefined macros in header if they…
2 parents 8f69f7b + 237bae9 commit bf7fd24

File tree

1 file changed

+75
-7
lines changed

1 file changed

+75
-7
lines changed

patches/clang/0001-OpenCL-3.0-support.patch

Lines changed: 75 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
From d1268ce4bb64cde0778031126a56b606974c5344 Mon Sep 17 00:00:00 2001
1+
From 72faf1cc613306eebd1d8c041a0ffd892e350e7c Mon Sep 17 00:00:00 2001
22
From: Anton Zabaznov <[email protected]>
33
Date: Tue, 22 Sep 2020 19:03:50 +0300
44
Subject: [PATCH] OpenCL 3.0 support
@@ -21,7 +21,7 @@ Subject: [PATCH] OpenCL 3.0 support
2121
clang/lib/CodeGen/CodeGenFunction.cpp | 6 +-
2222
clang/lib/Frontend/CompilerInvocation.cpp | 22 +-
2323
clang/lib/Frontend/InitPreprocessor.cpp | 7 +-
24-
clang/lib/Headers/opencl-c-base.h | 15 +-
24+
clang/lib/Headers/opencl-c-base.h | 76 +-
2525
clang/lib/Headers/opencl-c.h | 3227 ++++++++++++++---
2626
clang/lib/Parse/ParseDecl.cpp | 12 +-
2727
clang/lib/Parse/ParsePragma.cpp | 10 +-
@@ -72,7 +72,7 @@ Subject: [PATCH] OpenCL 3.0 support
7272
.../SemaOpenCL/invalid-pipe-builtin-cl2.0.cl | 1 +
7373
clang/test/SemaOpenCL/storageclass-cl20.cl | 1 +
7474
.../TableGen/ClangOpenCLBuiltinEmitter.cpp | 35 +-
75-
68 files changed, 3601 insertions(+), 723 deletions(-)
75+
68 files changed, 3662 insertions(+), 723 deletions(-)
7676
create mode 100644 clang/test/CodeGenOpenCL/generic-address-space-feature.cl
7777
create mode 100644 clang/test/Sema/feature-extensions-simult-support.cl
7878
create mode 100644 clang/test/Sema/features-ignore-pragma.cl
@@ -830,19 +830,87 @@ index c273cb96d9b..516286ef3ff 100644
830830
#include "clang/Basic/OpenCLExtensions.def"
831831

832832
diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h
833-
index 430e07d36f6..972fc7f4575 100644
833+
index 430e07d36f6..b10c6ece744 100644
834834
--- a/clang/lib/Headers/opencl-c-base.h
835835
+++ b/clang/lib/Headers/opencl-c-base.h
836-
@@ -115,7 +115,7 @@ typedef half half4 __attribute__((ext_vector_type(4)));
836+
@@ -9,6 +9,62 @@
837+
#ifndef _OPENCL_BASE_H_
838+
#define _OPENCL_BASE_H_
839+
840+
+// Add predefined macros to build headers with standalone executable
841+
+#ifndef CL_VERSION_3_0
842+
+ #define CL_VERSION_3_0 300
843+
+#endif
844+
+#ifndef __OPENCL_MEMORY_SCOPE_ALL_DEVICES
845+
+ #define __OPENCL_MEMORY_SCOPE_ALL_DEVICES 5
846+
+#endif
847+
+
848+
+// Define features for 2.0 for header backward compatibility
849+
+#ifndef __opencl_c_int64
850+
+ #define __opencl_c_int64 1
851+
+#endif
852+
+#if __OPENCL_C_VERSION__ != CL_VERSION_3_0
853+
+ #ifndef __opencl_c_images
854+
+ #define __opencl_c_images 1
855+
+ #endif
856+
+#endif
857+
+#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ == CL_VERSION_2_0)
858+
+#ifndef __opencl_c_pipes
859+
+ #define __opencl_c_pipes 1
860+
+#endif
861+
+#ifndef __opencl_c_generic_address_space
862+
+ #define __opencl_c_generic_address_space 1
863+
+#endif
864+
+#ifndef __opencl_c_work_group_collective_functions
865+
+ #define __opencl_c_work_group_collective_functions 1
866+
+#endif
867+
+#ifndef __opencl_c_atomic_order_acq_rel
868+
+ #define __opencl_c_atomic_order_acq_rel 1
869+
+#endif
870+
+#ifndef __opencl_c_atomic_order_seq_cst
871+
+ #define __opencl_c_atomic_order_seq_cst 1
872+
+#endif
873+
+#ifndef __opencl_c_atomic_scope_device
874+
+ #define __opencl_c_atomic_scope_device 1
875+
+#endif
876+
+#ifndef __opencl_c_atomic_scope_all_devices
877+
+ #define __opencl_c_atomic_scope_all_devices 1
878+
+#endif
879+
+#ifndef __opencl_c_subgroups
880+
+ #define __opencl_c_subgroups 1
881+
+#endif
882+
+#ifndef __opencl_c_3d_image_writes
883+
+ #define __opencl_c_3d_image_writes 1
884+
+#endif
885+
+#ifndef __opencl_c_device_enqueue
886+
+ #define __opencl_c_device_enqueue 1
887+
+#endif
888+
+#ifndef __opencl_c_read_write_images
889+
+ #define __opencl_c_read_write_images 1
890+
+#endif
891+
+#ifndef __opencl_c_program_scope_global_variables
892+
+ #define __opencl_c_program_scope_global_variables 1
893+
+#endif
894+
+#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ == CL_VERSION_2_0)
895+
+
896+
// built-in scalar data types:
897+
898+
/**
899+
@@ -115,7 +171,12 @@ typedef half half4 __attribute__((ext_vector_type(4)));
837900
typedef half half8 __attribute__((ext_vector_type(8)));
838901
typedef half half16 __attribute__((ext_vector_type(16)));
839902
#endif
840903
-#ifdef cl_khr_fp64
841904
+#if defined(cl_khr_fp64) || defined(__opencl_c_fp64)
905+
+
906+
+#ifndef __opencl_c_fp64
907+
+ #define __opencl_c_fp64 1
908+
+#endif
909+
+
842910
#if __OPENCL_C_VERSION__ < CL_VERSION_1_2
843911
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
844912
#endif
845-
@@ -281,9 +281,15 @@ typedef uint cl_mem_fence_flags;
913+
@@ -281,9 +342,15 @@ typedef uint cl_mem_fence_flags;
846914
typedef enum memory_scope {
847915
memory_scope_work_item = __OPENCL_MEMORY_SCOPE_WORK_ITEM,
848916
memory_scope_work_group = __OPENCL_MEMORY_SCOPE_WORK_GROUP,
@@ -859,7 +927,7 @@ index 430e07d36f6..972fc7f4575 100644
859927
memory_scope_sub_group = __OPENCL_MEMORY_SCOPE_SUB_GROUP
860928
#endif
861929
} memory_scope;
862-
@@ -301,13 +307,14 @@ typedef enum memory_scope {
930+
@@ -301,13 +368,14 @@ typedef enum memory_scope {
863931
#define ATOMIC_FLAG_INIT 0
864932

865933
// enum values aligned with what clang uses in EmitAtomicExpr()

0 commit comments

Comments
 (0)