spv.1.4.OpCopyLogical.funcall.frag
// Module Version 10400
// Generated by (magic number): 80008
// Id's are bound by 60

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 25 37
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              Name 4  "main"
                              Name 9  "S"
                              MemberName 9(S) 0  "m"
                              Name 12  "fooConst(struct-S-mf441;"
                              Name 11  "s"
                              Name 17  "foo(struct-S-mf441;"
                              Name 16  "s"
                              Name 20  "fooOut(struct-S-mf441;"
                              Name 19  "s"
                              Name 22  "S"
                              MemberName 22(S) 0  "m"
                              Name 23  "blockName"
                              MemberName 23(blockName) 0  "s1"
                              Name 25  ""
                              Name 31  "S"
                              MemberName 31(S) 0  "m"
                              Name 32  "arg"
                              Name 37  "s2"
                              Name 40  "param"
                              Name 45  "param"
                              Name 48  "param"
                              Name 56  "param"
                              MemberDecorate 22(S) 0 ColMajor
                              MemberDecorate 22(S) 0 Offset 0
                              MemberDecorate 22(S) 0 MatrixStride 16
                              MemberDecorate 23(blockName) 0 Offset 0
                              Decorate 23(blockName) Block
                              Decorate 25 DescriptorSet 0
                              Decorate 25 Binding 0
                              MemberDecorate 31(S) 0 ColMajor
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeMatrix 7(fvec4) 4
            9(S):             TypeStruct 8
              10:             TypeFunction 2 9(S)
              14:             TypePointer Function 9(S)
              15:             TypeFunction 2 14(ptr)
           22(S):             TypeStruct 8
   23(blockName):             TypeStruct 22(S)
              24:             TypePointer StorageBuffer 23(blockName)
              25:     24(ptr) Variable StorageBuffer
              26:             TypeInt 32 1
              27:     26(int) Constant 0
              28:             TypePointer StorageBuffer 22(S)
           31(S):             TypeStruct 8
              36:             TypePointer Private 9(S)
          37(s2):     36(ptr) Variable Private
         4(main):           2 Function None 3
               5:             Label
         32(arg):     14(ptr) Variable Function
       40(param):     14(ptr) Variable Function
       45(param):     14(ptr) Variable Function
       48(param):     14(ptr) Variable Function
       56(param):     14(ptr) Variable Function
              29:     28(ptr) AccessChain 25 27
              30:       22(S) Load 29
              33:        9(S) CopyLogical 30
                              Store 32(arg) 33
              34:        9(S) Load 32(arg)
              35:           2 FunctionCall 12(fooConst(struct-S-mf441;) 34
              38:        9(S) Load 37(s2)
              39:           2 FunctionCall 12(fooConst(struct-S-mf441;) 38
              41:     28(ptr) AccessChain 25 27
              42:       22(S) Load 41
              43:        9(S) CopyLogical 42
                              Store 40(param) 43
              44:           2 FunctionCall 17(foo(struct-S-mf441;) 40(param)
              46:        9(S) Load 37(s2)
                              Store 45(param) 46
              47:           2 FunctionCall 17(foo(struct-S-mf441;) 45(param)
              49:     28(ptr) AccessChain 25 27
              50:       22(S) Load 49
              51:        9(S) CopyLogical 50
                              Store 48(param) 51
              52:           2 FunctionCall 20(fooOut(struct-S-mf441;) 48(param)
              53:        9(S) Load 48(param)
              54:     28(ptr) AccessChain 25 27
              55:       22(S) CopyLogical 53
                              Store 54 55
              57:        9(S) Load 37(s2)
                              Store 56(param) 57
              58:           2 FunctionCall 20(fooOut(struct-S-mf441;) 56(param)
              59:        9(S) Load 56(param)
                              Store 37(s2) 59
                              Return
                              FunctionEnd
12(fooConst(struct-S-mf441;):           2 Function None 10
           11(s):        9(S) FunctionParameter
              13:             Label
                              Return
                              FunctionEnd
17(foo(struct-S-mf441;):           2 Function None 15
           16(s):     14(ptr) FunctionParameter
              18:             Label
                              Return
                              FunctionEnd
20(fooOut(struct-S-mf441;):           2 Function None 15
           19(s):     14(ptr) FunctionParameter
              21:             Label
                              Return
                              FunctionEnd
