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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 92 95
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "@main(vf4;"
                              Name 10  "pos"
                              Name 13  "vTmp"
                              Name 14  "BufType"
                              MemberName 14(BufType) 0  "va"
                              MemberName 14(BufType) 1  "vb"
                              Name 16  "SB0"
                              MemberName 16(SB0) 0  "@data"
                              Name 18  "SB0"
                              Name 26  "TestCB"
                              MemberName 26(TestCB) 0  "W"
                              MemberName 26(TestCB) 1  "H"
                              Name 28  ""
                              Name 57  "SB1"
                              MemberName 57(SB1) 0  "@data"
                              Name 59  "SB1"
                              Name 90  "pos"
                              Name 92  "pos"
                              Name 95  "@entryPointOutput"
                              Name 96  "param"
                              MemberDecorate 14(BufType) 0 Offset 0
                              MemberDecorate 14(BufType) 1 Offset 16
                              Decorate 15 ArrayStride 32
                              MemberDecorate 16(SB0) 0 NonWritable
                              MemberDecorate 16(SB0) 0 Offset 0
                              Decorate 16(SB0) BufferBlock
                              Decorate 18(SB0) DescriptorSet 0
                              Decorate 18(SB0) Binding 30
                              MemberDecorate 26(TestCB) 0 Offset 0
                              MemberDecorate 26(TestCB) 1 Offset 4
                              Decorate 26(TestCB) Block
                              Decorate 28 DescriptorSet 0
                              Decorate 28 Binding 15
                              Decorate 56 ArrayStride 32
                              MemberDecorate 57(SB1) 0 Offset 0
                              Decorate 57(SB1) BufferBlock
                              Decorate 59(SB1) DescriptorSet 0
                              Decorate 59(SB1) Binding 31
                              Decorate 92(pos) Location 0
                              Decorate 95(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
               9:             TypeFunction 7(fvec4) 8(ptr)
     14(BufType):             TypeStruct 7(fvec4) 7(fvec4)
              15:             TypeRuntimeArray 14(BufType)
         16(SB0):             TypeStruct 15
              17:             TypePointer Uniform 16(SB0)
         18(SB0):     17(ptr) Variable Uniform
              19:             TypeInt 32 1
              20:     19(int) Constant 0
              21:             TypeInt 32 0
              22:     21(int) Constant 1
              23:             TypePointer Function 6(float)
      26(TestCB):             TypeStruct 21(int) 21(int)
              27:             TypePointer Uniform 26(TestCB)
              28:     27(ptr) Variable Uniform
              29:             TypePointer Uniform 21(int)
              34:     21(int) Constant 0
              39:             TypePointer Uniform 7(fvec4)
              52:     19(int) Constant 1
              56:             TypeRuntimeArray 14(BufType)
         57(SB1):             TypeStruct 56
              58:             TypePointer Uniform 57(SB1)
         59(SB1):     58(ptr) Variable Uniform
              91:             TypePointer Input 7(fvec4)
         92(pos):     91(ptr) Variable Input
              94:             TypePointer Output 7(fvec4)
95(@entryPointOutput):     94(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
         90(pos):      8(ptr) Variable Function
       96(param):      8(ptr) Variable Function
              93:    7(fvec4) Load 92(pos)
                              Store 90(pos) 93
              97:    7(fvec4) Load 90(pos)
                              Store 96(param) 97
              98:    7(fvec4) FunctionCall 11(@main(vf4;) 96(param)
                              Store 95(@entryPointOutput) 98
                              Return
                              FunctionEnd
  11(@main(vf4;):    7(fvec4) Function None 9
         10(pos):      8(ptr) FunctionParameter
              12:             Label
        13(vTmp):      8(ptr) Variable Function
              24:     23(ptr) AccessChain 10(pos) 22
              25:    6(float) Load 24
              30:     29(ptr) AccessChain 28 20
              31:     21(int) Load 30
              32:    6(float) ConvertUToF 31
              33:    6(float) FMul 25 32
              35:     23(ptr) AccessChain 10(pos) 34
              36:    6(float) Load 35
              37:    6(float) FAdd 33 36
              38:     21(int) ConvertFToU 37
              40:     39(ptr) AccessChain 18(SB0) 20 38 20
              41:    7(fvec4) Load 40
              42:     23(ptr) AccessChain 10(pos) 22
              43:    6(float) Load 42
              44:     29(ptr) AccessChain 28 20
              45:     21(int) Load 44
              46:    6(float) ConvertUToF 45
              47:    6(float) FMul 43 46
              48:     23(ptr) AccessChain 10(pos) 34
              49:    6(float) Load 48
              50:    6(float) FAdd 47 49
              51:     21(int) ConvertFToU 50
              53:     39(ptr) AccessChain 18(SB0) 20 51 52
              54:    7(fvec4) Load 53
              55:    7(fvec4) FAdd 41 54
                              Store 13(vTmp) 55
              60:     23(ptr) AccessChain 10(pos) 22
              61:    6(float) Load 60
              62:     29(ptr) AccessChain 28 20
              63:     21(int) Load 62
              64:    6(float) ConvertUToF 63
              65:    6(float) FMul 61 64
              66:     23(ptr) AccessChain 10(pos) 34
              67:    6(float) Load 66
              68:    6(float) FAdd 65 67
              69:     21(int) ConvertFToU 68
              70:     39(ptr) AccessChain 59(SB1) 20 69 20
              71:    7(fvec4) Load 70
              72:     23(ptr) AccessChain 10(pos) 22
              73:    6(float) Load 72
              74:     29(ptr) AccessChain 28 20
              75:     21(int) Load 74
              76:    6(float) ConvertUToF 75
              77:    6(float) FMul 73 76
              78:     23(ptr) AccessChain 10(pos) 34
              79:    6(float) Load 78
              80:    6(float) FAdd 77 79
              81:     21(int) ConvertFToU 80
              82:     39(ptr) AccessChain 59(SB1) 20 81 52
              83:    7(fvec4) Load 82
              84:    7(fvec4) FAdd 71 83
              85:    7(fvec4) Load 13(vTmp)
              86:    7(fvec4) FAdd 85 84
                              Store 13(vTmp) 86
              87:    7(fvec4) Load 13(vTmp)
                              ReturnValue 87
                              FunctionEnd
