blob: 2dfe5c32ba002e79ef78894742a52bf1fb631144 [file]
# Copyright 2026 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# WebGPU SPIR-V compiler target: compiles MLIR to SPIR-V, then translates
# SPIR-V to WGSL via Tint (from Dawn). Output is a FlatBuffer executable
# containing WGSL shader sources.
load("//build_tools/bazel:build_defs.oss.bzl", "iree_compiler_cc_library", "iree_compiler_register_plugin")
package(
default_visibility = ["//visibility:public"],
features = ["layering_check"],
licenses = ["notice"],
)
iree_compiler_register_plugin(
plugin_id = "hal_target_webgpu_spirv",
target = ":WebGPUSPIRV",
)
iree_compiler_cc_library(
name = "SPIRVToWGSL",
srcs = [
"SPIRVToWGSL.cpp",
],
hdrs = [
"SPIRVToWGSL.h",
],
# Tint's public headers use C++20 features such as concepts and std::span.
# Some Dawn headers use warning pragmas newer than CI clang versions.
copts = [
"-std=c++20",
"-Wno-unknown-warning-option",
],
deps = [
"@dawn//src/tint/lang/core/ir",
"@dawn//src/tint/lang/spirv/reader",
"@dawn//src/tint/lang/wgsl/program",
"@dawn//src/tint/lang/wgsl/writer",
"@llvm-project//llvm:Support",
],
)
iree_compiler_cc_library(
name = "WebGPUSPIRV",
srcs = [
"WebGPUSPIRVTarget.cpp",
],
deps = [
":SPIRVToWGSL",
"//compiler/src/iree/compiler/Codegen/Common:PassHeaders",
"//compiler/src/iree/compiler/Codegen/Dialect/Codegen/IR:IREECodegenDialect",
"//compiler/src/iree/compiler/Codegen/Dialect/GPU/TargetUtils:KnownTargets",
"//compiler/src/iree/compiler/Codegen/SPIRV",
"//compiler/src/iree/compiler/Codegen/Utils",
"//compiler/src/iree/compiler/Codegen/WGSL",
"//compiler/src/iree/compiler/Dialect/Flow/IR",
"//compiler/src/iree/compiler/Dialect/HAL/Target",
"//compiler/src/iree/compiler/Dialect/HAL/Utils:ExecutableDebugInfoUtils",
"//compiler/src/iree/compiler/PluginAPI",
"//compiler/src/iree/compiler/Utils",
"//runtime/src/iree/schemas:executable_debug_info_c_fbs",
"//runtime/src/iree/schemas:webgpu_executable_def_c_fbs",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:GPUDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:SPIRVDialect",
"@llvm-project//mlir:SPIRVSerialization",
"@llvm-project//mlir:SPIRVTransforms",
"@llvm-project//mlir:Support",
],
)