hlsl.array.flatten.frag
// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by 180

                              Capability Shader
                              Capability Sampled1D
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 110
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 42  "g_tex"
                              Name 47  "g_samp"
                              Name 110  "ps_output.color"
                              Decorate 42(g_tex) DescriptorSet 0
                              Decorate 47(g_samp) DescriptorSet 0
                              Decorate 110(ps_output.color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
              11:             TypeImage 6(float) 1D sampled format:Unknown
              12:             TypeInt 32 0
              13:     12(int) Constant 3
              14:             TypeArray 11 13
              16:             TypeSampler
              17:             TypeArray 16 13
              30:             TypeInt 32 1
              35:     30(int) Constant 1
              41:             TypePointer UniformConstant 14
       42(g_tex):     41(ptr) Variable UniformConstant
              43:             TypePointer UniformConstant 11
              46:             TypePointer UniformConstant 17
      47(g_samp):     46(ptr) Variable UniformConstant
              48:             TypePointer UniformConstant 16
              51:             TypeSampledImage 11
              53:    6(float) Constant 1045220557
             109:             TypePointer Output 7(fvec4)
110(ps_output.color):    109(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
             139:     43(ptr) AccessChain 42(g_tex) 35
             140:          11 Load 139
             141:     48(ptr) AccessChain 47(g_samp) 35
             142:          16 Load 141
             143:          51 SampledImage 140 142
             144:    7(fvec4) ImageSampleImplicitLod 143 53
             133:          14 Load 42(g_tex)
             173:          11 CompositeExtract 133 2
             134:          17 Load 47(g_samp)
             179:          16 CompositeExtract 134 2
             150:          51 SampledImage 173 179
             151:    7(fvec4) ImageSampleImplicitLod 150 53
             136:    7(fvec4) FAdd 144 151
                              Store 110(ps_output.color) 136
                              Return
                              FunctionEnd
