532f65583e
Remove all shenanigans with propagation, and only consume nonuniform qualifiers exactly where needed (last minute).
300 lines
14 KiB
Plaintext
300 lines
14 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.3
|
|
; Generator: Unknown(30017); 21022
|
|
; Bound: 233
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
OpCapability SampledBuffer
|
|
OpCapability ImageBuffer
|
|
OpCapability ImageQuery
|
|
OpCapability StorageImageWriteWithoutFormat
|
|
OpCapability GroupNonUniformBallot
|
|
OpCapability RuntimeDescriptorArray
|
|
OpCapability UniformTexelBufferArrayDynamicIndexing
|
|
OpCapability StorageTexelBufferArrayDynamicIndexing
|
|
OpCapability UniformTexelBufferArrayNonUniformIndexing
|
|
OpCapability StorageTexelBufferArrayNonUniformIndexing
|
|
OpCapability PhysicalStorageBufferAddresses
|
|
OpExtension "SPV_EXT_descriptor_indexing"
|
|
OpExtension "SPV_KHR_physical_storage_buffer"
|
|
OpMemoryModel PhysicalStorageBuffer64 GLSL450
|
|
OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
|
|
OpExecutionMode %main LocalSize 1 1 1
|
|
OpName %main "main"
|
|
OpName %RootConstants "RootConstants"
|
|
OpName %registers "registers"
|
|
OpName %SSBO_Offsets "SSBO_Offsets"
|
|
OpDecorate %RootConstants Block
|
|
OpMemberDecorate %RootConstants 0 Offset 0
|
|
OpMemberDecorate %RootConstants 1 Offset 4
|
|
OpMemberDecorate %RootConstants 2 Offset 8
|
|
OpMemberDecorate %RootConstants 3 Offset 12
|
|
OpMemberDecorate %RootConstants 4 Offset 16
|
|
OpMemberDecorate %RootConstants 5 Offset 20
|
|
OpMemberDecorate %RootConstants 6 Offset 24
|
|
OpMemberDecorate %RootConstants 7 Offset 28
|
|
OpDecorate %_runtimearr_v2uint ArrayStride 8
|
|
OpMemberDecorate %SSBO_Offsets 0 Offset 0
|
|
OpDecorate %SSBO_Offsets Block
|
|
OpDecorate %13 DescriptorSet 0
|
|
OpDecorate %13 Binding 0
|
|
OpDecorate %13 NonWritable
|
|
OpDecorate %13 Restrict
|
|
OpDecorate %18 DescriptorSet 1
|
|
OpDecorate %18 Binding 0
|
|
OpDecorate %22 DescriptorSet 4
|
|
OpDecorate %22 Binding 0
|
|
OpDecorate %26 DescriptorSet 4
|
|
OpDecorate %26 Binding 0
|
|
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
|
|
OpDecorate %148 NonUniform
|
|
OpDecorate %149 NonUniform
|
|
OpDecorate %172 NonUniform
|
|
OpDecorate %173 NonUniform
|
|
OpDecorate %196 NonUniform
|
|
OpDecorate %197 NonUniform
|
|
OpDecorate %205 NonUniform
|
|
OpDecorate %212 NonUniform
|
|
%void = OpTypeVoid
|
|
%2 = OpTypeFunction %void
|
|
%uint = OpTypeInt 32 0
|
|
%RootConstants = OpTypeStruct %uint %uint %uint %uint %uint %uint %uint %uint
|
|
%_ptr_PushConstant_RootConstants = OpTypePointer PushConstant %RootConstants
|
|
%registers = OpVariable %_ptr_PushConstant_RootConstants PushConstant
|
|
%v2uint = OpTypeVector %uint 2
|
|
%_runtimearr_v2uint = OpTypeRuntimeArray %v2uint
|
|
%SSBO_Offsets = OpTypeStruct %_runtimearr_v2uint
|
|
%_ptr_StorageBuffer_SSBO_Offsets = OpTypePointer StorageBuffer %SSBO_Offsets
|
|
%13 = OpVariable %_ptr_StorageBuffer_SSBO_Offsets StorageBuffer
|
|
%float = OpTypeFloat 32
|
|
%15 = OpTypeImage %float Buffer 0 0 0 1 Unknown
|
|
%_runtimearr_15 = OpTypeRuntimeArray %15
|
|
%_ptr_UniformConstant__runtimearr_15 = OpTypePointer UniformConstant %_runtimearr_15
|
|
%18 = OpVariable %_ptr_UniformConstant__runtimearr_15 UniformConstant
|
|
%19 = OpTypeImage %float Buffer 0 0 0 2 R32f
|
|
%_runtimearr_19 = OpTypeRuntimeArray %19
|
|
%_ptr_UniformConstant__runtimearr_19 = OpTypePointer UniformConstant %_runtimearr_19
|
|
%22 = OpVariable %_ptr_UniformConstant__runtimearr_19 UniformConstant
|
|
%23 = OpTypeImage %uint Buffer 0 0 0 2 R32ui
|
|
%_runtimearr_23 = OpTypeRuntimeArray %23
|
|
%_ptr_UniformConstant__runtimearr_23 = OpTypePointer UniformConstant %_runtimearr_23
|
|
%26 = OpVariable %_ptr_UniformConstant__runtimearr_23 UniformConstant
|
|
%_ptr_UniformConstant_23 = OpTypePointer UniformConstant %23
|
|
%_ptr_PushConstant_uint = OpTypePointer PushConstant %uint
|
|
%uint_4 = OpConstant %uint 4
|
|
%uint_2 = OpConstant %uint 2
|
|
%uint_3 = OpConstant %uint 3
|
|
%_ptr_StorageBuffer_v2uint = OpTypePointer StorageBuffer %v2uint
|
|
%uint_0 = OpConstant %uint 0
|
|
%_ptr_UniformConstant_19 = OpTypePointer UniformConstant %19
|
|
%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15
|
|
%uint_1 = OpConstant %uint 1
|
|
%v3uint = OpTypeVector %uint 3
|
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
|
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
|
|
%_ptr_Input_uint = OpTypePointer Input %uint
|
|
%bool = OpTypeBool
|
|
%uint_4294967295 = OpConstant %uint 4294967295
|
|
%v4float = OpTypeVector %float 4
|
|
%uint_1024 = OpConstant %uint 1024
|
|
%uint_2048 = OpConstant %uint 2048
|
|
%_ptr_Image_uint = OpTypePointer Image %uint
|
|
%uint_40 = OpConstant %uint 40
|
|
%uint_50 = OpConstant %uint 50
|
|
%uint_70 = OpConstant %uint 70
|
|
%main = OpFunction %void None %2
|
|
%4 = OpLabel
|
|
OpBranch %231
|
|
%231 = OpLabel
|
|
%30 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4
|
|
%32 = OpLoad %uint %30
|
|
%33 = OpIAdd %uint %32 %uint_2
|
|
%28 = OpAccessChain %_ptr_UniformConstant_23 %26 %33
|
|
%35 = OpLoad %23 %28
|
|
%36 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %33
|
|
%39 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %36
|
|
%41 = OpLoad %v2uint %39
|
|
%44 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4
|
|
%45 = OpLoad %uint %44
|
|
%43 = OpAccessChain %_ptr_UniformConstant_19 %22 %45
|
|
%46 = OpLoad %19 %43
|
|
%47 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %45
|
|
%48 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %47
|
|
%49 = OpLoad %v2uint %48
|
|
%52 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_1
|
|
%54 = OpLoad %uint %52
|
|
%55 = OpIAdd %uint %54 %uint_1
|
|
%51 = OpAccessChain %_ptr_UniformConstant_15 %18 %55
|
|
%56 = OpLoad %15 %51
|
|
%57 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %55
|
|
%58 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %57
|
|
%59 = OpLoad %v2uint %58
|
|
%64 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
|
|
%65 = OpLoad %uint %64
|
|
%66 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_1
|
|
%67 = OpLoad %uint %66
|
|
%68 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_2
|
|
%69 = OpLoad %uint %68
|
|
%70 = OpIAdd %uint %65 %uint_4
|
|
%71 = OpCompositeExtract %uint %49 0
|
|
%72 = OpCompositeExtract %uint %49 1
|
|
%73 = OpIAdd %uint %70 %71
|
|
%75 = OpULessThan %bool %70 %72
|
|
%76 = OpSelect %uint %75 %73 %uint_4294967295
|
|
%79 = OpImageRead %v4float %46 %76
|
|
%80 = OpCompositeExtract %float %79 0
|
|
%81 = OpCompositeExtract %float %79 1
|
|
%82 = OpCompositeExtract %float %79 2
|
|
%83 = OpCompositeExtract %float %79 3
|
|
%84 = OpIAdd %uint %65 %uint_1024
|
|
%86 = OpCompositeExtract %uint %49 0
|
|
%87 = OpCompositeExtract %uint %49 1
|
|
%88 = OpIAdd %uint %84 %86
|
|
%89 = OpULessThan %bool %84 %87
|
|
%90 = OpSelect %uint %89 %88 %uint_4294967295
|
|
%91 = OpCompositeConstruct %v4float %80 %81 %82 %83
|
|
OpImageWrite %46 %90 %91
|
|
%92 = OpIAdd %uint %65 %uint_2
|
|
%93 = OpCompositeExtract %uint %59 0
|
|
%94 = OpCompositeExtract %uint %59 1
|
|
%95 = OpIAdd %uint %92 %93
|
|
%96 = OpULessThan %bool %92 %94
|
|
%97 = OpSelect %uint %96 %95 %uint_4294967295
|
|
%98 = OpImageFetch %v4float %56 %97
|
|
%99 = OpCompositeExtract %float %98 0
|
|
%100 = OpCompositeExtract %float %98 1
|
|
%101 = OpCompositeExtract %float %98 2
|
|
%102 = OpCompositeExtract %float %98 3
|
|
%103 = OpIAdd %uint %65 %uint_2048
|
|
%105 = OpCompositeExtract %uint %49 0
|
|
%106 = OpCompositeExtract %uint %49 1
|
|
%107 = OpIAdd %uint %103 %105
|
|
%108 = OpULessThan %bool %103 %106
|
|
%109 = OpSelect %uint %108 %107 %uint_4294967295
|
|
%110 = OpCompositeConstruct %v4float %99 %100 %101 %102
|
|
OpImageWrite %46 %109 %110
|
|
%111 = OpCompositeExtract %uint %41 0
|
|
%112 = OpCompositeExtract %uint %41 1
|
|
%113 = OpIAdd %uint %65 %111
|
|
%114 = OpULessThan %bool %65 %112
|
|
%115 = OpSelect %uint %114 %113 %uint_4294967295
|
|
%117 = OpImageTexelPointer %_ptr_Image_uint %28 %115 %uint_0
|
|
%118 = OpAtomicIAdd %uint %117 %uint_1 %uint_0 %uint_40
|
|
%120 = OpCompositeExtract %uint %41 0
|
|
%121 = OpCompositeExtract %uint %41 1
|
|
%122 = OpIAdd %uint %67 %120
|
|
%123 = OpULessThan %bool %67 %121
|
|
%124 = OpSelect %uint %123 %122 %uint_4294967295
|
|
%125 = OpImageTexelPointer %_ptr_Image_uint %28 %124 %uint_0
|
|
%126 = OpAtomicCompareExchange %uint %125 %uint_1 %uint_0 %uint_0 %uint_50 %uint_40
|
|
%128 = OpCompositeExtract %uint %49 1
|
|
%129 = OpConvertUToF %float %128
|
|
%130 = OpCompositeExtract %uint %49 0
|
|
%131 = OpCompositeExtract %uint %49 1
|
|
%132 = OpIAdd %uint %uint_0 %130
|
|
%133 = OpULessThan %bool %uint_0 %131
|
|
%134 = OpSelect %uint %133 %132 %uint_4294967295
|
|
%135 = OpCompositeConstruct %v4float %129 %129 %129 %129
|
|
OpImageWrite %46 %134 %135
|
|
%136 = OpCompositeExtract %uint %59 1
|
|
%137 = OpConvertUToF %float %136
|
|
%138 = OpCompositeExtract %uint %49 0
|
|
%139 = OpCompositeExtract %uint %49 1
|
|
%140 = OpIAdd %uint %uint_1 %138
|
|
%141 = OpULessThan %bool %uint_1 %139
|
|
%142 = OpSelect %uint %141 %140 %uint_4294967295
|
|
%143 = OpCompositeConstruct %v4float %137 %137 %137 %137
|
|
OpImageWrite %46 %142 %143
|
|
%144 = OpIAdd %uint %69 %uint_0
|
|
%146 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4
|
|
%147 = OpLoad %uint %146
|
|
%148 = OpIAdd %uint %147 %144
|
|
%145 = OpAccessChain %_ptr_UniformConstant_19 %22 %148
|
|
%149 = OpLoad %19 %145
|
|
%150 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %148
|
|
%151 = OpLoad %v2uint %150
|
|
%152 = OpCompositeExtract %uint %151 0
|
|
%153 = OpCompositeExtract %uint %151 1
|
|
%154 = OpIAdd %uint %70 %152
|
|
%155 = OpULessThan %bool %70 %153
|
|
%156 = OpSelect %uint %155 %154 %uint_4294967295
|
|
%157 = OpImageRead %v4float %149 %156
|
|
%158 = OpCompositeExtract %float %157 0
|
|
%159 = OpCompositeExtract %float %157 1
|
|
%160 = OpCompositeExtract %float %157 2
|
|
%161 = OpCompositeExtract %float %157 3
|
|
%162 = OpCompositeExtract %uint %151 0
|
|
%163 = OpCompositeExtract %uint %151 1
|
|
%164 = OpIAdd %uint %84 %162
|
|
%165 = OpULessThan %bool %84 %163
|
|
%166 = OpSelect %uint %165 %164 %uint_4294967295
|
|
%167 = OpCompositeConstruct %v4float %158 %159 %160 %161
|
|
OpImageWrite %149 %166 %167
|
|
%168 = OpIAdd %uint %69 %uint_0
|
|
%170 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_1
|
|
%171 = OpLoad %uint %170
|
|
%172 = OpIAdd %uint %171 %168
|
|
%169 = OpAccessChain %_ptr_UniformConstant_15 %18 %172
|
|
%173 = OpLoad %15 %169
|
|
%174 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %172
|
|
%175 = OpLoad %v2uint %174
|
|
%176 = OpCompositeExtract %uint %175 0
|
|
%177 = OpCompositeExtract %uint %175 1
|
|
%178 = OpIAdd %uint %70 %176
|
|
%179 = OpULessThan %bool %70 %177
|
|
%180 = OpSelect %uint %179 %178 %uint_4294967295
|
|
%181 = OpImageFetch %v4float %173 %180
|
|
%182 = OpCompositeExtract %float %181 0
|
|
%183 = OpCompositeExtract %float %181 1
|
|
%184 = OpCompositeExtract %float %181 2
|
|
%185 = OpCompositeExtract %float %181 3
|
|
%186 = OpCompositeExtract %uint %151 0
|
|
%187 = OpCompositeExtract %uint %151 1
|
|
%188 = OpIAdd %uint %103 %186
|
|
%189 = OpULessThan %bool %103 %187
|
|
%190 = OpSelect %uint %189 %188 %uint_4294967295
|
|
%191 = OpCompositeConstruct %v4float %182 %183 %184 %185
|
|
OpImageWrite %149 %190 %191
|
|
%192 = OpIAdd %uint %69 %uint_0
|
|
%194 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4
|
|
%195 = OpLoad %uint %194
|
|
%196 = OpIAdd %uint %195 %192
|
|
%193 = OpAccessChain %_ptr_UniformConstant_23 %26 %196
|
|
%197 = OpLoad %23 %193
|
|
%198 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %196
|
|
%199 = OpLoad %v2uint %198
|
|
%200 = OpCompositeExtract %uint %199 0
|
|
%201 = OpCompositeExtract %uint %199 1
|
|
%202 = OpIAdd %uint %67 %200
|
|
%203 = OpULessThan %bool %67 %201
|
|
%204 = OpSelect %uint %203 %202 %uint_4294967295
|
|
%205 = OpImageTexelPointer %_ptr_Image_uint %193 %204 %uint_0
|
|
%206 = OpAtomicIAdd %uint %205 %uint_1 %uint_0 %uint_40
|
|
%207 = OpCompositeExtract %uint %199 0
|
|
%208 = OpCompositeExtract %uint %199 1
|
|
%209 = OpIAdd %uint %67 %207
|
|
%210 = OpULessThan %bool %67 %208
|
|
%211 = OpSelect %uint %210 %209 %uint_4294967295
|
|
%212 = OpImageTexelPointer %_ptr_Image_uint %193 %211 %uint_0
|
|
%213 = OpAtomicCompareExchange %uint %212 %uint_1 %uint_0 %uint_0 %uint_70 %uint_40
|
|
%215 = OpCompositeExtract %uint %151 1
|
|
%216 = OpConvertUToF %float %215
|
|
%217 = OpCompositeExtract %uint %49 0
|
|
%218 = OpCompositeExtract %uint %49 1
|
|
%219 = OpIAdd %uint %uint_2 %217
|
|
%220 = OpULessThan %bool %uint_2 %218
|
|
%221 = OpSelect %uint %220 %219 %uint_4294967295
|
|
%222 = OpCompositeConstruct %v4float %216 %216 %216 %216
|
|
OpImageWrite %46 %221 %222
|
|
%223 = OpCompositeExtract %uint %175 1
|
|
%224 = OpConvertUToF %float %223
|
|
%225 = OpCompositeExtract %uint %49 0
|
|
%226 = OpCompositeExtract %uint %49 1
|
|
%227 = OpIAdd %uint %uint_3 %225
|
|
%228 = OpULessThan %bool %uint_3 %226
|
|
%229 = OpSelect %uint %228 %227 %uint_4294967295
|
|
%230 = OpCompositeConstruct %v4float %224 %224 %224 %224
|
|
OpImageWrite %46 %229 %230
|
|
OpReturn
|
|
OpFunctionEnd
|