[mlir][sparse] Factoring out SparseTensorEnums library
authorwren romano <2998727+wrengr@users.noreply.github.com>
Tue, 18 Oct 2022 01:13:05 +0000 (18:13 -0700)
committerwren romano <2998727+wrengr@users.noreply.github.com>
Tue, 18 Oct 2022 21:20:33 +0000 (14:20 -0700)
This differential splits the SparseTensorEnums library out from the SparseTensorRuntime library. The actual moving of files will be handled in the next differential.

Depends On D135996

Reviewed By: aartbik

Differential Revision: https://reviews.llvm.org/D136002

mlir/include/mlir/ExecutionEngine/SparseTensor/Enums.h
mlir/include/mlir/ExecutionEngine/SparseTensor/Storage.h
mlir/include/mlir/ExecutionEngine/SparseTensorRuntime.h
mlir/lib/Dialect/SparseTensor/IR/CMakeLists.txt
mlir/lib/Dialect/SparseTensor/Transforms/CMakeLists.txt
mlir/lib/ExecutionEngine/CMakeLists.txt
mlir/lib/ExecutionEngine/SparseTensor/CMakeLists.txt
utils/bazel/llvm-project-overlay/mlir/BUILD.bazel

index 8dd0a2e..716c8ab 100644 (file)
@@ -26,7 +26,8 @@
 #ifndef MLIR_EXECUTIONENGINE_SPARSETENSOR_ENUMS_H
 #define MLIR_EXECUTIONENGINE_SPARSETENSOR_ENUMS_H
 
-#include "mlir/ExecutionEngine/Float16bits.h"
+// NOTE: Client code will need to include "mlir/ExecutionEngine/Float16bits.h"
+// if they want to use the `MLIR_SPARSETENSOR_FOREVERY_V` macro.
 
 #include <cinttypes>
 #include <complex>
index c85e2c1..0d733bd 100644 (file)
@@ -33,6 +33,7 @@
 #ifndef MLIR_EXECUTIONENGINE_SPARSETENSOR_STORAGE_H
 #define MLIR_EXECUTIONENGINE_SPARSETENSOR_STORAGE_H
 
+#include "mlir/ExecutionEngine/Float16bits.h"
 #include "mlir/ExecutionEngine/SparseTensor/COO.h"
 #include "mlir/ExecutionEngine/SparseTensor/CheckedMul.h"
 #include "mlir/ExecutionEngine/SparseTensor/Enums.h"
index ba2dc51..58d68f7 100644 (file)
@@ -16,6 +16,7 @@
 #define MLIR_EXECUTIONENGINE_SPARSETENSORRUNTIME_H
 
 #include "mlir/ExecutionEngine/CRunnerUtils.h"
+#include "mlir/ExecutionEngine/Float16bits.h"
 #include "mlir/ExecutionEngine/SparseTensor/Enums.h"
 
 #include <cinttypes>
index 27d2cde..0e69813 100644 (file)
@@ -14,5 +14,5 @@ add_mlir_dialect_library(MLIRSparseTensorDialect
   MLIRIR
   MLIRInferTypeOpInterface
   MLIRSupport
-  MLIRSparseTensorRuntime
+  MLIRSparseTensorEnums
   )
index 8d8c84a..eafee08 100644 (file)
@@ -31,6 +31,7 @@ add_mlir_dialect_library(MLIRSparseTensorTransforms
   MLIRSCFTransforms
   MLIRSCFUtils
   MLIRSparseTensorDialect
+  MLIRSparseTensorEnums
   MLIRSparseTensorUtils
   MLIRTensorDialect
   MLIRTransforms
index 1449bdf..f8778cd 100644 (file)
@@ -137,6 +137,8 @@ add_mlir_library(mlir_c_runner_utils
   EXCLUDE_FROM_LIBMLIR
 
   LINK_LIBS PUBLIC
+  mlir_float16_utils
+  MLIRSparseTensorEnums
   MLIRSparseTensorRuntime
   )
 set_property(TARGET mlir_c_runner_utils PROPERTY CXX_STANDARD 17)
index 3e8993c..01b0793 100644 (file)
@@ -1,3 +1,23 @@
+# This library is shared by both MLIRSparseTensorDialect and
+# MLIRSparseTensorRuntime, so it must not depend on any of the MLIR/LLVM
+# internals or else mlir_c_runner_utils will inherit that dependency.
+#
+# Because this is a header-only (`INTERFACE`) library, we cannot use
+# the `add_mlir_library` function.  So we do our best to replicate the
+# relevant portions below.  If doing so becomes too complicated, then
+# we should adjust the `add_mlir_library` function to also work for
+# `INTERFACE` libraries.
+set(MLIRSparseTensorEnums_srcs
+  ${MLIR_MAIN_INCLUDE_DIR}/mlir/ExecutionEngine/SparseTensor/Enums.h)
+add_library(MLIRSparseTensorEnums INTERFACE ${MLIRSparseTensorEnums_srcs})
+if(MSVC_IDE OR XCODE)
+  set_source_files_properties(${MLIRSparseTensorEnums_srcs}
+    PROPERTIES HEADER_FILE_ONLY ON)
+endif()
+add_mlir_library_install(MLIRSparseTensorEnums)
+set_property(TARGET MLIRSparseTensorEnums PROPERTY CXX_STANDARD 17)
+
+
 # Unlike mlir_float16_utils, mlir_c_runner_utils, etc, we do *not* make
 # this a shared library: because doing so causes issues when building
 # on Windows.  In particular, various functions take/return `std::vector`
@@ -13,6 +33,7 @@ add_mlir_library(MLIRSparseTensorRuntime
   EXCLUDE_FROM_LIBMLIR
 
   LINK_LIBS PUBLIC
+  MLIRSparseTensorEnums
   mlir_float16_utils
   )
 set_property(TARGET MLIRSparseTensorRuntime PROPERTY CXX_STANDARD 17)
index db39d9c..e1a463b 100644 (file)
@@ -2075,6 +2075,15 @@ gentbl_cc_library(
     deps = [":PassBaseTdFiles"],
 )
 
+# This library is shared by both SparseTensorDialect and
+# SparseTensorRuntime, so it must not depend on any of the MLIR/LLVM
+# internals or else mlir_c_runner_utils will inherit that dependency.
+cc_library(
+    name = "SparseTensorEnums",
+    hdrs = ["include/mlir/ExecutionEngine/SparseTensor/Enums.h"],
+    includes = ["include"],
+)
+
 cc_library(
     name = "SparseTensorDialect",
     srcs = ["lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp"],
@@ -2085,8 +2094,8 @@ cc_library(
         ":IR",
         ":InferTypeOpInterface",
         ":SparseTensorAttrDefsIncGen",
+        ":SparseTensorEnums",
         ":SparseTensorOpsIncGen",
-        ":SparseTensorRuntime",
         "//llvm:Support",
     ],
 )
@@ -2137,8 +2146,8 @@ cc_library(
         ":SCFDialect",
         ":SCFTransforms",
         ":SparseTensorDialect",
+        ":SparseTensorEnums",
         ":SparseTensorPassIncGen",
-        ":SparseTensorRuntime",
         ":SparseTensorUtils",
         ":Support",
         ":TensorDialect",
@@ -6755,10 +6764,6 @@ cc_binary(
 # pragma, therefore it cannot be safely/correctly used across DLL boundaries.
 # Consequently, we avoid using the "mlir_xxx_utils" naming scheme,
 # since that is reserved/intended for shared libraries only.
-#
-# We relist Float16bits.h because Enums.h includes it; rather than
-# forcing all direct-dependants state that they also directly-depend
-# on :mlir_float16_utils (to satisfy the layering_check).
 cc_library(
     name = "SparseTensorRuntime",
     srcs = [
@@ -6767,20 +6772,19 @@ cc_library(
         "lib/ExecutionEngine/SparseTensor/Storage.cpp",
     ],
     hdrs = [
-        "include/mlir/ExecutionEngine/Float16bits.h",
         "include/mlir/ExecutionEngine/SparseTensor/COO.h",
         "include/mlir/ExecutionEngine/SparseTensor/CheckedMul.h",
-        "include/mlir/ExecutionEngine/SparseTensor/Enums.h",
         "include/mlir/ExecutionEngine/SparseTensor/ErrorHandling.h",
         "include/mlir/ExecutionEngine/SparseTensor/File.h",
         "include/mlir/ExecutionEngine/SparseTensor/Storage.h",
     ],
     includes = ["include"],
-    deps = [":mlir_float16_utils"],
+    deps = [
+        ":SparseTensorEnums",
+        ":mlir_float16_utils",
+    ],
 )
 
-# We relist Enums.h because SparseTensorRuntime.h includes/reexports it
-# as part of the public API.
 cc_library(
     name = "_mlir_c_runner_utils",
     srcs = [
@@ -6790,11 +6794,14 @@ cc_library(
     hdrs = [
         "include/mlir/ExecutionEngine/CRunnerUtils.h",
         "include/mlir/ExecutionEngine/Msan.h",
-        "include/mlir/ExecutionEngine/SparseTensor/Enums.h",
         "include/mlir/ExecutionEngine/SparseTensorRuntime.h",
     ],
     includes = ["include"],
-    deps = [":SparseTensorRuntime"],
+    deps = [
+        ":SparseTensorEnums",
+        ":SparseTensorRuntime",
+        ":mlir_float16_utils",
+    ],
 )
 
 # Indirection to avoid 'libmlir_c_runner_utils.so' filename clash.