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 <aaronpuch...@alice-dsl.net>
+
+- 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"

Reply via email to