Skip to content

Commit a672ffe

Browse files
committed
OpenCL C 3.0 patch update: memory_scope_all_devices is alias and available for 3.0 and newer
1 parent 7726d37 commit a672ffe

File tree

1 file changed

+20
-50
lines changed

1 file changed

+20
-50
lines changed

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

Lines changed: 20 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
From 13a6dfb3c7f2badbb19cab2d9c4542cab59d9c7c Mon Sep 17 00:00:00 2001
1+
From c2f521834c02cd054ea20765ab3c50f8c1025439 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
@@ -20,8 +20,8 @@ Subject: [PATCH] OpenCL 3.0 support
2020
clang/lib/Basic/Targets.cpp | 1 -
2121
clang/lib/CodeGen/CodeGenFunction.cpp | 6 +-
2222
clang/lib/Frontend/CompilerInvocation.cpp | 22 +-
23-
clang/lib/Frontend/InitPreprocessor.cpp | 7 +-
24-
clang/lib/Headers/opencl-c-base.h | 76 +-
23+
clang/lib/Frontend/InitPreprocessor.cpp | 6 +-
24+
clang/lib/Headers/opencl-c-base.h | 75 +-
2525
clang/lib/Headers/opencl-c.h | 3215 ++++++++++++++---
2626
clang/lib/Parse/ParseDecl.cpp | 12 +-
2727
clang/lib/Parse/ParsePragma.cpp | 10 +-
@@ -57,8 +57,7 @@ Subject: [PATCH] OpenCL 3.0 support
5757
clang/test/Frontend/stdlang.c | 1 +
5858
clang/test/Headers/opencl-c-header.cl | 7 +-
5959
clang/test/Index/pipe-size.cl | 7 +
60-
clang/test/Preprocessor/init-aarch64.c | 13 +-
61-
clang/test/Preprocessor/init.c | 1 +
60+
clang/test/Preprocessor/init-aarch64.c | 12 +-
6261
clang/test/Preprocessor/predefined-macros.c | 13 +
6362
.../Sema/feature-extensions-simult-support.cl | 75 +
6463
clang/test/Sema/features-ignore-pragma.cl | 24 +
@@ -73,7 +72,7 @@ Subject: [PATCH] OpenCL 3.0 support
7372
.../SemaOpenCL/invalid-pipe-builtin-cl2.0.cl | 1 +
7473
clang/test/SemaOpenCL/storageclass-cl20.cl | 1 +
7574
.../TableGen/ClangOpenCLBuiltinEmitter.cpp | 35 +-
76-
69 files changed, 3756 insertions(+), 738 deletions(-)
75+
68 files changed, 3752 insertions(+), 738 deletions(-)
7776
create mode 100644 clang/test/CodeGenOpenCL/generic-address-space-feature.cl
7877
create mode 100644 clang/test/Sema/feature-extensions-simult-support.cl
7978
create mode 100644 clang/test/Sema/features-ignore-pragma.cl
@@ -786,7 +785,7 @@ index 73114c6d76c..bc54d231b97 100644
786785
Opts.Coroutines = Opts.CPlusPlus20 || Args.hasArg(OPT_fcoroutines_ts);
787786

788787
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
789-
index 6eef1e2376f..276c47f2410 100644
788+
index 6eef1e2376f..5bb489c1190 100644
790789
--- a/clang/lib/Frontend/InitPreprocessor.cpp
791790
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
792791
@@ -445,6 +445,9 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI,
@@ -807,15 +806,7 @@ index 6eef1e2376f..276c47f2410 100644
807806

808807
if (TI.isLittleEndian())
809808
Builder.defineMacro("__ENDIAN_LITTLE__");
810-
@@ -642,6 +646,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
811-
Builder.defineMacro("__OPENCL_MEMORY_SCOPE_DEVICE", "2");
812-
Builder.defineMacro("__OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES", "3");
813-
Builder.defineMacro("__OPENCL_MEMORY_SCOPE_SUB_GROUP", "4");
814-
+ Builder.defineMacro("__OPENCL_MEMORY_SCOPE_ALL_DEVICES", "5");
815-
816-
// Support for #pragma redefine_extname (Sun compatibility)
817-
Builder.defineMacro("__PRAGMA_REDEFINE_EXTNAME", "1");
818-
@@ -1108,7 +1113,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
809+
@@ -1108,7 +1112,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
819810
// OpenCL definitions.
820811
if (LangOpts.OpenCL) {
821812
#define OPENCLEXT(Ext) \
@@ -825,20 +816,17 @@ index 6eef1e2376f..276c47f2410 100644
825816
#include "clang/Basic/OpenCLExtensions.def"
826817

827818
diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h
828-
index 430e07d36f6..b10c6ece744 100644
819+
index 430e07d36f6..afa900ab24d 100644
829820
--- a/clang/lib/Headers/opencl-c-base.h
830821
+++ b/clang/lib/Headers/opencl-c-base.h
831-
@@ -9,6 +9,62 @@
822+
@@ -9,6 +9,59 @@
832823
#ifndef _OPENCL_BASE_H_
833824
#define _OPENCL_BASE_H_
834825

835826
+// Add predefined macros to build headers with standalone executable
836827
+#ifndef CL_VERSION_3_0
837828
+ #define CL_VERSION_3_0 300
838829
+#endif
839-
+#ifndef __OPENCL_MEMORY_SCOPE_ALL_DEVICES
840-
+ #define __OPENCL_MEMORY_SCOPE_ALL_DEVICES 5
841-
+#endif
842830
+
843831
+// Define features for 2.0 for header backward compatibility
844832
+#ifndef __opencl_c_int64
@@ -891,7 +879,7 @@ index 430e07d36f6..b10c6ece744 100644
891879
// built-in scalar data types:
892880

893881
/**
894-
@@ -115,7 +171,12 @@ typedef half half4 __attribute__((ext_vector_type(4)));
882+
@@ -115,7 +168,12 @@ typedef half half4 __attribute__((ext_vector_type(4)));
895883
typedef half half8 __attribute__((ext_vector_type(8)));
896884
typedef half half16 __attribute__((ext_vector_type(16)));
897885
#endif
@@ -905,24 +893,26 @@ index 430e07d36f6..b10c6ece744 100644
905893
#if __OPENCL_C_VERSION__ < CL_VERSION_1_2
906894
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
907895
#endif
908-
@@ -281,9 +342,15 @@ typedef uint cl_mem_fence_flags;
896+
@@ -281,9 +339,17 @@ typedef uint cl_mem_fence_flags;
909897
typedef enum memory_scope {
910898
memory_scope_work_item = __OPENCL_MEMORY_SCOPE_WORK_ITEM,
911899
memory_scope_work_group = __OPENCL_MEMORY_SCOPE_WORK_GROUP,
912900
+#ifdef __opencl_c_atomic_scope_device
913901
memory_scope_device = __OPENCL_MEMORY_SCOPE_DEVICE,
914902
+#endif
915903
+#ifdef __opencl_c_atomic_scope_all_devices
916-
+ memory_scope_all_devices = __OPENCL_MEMORY_SCOPE_ALL_DEVICES,
904+
+ #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0)
905+
+ memory_scope_all_devices = __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES,
906+
+ #endif //(__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
917907
memory_scope_all_svm_devices = __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES,
918908
-#if defined(cl_intel_subgroups) || defined(cl_khr_subgroups)
919-
+#endif
909+
+#endif // __opencl_c_atomic_scope_all_devices
920910
+#if defined(cl_intel_subgroups) || defined(cl_khr_subgroups) || \
921911
+ defined(__opencl_c_subgroups)
922912
memory_scope_sub_group = __OPENCL_MEMORY_SCOPE_SUB_GROUP
923913
#endif
924914
} memory_scope;
925-
@@ -301,13 +368,14 @@ typedef enum memory_scope {
915+
@@ -301,13 +367,14 @@ typedef enum memory_scope {
926916
#define ATOMIC_FLAG_INIT 0
927917

928918
// enum values aligned with what clang uses in EmitAtomicExpr()
@@ -7817,7 +7807,7 @@ index 94a1255f0a4..59b76051eda 100644
78177807
{
78187808
int s = sizeof(test);
78197809
diff --git a/clang/test/Preprocessor/init-aarch64.c b/clang/test/Preprocessor/init-aarch64.c
7820-
index df2a6128989..c0b13297a06 100644
7810+
index df2a6128989..cbb0995b48b 100644
78217811
--- a/clang/test/Preprocessor/init-aarch64.c
78227812
+++ b/clang/test/Preprocessor/init-aarch64.c
78237813
@@ -109,12 +109,12 @@
@@ -7844,15 +7834,7 @@ index df2a6128989..c0b13297a06 100644
78447834
// AARCH64-NEXT: #define __INT8_FMTd__ "hhd"
78457835
// AARCH64-NEXT: #define __INT8_FMTi__ "hhi"
78467836
// AARCH64-NEXT: #define __INT8_MAX__ 127
7847-
@@ -193,6 +193,7 @@
7848-
// AARCH64-NEXT: #define __LP64__ 1
7849-
// AARCH64-NEXT: #define __NO_INLINE__ 1
7850-
// AARCH64-NEXT: #define __OBJC_BOOL_IS_BOOL 0
7851-
+// AARCH64-NEXT: #define __OPENCL_MEMORY_SCOPE_ALL_DEVICES 5
7852-
// AARCH64-NEXT: #define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3
7853-
// AARCH64-NEXT: #define __OPENCL_MEMORY_SCOPE_DEVICE 2
7854-
// AARCH64-NEXT: #define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4
7855-
@@ -238,7 +239,7 @@
7837+
@@ -238,7 +238,7 @@
78567838
// AARCH64-NEXT: #define __STDC_UTF_32__ 1
78577839
// AARCH64_C: #define __STDC_VERSION__ 201710L
78587840
// AARCH64-NEXT: #define __STDC__ 1
@@ -7861,7 +7843,7 @@ index df2a6128989..c0b13297a06 100644
78617843
// AARCH64-NEXT: #define __UINT16_FMTX__ "hX"
78627844
// AARCH64-NEXT: #define __UINT16_FMTo__ "ho"
78637845
// AARCH64-NEXT: #define __UINT16_FMTu__ "hu"
7864-
@@ -259,7 +260,7 @@
7846+
@@ -259,7 +259,7 @@
78657847
// AARCH64-NEXT: #define __UINT64_FMTx__ "lx"
78667848
// AARCH64-NEXT: #define __UINT64_MAX__ 18446744073709551615UL
78677849
// AARCH64-NEXT: #define __UINT64_TYPE__ long unsigned int
@@ -7870,7 +7852,7 @@ index df2a6128989..c0b13297a06 100644
78707852
// AARCH64-NEXT: #define __UINT8_FMTX__ "hhX"
78717853
// AARCH64-NEXT: #define __UINT8_FMTo__ "hho"
78727854
// AARCH64-NEXT: #define __UINT8_FMTu__ "hhu"
7873-
@@ -329,7 +330,7 @@
7855+
@@ -329,7 +329,7 @@
78747856
// AARCH64-NEXT: #define __UINT_LEAST8_FMTx__ "hhx"
78757857
// AARCH64-NEXT: #define __UINT_LEAST8_MAX__ 255
78767858
// AARCH64-NEXT: #define __UINT_LEAST8_TYPE__ unsigned char
@@ -7879,18 +7861,6 @@ index df2a6128989..c0b13297a06 100644
78797861
// AARCH64-NEXT: #define __VERSION__ "{{.*}}"
78807862
// AARCH64-NEXT: #define __WCHAR_MAX__ 4294967295U
78817863
// AARCH64-NEXT: #define __WCHAR_TYPE__ unsigned int
7882-
diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c
7883-
index 3cc36302aa0..158fb348026 100644
7884-
--- a/clang/test/Preprocessor/init.c
7885-
+++ b/clang/test/Preprocessor/init.c
7886-
@@ -7545,6 +7545,7 @@
7887-
// WEBASSEMBLY64-NEXT:#define __LP64__ 1
7888-
// WEBASSEMBLY-NEXT:#define __NO_INLINE__ 1
7889-
// WEBASSEMBLY-NEXT:#define __OBJC_BOOL_IS_BOOL 0
7890-
+// WEBASSEMBLY-NEXT:#define __OPENCL_MEMORY_SCOPE_ALL_DEVICES 5
7891-
// WEBASSEMBLY-NEXT:#define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3
7892-
// WEBASSEMBLY-NEXT:#define __OPENCL_MEMORY_SCOPE_DEVICE 2
7893-
// WEBASSEMBLY-NEXT:#define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4
78947864
diff --git a/clang/test/Preprocessor/predefined-macros.c b/clang/test/Preprocessor/predefined-macros.c
78957865
index 083f0e539d8..6c80517ec4d 100644
78967866
--- a/clang/test/Preprocessor/predefined-macros.c

0 commit comments

Comments
 (0)