From 76b2c3127a4d0a172ed9950cfb762049c2b43449 Mon Sep 17 00:00:00 2001 From: Steven Perron Date: Tue, 24 Jun 2025 11:41:12 -0400 Subject: [PATCH 1/2] [SPIRV] Add option to add all KHR extensions In DXC, there is an option to enable all KHR extension. I would like to extend the existing `-spirv-ext` backend commandline option to have the same capability. It is like the special case for `all` execept it only adds the `SPV_KHR_*` extensions. Part of https://github.com/llvm/llvm-project/issues/137650. --- llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp | 7 +++++++ .../SPIRV/extensions/enable-all-extensions-but-one.ll | 1 + 2 files changed, 8 insertions(+) diff --git a/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp b/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp index fbaca4e0e4d81..365e586ba6018 100644 --- a/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp @@ -119,6 +119,13 @@ bool SPIRVExtensionsParser::parse(cl::Option &O, StringRef ArgName, continue; } + if (Token == "KHR") { + for (const auto &[ExtensionName, ExtensionEnum] : SPIRVExtensionMap) + if (StringRef(ExtensionName).starts_with("SPV_KHR_")) + EnabledExtensions.insert(ExtensionEnum); + continue; + } + if (Token.empty() || (!Token.starts_with("+") && !Token.starts_with("-"))) return O.error("Invalid extension list format: " + Token.str()); diff --git a/llvm/test/CodeGen/SPIRV/extensions/enable-all-extensions-but-one.ll b/llvm/test/CodeGen/SPIRV/extensions/enable-all-extensions-but-one.ll index 02d21a1abafa5..7b7bdb193a468 100644 --- a/llvm/test/CodeGen/SPIRV/extensions/enable-all-extensions-but-one.ll +++ b/llvm/test/CodeGen/SPIRV/extensions/enable-all-extensions-but-one.ll @@ -1,4 +1,5 @@ ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=all,-SPV_INTEL_arbitrary_precision_integers %s -o - | FileCheck %s +; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=KHR %s -o - | FileCheck %s define i6 @foo() { %call = tail call i32 @llvm.bitreverse.i32(i32 42) From 937fe9683d14047b5f6b8552bdf08f9a3609c532 Mon Sep 17 00:00:00 2001 From: Steven Perron Date: Wed, 2 Jul 2025 11:10:09 -0400 Subject: [PATCH 2/2] Allow lower case spelling. --- llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp | 2 +- .../CodeGen/SPIRV/extensions/enable-all-extensions-but-one.ll | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp b/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp index 365e586ba6018..6b97684c09b39 100644 --- a/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp @@ -119,7 +119,7 @@ bool SPIRVExtensionsParser::parse(cl::Option &O, StringRef ArgName, continue; } - if (Token == "KHR") { + if (Token.size() == 3 && Token.upper() == "KHR") { for (const auto &[ExtensionName, ExtensionEnum] : SPIRVExtensionMap) if (StringRef(ExtensionName).starts_with("SPV_KHR_")) EnabledExtensions.insert(ExtensionEnum); diff --git a/llvm/test/CodeGen/SPIRV/extensions/enable-all-extensions-but-one.ll b/llvm/test/CodeGen/SPIRV/extensions/enable-all-extensions-but-one.ll index 7b7bdb193a468..4db0ba33d52c9 100644 --- a/llvm/test/CodeGen/SPIRV/extensions/enable-all-extensions-but-one.ll +++ b/llvm/test/CodeGen/SPIRV/extensions/enable-all-extensions-but-one.ll @@ -1,5 +1,6 @@ ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=all,-SPV_INTEL_arbitrary_precision_integers %s -o - | FileCheck %s ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=KHR %s -o - | FileCheck %s +; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=khr %s -o - | FileCheck %s define i6 @foo() { %call = tail call i32 @llvm.bitreverse.i32(i32 42)