summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-util/spirv-llvm-translator')
-rw-r--r--dev-util/spirv-llvm-translator/Manifest7
-rw-r--r--dev-util/spirv-llvm-translator/files/spirv-llvm-translator-15.0.0-intel-capability.patch77
-rw-r--r--dev-util/spirv-llvm-translator/files/spirv-llvm-translator-16.0.0-ld_library_path.patch63
-rw-r--r--dev-util/spirv-llvm-translator/files/spirv-llvm-translator-16.0.0-llvm-link-llvm-dylib.patch73
-rw-r--r--dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-do-not-rely-on-version-of-compiler-being-VER.0.0-219.patch26
-rw-r--r--dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch181
-rw-r--r--dev-util/spirv-llvm-translator/files/spirv-llvm-translator-8.0.0.1-no_pkgconfig_files.patch18
-rw-r--r--dev-util/spirv-llvm-translator/metadata.xml16
-rw-r--r--dev-util/spirv-llvm-translator/spirv-llvm-translator-10.0.0.ebuild58
-rw-r--r--dev-util/spirv-llvm-translator/spirv-llvm-translator-15.0.0-r1.ebuild62
-rw-r--r--dev-util/spirv-llvm-translator/spirv-llvm-translator-16.0.0-r1.ebuild66
-rw-r--r--dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0-r2.ebuild65
-rw-r--r--dev-util/spirv-llvm-translator/spirv-llvm-translator-18.1.0.ebuild63
-rw-r--r--dev-util/spirv-llvm-translator/spirv-llvm-translator-18.1.1.ebuild63
-rw-r--r--dev-util/spirv-llvm-translator/spirv-llvm-translator-9.0.1.1.ebuild58
15 files changed, 751 insertions, 145 deletions
diff --git a/dev-util/spirv-llvm-translator/Manifest b/dev-util/spirv-llvm-translator/Manifest
index 5fbe71352606..6ad673895b5a 100644
--- a/dev-util/spirv-llvm-translator/Manifest
+++ b/dev-util/spirv-llvm-translator/Manifest
@@ -1,2 +1,5 @@
-DIST spirv-llvm-translator-10.0.0.tar.gz 535828 BLAKE2B 0bce2f663b2f70a2db2b1ef0665d627716d63baa6cb47ced532ac2e30e8b0424934d273135581655445ea87f5c84c9df876da0490d7a302a6d00c86b78e05c22 SHA512 d6400bb3e4df780358b5d6d0af889e7654b7dfd472c8d41b77ff98e7ff1bd017c289ecacb59a3dd7bfddb1a5108e21028aa770bf645e06178610bb322de905be
-DIST spirv-llvm-translator-9.0.1.1.tar.gz 498803 BLAKE2B dbc1a3a51671102e13ac265c5de744ec7ddbb74ff1a58971e18bfd7cbc7a0497cbb86d099681ac153d8e104577c93b66eec597b6c646d422eb701ea7c96a57c9 SHA512 a84494c49cc16148301cc468fdc20b9ef41a4532477b69468e32551d2132a9be68346369d5f4c07cbefd7f0f63b3e7ddf11e5c40088f74d8e3379a95c3cff251
+DIST spirv-llvm-translator-15.0.0.tar.gz 1515145 BLAKE2B 1f93b55f8934ce7dbc9416b82f7bd544d16e95be795047e914d0c303ec90965eae03ab3522b3c92d6cffb1fe00bed78a4bb74085d3da21c14b68ad3fbe53113c SHA512 8a6ddddf326dad96c1c5749ebf03e63e6be60592dccd307f7a35be668cec2b4f58c2f089854aeefa37398c3a97dad6bf92a6ceb892da27b5cf9d4ae1aa41dd06
+DIST spirv-llvm-translator-16.0.0.tar.gz 1542060 BLAKE2B bee72a776062266e60c5237396434ecba4e4da959ed52292ad08388bdd08d7749fd86cfac5c25af424032a1ba19f59b2d8c7eac0eaf50db6a4945841abe0836f SHA512 0bacacb89aa2b03d1173d1bfbcdd83fdce7441ebc3fff65e14dc5e901fc983861365a54c029b2a65075b6fa45046c30aa7bbad4e6150cf3382e7d050c598de98
+DIST spirv-llvm-translator-17.0.0.tar.gz 1601166 BLAKE2B c3e7a78fa55cd13ba61c024e2d3d82c47ac9dbf8c11bcbcf4ddc34a6838fb948885a263fd9af2d0f404b31f4c6e9226c9582e0f65b3220770e1af07cf85f4dac SHA512 ee54e597c678755cb48d677f81184d66616c7be934b570e04f0106e64c15f1cab124177b757f08a7713fa7fce981c74d61304d4554e6d198e6c14c53abf1e81c
+DIST spirv-llvm-translator-18.1.0.tar.gz 1689216 BLAKE2B 944463e64cf9ab8e90df7f599b979aa2b807340e41f94192b4581df836722e829169bf3fd301aeabbab3b70b046a3fbbc010a8ca600f65ec9466e807ea442c46 SHA512 ee124ae536a3fc1f25d0e4f9f553efb1755c5dba39d669d24a4acadb5a99938ce6018f82a8925181f3f05c86ae4bebf9e1bbaa0846fd611cace770f4d9baa984
+DIST spirv-llvm-translator-18.1.1.tar.gz 1694904 BLAKE2B 7e39a3592e02d3253b6e3c2583a9d0a38584e7e4ce91560dd9ec66c1fe4170fd486e5b7422afdae5da375bc878f33ce1852d2bc4c7ea426e8fd872391802ed70 SHA512 65aad3102d7484ac8a9ce8fdbaef3a0324540683a43e41fb03d8f21a9a58abebc4dfac7932d8fce7054d407b614e239370cda868a1afb15d0f16984116b3cbcb
diff --git a/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-15.0.0-intel-capability.patch b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-15.0.0-intel-capability.patch
new file mode 100644
index 000000000000..612a493fbed6
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-15.0.0-intel-capability.patch
@@ -0,0 +1,77 @@
+diff --git a/include/LLVMSPIRVExtensions.inc b/include/LLVMSPIRVExtensions.inc
+index 8eaf24de..695a5d85 100644
+--- a/include/LLVMSPIRVExtensions.inc
++++ b/include/LLVMSPIRVExtensions.inc
+@@ -38,6 +38,7 @@ EXT(SPV_INTEL_variable_length_array)
+ EXT(SPV_INTEL_fp_fast_math_mode)
+ EXT(SPV_INTEL_fpga_cluster_attributes)
+ EXT(SPV_INTEL_loop_fuse)
++EXT(SPV_INTEL_long_composites)
+ EXT(SPV_INTEL_long_constant_composite)
+ EXT(SPV_INTEL_optnone)
+ EXT(SPV_INTEL_fpga_dsp_control)
+diff --git a/lib/SPIRV/libSPIRV/SPIRVEntry.h b/lib/SPIRV/libSPIRV/SPIRVEntry.h
+index b43cd892..8be8d1b9 100644
+--- a/lib/SPIRV/libSPIRV/SPIRVEntry.h
++++ b/lib/SPIRV/libSPIRV/SPIRVEntry.h
+@@ -901,7 +901,7 @@ public:
+ }
+
+ SPIRVCapVec getRequiredCapability() const override {
+- return getVec(CapabilityLongConstantCompositeINTEL);
++ return getVec(CapabilityLongCompositesINTEL);
+ }
+
+ llvm::Optional<ExtensionID> getRequiredExtension() const override {
+diff --git a/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h b/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h
+index 88071dd7..3ba1cc38 100644
+--- a/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h
++++ b/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h
+@@ -591,7 +591,7 @@ template <> inline void SPIRVMap<Capability, std::string>::init() {
+ add(CapabilityGroupNonUniformRotateKHR, "GroupNonUniformRotateKHR");
+ add(CapabilityAtomicFloat32AddEXT, "AtomicFloat32AddEXT");
+ add(CapabilityAtomicFloat64AddEXT, "AtomicFloat64AddEXT");
+- add(CapabilityLongConstantCompositeINTEL, "LongConstantCompositeINTEL");
++ add(CapabilityLongCompositesINTEL, "LongCompositesINTEL");
+ add(CapabilityOptNoneINTEL, "OptNoneINTEL");
+ add(CapabilityAtomicFloat16AddEXT, "AtomicFloat16AddEXT");
+ add(CapabilityDebugInfoModuleINTEL, "DebugInfoModuleINTEL");
+diff --git a/test/SpecConstants/long-spec-const-composite.ll b/test/SpecConstants/long-spec-const-composite.ll
+index 974a0776..4510a1e6 100644
+--- a/test/SpecConstants/long-spec-const-composite.ll
++++ b/test/SpecConstants/long-spec-const-composite.ll
+@@ -11,7 +11,7 @@
+ target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
+ target triple = "spir64-unknown-unknown"
+
+-; CHECK-SPIRV: Capability LongConstantCompositeINTEL
++; CHECK-SPIRV: Capability LongCompositesINTEL
+ ; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite"
+ ; CHECK-SPIRV-DAG: Decorate [[First:[0-9]+]] SpecId 0
+ ; CHECK-SPIRV-DAG: Decorate [[Last:[0-9]+]] SpecId 65548
+diff --git a/test/long-constant-array.ll b/test/long-constant-array.ll
+index 03b33771..d0b4c3b3 100644
+--- a/test/long-constant-array.ll
++++ b/test/long-constant-array.ll
+@@ -9,7 +9,7 @@
+ ; TODO: run validator once it supports the extension
+ ; RUNx: spirv-val %t.spv
+
+-; CHECK-SPIRV: Capability LongConstantCompositeINTEL
++; CHECK-SPIRV: Capability LongCompositesINTEL
+ ; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite"
+ ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8
+ ; CHECK-SPIRV: Constant {{[0-9]+}} [[ArrSize:[0-9]+]] 78000
+diff --git a/test/long-type-struct.ll b/test/long-type-struct.ll
+index b9478f0f..a1cdfc6b 100644
+--- a/test/long-type-struct.ll
++++ b/test/long-type-struct.ll
+@@ -10,7 +10,7 @@
+
+ ; RUN: not llvm-spirv %t.bc -o %t.spv 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
+
+-; CHECK-SPIRV: Capability LongConstantCompositeINTEL
++; CHECK-SPIRV: Capability LongCompositesINTEL
+ ; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite"
+ ; CHECK-SPIRV: TypeForwardPointer [[TFwdPtr:[0-9]+]]
+ ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]]
diff --git a/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-16.0.0-ld_library_path.patch b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-16.0.0-ld_library_path.patch
new file mode 100644
index 000000000000..3068cd535005
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-16.0.0-ld_library_path.patch
@@ -0,0 +1,63 @@
+From c2133b18cb48b9bb9c47897b16d64c5f0547cde6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Thu, 4 May 2023 08:44:25 +0200
+Subject: [PATCH] [test] Use LD_LIBRARY_PATH to ensure that a new lib is used
+ (#1989)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add the library `BINARY_DIR` to `LD_LIBRARY_PATH` to ensure that
+the freshly built `libLLVMSPIRVLib.so` is tested. Otherwise, llvm-spirv
+spawned by the test suite may use the previously installed
+`libLLVMSPIRVLib.so`.
+
+I have noticed the problem after rebuilding LLVM with
+`-DLLVM_ENABLE_ASSSERTIONS=ON`. This meant that the previous version
+of `libLLVMSPIRVLib.so` now crashed, effectively causing the test suite
+to fail incorrectly.
+
+Signed-off-by: Michał Górny <mgorny@gentoo.org>
+---
+ test/CMakeLists.txt | 1 +
+ test/lit.cfg.py | 3 ++-
+ test/lit.site.cfg.py.in | 1 +
+ 3 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 235f6d0a0..355baffb8 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -3,6 +3,7 @@ llvm_canonicalize_cmake_booleans(SPIRV_SKIP_DEBUG_INFO_TESTS)
+
+ # required by lit.site.cfg.py.in
+ get_target_property(LLVM_SPIRV_DIR llvm-spirv BINARY_DIR)
++get_target_property(LLVM_SPIRV_LIB_DIR LLVMSPIRVLib BINARY_DIR)
+ set(LLVM_SPIRV_TEST_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+
+ if(SPIRV_TOOLS_FOUND AND NOT SPIRV-Tools-tools_FOUND)
+diff --git a/test/lit.cfg.py b/test/lit.cfg.py
+index 4b66412c3..fd8d3f94c 100644
+--- a/test/lit.cfg.py
++++ b/test/lit.cfg.py
+@@ -76,6 +76,7 @@
+ else:
+ config.substitutions.append(('spirv-val', ':'))
+
++llvm_config.with_system_environment('LD_LIBRARY_PATH')
+ if using_spirv_tools:
+- llvm_config.with_system_environment('LD_LIBRARY_PATH')
+ llvm_config.with_environment('LD_LIBRARY_PATH', config.spirv_tools_lib_dir, append_path=True)
++llvm_config.with_environment('LD_LIBRARY_PATH', config.llvm_spirv_lib_dir, append_path=True)
+diff --git a/test/lit.site.cfg.py.in b/test/lit.site.cfg.py.in
+index a01f2bb34..fdc4f4319 100644
+--- a/test/lit.site.cfg.py.in
++++ b/test/lit.site.cfg.py.in
+@@ -6,6 +6,7 @@ config.llvm_src_root = "@LLVM_SOURCE_DIR@"
+ config.llvm_obj_root = "@LLVM_BINARY_DIR@"
+ config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
+ config.llvm_spirv_dir = "@LLVM_SPIRV_DIR@"
++config.llvm_spirv_lib_dir = "@LLVM_SPIRV_LIB_DIR@"
+ config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
+ config.llvm_shlib_dir = "@SHLIBDIR@"
+ config.llvm_plugin_ext = "@LLVM_PLUGIN_EXT@"
diff --git a/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-16.0.0-llvm-link-llvm-dylib.patch b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-16.0.0-llvm-link-llvm-dylib.patch
new file mode 100644
index 000000000000..5cd90086f1e2
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-16.0.0-llvm-link-llvm-dylib.patch
@@ -0,0 +1,73 @@
+From 98fadafeae0204defedd89f015f7fb88f2888b2f Mon Sep 17 00:00:00 2001
+From: Tulio Magno Quites Machado Filho <tuliom@redhat.com>
+Date: Fri, 17 Mar 2023 14:27:10 -0300
+Subject: [PATCH] Fix standalone builds with LLVM_LINK_LLVM_DYLIB=ON
+
+Move the LLVM components to LINK_COMPONENTS because the DEPENDS list has
+the same semantics as add_dependencies(). In this
+case it doesn't include the LLVM components when calling the linker.
+---
+ lib/SPIRV/CMakeLists.txt | 47 ++++++++++++----------------------------
+ 1 file changed, 14 insertions(+), 33 deletions(-)
+
+diff --git a/lib/SPIRV/CMakeLists.txt b/lib/SPIRV/CMakeLists.txt
+index bbef00528..2810c6b2c 100644
+--- a/lib/SPIRV/CMakeLists.txt
++++ b/lib/SPIRV/CMakeLists.txt
+@@ -38,42 +38,23 @@ set(SRC_LIST
+ libSPIRV/SPIRVType.cpp
+ libSPIRV/SPIRVValue.cpp
+ )
+-if(LLVM_LINK_LLVM_DYLIB)
+- add_llvm_library(LLVMSPIRVLib STATIC DISABLE_LLVM_LINK_LLVM_DYLIB
+- ${SRC_LIST}
+- DEPENDS
+- intrinsics_gen
+- LLVMAnalysis
+- LLVMBitWriter
+- LLVMCodeGen
+- LLVMCore
+- LLVMDemangle
+- LLVMIRReader
+- LLVMLinker
+- LLVMPasses
+- LLVMSupport
+- LLVMTargetParser
+- LLVMTransformUtils
+- )
+-else()
+- add_llvm_library(LLVMSPIRVLib
+- ${SRC_LIST}
+- LINK_COMPONENTS
+- Analysis
+- BitWriter
+- CodeGen
+- Core
+- Demangle
+- IRReader
+- Linker
+- Passes
+- Support
+- TargetParser
+- TransformUtils
++add_llvm_library(LLVMSPIRVLib
++ ${SRC_LIST}
++ LINK_COMPONENTS
++ Analysis
++ BitWriter
++ CodeGen
++ Core
++ Demangle
++ IRReader
++ Linker
++ Passes
++ Support
++ TargetParser
++ TransformUtils
+ DEPENDS
+ intrinsics_gen
+ )
+-endif()
+
+ target_include_directories(LLVMSPIRVLib
+ PRIVATE
diff --git a/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-do-not-rely-on-version-of-compiler-being-VER.0.0-219.patch b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-do-not-rely-on-version-of-compiler-being-VER.0.0-219.patch
new file mode 100644
index 000000000000..e2a575600c44
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-do-not-rely-on-version-of-compiler-being-VER.0.0-219.patch
@@ -0,0 +1,26 @@
+From 587443c9e9094f37ac4e185fb4f889913c6992a9 Mon Sep 17 00:00:00 2001
+From: Dmitry Sidorov <dmitry.sidorov@intel.com>
+Date: Thu, 26 Oct 2023 04:36:07 -0700
+Subject: [PATCH] do not rely on version of compiler being $VER.0.0 (#2194)
+
+Co-authored-by: Stanley Gambarin <stanley.gambarin@intel.com>
+---
+ test/DebugInfo/NonSemantic/DebugFunction.cl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/DebugInfo/NonSemantic/DebugFunction.cl b/test/DebugInfo/NonSemantic/DebugFunction.cl
+index 43294916..f84b303a 100644
+--- a/test/DebugInfo/NonSemantic/DebugFunction.cl
++++ b/test/DebugInfo/NonSemantic/DebugFunction.cl
+@@ -25,7 +25,7 @@ void kernel k() {
+ // CHECK-SPIRV-DAG: String [[foo:[0-9]+]] "foo"
+ // CHECK-SPIRV-DAG: String [[#EmptyStr:]] ""
+ // CHECK-SPIRV-DAG: String [[k:[0-9]+]] "k"
+-// CHECK-SPIRV-DAG: String [[#CV:]] "{{.*}}clang version [[#]].0.0
++// CHECK-SPIRV-DAG: String [[#CV:]] "{{.*}}clang version [[#]].[[#]].[[#]]
+ // CHECK-SPIRV: [[#CU:]] [[#]] DebugCompilationUnit
+ // CHECK-SPIRV: [[#FuncFoo:]] [[#]] DebugFunction [[foo]] {{.*}} [[#CU]]
+ // CHECK-SPIRV: [[#FuncK:]] [[#]] DebugFunction [[k]] {{.*}} [[#CU]]
+--
+2.43.0
+
diff --git a/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch
new file mode 100644
index 000000000000..d7839367a2a1
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch
@@ -0,0 +1,181 @@
+diff --git a/include/LLVMSPIRVExtensions.inc b/include/LLVMSPIRVExtensions.inc
+index eb98c7f..4e2eb0b 100644
+--- a/include/LLVMSPIRVExtensions.inc
++++ b/include/LLVMSPIRVExtensions.inc
+@@ -41,7 +41,7 @@ EXT(SPV_INTEL_variable_length_array)
+ EXT(SPV_INTEL_fp_fast_math_mode)
+ EXT(SPV_INTEL_fpga_cluster_attributes)
+ EXT(SPV_INTEL_loop_fuse)
+-EXT(SPV_INTEL_long_constant_composite)
++EXT(SPV_INTEL_long_composites)
+ EXT(SPV_INTEL_optnone)
+ EXT(SPV_INTEL_fpga_dsp_control)
+ EXT(SPV_INTEL_memory_access_aliasing)
+diff --git a/lib/SPIRV/SPIRVWriter.cpp b/lib/SPIRV/SPIRVWriter.cpp
+index 807aa0c..0946dbe 100644
+--- a/lib/SPIRV/SPIRVWriter.cpp
++++ b/lib/SPIRV/SPIRVWriter.cpp
+@@ -409,11 +409,10 @@ SPIRVType *LLVMToSPIRVBase::transType(Type *T) {
+ const size_t NumElements = ST->getNumElements();
+ size_t SPIRVStructNumElements = NumElements;
+ // In case number of elements is greater than maximum WordCount and
+- // SPV_INTEL_long_constant_composite is not enabled, the error will be
++ // SPV_INTEL_long_composites is not enabled, the error will be
+ // emitted by validate functionality of SPIRVTypeStruct class.
+ if (NumElements > MaxNumElements &&
+- BM->isAllowedToUseExtension(
+- ExtensionID::SPV_INTEL_long_constant_composite)) {
++ BM->isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites)) {
+ SPIRVStructNumElements = MaxNumElements;
+ }
+
+@@ -421,8 +420,7 @@ SPIRVType *LLVMToSPIRVBase::transType(Type *T) {
+ mapType(T, Struct);
+
+ if (NumElements > MaxNumElements &&
+- BM->isAllowedToUseExtension(
+- ExtensionID::SPV_INTEL_long_constant_composite)) {
++ BM->isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites)) {
+ uint64_t NumOfContinuedInstructions = NumElements / MaxNumElements - 1;
+ for (uint64_t J = 0; J < NumOfContinuedInstructions; J++) {
+ auto *Continued = BM->addTypeStructContinuedINTEL(MaxNumElements);
+@@ -1832,8 +1830,7 @@ LLVMToSPIRVBase::transValueWithoutDecoration(Value *V, SPIRVBasicBlock *BB,
+ } else
+ BVarInit = I->second;
+ } else if (Init && !isa<UndefValue>(Init)) {
+- if (!BM->isAllowedToUseExtension(
+- ExtensionID::SPV_INTEL_long_constant_composite)) {
++ if (!BM->isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites)) {
+ if (auto ArrTy = dyn_cast_or_null<ArrayType>(Init->getType())) {
+ // First 3 words of OpConstantComposite encode: 1) word count &
+ // opcode, 2) Result Type and 3) Result Id. Max length of SPIRV
+diff --git a/lib/SPIRV/libSPIRV/SPIRVEntry.h b/lib/SPIRV/libSPIRV/SPIRVEntry.h
+index a3c9441..e188099 100644
+--- a/lib/SPIRV/libSPIRV/SPIRVEntry.h
++++ b/lib/SPIRV/libSPIRV/SPIRVEntry.h
+@@ -908,11 +908,11 @@ public:
+ }
+
+ SPIRVCapVec getRequiredCapability() const override {
+- return getVec(CapabilityLongConstantCompositeINTEL);
++ return getVec(CapabilityLongCompositesINTEL);
+ }
+
+ std::optional<ExtensionID> getRequiredExtension() const override {
+- return ExtensionID::SPV_INTEL_long_constant_composite;
++ return ExtensionID::SPV_INTEL_long_composites;
+ }
+
+ SPIRVWord getNumElements() const { return Elements.size(); }
+diff --git a/lib/SPIRV/libSPIRV/SPIRVModule.cpp b/lib/SPIRV/libSPIRV/SPIRVModule.cpp
+index 5ac7275..d8d06f6 100644
+--- a/lib/SPIRV/libSPIRV/SPIRVModule.cpp
++++ b/lib/SPIRV/libSPIRV/SPIRVModule.cpp
+@@ -1175,10 +1175,10 @@ SPIRVValue *SPIRVModuleImpl::addCompositeConstant(
+ const int NumElements = Elements.size();
+
+ // In case number of elements is greater than maximum WordCount and
+- // SPV_INTEL_long_constant_composite is not enabled, the error will be emitted
++ // SPV_INTEL_long_composites is not enabled, the error will be emitted
+ // by validate functionality of SPIRVCompositeConstant class.
+ if (NumElements <= MaxNumElements ||
+- !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_constant_composite))
++ !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites))
+ return addConstant(new SPIRVConstantComposite(this, Ty, getId(), Elements));
+
+ auto Start = Elements.begin();
+@@ -1213,7 +1213,7 @@ SPIRVValue *SPIRVModuleImpl::addSpecConstantComposite(
+ // SPV_INTEL_long_constant_composite is not enabled, the error will be emitted
+ // by validate functionality of SPIRVSpecConstantComposite class.
+ if (NumElements <= MaxNumElements ||
+- !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_constant_composite))
++ !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites))
+ return addConstant(
+ new SPIRVSpecConstantComposite(this, Ty, getId(), Elements));
+
+diff --git a/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h b/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h
+index d450a43..a2a0ddb 100644
+--- a/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h
++++ b/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h
+@@ -610,7 +610,7 @@ template <> inline void SPIRVMap<Capability, std::string>::init() {
+ add(CapabilityGroupNonUniformRotateKHR, "GroupNonUniformRotateKHR");
+ add(CapabilityAtomicFloat32AddEXT, "AtomicFloat32AddEXT");
+ add(CapabilityAtomicFloat64AddEXT, "AtomicFloat64AddEXT");
+- add(CapabilityLongConstantCompositeINTEL, "LongConstantCompositeINTEL");
++ add(CapabilityLongCompositesINTEL, "LongCompositesINTEL");
+ add(CapabilityOptNoneINTEL, "OptNoneINTEL");
+ add(CapabilityAtomicFloat16AddEXT, "AtomicFloat16AddEXT");
+ add(CapabilityDebugInfoModuleINTEL, "DebugInfoModuleINTEL");
+diff --git a/test/SpecConstants/long-spec-const-composite.ll b/test/SpecConstants/long-spec-const-composite.ll
+index a45c895..e943296 100644
+--- a/test/SpecConstants/long-spec-const-composite.ll
++++ b/test/SpecConstants/long-spec-const-composite.ll
+@@ -1,5 +1,5 @@
+ ; RUN: llvm-as %s -o %t.bc
+-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite %t.bc -o %t.spv
++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites %t.bc -o %t.spv
+ ; RUN: llvm-spirv %t.spv --to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV
+ ; RUN: llvm-spirv -r -emit-opaque-pointers %t.spv -o %t.rev.bc
+ ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
+@@ -11,8 +11,8 @@
+ target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
+ target triple = "spir64-unknown-unknown"
+
+-; CHECK-SPIRV: Capability LongConstantCompositeINTEL
+-; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite"
++; CHECK-SPIRV: Capability LongCompositesINTEL
++; CHECK-SPIRV: Extension "SPV_INTEL_long_composites"
+ ; CHECK-SPIRV-DAG: Decorate [[First:[0-9]+]] SpecId 0
+ ; CHECK-SPIRV-DAG: Decorate [[Last:[0-9]+]] SpecId 65548
+ ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8
+diff --git a/test/long-constant-array.ll b/test/long-constant-array.ll
+index 415a723..cfef59d 100644
+--- a/test/long-constant-array.ll
++++ b/test/long-constant-array.ll
+@@ -1,16 +1,16 @@
+ ; RUN: llvm-as %s -o %t.bc
+ ; RUN: not llvm-spirv %t.bc -o %t.spv 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
+
+-; Check that everything is fine if SPV_INTEL_long_constant_composite is enabled
+-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite %t.bc -o %t.spv
++; Check that everything is fine if SPV_INTEL_long_composites is enabled
++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites %t.bc -o %t.spv
+ ; RUN: llvm-spirv %t.spv --to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV
+ ; RUN: llvm-spirv -r -emit-opaque-pointers %t.spv -o %t.rev.bc
+ ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
+ ; TODO: run validator once it supports the extension
+ ; RUNx: spirv-val %t.spv
+
+-; CHECK-SPIRV: Capability LongConstantCompositeINTEL
+-; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite"
++; CHECK-SPIRV: Capability LongCompositesINTEL
++; CHECK-SPIRV: Extension "SPV_INTEL_long_composites"
+ ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8
+ ; CHECK-SPIRV: Constant {{[0-9]+}} [[ArrSize:[0-9]+]] 78000
+ ; CHECK-SPIRV: TypeArray [[TArr:[0-9]+]] [[TInt]] [[ArrSize]]
+diff --git a/test/long-type-struct.ll b/test/long-type-struct.ll
+index 9b83f62..de6352a 100644
+--- a/test/long-type-struct.ll
++++ b/test/long-type-struct.ll
+@@ -1,8 +1,8 @@
+ ; RUN: llvm-as %s -o %t.bc
+-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite %t.bc -o %t.spv
++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites %t.bc -o %t.spv
+ ; RUN: llvm-spirv %t.spv --to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV
+ ; RUN: llvm-spirv -r -emit-opaque-pointers %t.spv -o %t.rev.bc
+-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite -spirv-text %t.rev.bc -o %t2.spt
++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites -spirv-text %t.rev.bc -o %t2.spt
+ ; RUN: FileCheck --input-file=%t2.spt %s --check-prefix=CHECK-SPIRV
+ ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
+ ; TODO: run validator once it supports the extension
+@@ -10,8 +10,8 @@
+
+ ; RUN: not llvm-spirv %t.bc -o %t.spv 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
+
+-; CHECK-SPIRV: Capability LongConstantCompositeINTEL
+-; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite"
++; CHECK-SPIRV: Capability LongCompositesINTEL
++; CHECK-SPIRV: Extension "SPV_INTEL_long_composites"
+ ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8
+ ; CHECK-SPIRV: TypePointer [[TIntPtr:[0-9]+]] 8 [[TInt]]
+ ; CHECK-SPIRV: TypeArray [[TArr:[0-9]+]]
diff --git a/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-8.0.0.1-no_pkgconfig_files.patch b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-8.0.0.1-no_pkgconfig_files.patch
deleted file mode 100644
index 66e81dc3b20d..000000000000
--- a/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-8.0.0.1-no_pkgconfig_files.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Do not install pkgconfig data files, pkg-config does not presently look at
-/usr/lib/llvm/.../pkgconfig and putting them in /usr/lib*/pkgconfig would
-cause collisions between slots.
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -66,11 +66,3 @@
- DESTINATION
- ${CMAKE_INSTALL_PREFIX}/include/LLVMSPIRVLib
- )
--
--configure_file(LLVMSPIRVLib.pc.in ${CMAKE_BINARY_DIR}/LLVMSPIRVLib.pc @ONLY)
--install(
-- FILES
-- ${CMAKE_BINARY_DIR}/LLVMSPIRVLib.pc
-- DESTINATION
-- ${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}/pkgconfig
--)
diff --git a/dev-util/spirv-llvm-translator/metadata.xml b/dev-util/spirv-llvm-translator/metadata.xml
index f5e348c67b5f..73175b2ae00b 100644
--- a/dev-util/spirv-llvm-translator/metadata.xml
+++ b/dev-util/spirv-llvm-translator/metadata.xml
@@ -1,17 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>marecki@gentoo.org</email>
- <name>Marek Szuba</name>
+ <email>conikost@gentoo.org</email>
+ <name>Conrad Kostecki</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>x11@gentoo.org</email>
+ <name>X11</name>
</maintainer>
- <use>
- <flag name="tools">
- Install the command-line translator llvm-spirv
- </flag>
- </use>
<upstream>
<remote-id type="github">KhronosGroup/SPIRV-LLVM-Translator</remote-id>
</upstream>
</pkgmetadata>
-
diff --git a/dev-util/spirv-llvm-translator/spirv-llvm-translator-10.0.0.ebuild b/dev-util/spirv-llvm-translator/spirv-llvm-translator-10.0.0.ebuild
deleted file mode 100644
index 787306f0e0b5..000000000000
--- a/dev-util/spirv-llvm-translator/spirv-llvm-translator-10.0.0.ebuild
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CMAKE_ECLASS=cmake
-
-inherit cmake-multilib flag-o-matic llvm
-
-MY_PN="SPIRV-LLVM-Translator"
-MY_P="${MY_PN}-${PV}"
-
-DESCRIPTION="Bi-directional translator between SPIR-V and LLVM IR"
-HOMEPAGE="https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
-SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="UoI-NCSA"
-SLOT="10"
-KEYWORDS="~amd64"
-IUSE="test tools"
-
-RESTRICT="!test? ( test )"
-
-S="${WORKDIR}/${MY_P}"
-
-COMMON="sys-devel/clang:10=[${MULTILIB_USEDEP}]"
-DEPEND="${COMMON}"
-RDEPEND="${COMMON}"
-BDEPEND="test? ( dev-python/lit )"
-
-REQUIRED_USE="test? ( tools )"
-
-LLVM_MAX_SLOT=10
-
-PATCHES=(
- "${FILESDIR}"/${PN}-8.0.0.1-no_pkgconfig_files.patch
-)
-
-src_prepare() {
- append-flags -fPIC
- cmake_src_prepare
-}
-
-multilib_src_configure() {
- local mycmakeargs=(
- -DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix ${LLVM_MAX_SLOT})"
- -DLLVM_BUILD_TOOLS=$(usex tools "ON" "OFF")
- $(usex test "-DLLVM_INCLUDE_TESTS=ON" "")
- )
- cmake_src_configure
-}
-
-multilib_src_test() {
- # Some tests fail on amd64 when ABI==x86
- if multilib_is_native_abi; then
- lit "${BUILD_DIR}/test" || die "Error running tests for ABI ${ABI}"
- fi
-}
diff --git a/dev-util/spirv-llvm-translator/spirv-llvm-translator-15.0.0-r1.ebuild b/dev-util/spirv-llvm-translator/spirv-llvm-translator-15.0.0-r1.ebuild
new file mode 100644
index 000000000000..29e6a6ab500f
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/spirv-llvm-translator-15.0.0-r1.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_MAX_SLOT="15"
+MY_PN="SPIRV-LLVM-Translator"
+MY_P="${MY_PN}-${PV}"
+
+inherit cmake flag-o-matic llvm
+
+DESCRIPTION="Bi-directional translator between SPIR-V and LLVM IR"
+HOMEPAGE="https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
+SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="UoI-NCSA"
+SLOT="$(ver_cut 1)"
+KEYWORDS="amd64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-util/spirv-tools
+ sys-devel/llvm:${SLOT}=
+"
+DEPEND="${RDEPEND}
+ dev-util/spirv-headers
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-python/lit
+ sys-devel/clang:${SLOT}
+ )
+"
+
+PATCHES=( "${FILESDIR}"/${PN}-15.0.0-intel-capability.patch )
+
+src_prepare() {
+ append-flags -fPIC
+ cmake_src_prepare
+
+ # https://github.com/KhronosGroup/SPIRV-LLVM-Translator/pull/2555
+ sed -i -e 's/%triple/x86_64-unknown-linux-gnu/' test/DebugInfo/X86/*.ll || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCCACHE_ALLOWED="OFF"
+ -DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix ${LLVM_MAX_SLOT})"
+ -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${ESYSROOT}/usr/include/spirv"
+ -DLLVM_SPIRV_INCLUDE_TESTS=$(usex test "ON" "OFF")
+ -Wno-dev
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ lit "${BUILD_DIR}/test" || die
+}
diff --git a/dev-util/spirv-llvm-translator/spirv-llvm-translator-16.0.0-r1.ebuild b/dev-util/spirv-llvm-translator/spirv-llvm-translator-16.0.0-r1.ebuild
new file mode 100644
index 000000000000..fb3e58b930a6
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/spirv-llvm-translator-16.0.0-r1.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_MAX_SLOT="16"
+MY_PN="SPIRV-LLVM-Translator"
+MY_P="${MY_PN}-${PV}"
+
+inherit cmake flag-o-matic llvm multiprocessing
+
+DESCRIPTION="Bi-directional translator between SPIR-V and LLVM IR"
+HOMEPAGE="https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
+SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="UoI-NCSA"
+SLOT="$(ver_cut 1)"
+KEYWORDS="amd64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-util/spirv-tools
+ sys-devel/llvm:${SLOT}=
+"
+DEPEND="${RDEPEND}
+ dev-util/spirv-headers
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-python/lit
+ sys-devel/clang:${SLOT}
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-17.0.0-intel-capability.patch"
+ "${FILESDIR}/${PN}-16.0.0-llvm-link-llvm-dylib.patch"
+ "${FILESDIR}/${PN}-16.0.0-ld_library_path.patch"
+)
+
+src_prepare() {
+ append-flags -fPIC
+ cmake_src_prepare
+
+ # https://github.com/KhronosGroup/SPIRV-LLVM-Translator/pull/2555
+ sed -i -e 's/%triple/x86_64-unknown-linux-gnu/' test/DebugInfo/X86/*.ll || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCCACHE_ALLOWED="OFF"
+ -DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix ${LLVM_MAX_SLOT})"
+ -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${ESYSROOT}/usr/include/spirv"
+ -DLLVM_SPIRV_INCLUDE_TESTS=$(usex test "ON" "OFF")
+ -Wno-dev
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ lit -vv "-j${LIT_JOBS:-$(makeopts_jobs)}" "${BUILD_DIR}/test" || die
+}
diff --git a/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0-r2.ebuild b/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0-r2.ebuild
new file mode 100644
index 000000000000..844d7cf8bac3
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0-r2.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_MAX_SLOT="17"
+MY_PN="SPIRV-LLVM-Translator"
+MY_P="${MY_PN}-${PV}"
+
+inherit cmake flag-o-matic llvm multiprocessing
+
+DESCRIPTION="Bi-directional translator between SPIR-V and LLVM IR"
+HOMEPAGE="https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
+SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="UoI-NCSA"
+SLOT="$(ver_cut 1)"
+KEYWORDS="amd64 arm64 ~riscv x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-util/spirv-tools
+ sys-devel/llvm:${SLOT}=
+"
+DEPEND="${RDEPEND}
+ >=dev-util/spirv-headers-1.3.275
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-python/lit
+ sys-devel/clang:${SLOT}
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-intel-capability.patch
+ "${FILESDIR}"/${P}-do-not-rely-on-version-of-compiler-being-VER.0.0-219.patch
+)
+
+src_prepare() {
+ append-flags -fPIC
+ cmake_src_prepare
+
+ # https://github.com/KhronosGroup/SPIRV-LLVM-Translator/pull/2555
+ sed -i -e 's/%triple/x86_64-unknown-linux-gnu/' test/DebugInfo/X86/*.ll || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCCACHE_ALLOWED="OFF"
+ -DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix ${LLVM_MAX_SLOT})"
+ -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${ESYSROOT}/usr/include/spirv"
+ -DLLVM_SPIRV_INCLUDE_TESTS=$(usex test "ON" "OFF")
+ -Wno-dev
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ lit -vv "-j${LIT_JOBS:-$(makeopts_jobs)}" "${BUILD_DIR}/test" || die
+}
diff --git a/dev-util/spirv-llvm-translator/spirv-llvm-translator-18.1.0.ebuild b/dev-util/spirv-llvm-translator/spirv-llvm-translator-18.1.0.ebuild
new file mode 100644
index 000000000000..63f846f23177
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/spirv-llvm-translator-18.1.0.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_MAX_SLOT="18"
+MY_PN="SPIRV-LLVM-Translator"
+MY_P="${MY_PN}-${PV}"
+
+inherit cmake flag-o-matic llvm multiprocessing
+
+DESCRIPTION="Bi-directional translator between SPIR-V and LLVM IR"
+HOMEPAGE="https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
+SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="UoI-NCSA"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-util/spirv-tools
+ sys-devel/llvm:${SLOT}=
+"
+DEPEND="${RDEPEND}
+ >=dev-util/spirv-headers-1.3.280
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-python/lit
+ sys-devel/clang:${SLOT}
+ )
+"
+
+PATCHES=(
+)
+
+src_prepare() {
+ append-flags -fPIC
+ cmake_src_prepare
+
+ # https://github.com/KhronosGroup/SPIRV-LLVM-Translator/pull/2555
+ sed -i -e 's/%triple/x86_64-unknown-linux-gnu/' test/DebugInfo/X86/*.ll || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCCACHE_ALLOWED="OFF"
+ -DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix ${LLVM_MAX_SLOT})"
+ -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${ESYSROOT}/usr/include/spirv"
+ -DLLVM_SPIRV_INCLUDE_TESTS=$(usex test "ON" "OFF")
+ -Wno-dev
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ lit -vv "-j${LIT_JOBS:-$(makeopts_jobs)}" "${BUILD_DIR}/test" || die
+}
diff --git a/dev-util/spirv-llvm-translator/spirv-llvm-translator-18.1.1.ebuild b/dev-util/spirv-llvm-translator/spirv-llvm-translator-18.1.1.ebuild
new file mode 100644
index 000000000000..63f846f23177
--- /dev/null
+++ b/dev-util/spirv-llvm-translator/spirv-llvm-translator-18.1.1.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_MAX_SLOT="18"
+MY_PN="SPIRV-LLVM-Translator"
+MY_P="${MY_PN}-${PV}"
+
+inherit cmake flag-o-matic llvm multiprocessing
+
+DESCRIPTION="Bi-directional translator between SPIR-V and LLVM IR"
+HOMEPAGE="https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
+SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="UoI-NCSA"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-util/spirv-tools
+ sys-devel/llvm:${SLOT}=
+"
+DEPEND="${RDEPEND}
+ >=dev-util/spirv-headers-1.3.280
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-python/lit
+ sys-devel/clang:${SLOT}
+ )
+"
+
+PATCHES=(
+)
+
+src_prepare() {
+ append-flags -fPIC
+ cmake_src_prepare
+
+ # https://github.com/KhronosGroup/SPIRV-LLVM-Translator/pull/2555
+ sed -i -e 's/%triple/x86_64-unknown-linux-gnu/' test/DebugInfo/X86/*.ll || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCCACHE_ALLOWED="OFF"
+ -DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix ${LLVM_MAX_SLOT})"
+ -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${ESYSROOT}/usr/include/spirv"
+ -DLLVM_SPIRV_INCLUDE_TESTS=$(usex test "ON" "OFF")
+ -Wno-dev
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ lit -vv "-j${LIT_JOBS:-$(makeopts_jobs)}" "${BUILD_DIR}/test" || die
+}
diff --git a/dev-util/spirv-llvm-translator/spirv-llvm-translator-9.0.1.1.ebuild b/dev-util/spirv-llvm-translator/spirv-llvm-translator-9.0.1.1.ebuild
deleted file mode 100644
index 4feef376c920..000000000000
--- a/dev-util/spirv-llvm-translator/spirv-llvm-translator-9.0.1.1.ebuild
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CMAKE_ECLASS=cmake
-inherit cmake-multilib flag-o-matic llvm
-
-MY_PN="SPIRV-LLVM-Translator"
-MY_PV="$(ver_rs 3 -)"
-MY_P="${MY_PN}-${MY_PV}"
-
-DESCRIPTION="Bi-directional translator between SPIR-V and LLVM IR"
-HOMEPAGE="https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
-SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="UoI-NCSA"
-SLOT="9"
-KEYWORDS="~amd64"
-IUSE="test tools"
-
-RESTRICT="!test? ( test )"
-
-S="${WORKDIR}/${MY_P}"
-
-COMMON="sys-devel/clang:9=[${MULTILIB_USEDEP}]"
-DEPEND="${COMMON}"
-RDEPEND="${COMMON}"
-BDEPEND="test? ( dev-python/lit )"
-
-REQUIRED_USE="test? ( tools )"
-
-LLVM_MAX_SLOT=9
-
-PATCHES=(
- "${FILESDIR}"/${PN}-8.0.0.1-no_pkgconfig_files.patch
-)
-
-src_prepare() {
- append-flags -fPIC
- cmake_src_prepare
-}
-
-multilib_src_configure() {
- local mycmakeargs=(
- -DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix ${LLVM_MAX_SLOT})"
- -DLLVM_BUILD_TOOLS=$(usex tools "ON" "OFF")
- $(usex test "-DLLVM_INCLUDE_TESTS=ON" "")
- )
- cmake_src_configure
-}
-
-multilib_src_test() {
- # Some tests fail on amd64 when ABI==x86
- if multilib_is_native_abi; then
- lit "${BUILD_DIR}/test" || die "Error running tests for ABI ${ABI}"
- fi
-}