Fulfill OpControlBarrier requirement
The valid usage requirement in vulkan specification 1.2.170
VUID-StandaloneSpirv-None-04641 requires: "If the Scope for
memory is Invocation, then memory semantics must be None".
New SPIRV-Tools enforces it.
Fix tests:
* dEQP-VK.spirv_assembly.instruction.graphics.barrier.in_function
* dEQP-VK.spirv_assembly.instruction.graphics.barrier.in_switch
* dEQP-VK.spirv_assembly.instruction.graphics.barrier.in_if
* dEQP-VK.spirv_assembly.instruction.graphics.barrier.after_divergent_if
* dEQP-VK.spirv_assembly.instruction.graphics.barrier.in_loop
Update tests:
* dEQP-VK.spirv_assembly.instruction.graphics.barrier.*
Components: Vulkan
Change-Id: Ie6997fdb36c0327d88a2b7b6b4826dfee690377d
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
index b8b65bc..efa784d 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
@@ -9755,12 +9755,12 @@
fragments["pre_main"] =
"%Workgroup = OpConstant %i32 2\n"
"%Invocation = OpConstant %i32 4\n"
- "%WorkgroupAcquireRelease = OpConstant %i32 0x108\n";
+ "%MemorySemanticsNone = OpConstant %i32 0\n";
fragments["testfun"] =
"%test_code = OpFunction %v4f32 None %v4f32_v4f32_function\n"
"%param1 = OpFunctionParameter %v4f32\n"
"%label_testfun = OpLabel\n"
- "OpControlBarrier %Workgroup %Invocation %WorkgroupAcquireRelease\n"
+ "OpControlBarrier %Workgroup %Invocation %MemorySemanticsNone\n"
"OpReturnValue %param1\n"
"OpFunctionEnd\n";
addTessCtrlTest(testGroup.get(), "in_function", fragments);
@@ -9769,7 +9769,7 @@
fragments["pre_main"] =
"%Workgroup = OpConstant %i32 2\n"
"%Invocation = OpConstant %i32 4\n"
- "%WorkgroupAcquireRelease = OpConstant %i32 0x108\n"
+ "%MemorySemanticsNone = OpConstant %i32 0\n"
"%c_f32_5 = OpConstant %f32 5.\n";
const string setupPercentZero = // Begins %test_code function with code that sets %zero to 0u but cannot be optimized away.
"%test_code = OpFunction %v4f32 None %v4f32_v4f32_function\n"
@@ -9788,18 +9788,18 @@
"%case1 = OpLabel\n"
";This barrier should never be executed, but its presence makes test failure more likely when there's a bug.\n"
- "OpControlBarrier %Workgroup %Invocation %WorkgroupAcquireRelease\n"
+ "OpControlBarrier %Workgroup %Invocation %MemorySemanticsNone\n"
"%wrong_branch_alert1 = OpVectorInsertDynamic %v4f32 %param1 %c_f32_0_5 %c_i32_0\n"
"OpBranch %switch_exit\n"
"%switch_default = OpLabel\n"
"%wrong_branch_alert2 = OpVectorInsertDynamic %v4f32 %param1 %c_f32_0_5 %c_i32_0\n"
";This barrier should never be executed, but its presence makes test failure more likely when there's a bug.\n"
- "OpControlBarrier %Workgroup %Invocation %WorkgroupAcquireRelease\n"
+ "OpControlBarrier %Workgroup %Invocation %MemorySemanticsNone\n"
"OpBranch %switch_exit\n"
"%case0 = OpLabel\n"
- "OpControlBarrier %Workgroup %Invocation %WorkgroupAcquireRelease\n"
+ "OpControlBarrier %Workgroup %Invocation %MemorySemanticsNone\n"
"OpBranch %switch_exit\n"
"%switch_exit = OpLabel\n"
@@ -9817,12 +9817,12 @@
"%else = OpLabel\n"
";This barrier should never be executed, but its presence makes test failure more likely when there's a bug.\n"
- "OpControlBarrier %Workgroup %Invocation %WorkgroupAcquireRelease\n"
+ "OpControlBarrier %Workgroup %Invocation %MemorySemanticsNone\n"
"%wrong_branch_alert = OpVectorInsertDynamic %v4f32 %param1 %c_f32_0_5 %c_i32_0\n"
"OpBranch %exit\n"
"%then = OpLabel\n"
- "OpControlBarrier %Workgroup %Invocation %WorkgroupAcquireRelease\n"
+ "OpControlBarrier %Workgroup %Invocation %MemorySemanticsNone\n"
"OpBranch %exit\n"
"%exit = OpLabel\n"
"%ret = OpPhi %v4f32 %param1 %then %wrong_branch_alert %else\n"
@@ -9849,7 +9849,7 @@
"%exit = OpLabel\n"
"%val = OpPhi %f32 %val0 %else %val1 %then\n"
- "OpControlBarrier %Workgroup %Invocation %WorkgroupAcquireRelease\n"
+ "OpControlBarrier %Workgroup %Invocation %MemorySemanticsNone\n"
"%ret = OpVectorInsertDynamic %v4f32 %param1 %val %zero\n"
"OpReturnValue %ret\n"
"OpFunctionEnd\n";
@@ -9859,7 +9859,7 @@
fragments["pre_main"] =
"%Workgroup = OpConstant %i32 2\n"
"%Invocation = OpConstant %i32 4\n"
- "%WorkgroupAcquireRelease = OpConstant %i32 0x108\n"
+ "%MemorySemanticsNone = OpConstant %i32 0\n"
"%c_f32_10 = OpConstant %f32 10.\n";
fragments["testfun"] =
"%test_code = OpFunction %v4f32 None %v4f32_v4f32_function\n"
@@ -9872,7 +9872,7 @@
"%loop = OpLabel\n"
"%count = OpPhi %i32 %c_i32_4 %entry %count__ %loop\n"
"%val1 = OpPhi %f32 %val0 %entry %val %loop\n"
- "OpControlBarrier %Workgroup %Invocation %WorkgroupAcquireRelease\n"
+ "OpControlBarrier %Workgroup %Invocation %MemorySemanticsNone\n"
"%fcount = OpConvertSToF %f32 %count\n"
"%val = OpFAdd %f32 %val1 %fcount\n"
"%count__ = OpISub %i32 %count %c_i32_1\n"