375 lines
15 KiB
Plaintext
375 lines
15 KiB
Plaintext
|
; SPIR-V
|
||
|
; Version: 1.3
|
||
|
; Generator: Google Tint Compiler; 0
|
||
|
; Bound: 239
|
||
|
; Schema: 0
|
||
|
OpCapability Shader
|
||
|
OpCapability ImageQuery
|
||
|
OpMemoryModel Logical GLSL450
|
||
|
OpEntryPoint GLCompute %main "main" %tint_symbol_2 %tint_symbol %tint_symbol_1
|
||
|
OpExecutionMode %main LocalSize 64 1 1
|
||
|
OpName %samp "samp"
|
||
|
OpName %Params "Params"
|
||
|
OpMemberName %Params 0 "filterDim"
|
||
|
OpMemberName %Params 1 "blockDim"
|
||
|
OpName %params "params"
|
||
|
OpName %inputTex "inputTex"
|
||
|
OpName %outputTex "outputTex"
|
||
|
OpName %Flip "Flip"
|
||
|
OpMemberName %Flip 0 "value"
|
||
|
OpName %flip "flip"
|
||
|
OpName %tile "tile"
|
||
|
OpName %tint_symbol "tint_symbol"
|
||
|
OpName %tint_symbol_1 "tint_symbol_1"
|
||
|
OpName %tint_symbol_2 "tint_symbol_2"
|
||
|
OpName %main "main"
|
||
|
OpName %r "r"
|
||
|
OpName %c "c"
|
||
|
OpName %loadIndex "loadIndex"
|
||
|
OpName %r_0 "r"
|
||
|
OpName %c_0 "c"
|
||
|
OpName %writeIndex "writeIndex"
|
||
|
OpName %acc "acc"
|
||
|
OpName %f "f"
|
||
|
OpName %i "i"
|
||
|
OpDecorate %samp DescriptorSet 0
|
||
|
OpDecorate %samp Binding 0
|
||
|
OpDecorate %Params Block
|
||
|
OpMemberDecorate %Params 0 Offset 0
|
||
|
OpMemberDecorate %Params 1 Offset 4
|
||
|
OpDecorate %params NonWritable
|
||
|
OpDecorate %params DescriptorSet 0
|
||
|
OpDecorate %params Binding 1
|
||
|
OpDecorate %inputTex DescriptorSet 1
|
||
|
OpDecorate %inputTex Binding 1
|
||
|
OpDecorate %outputTex NonReadable
|
||
|
OpDecorate %outputTex DescriptorSet 1
|
||
|
OpDecorate %outputTex Binding 2
|
||
|
OpDecorate %Flip Block
|
||
|
OpMemberDecorate %Flip 0 Offset 0
|
||
|
OpDecorate %flip NonWritable
|
||
|
OpDecorate %flip DescriptorSet 1
|
||
|
OpDecorate %flip Binding 3
|
||
|
OpDecorate %_arr_v3float_uint_256 ArrayStride 16
|
||
|
OpDecorate %_arr__arr_v3float_uint_256_uint_4 ArrayStride 4096
|
||
|
OpDecorate %tint_symbol BuiltIn WorkgroupId
|
||
|
OpDecorate %tint_symbol_1 BuiltIn LocalInvocationId
|
||
|
OpDecorate %tint_symbol_2 BuiltIn LocalInvocationIndex
|
||
|
%3 = OpTypeSampler
|
||
|
%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3
|
||
|
%samp = OpVariable %_ptr_UniformConstant_3 UniformConstant
|
||
|
%uint = OpTypeInt 32 0
|
||
|
%Params = OpTypeStruct %uint %uint
|
||
|
%_ptr_Uniform_Params = OpTypePointer Uniform %Params
|
||
|
%params = OpVariable %_ptr_Uniform_Params Uniform
|
||
|
%float = OpTypeFloat 32
|
||
|
%10 = OpTypeImage %float 2D 0 0 0 1 Unknown
|
||
|
%_ptr_UniformConstant_10 = OpTypePointer UniformConstant %10
|
||
|
%inputTex = OpVariable %_ptr_UniformConstant_10 UniformConstant
|
||
|
%14 = OpTypeImage %float 2D 0 0 0 2 Rgba8
|
||
|
%_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14
|
||
|
%outputTex = OpVariable %_ptr_UniformConstant_14 UniformConstant
|
||
|
%Flip = OpTypeStruct %uint
|
||
|
%_ptr_Uniform_Flip = OpTypePointer Uniform %Flip
|
||
|
%flip = OpVariable %_ptr_Uniform_Flip Uniform
|
||
|
%v3float = OpTypeVector %float 3
|
||
|
%uint_256 = OpConstant %uint 256
|
||
|
%_arr_v3float_uint_256 = OpTypeArray %v3float %uint_256
|
||
|
%uint_4 = OpConstant %uint 4
|
||
|
%_arr__arr_v3float_uint_256_uint_4 = OpTypeArray %_arr_v3float_uint_256 %uint_4
|
||
|
%_ptr_Workgroup__arr__arr_v3float_uint_256_uint_4 = OpTypePointer Workgroup %_arr__arr_v3float_uint_256_uint_4
|
||
|
%tile = OpVariable %_ptr_Workgroup__arr__arr_v3float_uint_256_uint_4 Workgroup
|
||
|
%v3uint = OpTypeVector %uint 3
|
||
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
||
|
%tint_symbol = OpVariable %_ptr_Input_v3uint Input
|
||
|
%tint_symbol_1 = OpVariable %_ptr_Input_v3uint Input
|
||
|
%_ptr_Input_uint = OpTypePointer Input %uint
|
||
|
%tint_symbol_2 = OpVariable %_ptr_Input_uint Input
|
||
|
%void = OpTypeVoid
|
||
|
%31 = OpTypeFunction %void
|
||
|
%uint_0 = OpConstant %uint 0
|
||
|
%bool = OpTypeBool
|
||
|
%41 = OpConstantNull %_arr__arr_v3float_uint_256_uint_4
|
||
|
%uint_2 = OpConstant %uint 2
|
||
|
%uint_264 = OpConstant %uint 264
|
||
|
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
||
|
%uint_1 = OpConstant %uint 1
|
||
|
%int = OpTypeInt 32 1
|
||
|
%v2int = OpTypeVector %int 2
|
||
|
%int_0 = OpConstant %int 0
|
||
|
%v2uint = OpTypeVector %uint 2
|
||
|
%66 = OpConstantComposite %v2uint %uint_4 %uint_1
|
||
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||
|
%74 = OpConstantNull %uint
|
||
|
%_ptr_Function_v2int = OpTypePointer Function %v2int
|
||
|
%102 = OpConstantNull %v2int
|
||
|
%_ptr_Workgroup_v3float = OpTypePointer Workgroup %v3float
|
||
|
%v4float = OpTypeVector %float 4
|
||
|
%122 = OpTypeSampledImage %10
|
||
|
%v2float = OpTypeVector %float 2
|
||
|
%float_0_25 = OpConstant %float 0.25
|
||
|
%128 = OpConstantComposite %v2float %float_0_25 %float_0_25
|
||
|
%float_0 = OpConstant %float 0
|
||
|
%v2bool = OpTypeVector %bool 2
|
||
|
%193 = OpConstantComposite %v3float %float_0 %float_0 %float_0
|
||
|
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
||
|
%196 = OpConstantNull %v3float
|
||
|
%float_1 = OpConstant %float 1
|
||
|
%main = OpFunction %void None %31
|
||
|
%34 = OpLabel
|
||
|
%r = OpVariable %_ptr_Function_uint Function %74
|
||
|
%c = OpVariable %_ptr_Function_uint Function %74
|
||
|
%loadIndex = OpVariable %_ptr_Function_v2int Function %102
|
||
|
%r_0 = OpVariable %_ptr_Function_uint Function %74
|
||
|
%c_0 = OpVariable %_ptr_Function_uint Function %74
|
||
|
%writeIndex = OpVariable %_ptr_Function_v2int Function %102
|
||
|
%acc = OpVariable %_ptr_Function_v3float Function %196
|
||
|
%f = OpVariable %_ptr_Function_uint Function %74
|
||
|
%i = OpVariable %_ptr_Function_uint Function %74
|
||
|
%35 = OpLoad %uint %tint_symbol_2
|
||
|
%37 = OpIEqual %bool %35 %uint_0
|
||
|
OpSelectionMerge %39 None
|
||
|
OpBranchConditional %37 %40 %39
|
||
|
%40 = OpLabel
|
||
|
OpStore %tile %41
|
||
|
OpBranch %39
|
||
|
%39 = OpLabel
|
||
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||
|
%46 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
|
||
|
%47 = OpLoad %uint %46
|
||
|
%49 = OpISub %uint %47 %uint_1
|
||
|
%50 = OpUDiv %uint %49 %uint_2
|
||
|
%54 = OpLoad %10 %inputTex
|
||
|
%51 = OpImageQuerySizeLod %v2int %54 %int_0
|
||
|
%58 = OpLoad %v3uint %tint_symbol
|
||
|
%59 = OpVectorShuffle %v2uint %58 %58 0 1
|
||
|
%60 = OpAccessChain %_ptr_Uniform_uint %params %uint_1
|
||
|
%61 = OpLoad %uint %60
|
||
|
%62 = OpCompositeConstruct %v2uint %61 %uint_4
|
||
|
%63 = OpIMul %v2uint %59 %62
|
||
|
%64 = OpLoad %v3uint %tint_symbol_1
|
||
|
%65 = OpVectorShuffle %v2uint %64 %64 0 1
|
||
|
%67 = OpIMul %v2uint %65 %66
|
||
|
%68 = OpIAdd %v2uint %63 %67
|
||
|
%56 = OpBitcast %v2int %68
|
||
|
%69 = OpBitcast %int %50
|
||
|
%70 = OpCompositeConstruct %v2int %69 %int_0
|
||
|
%71 = OpISub %v2int %56 %70
|
||
|
OpStore %r %uint_0
|
||
|
OpBranch %75
|
||
|
%75 = OpLabel
|
||
|
OpLoopMerge %76 %77 None
|
||
|
OpBranch %78
|
||
|
%78 = OpLabel
|
||
|
%80 = OpLoad %uint %r
|
||
|
%81 = OpULessThan %bool %80 %uint_4
|
||
|
%79 = OpLogicalNot %bool %81
|
||
|
OpSelectionMerge %82 None
|
||
|
OpBranchConditional %79 %83 %82
|
||
|
%83 = OpLabel
|
||
|
OpBranch %76
|
||
|
%82 = OpLabel
|
||
|
OpStore %c %uint_0
|
||
|
OpBranch %85
|
||
|
%85 = OpLabel
|
||
|
OpLoopMerge %86 %87 None
|
||
|
OpBranch %88
|
||
|
%88 = OpLabel
|
||
|
%90 = OpLoad %uint %c
|
||
|
%91 = OpULessThan %bool %90 %uint_4
|
||
|
%89 = OpLogicalNot %bool %91
|
||
|
OpSelectionMerge %92 None
|
||
|
OpBranchConditional %89 %93 %92
|
||
|
%93 = OpLabel
|
||
|
OpBranch %86
|
||
|
%92 = OpLabel
|
||
|
%95 = OpLoad %uint %c
|
||
|
%94 = OpBitcast %int %95
|
||
|
%97 = OpLoad %uint %r
|
||
|
%96 = OpBitcast %int %97
|
||
|
%98 = OpCompositeConstruct %v2int %94 %96
|
||
|
%99 = OpIAdd %v2int %71 %98
|
||
|
OpStore %loadIndex %99
|
||
|
%103 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0
|
||
|
%104 = OpLoad %uint %103
|
||
|
%105 = OpINotEqual %bool %104 %uint_0
|
||
|
OpSelectionMerge %106 None
|
||
|
OpBranchConditional %105 %107 %106
|
||
|
%107 = OpLabel
|
||
|
%108 = OpLoad %v2int %loadIndex
|
||
|
%109 = OpVectorShuffle %v2int %108 %108 1 0
|
||
|
OpStore %loadIndex %109
|
||
|
OpBranch %106
|
||
|
%106 = OpLabel
|
||
|
%110 = OpLoad %uint %r
|
||
|
%111 = OpAccessChain %_ptr_Input_uint %tint_symbol_1 %uint_0
|
||
|
%112 = OpLoad %uint %111
|
||
|
%113 = OpIMul %uint %uint_4 %112
|
||
|
%114 = OpLoad %uint %c
|
||
|
%115 = OpIAdd %uint %113 %114
|
||
|
%117 = OpAccessChain %_ptr_Workgroup_v3float %tile %110 %115
|
||
|
%120 = OpLoad %3 %samp
|
||
|
%121 = OpLoad %10 %inputTex
|
||
|
%123 = OpSampledImage %122 %121 %120
|
||
|
%126 = OpLoad %v2int %loadIndex
|
||
|
%124 = OpConvertSToF %v2float %126
|
||
|
%129 = OpFAdd %v2float %124 %128
|
||
|
%130 = OpConvertSToF %v2float %51
|
||
|
%131 = OpFDiv %v2float %129 %130
|
||
|
%118 = OpImageSampleExplicitLod %v4float %123 %131 Lod %float_0
|
||
|
%133 = OpVectorShuffle %v3float %118 %118 0 1 2
|
||
|
OpStore %117 %133
|
||
|
OpBranch %87
|
||
|
%87 = OpLabel
|
||
|
%134 = OpLoad %uint %c
|
||
|
%135 = OpIAdd %uint %134 %uint_1
|
||
|
OpStore %c %135
|
||
|
OpBranch %85
|
||
|
%86 = OpLabel
|
||
|
OpBranch %77
|
||
|
%77 = OpLabel
|
||
|
%136 = OpLoad %uint %r
|
||
|
%137 = OpIAdd %uint %136 %uint_1
|
||
|
OpStore %r %137
|
||
|
OpBranch %75
|
||
|
%76 = OpLabel
|
||
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||
|
OpStore %r_0 %uint_0
|
||
|
OpBranch %140
|
||
|
%140 = OpLabel
|
||
|
OpLoopMerge %141 %142 None
|
||
|
OpBranch %143
|
||
|
%143 = OpLabel
|
||
|
%145 = OpLoad %uint %r_0
|
||
|
%146 = OpULessThan %bool %145 %uint_4
|
||
|
%144 = OpLogicalNot %bool %146
|
||
|
OpSelectionMerge %147 None
|
||
|
OpBranchConditional %144 %148 %147
|
||
|
%148 = OpLabel
|
||
|
OpBranch %141
|
||
|
%147 = OpLabel
|
||
|
OpStore %c_0 %uint_0
|
||
|
OpBranch %150
|
||
|
%150 = OpLabel
|
||
|
OpLoopMerge %151 %152 None
|
||
|
OpBranch %153
|
||
|
%153 = OpLabel
|
||
|
%155 = OpLoad %uint %c_0
|
||
|
%156 = OpULessThan %bool %155 %uint_4
|
||
|
%154 = OpLogicalNot %bool %156
|
||
|
OpSelectionMerge %157 None
|
||
|
OpBranchConditional %154 %158 %157
|
||
|
%158 = OpLabel
|
||
|
OpBranch %151
|
||
|
%157 = OpLabel
|
||
|
%160 = OpLoad %uint %c_0
|
||
|
%159 = OpBitcast %int %160
|
||
|
%162 = OpLoad %uint %r_0
|
||
|
%161 = OpBitcast %int %162
|
||
|
%163 = OpCompositeConstruct %v2int %159 %161
|
||
|
%164 = OpIAdd %v2int %71 %163
|
||
|
OpStore %writeIndex %164
|
||
|
%166 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0
|
||
|
%167 = OpLoad %uint %166
|
||
|
%168 = OpINotEqual %bool %167 %uint_0
|
||
|
OpSelectionMerge %169 None
|
||
|
OpBranchConditional %168 %170 %169
|
||
|
%170 = OpLabel
|
||
|
%171 = OpLoad %v2int %writeIndex
|
||
|
%172 = OpVectorShuffle %v2int %171 %171 1 0
|
||
|
OpStore %writeIndex %172
|
||
|
OpBranch %169
|
||
|
%169 = OpLabel
|
||
|
%173 = OpAccessChain %_ptr_Input_uint %tint_symbol_1 %uint_0
|
||
|
%174 = OpLoad %uint %173
|
||
|
%175 = OpIMul %uint %uint_4 %174
|
||
|
%176 = OpLoad %uint %c_0
|
||
|
%177 = OpIAdd %uint %175 %176
|
||
|
%178 = OpUGreaterThanEqual %bool %177 %50
|
||
|
OpSelectionMerge %179 None
|
||
|
OpBranchConditional %178 %180 %179
|
||
|
%180 = OpLabel
|
||
|
%181 = OpISub %uint %uint_256 %50
|
||
|
%182 = OpULessThan %bool %177 %181
|
||
|
OpBranch %179
|
||
|
%179 = OpLabel
|
||
|
%183 = OpPhi %bool %178 %169 %182 %180
|
||
|
OpSelectionMerge %184 None
|
||
|
OpBranchConditional %183 %185 %184
|
||
|
%185 = OpLabel
|
||
|
%187 = OpLoad %v2int %writeIndex
|
||
|
%188 = OpSLessThan %v2bool %187 %51
|
||
|
%186 = OpAll %bool %188
|
||
|
OpBranch %184
|
||
|
%184 = OpLabel
|
||
|
%190 = OpPhi %bool %183 %179 %186 %185
|
||
|
OpSelectionMerge %191 None
|
||
|
OpBranchConditional %190 %192 %191
|
||
|
%192 = OpLabel
|
||
|
OpStore %acc %193
|
||
|
OpStore %f %uint_0
|
||
|
OpBranch %198
|
||
|
%198 = OpLabel
|
||
|
OpLoopMerge %199 %200 None
|
||
|
OpBranch %201
|
||
|
%201 = OpLabel
|
||
|
%203 = OpLoad %uint %f
|
||
|
%204 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
|
||
|
%205 = OpLoad %uint %204
|
||
|
%206 = OpULessThan %bool %203 %205
|
||
|
%202 = OpLogicalNot %bool %206
|
||
|
OpSelectionMerge %207 None
|
||
|
OpBranchConditional %202 %208 %207
|
||
|
%208 = OpLabel
|
||
|
OpBranch %199
|
||
|
%207 = OpLabel
|
||
|
%209 = OpLoad %uint %f
|
||
|
%210 = OpIAdd %uint %177 %209
|
||
|
%211 = OpISub %uint %210 %50
|
||
|
OpStore %i %211
|
||
|
%213 = OpLoad %v3float %acc
|
||
|
%216 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
|
||
|
%217 = OpLoad %uint %216
|
||
|
%215 = OpConvertUToF %float %217
|
||
|
%218 = OpFDiv %float %float_1 %215
|
||
|
%219 = OpLoad %uint %r_0
|
||
|
%220 = OpLoad %uint %i
|
||
|
%221 = OpAccessChain %_ptr_Workgroup_v3float %tile %219 %220
|
||
|
%222 = OpLoad %v3float %221
|
||
|
%223 = OpVectorTimesScalar %v3float %222 %218
|
||
|
%224 = OpFAdd %v3float %213 %223
|
||
|
OpStore %acc %224
|
||
|
OpBranch %200
|
||
|
%200 = OpLabel
|
||
|
%225 = OpLoad %uint %f
|
||
|
%226 = OpIAdd %uint %225 %uint_1
|
||
|
OpStore %f %226
|
||
|
OpBranch %198
|
||
|
%199 = OpLabel
|
||
|
%228 = OpLoad %14 %outputTex
|
||
|
%229 = OpLoad %v2int %writeIndex
|
||
|
%230 = OpLoad %v3float %acc
|
||
|
%231 = OpCompositeExtract %float %230 0
|
||
|
%232 = OpCompositeExtract %float %230 1
|
||
|
%233 = OpCompositeExtract %float %230 2
|
||
|
%234 = OpCompositeConstruct %v4float %231 %232 %233 %float_1
|
||
|
OpImageWrite %228 %229 %234
|
||
|
OpBranch %191
|
||
|
%191 = OpLabel
|
||
|
OpBranch %152
|
||
|
%152 = OpLabel
|
||
|
%235 = OpLoad %uint %c_0
|
||
|
%236 = OpIAdd %uint %235 %uint_1
|
||
|
OpStore %c_0 %236
|
||
|
OpBranch %150
|
||
|
%151 = OpLabel
|
||
|
OpBranch %142
|
||
|
%142 = OpLabel
|
||
|
%237 = OpLoad %uint %r_0
|
||
|
%238 = OpIAdd %uint %237 %uint_1
|
||
|
OpStore %r_0 %238
|
||
|
OpBranch %140
|
||
|
%141 = OpLabel
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|