Skip to content

Commit

Permalink
PR #11424: [XLA:GPU] Add SPIRV-LLVM-Translator and translation pass
Browse files Browse the repository at this point in the history
Imported from GitHub PR openxla/xla#11424

It is a sub PR of openxla/xla#9042 to add spirv-llvm-translator and translation pass
Copybara import of the project:

--
6d8ce76e2b71120106ffae91945df9b974e74dec by Sheng, Yang <[email protected]>:

Add SPIRV-LLVM-Translator and translation pass

update comments and SPIRV-LLVM-Translator commit

Merging this change closes #11424

FUTURE_COPYBARA_INTEGRATE_REVIEW=openxla/xla#11424 from Intel-tensorflow:yang/llvm-spirv 6d8ce76e2b71120106ffae91945df9b974e74dec
PiperOrigin-RevId: 660816063
  • Loading branch information
ShengYang1 authored and copybara-github committed Aug 8, 2024
1 parent c0191b4 commit 1e3e93a
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 0 deletions.
1 change: 1 addition & 0 deletions opensource_only.files
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ third_party/remote_config/remote_platform_configure.bzl:
third_party/repo.bzl:
third_party/six.BUILD:
third_party/snappy.BUILD:
third_party/spirv_llvm_translator/spirv_llvm_translator.BUILD:
third_party/systemlibs/BUILD.tpl:
third_party/systemlibs/BUILD:
third_party/systemlibs/absl_py.BUILD:
Expand Down
7 changes: 7 additions & 0 deletions third_party/spirv_llvm_translator/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package(
# copybara:uncomment default_applicable_licenses = ["//tensorflow:license"],
default_visibility = ["//visibility:public"],
licenses = ["notice"],
)

# spirv_llvm_translator license placeholder
34 changes: 34 additions & 0 deletions third_party/spirv_llvm_translator/spirv_llvm_translator.BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
cc_library(
name = "spirv_llvm_translator",
srcs = glob([
"lib/SPIRV/libSPIRV/*.cpp",
"lib/SPIRV/libSPIRV/*.hpp",
"lib/SPIRV/libSPIRV/*.h",
"lib/SPIRV/Mangler/*.cpp",
"lib/SPIRV/Mangler/*.h",
"lib/SPIRV/*.cpp",
"lib/SPIRV/*.hpp",
"lib/SPIRV/*.h",
]),
hdrs = glob(["include/*"]),
includes = [
"include/",
"lib/SPIRV/",
"lib/SPIRV/Mangler/",
"lib/SPIRV/libSPIRV/",
],
visibility = ["//visibility:public"],
deps = [
"@llvm-project//llvm:Analysis",
"@llvm-project//llvm:BitWriter",
"@llvm-project//llvm:CodeGen",
"@llvm-project//llvm:Core",
"@llvm-project//llvm:Demangle",
"@llvm-project//llvm:IRReader",
"@llvm-project//llvm:Linker",
"@llvm-project//llvm:Passes",
"@llvm-project//llvm:Support",
"@llvm-project//llvm:TransformUtils",
"@spirv_headers//:spirv_cpp_headers",
],
)
25 changes: 25 additions & 0 deletions third_party/spirv_llvm_translator/spirv_llvm_translator.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
diff --git a/lib/SPIRV/SPIRVInternal.h b/lib/SPIRV/SPIRVInternal.h
index a828add8..924e13b4 100644

Spir backend uses different addrspace representations link with nvptx backend link.
We reorder the enum value here so that we can make XLA LLVM codegen simple(avoiding
changing addrspace based on device backend everywhere)

--- a/lib/SPIRV/SPIRVInternal.h
+++ b/lib/SPIRV/SPIRVInternal.h
@@ -179,11 +179,12 @@ typedef SPIRVMap<Op, Op, IntBoolOpMapId> IntBoolOpMap;
"-v512:512:512-v1024:1024:1024"

enum SPIRAddressSpace {
- SPIRAS_Private,
+ SPIRAS_Generic,
SPIRAS_Global,
- SPIRAS_Constant,
+ SPIRAS_Internal,
SPIRAS_Local,
- SPIRAS_Generic,
+ SPIRAS_Constant,
+ SPIRAS_Private,
SPIRAS_GlobalDevice,
SPIRAS_GlobalHost,
SPIRAS_Input,
16 changes: 16 additions & 0 deletions workspace2.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -591,6 +591,22 @@ def _tf_repositories():
urls = tf_mirror_urls("https://github.com/google/glog/archive/refs/tags/v0.4.0.tar.gz"),
)

tf_http_archive(
name = "spirv_headers",
sha256 = "11d835c60297b26532c05c3f3b581ba7a2787b5ae7399e94f72c392169216f11",
strip_prefix = "SPIRV-Headers-b73e168ca5e123dcf3dea8a34b19a5130f421ae1",
urls = tf_mirror_urls("https://github.com/KhronosGroup/SPIRV-Headers/archive/b73e168ca5e123dcf3dea8a34b19a5130f421ae1.tar.gz"),
)

tf_http_archive(
name = "spirv_llvm_translator",
sha256 = "d499769f4fd1e0ce9d4dbd3622ee7e3e641b5623dcdf811521e3e7c0bdb1e6c2",
strip_prefix = "SPIRV-LLVM-Translator-dad1f0eaab8047a4f73c50ed5f3d1694b78aae97",
build_file = "//third_party/spirv_llvm_translator:spirv_llvm_translator.BUILD",
patch_file = ["//third_party/spirv_llvm_translator:spirv_llvm_translator.patch"],
urls = tf_mirror_urls("https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/dad1f0eaab8047a4f73c50ed5f3d1694b78aae97.tar.gz"),
)

# buildifier: disable=unnamed-macro
def workspace():
# Check the bazel version before executing any repository rules, in case
Expand Down

0 comments on commit 1e3e93a

Please sign in to comment.