blob: 78c255d13eb8fcba783f3a386b6755a0676947da [file] [log] [blame]
# Copyright 2023 The StableHLO Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
load("@llvm-project//mlir:tblgen.bzl", "gentbl_cc_library", "gentbl_filegroup", "td_library")
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
package(
default_visibility = ["//visibility:public"],
licenses = ["notice"],
)
exports_files([
"LICENSE",
"stablehlo/integrations/python/ChloModule.cpp",
"stablehlo/integrations/python/PortableApi.cpp",
"stablehlo/integrations/python/PortableApi.h",
"stablehlo/integrations/python/StablehloModule.cpp",
"stablehlo/integrations/python/VhloModule.cpp",
])
filegroup(
name = "stablehlo_ops_td_filegroup",
srcs = glob(["stablehlo/dialect/*.td"]),
)
cc_library(
name = "base",
srcs = [
"stablehlo/dialect/Base.cpp",
],
hdrs = [
"stablehlo/dialect/Base.h",
],
strip_include_prefix = ".",
deps = [
":base_attr_interfaces_inc_gen",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:BytecodeReader",
"@llvm-project//mlir:BytecodeWriter",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:InferTypeOpInterface",
"@llvm-project//mlir:QuantOps",
"@llvm-project//mlir:ShapeDialect",
"@llvm-project//mlir:Support",
],
)
gentbl_cc_library(
name = "base_attr_interfaces_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-attr-interface-decls"],
"stablehlo/dialect/BaseAttrInterfaces.h.inc",
),
(
["-gen-attr-interface-defs"],
"stablehlo/dialect/BaseAttrInterfaces.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/Base.td",
deps = [":stablehlo_ops_td_files"],
)
td_library(
name = "base_td_files",
srcs = [
"stablehlo/dialect/Base.td",
],
includes = ["."],
deps = [
"@llvm-project//mlir:InferTypeOpInterfaceTdFiles",
"@llvm-project//mlir:OpBaseTdFiles",
"@llvm-project//mlir:QuantizationOpsTdFiles",
],
)
cc_library(
name = "broadcast_utils",
srcs = [
"stablehlo/dialect/BroadcastUtils.cpp",
],
hdrs = [
"stablehlo/dialect/BroadcastUtils.h",
],
strip_include_prefix = ".",
deps = [
":base",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:ShapeDialect",
],
)
gentbl_cc_library(
name = "chlo_attrs_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-attrdef-decls"],
"stablehlo/dialect/ChloAttrs.h.inc",
),
(
["-gen-attrdef-defs"],
"stablehlo/dialect/ChloAttrs.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/ChloOps.td",
deps = [
":chlo_ops_td_files",
],
)
CHLO_CAPI_SOURCES = [
"stablehlo/integrations/c/ChloAttributes.cpp",
"stablehlo/integrations/c/ChloDialect.cpp",
]
CHLO_CAPI_HEADERS = [
"stablehlo/integrations/c/ChloAttributes.h",
"stablehlo/integrations/c/ChloDialect.h",
]
cc_library(
name = "chlo_capi",
srcs = CHLO_CAPI_SOURCES,
hdrs = CHLO_CAPI_HEADERS,
strip_include_prefix = ".",
deps = [
":chlo_ops",
"@llvm-project//mlir:CAPIIR",
],
)
# Header-only target, used when using the C API from a separate shared library.
cc_library(
name = "chlo_capi_headers",
hdrs = CHLO_CAPI_HEADERS,
strip_include_prefix = ".",
deps = [
"@llvm-project//mlir:CAPIIRHeaders",
],
)
# Alwayslink target, used when exporting the C API from a shared library.
cc_library(
name = "chlo_capi_objects",
srcs = CHLO_CAPI_SOURCES,
hdrs = CHLO_CAPI_HEADERS,
strip_include_prefix = ".",
deps = [
":chlo_ops",
"@llvm-project//mlir:CAPIIRObjects",
],
alwayslink = True,
)
gentbl_cc_library(
name = "chlo_enums_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-enum-decls"],
"stablehlo/dialect/ChloEnums.h.inc",
),
(
["-gen-enum-defs"],
"stablehlo/dialect/ChloEnums.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/ChloOps.td",
deps = [
":chlo_ops_td_files",
],
)
gentbl_cc_library(
name = "chlo_ops_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-op-decls"],
"stablehlo/dialect/ChloOps.h.inc",
),
(
["-gen-op-defs"],
"stablehlo/dialect/ChloOps.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/ChloOps.td",
deps = [
":chlo_ops_td_files",
],
)
filegroup(
name = "chlo_ops_py_files",
srcs = [
"stablehlo/integrations/python/mlir/dialects/chlo.py",
":chlo_ops_py_gen",
],
)
gentbl_filegroup(
name = "chlo_ops_py_gen",
tbl_outs = [
(
[
"-gen-python-op-bindings",
"-bind-dialect=chlo",
],
"stablehlo/integrations/python/mlir/dialects/_chlo_ops_gen.py",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/integrations/python/mlir/dialects/ChloOps.td",
deps = [
":chlo_ops_td_files",
"@llvm-project//mlir:OpBaseTdFiles",
],
)
td_library(
name = "chlo_ops_td_files",
srcs = [
"stablehlo/dialect/ChloEnums.td",
"stablehlo/dialect/ChloOps.td",
],
includes = ["."],
deps = [
":base_td_files",
"@llvm-project//mlir:BuiltinDialectTdFiles",
"@llvm-project//mlir:ControlFlowInterfacesTdFiles",
"@llvm-project//mlir:OpBaseTdFiles",
],
)
cc_library(
name = "chlo_ops",
srcs = [
"stablehlo/dialect/ChloBytecode.cpp",
"stablehlo/dialect/ChloOps.cpp",
],
hdrs = [
"stablehlo/dialect/ChloBytecode.h",
"stablehlo/dialect/ChloOps.h",
],
strip_include_prefix = ".",
deps = [
":base",
":broadcast_utils",
":chlo_attrs_inc_gen",
":chlo_enums_inc_gen",
":chlo_ops_inc_gen",
":stablehlo_type_inference",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:BytecodeReader",
"@llvm-project//mlir:BytecodeWriter",
"@llvm-project//mlir:ComplexDialect",
"@llvm-project//mlir:ControlFlowInterfaces",
"@llvm-project//mlir:Dialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:InferTypeOpInterface",
"@llvm-project//mlir:QuantOps",
"@llvm-project//mlir:TransformUtils",
],
)
cc_library(
name = "interpreter_ops",
srcs = [
"stablehlo/reference/InterpreterOps.cpp",
],
hdrs = [
"stablehlo/reference/InterpreterOps.h",
],
strip_include_prefix = ".",
deps = [
":interpreter_ops_inc_gen",
":reference_numpy",
":reference_ops",
":reference_process_grid",
":reference_value",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
gentbl_cc_library(
name = "interpreter_ops_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-op-decls"],
"stablehlo/reference/InterpreterOps.h.inc",
),
(
["-gen-op-defs"],
"stablehlo/reference/InterpreterOps.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/reference/InterpreterOps.td",
deps = [
":interpreter_ops_td_files",
],
)
td_library(
name = "interpreter_ops_td_files",
srcs = [
"stablehlo/reference/InterpreterOps.td",
],
includes = ["."],
deps = [
":base_td_files",
],
)
gentbl_cc_library(
name = "linalg_pass_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
[
"-gen-pass-decls",
"-name=StablehloLinalgTransforms",
],
"stablehlo/conversions/linalg/transforms/Passes.h.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/conversions/linalg/transforms/Passes.td",
deps = ["@llvm-project//mlir:PassBaseTdFiles"],
)
cc_library(
name = "linalg_passes",
srcs = [
"stablehlo/conversions/linalg/transforms/LegalizeToLinalgUtils.cpp",
"stablehlo/conversions/linalg/transforms/StablehloLegalizeToLinalg.cpp",
"stablehlo/conversions/linalg/transforms/StablehloToArith.cpp",
"stablehlo/conversions/linalg/transforms/StablehloToLinalgConvolution.cpp",
"stablehlo/conversions/linalg/transforms/StablehloToLinalgDotProduct.cpp",
"stablehlo/conversions/linalg/transforms/StablehloToLinalgPointwise.cpp",
"stablehlo/conversions/linalg/transforms/StablehloToLinalgRandom.cpp",
"stablehlo/conversions/linalg/transforms/StablehloToLinalgReduce.cpp",
"stablehlo/conversions/linalg/transforms/TypeConversion.cpp",
],
hdrs = [
"stablehlo/conversions/linalg/transforms/LegalizeToLinalgUtils.h",
"stablehlo/conversions/linalg/transforms/MapStablehloToScalarOp.h",
"stablehlo/conversions/linalg/transforms/Passes.h",
"stablehlo/conversions/linalg/transforms/Rewriters.h",
"stablehlo/conversions/linalg/transforms/TypeConversion.h",
],
strip_include_prefix = ".",
deps = [
":base",
":chlo_ops",
":linalg_pass_inc_gen",
":stablehlo_ops",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:ArithDialect",
"@llvm-project//mlir:BufferizationDialect",
"@llvm-project//mlir:ComplexDialect",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:LinalgDialect",
"@llvm-project//mlir:LinalgTransforms",
"@llvm-project//mlir:LinalgUtils",
"@llvm-project//mlir:MathDialect",
"@llvm-project//mlir:MemRefDialect",
"@llvm-project//mlir:Pass",
"@llvm-project//mlir:SCFDialect",
"@llvm-project//mlir:ShapeDialect",
"@llvm-project//mlir:SparseTensorDialect",
"@llvm-project//mlir:Support",
"@llvm-project//mlir:TensorDialect",
"@llvm-project//mlir:Transforms",
"@llvm-project//mlir:VectorDialect",
],
)
cc_library(
name = "reference_api",
srcs = [
"stablehlo/reference/Api.cpp",
],
hdrs = [
"stablehlo/reference/Api.h",
],
strip_include_prefix = ".",
deps = [
":interpreter_ops",
":reference_configuration",
":reference_errors",
":reference_numpy",
":reference_ops",
":reference_process",
":reference_scope",
":reference_value",
":register",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Parser",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "reference_axes",
srcs = [
"stablehlo/reference/Axes.cpp",
],
hdrs = [
"stablehlo/reference/Axes.h",
],
strip_include_prefix = ".",
deps = [
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
],
)
cc_library(
name = "reference_configuration",
srcs = [
"stablehlo/reference/Configuration.cpp",
],
hdrs = [
"stablehlo/reference/Configuration.h",
],
strip_include_prefix = ".",
deps = [
":reference_errors",
":reference_process",
":reference_scope",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "reference_element",
srcs = [
"stablehlo/reference/Element.cpp",
],
hdrs = [
"stablehlo/reference/Element.h",
],
strip_include_prefix = ".",
deps = [
":reference_errors",
":reference_types",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:ComplexDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "reference_errors",
srcs = [
"stablehlo/reference/Errors.cpp",
],
hdrs = [
"stablehlo/reference/Errors.h",
],
strip_include_prefix = ".",
deps = [
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "reference_index",
srcs = [
"stablehlo/reference/Index.cpp",
],
hdrs = [
"stablehlo/reference/Index.h",
],
strip_include_prefix = ".",
deps = [
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "reference_numpy",
srcs = [
"stablehlo/reference/NumPy.cpp",
],
hdrs = [
"stablehlo/reference/NumPy.h",
],
strip_include_prefix = ".",
deps = [
":reference_tensor",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
],
)
cc_library(
name = "reference_ops",
srcs = [
"stablehlo/reference/Ops.cpp",
],
hdrs = [
"stablehlo/reference/Ops.h",
],
strip_include_prefix = ".",
deps = [
":reference_axes",
":reference_configuration",
":reference_element",
":reference_errors",
":reference_index",
":reference_process",
":reference_process_grid",
":reference_scope",
":reference_tensor",
":reference_token",
":reference_types",
":reference_value",
":stablehlo_ops",
":stablehlo_type_inference",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "reference_process",
srcs = [
"stablehlo/reference/Process.cpp",
],
hdrs = [
"stablehlo/reference/Process.h",
],
strip_include_prefix = ".",
deps = [
":reference_process_grid",
":reference_tensor",
],
)
cc_library(
name = "reference_process_grid",
srcs = [
"stablehlo/reference/ProcessGrid.cpp",
],
hdrs = [
"stablehlo/reference/ProcessGrid.h",
],
strip_include_prefix = ".",
deps = [
":reference_tensor",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "reference_scope",
srcs = [
"stablehlo/reference/Scope.cpp",
],
hdrs = [
"stablehlo/reference/Scope.h",
],
strip_include_prefix = ".",
deps = [
":reference_tensor",
":reference_token",
":reference_value",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "reference_tensor",
srcs = [
"stablehlo/reference/Tensor.cpp",
],
hdrs = [
"stablehlo/reference/Tensor.h",
],
strip_include_prefix = ".",
deps = [
":reference_axes",
":reference_element",
":reference_errors",
":reference_index",
":reference_types",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "reference_token",
srcs = [
"stablehlo/reference/Token.cpp",
],
hdrs = [
"stablehlo/reference/Token.h",
],
strip_include_prefix = ".",
deps = [
":reference_errors",
":stablehlo_ops",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
],
)
cc_library(
name = "reference_types",
srcs = [
"stablehlo/reference/Types.cpp",
],
hdrs = [
"stablehlo/reference/Types.h",
],
strip_include_prefix = ".",
deps = [
"@llvm-project//mlir:IR",
],
)
cc_library(
name = "reference_value",
srcs = [
"stablehlo/reference/Value.cpp",
],
hdrs = [
"stablehlo/reference/Value.h",
],
strip_include_prefix = ".",
deps = [
":reference_errors",
":reference_tensor",
":reference_token",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
],
)
cc_library(
name = "register",
srcs = [
"stablehlo/dialect/Register.cpp",
],
hdrs = [
"stablehlo/dialect/Register.h",
],
strip_include_prefix = ".",
deps = [
":chlo_ops",
":interpreter_ops",
":stablehlo_ops",
":vhlo_ops",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:QuantOps",
"@llvm-project//mlir:ShapeDialect",
"@llvm-project//mlir:SparseTensorDialect",
"@llvm-project//mlir:TensorDialect",
],
)
cc_library(
name = "stablehlo_assembly_format",
srcs = [
"stablehlo/dialect/AssemblyFormat.cpp",
],
hdrs = [
"stablehlo/dialect/AssemblyFormat.h",
],
strip_include_prefix = ".",
deps = [
":base",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
gentbl_cc_library(
name = "stablehlo_attrs_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-attrdef-decls"],
"stablehlo/dialect/StablehloAttrs.h.inc",
),
(
["-gen-attrdef-defs"],
"stablehlo/dialect/StablehloAttrs.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/StablehloOps.td",
deps = [
":stablehlo_ops_td_files",
],
)
STABLEHLO_CAPI_SOURCES = [
"stablehlo/integrations/c/StablehloAttributes.cpp",
"stablehlo/integrations/c/StablehloDialect.cpp",
"stablehlo/integrations/c/StablehloTypes.cpp",
]
STABLEHLO_CAPI_HEADERS = [
"stablehlo/integrations/c/StablehloAttributes.h",
"stablehlo/integrations/c/StablehloDialect.h",
"stablehlo/integrations/c/StablehloTypes.h",
]
cc_library(
name = "stablehlo_capi",
srcs = STABLEHLO_CAPI_SOURCES,
hdrs = STABLEHLO_CAPI_HEADERS,
strip_include_prefix = ".",
deps = [
":stablehlo_ops",
"@llvm-project//mlir:CAPIIR",
],
)
# Header-only target, used when using the C API from a separate shared library.
cc_library(
name = "stablehlo_capi_headers",
hdrs = STABLEHLO_CAPI_HEADERS,
strip_include_prefix = ".",
deps = [
"@llvm-project//mlir:CAPIIRHeaders",
],
)
# Alwayslink target, used when exporting the C API from a shared library.
cc_library(
name = "stablehlo_capi_objects",
srcs = STABLEHLO_CAPI_SOURCES,
hdrs = STABLEHLO_CAPI_HEADERS,
strip_include_prefix = ".",
deps = [
":stablehlo_ops",
"@llvm-project//mlir:CAPIIRObjects",
],
alwayslink = True,
)
gentbl_cc_library(
name = "stablehlo_enums_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-enum-decls"],
"stablehlo/dialect/StablehloEnums.h.inc",
),
(
["-gen-enum-defs"],
"stablehlo/dialect/StablehloEnums.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/StablehloOps.td",
deps = [
":stablehlo_ops_td_files",
],
)
gentbl_cc_library(
name = "stablehlo_types_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
[
"-gen-typedef-decls",
"--typedefs-dialect=stablehlo",
],
"stablehlo/dialect/StablehloTypeDefs.h.inc",
),
(
[
"-gen-typedef-defs",
"--typedefs-dialect=stablehlo",
],
"stablehlo/dialect/StablehloTypeDefs.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/StablehloOps.td",
deps = [
":stablehlo_ops_td_files",
],
)
gentbl_cc_library(
name = "stablehlo_ops_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-op-decls"],
"stablehlo/dialect/StablehloOps.h.inc",
),
(
["-gen-op-defs"],
"stablehlo/dialect/StablehloOps.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/StablehloOps.td",
deps = [
":stablehlo_ops_td_files",
],
)
filegroup(
name = "stablehlo_ops_py_files",
srcs = [
"stablehlo/integrations/python/mlir/dialects/stablehlo.py",
":stablehlo_ops_py_gen",
],
)
gentbl_filegroup(
name = "stablehlo_ops_py_gen",
tbl_outs = [
(
[
"-gen-python-op-bindings",
"-bind-dialect=stablehlo",
],
"stablehlo/integrations/python/mlir/dialects/_stablehlo_ops_gen.py",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/integrations/python/mlir/dialects/StablehloOps.td",
deps = [
":stablehlo_ops_td_files",
"@llvm-project//mlir:OpBaseTdFiles",
],
)
td_library(
name = "stablehlo_ops_td_files",
srcs = [
"stablehlo/dialect/Base.td",
"stablehlo/dialect/StablehloAttrs.td",
"stablehlo/dialect/StablehloEnums.td",
"stablehlo/dialect/StablehloOps.td",
"stablehlo/dialect/StablehloTypes.td",
],
includes = ["."],
deps = [
":base_td_files",
"@llvm-project//mlir:BuiltinDialectTdFiles",
"@llvm-project//mlir:OpBaseTdFiles",
"@llvm-project//mlir:ShapeOpsTdFiles",
],
)
gentbl_cc_library(
name = "stablehlo_pass_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
[
"-gen-pass-decls",
],
"stablehlo/transforms/Passes.h.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/transforms/Passes.td",
deps = ["@llvm-project//mlir:PassBaseTdFiles"],
)
cc_library(
name = "stablehlo_passes",
srcs = [
"stablehlo/transforms/PassPipelines.cpp",
"stablehlo/transforms/StablehloCanonicalizeDynamism.cpp",
"stablehlo/transforms/StablehloInstrumentWithProbe.cpp",
"stablehlo/transforms/StablehloLegalizeToVhlo.cpp",
"stablehlo/transforms/StablehloRefineShapes.cpp",
"stablehlo/transforms/VhloLegalizeToStablehlo.cpp",
"stablehlo/transforms/VhloToVersion.cpp",
],
hdrs = [
"stablehlo/transforms/MapStablehloToVhlo.h",
"stablehlo/transforms/Passes.h",
"stablehlo/transforms/StablehloRefineShapes.h",
],
strip_include_prefix = ".",
deps = [
":base",
":chlo_ops",
":interpreter_ops",
":stablehlo_ops",
":stablehlo_ops_inc_gen",
":stablehlo_pass_inc_gen",
":stablehlo_type_inference",
":version",
":vhlo_ops",
":vhlo_types",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:InferTypeOpInterface",
"@llvm-project//mlir:Pass",
"@llvm-project//mlir:QuantOps",
"@llvm-project//mlir:ShapeDialect",
"@llvm-project//mlir:Support",
"@llvm-project//mlir:TensorDialect",
"@llvm-project//mlir:TransformUtils",
"@llvm-project//mlir:Transforms",
],
)
cc_library(
name = "stablehlo_portable_api",
srcs = [
"stablehlo/api/PortableApi.cpp",
],
hdrs = [
"stablehlo/api/PortableApi.h",
],
strip_include_prefix = ".",
deps = [
":stablehlo_ops",
":stablehlo_serialization",
":version",
":vhlo_ops",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:BytecodeWriter",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Parser",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "stablehlo_serialization",
srcs = [
"stablehlo/dialect/Serialization.cpp",
],
hdrs = [
"stablehlo/dialect/Serialization.h",
],
deps = [
":stablehlo_ops",
":stablehlo_passes",
":version",
":vhlo_ops",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:BytecodeReader",
"@llvm-project//mlir:BytecodeWriter",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Parser",
"@llvm-project//mlir:Pass",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "stablehlo_type_inference",
srcs = [
"stablehlo/dialect/TypeInference.cpp",
],
hdrs = [
"stablehlo/dialect/TypeInference.h",
],
strip_include_prefix = ".",
deps = [
":base",
":stablehlo_assembly_format",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:InferTypeOpInterface",
"@llvm-project//mlir:QuantOps",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "stablehlo_ops",
srcs = [
"stablehlo/dialect/StablehloBytecode.cpp",
"stablehlo/dialect/StablehloOps.cpp",
],
hdrs = [
"stablehlo/dialect/StablehloBytecode.h",
"stablehlo/dialect/StablehloOps.h",
],
strip_include_prefix = ".",
deps = [
":base",
":stablehlo_assembly_format",
":stablehlo_attrs_inc_gen",
":stablehlo_enums_inc_gen",
":stablehlo_ops_inc_gen",
":stablehlo_type_inference",
":stablehlo_types_inc_gen",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:ArithDialect",
"@llvm-project//mlir:ComplexDialect",
"@llvm-project//mlir:FunctionInterfaces",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:InferTypeOpInterface",
"@llvm-project//mlir:QuantOps",
"@llvm-project//mlir:ShapeDialect",
"@llvm-project//mlir:SparseTensorDialect",
"@llvm-project//mlir:Support",
"@llvm-project//mlir:TensorDialect",
],
)
cc_binary(
name = "stablehlo-lsp-server",
srcs = [
"stablehlo/tools/StablehloLspServerMain.cpp",
],
deps = [
":register",
"@llvm-project//mlir:AllExtensions",
"@llvm-project//mlir:AllPassesAndDialects",
"@llvm-project//mlir:MlirLspServerLib",
],
)
cc_binary(
name = "stablehlo-translate",
srcs = [
"stablehlo/tools/StablehloTranslateMain.cpp",
],
deps = [
":interpreter_ops",
":reference_api",
":reference_errors",
":reference_ops",
":reference_process_grid",
":reference_scope",
":reference_tensor",
":reference_value",
":register",
":stablehlo_ops",
":stablehlo_serialization",
":version",
":vhlo_ops",
"//stablehlo/tests:check_ops",
"//stablehlo/tests:test_utils",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:AllPassesAndDialects",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Pass",
"@llvm-project//mlir:Support",
"@llvm-project//mlir:Transforms",
"@llvm-project//mlir:TranslateLib",
],
)
cc_binary(
name = "stablehlo-opt",
srcs = [
"stablehlo/tools/StablehloOptMain.cpp",
],
deps = [
":interpreter_ops",
":linalg_passes",
":register",
":stablehlo_passes",
":tosa_passes",
"//stablehlo/tests:test_utils",
"@llvm-project//mlir:AllExtensions",
"@llvm-project//mlir:AllPassesAndDialects",
"@llvm-project//mlir:MlirOptLib",
"@llvm-project//mlir:TosaDialect",
],
)
gentbl_cc_library(
name = "tosa_pass_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
[
"-gen-pass-decls",
"-name=StablehloTOSATransforms",
],
"stablehlo/conversions/tosa/transforms/Passes.h.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/conversions/tosa/transforms/Passes.td",
deps = ["@llvm-project//mlir:PassBaseTdFiles"],
)
cc_library(
name = "tosa_passes",
srcs = [
"stablehlo/conversions/tosa/transforms/StablehloLegalizeToTosa.cpp",
"stablehlo/conversions/tosa/transforms/StablehloPrepareForTosa.cpp",
],
hdrs = [
"stablehlo/conversions/tosa/transforms/Passes.h",
],
strip_include_prefix = ".",
deps = [
":stablehlo_ops",
":tosa_pass_inc_gen",
":tosa_pdll_inc_gen",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:PDLDialect",
"@llvm-project//mlir:PDLInterpDialect",
"@llvm-project//mlir:Parser",
"@llvm-project//mlir:Pass",
"@llvm-project//mlir:QuantOps",
"@llvm-project//mlir:TosaDialect",
"@llvm-project//mlir:Transforms",
],
)
gentbl_cc_library(
name = "tosa_pdll_inc_gen",
tbl_outs = [
(
["-x=cpp"],
"stablehlo/conversions/tosa/transforms/StablehloLegalizeToTosa.pdll.h.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-pdll",
td_file = "stablehlo/conversions/tosa/transforms/StablehloLegalizeToTosa.pdll",
deps = [
":stablehlo_ops_td_files",
"@llvm-project//mlir:OpBaseTdFiles",
"@llvm-project//mlir:TosaDialectTdFiles",
],
)
cc_library(
name = "version",
srcs = [
"stablehlo/dialect/Version.cpp",
],
hdrs = [
"stablehlo/dialect/Version.h",
],
strip_include_prefix = ".",
deps = [
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
VHLO_CAPI_SOURCES = [
"stablehlo/integrations/c/VhloDialect.cpp",
]
VHLO_CAPI_HEADERS = [
"stablehlo/integrations/c/VhloDialect.h",
]
cc_library(
name = "vhlo_capi",
srcs = VHLO_CAPI_SOURCES,
hdrs = VHLO_CAPI_HEADERS,
strip_include_prefix = ".",
deps = [
":vhlo_ops",
"@llvm-project//mlir:CAPIIR",
],
)
# Header-only target, used when using the C API from a separate shared library.
cc_library(
name = "vhlo_capi_headers",
hdrs = VHLO_CAPI_HEADERS,
strip_include_prefix = ".",
deps = [
"@llvm-project//mlir:CAPIIRHeaders",
],
)
# Alwayslink target, used when exporting the C API from a shared library.
cc_library(
name = "vhlo_capi_objects",
srcs = VHLO_CAPI_SOURCES,
hdrs = VHLO_CAPI_HEADERS,
strip_include_prefix = ".",
deps = [
":vhlo_ops",
"@llvm-project//mlir:CAPIIRObjects",
],
alwayslink = True,
)
filegroup(
name = "vhlo_ops_py_files",
srcs = [
"stablehlo/integrations/python/mlir/dialects/vhlo.py",
":vhlo_ops_py_gen",
],
)
gentbl_filegroup(
name = "vhlo_ops_py_gen",
tbl_outs = [
(
[
"-gen-python-op-bindings",
"-bind-dialect=vhlo",
],
"stablehlo/integrations/python/mlir/dialects/_vhlo_ops_gen.py",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/integrations/python/mlir/dialects/VhloOps.td",
deps = [
":vhlo_ops_td_files",
"@llvm-project//mlir:OpBaseTdFiles",
],
)
gentbl_cc_library(
name = "vhlo_attr_interfaces_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-attr-interface-decls"],
"stablehlo/dialect/VhloAttrInterfaces.h.inc",
),
(
["-gen-attr-interface-defs"],
"stablehlo/dialect/VhloAttrInterfaces.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/VhloAttrs.td",
deps = [
":vhlo_ops_td_files",
],
)
gentbl_cc_library(
name = "vhlo_attrs_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-attrdef-decls"],
"stablehlo/dialect/VhloAttrs.h.inc",
),
(
["-gen-attrdef-defs"],
"stablehlo/dialect/VhloAttrs.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/VhloOps.td",
deps = [
":vhlo_ops_td_files",
],
)
gentbl_cc_library(
name = "vhlo_enums_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-enum-decls"],
"stablehlo/dialect/VhloEnums.h.inc",
),
(
["-gen-enum-defs"],
"stablehlo/dialect/VhloEnums.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/VhloEnums.td",
deps = [
":vhlo_ops_td_files",
],
)
gentbl_cc_library(
name = "vhlo_op_interfaces_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-op-interface-decls"],
"stablehlo/dialect/VhloOpInterfaces.h.inc",
),
(
["-gen-op-interface-defs"],
"stablehlo/dialect/VhloOpInterfaces.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/VhloOps.td",
deps = [
":vhlo_ops_td_files",
],
)
cc_library(
name = "vhlo_ops",
srcs = [
"stablehlo/dialect/VhloBytecode.cpp",
"stablehlo/dialect/VhloOps.cpp",
],
hdrs = [
"stablehlo/dialect/VhloBytecode.h",
"stablehlo/dialect/VhloOps.h",
],
strip_include_prefix = ".",
deps = [
":base",
":stablehlo_assembly_format",
":version",
":vhlo_attr_interfaces_inc_gen",
":vhlo_attrs_inc_gen",
":vhlo_enums_inc_gen",
":vhlo_op_interfaces_inc_gen",
":vhlo_ops_inc_gen",
":vhlo_types",
":vhlo_types_inc_gen",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:FunctionInterfaces",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:QuantOps",
"@llvm-project//mlir:ShapeDialect",
"@llvm-project//mlir:Support",
],
)
gentbl_cc_library(
name = "vhlo_ops_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-op-decls"],
"stablehlo/dialect/VhloOps.h.inc",
),
(
["-gen-op-defs"],
"stablehlo/dialect/VhloOps.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/VhloOps.td",
deps = [
":vhlo_ops_td_files",
],
)
td_library(
name = "vhlo_ops_td_files",
srcs = [
"stablehlo/dialect/VhloAttrs.td",
"stablehlo/dialect/VhloBase.td",
"stablehlo/dialect/VhloDialect.td",
"stablehlo/dialect/VhloEnums.td",
"stablehlo/dialect/VhloOps.td",
"stablehlo/dialect/VhloTypes.td",
],
includes = ["."],
deps = [
"@llvm-project//mlir:BuiltinDialectTdFiles",
"@llvm-project//mlir:OpBaseTdFiles",
"@llvm-project//mlir:ShapeOpsTdFiles",
],
)
cc_library(
name = "vhlo_types",
srcs = [
"stablehlo/dialect/VhloTypes.cpp",
],
hdrs = [
"stablehlo/dialect/VhloTypes.h",
],
strip_include_prefix = ".",
deps = [
":stablehlo_assembly_format",
":version",
":vhlo_type_interfaces_inc_gen",
":vhlo_types_inc_gen",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:QuantOps",
"@llvm-project//mlir:ShapeDialect",
"@llvm-project//mlir:Support",
"@llvm-project//mlir:Transforms",
],
)
gentbl_cc_library(
name = "vhlo_type_interfaces_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-type-interface-decls"],
"stablehlo/dialect/VhloTypeInterfaces.h.inc",
),
(
["-gen-type-interface-defs"],
"stablehlo/dialect/VhloTypeInterfaces.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/VhloTypes.td",
deps = [
":vhlo_ops_td_files",
],
)
gentbl_cc_library(
name = "vhlo_types_inc_gen",
strip_include_prefix = ".",
tbl_outs = [
(
["-gen-typedef-decls"],
"stablehlo/dialect/VhloTypeDefs.h.inc",
),
(
["-gen-typedef-defs"],
"stablehlo/dialect/VhloTypeDefs.cpp.inc",
),
],
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "stablehlo/dialect/VhloOps.td",
deps = [
":vhlo_ops_td_files",
],
)
test_suite(
name = "stablehlo_ci_tests",
tests = [
"//stablehlo/conversions/linalg/tests:stablehlo_linalg_tests",
"//stablehlo/conversions/tosa/tests:stablehlo_tosa_tests",
"//stablehlo/testdata:stablehlo_testdata_tests",
"//stablehlo/tests:stablehlo_tests",
],
)