spv.1.4.OpCopyLogical.comp
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 65

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 19 27 35 51 60
                              ExecutionMode 4 LocalSize 1 1 1
                              Source GLSL 450
                              Name 4  "main"
                              Name 12  "MyStruct"
                              MemberName 12(MyStruct) 0  "foo"
                              MemberName 12(MyStruct) 1  "sb"
                              Name 14  "t"
                              Name 16  "MyStruct"
                              MemberName 16(MyStruct) 0  "foo"
                              MemberName 16(MyStruct) 1  "sb"
                              Name 17  "SSBO0"
                              MemberName 17(SSBO0) 0  "a"
                              Name 19  "inBuf"
                              Name 25  "SSBO1"
                              MemberName 25(SSBO1) 0  "b"
                              Name 27  "outBuf"
                              Name 32  "MyStruct"
                              MemberName 32(MyStruct) 0  "foo"
                              MemberName 32(MyStruct) 1  "sb"
                              Name 33  "UBO"
                              MemberName 33(UBO) 0  "c"
                              Name 35  "uBuf"
                              Name 44  "Nested"
                              MemberName 44(Nested) 0  "f"
                              MemberName 44(Nested) 1  "S"
                              Name 46  "n"
                              Name 48  "Nested"
                              MemberName 48(Nested) 0  "f"
                              MemberName 48(Nested) 1  "S"
                              Name 49  "UBON"
                              MemberName 49(UBON) 0  "N1"
                              Name 51  "uBufN"
                              Name 57  "Nested"
                              MemberName 57(Nested) 0  "f"
                              MemberName 57(Nested) 1  "S"
                              Name 58  "SSBO1N"
                              MemberName 58(SSBO1N) 0  "N2"
                              Name 60  "outBufN"
                              Decorate 15 ArrayStride 8
                              MemberDecorate 16(MyStruct) 0 Offset 0
                              MemberDecorate 16(MyStruct) 1 Offset 16
                              MemberDecorate 17(SSBO0) 0 Offset 0
                              Decorate 17(SSBO0) Block
                              Decorate 19(inBuf) DescriptorSet 0
                              Decorate 19(inBuf) Binding 0
                              MemberDecorate 25(SSBO1) 0 Offset 0
                              Decorate 25(SSBO1) Block
                              Decorate 27(outBuf) DescriptorSet 0
                              Decorate 27(outBuf) Binding 1
                              Decorate 31 ArrayStride 16
                              MemberDecorate 32(MyStruct) 0 Offset 0
                              MemberDecorate 32(MyStruct) 1 Offset 32
                              MemberDecorate 33(UBO) 0 Offset 0
                              Decorate 33(UBO) Block
                              Decorate 35(uBuf) DescriptorSet 0
                              Decorate 35(uBuf) Binding 2
                              Decorate 47 ArrayStride 48
                              MemberDecorate 48(Nested) 0 Offset 0
                              MemberDecorate 48(Nested) 1 Offset 16
                              MemberDecorate 49(UBON) 0 Offset 0
                              Decorate 49(UBON) Block
                              Decorate 51(uBufN) DescriptorSet 0
                              Decorate 51(uBufN) Binding 2
                              Decorate 56 ArrayStride 24
                              MemberDecorate 57(Nested) 0 Offset 0
                              MemberDecorate 57(Nested) 1 Offset 8
                              MemberDecorate 58(SSBO1N) 0 Offset 0
                              Decorate 58(SSBO1N) Block
                              Decorate 60(outBufN) DescriptorSet 0
                              Decorate 60(outBufN) Binding 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 2
               8:             TypeInt 32 0
               9:      8(int) Constant 2
              10:             TypeArray 7(fvec2) 9
              11:             TypeInt 32 1
    12(MyStruct):             TypeStruct 10 11(int)
              13:             TypePointer Function 12(MyStruct)
              15:             TypeArray 7(fvec2) 9
    16(MyStruct):             TypeStruct 15 11(int)
       17(SSBO0):             TypeStruct 16(MyStruct)
              18:             TypePointer StorageBuffer 17(SSBO0)
       19(inBuf):     18(ptr) Variable StorageBuffer
              20:     11(int) Constant 0
              21:             TypePointer StorageBuffer 16(MyStruct)
       25(SSBO1):             TypeStruct 16(MyStruct)
              26:             TypePointer StorageBuffer 25(SSBO1)
      27(outBuf):     26(ptr) Variable StorageBuffer
              31:             TypeArray 7(fvec2) 9
    32(MyStruct):             TypeStruct 31 11(int)
         33(UBO):             TypeStruct 32(MyStruct)
              34:             TypePointer Uniform 33(UBO)
        35(uBuf):     34(ptr) Variable Uniform
              36:             TypePointer Uniform 32(MyStruct)
              43:             TypeArray 12(MyStruct) 9
      44(Nested):             TypeStruct 6(float) 43
              45:             TypePointer Function 44(Nested)
              47:             TypeArray 32(MyStruct) 9
      48(Nested):             TypeStruct 6(float) 47
        49(UBON):             TypeStruct 48(Nested)
              50:             TypePointer Uniform 49(UBON)
       51(uBufN):     50(ptr) Variable Uniform
              52:             TypePointer Uniform 48(Nested)
              56:             TypeArray 16(MyStruct) 9
      57(Nested):             TypeStruct 6(float) 56
      58(SSBO1N):             TypeStruct 57(Nested)
              59:             TypePointer StorageBuffer 58(SSBO1N)
     60(outBufN):     59(ptr) Variable StorageBuffer
              62:             TypePointer StorageBuffer 57(Nested)
         4(main):           2 Function None 3
               5:             Label
           14(t):     13(ptr) Variable Function
           46(n):     45(ptr) Variable Function
              22:     21(ptr) AccessChain 19(inBuf) 20
              23:16(MyStruct) Load 22
              24:12(MyStruct) CopyLogical 23
                              Store 14(t) 24
              28:12(MyStruct) Load 14(t)
              29:     21(ptr) AccessChain 27(outBuf) 20
              30:16(MyStruct) CopyLogical 28
                              Store 29 30
              37:     36(ptr) AccessChain 35(uBuf) 20
              38:32(MyStruct) Load 37
              39:12(MyStruct) CopyLogical 38
                              Store 14(t) 39
              40:12(MyStruct) Load 14(t)
              41:     21(ptr) AccessChain 27(outBuf) 20
              42:16(MyStruct) CopyLogical 40
                              Store 41 42
              53:     52(ptr) AccessChain 51(uBufN) 20
              54:  48(Nested) Load 53
              55:  44(Nested) CopyLogical 54
                              Store 46(n) 55
              61:  44(Nested) Load 46(n)
              63:     62(ptr) AccessChain 60(outBufN) 20
              64:  57(Nested) CopyLogical 61
                              Store 63 64
                              Return
                              FunctionEnd
