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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 69 176
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 420
                              Name 4  "main"
                              Name 8  "S"
                              MemberName 8(S) 0  "color"
                              Name 11  "GetColor1(struct-S-vf31;"
                              Name 10  "i"
                              Name 18  "GetColor2(struct-S-vf31;i1;"
                              Name 16  "i"
                              Name 17  "comp"
                              Name 22  "GetColor3(struct-S-vf31;i1;"
                              Name 20  "i"
                              Name 21  "comp"
                              Name 26  "GetColor4(struct-S-vf31;i1;"
                              Name 24  "i"
                              Name 25  "comp"
                              Name 30  "GetColor5(struct-S-vf31;i1;"
                              Name 28  "i"
                              Name 29  "comp"
                              Name 34  "GetColor6(struct-S-vf31;i1;"
                              Name 32  "i"
                              Name 33  "comp"
                              Name 38  "GetColor7(struct-S-vf31;i1;"
                              Name 36  "i"
                              Name 37  "comp"
                              Name 42  "GetColor8(struct-S-vf31;i1;"
                              Name 40  "i"
                              Name 41  "comp"
                              Name 46  "GetColor9(struct-S-vf31;i1;"
                              Name 44  "i"
                              Name 45  "comp"
                              Name 50  "GetColor10(struct-S-vf31;i1;"
                              Name 48  "i"
                              Name 49  "comp"
                              Name 54  "GetColor11(struct-S-vf31;i1;"
                              Name 52  "i"
                              Name 53  "comp"
                              Name 58  "GetColor12(struct-S-vf31;i1;"
                              Name 56  "i"
                              Name 57  "comp"
                              Name 62  "GetColor13(struct-S-vf31;i1;"
                              Name 60  "i"
                              Name 61  "comp"
                              Name 66  "GetColor14(struct-S-vf31;i1;"
                              Name 64  "i"
                              Name 65  "comp"
                              Name 69  "OutColor"
                              Name 171  "s"
                              Name 176  "u"
                              Name 177  "param"
                              Name 181  "param"
                              Name 185  "param"
                              Name 189  "param"
                              Name 193  "param"
                              Name 197  "param"
                              Name 201  "param"
                              Name 205  "param"
                              Name 209  "param"
                              Name 213  "param"
                              Name 217  "param"
                              Name 221  "param"
                              Name 225  "param"
                              Decorate 69(OutColor) Location 0
                              Decorate 176(u) Flat
                              Decorate 176(u) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
            8(S):             TypeStruct 7(fvec3)
               9:             TypeFunction 2 8(S)
              13:             TypeInt 32 1
              14:             TypePointer Function 13(int)
              15:             TypeFunction 2 8(S) 14(ptr)
              68:             TypePointer Output 7(fvec3)
    69(OutColor):     68(ptr) Variable Output
              70:     13(int) Constant 0
              71:             TypeInt 32 0
              72:     71(int) Constant 0
              99:             TypeVector 6(float) 2
             111:             TypePointer Output 6(float)
             114:     71(int) Constant 1
             117:     71(int) Constant 2
             154:             TypeVector 71(int) 2
             155:  154(ivec2) ConstantComposite 117 114
             164:             TypeVector 71(int) 3
             165:  164(ivec3) ConstantComposite 117 114 72
             168:    6(float) Constant 0
             169:    7(fvec3) ConstantComposite 168 168 168
             170:             TypePointer Function 8(S)
             175:             TypePointer Input 13(int)
          176(u):    175(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
          171(s):    170(ptr) Variable Function
      177(param):     14(ptr) Variable Function
      181(param):     14(ptr) Variable Function
      185(param):     14(ptr) Variable Function
      189(param):     14(ptr) Variable Function
      193(param):     14(ptr) Variable Function
      197(param):     14(ptr) Variable Function
      201(param):     14(ptr) Variable Function
      205(param):     14(ptr) Variable Function
      209(param):     14(ptr) Variable Function
      213(param):     14(ptr) Variable Function
      217(param):     14(ptr) Variable Function
      221(param):     14(ptr) Variable Function
      225(param):     14(ptr) Variable Function
                              Store 69(OutColor) 169
             172:        8(S) Load 171(s)
             173:           2 FunctionCall 11(GetColor1(struct-S-vf31;) 172
             174:        8(S) Load 171(s)
             178:     13(int) Load 176(u)
                              Store 177(param) 178
             179:           2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 174 177(param)
             180:        8(S) Load 171(s)
             182:     13(int) Load 176(u)
                              Store 181(param) 182
             183:           2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 180 181(param)
             184:        8(S) Load 171(s)
             186:     13(int) Load 176(u)
                              Store 185(param) 186
             187:           2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 184 185(param)
             188:        8(S) Load 171(s)
             190:     13(int) Load 176(u)
                              Store 189(param) 190
             191:           2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 188 189(param)
             192:        8(S) Load 171(s)
             194:     13(int) Load 176(u)
                              Store 193(param) 194
             195:           2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 192 193(param)
             196:        8(S) Load 171(s)
             198:     13(int) Load 176(u)
                              Store 197(param) 198
             199:           2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 196 197(param)
             200:        8(S) Load 171(s)
             202:     13(int) Load 176(u)
                              Store 201(param) 202
             203:           2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 200 201(param)
             204:        8(S) Load 171(s)
             206:     13(int) Load 176(u)
                              Store 205(param) 206
             207:           2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 204 205(param)
             208:        8(S) Load 171(s)
             210:     13(int) Load 176(u)
                              Store 209(param) 210
             211:           2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 208 209(param)
             212:        8(S) Load 171(s)
             214:     13(int) Load 176(u)
                              Store 213(param) 214
             215:           2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 212 213(param)
             216:        8(S) Load 171(s)
             218:     13(int) Load 176(u)
                              Store 217(param) 218
             219:           2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 216 217(param)
             220:        8(S) Load 171(s)
             222:     13(int) Load 176(u)
                              Store 221(param) 222
             223:           2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 220 221(param)
             224:        8(S) Load 171(s)
             226:     13(int) Load 176(u)
                              Store 225(param) 226
             227:           2 FunctionCall 66(GetColor14(struct-S-vf31;i1;) 224 225(param)
                              Return
                              FunctionEnd
11(GetColor1(struct-S-vf31;):           2 Function None 9
           10(i):        8(S) FunctionParameter
              12:             Label
              73:    6(float) CompositeExtract 10(i) 0 0
              74:    7(fvec3) Load 69(OutColor)
              75:    7(fvec3) CompositeConstruct 73 73 73
              76:    7(fvec3) FAdd 74 75
                              Store 69(OutColor) 76
                              Return
                              FunctionEnd
18(GetColor2(struct-S-vf31;i1;):           2 Function None 15
           16(i):        8(S) FunctionParameter
        17(comp):     14(ptr) FunctionParameter
              19:             Label
              77:     13(int) Load 17(comp)
              78:    7(fvec3) CompositeExtract 16(i) 0
              79:    6(float) VectorExtractDynamic 78 77
              80:    7(fvec3) Load 69(OutColor)
              81:    7(fvec3) CompositeConstruct 79 79 79
              82:    7(fvec3) FAdd 80 81
                              Store 69(OutColor) 82
                              Return
                              FunctionEnd
22(GetColor3(struct-S-vf31;i1;):           2 Function None 15
           20(i):        8(S) FunctionParameter
        21(comp):     14(ptr) FunctionParameter
              23:             Label
              83:     13(int) Load 21(comp)
              84:    7(fvec3) CompositeExtract 20(i) 0
              85:    6(float) VectorExtractDynamic 84 83
              86:    7(fvec3) Load 69(OutColor)
              87:    7(fvec3) CompositeConstruct 85 85 85
              88:    7(fvec3) FAdd 86 87
                              Store 69(OutColor) 88
                              Return
                              FunctionEnd
26(GetColor4(struct-S-vf31;i1;):           2 Function None 15
           24(i):        8(S) FunctionParameter
        25(comp):     14(ptr) FunctionParameter
              27:             Label
              89:     13(int) Load 25(comp)
              90:    7(fvec3) CompositeExtract 24(i) 0
              91:    6(float) VectorExtractDynamic 90 89
              92:    7(fvec3) Load 69(OutColor)
              93:    7(fvec3) CompositeConstruct 91 91 91
              94:    7(fvec3) FAdd 92 93
                              Store 69(OutColor) 94
                              Return
                              FunctionEnd
30(GetColor5(struct-S-vf31;i1;):           2 Function None 15
           28(i):        8(S) FunctionParameter
        29(comp):     14(ptr) FunctionParameter
              31:             Label
              95:    7(fvec3) CompositeExtract 28(i) 0
              96:    7(fvec3) Load 69(OutColor)
              97:    7(fvec3) FAdd 96 95
                              Store 69(OutColor) 97
                              Return
                              FunctionEnd
34(GetColor6(struct-S-vf31;i1;):           2 Function None 15
           32(i):        8(S) FunctionParameter
        33(comp):     14(ptr) FunctionParameter
              35:             Label
              98:     13(int) Load 33(comp)
             100:    7(fvec3) CompositeExtract 32(i) 0
             101:   99(fvec2) VectorShuffle 100 100 1 0
             102:    6(float) VectorExtractDynamic 101 98
             103:    7(fvec3) Load 69(OutColor)
             104:    7(fvec3) CompositeConstruct 102 102 102
             105:    7(fvec3) FAdd 103 104
                              Store 69(OutColor) 105
                              Return
                              FunctionEnd
38(GetColor7(struct-S-vf31;i1;):           2 Function None 15
           36(i):        8(S) FunctionParameter
        37(comp):     14(ptr) FunctionParameter
              39:             Label
             106:    7(fvec3) CompositeExtract 36(i) 0
             107:   99(fvec2) VectorShuffle 106 106 0 1
             108:    7(fvec3) Load 69(OutColor)
             109:   99(fvec2) VectorShuffle 108 108 0 1
             110:   99(fvec2) FAdd 109 107
             112:    111(ptr) AccessChain 69(OutColor) 72
             113:    6(float) CompositeExtract 110 0
                              Store 112 113
             115:    111(ptr) AccessChain 69(OutColor) 114
             116:    6(float) CompositeExtract 110 1
                              Store 115 116
                              Return
                              FunctionEnd
42(GetColor8(struct-S-vf31;i1;):           2 Function None 15
           40(i):        8(S) FunctionParameter
        41(comp):     14(ptr) FunctionParameter
              43:             Label
             118:    6(float) CompositeExtract 40(i) 0 2
             119:    7(fvec3) Load 69(OutColor)
             120:    7(fvec3) CompositeConstruct 118 118 118
             121:    7(fvec3) FAdd 119 120
                              Store 69(OutColor) 121
                              Return
                              FunctionEnd
46(GetColor9(struct-S-vf31;i1;):           2 Function None 15
           44(i):        8(S) FunctionParameter
        45(comp):     14(ptr) FunctionParameter
              47:             Label
             122:    7(fvec3) CompositeExtract 44(i) 0
             123:    7(fvec3) Load 69(OutColor)
             124:    7(fvec3) VectorShuffle 123 123 2 0 1
             125:    7(fvec3) FAdd 124 122
             126:    7(fvec3) Load 69(OutColor)
             127:    7(fvec3) VectorShuffle 126 125 4 5 3
                              Store 69(OutColor) 127
                              Return
                              FunctionEnd
50(GetColor10(struct-S-vf31;i1;):           2 Function None 15
           48(i):        8(S) FunctionParameter
        49(comp):     14(ptr) FunctionParameter
              51:             Label
             128:    7(fvec3) CompositeExtract 48(i) 0
             129:   99(fvec2) VectorShuffle 128 128 0 1
             130:    7(fvec3) Load 69(OutColor)
             131:   99(fvec2) VectorShuffle 130 130 2 1
             132:   99(fvec2) FAdd 131 129
             133:    111(ptr) AccessChain 69(OutColor) 117
             134:    6(float) CompositeExtract 132 0
                              Store 133 134
             135:    111(ptr) AccessChain 69(OutColor) 114
             136:    6(float) CompositeExtract 132 1
                              Store 135 136
                              Return
                              FunctionEnd
54(GetColor11(struct-S-vf31;i1;):           2 Function None 15
           52(i):        8(S) FunctionParameter
        53(comp):     14(ptr) FunctionParameter
              55:             Label
             137:    7(fvec3) CompositeExtract 52(i) 0
             138:   99(fvec2) VectorShuffle 137 137 0 1
             139:    7(fvec3) Load 69(OutColor)
             140:   99(fvec2) VectorShuffle 139 139 0 2
             141:   99(fvec2) FAdd 140 138
             142:    111(ptr) AccessChain 69(OutColor) 72
             143:    6(float) CompositeExtract 141 0
                              Store 142 143
             144:    111(ptr) AccessChain 69(OutColor) 117
             145:    6(float) CompositeExtract 141 1
                              Store 144 145
                              Return
                              FunctionEnd
58(GetColor12(struct-S-vf31;i1;):           2 Function None 15
           56(i):        8(S) FunctionParameter
        57(comp):     14(ptr) FunctionParameter
              59:             Label
             146:     13(int) Load 57(comp)
             147:    6(float) CompositeExtract 56(i) 0 0
             148:    111(ptr) AccessChain 69(OutColor) 146
             149:    6(float) Load 148
             150:    6(float) FAdd 149 147
             151:    111(ptr) AccessChain 69(OutColor) 146
                              Store 151 150
                              Return
                              FunctionEnd
62(GetColor13(struct-S-vf31;i1;):           2 Function None 15
           60(i):        8(S) FunctionParameter
        61(comp):     14(ptr) FunctionParameter
              63:             Label
             152:     13(int) Load 61(comp)
             153:    6(float) CompositeExtract 60(i) 0 0
             156:     71(int) VectorExtractDynamic 155 152
             157:    111(ptr) AccessChain 69(OutColor) 156
             158:    6(float) Load 157
             159:    6(float) FAdd 158 153
             160:     71(int) VectorExtractDynamic 155 152
             161:    111(ptr) AccessChain 69(OutColor) 160
                              Store 161 159
                              Return
                              FunctionEnd
66(GetColor14(struct-S-vf31;i1;):           2 Function None 15
           64(i):        8(S) FunctionParameter
        65(comp):     14(ptr) FunctionParameter
              67:             Label
             162:     13(int) Load 65(comp)
             163:    6(float) CompositeExtract 64(i) 0 0
             166:     71(int) VectorExtractDynamic 165 162
             167:    111(ptr) AccessChain 69(OutColor) 166
                              Store 167 163
                              Return
                              FunctionEnd
