spv.double.comp
Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.


Linked compute stage:


// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 62

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main"
                              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 58  "roll"
                              Name 61  "destTex"
                              Decorate 8(bufName) GLSLShared
                              Decorate 8(bufName) BufferBlock
                              Decorate 26(gl_GlobalInvocationID) BuiltIn GlobalInvocationId
                              Decorate 33(gl_LocalInvocationID) BuiltIn LocalInvocationId
               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:             TypePointer UniformConstant 7(float)
        58(roll):     57(ptr) Variable UniformConstant
              59:             TypeImage 6(float) 2D nonsampled format:Unknown
              60:             TypePointer UniformConstant 59
     61(destTex):     60(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
