spv.bufferhandle3.frag
// Module Version 10000
// Generated by (magic number): 8000a
// 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) Location 0
                              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
