spv.subpass.frag
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 67

                              Capability Shader
                              Capability InputAttachment
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 15 27 53
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 400
                              Name 4  "main"
                              Name 11  "foo(iIPM1;"
                              Name 10  "sb"
                              Name 15  "icolor"
                              Name 27  "color"
                              Name 30  "sub"
                              Name 35  "subMS"
                              Name 42  "isub"
                              Name 45  "isubMS"
                              Name 53  "ucolor"
                              Name 56  "usub"
                              Name 61  "usubMS"
                              Decorate 30(sub) DescriptorSet 0
                              Decorate 30(sub) Binding 0
                              Decorate 30(sub) InputAttachmentIndex 1
                              Decorate 35(subMS) DescriptorSet 0
                              Decorate 35(subMS) Binding 0
                              Decorate 35(subMS) InputAttachmentIndex 2
                              Decorate 42(isub) DescriptorSet 0
                              Decorate 42(isub) Binding 0
                              Decorate 42(isub) InputAttachmentIndex 3
                              Decorate 45(isubMS) DescriptorSet 0
                              Decorate 45(isubMS) Binding 0
                              Decorate 45(isubMS) InputAttachmentIndex 4
                              Decorate 56(usub) DescriptorSet 0
                              Decorate 56(usub) Binding 0
                              Decorate 56(usub) InputAttachmentIndex 5
                              Decorate 61(usubMS) DescriptorSet 0
                              Decorate 61(usubMS) Binding 0
                              Decorate 61(usubMS) InputAttachmentIndex 6
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypeImage 6(int) SubpassData multi-sampled nonsampled format:Unknown
               8:             TypePointer UniformConstant 7
               9:             TypeFunction 2 8(ptr)
              13:             TypeVector 6(int) 4
              14:             TypePointer Output 13(ivec4)
      15(icolor):     14(ptr) Variable Output
              17:      6(int) Constant 3
              18:      6(int) Constant 0
              19:             TypeVector 6(int) 2
              20:   19(ivec2) ConstantComposite 18 18
              24:             TypeFloat 32
              25:             TypeVector 24(float) 4
              26:             TypePointer Output 25(fvec4)
       27(color):     26(ptr) Variable Output
              28:             TypeImage 24(float) SubpassData nonsampled format:Unknown
              29:             TypePointer UniformConstant 28
         30(sub):     29(ptr) Variable UniformConstant
              33:             TypeImage 24(float) SubpassData multi-sampled nonsampled format:Unknown
              34:             TypePointer UniformConstant 33
       35(subMS):     34(ptr) Variable UniformConstant
              40:             TypeImage 6(int) SubpassData nonsampled format:Unknown
              41:             TypePointer UniformConstant 40
        42(isub):     41(ptr) Variable UniformConstant
      45(isubMS):      8(ptr) Variable UniformConstant
              50:             TypeInt 32 0
              51:             TypeVector 50(int) 4
              52:             TypePointer Output 51(ivec4)
      53(ucolor):     52(ptr) Variable Output
              54:             TypeImage 50(int) SubpassData nonsampled format:Unknown
              55:             TypePointer UniformConstant 54
        56(usub):     55(ptr) Variable UniformConstant
              59:             TypeImage 50(int) SubpassData multi-sampled nonsampled format:Unknown
              60:             TypePointer UniformConstant 59
      61(usubMS):     60(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
              31:          28 Load 30(sub)
              32:   25(fvec4) ImageRead 31 20
                              Store 27(color) 32
              36:          33 Load 35(subMS)
              37:   25(fvec4) ImageRead 36 20 Sample 17
              38:   25(fvec4) Load 27(color)
              39:   25(fvec4) FAdd 38 37
                              Store 27(color) 39
              43:          40 Load 42(isub)
              44:   13(ivec4) ImageRead 43 20
                              Store 15(icolor) 44
              46:           7 Load 45(isubMS)
              47:   13(ivec4) ImageRead 46 20 Sample 17
              48:   13(ivec4) Load 15(icolor)
              49:   13(ivec4) IAdd 48 47
                              Store 15(icolor) 49
              57:          54 Load 56(usub)
              58:   51(ivec4) ImageRead 57 20
                              Store 53(ucolor) 58
              62:          59 Load 61(usubMS)
              63:   51(ivec4) ImageRead 62 20 Sample 17
              64:   51(ivec4) Load 53(ucolor)
              65:   51(ivec4) IAdd 64 63
                              Store 53(ucolor) 65
              66:           2 FunctionCall 11(foo(iIPM1;) 45(isubMS)
                              Return
                              FunctionEnd
  11(foo(iIPM1;):           2 Function None 9
          10(sb):      8(ptr) FunctionParameter
              12:             Label
              16:           7 Load 10(sb)
              21:   13(ivec4) ImageRead 16 20 Sample 17
              22:   13(ivec4) Load 15(icolor)
              23:   13(ivec4) IAdd 22 21
                              Store 15(icolor) 23
                              Return
                              FunctionEnd
