1
- From d1268ce4bb64cde0778031126a56b606974c5344 Mon Sep 17 00:00:00 2001
1
+ From 72faf1cc613306eebd1d8c041a0ffd892e350e7c Mon Sep 17 00:00:00 2001
2
2
From: Anton Zabaznov <
[email protected] >
3
3
Date: Tue, 22 Sep 2020 19:03:50 +0300
4
4
Subject: [PATCH] OpenCL 3.0 support
@@ -21,7 +21,7 @@ Subject: [PATCH] OpenCL 3.0 support
21
21
clang/lib/CodeGen/CodeGenFunction.cpp | 6 +-
22
22
clang/lib/Frontend/CompilerInvocation.cpp | 22 +-
23
23
clang/lib/Frontend/InitPreprocessor.cpp | 7 +-
24
- clang/lib/Headers/opencl-c-base.h | 15 +-
24
+ clang/lib/Headers/opencl-c-base.h | 76 +-
25
25
clang/lib/Headers/opencl-c.h | 3227 ++++++++++++++---
26
26
clang/lib/Parse/ParseDecl.cpp | 12 +-
27
27
clang/lib/Parse/ParsePragma.cpp | 10 +-
@@ -72,7 +72,7 @@ Subject: [PATCH] OpenCL 3.0 support
72
72
.../SemaOpenCL/invalid-pipe-builtin-cl2.0.cl | 1 +
73
73
clang/test/SemaOpenCL/storageclass-cl20.cl | 1 +
74
74
.../TableGen/ClangOpenCLBuiltinEmitter.cpp | 35 +-
75
- 68 files changed, 3601 insertions(+), 723 deletions(-)
75
+ 68 files changed, 3662 insertions(+), 723 deletions(-)
76
76
create mode 100644 clang/test/CodeGenOpenCL/generic-address-space-feature.cl
77
77
create mode 100644 clang/test/Sema/feature-extensions-simult-support.cl
78
78
create mode 100644 clang/test/Sema/features-ignore-pragma.cl
@@ -830,19 +830,87 @@ index c273cb96d9b..516286ef3ff 100644
830
830
#include "clang/Basic/OpenCLExtensions.def"
831
831
832
832
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
834
834
--- a/clang/lib/Headers/opencl-c-base.h
835
835
+++ 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)));
837
900
typedef half half8 __attribute__((ext_vector_type(8)));
838
901
typedef half half16 __attribute__((ext_vector_type(16)));
839
902
#endif
840
903
- #ifdef cl_khr_fp64
841
904
+ #if defined(cl_khr_fp64) || defined(__opencl_c_fp64)
905
+ +
906
+ + #ifndef __opencl_c_fp64
907
+ + #define __opencl_c_fp64 1
908
+ + #endif
909
+ +
842
910
#if __OPENCL_C_VERSION__ < CL_VERSION_1_2
843
911
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
844
912
#endif
845
- @@ -281,9 +281 ,15 @@ typedef uint cl_mem_fence_flags;
913
+ @@ -281,9 +342 ,15 @@ typedef uint cl_mem_fence_flags;
846
914
typedef enum memory_scope {
847
915
memory_scope_work_item = __OPENCL_MEMORY_SCOPE_WORK_ITEM,
848
916
memory_scope_work_group = __OPENCL_MEMORY_SCOPE_WORK_GROUP,
@@ -859,7 +927,7 @@ index 430e07d36f6..972fc7f4575 100644
859
927
memory_scope_sub_group = __OPENCL_MEMORY_SCOPE_SUB_GROUP
860
928
#endif
861
929
} memory_scope;
862
- @@ -301,13 +307 ,14 @@ typedef enum memory_scope {
930
+ @@ -301,13 +368 ,14 @@ typedef enum memory_scope {
863
931
#define ATOMIC_FLAG_INIT 0
864
932
865
933
// enum values aligned with what clang uses in EmitAtomicExpr()
0 commit comments