Remove input blocks from SPIR-V 1.4 compute shaders
authorAlan Baker <alanbaker@google.com>
Tue, 3 Sep 2019 15:01:57 +0000 (11:01 -0400)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 10 Oct 2019 13:29:56 +0000 (09:29 -0400)
Split input blocks in compute shaders into flat variables.

Component: Vulkan

VK-GL-CTS Issue: 1967

Affects:
dEQP-VK.spirv_assembly.instruction.spirv1p4.opptrequal.ssbo_comparisons_equal
dEQP-VK.spirv_assembly.instruction.spirv1p4.opptrequal.wg_comparisons_equal
dEQP-VK.spirv_assembly.instruction.spirv1p4.opptrnotequal.ssbo_comparisons_not_equal
dEQP-VK.spirv_assembly.instruction.spirv1p4.opptrnotequal.wg_comparisons_not_equal
dEQP-VK.spirv_assembly.instruction.spirv1p4.opptrdiff.ssbo_comparisons_diff
dEQP-VK.spirv_assembly.instruction.spirv1p4.opptrdiff.wg_comparisons_diff

Change-Id: I228583843148e36a33d7f469cb90f628eb432c37
(cherry picked from commit b976f5430158a62e03fe46500e25133e7a6113f2)

external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/ssbo_comparisons_diff.amber
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrdiff/wg_comparisons_diff.amber
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/ssbo_comparisons_equal.amber
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrequal/wg_comparisons_equal.amber
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/ssbo_comparisons_not_equal.amber
external/vulkancts/data/vulkan/amber/spirv_assembly/instruction/spirv1p4/opptrnotequal/wg_comparisons_not_equal.amber

index 67d4d7f..905fe29 100644 (file)
@@ -21,7 +21,7 @@ VK_KHR_get_physical_device_properties2
 OpCapability Shader
 OpCapability VariablePointersStorageBuffer
 OpMemoryModel Logical GLSL450
-OpEntryPoint GLCompute %main "main" %in_var %diff_var %n_var %input_var
+OpEntryPoint GLCompute %main "main" %in_var %diff_var %n_var %lid_var %gid_var
 OpExecutionMode %main LocalSize 4 1 1
 
 OpDecorate %struct_4 Block
@@ -42,9 +42,8 @@ OpDecorate %diff_var Binding 1
 OpDecorate %n_var DescriptorSet 0
 OpDecorate %n_var Binding 2
 
-OpDecorate %input_struct Block
-OpMemberDecorate %input_struct 0 BuiltIn LocalInvocationId
-OpMemberDecorate %input_struct 1 BuiltIn WorkgroupId
+OpDecorate %lid_var BuiltIn LocalInvocationId
+OpDecorate %gid_var BuiltIn WorkgroupId
 
 %void = OpTypeVoid
 %bool = OpTypeBool
@@ -56,8 +55,6 @@ OpMemberDecorate %input_struct 1 BuiltIn WorkgroupId
 %int_17 = OpConstant %int 17
 %int3 = OpTypeVector %int 3
 
-%input_struct = OpTypeStruct %int3 %int3
-%ptr_input_struct = OpTypePointer Input %input_struct
 %ptr_input_int3 = OpTypePointer Input %int3
 
 %array_4 = OpTypeArray %int %int_4
@@ -80,18 +77,17 @@ OpMemberDecorate %input_struct 1 BuiltIn WorkgroupId
 %in_var = OpVariable %ptr_struct_4 StorageBuffer
 %diff_var = OpVariable %ptr_struct_17 StorageBuffer
 %n_var = OpVariable %ptr_n_struct Uniform
-%input_var = OpVariable %ptr_input_struct Input
+%lid_var = OpVariable %ptr_input_int3 Input
+%gid_var = OpVariable %ptr_input_int3 Input
 
 %void_fn = OpTypeFunction %void
 %main = OpFunction %void None %void_fn
 %entry = OpLabel
 %n_gep = OpAccessChain %ptr_n %n_var %int_0
 %n = OpLoad %int %n_gep
-%gid_gep = OpAccessChain %ptr_input_int3 %input_var %int_1
-%gid = OpLoad %int3 %gid_gep
+%gid = OpLoad %int3 %gid_var
 %gid_x = OpCompositeExtract %int %gid 0
-%lid_gep = OpAccessChain %ptr_input_int3 %input_var %int_0
-%lid = OpLoad %int3 %lid_gep
+%lid = OpLoad %int3 %lid_var
 %lid_x = OpCompositeExtract %int %lid 0
 %array_gep_0 = OpAccessChain %ptr_array_4 %in_var %int_0 %int_0
 %array_gep = OpAccessChain %ptr_array_4 %in_var %int_0 %gid_x
index e741e6b..74a9d53 100644 (file)
@@ -21,7 +21,7 @@ VK_KHR_get_physical_device_properties2
 OpCapability Shader
 OpCapability VariablePointers
 OpMemoryModel Logical GLSL450
-OpEntryPoint GLCompute %main "main" %wg_var %diff_var %input_var
+OpEntryPoint GLCompute %main "main" %wg_var %diff_var %lid_var %gid_var
 OpExecutionMode %main LocalSize 16 4 1
 
 OpDecorate %struct_17 Block
@@ -32,9 +32,8 @@ OpDecorate %array_17 ArrayStride 4
 OpDecorate %diff_var DescriptorSet 0
 OpDecorate %diff_var Binding 0
 
-OpDecorate %input_struct Block
-OpMemberDecorate %input_struct 0 BuiltIn LocalInvocationId
-OpMemberDecorate %input_struct 1 BuiltIn GlobalInvocationId
+OpDecorate %lid_var BuiltIn LocalInvocationId
+OpDecorate %gid_var BuiltIn GlobalInvocationId
 
 %void = OpTypeVoid
 %bool = OpTypeBool
@@ -47,8 +46,6 @@ OpMemberDecorate %input_struct 1 BuiltIn GlobalInvocationId
 %int_64 = OpConstant %int 64
 %int3 = OpTypeVector %int 3
 
-%input_struct = OpTypeStruct %int3 %int3
-%ptr_input_struct = OpTypePointer Input %input_struct
 %ptr_input_int3 = OpTypePointer Input %int3
 
 %array_4 = OpTypeArray %int %int_4
@@ -66,17 +63,16 @@ OpMemberDecorate %input_struct 1 BuiltIn GlobalInvocationId
 
 %wg_var = OpVariable %ptr_array_array_4 Workgroup
 %diff_var = OpVariable %ptr_struct_17 StorageBuffer
-%input_var = OpVariable %ptr_input_struct Input
+%lid_var = OpVariable %ptr_input_int3 Input
+%gid_var = OpVariable %ptr_input_int3 Input
 
 %void_fn = OpTypeFunction %void
 %main = OpFunction %void None %void_fn
 %entry = OpLabel
-%gid_gep = OpAccessChain %ptr_input_int3 %input_var %int_1
-%gid = OpLoad %int3 %gid_gep
+%gid = OpLoad %int3 %gid_var
 %gid_x = OpCompositeExtract %int %gid 0
 %gid_y = OpCompositeExtract %int %gid 1
-%lid_gep = OpAccessChain %ptr_input_int3 %input_var %int_0
-%lid = OpLoad %int3 %lid_gep
+%lid = OpLoad %int3 %lid_var
 %lid_x = OpCompositeExtract %int %lid 0
 %lid_y = OpCompositeExtract %int %lid 1
 %array_gep_0 = OpAccessChain %ptr_array_4 %wg_var %int_0
index 223e7df..8faf624 100644 (file)
@@ -21,7 +21,7 @@ VK_KHR_get_physical_device_properties2
 OpCapability Shader
 OpCapability VariablePointersStorageBuffer
 OpMemoryModel Logical GLSL450
-OpEntryPoint GLCompute %main "main" %in_var %equal_var %n_var %input_var
+OpEntryPoint GLCompute %main "main" %in_var %equal_var %n_var %lid_var %gid_var
 OpExecutionMode %main LocalSize 4 1 1
 
 OpDecorate %struct_4 Block
@@ -42,9 +42,8 @@ OpDecorate %equal_var Binding 1
 OpDecorate %n_var DescriptorSet 0
 OpDecorate %n_var Binding 2
 
-OpDecorate %input_struct Block
-OpMemberDecorate %input_struct 0 BuiltIn LocalInvocationId
-OpMemberDecorate %input_struct 1 BuiltIn WorkgroupId
+OpDecorate %lid_var BuiltIn LocalInvocationId
+OpDecorate %gid_var BuiltIn WorkgroupId
 
 %void = OpTypeVoid
 %bool = OpTypeBool
@@ -56,8 +55,6 @@ OpMemberDecorate %input_struct 1 BuiltIn WorkgroupId
 %int_17 = OpConstant %int 17
 %int3 = OpTypeVector %int 3
 
-%input_struct = OpTypeStruct %int3 %int3
-%ptr_input_struct = OpTypePointer Input %input_struct
 %ptr_input_int3 = OpTypePointer Input %int3
 
 %array_4 = OpTypeArray %int %int_4
@@ -80,18 +77,17 @@ OpMemberDecorate %input_struct 1 BuiltIn WorkgroupId
 %in_var = OpVariable %ptr_struct_4 StorageBuffer
 %equal_var = OpVariable %ptr_struct_17 StorageBuffer
 %n_var = OpVariable %ptr_n_struct Uniform
-%input_var = OpVariable %ptr_input_struct Input
+%lid_var = OpVariable %ptr_input_int3 Input
+%gid_var = OpVariable %ptr_input_int3 Input
 
 %void_fn = OpTypeFunction %void
 %main = OpFunction %void None %void_fn
 %entry = OpLabel
 %n_gep = OpAccessChain %ptr_n %n_var %int_0
 %n = OpLoad %int %n_gep
-%gid_gep = OpAccessChain %ptr_input_int3 %input_var %int_1
-%gid = OpLoad %int3 %gid_gep
+%gid = OpLoad %int3 %gid_var
 %gid_x = OpCompositeExtract %int %gid 0
-%lid_gep = OpAccessChain %ptr_input_int3 %input_var %int_0
-%lid = OpLoad %int3 %lid_gep
+%lid = OpLoad %int3 %lid_var
 %lid_x = OpCompositeExtract %int %lid 0
 %array_gep_0 = OpAccessChain %ptr_array_4 %in_var %int_0 %int_0
 %array_gep = OpAccessChain %ptr_array_4 %in_var %int_0 %gid_x
index 23acf99..fdc491e 100644 (file)
@@ -21,7 +21,7 @@ VK_KHR_get_physical_device_properties2
 OpCapability Shader
 OpCapability VariablePointers
 OpMemoryModel Logical GLSL450
-OpEntryPoint GLCompute %main "main" %wg_var %equal_var %input_var
+OpEntryPoint GLCompute %main "main" %wg_var %equal_var %lid_var %gid_var
 OpExecutionMode %main LocalSize 16 4 1
 
 OpDecorate %struct_17 Block
@@ -32,9 +32,8 @@ OpDecorate %array_17 ArrayStride 4
 OpDecorate %equal_var DescriptorSet 0
 OpDecorate %equal_var Binding 0
 
-OpDecorate %input_struct Block
-OpMemberDecorate %input_struct 0 BuiltIn LocalInvocationId
-OpMemberDecorate %input_struct 1 BuiltIn GlobalInvocationId
+OpDecorate %lid_var BuiltIn LocalInvocationId
+OpDecorate %gid_var BuiltIn GlobalInvocationId
 
 %void = OpTypeVoid
 %bool = OpTypeBool
@@ -47,8 +46,6 @@ OpMemberDecorate %input_struct 1 BuiltIn GlobalInvocationId
 %int_64 = OpConstant %int 64
 %int3 = OpTypeVector %int 3
 
-%input_struct = OpTypeStruct %int3 %int3
-%ptr_input_struct = OpTypePointer Input %input_struct
 %ptr_input_int3 = OpTypePointer Input %int3
 
 %array_4 = OpTypeArray %int %int_4
@@ -66,17 +63,16 @@ OpMemberDecorate %input_struct 1 BuiltIn GlobalInvocationId
 
 %wg_var = OpVariable %ptr_array_array_4 Workgroup
 %equal_var = OpVariable %ptr_struct_17 StorageBuffer
-%input_var = OpVariable %ptr_input_struct Input
+%lid_var = OpVariable %ptr_input_int3 Input
+%gid_var = OpVariable %ptr_input_int3 Input
 
 %void_fn = OpTypeFunction %void
 %main = OpFunction %void None %void_fn
 %entry = OpLabel
-%gid_gep = OpAccessChain %ptr_input_int3 %input_var %int_1
-%gid = OpLoad %int3 %gid_gep
+%gid = OpLoad %int3 %gid_var
 %gid_x = OpCompositeExtract %int %gid 0
 %gid_y = OpCompositeExtract %int %gid 1
-%lid_gep = OpAccessChain %ptr_input_int3 %input_var %int_0
-%lid = OpLoad %int3 %lid_gep
+%lid = OpLoad %int3 %lid_var
 %lid_x = OpCompositeExtract %int %lid 0
 %lid_y = OpCompositeExtract %int %lid 1
 %array_gep_0 = OpAccessChain %ptr_array_4 %wg_var %int_0
index 3e9406b..4bfd722 100644 (file)
@@ -21,7 +21,7 @@ VK_KHR_get_physical_device_properties2
 OpCapability Shader
 OpCapability VariablePointersStorageBuffer
 OpMemoryModel Logical GLSL450
-OpEntryPoint GLCompute %main "main" %in_var %not_equal_var %n_var %input_var
+OpEntryPoint GLCompute %main "main" %in_var %not_equal_var %n_var %lid_var %gid_var
 OpExecutionMode %main LocalSize 4 1 1
 
 OpDecorate %struct_4 Block
@@ -42,9 +42,8 @@ OpDecorate %not_equal_var Binding 1
 OpDecorate %n_var DescriptorSet 0
 OpDecorate %n_var Binding 2
 
-OpDecorate %input_struct Block
-OpMemberDecorate %input_struct 0 BuiltIn LocalInvocationId
-OpMemberDecorate %input_struct 1 BuiltIn WorkgroupId
+OpDecorate %lid_var BuiltIn LocalInvocationId
+OpDecorate %gid_var BuiltIn WorkgroupId
 
 %void = OpTypeVoid
 %bool = OpTypeBool
@@ -56,8 +55,6 @@ OpMemberDecorate %input_struct 1 BuiltIn WorkgroupId
 %int_17 = OpConstant %int 17
 %int3 = OpTypeVector %int 3
 
-%input_struct = OpTypeStruct %int3 %int3
-%ptr_input_struct = OpTypePointer Input %input_struct
 %ptr_input_int3 = OpTypePointer Input %int3
 
 %array_4 = OpTypeArray %int %int_4
@@ -80,18 +77,17 @@ OpMemberDecorate %input_struct 1 BuiltIn WorkgroupId
 %in_var = OpVariable %ptr_struct_4 StorageBuffer
 %not_equal_var = OpVariable %ptr_struct_17 StorageBuffer
 %n_var = OpVariable %ptr_n_struct Uniform
-%input_var = OpVariable %ptr_input_struct Input
+%lid_var = OpVariable %ptr_input_int3 Input
+%gid_var = OpVariable %ptr_input_int3 Input
 
 %void_fn = OpTypeFunction %void
 %main = OpFunction %void None %void_fn
 %entry = OpLabel
 %n_gep = OpAccessChain %ptr_n %n_var %int_0
 %n = OpLoad %int %n_gep
-%gid_gep = OpAccessChain %ptr_input_int3 %input_var %int_1
-%gid = OpLoad %int3 %gid_gep
+%gid = OpLoad %int3 %gid_var
 %gid_x = OpCompositeExtract %int %gid 0
-%lid_gep = OpAccessChain %ptr_input_int3 %input_var %int_0
-%lid = OpLoad %int3 %lid_gep
+%lid = OpLoad %int3 %lid_var
 %lid_x = OpCompositeExtract %int %lid 0
 %array_gep_0 = OpAccessChain %ptr_array_4 %in_var %int_0 %int_0
 %array_gep = OpAccessChain %ptr_array_4 %in_var %int_0 %gid_x
index 9fe6436..9eb1a20 100644 (file)
@@ -21,7 +21,7 @@ VK_KHR_get_physical_device_properties2
 OpCapability Shader
 OpCapability VariablePointers
 OpMemoryModel Logical GLSL450
-OpEntryPoint GLCompute %main "main" %wg_var %not_equal_var %input_var
+OpEntryPoint GLCompute %main "main" %wg_var %not_equal_var %lid_var %gid_var
 OpExecutionMode %main LocalSize 16 4 1
 
 OpDecorate %struct_17 Block
@@ -32,9 +32,8 @@ OpDecorate %array_17 ArrayStride 4
 OpDecorate %not_equal_var DescriptorSet 0
 OpDecorate %not_equal_var Binding 0
 
-OpDecorate %input_struct Block
-OpMemberDecorate %input_struct 0 BuiltIn LocalInvocationId
-OpMemberDecorate %input_struct 1 BuiltIn GlobalInvocationId
+OpDecorate %lid_var BuiltIn LocalInvocationId
+OpDecorate %gid_var BuiltIn GlobalInvocationId
 
 %void = OpTypeVoid
 %bool = OpTypeBool
@@ -66,17 +65,16 @@ OpMemberDecorate %input_struct 1 BuiltIn GlobalInvocationId
 
 %wg_var = OpVariable %ptr_array_array_4 Workgroup
 %not_equal_var = OpVariable %ptr_struct_17 StorageBuffer
-%input_var = OpVariable %ptr_input_struct Input
+%lid_var = OpVariable %ptr_input_int3 Input
+%gid_var = OpVariable %ptr_input_int3 Input
 
 %void_fn = OpTypeFunction %void
 %main = OpFunction %void None %void_fn
 %entry = OpLabel
-%gid_gep = OpAccessChain %ptr_input_int3 %input_var %int_1
-%gid = OpLoad %int3 %gid_gep
+%gid = OpLoad %int3 %gid_var
 %gid_x = OpCompositeExtract %int %gid 0
 %gid_y = OpCompositeExtract %int %gid 1
-%lid_gep = OpAccessChain %ptr_input_int3 %input_var %int_0
-%lid = OpLoad %int3 %lid_gep
+%lid = OpLoad %int3 %lid_var
 %lid_x = OpCompositeExtract %int %lid 0
 %lid_y = OpCompositeExtract %int %lid 1
 %array_gep_0 = OpAccessChain %ptr_array_4 %wg_var %int_0