diff --git a/mlir/include/mlir/Dialect/SPIRV/Serialization.h b/mlir/include/mlir/Target/SPIRV/Deserialization.h rename from mlir/include/mlir/Dialect/SPIRV/Serialization.h rename to mlir/include/mlir/Target/SPIRV/Deserialization.h --- a/mlir/include/mlir/Dialect/SPIRV/Serialization.h +++ b/mlir/include/mlir/Target/SPIRV/Deserialization.h @@ -6,13 +6,12 @@ // //===----------------------------------------------------------------------===// // -// This file declares the entry points for serialize and deserialize SPIR-V -// binary modules. +// This file declares the entry points for deserializing SPIR-V binary modules. // //===----------------------------------------------------------------------===// -#ifndef MLIR_DIALECT_SPIRV_SERIALIZATION_H_ -#define MLIR_DIALECT_SPIRV_SERIALIZATION_H_ +#ifndef MLIR_TARGET_SPIRV_DESERIALIZATION_H +#define MLIR_TARGET_SPIRV_DESERIALIZATION_H #include "mlir/Support/LLVM.h" @@ -21,15 +20,8 @@ class MLIRContext; namespace spirv { -class ModuleOp; class OwningSPIRVModuleRef; -/// Serializes the given SPIR-V `module` and writes to `binary`. On failure, -/// reports errors to the error handler registered with the MLIR context for -/// `module`. -LogicalResult serialize(ModuleOp module, SmallVectorImpl &binary, - bool emitDebugInfo = false); - /// Deserializes the given SPIR-V `binary` module and creates a MLIR ModuleOp /// in the given `context`. Returns the ModuleOp on success; otherwise, reports /// errors to the error handler registered with `context` and returns a null @@ -40,4 +32,4 @@ } // end namespace spirv } // end namespace mlir -#endif // MLIR_DIALECT_SPIRV_SERIALIZATION_H_ +#endif // MLIR_TARGET_SPIRV_DESERIALIZATION_H diff --git a/mlir/include/mlir/Dialect/SPIRV/SPIRVBinaryUtils.h b/mlir/include/mlir/Target/SPIRV/SPIRVBinaryUtils.h rename from mlir/include/mlir/Dialect/SPIRV/SPIRVBinaryUtils.h rename to mlir/include/mlir/Target/SPIRV/SPIRVBinaryUtils.h --- a/mlir/include/mlir/Dialect/SPIRV/SPIRVBinaryUtils.h +++ b/mlir/include/mlir/Target/SPIRV/SPIRVBinaryUtils.h @@ -10,8 +10,8 @@ // //===----------------------------------------------------------------------===// -#ifndef MLIR_DIALECT_SPIRV_SPIRV_BINARY_UTILS_H_ -#define MLIR_DIALECT_SPIRV_SPIRV_BINARY_UTILS_H_ +#ifndef MLIR_TARGET_SPIRV_BINARY_UTILS_H_ +#define MLIR_TARGET_SPIRV_BINARY_UTILS_H_ #include "mlir/Dialect/SPIRV/SPIRVOps.h" #include "mlir/Support/LogicalResult.h" @@ -44,4 +44,4 @@ } // end namespace spirv } // end namespace mlir -#endif // MLIR_DIALECT_SPIRV_SPIRV_BINARY_UTILS_H_ +#endif // MLIR_TARGET_SPIRV_BINARY_UTILS_H_ diff --git a/mlir/include/mlir/Dialect/SPIRV/Serialization.h b/mlir/include/mlir/Target/SPIRV/Serialization.h rename from mlir/include/mlir/Dialect/SPIRV/Serialization.h rename to mlir/include/mlir/Target/SPIRV/Serialization.h --- a/mlir/include/mlir/Dialect/SPIRV/Serialization.h +++ b/mlir/include/mlir/Target/SPIRV/Serialization.h @@ -6,13 +6,12 @@ // //===----------------------------------------------------------------------===// // -// This file declares the entry points for serialize and deserialize SPIR-V -// binary modules. +// This file declares the entry point for serializing SPIR-V binary modules. // //===----------------------------------------------------------------------===// -#ifndef MLIR_DIALECT_SPIRV_SERIALIZATION_H_ -#define MLIR_DIALECT_SPIRV_SERIALIZATION_H_ +#ifndef MLIR_TARGET_SPIRV_SERIALIZATION_H +#define MLIR_TARGET_SPIRV_SERIALIZATION_H #include "mlir/Support/LLVM.h" @@ -22,7 +21,6 @@ namespace spirv { class ModuleOp; -class OwningSPIRVModuleRef; /// Serializes the given SPIR-V `module` and writes to `binary`. On failure, /// reports errors to the error handler registered with the MLIR context for @@ -30,14 +28,7 @@ LogicalResult serialize(ModuleOp module, SmallVectorImpl &binary, bool emitDebugInfo = false); -/// Deserializes the given SPIR-V `binary` module and creates a MLIR ModuleOp -/// in the given `context`. Returns the ModuleOp on success; otherwise, reports -/// errors to the error handler registered with `context` and returns a null -/// module. -OwningSPIRVModuleRef deserialize(ArrayRef binary, - MLIRContext *context); - } // end namespace spirv } // end namespace mlir -#endif // MLIR_DIALECT_SPIRV_SERIALIZATION_H_ +#endif // MLIR_TARGET_SPIRV_SERIALIZATION_H diff --git a/mlir/lib/Conversion/GPUToVulkan/ConvertGPULaunchFuncToVulkanLaunchFunc.cpp b/mlir/lib/Conversion/GPUToVulkan/ConvertGPULaunchFuncToVulkanLaunchFunc.cpp --- a/mlir/lib/Conversion/GPUToVulkan/ConvertGPULaunchFuncToVulkanLaunchFunc.cpp +++ b/mlir/lib/Conversion/GPUToVulkan/ConvertGPULaunchFuncToVulkanLaunchFunc.cpp @@ -18,12 +18,12 @@ #include "mlir/Dialect/GPU/GPUDialect.h" #include "mlir/Dialect/SPIRV/SPIRVDialect.h" #include "mlir/Dialect/SPIRV/SPIRVOps.h" -#include "mlir/Dialect/SPIRV/Serialization.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/IR/Attributes.h" #include "mlir/IR/Builders.h" #include "mlir/IR/BuiltinOps.h" #include "mlir/IR/BuiltinTypes.h" +#include "mlir/Target/SPIRV/Serialization.h" using namespace mlir; diff --git a/mlir/lib/Dialect/SPIRV/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/CMakeLists.txt --- a/mlir/lib/Dialect/SPIRV/CMakeLists.txt +++ b/mlir/lib/Dialect/SPIRV/CMakeLists.txt @@ -35,5 +35,4 @@ ) add_subdirectory(Linking) -add_subdirectory(Serialization) add_subdirectory(Transforms) diff --git a/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt deleted file mode 100644 --- a/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -add_mlir_dialect_library(MLIRSPIRVSerialization - Deserializer.cpp - Serializer.cpp - SPIRVBinaryUtils.cpp - TranslateRegistration.cpp - - ADDITIONAL_HEADER_DIRS - ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV - - DEPENDS - MLIRSPIRVSerializationGen - - LINK_LIBS PUBLIC - MLIRIR - MLIRSPIRV - MLIRSupport - MLIRTranslation - ) diff --git a/mlir/lib/Target/CMakeLists.txt b/mlir/lib/Target/CMakeLists.txt --- a/mlir/lib/Target/CMakeLists.txt +++ b/mlir/lib/Target/CMakeLists.txt @@ -113,3 +113,52 @@ MLIRROCDLIR MLIRTargetLLVMIRModuleTranslation ) + +add_mlir_translation_library(MLIRSPIRVBinaryUtils + SPIRV/SPIRVBinaryUtils.cpp + + LINK_LIBS PUBLIC + MLIRIR + MLIRSPIRV + MLIRSupport + ) + +add_mlir_translation_library(MLIRSPIRVSerialization + SPIRV/Serialization.cpp + + DEPENDS + MLIRSPIRVSerializationGen + + LINK_LIBS PUBLIC + MLIRIR + MLIRSPIRV + MLIRSPIRVBinaryUtils + MLIRSupport + MLIRTranslation + ) + +add_mlir_translation_library(MLIRSPIRVDeserialization + SPIRV/Deserialization.cpp + + DEPENDS + MLIRSPIRVSerializationGen + + LINK_LIBS PUBLIC + MLIRIR + MLIRSPIRV + MLIRSPIRVBinaryUtils + MLIRSupport + MLIRTranslation + ) + +add_mlir_translation_library(MLIRSPIRVTranslateRegistration + SPIRV/TranslateRegistration.cpp + + LINK_LIBS PUBLIC + MLIRIR + MLIRSPIRV + MLIRSPIRVSerialization + MLIRSPIRVDeserialization + MLIRSupport + MLIRTranslation + ) diff --git a/mlir/lib/Dialect/SPIRV/Serialization/Deserializer.cpp b/mlir/lib/Target/SPIRV/Deserialization.cpp rename from mlir/lib/Dialect/SPIRV/Serialization/Deserializer.cpp rename to mlir/lib/Target/SPIRV/Deserialization.cpp --- a/mlir/lib/Dialect/SPIRV/Serialization/Deserializer.cpp +++ b/mlir/lib/Target/SPIRV/Deserialization.cpp @@ -10,10 +10,9 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/SPIRV/Serialization.h" +#include "mlir/Target/SPIRV/Deserialization.h" #include "mlir/Dialect/SPIRV/SPIRVAttributes.h" -#include "mlir/Dialect/SPIRV/SPIRVBinaryUtils.h" #include "mlir/Dialect/SPIRV/SPIRVModule.h" #include "mlir/Dialect/SPIRV/SPIRVOps.h" #include "mlir/Dialect/SPIRV/SPIRVTypes.h" @@ -21,6 +20,7 @@ #include "mlir/IR/Builders.h" #include "mlir/IR/Location.h" #include "mlir/Support/LogicalResult.h" +#include "mlir/Target/SPIRV/SPIRVBinaryUtils.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/Sequence.h" #include "llvm/ADT/SetVector.h" @@ -2781,6 +2781,7 @@ #include "mlir/Dialect/SPIRV/SPIRVSerialization.inc" } // namespace +namespace mlir { spirv::OwningSPIRVModuleRef spirv::deserialize(ArrayRef binary, MLIRContext *context) { Deserializer deserializer(binary, context); @@ -2790,3 +2791,4 @@ return deserializer.collect(); } +} // namespace mlir diff --git a/mlir/lib/Dialect/SPIRV/Serialization/SPIRVBinaryUtils.cpp b/mlir/lib/Target/SPIRV/SPIRVBinaryUtils.cpp rename from mlir/lib/Dialect/SPIRV/Serialization/SPIRVBinaryUtils.cpp rename to mlir/lib/Target/SPIRV/SPIRVBinaryUtils.cpp --- a/mlir/lib/Dialect/SPIRV/Serialization/SPIRVBinaryUtils.cpp +++ b/mlir/lib/Target/SPIRV/SPIRVBinaryUtils.cpp @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/SPIRV/SPIRVBinaryUtils.h" +#include "mlir/Target/SPIRV/SPIRVBinaryUtils.h" #include "mlir/Dialect/SPIRV/SPIRVTypes.h" using namespace mlir; diff --git a/mlir/lib/Dialect/SPIRV/Serialization/Serializer.cpp b/mlir/lib/Target/SPIRV/Serialization.cpp rename from mlir/lib/Dialect/SPIRV/Serialization/Serializer.cpp rename to mlir/lib/Target/SPIRV/Serialization.cpp --- a/mlir/lib/Dialect/SPIRV/Serialization/Serializer.cpp +++ b/mlir/lib/Target/SPIRV/Serialization.cpp @@ -10,16 +10,16 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/SPIRV/Serialization.h" +#include "mlir/Target/SPIRV/Serialization.h" #include "mlir/Dialect/SPIRV/SPIRVAttributes.h" -#include "mlir/Dialect/SPIRV/SPIRVBinaryUtils.h" #include "mlir/Dialect/SPIRV/SPIRVDialect.h" #include "mlir/Dialect/SPIRV/SPIRVOps.h" #include "mlir/Dialect/SPIRV/SPIRVTypes.h" #include "mlir/IR/Builders.h" #include "mlir/IR/RegionGraphTraits.h" #include "mlir/Support/LogicalResult.h" +#include "mlir/Target/SPIRV/SPIRVBinaryUtils.h" #include "llvm/ADT/DepthFirstIterator.h" #include "llvm/ADT/Sequence.h" #include "llvm/ADT/SetVector.h" @@ -2139,6 +2139,7 @@ return success(); } +namespace mlir { LogicalResult spirv::serialize(spirv::ModuleOp module, SmallVectorImpl &binary, bool emitDebugInfo) { @@ -2156,3 +2157,4 @@ serializer.collect(binary); return success(); } +} // namespace mlir diff --git a/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp b/mlir/lib/Target/SPIRV/TranslateRegistration.cpp rename from mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp rename to mlir/lib/Target/SPIRV/TranslateRegistration.cpp --- a/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp +++ b/mlir/lib/Target/SPIRV/TranslateRegistration.cpp @@ -14,12 +14,13 @@ #include "mlir/Dialect/SPIRV/SPIRVDialect.h" #include "mlir/Dialect/SPIRV/SPIRVModule.h" #include "mlir/Dialect/SPIRV/SPIRVOps.h" -#include "mlir/Dialect/SPIRV/Serialization.h" #include "mlir/IR/Builders.h" #include "mlir/IR/BuiltinOps.h" #include "mlir/IR/Dialect.h" #include "mlir/Parser.h" #include "mlir/Support/FileUtilities.h" +#include "mlir/Target/SPIRV/Deserialization.h" +#include "mlir/Target/SPIRV/Serialization.h" #include "mlir/Translation.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/MemoryBuffer.h" diff --git a/mlir/unittests/Dialect/SPIRV/CMakeLists.txt b/mlir/unittests/Dialect/SPIRV/CMakeLists.txt --- a/mlir/unittests/Dialect/SPIRV/CMakeLists.txt +++ b/mlir/unittests/Dialect/SPIRV/CMakeLists.txt @@ -1,8 +1,11 @@ -add_mlir_unittest(MLIRSPIRVTests +add_mlir_unittest(MLIRSPIRVImportExportTests DeserializationTest.cpp SerializationTest.cpp ) -target_link_libraries(MLIRSPIRVTests +target_link_libraries(MLIRSPIRVImportExportTests PRIVATE + MLIRIR MLIRSPIRV - MLIRSPIRVSerialization) + MLIRSPIRVDeserialization + MLIRSPIRVSerialization +) diff --git a/mlir/unittests/Dialect/SPIRV/DeserializationTest.cpp b/mlir/unittests/Dialect/SPIRV/DeserializationTest.cpp --- a/mlir/unittests/Dialect/SPIRV/DeserializationTest.cpp +++ b/mlir/unittests/Dialect/SPIRV/DeserializationTest.cpp @@ -12,13 +12,13 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/SPIRV/SPIRVBinaryUtils.h" +#include "mlir/Target/SPIRV/Deserialization.h" #include "mlir/Dialect/SPIRV/SPIRVDialect.h" #include "mlir/Dialect/SPIRV/SPIRVModule.h" #include "mlir/Dialect/SPIRV/SPIRVOps.h" -#include "mlir/Dialect/SPIRV/Serialization.h" #include "mlir/IR/Diagnostics.h" #include "mlir/IR/MLIRContext.h" +#include "mlir/Target/SPIRV/SPIRVBinaryUtils.h" #include "gmock/gmock.h" #include diff --git a/mlir/unittests/Dialect/SPIRV/SerializationTest.cpp b/mlir/unittests/Dialect/SPIRV/SerializationTest.cpp --- a/mlir/unittests/Dialect/SPIRV/SerializationTest.cpp +++ b/mlir/unittests/Dialect/SPIRV/SerializationTest.cpp @@ -11,9 +11,8 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/SPIRV/Serialization.h" +#include "mlir/Target/SPIRV/Serialization.h" #include "mlir/Dialect/SPIRV/SPIRVAttributes.h" -#include "mlir/Dialect/SPIRV/SPIRVBinaryUtils.h" #include "mlir/Dialect/SPIRV/SPIRVDialect.h" #include "mlir/Dialect/SPIRV/SPIRVModule.h" #include "mlir/Dialect/SPIRV/SPIRVOps.h" @@ -21,6 +20,7 @@ #include "mlir/IR/Builders.h" #include "mlir/IR/Location.h" #include "mlir/IR/MLIRContext.h" +#include "mlir/Target/SPIRV/SPIRVBinaryUtils.h" #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/Sequence.h"