spv.bufferhandle15.frag
WARNING: 0:16: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
         "precision mediump int; precision highp float;" 

// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 60

                              Capability Shader
                              Capability CapabilityPhysicalStorageBufferAddressesEXT
                              Extension  "SPV_EXT_physical_storage_buffer"
                              Extension  "SPV_KHR_storage_buffer_storage_class"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel PhysicalStorageBuffer64EXT GLSL450
                              EntryPoint Fragment 4  "main" 37
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_EXT_buffer_reference"
                              SourceExtension  "GL_EXT_scalar_block_layout"
                              Name 4  "main"
                              Name 9  "y"
                              Name 13  "T4"
                              MemberName 13(T4) 0  "t1"
                              MemberName 13(T4) 1  "t2"
                              MemberName 13(T4) 2  "t3"
                              Name 15  "T1"
                              MemberName 15(T1) 0  "x"
                              Name 22  "T2"
                              MemberName 22(T2) 0  "x"
                              Name 28  "S"
                              MemberName 28(S) 0  "a"
                              MemberName 28(S) 1  "b"
                              MemberName 28(S) 2  "c"
                              Name 29  "T3"
                              MemberName 29(T3) 0  "s"
                              Name 31  "t4"
                              Name 37  "i"
                              Name 52  "z"
                              MemberDecorate 13(T4) 0 Offset 0
                              MemberDecorate 13(T4) 1 Offset 8
                              MemberDecorate 13(T4) 2 Offset 16
                              Decorate 13(T4) Block
                              Decorate 14 ArrayStride 12
                              MemberDecorate 15(T1) 0 Offset 0
                              Decorate 15(T1) Block
                              Decorate 18 ArrayStride 12
                              Decorate 20 ArrayStride 24
                              Decorate 21 ArrayStride 96
                              MemberDecorate 22(T2) 0 Offset 0
                              Decorate 22(T2) Block
                              Decorate 26 ArrayStride 36
                              MemberDecorate 28(S) 0 Offset 0
                              MemberDecorate 28(S) 1 ColMajor
                              MemberDecorate 28(S) 1 RelaxedPrecision
                              MemberDecorate 28(S) 1 Offset 12
                              MemberDecorate 28(S) 1 MatrixStride 12
                              MemberDecorate 28(S) 2 Offset 156
                              MemberDecorate 29(T3) 0 Offset 0
                              Decorate 29(T3) Block
                              Decorate 31(t4) DescriptorSet 0
                              Decorate 31(t4) Binding 0
                              Decorate 37(i) Flat
                              Decorate 37(i) Location 0
                              Decorate 59 RelaxedPrecision
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
               8:             TypePointer Function 7(fvec3)
                              TypeForwardPointer 10 PhysicalStorageBufferEXT
                              TypeForwardPointer 11 PhysicalStorageBufferEXT
                              TypeForwardPointer 12 PhysicalStorageBufferEXT
          13(T4):             TypeStruct 10 11 12
              14:             TypeRuntimeArray 7(fvec3)
          15(T1):             TypeStruct 14
              10:             TypePointer PhysicalStorageBufferEXT 15(T1)
              16:             TypeInt 32 0
              17:     16(int) Constant 2
              18:             TypeArray 7(fvec3) 17
              19:     16(int) Constant 4
              20:             TypeArray 18 19
              21:             TypeRuntimeArray 20
          22(T2):             TypeStruct 21
              11:             TypePointer PhysicalStorageBufferEXT 22(T2)
              23:             TypeInt 32 1
              24:             TypeVector 23(int) 3
              25:             TypeMatrix 7(fvec3) 3
              26:             TypeArray 25 19
              27:             TypeVector 6(float) 4
           28(S):             TypeStruct 24(ivec3) 26 27(fvec4)
          29(T3):             TypeStruct 28(S)
              12:             TypePointer PhysicalStorageBufferEXT 29(T3)
              30:             TypePointer StorageBuffer 13(T4)
          31(t4):     30(ptr) Variable StorageBuffer
              32:     23(int) Constant 0
              33:             TypePointer StorageBuffer 10(ptr)
              36:             TypePointer Input 23(int)
           37(i):     36(ptr) Variable Input
              39:             TypePointer PhysicalStorageBufferEXT 7(fvec3)
              42:     23(int) Constant 1
              43:             TypePointer StorageBuffer 11(ptr)
              51:             TypePointer Function 25
              53:     23(int) Constant 2
              54:             TypePointer StorageBuffer 12(ptr)
              57:             TypePointer PhysicalStorageBufferEXT 25
         4(main):           2 Function None 3
               5:             Label
            9(y):      8(ptr) Variable Function
           52(z):     51(ptr) Variable Function
              34:     33(ptr) AccessChain 31(t4) 32
              35:     10(ptr) Load 34
              38:     23(int) Load 37(i)
              40:     39(ptr) AccessChain 35 32 38
              41:    7(fvec3) Load 40 Aligned 4
                              Store 9(y) 41
              44:     43(ptr) AccessChain 31(t4) 42
              45:     11(ptr) Load 44
              46:     23(int) Load 37(i)
              47:     23(int) Load 37(i)
              48:     23(int) Load 37(i)
              49:     39(ptr) AccessChain 45 32 46 47 48
              50:    7(fvec3) Load 49 Aligned 4
                              Store 9(y) 50
              55:     54(ptr) AccessChain 31(t4) 53
              56:     12(ptr) Load 55
              58:     57(ptr) AccessChain 56 32 42 32
              59:          25 Load 58 Aligned 4
                              Store 52(z) 59
                              Return
                              FunctionEnd
