From 95489899bee957a4654a0516007cdf238ab93cdc Mon Sep 17 00:00:00 2001
From: Conor McCarthy <cmccarthy@codeweavers.com>
Date: Thu, 18 Apr 2024 11:37:25 +1000
Subject: [PATCH] vkd3d-shader/spirv: Handle the WAVE_ANY_TRUE instruction.

---
 libs/vkd3d-shader/spirv.c             | 3 +++
 tests/hlsl/wave-ops-float.shader_test | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index 848d4e4d44..0a52e1a7ea 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -9766,6 +9766,8 @@ static SpvOp map_wave_bool_op(enum vkd3d_shader_opcode handler_idx)
             return SpvOpGroupNonUniformAllEqual;
         case VKD3DSIH_WAVE_ALL_TRUE:
             return SpvOpGroupNonUniformAll;
+        case VKD3DSIH_WAVE_ANY_TRUE:
+            return SpvOpGroupNonUniformAny;
         default:
             vkd3d_unreachable();
     }
@@ -10137,6 +10139,7 @@ static int spirv_compiler_handle_instruction(struct spirv_compiler *compiler,
             break;
         case VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL:
         case VKD3DSIH_WAVE_ALL_TRUE:
+        case VKD3DSIH_WAVE_ANY_TRUE:
             spirv_compiler_emit_wave_bool_op(compiler, instruction);
             break;
         case VKD3DSIH_DCL:
diff --git a/tests/hlsl/wave-ops-float.shader_test b/tests/hlsl/wave-ops-float.shader_test
index 09e7937e1b..b0fdcb6c35 100644
--- a/tests/hlsl/wave-ops-float.shader_test
+++ b/tests/hlsl/wave-ops-float.shader_test
@@ -58,7 +58,7 @@ void main(uint id : SV_GroupIndex)
 }
 
 [test]
-todo dispatch 4 1 1
+dispatch 4 1 1
 probe uav 1 (0) rgbaui (1, 1, 0, 0)
 probe uav 1 (1) rgbaui (1, 1, 0, 0)
 probe uav 1 (2) rgbaui (1, 1, 0, 0)
-- 
GitLab