Skip to content

[SPIRV] Fix test with VK1.3 validation #137633

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 30, 2025
Merged

[SPIRV] Fix test with VK1.3 validation #137633

merged 2 commits into from
Apr 30, 2025

Conversation

s-perron
Copy link
Contributor

An update to the spirv validator is now correctly rejecting vulkan
shaders with the linkage capability. We have a couple tests that need
updating to remove the capability.

Fixes #136344

An update to the spirv validator is now correctly rejecting vulkan
shaders with the linkage capability. We have a couple tests that need
updating to remove the capability.

Fixes llvm#136344
@llvmbot
Copy link
Member

llvmbot commented Apr 28, 2025

@llvm/pr-subscribers-backend-spir-v

Author: Steven Perron (s-perron)

Changes

An update to the spirv validator is now correctly rejecting vulkan
shaders with the linkage capability. We have a couple tests that need
updating to remove the capability.

Fixes #136344


Full diff: https://github.com/llvm/llvm-project/pull/137633.diff

2 Files Affected:

  • (modified) llvm/test/CodeGen/SPIRV/hlsl-intrinsics/SV_GroupIndex.ll (+4-4)
  • (modified) llvm/test/CodeGen/SPIRV/hlsl-intrinsics/smoothstep.ll (+12-7)
diff --git a/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/SV_GroupIndex.ll b/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/SV_GroupIndex.ll
index 1b89485654727..e1d8e4917f411 100644
--- a/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/SV_GroupIndex.ll
+++ b/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/SV_GroupIndex.ll
@@ -1,9 +1,6 @@
 ; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv-vulkan-unknown %s -o - | FileCheck %s
 ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-vulkan-unknown %s -o - -filetype=obj | spirv-val --target-env vulkan1.3 %}
 
-; TODO(#136344): This test currently fails when --target-env vulkan1.3 is specified.
-; XFAIL: spirv-tools
-
 ; CHECK-DAG:        %[[#int:]] = OpTypeInt 32 0
 ; CHECK-DAG:        %[[#ptr_Input_int:]] = OpTypePointer Input %[[#int]]
 ; CHECK-DAG:        %[[#LocalInvocationIndex:]] = OpVariable %[[#ptr_Input_int]] Input
@@ -14,7 +11,10 @@
 
 target triple = "spirv-unknown-vulkan-library"
 
-declare void @local_index_user(i32)
+define internal void @local_index_user(i32) {
+entry:
+  ret void
+}
 
 ; Function Attrs: convergent noinline norecurse
 define void @main() #1 {
diff --git a/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/smoothstep.ll b/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/smoothstep.ll
index 789b0cb15c9e2..2b2ddcfee4cba 100644
--- a/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/smoothstep.ll
+++ b/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/smoothstep.ll
@@ -1,9 +1,6 @@
 ; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s
 ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-unknown %s -o - -filetype=obj | spirv-val --target-env vulkan1.3 %}
 
-; TODO(#136344): This test currently fails when --target-env vulkan1.3 is specified.
-; XFAIL: spirv-tools
-
 ; Make sure SPIRV operation function calls for smoothstep are lowered correctly.
 
 ; CHECK-DAG: %[[#op_ext_glsl:]] = OpExtInstImport "GLSL.std.450"
@@ -12,7 +9,7 @@
 ; CHECK-DAG: %[[#float_32:]] = OpTypeFloat 32
 ; CHECK-DAG: %[[#vec4_float_32:]] = OpTypeVector %[[#float_32]] 4
 
-define noundef half @smoothstep_half(half noundef %a, half noundef %b, half noundef %c) {
+define internal noundef half @smoothstep_half(half noundef %a, half noundef %b, half noundef %c) {
 entry:
   ; CHECK: %[[#]] = OpFunction %[[#float_16]] None %[[#]]
   ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#float_16]]
@@ -23,7 +20,7 @@ entry:
   ret half %spv.smoothstep
 }
 
-define noundef float @smoothstep_float(float noundef %a, float noundef %b, float noundef %c) {
+define internal noundef float @smoothstep_float(float noundef %a, float noundef %b, float noundef %c) {
 entry:
   ; CHECK: %[[#]] = OpFunction %[[#float_32]] None %[[#]]
   ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#float_32]]
@@ -34,7 +31,7 @@ entry:
   ret float %spv.smoothstep
 }
 
-define noundef <4 x half> @smoothstep_half4(<4 x half> noundef %a, <4 x half> noundef %b, <4 x half> noundef %c) {
+define internal noundef <4 x half> @smoothstep_half4(<4 x half> noundef %a, <4 x half> noundef %b, <4 x half> noundef %c) {
 entry:
   ; CHECK: %[[#]] = OpFunction %[[#vec4_float_16]] None %[[#]]
   ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec4_float_16]]
@@ -45,7 +42,7 @@ entry:
   ret <4 x half> %spv.smoothstep
 }
 
-define noundef <4 x float> @smoothstep_float4(<4 x float> noundef %a, <4 x float> noundef %b, <4 x float> noundef %c) {
+define internal noundef <4 x float> @smoothstep_float4(<4 x float> noundef %a, <4 x float> noundef %b, <4 x float> noundef %c) {
 entry:
   ; CHECK: %[[#]] = OpFunction %[[#vec4_float_32]] None %[[#]]
   ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec4_float_32]]
@@ -56,8 +53,16 @@ entry:
   ret <4 x float> %spv.smoothstep
 }
 
+; The other fucntions are the test, but a entry point is required to have a valid SPIR-V module.
+define void @main() #1 {
+entry:
+  ret void
+}
+
 declare half @llvm.spv.smoothstep.f16(half, half, half)
 declare float @llvm.spv.smoothstep.f32(float, float, float)
 
 declare <4 x half> @llvm.spv.smoothstep.v4f16(<4 x half>, <4 x half>, <4 x half>)
 declare <4 x float> @llvm.spv.smoothstep.v4f32(<4 x float>, <4 x float>, <4 x float>)
+
+attributes #1 = { convergent noinline norecurse "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }

@s-perron s-perron changed the title [SPIRV] Fix test with VK1.4 validation [SPIRV] Fix test with VK1.3 validation Apr 30, 2025
@s-perron s-perron merged commit a5fef2a into llvm:main Apr 30, 2025
10 of 12 checks passed
@s-perron s-perron deleted the fix_tests branch April 30, 2025 13:48
charles-zablit pushed a commit to charles-zablit/llvm-project that referenced this pull request May 1, 2025
An update to the spirv validator is now correctly rejecting vulkan
shaders with the linkage capability. We have a couple tests that need
updating to remove the capability.

Fixes llvm#136344
IanWood1 pushed a commit to IanWood1/llvm-project that referenced this pull request May 6, 2025
An update to the spirv validator is now correctly rejecting vulkan
shaders with the linkage capability. We have a couple tests that need
updating to remove the capability.

Fixes llvm#136344
IanWood1 pushed a commit to IanWood1/llvm-project that referenced this pull request May 6, 2025
An update to the spirv validator is now correctly rejecting vulkan
shaders with the linkage capability. We have a couple tests that need
updating to remove the capability.

Fixes llvm#136344
IanWood1 pushed a commit to IanWood1/llvm-project that referenced this pull request May 6, 2025
An update to the spirv validator is now correctly rejecting vulkan
shaders with the linkage capability. We have a couple tests that need
updating to remove the capability.

Fixes llvm#136344
GeorgeARM pushed a commit to GeorgeARM/llvm-project that referenced this pull request May 7, 2025
An update to the spirv validator is now correctly rejecting vulkan
shaders with the linkage capability. We have a couple tests that need
updating to remove the capability.

Fixes llvm#136344
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[HLSL] Fix failing SPIR-V backend tests that specify --target-env vulkan1.3
4 participants