[llvm] [SPIR-V] Diagnose integer dot builtins without SPV_KHR_integer_dot_product (PR #218599)
Arseniy Obolenskiy via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 25 00:17:00 PDT 2026
https://github.com/aobolensk updated https://github.com/llvm/llvm-project/pull/218599
>From 8a1d9cd3a0de0c578b2c2a490d88caa6bb2e6137 Mon Sep 17 00:00:00 2001
From: Arseniy Obolenskiy <arseniy.obolenskiy at amd.com>
Date: Tue, 25 Aug 2026 08:50:11 +0200
Subject: [PATCH] [SPIR-V] Diagnose integer dot builtins without
SPV_KHR_integer_dot_product
---
llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp | 10 +++++++---
.../SPV_KHR_integer_dot_product_OCLtoSPIRV_int.ll | 3 +++
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp b/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
index 01bf7d0926b15..0978a6c6e5c95 100644
--- a/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
@@ -1928,9 +1928,13 @@ static bool generateDotOrFMulInst(StringRef DemangledCall,
const auto *ST =
static_cast<const SPIRVSubtarget *>(&MIRBuilder.getMF().getSubtarget());
- if (GR->isScalarOrVectorOfType(Call->ReturnRegister, SPIRV::OpTypeInt) &&
- (ST->canUseExtension(SPIRV::Extension::SPV_KHR_integer_dot_product) ||
- ST->isAtLeastSPIRVVer(VersionTuple(1, 6)))) {
+ if (GR->isScalarOrVectorOfType(Call->ReturnRegister, SPIRV::OpTypeInt)) {
+ if (!ST->canUseExtension(SPIRV::Extension::SPV_KHR_integer_dot_product) &&
+ !ST->isAtLeastSPIRVVer(VersionTuple(1, 6)))
+ report_fatal_error(Twine(Call->Builtin->name()) +
+ ": the builtin requires the following SPIR-V "
+ "extension: SPV_KHR_integer_dot_product",
+ false);
const SPIRV::DemangledBuiltin *Builtin = Call->Builtin;
const SPIRV::IntegerDotProductBuiltin *IntDot =
SPIRV::lookupIntegerDotProductBuiltin(Builtin->name());
diff --git a/llvm/test/CodeGen/SPIRV/extensions/SPV_KHR_integer_dot_product/SPV_KHR_integer_dot_product_OCLtoSPIRV_int.ll b/llvm/test/CodeGen/SPIRV/extensions/SPV_KHR_integer_dot_product/SPV_KHR_integer_dot_product_OCLtoSPIRV_int.ll
index 52ddc39265442..a387d57494017 100644
--- a/llvm/test/CodeGen/SPIRV/extensions/SPV_KHR_integer_dot_product/SPV_KHR_integer_dot_product_OCLtoSPIRV_int.ll
+++ b/llvm/test/CodeGen/SPIRV/extensions/SPV_KHR_integer_dot_product/SPV_KHR_integer_dot_product_OCLtoSPIRV_int.ll
@@ -2,6 +2,9 @@
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32v1.6-unknown-unknown %s -o - -filetype=obj | spirv-val %}
; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_KHR_integer_dot_product %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-EXT
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_KHR_integer_dot_product %s -o - -filetype=obj | spirv-val %}
+; RUN: not llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
+
+; CHECK-ERROR: LLVM ERROR: {{.*}}: the builtin requires the following SPIR-V extension: SPV_KHR_integer_dot_product
; CHECK: Capability DotProduct
; CHECK: Capability DotProductInput4x8BitPacked
More information about the llvm-commits
mailing list