spv.interpOps.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 120

                              Capability Shader
                              Capability InterpolationFunction
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 13 24 36 49 55 86 118
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              Name 4  "main"
                              Name 9  "f4"
                              Name 13  "if1"
                              Name 24  "if2"
                              Name 36  "if3"
                              Name 49  "if4"
                              Name 55  "samp"
                              Name 86  "offset"
                              Name 118  "fragColor"
                              Decorate 13(if1) Location 0
                              Decorate 24(if2) Location 1
                              Decorate 36(if3) Location 2
                              Decorate 49(if4) Location 3
                              Decorate 55(samp) Flat
                              Decorate 55(samp) Location 4
                              Decorate 86(offset) Flat
                              Decorate 86(offset) Location 5
                              Decorate 118(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:             TypePointer Input 6(float)
         13(if1):     12(ptr) Variable Input
              15:             TypeInt 32 0
              16:     15(int) Constant 0
              17:             TypePointer Function 6(float)
              22:             TypeVector 6(float) 2
              23:             TypePointer Input 22(fvec2)
         24(if2):     23(ptr) Variable Input
              31:     15(int) Constant 1
              34:             TypeVector 6(float) 3
              35:             TypePointer Input 34(fvec3)
         36(if3):     35(ptr) Variable Input
              45:     15(int) Constant 2
              48:             TypePointer Input 7(fvec4)
         49(if4):     48(ptr) Variable Input
              53:             TypeInt 32 1
              54:             TypePointer Input 53(int)
        55(samp):     54(ptr) Variable Input
      86(offset):     23(ptr) Variable Input
             117:             TypePointer Output 7(fvec4)
  118(fragColor):    117(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
           9(f4):      8(ptr) Variable Function
                              Store 9(f4) 11
              14:    6(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 13(if1)
              18:     17(ptr) AccessChain 9(f4) 16
              19:    6(float) Load 18
              20:    6(float) FAdd 19 14
              21:     17(ptr) AccessChain 9(f4) 16
                              Store 21 20
              25:   22(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 24(if2)
              26:    7(fvec4) Load 9(f4)
              27:   22(fvec2) VectorShuffle 26 26 0 1
              28:   22(fvec2) FAdd 27 25
              29:     17(ptr) AccessChain 9(f4) 16
              30:    6(float) CompositeExtract 28 0
                              Store 29 30
              32:     17(ptr) AccessChain 9(f4) 31
              33:    6(float) CompositeExtract 28 1
                              Store 32 33
              37:   34(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 36(if3)
              38:    7(fvec4) Load 9(f4)
              39:   34(fvec3) VectorShuffle 38 38 0 1 2
              40:   34(fvec3) FAdd 39 37
              41:     17(ptr) AccessChain 9(f4) 16
              42:    6(float) CompositeExtract 40 0
                              Store 41 42
              43:     17(ptr) AccessChain 9(f4) 31
              44:    6(float) CompositeExtract 40 1
                              Store 43 44
              46:     17(ptr) AccessChain 9(f4) 45
              47:    6(float) CompositeExtract 40 2
                              Store 46 47
              50:    7(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 49(if4)
              51:    7(fvec4) Load 9(f4)
              52:    7(fvec4) FAdd 51 50
                              Store 9(f4) 52
              56:     53(int) Load 55(samp)
              57:    6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 13(if1) 56
              58:     17(ptr) AccessChain 9(f4) 16
              59:    6(float) Load 58
              60:    6(float) FAdd 59 57
              61:     17(ptr) AccessChain 9(f4) 16
                              Store 61 60
              62:     53(int) Load 55(samp)
              63:   22(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 24(if2) 62
              64:    7(fvec4) Load 9(f4)
              65:   22(fvec2) VectorShuffle 64 64 0 1
              66:   22(fvec2) FAdd 65 63
              67:     17(ptr) AccessChain 9(f4) 16
              68:    6(float) CompositeExtract 66 0
                              Store 67 68
              69:     17(ptr) AccessChain 9(f4) 31
              70:    6(float) CompositeExtract 66 1
                              Store 69 70
              71:     53(int) Load 55(samp)
              72:   34(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 36(if3) 71
              73:    7(fvec4) Load 9(f4)
              74:   34(fvec3) VectorShuffle 73 73 0 1 2
              75:   34(fvec3) FAdd 74 72
              76:     17(ptr) AccessChain 9(f4) 16
              77:    6(float) CompositeExtract 75 0
                              Store 76 77
              78:     17(ptr) AccessChain 9(f4) 31
              79:    6(float) CompositeExtract 75 1
                              Store 78 79
              80:     17(ptr) AccessChain 9(f4) 45
              81:    6(float) CompositeExtract 75 2
                              Store 80 81
              82:     53(int) Load 55(samp)
              83:    7(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 49(if4) 82
              84:    7(fvec4) Load 9(f4)
              85:    7(fvec4) FAdd 84 83
                              Store 9(f4) 85
              87:   22(fvec2) Load 86(offset)
              88:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 13(if1) 87
              89:     17(ptr) AccessChain 9(f4) 16
              90:    6(float) Load 89
              91:    6(float) FAdd 90 88
              92:     17(ptr) AccessChain 9(f4) 16
                              Store 92 91
              93:   22(fvec2) Load 86(offset)
              94:   22(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 24(if2) 93
              95:    7(fvec4) Load 9(f4)
              96:   22(fvec2) VectorShuffle 95 95 0 1
              97:   22(fvec2) FAdd 96 94
              98:     17(ptr) AccessChain 9(f4) 16
              99:    6(float) CompositeExtract 97 0
                              Store 98 99
             100:     17(ptr) AccessChain 9(f4) 31
             101:    6(float) CompositeExtract 97 1
                              Store 100 101
             102:   22(fvec2) Load 86(offset)
             103:   34(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 36(if3) 102
             104:    7(fvec4) Load 9(f4)
             105:   34(fvec3) VectorShuffle 104 104 0 1 2
             106:   34(fvec3) FAdd 105 103
             107:     17(ptr) AccessChain 9(f4) 16
             108:    6(float) CompositeExtract 106 0
                              Store 107 108
             109:     17(ptr) AccessChain 9(f4) 31
             110:    6(float) CompositeExtract 106 1
                              Store 109 110
             111:     17(ptr) AccessChain 9(f4) 45
             112:    6(float) CompositeExtract 106 2
                              Store 111 112
             113:   22(fvec2) Load 86(offset)
             114:    7(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 49(if4) 113
             115:    7(fvec4) Load 9(f4)
             116:    7(fvec4) FAdd 115 114
                              Store 9(f4) 116
             119:    7(fvec4) Load 9(f4)
                              Store 118(fragColor) 119
                              Return
                              FunctionEnd
