| ; SPIR-V |
| ; Version: 1.3 |
| ; Generator: Google Tint Compiler; 1 |
| ; Bound: 206 |
| ; Schema: 0 |
| OpCapability Shader |
| OpCapability ImageQuery |
| %27 = OpExtInstImport "GLSL.std.450" |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint GLCompute %main "main" %main_global_invocation_id_Input |
| OpExecutionMode %main LocalSize 1 1 1 |
| OpName %src "src" |
| OpName %dst "dst" |
| OpMemberName %OutputBuf 0 "result" |
| OpName %OutputBuf "OutputBuf" |
| OpName %output "output" |
| OpMemberName %Uniforms 0 "dstTextureFlipY" |
| OpMemberName %Uniforms 1 "channelCount" |
| OpMemberName %Uniforms 2 "srcCopyOrigin" |
| OpMemberName %Uniforms 3 "dstCopyOrigin" |
| OpMemberName %Uniforms 4 "copySize" |
| OpName %Uniforms "Uniforms" |
| OpMemberName %uniforms_block 0 "inner" |
| OpName %uniforms_block "uniforms_block" |
| OpName %main_global_invocation_id_Input "main_global_invocation_id_Input" |
| OpName %aboutEqual "aboutEqual" |
| OpName %value "value" |
| OpName %expect "expect" |
| OpName %main_inner "main_inner" |
| OpName %GlobalInvocationID "GlobalInvocationID" |
| OpName %srcSize "srcSize" |
| OpName %dstSize "dstSize" |
| OpName %dstTexCoord "dstTexCoord" |
| OpName %nonCoveredColor "nonCoveredColor" |
| OpName %success "success" |
| OpName %srcTexCoord "srcTexCoord" |
| OpName %srcColor "srcColor" |
| OpName %dstColor "dstColor" |
| OpName %outputIndex "outputIndex" |
| OpName %main "main" |
| OpDecorate %src DescriptorSet 0 |
| OpDecorate %src Binding 0 |
| OpDecorate %dst DescriptorSet 0 |
| OpDecorate %dst Binding 1 |
| OpDecorate %_runtimearr_uint ArrayStride 4 |
| OpMemberDecorate %OutputBuf 0 Offset 0 |
| OpDecorate %OutputBuf Block |
| OpDecorate %output DescriptorSet 0 |
| OpDecorate %output Binding 2 |
| OpDecorate %output Coherent |
| OpMemberDecorate %Uniforms 0 Offset 0 |
| OpMemberDecorate %Uniforms 1 Offset 4 |
| OpMemberDecorate %Uniforms 2 Offset 8 |
| OpMemberDecorate %Uniforms 3 Offset 16 |
| OpMemberDecorate %Uniforms 4 Offset 24 |
| OpMemberDecorate %uniforms_block 0 Offset 0 |
| OpDecorate %uniforms_block Block |
| OpDecorate %11 DescriptorSet 0 |
| OpDecorate %11 Binding 3 |
| OpDecorate %11 NonWritable |
| OpDecorate %main_global_invocation_id_Input BuiltIn GlobalInvocationId |
| %float = OpTypeFloat 32 |
| %3 = OpTypeImage %float 2D 0 0 0 1 Unknown |
| %_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 |
| %src = OpVariable %_ptr_UniformConstant_3 UniformConstant |
| %dst = OpVariable %_ptr_UniformConstant_3 UniformConstant |
| %uint = OpTypeInt 32 0 |
| %_runtimearr_uint = OpTypeRuntimeArray %uint |
| %OutputBuf = OpTypeStruct %_runtimearr_uint |
| %_ptr_StorageBuffer_OutputBuf = OpTypePointer StorageBuffer %OutputBuf |
| %output = OpVariable %_ptr_StorageBuffer_OutputBuf StorageBuffer |
| %v2uint = OpTypeVector %uint 2 |
| %Uniforms = OpTypeStruct %uint %uint %v2uint %v2uint %v2uint |
| %uniforms_block = OpTypeStruct %Uniforms |
| %_ptr_Uniform_uniforms_block = OpTypePointer Uniform %uniforms_block |
| %11 = OpVariable %_ptr_Uniform_uniforms_block Uniform |
| %v3uint = OpTypeVector %uint 3 |
| %_ptr_Input_v3uint = OpTypePointer Input %v3uint |
| %main_global_invocation_id_Input = OpVariable %_ptr_Input_v3uint Input |
| %bool = OpTypeBool |
| %23 = OpTypeFunction %bool %float %float |
| %float_0_00100000005 = OpConstant %float 0.00100000005 |
| %void = OpTypeVoid |
| %33 = OpTypeFunction %void %v3uint |
| %uint_0 = OpConstant %uint 0 |
| %v4float = OpTypeVector %float 4 |
| %float_0 = OpConstant %float 0 |
| %float_1 = OpConstant %float 1 |
| %nonCoveredColor = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1 |
| %_ptr_Function_bool = OpTypePointer Function %bool |
| %true = OpConstantTrue %bool |
| %_ptr_Uniform_v2uint = OpTypePointer Uniform %v2uint |
| %uint_3 = OpConstant %uint 3 |
| %_ptr_Uniform_uint = OpTypePointer Uniform %uint |
| %uint_1 = OpConstant %uint 1 |
| %uint_4 = OpConstant %uint 4 |
| %int = OpTypeInt 32 1 |
| %v2int = OpTypeVector %int 2 |
| %int_0 = OpConstant %int 0 |
| %v4bool = OpTypeVector %bool 4 |
| %false = OpConstantFalse %bool |
| %uint_2 = OpConstant %uint 2 |
| %_ptr_Function_v2uint = OpTypePointer Function %v2uint |
| %_ptr_Function_uint = OpTypePointer Function %uint |
| %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint |
| %202 = OpTypeFunction %void |
| %aboutEqual = OpFunction %bool None %23 |
| %value = OpFunctionParameter %float |
| %expect = OpFunctionParameter %float |
| %24 = OpLabel |
| %25 = OpFSub %float %value %expect |
| %26 = OpExtInst %float %27 FAbs %25 |
| %28 = OpFOrdLessThan %bool %26 %float_0_00100000005 |
| OpReturnValue %28 |
| OpFunctionEnd |
| %main_inner = OpFunction %void None %33 |
| %GlobalInvocationID = OpFunctionParameter %v3uint |
| %34 = OpLabel |
| %success = OpVariable %_ptr_Function_bool Function |
| %srcTexCoord = OpVariable %_ptr_Function_v2uint Function |
| %35 = OpLoad %3 %src None |
| %srcSize = OpImageQuerySizeLod %v2uint %35 %uint_0 |
| %38 = OpLoad %3 %dst None |
| %dstSize = OpImageQuerySizeLod %v2uint %38 %uint_0 |
| %dstTexCoord = OpVectorShuffle %v2uint %GlobalInvocationID %GlobalInvocationID 0 1 |
| OpStore %success %true |
| %48 = OpCompositeExtract %uint %dstTexCoord 0 |
| %49 = OpAccessChain %_ptr_Uniform_v2uint %11 %uint_0 %uint_3 |
| %52 = OpAccessChain %_ptr_Uniform_uint %49 %uint_0 |
| %54 = OpLoad %uint %52 None |
| %55 = OpULessThan %bool %48 %54 |
| OpSelectionMerge %56 None |
| OpBranchConditional %55 %57 %58 |
| %57 = OpLabel |
| OpBranch %56 |
| %58 = OpLabel |
| %59 = OpCompositeExtract %uint %dstTexCoord 1 |
| %60 = OpAccessChain %_ptr_Uniform_v2uint %11 %uint_0 %uint_3 |
| %61 = OpAccessChain %_ptr_Uniform_uint %60 %uint_1 |
| %63 = OpLoad %uint %61 None |
| %64 = OpULessThan %bool %59 %63 |
| OpBranch %56 |
| %56 = OpLabel |
| %65 = OpPhi %bool %true %57 %64 %58 |
| OpSelectionMerge %66 None |
| OpBranchConditional %65 %67 %68 |
| %67 = OpLabel |
| OpBranch %66 |
| %68 = OpLabel |
| %69 = OpCompositeExtract %uint %dstTexCoord 0 |
| %70 = OpAccessChain %_ptr_Uniform_v2uint %11 %uint_0 %uint_3 |
| %71 = OpAccessChain %_ptr_Uniform_uint %70 %uint_0 |
| %72 = OpLoad %uint %71 None |
| %73 = OpAccessChain %_ptr_Uniform_v2uint %11 %uint_0 %uint_4 |
| %75 = OpAccessChain %_ptr_Uniform_uint %73 %uint_0 |
| %76 = OpLoad %uint %75 None |
| %77 = OpIAdd %uint %72 %76 |
| %78 = OpUGreaterThanEqual %bool %69 %77 |
| OpBranch %66 |
| %66 = OpLabel |
| %79 = OpPhi %bool %true %67 %78 %68 |
| OpSelectionMerge %80 None |
| OpBranchConditional %79 %81 %82 |
| %81 = OpLabel |
| OpBranch %80 |
| %82 = OpLabel |
| %83 = OpCompositeExtract %uint %dstTexCoord 1 |
| %84 = OpAccessChain %_ptr_Uniform_v2uint %11 %uint_0 %uint_3 |
| %85 = OpAccessChain %_ptr_Uniform_uint %84 %uint_1 |
| %86 = OpLoad %uint %85 None |
| %87 = OpAccessChain %_ptr_Uniform_v2uint %11 %uint_0 %uint_4 |
| %88 = OpAccessChain %_ptr_Uniform_uint %87 %uint_1 |
| %89 = OpLoad %uint %88 None |
| %90 = OpIAdd %uint %86 %89 |
| %91 = OpUGreaterThanEqual %bool %83 %90 |
| OpBranch %80 |
| %80 = OpLabel |
| %92 = OpPhi %bool %true %81 %91 %82 |
| OpSelectionMerge %93 None |
| OpBranchConditional %92 %94 %95 |
| %94 = OpLabel |
| %96 = OpLoad %bool %success None |
| OpSelectionMerge %97 None |
| OpBranchConditional %96 %98 %99 |
| %98 = OpLabel |
| %100 = OpLoad %3 %dst None |
| %103 = OpBitcast %v2int %dstTexCoord |
| %104 = OpImageFetch %v4float %100 %103 Lod %int_0 |
| %106 = OpFOrdEqual %v4bool %104 %nonCoveredColor |
| %108 = OpAll %bool %106 |
| OpBranch %97 |
| %99 = OpLabel |
| OpBranch %97 |
| %97 = OpLabel |
| %109 = OpPhi %bool %108 %98 %false %99 |
| OpStore %success %109 None |
| OpBranch %93 |
| %95 = OpLabel |
| %111 = OpAccessChain %_ptr_Uniform_v2uint %11 %uint_0 %uint_3 |
| %112 = OpLoad %v2uint %111 None |
| %113 = OpISub %v2uint %dstTexCoord %112 |
| %114 = OpAccessChain %_ptr_Uniform_v2uint %11 %uint_0 %uint_2 |
| %116 = OpLoad %v2uint %114 None |
| %117 = OpIAdd %v2uint %113 %116 |
| OpStore %srcTexCoord %117 |
| %120 = OpAccessChain %_ptr_Uniform_uint %11 %uint_0 %uint_0 |
| %121 = OpLoad %uint %120 None |
| %122 = OpIEqual %bool %121 %uint_1 |
| OpSelectionMerge %123 None |
| OpBranchConditional %122 %124 %123 |
| %124 = OpLabel |
| %125 = OpCompositeExtract %uint %srcSize 1 |
| %126 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1 |
| %128 = OpLoad %uint %126 None |
| %129 = OpISub %uint %125 %128 |
| %130 = OpISub %uint %129 %uint_1 |
| %131 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1 |
| OpStore %131 %130 None |
| OpBranch %123 |
| %123 = OpLabel |
| %132 = OpLoad %3 %src None |
| %133 = OpLoad %v2uint %srcTexCoord None |
| %134 = OpBitcast %v2int %133 |
| %srcColor = OpImageFetch %v4float %132 %134 Lod %int_0 |
| %136 = OpLoad %3 %dst None |
| %137 = OpBitcast %v2int %dstTexCoord |
| %dstColor = OpImageFetch %v4float %136 %137 Lod %int_0 |
| %139 = OpAccessChain %_ptr_Uniform_uint %11 %uint_0 %uint_1 |
| %140 = OpLoad %uint %139 None |
| %141 = OpIEqual %bool %140 %uint_2 |
| OpSelectionMerge %142 None |
| OpBranchConditional %141 %143 %144 |
| %143 = OpLabel |
| %145 = OpLoad %bool %success None |
| OpSelectionMerge %146 None |
| OpBranchConditional %145 %147 %148 |
| %147 = OpLabel |
| %149 = OpCompositeExtract %float %dstColor 0 |
| %150 = OpCompositeExtract %float %srcColor 0 |
| %151 = OpFunctionCall %bool %aboutEqual %149 %150 |
| OpBranch %146 |
| %148 = OpLabel |
| OpBranch %146 |
| %146 = OpLabel |
| %152 = OpPhi %bool %151 %147 %false %148 |
| OpSelectionMerge %153 None |
| OpBranchConditional %152 %154 %155 |
| %154 = OpLabel |
| %156 = OpCompositeExtract %float %dstColor 1 |
| %157 = OpCompositeExtract %float %srcColor 1 |
| %158 = OpFunctionCall %bool %aboutEqual %156 %157 |
| OpBranch %153 |
| %155 = OpLabel |
| OpBranch %153 |
| %153 = OpLabel |
| %159 = OpPhi %bool %158 %154 %false %155 |
| OpStore %success %159 None |
| OpBranch %142 |
| %144 = OpLabel |
| %160 = OpLoad %bool %success None |
| OpSelectionMerge %161 None |
| OpBranchConditional %160 %162 %163 |
| %162 = OpLabel |
| %164 = OpCompositeExtract %float %dstColor 0 |
| %165 = OpCompositeExtract %float %srcColor 0 |
| %166 = OpFunctionCall %bool %aboutEqual %164 %165 |
| OpBranch %161 |
| %163 = OpLabel |
| OpBranch %161 |
| %161 = OpLabel |
| %167 = OpPhi %bool %166 %162 %false %163 |
| OpSelectionMerge %168 None |
| OpBranchConditional %167 %169 %170 |
| %169 = OpLabel |
| %171 = OpCompositeExtract %float %dstColor 1 |
| %172 = OpCompositeExtract %float %srcColor 1 |
| %173 = OpFunctionCall %bool %aboutEqual %171 %172 |
| OpBranch %168 |
| %170 = OpLabel |
| OpBranch %168 |
| %168 = OpLabel |
| %174 = OpPhi %bool %173 %169 %false %170 |
| OpSelectionMerge %175 None |
| OpBranchConditional %174 %176 %177 |
| %176 = OpLabel |
| %178 = OpCompositeExtract %float %dstColor 2 |
| %179 = OpCompositeExtract %float %srcColor 2 |
| %180 = OpFunctionCall %bool %aboutEqual %178 %179 |
| OpBranch %175 |
| %177 = OpLabel |
| OpBranch %175 |
| %175 = OpLabel |
| %181 = OpPhi %bool %180 %176 %false %177 |
| OpSelectionMerge %182 None |
| OpBranchConditional %181 %183 %184 |
| %183 = OpLabel |
| %185 = OpCompositeExtract %float %dstColor 3 |
| %186 = OpCompositeExtract %float %srcColor 3 |
| %187 = OpFunctionCall %bool %aboutEqual %185 %186 |
| OpBranch %182 |
| %184 = OpLabel |
| OpBranch %182 |
| %182 = OpLabel |
| %188 = OpPhi %bool %187 %183 %false %184 |
| OpStore %success %188 None |
| OpBranch %142 |
| %142 = OpLabel |
| OpBranch %93 |
| %93 = OpLabel |
| %189 = OpCompositeExtract %uint %GlobalInvocationID 1 |
| %190 = OpCompositeExtract %uint %dstSize 0 |
| %191 = OpIMul %uint %189 %190 |
| %192 = OpCompositeExtract %uint %GlobalInvocationID 0 |
| %outputIndex = OpIAdd %uint %191 %192 |
| %194 = OpLoad %bool %success None |
| OpSelectionMerge %195 None |
| OpBranchConditional %194 %196 %197 |
| %196 = OpLabel |
| %198 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %outputIndex |
| OpStore %198 %uint_1 None |
| OpBranch %195 |
| %197 = OpLabel |
| %200 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %outputIndex |
| OpStore %200 %uint_0 None |
| OpBranch %195 |
| %195 = OpLabel |
| OpReturn |
| OpFunctionEnd |
| %main = OpFunction %void None %202 |
| %203 = OpLabel |
| %204 = OpLoad %v3uint %main_global_invocation_id_Input None |
| %205 = OpFunctionCall %void %main_inner %204 |
| OpReturn |
| OpFunctionEnd |