Skip to content

Commit fc44c0b

Browse files
authored
[libclc] Reorganize libspirv library (#16283)
This moves the libspirv libraries to their own subdirectory of libclc, reflecting how the CLC library is organized, and how the OpenCL library may be reorganized in the future. The libspirv bindings are organized in a similar way to CLC, with a single root directory and then a 'generic' directory containing the target-agnostic implementations, as well as top-level target-specific subdirectories to override specific builtins. The libspirv bindings still do a lot of the CLC implementations so the separation isn't as clean as it needs to be, but this patch should help to keep our downstream modifications better separated from upstream changes. Headers that were previously 'spirv' have now been renamed to 'libspirv' to reflect this, and to better distinguish them from the 'spirv' and 'spirv64' libclc targets. That accounts for a majority of the churn. Using llvm-diff shows no change to either OpenCL/libspirv bitcode library on nvidia targets.
1 parent b453dcc commit fc44c0b

File tree

1,806 files changed

+2944
-2657
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,806 files changed

+2944
-2657
lines changed

libclc/CMakeLists.txt

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,30 @@ include( AddLibclc )
1919
include( GNUInstallDirs )
2020
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS
2121
amdgcn-amdhsa/lib/SOURCES;
22-
amdgcn-amdhsa/libspirv/SOURCES;
2322
amdgcn/lib/SOURCES;
24-
amdgcn/libspirv/SOURCES;
2523
amdgcn-mesa3d/lib/SOURCES;
2624
amdgpu/lib/SOURCES;
2725
clspv/lib/SOURCES;
2826
clspv64/lib/SOURCES;
2927
generic/lib/SOURCES;
30-
generic/libspirv/SOURCES;
3128
ptx/lib/SOURCES;
3229
ptx-nvidiacl/lib/SOURCES;
33-
ptx-nvidiacl/libspirv/SOURCES;
3430
r600/lib/SOURCES;
35-
r600/libspirv/SOURCES;
3631
spirv/lib/SOURCES;
3732
spirv64/lib/SOURCES;
38-
native_cpu-unknown-linux/libspirv/SOURCES;
3933
# CLC internal libraries
4034
clc/lib/generic/SOURCES;
4135
clc/lib/clspv/SOURCES;
4236
clc/lib/clspv64/SOURCES;
4337
clc/lib/spirv/SOURCES;
4438
clc/lib/spirv64/SOURCES;
39+
# libspirv libraries
40+
libspirv/lib/generic/SOURCES;
41+
libspirv/lib/amdgcn-amdhsa/SOURCES;
42+
libspirv/lib/amdgcn/SOURCES;
43+
libspirv/lib/ptx-nvidiacl/SOURCES;
44+
libspirv/lib/r600/SOURCES;
45+
libspirv/lib/native_cpu-unknown-linux/SOURCES;
4546
)
4647

4748
set( LIBCLC_MIN_LLVM 3.9.0 )
@@ -264,8 +265,8 @@ endif()
264265

265266
find_package( Python3 REQUIRED COMPONENTS Interpreter )
266267
file( TO_CMAKE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/generic/lib/gen_convert.py clc_script_loc )
267-
file( TO_CMAKE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/generic/libspirv/gen_core_convert.py core_script_loc )
268-
file( TO_CMAKE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/generic/libspirv/gen_convert.py spirv_script_loc )
268+
file( TO_CMAKE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/libspirv/lib/generic/gen_core_convert.py core_script_loc )
269+
file( TO_CMAKE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/libspirv/lib/generic/gen_convert.py spirv_script_loc )
269270
file( TO_CMAKE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/generic/lib/gen_convert.py script_loc )
270271
add_custom_command(
271272
OUTPUT convert.cl
@@ -363,7 +364,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
363364
list( APPEND opencl_gen_files clspv-convert.cl )
364365
elseif ( NOT ENABLE_RUNTIME_SUBNORMAL )
365366
list( APPEND opencl_gen_files convert-clc.cl )
366-
list( APPEND opencl_lib_files generic/libspirv/subnormal_use_default.ll )
367+
list( APPEND opencl_lib_files generic/lib/subnormal_use_default.ll )
367368
endif()
368369
endif()
369370

@@ -380,13 +381,13 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
380381
list( APPEND libspirv_gen_files clspv-convert.cl )
381382
elseif ( NOT ENABLE_RUNTIME_SUBNORMAL )
382383
list( APPEND libspirv_gen_files convert-spirv.cl convert-core.cl )
383-
list( APPEND libspirv_lib_files generic/libspirv/subnormal_use_default.ll )
384+
list( APPEND libspirv_lib_files libspirv/lib/generic/subnormal_use_default.ll )
384385
endif()
385386
endif()
386387

387388
libclc_configure_lib_source(
388389
libspirv_lib_files
389-
LIB_DIR libspirv
390+
LIB_ROOT_DIR libspirv
390391
DIRS ${dirs} ${DARCH} ${DARCH}-${OS} ${DARCH}-${VENDOR}-${OS}
391392
)
392393

@@ -531,16 +532,18 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
531532
LIB_FILES ${clc_lib_files}
532533
)
533534

534-
list( APPEND build_flags
535+
set( spirv_build_flags ${build_flags} )
536+
list( APPEND spirv_build_flags
535537
-I${CMAKE_CURRENT_SOURCE_DIR}/generic/include
538+
-I${CMAKE_CURRENT_SOURCE_DIR}/libspirv/include/
536539
)
537540

538541
add_libclc_builtin_set(
539542
ARCH ${ARCH}
540543
ARCH_SUFFIX libspirv-${arch_suffix}
541544
TRIPLE ${clang_triple}
542545
TARGET_ENV libspirv-
543-
COMPILE_FLAGS ${build_flags}
546+
COMPILE_FLAGS ${spirv_build_flags}
544547
OPT_FLAGS ${opt_flags}
545548
LIB_FILES ${libspirv_lib_files}
546549
GEN_FILES ${libspirv_gen_files}
@@ -550,11 +553,18 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
550553
INTERNAL_LINK_DEPENDENCIES $<TARGET_PROPERTY:builtins.link.clc-${arch_suffix},TARGET_FILE>
551554
)
552555

556+
set( opencl_build_flags ${build_flags} )
557+
list( APPEND opencl_build_flags
558+
-I${CMAKE_CURRENT_SOURCE_DIR}/generic/include
559+
# FIXME: OpenCL bindings shouldn't depend on libspirv
560+
-I${CMAKE_CURRENT_SOURCE_DIR}/libspirv/include/
561+
)
562+
553563
add_libclc_builtin_set(
554564
ARCH ${ARCH}
555565
ARCH_SUFFIX ${arch_suffix}
556566
TRIPLE ${clang_triple}
557-
COMPILE_FLAGS ${build_flags}
567+
COMPILE_FLAGS ${opencl_build_flags}
558568
OPT_FLAGS ${opt_flags}
559569
LIB_FILES ${opencl_lib_files}
560570
GEN_FILES ${opencl_gen_files}

libclc/cmake/modules/AddLibclc.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ function(libclc_configure_lib_source LIB_FILE_LIST)
555555
set( source_list )
556556
foreach( l ${ARG_DIRS} )
557557
foreach( s "SOURCES" "SOURCES_${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}" )
558-
if( ARG_CLC_INTERNAL )
558+
if( ARG_CLC_INTERNAL OR ARG_LIB_ROOT_DIR STREQUAL libspirv )
559559
file( TO_CMAKE_PATH ${ARG_LIB_ROOT_DIR}/${ARG_LIB_DIR}/${l}/${s} file_loc )
560560
else()
561561
file( TO_CMAKE_PATH ${ARG_LIB_ROOT_DIR}/${l}/${ARG_LIB_DIR}/${s} file_loc )

libclc/generic/include/spirv/image/image_defines.h

Lines changed: 0 additions & 57 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define __CLC_BODY <async_work_group_strided_copy.inc>
55
#include <clc/async/gentype.inc>

libclc/generic/lib/async/prefetch.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include <clc/clc.h>
10-
#include <spirv/spirv.h>
10+
#include <libspirv/spirv.h>
1111

1212
#define __CLC_BODY <prefetch.inc>
1313
#include <clc/async/gentype.inc>

libclc/generic/lib/async/wait_group_events.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include <spirv/spirv.h>
1+
#include <libspirv/spirv.h>
22
#include <clc/clc.h>
33

44
_CLC_DEF _CLC_OVERLOAD void wait_group_events(int num_events,

libclc/generic/lib/atomic/atomic_add.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_add(volatile AS TYPE *p, TYPE val) { \

libclc/generic/lib/atomic/atomic_and.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_and(volatile AS TYPE *p, TYPE val) { \

libclc/generic/lib/atomic/atomic_cmpxchg.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_cmpxchg(volatile AS TYPE *p, TYPE cmp, \

libclc/generic/lib/atomic/atomic_dec.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_dec(volatile AS TYPE *p) { \

libclc/generic/lib/atomic/atomic_inc.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_inc(volatile AS TYPE *p) { \

libclc/generic/lib/atomic/atomic_max.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED, OP) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_max(volatile AS TYPE *p, TYPE val) { \

libclc/generic/lib/atomic/atomic_min.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED, OP) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_min(volatile AS TYPE *p, TYPE val) { \

libclc/generic/lib/atomic/atomic_or.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_or(volatile AS TYPE *p, TYPE val) { \

libclc/generic/lib/atomic/atomic_sub.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_sub(volatile AS TYPE *p, TYPE val) { \

libclc/generic/lib/atomic/atomic_xchg.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
_CLC_OVERLOAD _CLC_DEF float atomic_xchg(volatile global float *p, float val) {
55
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling. */

libclc/generic/lib/atomic/atomic_xor.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
55
_CLC_OVERLOAD _CLC_DEF TYPE atomic_xor(volatile AS TYPE *p, TYPE val) { \

libclc/generic/lib/cl_khr_int64_base_atomics/atom_add.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
// TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling.
55

libclc/generic/lib/cl_khr_int64_base_atomics/atom_cmpxchg.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#ifdef cl_khr_int64_base_atomics
55

libclc/generic/lib/cl_khr_int64_base_atomics/atom_sub.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
// TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling.
55

libclc/generic/lib/cl_khr_int64_base_atomics/atom_xchg.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#ifdef cl_khr_int64_base_atomics
55

libclc/generic/lib/cl_khr_int64_extended_atomics/atom_and.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#ifdef cl_khr_int64_extended_atomics
55

libclc/generic/lib/cl_khr_int64_extended_atomics/atom_max.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#ifdef cl_khr_int64_extended_atomics
55

libclc/generic/lib/cl_khr_int64_extended_atomics/atom_min.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#ifdef cl_khr_int64_extended_atomics
55

libclc/generic/lib/cl_khr_int64_extended_atomics/atom_or.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#ifdef cl_khr_int64_extended_atomics
55

libclc/generic/lib/cl_khr_int64_extended_atomics/atom_xor.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#ifdef cl_khr_int64_extended_atomics
55

libclc/generic/lib/common/degrees.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
#include <clc/clc.h>
2424
#include <clc/clcmacro.h>
25-
#include <spirv/spirv.h>
25+
#include <libspirv/spirv.h>
2626

2727
_CLC_OVERLOAD _CLC_DEF float degrees(float radians) {
2828
return __spirv_ocl_degrees(radians);

libclc/generic/lib/common/mix.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <clc/clc.h>
2-
#include <spirv/spirv.h>
2+
#include <libspirv/spirv.h>
33

44
#define __CLC_BODY <mix.inc>
55
#include <clc/math/gentype.inc>

libclc/generic/lib/common/radians.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
#include <clc/clc.h>
2424
#include <clc/clcmacro.h>
25-
#include <spirv/spirv.h>
25+
#include <libspirv/spirv.h>
2626

2727
_CLC_OVERLOAD _CLC_DEF float radians(float degrees) {
2828
return __spirv_ocl_radians(degrees);

libclc/generic/lib/common/sign.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <clc/clc.h>
22
#include <clc/clcmacro.h>
3-
#include <spirv/spirv.h>
3+
#include <libspirv/spirv.h>
44

55
#define SIGN(TYPE, F) \
66
_CLC_DEF _CLC_OVERLOAD TYPE sign(TYPE x) { \

libclc/generic/lib/common/smoothstep.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
#include <clc/clc.h>
2424
#include <clc/clcmacro.h>
25-
#include <spirv/spirv.h>
25+
#include <libspirv/spirv.h>
2626

2727
#define SMOOTH_STEP_DEF(edge_type, x_type, impl) \
2828
_CLC_OVERLOAD _CLC_DEF x_type smoothstep(edge_type edge0, edge_type edge1, \

libclc/generic/lib/common/step.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
#include <clc/clc.h>
2424
#include <clc/clcmacro.h>
25-
#include <spirv/spirv.h>
25+
#include <libspirv/spirv.h>
2626

2727
#define STEP_DEF(edge_type, x_type) \
2828
_CLC_OVERLOAD _CLC_DEF x_type step(edge_type edge, x_type x) { \

0 commit comments

Comments
 (0)