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

                              Capability Shader
                              Capability InterpolationFunction
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 13 24 33 41 47 72 98
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              Name 4  "main"
                              Name 9  "f4"
                              Name 13  "if1"
                              Name 24  "if2"
                              Name 33  "if3"
                              Name 41  "if4"
                              Name 47  "samp"
                              Name 72  "offset"
                              Name 98  "fragColor"
                              Decorate 47(samp) Flat
                              Decorate 72(offset) Flat
               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:             TypeVector 6(float) 3
              32:             TypePointer Input 31(fvec3)
         33(if3):     32(ptr) Variable Input
              40:             TypePointer Input 7(fvec4)
         41(if4):     40(ptr) Variable Input
              45:             TypeInt 32 1
              46:             TypePointer Input 45(int)
        47(samp):     46(ptr) Variable Input
      72(offset):     23(ptr) Variable Input
              97:             TypePointer Output 7(fvec4)
   98(fragColor):     97(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:    7(fvec4) Load 9(f4)
              30:    7(fvec4) VectorShuffle 29 28 4 5 2 3
                              Store 9(f4) 30
              34:   31(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 33(if3)
              35:    7(fvec4) Load 9(f4)
              36:   31(fvec3) VectorShuffle 35 35 0 1 2
              37:   31(fvec3) FAdd 36 34
              38:    7(fvec4) Load 9(f4)
              39:    7(fvec4) VectorShuffle 38 37 4 5 6 3
                              Store 9(f4) 39
              42:    7(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 41(if4)
              43:    7(fvec4) Load 9(f4)
              44:    7(fvec4) FAdd 43 42
                              Store 9(f4) 44
              48:     45(int) Load 47(samp)
              49:    6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 13(if1) 48
              50:     17(ptr) AccessChain 9(f4) 16
              51:    6(float) Load 50
              52:    6(float) FAdd 51 49
              53:     17(ptr) AccessChain 9(f4) 16
                              Store 53 52
              54:     45(int) Load 47(samp)
              55:   22(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 24(if2) 54
              56:    7(fvec4) Load 9(f4)
              57:   22(fvec2) VectorShuffle 56 56 0 1
              58:   22(fvec2) FAdd 57 55
              59:    7(fvec4) Load 9(f4)
              60:    7(fvec4) VectorShuffle 59 58 4 5 2 3
                              Store 9(f4) 60
              61:     45(int) Load 47(samp)
              62:   31(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 33(if3) 61
              63:    7(fvec4) Load 9(f4)
              64:   31(fvec3) VectorShuffle 63 63 0 1 2
              65:   31(fvec3) FAdd 64 62
              66:    7(fvec4) Load 9(f4)
              67:    7(fvec4) VectorShuffle 66 65 4 5 6 3
                              Store 9(f4) 67
              68:     45(int) Load 47(samp)
              69:    7(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 41(if4) 68
              70:    7(fvec4) Load 9(f4)
              71:    7(fvec4) FAdd 70 69
                              Store 9(f4) 71
              73:   22(fvec2) Load 72(offset)
              74:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 13(if1) 73
              75:     17(ptr) AccessChain 9(f4) 16
              76:    6(float) Load 75
              77:    6(float) FAdd 76 74
              78:     17(ptr) AccessChain 9(f4) 16
                              Store 78 77
              79:   22(fvec2) Load 72(offset)
              80:   22(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 24(if2) 79
              81:    7(fvec4) Load 9(f4)
              82:   22(fvec2) VectorShuffle 81 81 0 1
              83:   22(fvec2) FAdd 82 80
              84:    7(fvec4) Load 9(f4)
              85:    7(fvec4) VectorShuffle 84 83 4 5 2 3
                              Store 9(f4) 85
              86:   22(fvec2) Load 72(offset)
              87:   31(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 33(if3) 86
              88:    7(fvec4) Load 9(f4)
              89:   31(fvec3) VectorShuffle 88 88 0 1 2
              90:   31(fvec3) FAdd 89 87
              91:    7(fvec4) Load 9(f4)
              92:    7(fvec4) VectorShuffle 91 90 4 5 6 3
                              Store 9(f4) 92
              93:   22(fvec2) Load 72(offset)
              94:    7(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 41(if4) 93
              95:    7(fvec4) Load 9(f4)
              96:    7(fvec4) FAdd 95 94
                              Store 9(f4) 96
              99:    7(fvec4) Load 9(f4)
                              Store 98(fragColor) 99
                              Return
                              FunctionEnd
