spv.tpipTextureArrays.frag
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 84

                              Capability Shader
                              Capability TextureBlockMatchQCOM
                              Extension  "SPV_QCOM_image_processing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 13 46
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_QCOM_image_processing"
                              Name 4  "main"
                              Name 9  "tgt_coords"
                              Name 13  "v_texcoord"
                              Name 26  "ref_coords"
                              Name 37  "blockSize"
                              Name 40  "ii"
                              Name 46  "fragColor"
                              Name 51  "samplers"
                              Name 60  "tex2D_srcs"
                              Name 67  "samp"
                              Decorate 13(v_texcoord) Location 0
                              Decorate 46(fragColor) Location 0
                              Decorate 51(samplers) DescriptorSet 0
                              Decorate 51(samplers) Binding 5
                              Decorate 60(tex2D_srcs) DescriptorSet 0
                              Decorate 60(tex2D_srcs) Binding 4
                              Decorate 67(samp) DescriptorSet 0
                              Decorate 67(samp) Binding 3
                              Decorate 55 DecorationBlockMatchTextureQCOM
                              Decorate 63 DecorationBlockMatchTextureQCOM
                              Decorate 74 DecorationBlockMatchTextureQCOM
                              Decorate 79 DecorationBlockMatchTextureQCOM
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 2
               8:             TypePointer Function 7(ivec2)
              10:             TypeFloat 32
              11:             TypeVector 10(float) 4
              12:             TypePointer Input 11(fvec4)
  13(v_texcoord):     12(ptr) Variable Input
              14:      6(int) Constant 0
              15:             TypePointer Input 10(float)
              19:             TypePointer Function 6(int)
              21:      6(int) Constant 1
              27:      6(int) Constant 2
              32:      6(int) Constant 3
              38:      6(int) Constant 4
              39:    7(ivec2) ConstantComposite 38 38
              43:      6(int) Constant 8
              45:             TypePointer Output 11(fvec4)
   46(fragColor):     45(ptr) Variable Output
              47:             TypeImage 10(float) 2D sampled format:Unknown
              48:             TypeSampledImage 47
              49:             TypeArray 48 32
              50:             TypePointer UniformConstant 49
    51(samplers):     50(ptr) Variable UniformConstant
              52:             TypeInt 32 1
              53:     52(int) Constant 0
              54:             TypePointer UniformConstant 48
              58:             TypeArray 47 43
              59:             TypePointer UniformConstant 58
  60(tex2D_srcs):     59(ptr) Variable UniformConstant
              62:             TypePointer UniformConstant 47
              65:             TypeSampler
              66:             TypePointer UniformConstant 65
        67(samp):     66(ptr) Variable UniformConstant
              73:     52(int) Constant 1
         4(main):           2 Function None 3
               5:             Label
   9(tgt_coords):      8(ptr) Variable Function
  26(ref_coords):      8(ptr) Variable Function
   37(blockSize):      8(ptr) Variable Function
          40(ii):     19(ptr) Variable Function
              16:     15(ptr) AccessChain 13(v_texcoord) 14
              17:   10(float) Load 16
              18:      6(int) ConvertFToU 17
              20:     19(ptr) AccessChain 9(tgt_coords) 14
                              Store 20 18
              22:     15(ptr) AccessChain 13(v_texcoord) 21
              23:   10(float) Load 22
              24:      6(int) ConvertFToU 23
              25:     19(ptr) AccessChain 9(tgt_coords) 14
                              Store 25 24
              28:     15(ptr) AccessChain 13(v_texcoord) 27
              29:   10(float) Load 28
              30:      6(int) ConvertFToU 29
              31:     19(ptr) AccessChain 26(ref_coords) 14
                              Store 31 30
              33:     15(ptr) AccessChain 13(v_texcoord) 32
              34:   10(float) Load 33
              35:      6(int) ConvertFToU 34
              36:     19(ptr) AccessChain 26(ref_coords) 21
                              Store 36 35
                              Store 37(blockSize) 39
              41:     19(ptr) AccessChain 9(tgt_coords) 14
              42:      6(int) Load 41
              44:      6(int) UMod 42 43
                              Store 40(ii) 44
              55:     54(ptr) AccessChain 51(samplers) 53
              56:          48 Load 55
              57:    7(ivec2) Load 9(tgt_coords)
              61:      6(int) Load 40(ii)
              63:     62(ptr) AccessChain 60(tex2D_srcs) 61
              64:          47 Load 63
              68:          65 Load 67(samp)
              69:          48 SampledImage 64 68
              70:    7(ivec2) Load 26(ref_coords)
              71:    7(ivec2) Load 37(blockSize)
              72:   11(fvec4) ImageBlockMatchSSDQCOM 56 57 69 70 71
                              Store 46(fragColor) 72
              74:     62(ptr) AccessChain 60(tex2D_srcs) 73
              75:          47 Load 74
              76:          65 Load 67(samp)
              77:          48 SampledImage 75 76
              78:    7(ivec2) Load 9(tgt_coords)
              79:     54(ptr) AccessChain 51(samplers) 73
              80:          48 Load 79
              81:    7(ivec2) Load 26(ref_coords)
              82:    7(ivec2) Load 37(blockSize)
              83:   11(fvec4) ImageBlockMatchSADQCOM 77 78 80 81 82
                              Store 46(fragColor) 83
                              Return
                              FunctionEnd
