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

                              Capability Shader
                              Capability PhysicalStorageBufferAddressesEXT
                              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" 42
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_EXT_buffer_reference"
                              Name 4  "main"
                              Name 9  "t4"
                              MemberName 9(t4) 0  "j"
                              MemberName 9(t4) 1  "k"
                              Name 10  "t3"
                              MemberName 10(t3) 0  "h"
                              Name 14  "foo(1;"
                              Name 13  "y"
                              Name 19  "t5"
                              MemberName 19(t5) 0  "m"
                              Name 21  "s5"
                              Name 23  "param"
                              Name 38  "t4"
                              MemberName 38(t4) 0  "j"
                              MemberName 38(t4) 1  "k"
                              Name 40  "x"
                              Name 42  "k"
                              MemberDecorate 9(t4) 0 Offset 0
                              MemberDecorate 9(t4) 1 Offset 8
                              Decorate 9(t4) Block
                              MemberDecorate 10(t3) 0 Offset 0
                              Decorate 10(t3) Block
                              Decorate 13(y) DecorationAliasedPointerEXT
                              MemberDecorate 19(t5) 0 Offset 0
                              Decorate 19(t5) Block
                              Decorate 21(s5) DescriptorSet 0
                              Decorate 21(s5) Binding 0
                              MemberDecorate 38(t4) 0 Offset 0
                              MemberDecorate 38(t4) 1 Offset 8
                              Decorate 38(t4) Block
                              Decorate 40(x) DescriptorSet 1
                              Decorate 40(x) Binding 2
                              Decorate 42(k) Flat
                              Decorate 42(k) DecorationAliasedPointerEXT
                              Decorate 23(param) DecorationAliasedPointerEXT
               2:             TypeVoid
               3:             TypeFunction 2
                              TypeForwardPointer 6 PhysicalStorageBufferEXT
               7:             TypeInt 32 1
                              TypeForwardPointer 8 PhysicalStorageBufferEXT
           9(t4):             TypeStruct 7(int) 8
          10(t3):             TypeStruct 7(int)
               8:             TypePointer PhysicalStorageBufferEXT 10(t3)
               6:             TypePointer PhysicalStorageBufferEXT 9(t4)
              11:             TypePointer Function 6(ptr)
              12:             TypeFunction 6(ptr) 11(ptr)
          19(t5):             TypeStruct 6(ptr)
              20:             TypePointer StorageBuffer 19(t5)
          21(s5):     20(ptr) Variable StorageBuffer
              22:      7(int) Constant 0
              24:             TypePointer StorageBuffer 6(ptr)
              30:      7(int) Constant 1
              31:             TypePointer PhysicalStorageBufferEXT 8(ptr)
              34:             TypePointer PhysicalStorageBufferEXT 7(int)
          38(t4):             TypeStruct 7(int) 8(ptr)
              39:             TypePointer StorageBuffer 38(t4)
           40(x):     39(ptr) Variable StorageBuffer
              41:             TypePointer Input 6(ptr)
           42(k):     41(ptr) Variable Input
              48:             TypePointer StorageBuffer 7(int)
         4(main):           2 Function None 3
               5:             Label
       23(param):     11(ptr) Variable Function
              25:     24(ptr) AccessChain 21(s5) 22
              26:      6(ptr) Load 25
                              Store 23(param) 26
              27:      6(ptr) FunctionCall 14(foo(1;) 23(param)
              28:     24(ptr) AccessChain 21(s5) 22
              29:      6(ptr) Load 28
              32:     31(ptr) AccessChain 29 30
              33:      8(ptr) Load 32 Aligned 8
              35:     34(ptr) AccessChain 33 22
              36:      7(int) Load 35 Aligned 16
              37:     34(ptr) AccessChain 27 22
                              Store 37 36 Aligned 16
              43:      6(ptr) Load 42(k)
              44:     31(ptr) AccessChain 43 30
              45:      8(ptr) Load 44 Aligned 8
              46:     34(ptr) AccessChain 45 22
              47:      7(int) Load 46 Aligned 16
              49:     48(ptr) AccessChain 40(x) 22
                              Store 49 47
                              Return
                              FunctionEnd
      14(foo(1;):      6(ptr) Function None 12
           13(y):     11(ptr) FunctionParameter
              15:             Label
              16:      6(ptr) Load 13(y)
                              ReturnValue 16
                              FunctionEnd
