spv.ssboAlias.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 44

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 41
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "@main("
                              Name 13  "Buf1"
                              MemberName 13(Buf1) 0  "@data"
                              Name 15  "Buf1"
                              Name 18  "Buf1@count"
                              MemberName 18(Buf1@count) 0  "@count"
                              Name 20  "Buf1@count"
                              Name 28  "Buf2"
                              Name 29  "Buf2@count"
                              Name 41  "@entryPointOutput"
                              Name 43  "Buf3"
                              Decorate 12 ArrayStride 4
                              MemberDecorate 13(Buf1) 0 Offset 0
                              Decorate 13(Buf1) BufferBlock
                              Decorate 15(Buf1) DescriptorSet 0
                              Decorate 15(Buf1) Binding 84
                              MemberDecorate 18(Buf1@count) 0 Offset 0
                              Decorate 18(Buf1@count) BufferBlock
                              Decorate 20(Buf1@count) DescriptorSet 0
                              Decorate 20(Buf1@count) Binding 83
                              Decorate 28(Buf2) DescriptorSet 0
                              Decorate 28(Buf2) Binding 85
                              Decorate 29(Buf2@count) DescriptorSet 0
                              Decorate 29(Buf2@count) Binding 86
                              Decorate 41(@entryPointOutput) Location 0
                              Decorate 43(Buf3) DescriptorSet 0
                              Decorate 43(Buf3) Binding 84
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeFunction 7(fvec4)
              11:             TypeInt 32 0
              12:             TypeRuntimeArray 11(int)
        13(Buf1):             TypeStruct 12
              14:             TypePointer Uniform 13(Buf1)
        15(Buf1):     14(ptr) Variable Uniform
              16:             TypeInt 32 1
              17:     16(int) Constant 0
  18(Buf1@count):             TypeStruct 11(int)
              19:             TypePointer Uniform 18(Buf1@count)
  20(Buf1@count):     19(ptr) Variable Uniform
              21:             TypePointer Uniform 11(int)
              23:     11(int) Constant 1
              24:     11(int) Constant 0
              26:     11(int) Constant 10
        28(Buf2):     14(ptr) Variable Uniform
  29(Buf2@count):     19(ptr) Variable Uniform
              32:     11(int) Constant 20
              34:    6(float) Constant 1065353216
              35:    6(float) Constant 1077936128
              36:    6(float) Constant 1084227584
              37:    7(fvec4) ConstantComposite 34 35 36 34
              40:             TypePointer Output 7(fvec4)
41(@entryPointOutput):     40(ptr) Variable Output
        43(Buf3):     14(ptr) Variable Uniform
         4(main):           2 Function None 3
               5:             Label
              42:    7(fvec4) FunctionCall 9(@main()
                              Store 41(@entryPointOutput) 42
                              Return
                              FunctionEnd
       9(@main():    7(fvec4) Function None 8
              10:             Label
              22:     21(ptr) AccessChain 20(Buf1@count) 17
              25:     11(int) AtomicIAdd 22 23 24 23
              27:     21(ptr) AccessChain 15(Buf1) 17 25
                              Store 27 26
              30:     21(ptr) AccessChain 29(Buf2@count) 17
              31:     11(int) AtomicIAdd 30 23 24 23
              33:     21(ptr) AccessChain 28(Buf2) 17 31
                              Store 33 32
                              ReturnValue 37
                              FunctionEnd
