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

                              Capability Shader
                              Capability PhysicalStorageBufferAddressesEXT
                              Extension  "SPV_KHR_physical_storage_buffer"
                              Extension  "SPV_KHR_storage_buffer_storage_class"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel PhysicalStorageBuffer64EXT GLSL450
                              EntryPoint Fragment 4  "main" 16 19
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_EXT_buffer_reference"
                              SourceExtension  "GL_EXT_buffer_reference_uvec2"
                              Name 4  "main"
                              Name 8  "blockType"
                              MemberName 8(blockType) 0  "a"
                              MemberName 8(blockType) 1  "b"
                              MemberName 8(blockType) 2  "c"
                              MemberName 8(blockType) 3  "d"
                              MemberName 8(blockType) 4  "e"
                              Name 13  "b1"
                              Name 16  "h"
                              Name 19  "i"
                              Name 34  "b2"
                              Name 37  "b3"
                              Name 46  "j"
                              Name 54  "carry"
                              Name 55  "ResType"
                              Name 68  "t2"
                              MemberName 68(t2) 0  "f"
                              MemberName 68(t2) 1  "g"
                              Name 70  "t"
                              MemberDecorate 8(blockType) 0 Offset 0
                              MemberDecorate 8(blockType) 1 Offset 4
                              MemberDecorate 8(blockType) 2 Offset 8
                              MemberDecorate 8(blockType) 3 Offset 12
                              MemberDecorate 8(blockType) 4 Offset 16
                              Decorate 8(blockType) Block
                              Decorate 13(b1) DecorationAliasedPointerEXT
                              Decorate 16(h) Flat
                              Decorate 16(h) Location 0
                              Decorate 19(i) Flat
                              Decorate 19(i) Location 1
                              Decorate 34(b2) DecorationAliasedPointerEXT
                              Decorate 37(b3) DecorationAliasedPointerEXT
                              MemberDecorate 68(t2) 0 Offset 0
                              MemberDecorate 68(t2) 1 Offset 8
                              Decorate 68(t2) Block
                              Decorate 70(t) DescriptorSet 0
                              Decorate 70(t) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
                              TypeForwardPointer 6 PhysicalStorageBufferEXT
               7:             TypeInt 32 1
    8(blockType):             TypeStruct 7(int) 7(int) 7(int) 7(int) 7(int)
               6:             TypePointer PhysicalStorageBufferEXT 8(blockType)
               9:             TypeInt 32 0
              10:      9(int) Constant 2
              11:             TypeArray 6(ptr) 10
              12:             TypePointer Function 11
              14:             TypeVector 9(int) 2
              15:             TypePointer Input 14(ivec2)
           16(h):     15(ptr) Variable Input
           19(i):     15(ptr) Variable Input
              23:      7(int) Constant 0
              24:             TypePointer Function 6(ptr)
              27:      7(int) Constant 1
              30:             TypePointer PhysicalStorageBufferEXT 7(int)
              45:             TypePointer Function 14(ivec2)
              49:      9(int) Constant 0
              50:             TypePointer Function 9(int)
              53:      9(int) Constant 256
     55(ResType):             TypeStruct 9(int) 9(int)
              61:      9(int) Constant 1
          68(t2):             TypeStruct 6(ptr) 6(ptr)
              69:             TypePointer StorageBuffer 68(t2)
           70(t):     69(ptr) Variable StorageBuffer
         4(main):           2 Function None 3
               5:             Label
          13(b1):     12(ptr) Variable Function
          34(b2):     24(ptr) Variable Function
          37(b3):     24(ptr) Variable Function
           46(j):     45(ptr) Variable Function
       54(carry):     50(ptr) Variable Function
              17:   14(ivec2) Load 16(h)
              18:      6(ptr) Bitcast 17
              20:   14(ivec2) Load 19(i)
              21:      6(ptr) Bitcast 20
              22:          11 CompositeConstruct 18 21
                              Store 13(b1) 22
              25:     24(ptr) AccessChain 13(b1) 23
              26:      6(ptr) Load 25
              28:     24(ptr) AccessChain 13(b1) 27
              29:      6(ptr) Load 28
              31:     30(ptr) AccessChain 29 27
              32:      7(int) Load 31 Aligned 4
              33:     30(ptr) AccessChain 26 23
                              Store 33 32 Aligned 16
              35:   14(ivec2) Load 16(h)
              36:      6(ptr) Bitcast 35
                              Store 34(b2) 36
              38:   14(ivec2) Load 19(i)
              39:      6(ptr) Bitcast 38
                              Store 37(b3) 39
              40:      6(ptr) Load 34(b2)
              41:      6(ptr) Load 37(b3)
              42:     30(ptr) AccessChain 41 27
              43:      7(int) Load 42 Aligned 4
              44:     30(ptr) AccessChain 40 23
                              Store 44 43 Aligned 16
              47:      6(ptr) Load 34(b2)
              48:   14(ivec2) Bitcast 47
                              Store 46(j) 48
              51:     50(ptr) AccessChain 46(j) 49
              52:      9(int) Load 51
              56: 55(ResType) IAddCarry 52 53
              57:      9(int) CompositeExtract 56 1
                              Store 54(carry) 57
              58:      9(int) CompositeExtract 56 0
              59:     50(ptr) AccessChain 46(j) 49
                              Store 59 58
              60:      9(int) Load 54(carry)
              62:     50(ptr) AccessChain 46(j) 61
              63:      9(int) Load 62
              64:      9(int) IAdd 63 60
              65:     50(ptr) AccessChain 46(j) 61
                              Store 65 64
              66:   14(ivec2) Load 46(j)
              67:      6(ptr) Bitcast 66
                              Store 34(b2) 67
                              Return
                              FunctionEnd
