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

                              Capability Shader
                              Capability Image1D
                              Capability ImageBuffer
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 39
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PS_OUTPUT"
                              MemberName 8(PS_OUTPUT) 0  "Color"
                              Name 10  "@main("
                              Name 13  "r00"
                              Name 16  "g_tTex1df1"
                              Name 23  "r01"
                              Name 26  "g_tBuf1du1"
                              Name 30  "psout"
                              Name 39  "@entryPointOutput.Color"
                              Decorate 16(g_tTex1df1) DescriptorSet 0
                              Decorate 16(g_tTex1df1) Binding 20
                              Decorate 26(g_tBuf1du1) DescriptorSet 0
                              Decorate 26(g_tBuf1du1) Binding 21
                              Decorate 39(@entryPointOutput.Color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
    8(PS_OUTPUT):             TypeStruct 7(fvec4)
               9:             TypeFunction 8(PS_OUTPUT)
              12:             TypePointer Function 6(float)
              14:             TypeImage 6(float) 1D nonsampled format:R32f
              15:             TypePointer UniformConstant 14
  16(g_tTex1df1):     15(ptr) Variable UniformConstant
              18:             TypeInt 32 1
              19:     18(int) Constant 0
              21:             TypeInt 32 0
              22:             TypePointer Function 21(int)
              24:             TypeImage 21(int) Buffer nonsampled format:R32ui
              25:             TypePointer UniformConstant 24
  26(g_tBuf1du1):     25(ptr) Variable UniformConstant
              29:             TypePointer Function 8(PS_OUTPUT)
              31:    6(float) Constant 0
              32:    7(fvec4) ConstantComposite 31 31 31 31
              33:             TypePointer Function 7(fvec4)
              38:             TypePointer Output 7(fvec4)
39(@entryPointOutput.Color):     38(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              40:8(PS_OUTPUT) FunctionCall 10(@main()
              41:    7(fvec4) CompositeExtract 40 0
                              Store 39(@entryPointOutput.Color) 41
                              Return
                              FunctionEnd
      10(@main():8(PS_OUTPUT) Function None 9
              11:             Label
         13(r00):     12(ptr) Variable Function
         23(r01):     22(ptr) Variable Function
       30(psout):     29(ptr) Variable Function
              17:          14 Load 16(g_tTex1df1)
              20:    6(float) ImageRead 17 19
                              Store 13(r00) 20
              27:          24 Load 26(g_tBuf1du1)
              28:     21(int) ImageRead 27 19
                              Store 23(r01) 28
              34:     33(ptr) AccessChain 30(psout) 19
                              Store 34 32
              35:8(PS_OUTPUT) Load 30(psout)
                              ReturnValue 35
                              FunctionEnd
