diff --git a/cmake/modules/OpenCL.cmake b/cmake/modules/OpenCL.cmake index 53199f19cb255..97bfaf76e1881 100644 --- a/cmake/modules/OpenCL.cmake +++ b/cmake/modules/OpenCL.cmake @@ -41,6 +41,7 @@ endif(USE_AOCL) if(USE_OPENCL) tvm_file_glob(GLOB RUNTIME_OPENCL_SRCS src/runtime/opencl/*.cc) + list(APPEND COMPILER_SRCS src/target/spirv/spirv_utils.cc) if(${USE_OPENCL} MATCHES ${IS_TRUE_PATTERN}) message(STATUS "Enabled runtime search for OpenCL library location") diff --git a/cmake/modules/Vulkan.cmake b/cmake/modules/Vulkan.cmake index 7470fb6125a44..7bd75877f103d 100644 --- a/cmake/modules/Vulkan.cmake +++ b/cmake/modules/Vulkan.cmake @@ -34,4 +34,5 @@ if(USE_VULKAN) list(APPEND COMPILER_SRCS ${COMPILER_VULKAN_SRCS}) list(APPEND TVM_LINKER_LIBS ${Vulkan_SPIRV_TOOLS_LIBRARY}) list(APPEND TVM_RUNTIME_LINKER_LIBS ${Vulkan_LIBRARY}) + add_definitions(-DTVM_USE_VULKAN=1) endif(USE_VULKAN) diff --git a/src/runtime/vulkan/spirv_shader.h b/src/runtime/vulkan/spirv_shader.h index 4a9f616d9bc10..3393692045ae2 100644 --- a/src/runtime/vulkan/spirv_shader.h +++ b/src/runtime/vulkan/spirv_shader.h @@ -17,8 +17,8 @@ * under the License. */ -#ifndef TVM_RUNTIME_VULKAN_VULKAN_SHADER_H_ -#define TVM_RUNTIME_VULKAN_VULKAN_SHADER_H_ +#ifndef TVM_RUNTIME_VULKAN_SPIRV_SHADER_H_ +#define TVM_RUNTIME_VULKAN_SPIRV_SHADER_H_ #include #include @@ -57,4 +57,4 @@ using vulkan::SPIRVShader; namespace dmlc { DMLC_DECLARE_TRAITS(has_saveload, ::tvm::runtime::vulkan::SPIRVShader, true); } // namespace dmlc -#endif // TVM_RUNTIME_VULKAN_VULKAN_SHADER_H_ +#endif // TVM_RUNTIME_VULKAN_SPIRV_SHADER_H_ diff --git a/src/target/spirv/spirv_utils.cc b/src/target/spirv/spirv_utils.cc index 21aa4231c7131..efc120485eff5 100644 --- a/src/target/spirv/spirv_utils.cc +++ b/src/target/spirv/spirv_utils.cc @@ -22,21 +22,29 @@ * \brief Build SPIRV block */ // Use libspirv for parsing and validating code. -#include +#include "spirv_utils.h" + +#if TVM_USE_VULKAN #include + +#include "codegen_spirv.h" +#endif + #include +#include #include #include +#include #include "../../runtime/vulkan/spirv_shader.h" #include "../../support/utils.h" -#include "codegen_spirv.h" -#include "spirv_utils.h" namespace tvm { namespace codegen { +#if TVM_USE_VULKAN + class SPIRVTools { public: explicit SPIRVTools(Target target) { @@ -166,5 +174,15 @@ std::pair, std::string> Lo return std::make_pair(smap, code_data.str()); } +#else + +std::pair, std::string> LowerToSPIRV( + IRModule mod, Target target) { + LOG(FATAL) << "LowerToSPIRV is called but Vulkan is not enabled."; + return {}; +} + +#endif + } // namespace codegen } // namespace tvm diff --git a/src/target/spirv/spirv_utils.h b/src/target/spirv/spirv_utils.h index 26d89c4a17a51..cb14d32e9e70e 100644 --- a/src/target/spirv/spirv_utils.h +++ b/src/target/spirv/spirv_utils.h @@ -24,6 +24,7 @@ #include #include +#include #include "../../runtime/vulkan/spirv_shader.h"