spv.double.comp
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 60

                              Capability Shader
                              Capability Float64
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 26 33
                              ExecutionMode 4 LocalSize 1 1 1
                              Source GLSL 430
                              Name 4  "main"
                              Name 8  "bufName"
                              MemberName 8(bufName) 0  "f"
                              MemberName 8(bufName) 1  "d"
                              Name 10  "bufInst"
                              Name 22  "storePos"
                              Name 26  "gl_GlobalInvocationID"
                              Name 32  "localCoef"
                              Name 33  "gl_LocalInvocationID"
                              Name 49  "aa"
                              Name 54  "globalCoef"
                              Name 59  "destTex"
                              MemberDecorate 8(bufName) 0 Offset 0
                              MemberDecorate 8(bufName) 1 Offset 8
                              Decorate 8(bufName) BufferBlock
                              Decorate 10(bufInst) DescriptorSet 0
                              Decorate 26(gl_GlobalInvocationID) BuiltIn GlobalInvocationId
                              Decorate 33(gl_LocalInvocationID) BuiltIn LocalInvocationId
                              Decorate 59(destTex) DescriptorSet 0
                              Decorate 59(destTex) NonReadable
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeFloat 64
      8(bufName):             TypeStruct 6(float) 7(float)
               9:             TypePointer Uniform 8(bufName)
     10(bufInst):      9(ptr) Variable Uniform
              11:             TypeInt 32 1
              12:     11(int) Constant 1
              13:    7(float) Constant 1413754136 1074340347
              14:             TypePointer Uniform 7(float)
              16:     11(int) Constant 0
              17:    6(float) Constant 1095307129
              18:             TypePointer Uniform 6(float)
              20:             TypeVector 11(int) 2
              21:             TypePointer Function 20(ivec2)
              23:             TypeInt 32 0
              24:             TypeVector 23(int) 3
              25:             TypePointer Input 24(ivec3)
26(gl_GlobalInvocationID):     25(ptr) Variable Input
              27:             TypeVector 23(int) 2
              31:             TypePointer Function 7(float)
33(gl_LocalInvocationID):     25(ptr) Variable Input
              37:     11(int) Constant 8
              40:             TypeVector 6(float) 2
              42:    6(float) Constant 1090519040
              47:             TypeVector 7(float) 4
              48:             TypePointer Function 47(fvec4)
              50:    7(float) Constant 2576980378 1071225241
              51:    7(float) Constant 2576980378 1070176665
              52:    7(float) Constant 858993459 1070805811
              53:   47(fvec4) ConstantComposite 50 51 52 50
              55:    7(float) Constant 0 1072693248
              56:    7(float) Constant 3229815407 1074340298
              57:             TypeImage 6(float) 2D nonsampled format:Unknown
              58:             TypePointer UniformConstant 57
     59(destTex):     58(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
    22(storePos):     21(ptr) Variable Function
   32(localCoef):     31(ptr) Variable Function
          49(aa):     48(ptr) Variable Function
  54(globalCoef):     31(ptr) Variable Function
              15:     14(ptr) AccessChain 10(bufInst) 12
                              Store 15 13
              19:     18(ptr) AccessChain 10(bufInst) 16
                              Store 19 17
              28:   24(ivec3) Load 26(gl_GlobalInvocationID)
              29:   27(ivec2) VectorShuffle 28 28 0 1
              30:   20(ivec2) Bitcast 29
                              Store 22(storePos) 30
              34:   24(ivec3) Load 33(gl_LocalInvocationID)
              35:   27(ivec2) VectorShuffle 34 34 0 1
              36:   20(ivec2) Bitcast 35
              38:   20(ivec2) CompositeConstruct 37 37
              39:   20(ivec2) ISub 36 38
              41:   40(fvec2) ConvertSToF 39
              43:   40(fvec2) CompositeConstruct 42 42
              44:   40(fvec2) FDiv 41 43
              45:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 44
              46:    7(float) FConvert 45
                              Store 32(localCoef) 46
                              Store 49(aa) 53
                              Store 54(globalCoef) 55
                              Return
                              FunctionEnd
