spv.varyingArray.frag
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 61

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 19 34 39 45 48
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 9  "texColor"
                              Name 13  "texSampler2D"
                              Name 19  "TexCoord"
                              Name 34  "color"
                              Name 39  "alpha"
                              Name 45  "gl_FragColor"
                              Name 48  "foo"
                              Decorate 13(texSampler2D) DescriptorSet 0
                              Decorate 45(gl_FragColor) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
              10:             TypeImage 6(float) 2D sampled format:Unknown
              11:             TypeSampledImage 10
              12:             TypePointer UniformConstant 11
13(texSampler2D):     12(ptr) Variable UniformConstant
              15:             TypeInt 32 0
              16:     15(int) Constant 6
              17:             TypeArray 7(fvec4) 16
              18:             TypePointer Input 17
    19(TexCoord):     18(ptr) Variable Input
              20:             TypeInt 32 1
              21:     20(int) Constant 4
              22:             TypePointer Input 7(fvec4)
              25:     20(int) Constant 5
              29:             TypeVector 6(float) 2
       34(color):     22(ptr) Variable Input
              38:             TypePointer Input 6(float)
       39(alpha):     38(ptr) Variable Input
              41:     15(int) Constant 3
              42:             TypePointer Function 6(float)
              44:             TypePointer Output 7(fvec4)
45(gl_FragColor):     44(ptr) Variable Output
              46:             TypeArray 7(fvec4) 41
              47:             TypePointer Input 46
         48(foo):     47(ptr) Variable Input
              49:     20(int) Constant 1
              52:     20(int) Constant 0
         4(main):           2 Function None 3
               5:             Label
     9(texColor):      8(ptr) Variable Function
              14:          11 Load 13(texSampler2D)
              23:     22(ptr) AccessChain 19(TexCoord) 21
              24:    7(fvec4) Load 23
              26:     22(ptr) AccessChain 19(TexCoord) 25
              27:    7(fvec4) Load 26
              28:    7(fvec4) FAdd 24 27
              30:    6(float) CompositeExtract 28 0
              31:    6(float) CompositeExtract 28 1
              32:   29(fvec2) CompositeConstruct 30 31
              33:    7(fvec4) ImageSampleImplicitLod 14 32
                              Store 9(texColor) 33
              35:    7(fvec4) Load 34(color)
              36:    7(fvec4) Load 9(texColor)
              37:    7(fvec4) FAdd 36 35
                              Store 9(texColor) 37
              40:    6(float) Load 39(alpha)
              43:     42(ptr) AccessChain 9(texColor) 41
                              Store 43 40
              50:     22(ptr) AccessChain 48(foo) 49
              51:    7(fvec4) Load 50
              53:     22(ptr) AccessChain 19(TexCoord) 52
              54:    7(fvec4) Load 53
              55:    7(fvec4) FAdd 51 54
              56:     22(ptr) AccessChain 19(TexCoord) 21
              57:    7(fvec4) Load 56
              58:    7(fvec4) FAdd 55 57
              59:    7(fvec4) Load 9(texColor)
              60:    7(fvec4) FAdd 58 59
                              Store 45(gl_FragColor) 60
                              Return
                              FunctionEnd
