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

                              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"
                              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 10  "t3"
                              MemberName 10(t3) 0  "h"
                              MemberName 10(t3) 1  "i"
                              Name 11  "t4"
                              MemberName 11(t4) 0  "j"
                              MemberName 11(t4) 1  "k"
                              Name 13  "x"
                              Name 19  "t5"
                              MemberName 19(t5) 0  "m"
                              Name 21  "s5"
                              Name 43  "b"
                              MemberDecorate 8(t4) 0 Offset 0
                              MemberDecorate 8(t4) 1 Offset 8
                              Decorate 8(t4) Block
                              MemberDecorate 10(t3) 0 Offset 0
                              MemberDecorate 10(t3) 1 Offset 8
                              Decorate 10(t3) Block
                              MemberDecorate 11(t4) 0 Offset 0
                              MemberDecorate 11(t4) 1 Offset 8
                              Decorate 11(t4) Block
                              Decorate 13(x) DescriptorSet 1
                              Decorate 13(x) Binding 2
                              MemberDecorate 19(t5) 0 Offset 0
                              Decorate 19(t5) Block
                              Decorate 21(s5) DescriptorSet 0
                              Decorate 21(s5) Binding 0
                              Decorate 47 DecorationAliasedPointerEXT
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
                              TypeForwardPointer 7 PhysicalStorageBufferEXT
           8(t4):             TypeStruct 6(int) 7
                              TypeForwardPointer 9 PhysicalStorageBufferEXT
          10(t3):             TypeStruct 6(int) 9
          11(t4):             TypeStruct 6(int) 7
               9:             TypePointer PhysicalStorageBufferEXT 11(t4)
               7:             TypePointer PhysicalStorageBufferEXT 10(t3)
              12:             TypePointer StorageBuffer 8(t4)
           13(x):     12(ptr) Variable StorageBuffer
              14:      6(int) Constant 1
              15:             TypePointer StorageBuffer 7(ptr)
              18:      6(int) Constant 0
          19(t5):             TypeStruct 9(ptr)
              20:             TypePointer StorageBuffer 19(t5)
          21(s5):     20(ptr) Variable StorageBuffer
              22:             TypePointer StorageBuffer 9(ptr)
              25:             TypePointer PhysicalStorageBufferEXT 7(ptr)
              28:             TypePointer PhysicalStorageBufferEXT 9(ptr)
              37:             TypePointer PhysicalStorageBufferEXT 6(int)
              41:             TypeBool
              42:             TypePointer Function 41(bool)
              44:    41(bool) ConstantTrue
              46:             TypePointer Function 9(ptr)
         4(main):           2 Function None 3
               5:             Label
           43(b):     42(ptr) Variable Function
              47:     46(ptr) Variable Function
              16:     15(ptr) AccessChain 13(x) 14
              17:      7(ptr) Load 16
              23:     22(ptr) AccessChain 21(s5) 18
              24:      9(ptr) Load 23
              26:     25(ptr) AccessChain 24 14
              27:      7(ptr) Load 26 Aligned 8
              29:     28(ptr) AccessChain 27 14
              30:      9(ptr) Load 29 Aligned 8
              31:     25(ptr) AccessChain 30 14
              32:      7(ptr) Load 31 Aligned 8
              33:     28(ptr) AccessChain 32 14
              34:      9(ptr) Load 33 Aligned 8
              35:     25(ptr) AccessChain 34 14
              36:      7(ptr) Load 35 Aligned 8
              38:     37(ptr) AccessChain 36 18
              39:      6(int) Load 38 Aligned 16
              40:     37(ptr) AccessChain 17 18
                              Store 40 39 Aligned 16
                              Store 43(b) 44
              45:    41(bool) Load 43(b)
                              SelectionMerge 49 None
                              BranchConditional 45 48 52
              48:               Label
              50:     22(ptr)   AccessChain 21(s5) 18
              51:      9(ptr)   Load 50
                                Store 47 51
                                Branch 49
              52:               Label
              53:     22(ptr)   AccessChain 21(s5) 18
              54:      9(ptr)   Load 53
              55:     25(ptr)   AccessChain 54 14
              56:      7(ptr)   Load 55 Aligned 8
              57:     28(ptr)   AccessChain 56 14
              58:      9(ptr)   Load 57 Aligned 8
                                Store 47 58
                                Branch 49
              49:             Label
              59:      9(ptr) Load 47
              60:     22(ptr) AccessChain 21(s5) 18
                              Store 60 59
                              Return
                              FunctionEnd
