spv.imageLoadStoreLod.frag
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 82

                              Capability Shader
                              Capability ImageCubeArray
                              Capability SparseResidency
                              Capability Image1D
                              Capability ImageReadWriteLodAMD
                              Extension  "SPV_AMD_shader_image_load_store_lod"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 77
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_AMD_shader_image_load_store_lod"
                              Name 4  "main"
                              Name 9  "f4"
                              Name 14  "i1D"
                              Name 24  "i2D"
                              Name 34  "i3D"
                              Name 46  "iiCube"
                              Name 53  "ii1DArray"
                              Name 60  "ui2DArray"
                              Name 64  "u4"
                              Name 65  "ResType"
                              Name 71  "uiCubeArray"
                              Name 77  "fragColor"
                              Decorate 14(i1D) DescriptorSet 0
                              Decorate 14(i1D) Binding 0
                              Decorate 24(i2D) DescriptorSet 0
                              Decorate 24(i2D) Binding 1
                              Decorate 34(i3D) DescriptorSet 0
                              Decorate 34(i3D) Binding 2
                              Decorate 46(iiCube) DescriptorSet 0
                              Decorate 46(iiCube) Binding 3
                              Decorate 53(ii1DArray) DescriptorSet 0
                              Decorate 53(ii1DArray) Binding 4
                              Decorate 60(ui2DArray) DescriptorSet 0
                              Decorate 60(ui2DArray) Binding 5
                              Decorate 71(uiCubeArray) DescriptorSet 0
                              Decorate 71(uiCubeArray) Binding 6
                              Decorate 77(fragColor) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
              10:    6(float) Constant 0
              11:    7(fvec4) ConstantComposite 10 10 10 10
              12:             TypeImage 6(float) 1D nonsampled format:Rgba32f
              13:             TypePointer UniformConstant 12
         14(i1D):     13(ptr) Variable UniformConstant
              16:             TypeInt 32 1
              17:     16(int) Constant 1
              18:     16(int) Constant 3
              22:             TypeImage 6(float) 2D nonsampled format:Rgba32f
              23:             TypePointer UniformConstant 22
         24(i2D):     23(ptr) Variable UniformConstant
              26:             TypeVector 16(int) 2
              27:     16(int) Constant 2
              28:   26(ivec2) ConstantComposite 27 18
              32:             TypeImage 6(float) 3D nonsampled format:Rgba32f
              33:             TypePointer UniformConstant 32
         34(i3D):     33(ptr) Variable UniformConstant
              36:             TypeVector 16(int) 3
              37:     16(int) Constant 4
              38:     16(int) Constant 5
              39:     16(int) Constant 6
              40:   36(ivec3) ConstantComposite 37 38 39
              44:             TypeImage 16(int) Cube nonsampled format:Rgba32i
              45:             TypePointer UniformConstant 44
      46(iiCube):     45(ptr) Variable UniformConstant
              49:             TypeVector 16(int) 4
              51:             TypeImage 16(int) 1D array nonsampled format:Rgba32i
              52:             TypePointer UniformConstant 51
   53(ii1DArray):     52(ptr) Variable UniformConstant
              57:             TypeInt 32 0
              58:             TypeImage 57(int) 2D array nonsampled format:Rgba32ui
              59:             TypePointer UniformConstant 58
   60(ui2DArray):     59(ptr) Variable UniformConstant
              62:             TypeVector 57(int) 4
              63:             TypePointer Function 62(ivec4)
     65(ResType):             TypeStruct 16(int) 62(ivec4)
              69:             TypeImage 57(int) Cube array nonsampled format:Rgba32ui
              70:             TypePointer UniformConstant 69
 71(uiCubeArray):     70(ptr) Variable UniformConstant
              76:             TypePointer Output 7(fvec4)
   77(fragColor):     76(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
           9(f4):      8(ptr) Variable Function
          64(u4):     63(ptr) Variable Function
                              Store 9(f4) 11
              15:          12 Load 14(i1D)
              19:    7(fvec4) ImageRead 15 17 Lod 18
              20:    7(fvec4) Load 9(f4)
              21:    7(fvec4) FAdd 20 19
                              Store 9(f4) 21
              25:          22 Load 24(i2D)
              29:    7(fvec4) ImageRead 25 28 Lod 18
              30:    7(fvec4) Load 9(f4)
              31:    7(fvec4) FAdd 30 29
                              Store 9(f4) 31
              35:          32 Load 34(i3D)
              41:    7(fvec4) ImageRead 35 40 Lod 18
              42:    7(fvec4) Load 9(f4)
              43:    7(fvec4) FAdd 42 41
                              Store 9(f4) 43
              47:          44 Load 46(iiCube)
              48:    7(fvec4) Load 9(f4)
              50:   49(ivec4) ConvertFToS 48
                              ImageWrite 47 40 50 Lod 18
              54:          51 Load 53(ii1DArray)
              55:    7(fvec4) Load 9(f4)
              56:   49(ivec4) ConvertFToS 55
                              ImageWrite 54 28 56 Lod 18
              61:          58 Load 60(ui2DArray)
              66: 65(ResType) ImageSparseRead 61 40 Lod 18
              67:   62(ivec4) CompositeExtract 66 1
                              Store 64(u4) 67
              68:     16(int) CompositeExtract 66 0
              72:          69 Load 71(uiCubeArray)
              73: 65(ResType) ImageSparseRead 72 40 Lod 18
              74:   62(ivec4) CompositeExtract 73 1
                              Store 64(u4) 74
              75:     16(int) CompositeExtract 73 0
              78:    7(fvec4) Load 9(f4)
              79:   62(ivec4) Load 64(u4)
              80:    7(fvec4) ConvertUToF 79
              81:    7(fvec4) FAdd 78 80
                              Store 77(fragColor) 81
                              Return
                              FunctionEnd
