@@ -47,6 +47,9 @@ endfunction(create_pcm)
4747
4848set (CL12 "-cl-std=CL1.2" )
4949set (CL20 "-cl-std=CL2.0" )
50+ set (CL30 "-cl-std=CL3.0" )
51+ # Add OpenCL C 3.0 Optional features
52+ set (OPTS30 "-cl-ext=+__opencl_c_atomic_order_seq_cst,+__opencl_c_atomic_scope_device,+__opencl_c_generic_address_space,+__opencl_c_pipes,+__opencl_c_subgroups,+__opencl_c_work_group_collective_functions" )
5053
5154set (SPIR_TRIPLE "-triple;spir-unknown-unknown" )
5255set (SPIR64_TRIPLE "-triple;spir64-unknown-unknown" )
@@ -59,26 +62,34 @@ endif()
5962set (OPTS -cl-ext =+all ,-cl_khr_fp64)
6063create_pcm(opencl-c-12-spir.pcm cl12spir opencl-c-base.h "${SPIR_TRIPLE} ;${CL12} ;${OPTS} " "${DEPS} " )
6164create_pcm(opencl-c-20-spir.pcm cl20spir opencl-c-base.h "${SPIR_TRIPLE} ;${CL20} ;${OPTS} " "${DEPS} " )
65+ create_pcm(opencl-c-30-spir.pcm cl30spir opencl-c-base.h "${SPIR_TRIPLE} ;${CL30} ;${OPTS} ;${OPTS30} " "${DEPS} " )
6266create_pcm(opencl-c-12-spir64.pcm cl12spir64 opencl-c-base.h "${SPIR64_TRIPLE} ;${CL12} ;${OPTS} " "${DEPS} " )
6367create_pcm(opencl-c-20-spir64.pcm cl20spir64 opencl-c-base.h "${SPIR64_TRIPLE} ;${CL20} ;${OPTS} " "${DEPS} " )
68+ create_pcm(opencl-c-30-spir64.pcm cl30spir64 opencl-c-base.h "${SPIR64_TRIPLE} ;${CL30} ;${OPTS} ;${OPTS30} " "${DEPS} " )
6469set (OPTS -cl-ext =+all )
6570create_pcm(opencl-c-12-spir-fp64.pcm cl12spirfp64 opencl-c-base.h "${SPIR_TRIPLE} ;${CL12} ;${OPTS} " "${DEPS} " )
6671create_pcm(opencl-c-20-spir-fp64.pcm cl20spirfp64 opencl-c-base.h "${SPIR_TRIPLE} ;${CL20} ;${OPTS} " "${DEPS} " )
72+ create_pcm(opencl-c-30-spir-fp64.pcm cl30spirfp64 opencl-c-base.h "${SPIR_TRIPLE} ;${CL30} ;${OPTS} ;${OPTS30} " "${DEPS} " )
6773create_pcm(opencl-c-12-spir64-fp64.pcm cl12spir64fp64 opencl-c-base.h "${SPIR64_TRIPLE} ;${CL12} ;${OPTS} " "${DEPS} " )
6874create_pcm(opencl-c-20-spir64-fp64.pcm cl20spir64fp64 opencl-c-base.h "${SPIR64_TRIPLE} ;${CL20} ;${OPTS} " "${DEPS} " )
75+ create_pcm(opencl-c-30-spir64-fp64.pcm cl30spir64fp64 opencl-c-base.h "${SPIR64_TRIPLE} ;${CL30} ;${OPTS} ;${OPTS30} " "${DEPS} " )
6976
7077add_custom_target (
7178 opencl.pcm.target
7279 DEPENDS
7380 opencl.headers.target
7481 opencl-c-12-spir.pcm
7582 opencl-c-20-spir.pcm
83+ opencl-c-30-spir.pcm
7684 opencl-c-12-spir64.pcm
7785 opencl-c-20-spir64.pcm
86+ opencl-c-30-spir64.pcm
7887 opencl-c-12-spir-fp64.pcm
7988 opencl-c-20-spir-fp64.pcm
89+ opencl-c-30-spir-fp64.pcm
8090 opencl-c-12-spir64-fp64.pcm
8191 opencl-c-20-spir64-fp64.pcm
92+ opencl-c-30-spir64-fp64.pcm
8293)
8394
8495function (pack_to_obj SRC DST TAG)
@@ -101,25 +112,33 @@ else()
101112 opencl-c-base.h.cpp
102113 opencl-c-12-spir.mod.cpp
103114 opencl-c-20-spir.mod.cpp
115+ opencl-c-30-spir.mod.cpp
104116 opencl-c-12-spir64.mod.cpp
105117 opencl-c-20-spir64.mod.cpp
118+ opencl-c-30-spir64.mod.cpp
106119 opencl-c-12-spir-fp64.mod.cpp
107120 opencl-c-20-spir-fp64.mod.cpp
121+ opencl-c-30-spir-fp64.mod.cpp
108122 opencl-c-12-spir64-fp64.mod.cpp
109123 opencl-c-20-spir64-fp64.mod.cpp
124+ opencl-c-30-spir64-fp64.mod.cpp
110125 module.modulemap.cpp
111126 )
112127 # note the .pcm -> .mod extension change
113128 # this is a workaround for CMake bug that caused
114129 # dependency cycle in generated build rules
115130 pack_to_obj(opencl-c-12-spir.pcm opencl-c-12-spir.mod.cpp "PCM_OPENCL_C_12_SPIR_PCM" )
116131 pack_to_obj(opencl-c-20-spir.pcm opencl-c-20-spir.mod.cpp "PCM_OPENCL_C_20_SPIR_PCM" )
132+ pack_to_obj(opencl-c-30-spir.pcm opencl-c-30-spir.mod.cpp "PCM_OPENCL_C_30_SPIR_PCM" )
117133 pack_to_obj(opencl-c-12-spir64.pcm opencl-c-12-spir64.mod.cpp "PCM_OPENCL_C_12_SPIR64_PCM" )
118134 pack_to_obj(opencl-c-20-spir64.pcm opencl-c-20-spir64.mod.cpp "PCM_OPENCL_C_20_SPIR64_PCM" )
135+ pack_to_obj(opencl-c-30-spir64.pcm opencl-c-30-spir64.mod.cpp "PCM_OPENCL_C_30_SPIR64_PCM" )
119136 pack_to_obj(opencl-c-12-spir-fp64.pcm opencl-c-12-spir-fp64.mod.cpp "PCM_OPENCL_C_12_SPIR_FP64_PCM" )
120137 pack_to_obj(opencl-c-20-spir-fp64.pcm opencl-c-20-spir-fp64.mod.cpp "PCM_OPENCL_C_20_SPIR_FP64_PCM" )
138+ pack_to_obj(opencl-c-30-spir-fp64.pcm opencl-c-30-spir-fp64.mod.cpp "PCM_OPENCL_C_30_SPIR_FP64_PCM" )
121139 pack_to_obj(opencl-c-12-spir64-fp64.pcm opencl-c-12-spir64-fp64.mod.cpp "PCM_OPENCL_C_12_SPIR64_FP64_PCM" )
122140 pack_to_obj(opencl-c-20-spir64-fp64.pcm opencl-c-20-spir64-fp64.mod.cpp "PCM_OPENCL_C_20_SPIR64_FP64_PCM" )
141+ pack_to_obj(opencl-c-30-spir64-fp64.pcm opencl-c-30-spir64-fp64.mod.cpp "PCM_OPENCL_C_30_SPIR64_FP64_PCM" )
123142 pack_to_obj(module.modulemap module.modulemap.cpp "PCM_OPENCL_C_MODULE_MAP" )
124143
125144endif ()
0 commit comments