spv.fragmentShaderBarycentric4.frag
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 62

                              Capability Shader
                              Capability FragmentBarycentricKHR
                              Extension  "SPV_KHR_fragment_shader_barycentric"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 8 11 20 44
                              ExecutionMode 4 OriginUpperLeft
                              Source ESSL 320
                              SourceExtension  "GL_EXT_fragment_shader_barycentric"
                              Name 4  "main"
                              Name 8  "value"
                              Name 11  "gl_BaryCoordNoPerspEXT"
                              Name 20  "vertexIDs"
                              Name 44  "vertexIDs2"
                              Decorate 8(value) Location 1
                              Decorate 11(gl_BaryCoordNoPerspEXT) BuiltIn BaryCoordNoPerspKHR
                              Decorate 20(vertexIDs) Location 0
                              Decorate 20(vertexIDs) PerVertexKHR
                              Decorate 44(vertexIDs2) Location 1
                              Decorate 44(vertexIDs2) PerVertexKHR
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Output 6(float)
        8(value):      7(ptr) Variable Output
               9:             TypeVector 6(float) 3
              10:             TypePointer Input 9(fvec3)
11(gl_BaryCoordNoPerspEXT):     10(ptr) Variable Input
              12:             TypeInt 32 0
              13:     12(int) Constant 0
              14:             TypePointer Input 6(float)
              17:     12(int) Constant 3
              18:             TypeArray 6(float) 17
              19:             TypePointer Input 18
   20(vertexIDs):     19(ptr) Variable Input
              21:             TypeInt 32 1
              22:     21(int) Constant 0
              26:     12(int) Constant 1
              29:     21(int) Constant 1
              34:     12(int) Constant 2
              37:     21(int) Constant 2
  44(vertexIDs2):     19(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              15:     14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 13
              16:    6(float) Load 15
              23:     14(ptr) AccessChain 20(vertexIDs) 22
              24:    6(float) Load 23
              25:    6(float) FMul 16 24
              27:     14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 26
              28:    6(float) Load 27
              30:     14(ptr) AccessChain 20(vertexIDs) 29
              31:    6(float) Load 30
              32:    6(float) FMul 28 31
              33:    6(float) FAdd 25 32
              35:     14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 34
              36:    6(float) Load 35
              38:     14(ptr) AccessChain 20(vertexIDs) 37
              39:    6(float) Load 38
              40:    6(float) FMul 36 39
              41:    6(float) FAdd 33 40
                              Store 8(value) 41
              42:     14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 13
              43:    6(float) Load 42
              45:     14(ptr) AccessChain 44(vertexIDs2) 22
              46:    6(float) Load 45
              47:    6(float) FMul 43 46
              48:     14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 26
              49:    6(float) Load 48
              50:     14(ptr) AccessChain 44(vertexIDs2) 29
              51:    6(float) Load 50
              52:    6(float) FMul 49 51
              53:    6(float) FAdd 47 52
              54:     14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 34
              55:    6(float) Load 54
              56:     14(ptr) AccessChain 44(vertexIDs2) 37
              57:    6(float) Load 56
              58:    6(float) FMul 55 57
              59:    6(float) FAdd 53 58
              60:    6(float) Load 8(value)
              61:    6(float) FAdd 60 59
                              Store 8(value) 61
                              Return
                              FunctionEnd
