spv.paramMemory.frag
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 69

                              Capability Shader
                              Capability StorageImageReadWithoutFormat
                              Capability StorageImageWriteWithoutFormat
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 27 66
                              ExecutionMode 4 OriginUpperLeft
                              Source ESSL 310
                              Name 4  "main"
                              Name 16  "image_load(I21;vi2;"
                              Name 14  "image"
                              Name 15  "coords"
                              Name 23  "image_store(I21;vi2;vf4;"
                              Name 20  "image"
                              Name 21  "coords"
                              Name 22  "data"
                              Name 27  "in_coords"
                              Name 35  "read1"
                              Name 38  "image1"
                              Name 39  "param"
                              Name 42  "read2"
                              Name 45  "image2"
                              Name 46  "param"
                              Name 49  "image3"
                              Name 53  "param"
                              Name 55  "param"
                              Name 57  "image4"
                              Name 61  "param"
                              Name 63  "param"
                              Name 66  "out_color"
                              Decorate 14(image) Coherent
                              Decorate 14(image) NonWritable
                              Decorate 20(image) Coherent
                              Decorate 20(image) NonReadable
                              Decorate 27(in_coords) Flat
                              Decorate 27(in_coords) Location 0
                              Decorate 38(image1) DescriptorSet 0
                              Decorate 38(image1) Binding 0
                              Decorate 38(image1) Coherent
                              Decorate 38(image1) NonWritable
                              Decorate 45(image2) DescriptorSet 0
                              Decorate 45(image2) Binding 2
                              Decorate 45(image2) NonWritable
                              Decorate 49(image3) DescriptorSet 0
                              Decorate 49(image3) Binding 1
                              Decorate 49(image3) Coherent
                              Decorate 49(image3) NonReadable
                              Decorate 57(image4) DescriptorSet 0
                              Decorate 57(image4) Binding 3
                              Decorate 57(image4) NonReadable
                              Decorate 66(out_color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeImage 6(float) 2D nonsampled format:Unknown
               8:             TypePointer UniformConstant 7
               9:             TypeInt 32 1
              10:             TypeVector 9(int) 2
              11:             TypePointer Function 10(ivec2)
              12:             TypeVector 6(float) 4
              13:             TypeFunction 12(fvec4) 8(ptr) 11(ptr)
              18:             TypePointer Function 12(fvec4)
              19:             TypeFunction 2 8(ptr) 11(ptr) 18(ptr)
              26:             TypePointer Input 10(ivec2)
   27(in_coords):     26(ptr) Variable Input
              36:             TypeImage 6(float) 2D nonsampled format:Rgba32f
              37:             TypePointer UniformConstant 36
      38(image1):     37(ptr) Variable UniformConstant
              43:             TypeImage 6(float) 2D nonsampled format:Rgba16f
              44:             TypePointer UniformConstant 43
      45(image2):     44(ptr) Variable UniformConstant
      49(image3):     37(ptr) Variable UniformConstant
              51:    6(float) Constant 1056964608
      57(image4):     44(ptr) Variable UniformConstant
              59:    6(float) Constant 1073741824
              65:             TypePointer Output 12(fvec4)
   66(out_color):     65(ptr) Variable Output
              67:    6(float) Constant 0
              68:   12(fvec4) ConstantComposite 67 67 67 67
         4(main):           2 Function None 3
               5:             Label
       35(read1):     18(ptr) Variable Function
       39(param):     11(ptr) Variable Function
       42(read2):     18(ptr) Variable Function
       46(param):     11(ptr) Variable Function
       53(param):     11(ptr) Variable Function
       55(param):     18(ptr) Variable Function
       61(param):     11(ptr) Variable Function
       63(param):     18(ptr) Variable Function
              40:   10(ivec2) Load 27(in_coords)
                              Store 39(param) 40
              41:   12(fvec4) FunctionCall 16(image_load(I21;vi2;) 38(image1) 39(param)
                              Store 35(read1) 41
              47:   10(ivec2) Load 27(in_coords)
                              Store 46(param) 47
              48:   12(fvec4) FunctionCall 16(image_load(I21;vi2;) 45(image2) 46(param)
                              Store 42(read2) 48
              50:   12(fvec4) Load 35(read1)
              52:   12(fvec4) VectorTimesScalar 50 51
              54:   10(ivec2) Load 27(in_coords)
                              Store 53(param) 54
                              Store 55(param) 52
              56:           2 FunctionCall 23(image_store(I21;vi2;vf4;) 49(image3) 53(param) 55(param)
              58:   12(fvec4) Load 42(read2)
              60:   12(fvec4) VectorTimesScalar 58 59
              62:   10(ivec2) Load 27(in_coords)
                              Store 61(param) 62
                              Store 63(param) 60
              64:           2 FunctionCall 23(image_store(I21;vi2;vf4;) 57(image4) 61(param) 63(param)
                              Store 66(out_color) 68
                              Return
                              FunctionEnd
16(image_load(I21;vi2;):   12(fvec4) Function None 13
       14(image):      8(ptr) FunctionParameter
      15(coords):     11(ptr) FunctionParameter
              17:             Label
              25:           7 Load 14(image)
              28:   10(ivec2) Load 27(in_coords)
              29:   12(fvec4) ImageRead 25 28
                              ReturnValue 29
                              FunctionEnd
23(image_store(I21;vi2;vf4;):           2 Function None 19
       20(image):      8(ptr) FunctionParameter
      21(coords):     11(ptr) FunctionParameter
        22(data):     18(ptr) FunctionParameter
              24:             Label
              32:           7 Load 20(image)
              33:   10(ivec2) Load 27(in_coords)
              34:   12(fvec4) Load 22(data)
                              ImageWrite 32 33 34
                              Return
                              FunctionEnd
