spv.bufferhandle5.frag
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 22

                              Capability Shader
                              Capability PhysicalStorageBufferAddressesEXT
                              Extension  "SPV_EXT_physical_storage_buffer"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel PhysicalStorageBuffer64EXT GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_EXT_buffer_reference"
                              Name 4  "main"
                              Name 8  "t4"
                              MemberName 8(t4) 0  "j"
                              MemberName 8(t4) 1  "k"
                              Name 9  "t3"
                              MemberName 9(t3) 0  "h"
                              Name 11  "x"
                              MemberDecorate 8(t4) 0 Offset 0
                              MemberDecorate 8(t4) 1 Offset 8
                              Decorate 8(t4) Block
                              MemberDecorate 9(t3) 0 Offset 0
                              Decorate 9(t3) Block
                              Decorate 11(x) DescriptorSet 1
                              Decorate 11(x) Binding 2
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
                              TypeForwardPointer 7 PhysicalStorageBufferEXT
           8(t4):             TypeStruct 6(int) 7
           9(t3):             TypeStruct 6(int)
               7:             TypePointer PhysicalStorageBufferEXT 9(t3)
              10:             TypePointer Uniform 8(t4)
           11(x):     10(ptr) Variable Uniform
              12:      6(int) Constant 1
              13:             TypePointer Uniform 7(ptr)
              16:      6(int) Constant 0
              17:             TypePointer Uniform 6(int)
              20:             TypePointer PhysicalStorageBufferEXT 6(int)
         4(main):           2 Function None 3
               5:             Label
              14:     13(ptr) AccessChain 11(x) 12
              15:      7(ptr) Load 14
              18:     17(ptr) AccessChain 11(x) 16
              19:      6(int) Load 18
              21:     20(ptr) AccessChain 15 16
                              Store 21 19 Aligned 16
                              Return
                              FunctionEnd
