Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package spirv-llvm-translator for
openSUSE:Factory checked in at 2025-04-08 17:50:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/spirv-llvm-translator (Old)
and /work/SRC/openSUSE:Factory/.spirv-llvm-translator.new.1907 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spirv-llvm-translator"
Tue Apr 8 17:50:01 2025 rev:19 rq:1267345 version:20.1.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/spirv-llvm-translator/spirv-llvm-translator.changes
2025-03-31 11:38:36.084775491 +0200
+++
/work/SRC/openSUSE:Factory/.spirv-llvm-translator.new.1907/spirv-llvm-translator.changes
2025-04-08 17:50:24.648432653 +0200
@@ -1,0 +2,9 @@
+Sat Apr 5 13:56:55 UTC 2025 - Aaron Puchert <[email protected]>
+
+- Update to version 20.1.1.
+ * Emit select for out-of-range builtin var indices.
+ * Allow UniformDecoration capability for Uniform (SPIR-V 1.6).
+ * Fix OpTypeBufferSurfaceINTEL translation for opaque pointers.
+ * Deprecate SPV_INTEL_token_type.
+
+-------------------------------------------------------------------
Old:
----
SPIRV-LLVM-Translator-20.1.0.tar.gz
New:
----
SPIRV-LLVM-Translator-20.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ spirv-llvm-translator.spec ++++++
--- /var/tmp/diff_new_pack.OeMonQ/_old 2025-04-08 17:50:25.076450593 +0200
+++ /var/tmp/diff_new_pack.OeMonQ/_new 2025-04-08 17:50:25.080450760 +0200
@@ -23,7 +23,7 @@
%define sover 20
Name: spirv-llvm-translator
-Version: 20.1.0
+Version: 20.1.1
Release: 0
Summary: LLVM/SPIR-V Bi-Directional Translator library
License: BSD-3-Clause
++++++ SPIRV-LLVM-Translator-20.1.0.tar.gz ->
SPIRV-LLVM-Translator-20.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/SPIRVReader.cpp
new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/SPIRVReader.cpp
--- old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/SPIRVReader.cpp 2025-02-13
17:47:15.000000000 +0100
+++ new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/SPIRVReader.cpp 2025-03-25
15:46:09.000000000 +0100
@@ -469,15 +469,20 @@
}
case OpTypeBufferSurfaceINTEL: {
auto *PST = static_cast<SPIRVTypeBufferSurfaceINTEL *>(T);
- Type *StructTy = getOrCreateOpaqueStructType(M, transVCTypeName(PST));
- Type *PointerTy;
- if (UseTPT)
- PointerTy = TypedPointerType::get(StructTy, SPIRAS_Global);
- else
- PointerTy = PointerType::get(StructTy, SPIRAS_Global);
- return mapType(T, PointerTy);
+ Type *Ty = nullptr;
+ if (UseTPT) {
+ Type *StructTy = getOrCreateOpaqueStructType(M, transVCTypeName(PST));
+ Ty = TypedPointerType::get(StructTy, SPIRAS_Global);
+ } else {
+ std::vector<unsigned> Params;
+ if (PST->hasAccessQualifier()) {
+ unsigned Access = static_cast<unsigned>(PST->getAccessQualifier());
+ Params.push_back(Access);
+ }
+ Ty = TargetExtType::get(*Context, "spirv.BufferSurfaceINTEL", {},
Params);
+ }
+ return mapType(T, Ty);
}
-
case internal::OpTypeJointMatrixINTEL: {
auto *MT = static_cast<SPIRVTypeJointMatrixINTEL *>(T);
auto R = static_cast<SPIRVConstant *>(MT->getRows())->getZExtIntValue();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/SPIRVUtil.cpp
new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/SPIRVUtil.cpp
--- old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/SPIRVUtil.cpp 2025-02-13
17:47:15.000000000 +0100
+++ new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/SPIRVUtil.cpp 2025-03-25
15:46:09.000000000 +0100
@@ -606,6 +606,21 @@
} // namespace SPIRV
+namespace {
+
+// Return the value for when the dimension index of a builtin is out of range.
+uint64_t getBuiltinOutOfRangeValue(StringRef VarName) {
+ assert(VarName.starts_with("__spirv_BuiltIn"));
+ return StringSwitch<uint64_t>(VarName)
+ .EndsWith("GlobalSize", 1)
+ .EndsWith("NumWorkgroups", 1)
+ .EndsWith("WorkgroupSize", 1)
+ .EndsWith("EnqueuedWorkgroupSize", 1)
+ .Default(0);
+}
+
+} // anonymous namespace
+
// The demangler node hierarchy doesn't use LLVM's RTTI helper functions (as it
// also needs to live in libcxxabi). By specializing this implementation here,
// we can add support for these functions.
@@ -2182,16 +2197,27 @@
for (auto *U : F.users()) {
auto *CI = dyn_cast<CallInst>(U);
assert(CI && "invalid instruction");
- const DebugLoc &DLoc = CI->getDebugLoc();
- Instruction *NewValue = new LoadInst(GVType, BV, "", CI->getIterator());
- if (DLoc)
- NewValue->setDebugLoc(DLoc);
+ IRBuilder<> Builder(CI);
+ Value *NewValue = Builder.CreateLoad(GVType, BV);
LLVM_DEBUG(dbgs() << "Transform: " << *CI << " => " << *NewValue <<
'\n');
if (IsVec) {
- NewValue = ExtractElementInst::Create(NewValue, CI->getArgOperand(0),
- "", CI->getIterator());
- if (DLoc)
- NewValue->setDebugLoc(DLoc);
+ auto *GVVecTy = cast<FixedVectorType>(GVType);
+ ConstantInt *Bound = Builder.getInt32(GVVecTy->getNumElements());
+ // Create a select on the index first, to avoid undefined behaviour
+ // due to exceeding the vector size by the extractelement.
+ Value *IndexCmp = Builder.CreateICmpULT(CI->getArgOperand(0), Bound);
+ Constant *ZeroIndex =
+ ConstantInt::get(CI->getArgOperand(0)->getType(), 0);
+ Value *ExtractIndex =
+ Builder.CreateSelect(IndexCmp, CI->getArgOperand(0), ZeroIndex);
+
+ // Extract from builtin variable.
+ NewValue = Builder.CreateExtractElement(NewValue, ExtractIndex);
+
+ // Clamp to out-of-range value.
+ Constant *OutOfRangeVal = ConstantInt::get(
+ F.getReturnType(), getBuiltinOutOfRangeValue(BuiltinVarName));
+ NewValue = Builder.CreateSelect(IndexCmp, NewValue, OutOfRangeVal);
LLVM_DEBUG(dbgs() << *NewValue << '\n');
}
NewValue->takeName(CI);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/SPIRVWriter.cpp
new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/SPIRVWriter.cpp
--- old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/SPIRVWriter.cpp 2025-02-13
17:47:15.000000000 +0100
+++ new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/SPIRVWriter.cpp 2025-03-25
15:46:09.000000000 +0100
@@ -400,16 +400,6 @@
if (T->isFloatingPointTy())
return mapType(T, BM->addFloatType(T->getPrimitiveSizeInBits()));
- if (T->isTokenTy()) {
- BM->getErrorLog().checkError(
- BM->isAllowedToUseExtension(ExtensionID::SPV_INTEL_token_type),
- SPIRVEC_RequiresExtension,
- "SPV_INTEL_token_type\n"
- "NOTE: LLVM module contains token type, which doesn't have analogs in "
- "SPIR-V without extensions");
- return mapType(T, BM->addTokenTypeINTEL());
- }
-
// A pointer to image or pipe type in LLVM is translated to a SPIRV
// (non-pointer) image or pipe type.
if (T->isPointerTy()) {
@@ -620,6 +610,14 @@
}
}
+ if (T->isTokenTy()) {
+ BM->getErrorLog().checkError(
+ false, SPIRVEC_InvalidModule,
+ "LLVM module contains token type, which doesn't have a counterpart in "
+ "SPIR-V");
+ return nullptr;
+ }
+
llvm_unreachable("Not implemented!");
return 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/libSPIRV/SPIRVDecorate.h
new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/libSPIRV/SPIRVDecorate.h
--- old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/libSPIRV/SPIRVDecorate.h
2025-02-13 17:47:15.000000000 +0100
+++ new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/libSPIRV/SPIRVDecorate.h
2025-03-25 15:46:09.000000000 +0100
@@ -83,6 +83,10 @@
BuiltIn BI = static_cast<BuiltIn>(Literals.back());
return getCapability(BI);
}
+ case DecorationUniform:
+ if (Module->isAllowedToUseVersion(VersionNumber::SPIRV_1_6))
+ return getVec(CapabilityUniformDecoration);
+ return getVec(CapabilityShader);
default:
return getCapability(Dec);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/libSPIRV/SPIRVEnum.h
new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/libSPIRV/SPIRVEnum.h
--- old/SPIRV-LLVM-Translator-20.1.0/lib/SPIRV/libSPIRV/SPIRVEnum.h
2025-02-13 17:47:15.000000000 +0100
+++ new/SPIRV-LLVM-Translator-20.1.1/lib/SPIRV/libSPIRV/SPIRVEnum.h
2025-03-25 15:46:09.000000000 +0100
@@ -396,7 +396,6 @@
ADD_VEC_INIT(DecorationSample, {CapabilitySampleRateShading});
ADD_VEC_INIT(DecorationInvariant, {CapabilityShader});
ADD_VEC_INIT(DecorationConstant, {CapabilityKernel});
- ADD_VEC_INIT(DecorationUniform, {CapabilityShader});
ADD_VEC_INIT(DecorationSaturatedConversion, {CapabilityKernel});
ADD_VEC_INIT(DecorationStream, {CapabilityGeometryStreams});
ADD_VEC_INIT(DecorationLocation, {CapabilityShader});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/test/DebugInfo/builtin-get-global-id.ll
new/SPIRV-LLVM-Translator-20.1.1/test/DebugInfo/builtin-get-global-id.ll
--- old/SPIRV-LLVM-Translator-20.1.0/test/DebugInfo/builtin-get-global-id.ll
2025-02-13 17:47:15.000000000 +0100
+++ new/SPIRV-LLVM-Translator-20.1.1/test/DebugInfo/builtin-get-global-id.ll
2025-03-25 15:46:09.000000000 +0100
@@ -33,7 +33,8 @@
; CHECK-NEXT: [[I3:%[0-9]]] = insertelement <3 x i64> [[I1]], i64 [[I2]], i32
1, !dbg [[DBG]]
; CHECK-NEXT: [[I4:%[0-9]]] = call spir_func i64 @_Z13get_global_idj(i32 2)
#1, !dbg [[DBG]]
; CHECK-NEXT: [[I5:%[0-9]]] = insertelement <3 x i64> [[I3]], i64 [[I4]], i32
2, !dbg [[DBG]]
-; CHECK-NEXT: %call = extractelement <3 x i64> [[I5]], i32 0, !dbg [[DBG]]
+; CHECK-NEXT: [[I6:%[0-9]]] = extractelement <3 x i64> [[I5]], i32 0, !dbg
[[DBG]]
+; CHECK-NEXT: %call = select i1 true, i64 [[I6]], i64 0, !dbg [[DBG]]
store i64 %call, ptr %gid, align 8, !dbg !11
ret void, !dbg !12
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/test/DecorateUniform.spvasm
new/SPIRV-LLVM-Translator-20.1.1/test/DecorateUniform.spvasm
--- old/SPIRV-LLVM-Translator-20.1.0/test/DecorateUniform.spvasm
1970-01-01 01:00:00.000000000 +0100
+++ new/SPIRV-LLVM-Translator-20.1.1/test/DecorateUniform.spvasm
2025-03-25 15:46:09.000000000 +0100
@@ -0,0 +1,26 @@
+; REQUIRES: spirv-as
+
+; RUN: spirv-as %s --target-env spv1.6 -o %t.spv
+; RUN: spirv-val %t.spv
+; RUN: llvm-spirv -to-text -o - %t.spv | FileCheck %s
+
+; Check that the translator does not add the Shader/Matrix capability
+; requirements for SPIR-V 1.6.
+
+; CHECK-NOT: Capability Matrix
+; CHECK-NOT: Capability Shader
+
+ OpCapability Addresses
+ OpCapability Kernel
+ OpCapability UniformDecoration
+ OpMemoryModel Physical64 OpenCL
+ OpEntryPoint Kernel %2 "test"
+ OpDecorate %uint_0 Uniform
+ %uint = OpTypeInt 32 0
+ %uint_0 = OpConstant %uint 0
+ %void = OpTypeVoid
+ %1 = OpTypeFunction %void
+ %2 = OpFunction %void None %1
+ %3 = OpLabel
+ OpReturn
+ OpFunctionEnd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/test/extensions/INTEL/SPV_INTEL_token_type/token_type_intel.ll
new/SPIRV-LLVM-Translator-20.1.1/test/extensions/INTEL/SPV_INTEL_token_type/token_type_intel.ll
---
old/SPIRV-LLVM-Translator-20.1.0/test/extensions/INTEL/SPV_INTEL_token_type/token_type_intel.ll
2025-02-13 17:47:15.000000000 +0100
+++
new/SPIRV-LLVM-Translator-20.1.1/test/extensions/INTEL/SPV_INTEL_token_type/token_type_intel.ll
1970-01-01 01:00:00.000000000 +0100
@@ -1,44 +0,0 @@
-; RUN: llvm-as < %s -o %t.bc
-; RUN: llvm-spirv %t.bc -o %t.spv --spirv-allow-unknown-intrinsics
--spirv-ext=+SPV_INTEL_token_type
-; RUN: llvm-spirv %t.spv -to-text -o - | FileCheck %s
--check-prefix=CHECK-SPIRV
-; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
-; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
-
-; CHECK-SPIRV: Capability TokenTypeINTEL
-; CHECK-SPIRV: Extension "SPV_INTEL_token_type"
-; CHECK-SPIRV: Name [[#FUN:]] "llvm.tokenfoo"
-; CHECK-SPIRV: TypeTokenINTEL [[#TYPE:]]
-; CHECK-SPIRV: TypeFunction [[#FUN_TYPE:]] [[#TYPE]]
-; CHECK-SPIRV: Function {{.*}} [[#FUN]] {{.*}} [[#FUN_TYPE]]
-
-
-; ModuleID = 'token.bc'
-target datalayout =
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024"
-target triple = "spir-unknown-unknown"
-
-; CHECK-LLVM: declare token @llvm.tokenfoo()
-declare token @llvm.tokenfoo()
-
-; Function Attrs: nounwind
-define spir_kernel void @foo() #0 !kernel_arg_addr_space !2
!kernel_arg_access_qual !2 !kernel_arg_type !2 !kernel_arg_type_qual !2
!kernel_arg_base_type !2 {
-entry:
-; CHECK-LLVM: call token @llvm.tokenfoo()
- %tok = call token @llvm.tokenfoo()
- ret void
-}
-
-attributes #0 = { nounwind }
-
-!spirv.MemoryModel = !{!0}
-!opencl.enable.FP_CONTRACT = !{}
-!spirv.Source = !{!1}
-!opencl.spir.version = !{!0}
-!opencl.ocl.version = !{!0}
-!opencl.used.extensions = !{!2}
-!opencl.used.optional.core.features = !{!2}
-!spirv.Generator = !{!3}
-
-!0 = !{i32 1, i32 2}
-!1 = !{i32 3, i32 102000}
-!2 = !{}
-!3 = !{i16 6, i16 14}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/test/extensions/INTEL/SPV_INTEL_token_type/token_type_intel.spt
new/SPIRV-LLVM-Translator-20.1.1/test/extensions/INTEL/SPV_INTEL_token_type/token_type_intel.spt
---
old/SPIRV-LLVM-Translator-20.1.0/test/extensions/INTEL/SPV_INTEL_token_type/token_type_intel.spt
1970-01-01 01:00:00.000000000 +0100
+++
new/SPIRV-LLVM-Translator-20.1.1/test/extensions/INTEL/SPV_INTEL_token_type/token_type_intel.spt
2025-03-25 15:46:09.000000000 +0100
@@ -0,0 +1,50 @@
+; RUN: llvm-spirv %s -to-binary -o %t.spv
+; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
+; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
+
+; CHECK-LLVM: declare token @llvm.tokenfoo()
+
+119734787 65536 393230 13 0
+2 Capability Addresses
+2 Capability Linkage
+2 Capability Kernel
+2 Capability TokenTypeINTEL
+7 Extension "SPV_INTEL_token_type"
+5 ExtInstImport 1 "OpenCL.std"
+3 MemoryModel 1 2
+4 EntryPoint 6 10 "foo"
+3 Source 3 102000
+6 Name 4 "llvm.tokenfoo"
+3 Name 7 "foo"
+4 Name 8 "entry"
+3 Name 9 "tok"
+
+8 Decorate 4 LinkageAttributes "llvm.tokenfoo" Import
+5 Decorate 7 LinkageAttributes "foo" Export
+2 TypeTokenINTEL 2
+3 TypeFunction 3 2
+2 TypeVoid 5
+3 TypeFunction 6 5
+
+
+
+5 Function 2 4 0 3
+
+1 FunctionEnd
+
+5 Function 5 7 0 6
+
+2 Label 8
+4 FunctionCall 2 9 4
+1 Return
+
+1 FunctionEnd
+
+5 Function 5 10 0 6
+
+2 Label 11
+4 FunctionCall 5 12 7
+1 Return
+
+1 FunctionEnd
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/test/extensions/INTEL/SPV_INTEL_vector_compute/buffer_surface_intel.ll
new/SPIRV-LLVM-Translator-20.1.1/test/extensions/INTEL/SPV_INTEL_vector_compute/buffer_surface_intel.ll
---
old/SPIRV-LLVM-Translator-20.1.0/test/extensions/INTEL/SPV_INTEL_vector_compute/buffer_surface_intel.ll
2025-02-13 17:47:15.000000000 +0100
+++
new/SPIRV-LLVM-Translator-20.1.1/test/extensions/INTEL/SPV_INTEL_vector_compute/buffer_surface_intel.ll
2025-03-25 15:46:09.000000000 +0100
@@ -1,20 +1,20 @@
; RUN: llvm-as %s -o %t.bc
; RUN: llvm-spirv %t.bc -o %t.spv --spirv-ext=+SPV_INTEL_vector_compute
--spirv-allow-unknown-intrinsics
; RUN: llvm-spirv %t.spv -o %t.spt --to-text
-; RUN: llvm-spirv -r %t.spv -o %t.bc
+; RUN: llvm-spirv -r %t.spv -o %t.bc --spirv-target-env=SPV-IR
; RUN: llvm-dis %t.bc -o %t.ll
; RUN: FileCheck %s --input-file %t.spt -check-prefix=SPV
; RUN: FileCheck %s --input-file %t.ll -check-prefix=LLVM
target triple = "spir"
-; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1.buffer_ro_t(ptr
addrspace(1))
-; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1.buffer_wo_t(ptr
addrspace(1))
-; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1.buffer_rw_t(ptr
addrspace(1))
-; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1.image1d_rw_t(ptr
addrspace(1))
-; LLVM-DAG: declare i32
@llvm.some.unknown.intrinsic.i32.p1.image1d_buffer_wo_t(ptr addrspace(1))
-; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1.image2d_wo_t(ptr
addrspace(1))
-; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1.image3d_ro_t(ptr
addrspace(1))
+; LLVM-DAG: declare i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_ro_t(target("spirv.BufferSurfaceINTEL",
0))
+; LLVM-DAG: declare i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_wo_t(target("spirv.BufferSurfaceINTEL",
1))
+; LLVM-DAG: declare i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_rw_t(target("spirv.BufferSurfaceINTEL",
2))
+; LLVM-DAG: declare i32
@llvm.some.unknown.intrinsic.i32.p1.image1d_rw_t(target("spirv.Image", void, 0,
0, 0, 0, 0, 0, 2))
+; LLVM-DAG: declare i32
@llvm.some.unknown.intrinsic.i32.p1.image1d_buffer_wo_t(target("spirv.Image",
void, 5, 0, 0, 0, 0, 0, 1))
+; LLVM-DAG: declare i32
@llvm.some.unknown.intrinsic.i32.p1.image2d_wo_t(target("spirv.Image", void, 1,
0, 0, 0, 0, 0, 1))
+; LLVM-DAG: declare i32
@llvm.some.unknown.intrinsic.i32.p1.image3d_ro_t(target("spirv.Image", void, 2,
0, 0, 0, 0, 0, 0))
declare i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_ro_t(target("spirv.BufferSurfaceINTEL",
0))
declare i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_wo_t(target("spirv.BufferSurfaceINTEL",
1))
@@ -42,16 +42,16 @@
; SPV-DAG: TypeFunction {{[0-9]+}} [[INT]] [[IMAGE3D_RO]]{{(^|[^0-9])}}
; SPV-DAG: TypeFunction {{[0-9]+}} [[VOID]] [[BUFRO]] [[BUFWO]] [[BUFRW]]
[[IMAGE1D_RW]] [[IMAGE1D_BUF_WO]] [[IMAGE2D_WO]] [[IMAGE3D_RO]]{{(^|[^0-9])}}
-; LLVM-DAG: define spir_kernel void @test(ptr addrspace(1) %buf_ro, ptr
addrspace(1) %buf_wo, ptr addrspace(1) %buf_rw, ptr addrspace(1) %im1d, ptr
addrspace(1) %im1db, ptr addrspace(1) %im2d, ptr addrspace(1) %im3d)
+; LLVM-DAG: define spir_kernel void @test(target("spirv.BufferSurfaceINTEL",
0) %buf_ro, target("spirv.BufferSurfaceINTEL", 1) %buf_wo,
target("spirv.BufferSurfaceINTEL", 2) %buf_rw, target("spirv.Image", void, 0,
0, 0, 0, 0, 0, 2) %im1d, target("spirv.Image", void, 5, 0, 0, 0, 0, 0, 1)
%im1db, target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) %im2d,
target("spirv.Image", void, 2, 0, 0, 0, 0, 0, 0) %im3d)
define spir_kernel void @test(target("spirv.BufferSurfaceINTEL", 0) %buf_ro,
target("spirv.BufferSurfaceINTEL", 1) %buf_wo,
target("spirv.BufferSurfaceINTEL", 2) %buf_rw, target("spirv.Image", void, 0,
0, 0, 0, 0, 0, 2) %im1d, target("spirv.Image", void, 5, 0, 0, 0, 0, 0, 1)
%im1db, target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) %im2d,
target("spirv.Image", void, 2, 0, 0, 0, 0, 0, 0) %im3d) #0 {
entry:
-; LLVM: %0 = call i32 @llvm.some.unknown.intrinsic.i32.p1.buffer_ro_t(ptr
addrspace(1) %buf_ro)
-; LLVM: %1 = call i32 @llvm.some.unknown.intrinsic.i32.p1.buffer_wo_t(ptr
addrspace(1) %buf_wo)
-; LLVM: %2 = call i32 @llvm.some.unknown.intrinsic.i32.p1.buffer_rw_t(ptr
addrspace(1) %buf_rw)
-; LLVM: %3 = call i32 @llvm.some.unknown.intrinsic.i32.p1.image1d_rw_t(ptr
addrspace(1) %im1d)
-; LLVM: %4 = call i32
@llvm.some.unknown.intrinsic.i32.p1.image1d_buffer_wo_t(ptr addrspace(1) %im1db)
-; LLVM: %5 = call i32 @llvm.some.unknown.intrinsic.i32.p1.image2d_wo_t(ptr
addrspace(1) %im2d)
-; LLVM: %6 = call i32 @llvm.some.unknown.intrinsic.i32.p1.image3d_ro_t(ptr
addrspace(1) %im3d)
+; LLVM: %0 = call i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_ro_t(target("spirv.BufferSurfaceINTEL",
0) %buf_ro)
+; LLVM: %1 = call i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_wo_t(target("spirv.BufferSurfaceINTEL",
1) %buf_wo)
+; LLVM: %2 = call i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_rw_t(target("spirv.BufferSurfaceINTEL",
2) %buf_rw)
+; LLVM: %3 = call i32
@llvm.some.unknown.intrinsic.i32.p1.image1d_rw_t(target("spirv.Image", void, 0,
0, 0, 0, 0, 0, 2) %im1d)
+; LLVM: %4 = call i32
@llvm.some.unknown.intrinsic.i32.p1.image1d_buffer_wo_t(target("spirv.Image",
void, 5, 0, 0, 0, 0, 0, 1) %im1db)
+; LLVM: %5 = call i32
@llvm.some.unknown.intrinsic.i32.p1.image2d_wo_t(target("spirv.Image", void, 1,
0, 0, 0, 0, 0, 1) %im2d)
+; LLVM: %6 = call i32
@llvm.some.unknown.intrinsic.i32.p1.image3d_ro_t(target("spirv.Image", void, 2,
0, 0, 0, 0, 0, 0) %im3d)
; LLVM: ret void
%0 = call i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_ro_t(target("spirv.BufferSurfaceINTEL",
0) %buf_ro)
%1 = call i32
@llvm.some.unknown.intrinsic.i32.p1.buffer_wo_t(target("spirv.BufferSurfaceINTEL",
1) %buf_wo)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/SPIRV-LLVM-Translator-20.1.0/test/get_global_size.cl
new/SPIRV-LLVM-Translator-20.1.1/test/get_global_size.cl
--- old/SPIRV-LLVM-Translator-20.1.0/test/get_global_size.cl 1970-01-01
01:00:00.000000000 +0100
+++ new/SPIRV-LLVM-Translator-20.1.1/test/get_global_size.cl 2025-03-25
15:46:09.000000000 +0100
@@ -0,0 +1,38 @@
+// RUN: %clang_cc1 -triple spir64 -fdeclare-opencl-builtins
-finclude-default-header -emit-llvm-bc %s -o %t.bc
+// RUN: llvm-spirv %t.bc -o %t.spv
+// RUN: spirv-val %t.spv
+// RUN: llvm-spirv %t.bc -spirv-text -o - | FileCheck %s
+
+// Check that out of range dimension index values are handled according to the
+// OpenCL C specification.
+
+kernel void ggs(global size_t *out, uint x) {
+ // CHECK-DAG: Constant [[#]] [[#CONST64_1:]] 1 0
+ // CHECK-DAG: Constant [[#]] [[#CONST3:]] 3
+ // CHECK-DAG: Constant [[#]] [[#CONST0:]] 0
+ // CHECK-DAG: ConstantTrue [[#]] [[#CONSTTRUE:]]
+ // CHECK-DAG: ConstantFalse [[#]] [[#CONSTFALSE:]]
+
+ // CHECK: FunctionParameter [[#]] [[#PARAMOUT:]]
+ // CHECK: FunctionParameter [[#]] [[#PARAMX:]]
+
+ // CHECK: Load [[#]] [[#LD0:]]
+ // CHECK: CompositeExtract [[#]] [[#SCAL0:]] [[#LD0]] 0
+ // CHECK: Select [[#]] [[#RES0:]] [[#CONSTTRUE]] [[#SCAL0]] [[#CONST64_1]]
+ // CHECK: Store [[#]] [[#RES0]]
+ out[0] = get_global_size(0);
+
+ // CHECK: Load [[#]] [[#LD1:]]
+ // CHECK: CompositeExtract [[#]] [[#SCAL1:]] [[#LD1]] 0
+ // CHECK: Select [[#]] [[#RES1:]] [[#CONSTFALSE]] [[#SCAL1]] [[#CONST64_1]]
+ // CHECK: Store [[#]] [[#RES1]]
+ out[1] = get_global_size(3);
+
+ // CHECK: Load [[#]] [[#LD2:]]
+ // CHECK: ULessThan [[#]] [[#CMP:]] [[#PARAMX]] [[#CONST3]]
+ // CHECK: Select [[#]] [[#SEL:]] [[#CMP]] [[#PARAMX]] [[#CONST0]]
+ // CHECK: VectorExtractDynamic 2 [[#SCAL2:]] [[#LD2:]] [[#SEL]]
+ // CHECK: Select [[#]] [[#RES2:]] [[#CMP]] [[#SCAL2]] [[#CONST64_1]]
+ // CHECK: Store [[#]] [[#RES2]]
+ out[2] = get_global_size(x);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/SPIRV-LLVM-Translator-20.1.0/test/negative/feature_requires_extension.ll
new/SPIRV-LLVM-Translator-20.1.1/test/negative/feature_requires_extension.ll
---
old/SPIRV-LLVM-Translator-20.1.0/test/negative/feature_requires_extension.ll
2025-02-13 17:47:15.000000000 +0100
+++
new/SPIRV-LLVM-Translator-20.1.1/test/negative/feature_requires_extension.ll
2025-03-25 15:46:09.000000000 +0100
@@ -1,13 +1,9 @@
; Check whether the translator reports an error for a module with token type
-; if SPV_INTEL_token_type extension is not used.
; RUN: llvm-as < %s -o %t.bc
; RUN: not llvm-spirv %t.bc 2>&1 --spirv-allow-unknown-intrinsics | FileCheck
%s
-; CHECK: RequiresExtension: Feature requires the following SPIR-V extension:
-; CHECK-NEXT: SPV_INTEL_token_type
-; CHECK-NEXT: NOTE: LLVM module contains token type, which doesn't have analogs
-; CHECK-SAME: in SPIR-V without extensions
+; CHECK: InvalidModule: Invalid SPIR-V module: LLVM module contains token
type, which doesn't have a counterpart in SPIR-V
; ModuleID = 'token.bc'
target datalayout =
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024"