spv.nullInit.comp
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 37

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main"
                              ExecutionMode 4 LocalSize 1 1 1
                              Source GLSL 460
                              SourceExtension  "GL_EXT_null_initializer"
                              Name 4  "main"
                              Name 12  "S"
                              MemberName 12(S) 0  "v"
                              MemberName 12(S) 1  "a"
                              Name 15  "local"
                              Name 23  "f"
                              Name 24  "T"
                              MemberName 24(T) 0  "b"
                              MemberName 24(T) 1  "s"
                              Name 27  "t1"
                              Name 28  "t2"
                              Name 30  "s"
                              Name 31  "g"
                              Name 34  "i"
                              Name 36  "global"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
               8:             TypeInt 32 0
               9:      8(int) Constant 4
              10:             TypeArray 7(fvec3) 9
              11:             TypeInt 32 1
           12(S):             TypeStruct 10 11(int)
              13:       12(S) ConstantNull
              14:             TypePointer Function 12(S)
              16:     11(int) Constant 1
              17:             TypePointer Function 11(int)
              21:    6(float) ConstantNull
              22:             TypePointer Workgroup 6(float)
           23(f):     22(ptr) Variable Workgroup 21
           24(T):             TypeStruct 11(int) 12(S)
              25:       24(T) ConstantNull
              26:             TypePointer Workgroup 24(T)
          27(t1):     26(ptr) Variable Workgroup 25
          28(t2):     26(ptr) Variable Workgroup 25
              29:             TypePointer Workgroup 12(S)
           30(s):     29(ptr) Variable Workgroup 13
           31(g):     22(ptr) Variable Workgroup 21
              32:     11(int) ConstantNull
              33:             TypePointer Workgroup 11(int)
           34(i):     33(ptr) Variable Workgroup 32
              35:             TypePointer Private 12(S)
      36(global):     35(ptr) Variable Private 13
         4(main):           2 Function None 3
               5:             Label
       15(local):     14(ptr) Variable Function 13
              18:     17(ptr) AccessChain 15(local) 16
              19:     11(int) Load 18
              20:     11(int) IAdd 19 16
                              Store 18 20
                              Return
                              FunctionEnd
