Generate separate stores for partially swizzled memory stores

Full vector and fully specified vector swizzle stores are not affected by this change, only partial swizzles ie swizzles with fewer components than the vector being stored to.

Previously the vector being stored to loaded and any components not specified in the swizzle were used to create a full store to the vector.

While this change generates more SPIR-V instructions, it is necessary for correctness.

Fixes #2518.
diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out
index 3e2096d..5fbb922 100644
--- a/Test/baseResults/spv.image.frag.out
+++ b/Test/baseResults/spv.image.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 395
+// Id's are bound by 405
 
                               Capability Shader
                               Capability StorageImageMultisample
@@ -16,79 +16,79 @@
                               Capability StorageImageWriteWithoutFormat
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 132 142 152 248 381 394
+                              EntryPoint Fragment 4  "main" 143 153 163 258 391 404
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               Name 4  "main"
                               Name 9  "iv"
                               Name 15  "i1D"
                               Name 27  "i2D"
-                              Name 38  "i3D"
-                              Name 45  "iCube"
-                              Name 55  "iCubeArray"
-                              Name 62  "i2DRect"
-                              Name 72  "i1DArray"
-                              Name 82  "i2DArray"
-                              Name 89  "iBuffer"
-                              Name 98  "i2DMS"
-                              Name 108  "i2DMSArray"
-                              Name 127  "v"
-                              Name 132  "ic1D"
-                              Name 142  "ic2D"
-                              Name 152  "ic3D"
-                              Name 229  "ui"
-                              Name 232  "ii1D"
-                              Name 245  "ui2D"
-                              Name 248  "value"
-                              Name 357  "ii2DMS"
-                              Name 367  "ui2DMSArray"
-                              Name 376  "wo2D"
-                              Name 381  "fragData"
-                              Name 394  "ic4D"
+                              Name 41  "i3D"
+                              Name 48  "iCube"
+                              Name 60  "iCubeArray"
+                              Name 67  "i2DRect"
+                              Name 79  "i1DArray"
+                              Name 91  "i2DArray"
+                              Name 98  "iBuffer"
+                              Name 107  "i2DMS"
+                              Name 119  "i2DMSArray"
+                              Name 138  "v"
+                              Name 143  "ic1D"
+                              Name 153  "ic2D"
+                              Name 163  "ic3D"
+                              Name 240  "ui"
+                              Name 243  "ii1D"
+                              Name 255  "ui2D"
+                              Name 258  "value"
+                              Name 367  "ii2DMS"
+                              Name 377  "ui2DMSArray"
+                              Name 386  "wo2D"
+                              Name 391  "fragData"
+                              Name 404  "ic4D"
                               Decorate 15(i1D) DescriptorSet 0
                               Decorate 15(i1D) Binding 0
                               Decorate 27(i2D) DescriptorSet 0
                               Decorate 27(i2D) Binding 1
-                              Decorate 38(i3D) DescriptorSet 0
-                              Decorate 38(i3D) Binding 2
-                              Decorate 45(iCube) DescriptorSet 0
-                              Decorate 45(iCube) Binding 3
-                              Decorate 55(iCubeArray) DescriptorSet 0
-                              Decorate 55(iCubeArray) Binding 4
-                              Decorate 62(i2DRect) DescriptorSet 0
-                              Decorate 62(i2DRect) Binding 5
-                              Decorate 72(i1DArray) DescriptorSet 0
-                              Decorate 72(i1DArray) Binding 6
-                              Decorate 82(i2DArray) DescriptorSet 0
-                              Decorate 82(i2DArray) Binding 7
-                              Decorate 89(iBuffer) DescriptorSet 0
-                              Decorate 89(iBuffer) Binding 8
-                              Decorate 98(i2DMS) DescriptorSet 0
-                              Decorate 98(i2DMS) Binding 9
-                              Decorate 108(i2DMSArray) DescriptorSet 0
-                              Decorate 108(i2DMSArray) Binding 10
-                              Decorate 132(ic1D) Flat
-                              Decorate 132(ic1D) Location 0
-                              Decorate 142(ic2D) Flat
-                              Decorate 142(ic2D) Location 1
-                              Decorate 152(ic3D) Flat
-                              Decorate 152(ic3D) Location 2
-                              Decorate 232(ii1D) DescriptorSet 0
-                              Decorate 232(ii1D) Binding 11
-                              Decorate 245(ui2D) DescriptorSet 0
-                              Decorate 245(ui2D) Binding 12
-                              Decorate 248(value) Flat
-                              Decorate 248(value) Location 4
-                              Decorate 357(ii2DMS) DescriptorSet 0
-                              Decorate 357(ii2DMS) Binding 13
-                              Decorate 367(ui2DMSArray) DescriptorSet 0
-                              Decorate 367(ui2DMSArray) Binding 14
-                              Decorate 376(wo2D) DescriptorSet 0
-                              Decorate 376(wo2D) Binding 1
-                              Decorate 376(wo2D) NonReadable
-                              Decorate 381(fragData) Location 0
-                              Decorate 394(ic4D) Flat
-                              Decorate 394(ic4D) Location 3
+                              Decorate 41(i3D) DescriptorSet 0
+                              Decorate 41(i3D) Binding 2
+                              Decorate 48(iCube) DescriptorSet 0
+                              Decorate 48(iCube) Binding 3
+                              Decorate 60(iCubeArray) DescriptorSet 0
+                              Decorate 60(iCubeArray) Binding 4
+                              Decorate 67(i2DRect) DescriptorSet 0
+                              Decorate 67(i2DRect) Binding 5
+                              Decorate 79(i1DArray) DescriptorSet 0
+                              Decorate 79(i1DArray) Binding 6
+                              Decorate 91(i2DArray) DescriptorSet 0
+                              Decorate 91(i2DArray) Binding 7
+                              Decorate 98(iBuffer) DescriptorSet 0
+                              Decorate 98(iBuffer) Binding 8
+                              Decorate 107(i2DMS) DescriptorSet 0
+                              Decorate 107(i2DMS) Binding 9
+                              Decorate 119(i2DMSArray) DescriptorSet 0
+                              Decorate 119(i2DMSArray) Binding 10
+                              Decorate 143(ic1D) Flat
+                              Decorate 143(ic1D) Location 0
+                              Decorate 153(ic2D) Flat
+                              Decorate 153(ic2D) Location 1
+                              Decorate 163(ic3D) Flat
+                              Decorate 163(ic3D) Location 2
+                              Decorate 243(ii1D) DescriptorSet 0
+                              Decorate 243(ii1D) Binding 11
+                              Decorate 255(ui2D) DescriptorSet 0
+                              Decorate 255(ui2D) Binding 12
+                              Decorate 258(value) Flat
+                              Decorate 258(value) Location 4
+                              Decorate 367(ii2DMS) DescriptorSet 0
+                              Decorate 367(ii2DMS) Binding 13
+                              Decorate 377(ui2DMSArray) DescriptorSet 0
+                              Decorate 377(ui2DMSArray) Binding 14
+                              Decorate 386(wo2D) DescriptorSet 0
+                              Decorate 386(wo2D) Binding 1
+                              Decorate 386(wo2D) NonReadable
+                              Decorate 391(fragData) Location 0
+                              Decorate 404(ic4D) Flat
+                              Decorate 404(ic4D) Location 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -107,90 +107,90 @@
               26:             TypePointer UniformConstant 25
          27(i2D):     26(ptr) Variable UniformConstant
               29:             TypeVector 6(int) 2
-              36:             TypeImage 12(float) 3D nonsampled format:Rgba32f
-              37:             TypePointer UniformConstant 36
-         38(i3D):     37(ptr) Variable UniformConstant
-              43:             TypeImage 12(float) Cube nonsampled format:Rgba32f
-              44:             TypePointer UniformConstant 43
-       45(iCube):     44(ptr) Variable UniformConstant
-              53:             TypeImage 12(float) Cube array nonsampled format:Rgba32f
-              54:             TypePointer UniformConstant 53
-  55(iCubeArray):     54(ptr) Variable UniformConstant
-              60:             TypeImage 12(float) Rect nonsampled format:Rgba32f
-              61:             TypePointer UniformConstant 60
-     62(i2DRect):     61(ptr) Variable UniformConstant
-              70:             TypeImage 12(float) 1D array nonsampled format:Rgba32f
-              71:             TypePointer UniformConstant 70
-    72(i1DArray):     71(ptr) Variable UniformConstant
-              80:             TypeImage 12(float) 2D array nonsampled format:Rg16
-              81:             TypePointer UniformConstant 80
-    82(i2DArray):     81(ptr) Variable UniformConstant
-              87:             TypeImage 12(float) Buffer nonsampled format:Rgba32f
-              88:             TypePointer UniformConstant 87
-     89(iBuffer):     88(ptr) Variable UniformConstant
-              96:             TypeImage 12(float) 2D multi-sampled nonsampled format:Rgba32f
+              36:     18(int) Constant 1
+              39:             TypeImage 12(float) 3D nonsampled format:Rgba32f
+              40:             TypePointer UniformConstant 39
+         41(i3D):     40(ptr) Variable UniformConstant
+              46:             TypeImage 12(float) Cube nonsampled format:Rgba32f
+              47:             TypePointer UniformConstant 46
+       48(iCube):     47(ptr) Variable UniformConstant
+              58:             TypeImage 12(float) Cube array nonsampled format:Rgba32f
+              59:             TypePointer UniformConstant 58
+  60(iCubeArray):     59(ptr) Variable UniformConstant
+              65:             TypeImage 12(float) Rect nonsampled format:Rgba32f
+              66:             TypePointer UniformConstant 65
+     67(i2DRect):     66(ptr) Variable UniformConstant
+              77:             TypeImage 12(float) 1D array nonsampled format:Rgba32f
+              78:             TypePointer UniformConstant 77
+    79(i1DArray):     78(ptr) Variable UniformConstant
+              89:             TypeImage 12(float) 2D array nonsampled format:Rg16
+              90:             TypePointer UniformConstant 89
+    91(i2DArray):     90(ptr) Variable UniformConstant
+              96:             TypeImage 12(float) Buffer nonsampled format:Rgba32f
               97:             TypePointer UniformConstant 96
-       98(i2DMS):     97(ptr) Variable UniformConstant
-             106:             TypeImage 12(float) 2D array multi-sampled nonsampled format:Rgba32f
-             107:             TypePointer UniformConstant 106
- 108(i2DMSArray):    107(ptr) Variable UniformConstant
-             125:             TypeVector 12(float) 4
-             126:             TypePointer Function 125(fvec4)
-             128:   12(float) Constant 0
-             129:  125(fvec4) ConstantComposite 128 128 128 128
-             131:             TypePointer Input 6(int)
-       132(ic1D):    131(ptr) Variable Input
-             141:             TypePointer Input 29(ivec2)
-       142(ic2D):    141(ptr) Variable Input
-             151:             TypePointer Input 7(ivec3)
-       152(ic3D):    151(ptr) Variable Input
-             210:      6(int) Constant 1
-             216:      6(int) Constant 2
-             220:      6(int) Constant 3
-             226:      6(int) Constant 4
-             228:             TypePointer Function 18(int)
-             230:             TypeImage 6(int) 1D nonsampled format:R32i
-             231:             TypePointer UniformConstant 230
-       232(ii1D):    231(ptr) Variable UniformConstant
-             234:      6(int) Constant 10
-             235:             TypePointer Image 6(int)
-             237:     18(int) Constant 1
-             243:             TypeImage 18(int) 2D nonsampled format:R32ui
-             244:             TypePointer UniformConstant 243
-       245(ui2D):    244(ptr) Variable UniformConstant
-             247:             TypePointer Input 18(int)
-      248(value):    247(ptr) Variable Input
-             250:             TypePointer Image 18(int)
-             256:      6(int) Constant 11
-             270:      6(int) Constant 12
-             284:      6(int) Constant 13
-             298:      6(int) Constant 14
-             312:      6(int) Constant 15
-             326:      6(int) Constant 16
-             340:      6(int) Constant 18
-             341:      6(int) Constant 17
-             349:     18(int) Constant 19
-             355:             TypeImage 6(int) 2D multi-sampled nonsampled format:R32i
-             356:             TypePointer UniformConstant 355
-     357(ii2DMS):    356(ptr) Variable UniformConstant
-             365:             TypeImage 18(int) 2D array multi-sampled nonsampled format:R32ui
+     98(iBuffer):     97(ptr) Variable UniformConstant
+             105:             TypeImage 12(float) 2D multi-sampled nonsampled format:Rgba32f
+             106:             TypePointer UniformConstant 105
+      107(i2DMS):    106(ptr) Variable UniformConstant
+             117:             TypeImage 12(float) 2D array multi-sampled nonsampled format:Rgba32f
+             118:             TypePointer UniformConstant 117
+ 119(i2DMSArray):    118(ptr) Variable UniformConstant
+             136:             TypeVector 12(float) 4
+             137:             TypePointer Function 136(fvec4)
+             139:   12(float) Constant 0
+             140:  136(fvec4) ConstantComposite 139 139 139 139
+             142:             TypePointer Input 6(int)
+       143(ic1D):    142(ptr) Variable Input
+             152:             TypePointer Input 29(ivec2)
+       153(ic2D):    152(ptr) Variable Input
+             162:             TypePointer Input 7(ivec3)
+       163(ic3D):    162(ptr) Variable Input
+             221:      6(int) Constant 1
+             227:      6(int) Constant 2
+             231:      6(int) Constant 3
+             237:      6(int) Constant 4
+             239:             TypePointer Function 18(int)
+             241:             TypeImage 6(int) 1D nonsampled format:R32i
+             242:             TypePointer UniformConstant 241
+       243(ii1D):    242(ptr) Variable UniformConstant
+             245:      6(int) Constant 10
+             246:             TypePointer Image 6(int)
+             253:             TypeImage 18(int) 2D nonsampled format:R32ui
+             254:             TypePointer UniformConstant 253
+       255(ui2D):    254(ptr) Variable UniformConstant
+             257:             TypePointer Input 18(int)
+      258(value):    257(ptr) Variable Input
+             260:             TypePointer Image 18(int)
+             266:      6(int) Constant 11
+             280:      6(int) Constant 12
+             294:      6(int) Constant 13
+             308:      6(int) Constant 14
+             322:      6(int) Constant 15
+             336:      6(int) Constant 16
+             350:      6(int) Constant 18
+             351:      6(int) Constant 17
+             359:     18(int) Constant 19
+             365:             TypeImage 6(int) 2D multi-sampled nonsampled format:R32i
              366:             TypePointer UniformConstant 365
-367(ui2DMSArray):    366(ptr) Variable UniformConstant
-             374:             TypeImage 12(float) 2D nonsampled format:Unknown
-             375:             TypePointer UniformConstant 374
-       376(wo2D):    375(ptr) Variable UniformConstant
-             380:             TypePointer Output 125(fvec4)
-   381(fragData):    380(ptr) Variable Output
-             386:             TypeBool
-             389:             TypeVector 386(bool) 4
-             392:             TypeVector 6(int) 4
-             393:             TypePointer Input 392(ivec4)
-       394(ic4D):    393(ptr) Variable Input
+     367(ii2DMS):    366(ptr) Variable UniformConstant
+             375:             TypeImage 18(int) 2D array multi-sampled nonsampled format:R32ui
+             376:             TypePointer UniformConstant 375
+377(ui2DMSArray):    376(ptr) Variable UniformConstant
+             384:             TypeImage 12(float) 2D nonsampled format:Unknown
+             385:             TypePointer UniformConstant 384
+       386(wo2D):    385(ptr) Variable UniformConstant
+             390:             TypePointer Output 136(fvec4)
+   391(fragData):    390(ptr) Variable Output
+             396:             TypeBool
+             399:             TypeVector 396(bool) 4
+             402:             TypeVector 6(int) 4
+             403:             TypePointer Input 402(ivec4)
+       404(ic4D):    403(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
            9(iv):      8(ptr) Variable Function
-          127(v):    126(ptr) Variable Function
-         229(ui):    228(ptr) Variable Function
+          138(v):    137(ptr) Variable Function
+         240(ui):    239(ptr) Variable Function
                               Store 9(iv) 11
               16:          13 Load 15(i1D)
               17:      6(int) ImageQuerySize 16
@@ -204,341 +204,356 @@
               31:    7(ivec3) Load 9(iv)
               32:   29(ivec2) VectorShuffle 31 31 0 1
               33:   29(ivec2) IAdd 32 30
-              34:    7(ivec3) Load 9(iv)
-              35:    7(ivec3) VectorShuffle 34 33 3 4 2
-                              Store 9(iv) 35
-              39:          36 Load 38(i3D)
-              40:    7(ivec3) ImageQuerySize 39
-              41:    7(ivec3) Load 9(iv)
-              42:    7(ivec3) IAdd 41 40
-                              Store 9(iv) 42
-              46:          43 Load 45(iCube)
-              47:   29(ivec2) ImageQuerySize 46
-              48:    7(ivec3) Load 9(iv)
-              49:   29(ivec2) VectorShuffle 48 48 0 1
-              50:   29(ivec2) IAdd 49 47
+              34:     20(ptr) AccessChain 9(iv) 19
+              35:      6(int) CompositeExtract 33 0
+                              Store 34 35
+              37:     20(ptr) AccessChain 9(iv) 36
+              38:      6(int) CompositeExtract 33 1
+                              Store 37 38
+              42:          39 Load 41(i3D)
+              43:    7(ivec3) ImageQuerySize 42
+              44:    7(ivec3) Load 9(iv)
+              45:    7(ivec3) IAdd 44 43
+                              Store 9(iv) 45
+              49:          46 Load 48(iCube)
+              50:   29(ivec2) ImageQuerySize 49
               51:    7(ivec3) Load 9(iv)
-              52:    7(ivec3) VectorShuffle 51 50 3 4 2
-                              Store 9(iv) 52
-              56:          53 Load 55(iCubeArray)
-              57:    7(ivec3) ImageQuerySize 56
-              58:    7(ivec3) Load 9(iv)
-              59:    7(ivec3) IAdd 58 57
-                              Store 9(iv) 59
-              63:          60 Load 62(i2DRect)
-              64:   29(ivec2) ImageQuerySize 63
-              65:    7(ivec3) Load 9(iv)
-              66:   29(ivec2) VectorShuffle 65 65 0 1
-              67:   29(ivec2) IAdd 66 64
-              68:    7(ivec3) Load 9(iv)
-              69:    7(ivec3) VectorShuffle 68 67 3 4 2
-                              Store 9(iv) 69
-              73:          70 Load 72(i1DArray)
-              74:   29(ivec2) ImageQuerySize 73
-              75:    7(ivec3) Load 9(iv)
-              76:   29(ivec2) VectorShuffle 75 75 0 1
-              77:   29(ivec2) IAdd 76 74
-              78:    7(ivec3) Load 9(iv)
-              79:    7(ivec3) VectorShuffle 78 77 3 4 2
-                              Store 9(iv) 79
-              83:          80 Load 82(i2DArray)
-              84:    7(ivec3) ImageQuerySize 83
-              85:    7(ivec3) Load 9(iv)
-              86:    7(ivec3) IAdd 85 84
-                              Store 9(iv) 86
-              90:          87 Load 89(iBuffer)
-              91:      6(int) ImageQuerySize 90
-              92:     20(ptr) AccessChain 9(iv) 19
-              93:      6(int) Load 92
-              94:      6(int) IAdd 93 91
-              95:     20(ptr) AccessChain 9(iv) 19
-                              Store 95 94
-              99:          96 Load 98(i2DMS)
-             100:   29(ivec2) ImageQuerySize 99
-             101:    7(ivec3) Load 9(iv)
-             102:   29(ivec2) VectorShuffle 101 101 0 1
-             103:   29(ivec2) IAdd 102 100
-             104:    7(ivec3) Load 9(iv)
-             105:    7(ivec3) VectorShuffle 104 103 3 4 2
-                              Store 9(iv) 105
-             109:         106 Load 108(i2DMSArray)
-             110:    7(ivec3) ImageQuerySize 109
-             111:    7(ivec3) Load 9(iv)
-             112:    7(ivec3) IAdd 111 110
-                              Store 9(iv) 112
-             113:          96 Load 98(i2DMS)
-             114:      6(int) ImageQuerySamples 113
-             115:     20(ptr) AccessChain 9(iv) 19
-             116:      6(int) Load 115
-             117:      6(int) IAdd 116 114
-             118:     20(ptr) AccessChain 9(iv) 19
-                              Store 118 117
-             119:         106 Load 108(i2DMSArray)
-             120:      6(int) ImageQuerySamples 119
-             121:     20(ptr) AccessChain 9(iv) 19
-             122:      6(int) Load 121
-             123:      6(int) IAdd 122 120
-             124:     20(ptr) AccessChain 9(iv) 19
-                              Store 124 123
-                              Store 127(v) 129
-             130:          13 Load 15(i1D)
-             133:      6(int) Load 132(ic1D)
-             134:  125(fvec4) ImageRead 130 133
-             135:  125(fvec4) Load 127(v)
-             136:  125(fvec4) FAdd 135 134
-                              Store 127(v) 136
-             137:          13 Load 15(i1D)
-             138:      6(int) Load 132(ic1D)
-             139:  125(fvec4) Load 127(v)
-                              ImageWrite 137 138 139
-             140:          25 Load 27(i2D)
-             143:   29(ivec2) Load 142(ic2D)
-             144:  125(fvec4) ImageRead 140 143
-             145:  125(fvec4) Load 127(v)
-             146:  125(fvec4) FAdd 145 144
-                              Store 127(v) 146
-             147:          25 Load 27(i2D)
-             148:   29(ivec2) Load 142(ic2D)
-             149:  125(fvec4) Load 127(v)
-                              ImageWrite 147 148 149
-             150:          36 Load 38(i3D)
-             153:    7(ivec3) Load 152(ic3D)
-             154:  125(fvec4) ImageRead 150 153
-             155:  125(fvec4) Load 127(v)
-             156:  125(fvec4) FAdd 155 154
-                              Store 127(v) 156
-             157:          36 Load 38(i3D)
-             158:    7(ivec3) Load 152(ic3D)
-             159:  125(fvec4) Load 127(v)
-                              ImageWrite 157 158 159
-             160:          43 Load 45(iCube)
-             161:    7(ivec3) Load 152(ic3D)
-             162:  125(fvec4) ImageRead 160 161
-             163:  125(fvec4) Load 127(v)
-             164:  125(fvec4) FAdd 163 162
-                              Store 127(v) 164
-             165:          43 Load 45(iCube)
-             166:    7(ivec3) Load 152(ic3D)
-             167:  125(fvec4) Load 127(v)
-                              ImageWrite 165 166 167
-             168:          53 Load 55(iCubeArray)
-             169:    7(ivec3) Load 152(ic3D)
-             170:  125(fvec4) ImageRead 168 169
-             171:  125(fvec4) Load 127(v)
-             172:  125(fvec4) FAdd 171 170
-                              Store 127(v) 172
-             173:          53 Load 55(iCubeArray)
-             174:    7(ivec3) Load 152(ic3D)
-             175:  125(fvec4) Load 127(v)
-                              ImageWrite 173 174 175
-             176:          60 Load 62(i2DRect)
-             177:   29(ivec2) Load 142(ic2D)
-             178:  125(fvec4) ImageRead 176 177
-             179:  125(fvec4) Load 127(v)
-             180:  125(fvec4) FAdd 179 178
-                              Store 127(v) 180
-             181:          60 Load 62(i2DRect)
-             182:   29(ivec2) Load 142(ic2D)
-             183:  125(fvec4) Load 127(v)
-                              ImageWrite 181 182 183
-             184:          70 Load 72(i1DArray)
-             185:   29(ivec2) Load 142(ic2D)
-             186:  125(fvec4) ImageRead 184 185
-             187:  125(fvec4) Load 127(v)
-             188:  125(fvec4) FAdd 187 186
-                              Store 127(v) 188
-             189:          70 Load 72(i1DArray)
-             190:   29(ivec2) Load 142(ic2D)
-             191:  125(fvec4) Load 127(v)
-                              ImageWrite 189 190 191
-             192:          80 Load 82(i2DArray)
-             193:    7(ivec3) Load 152(ic3D)
-             194:  125(fvec4) ImageRead 192 193
-             195:  125(fvec4) Load 127(v)
-             196:  125(fvec4) FAdd 195 194
-                              Store 127(v) 196
-             197:          80 Load 82(i2DArray)
-             198:    7(ivec3) Load 152(ic3D)
-             199:  125(fvec4) Load 127(v)
-                              ImageWrite 197 198 199
-             200:          87 Load 89(iBuffer)
-             201:      6(int) Load 132(ic1D)
-             202:  125(fvec4) ImageRead 200 201
-             203:  125(fvec4) Load 127(v)
-             204:  125(fvec4) FAdd 203 202
-                              Store 127(v) 204
-             205:          87 Load 89(iBuffer)
-             206:      6(int) Load 132(ic1D)
-             207:  125(fvec4) Load 127(v)
-                              ImageWrite 205 206 207
-             208:          96 Load 98(i2DMS)
-             209:   29(ivec2) Load 142(ic2D)
-             211:  125(fvec4) ImageRead 208 209 Sample 210
-             212:  125(fvec4) Load 127(v)
-             213:  125(fvec4) FAdd 212 211
-                              Store 127(v) 213
-             214:          96 Load 98(i2DMS)
-             215:   29(ivec2) Load 142(ic2D)
-             217:  125(fvec4) Load 127(v)
-                              ImageWrite 214 215 217 Sample 216
-             218:         106 Load 108(i2DMSArray)
-             219:    7(ivec3) Load 152(ic3D)
-             221:  125(fvec4) ImageRead 218 219 Sample 220
-             222:  125(fvec4) Load 127(v)
-             223:  125(fvec4) FAdd 222 221
-                              Store 127(v) 223
-             224:         106 Load 108(i2DMSArray)
-             225:    7(ivec3) Load 152(ic3D)
-             227:  125(fvec4) Load 127(v)
-                              ImageWrite 224 225 227 Sample 226
-                              Store 229(ui) 19
-             233:      6(int) Load 132(ic1D)
-             236:    235(ptr) ImageTexelPointer 232(ii1D) 233 19
-             238:      6(int) AtomicIAdd 236 237 19 234
-             239:     20(ptr) AccessChain 9(iv) 19
-             240:      6(int) Load 239
-             241:      6(int) IAdd 240 238
-             242:     20(ptr) AccessChain 9(iv) 19
-                              Store 242 241
-             246:   29(ivec2) Load 142(ic2D)
-             249:     18(int) Load 248(value)
-             251:    250(ptr) ImageTexelPointer 245(ui2D) 246 19
-             252:     18(int) AtomicIAdd 251 237 19 249
-             253:     18(int) Load 229(ui)
-             254:     18(int) IAdd 253 252
-                              Store 229(ui) 254
-             255:      6(int) Load 132(ic1D)
-             257:    235(ptr) ImageTexelPointer 232(ii1D) 255 19
-             258:      6(int) AtomicSMin 257 237 19 256
-             259:     20(ptr) AccessChain 9(iv) 19
-             260:      6(int) Load 259
-             261:      6(int) IAdd 260 258
-             262:     20(ptr) AccessChain 9(iv) 19
-                              Store 262 261
-             263:   29(ivec2) Load 142(ic2D)
-             264:     18(int) Load 248(value)
-             265:    250(ptr) ImageTexelPointer 245(ui2D) 263 19
-             266:     18(int) AtomicUMin 265 237 19 264
-             267:     18(int) Load 229(ui)
-             268:     18(int) IAdd 267 266
-                              Store 229(ui) 268
-             269:      6(int) Load 132(ic1D)
-             271:    235(ptr) ImageTexelPointer 232(ii1D) 269 19
-             272:      6(int) AtomicSMax 271 237 19 270
-             273:     20(ptr) AccessChain 9(iv) 19
-             274:      6(int) Load 273
-             275:      6(int) IAdd 274 272
-             276:     20(ptr) AccessChain 9(iv) 19
-                              Store 276 275
-             277:   29(ivec2) Load 142(ic2D)
-             278:     18(int) Load 248(value)
-             279:    250(ptr) ImageTexelPointer 245(ui2D) 277 19
-             280:     18(int) AtomicUMax 279 237 19 278
-             281:     18(int) Load 229(ui)
-             282:     18(int) IAdd 281 280
-                              Store 229(ui) 282
-             283:      6(int) Load 132(ic1D)
-             285:    235(ptr) ImageTexelPointer 232(ii1D) 283 19
-             286:      6(int) AtomicAnd 285 237 19 284
-             287:     20(ptr) AccessChain 9(iv) 19
-             288:      6(int) Load 287
-             289:      6(int) IAdd 288 286
-             290:     20(ptr) AccessChain 9(iv) 19
-                              Store 290 289
-             291:   29(ivec2) Load 142(ic2D)
-             292:     18(int) Load 248(value)
-             293:    250(ptr) ImageTexelPointer 245(ui2D) 291 19
-             294:     18(int) AtomicAnd 293 237 19 292
-             295:     18(int) Load 229(ui)
-             296:     18(int) IAdd 295 294
-                              Store 229(ui) 296
-             297:      6(int) Load 132(ic1D)
-             299:    235(ptr) ImageTexelPointer 232(ii1D) 297 19
-             300:      6(int) AtomicOr 299 237 19 298
-             301:     20(ptr) AccessChain 9(iv) 19
-             302:      6(int) Load 301
-             303:      6(int) IAdd 302 300
-             304:     20(ptr) AccessChain 9(iv) 19
-                              Store 304 303
-             305:   29(ivec2) Load 142(ic2D)
-             306:     18(int) Load 248(value)
-             307:    250(ptr) ImageTexelPointer 245(ui2D) 305 19
-             308:     18(int) AtomicOr 307 237 19 306
-             309:     18(int) Load 229(ui)
-             310:     18(int) IAdd 309 308
-                              Store 229(ui) 310
-             311:      6(int) Load 132(ic1D)
-             313:    235(ptr) ImageTexelPointer 232(ii1D) 311 19
-             314:      6(int) AtomicXor 313 237 19 312
-             315:     20(ptr) AccessChain 9(iv) 19
-             316:      6(int) Load 315
-             317:      6(int) IAdd 316 314
-             318:     20(ptr) AccessChain 9(iv) 19
-                              Store 318 317
-             319:   29(ivec2) Load 142(ic2D)
-             320:     18(int) Load 248(value)
-             321:    250(ptr) ImageTexelPointer 245(ui2D) 319 19
-             322:     18(int) AtomicXor 321 237 19 320
-             323:     18(int) Load 229(ui)
-             324:     18(int) IAdd 323 322
-                              Store 229(ui) 324
-             325:      6(int) Load 132(ic1D)
-             327:    235(ptr) ImageTexelPointer 232(ii1D) 325 19
-             328:      6(int) AtomicExchange 327 237 19 326
-             329:     20(ptr) AccessChain 9(iv) 19
-             330:      6(int) Load 329
-             331:      6(int) IAdd 330 328
-             332:     20(ptr) AccessChain 9(iv) 19
-                              Store 332 331
-             333:   29(ivec2) Load 142(ic2D)
-             334:     18(int) Load 248(value)
-             335:    250(ptr) ImageTexelPointer 245(ui2D) 333 19
-             336:     18(int) AtomicExchange 335 237 19 334
-             337:     18(int) Load 229(ui)
-             338:     18(int) IAdd 337 336
-                              Store 229(ui) 338
-             339:      6(int) Load 132(ic1D)
-             342:    235(ptr) ImageTexelPointer 232(ii1D) 339 19
-             343:      6(int) AtomicCompareExchange 342 237 19 19 341 340
-             344:     20(ptr) AccessChain 9(iv) 19
-             345:      6(int) Load 344
-             346:      6(int) IAdd 345 343
-             347:     20(ptr) AccessChain 9(iv) 19
-                              Store 347 346
-             348:   29(ivec2) Load 142(ic2D)
-             350:     18(int) Load 248(value)
-             351:    250(ptr) ImageTexelPointer 245(ui2D) 348 19
-             352:     18(int) AtomicCompareExchange 351 237 19 19 350 349
-             353:     18(int) Load 229(ui)
-             354:     18(int) IAdd 353 352
-                              Store 229(ui) 354
-             358:   29(ivec2) Load 142(ic2D)
-             359:    235(ptr) ImageTexelPointer 357(ii2DMS) 358 216
-             360:      6(int) AtomicCompareExchange 359 237 19 19 341 340
-             361:     20(ptr) AccessChain 9(iv) 19
-             362:      6(int) Load 361
-             363:      6(int) IAdd 362 360
-             364:     20(ptr) AccessChain 9(iv) 19
-                              Store 364 363
-             368:    7(ivec3) Load 152(ic3D)
-             369:     18(int) Load 248(value)
-             370:    250(ptr) ImageTexelPointer 367(ui2DMSArray) 368 220
-             371:     18(int) AtomicCompareExchange 370 237 19 19 369 349
-             372:     18(int) Load 229(ui)
-             373:     18(int) IAdd 372 371
-                              Store 229(ui) 373
-             377:         374 Load 376(wo2D)
-             378:   29(ivec2) Load 142(ic2D)
-             379:  125(fvec4) Load 127(v)
-                              ImageWrite 377 378 379
-             382:     18(int) Load 229(ui)
-             383:     20(ptr) AccessChain 9(iv) 237
-             384:      6(int) Load 383
-             385:     18(int) Bitcast 384
-             387:   386(bool) INotEqual 382 385
-             388:  125(fvec4) Load 127(v)
-             390:  389(bvec4) CompositeConstruct 387 387 387 387
-             391:  125(fvec4) Select 390 388 129
-                              Store 381(fragData) 391
+              52:   29(ivec2) VectorShuffle 51 51 0 1
+              53:   29(ivec2) IAdd 52 50
+              54:     20(ptr) AccessChain 9(iv) 19
+              55:      6(int) CompositeExtract 53 0
+                              Store 54 55
+              56:     20(ptr) AccessChain 9(iv) 36
+              57:      6(int) CompositeExtract 53 1
+                              Store 56 57
+              61:          58 Load 60(iCubeArray)
+              62:    7(ivec3) ImageQuerySize 61
+              63:    7(ivec3) Load 9(iv)
+              64:    7(ivec3) IAdd 63 62
+                              Store 9(iv) 64
+              68:          65 Load 67(i2DRect)
+              69:   29(ivec2) ImageQuerySize 68
+              70:    7(ivec3) Load 9(iv)
+              71:   29(ivec2) VectorShuffle 70 70 0 1
+              72:   29(ivec2) IAdd 71 69
+              73:     20(ptr) AccessChain 9(iv) 19
+              74:      6(int) CompositeExtract 72 0
+                              Store 73 74
+              75:     20(ptr) AccessChain 9(iv) 36
+              76:      6(int) CompositeExtract 72 1
+                              Store 75 76
+              80:          77 Load 79(i1DArray)
+              81:   29(ivec2) ImageQuerySize 80
+              82:    7(ivec3) Load 9(iv)
+              83:   29(ivec2) VectorShuffle 82 82 0 1
+              84:   29(ivec2) IAdd 83 81
+              85:     20(ptr) AccessChain 9(iv) 19
+              86:      6(int) CompositeExtract 84 0
+                              Store 85 86
+              87:     20(ptr) AccessChain 9(iv) 36
+              88:      6(int) CompositeExtract 84 1
+                              Store 87 88
+              92:          89 Load 91(i2DArray)
+              93:    7(ivec3) ImageQuerySize 92
+              94:    7(ivec3) Load 9(iv)
+              95:    7(ivec3) IAdd 94 93
+                              Store 9(iv) 95
+              99:          96 Load 98(iBuffer)
+             100:      6(int) ImageQuerySize 99
+             101:     20(ptr) AccessChain 9(iv) 19
+             102:      6(int) Load 101
+             103:      6(int) IAdd 102 100
+             104:     20(ptr) AccessChain 9(iv) 19
+                              Store 104 103
+             108:         105 Load 107(i2DMS)
+             109:   29(ivec2) ImageQuerySize 108
+             110:    7(ivec3) Load 9(iv)
+             111:   29(ivec2) VectorShuffle 110 110 0 1
+             112:   29(ivec2) IAdd 111 109
+             113:     20(ptr) AccessChain 9(iv) 19
+             114:      6(int) CompositeExtract 112 0
+                              Store 113 114
+             115:     20(ptr) AccessChain 9(iv) 36
+             116:      6(int) CompositeExtract 112 1
+                              Store 115 116
+             120:         117 Load 119(i2DMSArray)
+             121:    7(ivec3) ImageQuerySize 120
+             122:    7(ivec3) Load 9(iv)
+             123:    7(ivec3) IAdd 122 121
+                              Store 9(iv) 123
+             124:         105 Load 107(i2DMS)
+             125:      6(int) ImageQuerySamples 124
+             126:     20(ptr) AccessChain 9(iv) 19
+             127:      6(int) Load 126
+             128:      6(int) IAdd 127 125
+             129:     20(ptr) AccessChain 9(iv) 19
+                              Store 129 128
+             130:         117 Load 119(i2DMSArray)
+             131:      6(int) ImageQuerySamples 130
+             132:     20(ptr) AccessChain 9(iv) 19
+             133:      6(int) Load 132
+             134:      6(int) IAdd 133 131
+             135:     20(ptr) AccessChain 9(iv) 19
+                              Store 135 134
+                              Store 138(v) 140
+             141:          13 Load 15(i1D)
+             144:      6(int) Load 143(ic1D)
+             145:  136(fvec4) ImageRead 141 144
+             146:  136(fvec4) Load 138(v)
+             147:  136(fvec4) FAdd 146 145
+                              Store 138(v) 147
+             148:          13 Load 15(i1D)
+             149:      6(int) Load 143(ic1D)
+             150:  136(fvec4) Load 138(v)
+                              ImageWrite 148 149 150
+             151:          25 Load 27(i2D)
+             154:   29(ivec2) Load 153(ic2D)
+             155:  136(fvec4) ImageRead 151 154
+             156:  136(fvec4) Load 138(v)
+             157:  136(fvec4) FAdd 156 155
+                              Store 138(v) 157
+             158:          25 Load 27(i2D)
+             159:   29(ivec2) Load 153(ic2D)
+             160:  136(fvec4) Load 138(v)
+                              ImageWrite 158 159 160
+             161:          39 Load 41(i3D)
+             164:    7(ivec3) Load 163(ic3D)
+             165:  136(fvec4) ImageRead 161 164
+             166:  136(fvec4) Load 138(v)
+             167:  136(fvec4) FAdd 166 165
+                              Store 138(v) 167
+             168:          39 Load 41(i3D)
+             169:    7(ivec3) Load 163(ic3D)
+             170:  136(fvec4) Load 138(v)
+                              ImageWrite 168 169 170
+             171:          46 Load 48(iCube)
+             172:    7(ivec3) Load 163(ic3D)
+             173:  136(fvec4) ImageRead 171 172
+             174:  136(fvec4) Load 138(v)
+             175:  136(fvec4) FAdd 174 173
+                              Store 138(v) 175
+             176:          46 Load 48(iCube)
+             177:    7(ivec3) Load 163(ic3D)
+             178:  136(fvec4) Load 138(v)
+                              ImageWrite 176 177 178
+             179:          58 Load 60(iCubeArray)
+             180:    7(ivec3) Load 163(ic3D)
+             181:  136(fvec4) ImageRead 179 180
+             182:  136(fvec4) Load 138(v)
+             183:  136(fvec4) FAdd 182 181
+                              Store 138(v) 183
+             184:          58 Load 60(iCubeArray)
+             185:    7(ivec3) Load 163(ic3D)
+             186:  136(fvec4) Load 138(v)
+                              ImageWrite 184 185 186
+             187:          65 Load 67(i2DRect)
+             188:   29(ivec2) Load 153(ic2D)
+             189:  136(fvec4) ImageRead 187 188
+             190:  136(fvec4) Load 138(v)
+             191:  136(fvec4) FAdd 190 189
+                              Store 138(v) 191
+             192:          65 Load 67(i2DRect)
+             193:   29(ivec2) Load 153(ic2D)
+             194:  136(fvec4) Load 138(v)
+                              ImageWrite 192 193 194
+             195:          77 Load 79(i1DArray)
+             196:   29(ivec2) Load 153(ic2D)
+             197:  136(fvec4) ImageRead 195 196
+             198:  136(fvec4) Load 138(v)
+             199:  136(fvec4) FAdd 198 197
+                              Store 138(v) 199
+             200:          77 Load 79(i1DArray)
+             201:   29(ivec2) Load 153(ic2D)
+             202:  136(fvec4) Load 138(v)
+                              ImageWrite 200 201 202
+             203:          89 Load 91(i2DArray)
+             204:    7(ivec3) Load 163(ic3D)
+             205:  136(fvec4) ImageRead 203 204
+             206:  136(fvec4) Load 138(v)
+             207:  136(fvec4) FAdd 206 205
+                              Store 138(v) 207
+             208:          89 Load 91(i2DArray)
+             209:    7(ivec3) Load 163(ic3D)
+             210:  136(fvec4) Load 138(v)
+                              ImageWrite 208 209 210
+             211:          96 Load 98(iBuffer)
+             212:      6(int) Load 143(ic1D)
+             213:  136(fvec4) ImageRead 211 212
+             214:  136(fvec4) Load 138(v)
+             215:  136(fvec4) FAdd 214 213
+                              Store 138(v) 215
+             216:          96 Load 98(iBuffer)
+             217:      6(int) Load 143(ic1D)
+             218:  136(fvec4) Load 138(v)
+                              ImageWrite 216 217 218
+             219:         105 Load 107(i2DMS)
+             220:   29(ivec2) Load 153(ic2D)
+             222:  136(fvec4) ImageRead 219 220 Sample 221
+             223:  136(fvec4) Load 138(v)
+             224:  136(fvec4) FAdd 223 222
+                              Store 138(v) 224
+             225:         105 Load 107(i2DMS)
+             226:   29(ivec2) Load 153(ic2D)
+             228:  136(fvec4) Load 138(v)
+                              ImageWrite 225 226 228 Sample 227
+             229:         117 Load 119(i2DMSArray)
+             230:    7(ivec3) Load 163(ic3D)
+             232:  136(fvec4) ImageRead 229 230 Sample 231
+             233:  136(fvec4) Load 138(v)
+             234:  136(fvec4) FAdd 233 232
+                              Store 138(v) 234
+             235:         117 Load 119(i2DMSArray)
+             236:    7(ivec3) Load 163(ic3D)
+             238:  136(fvec4) Load 138(v)
+                              ImageWrite 235 236 238 Sample 237
+                              Store 240(ui) 19
+             244:      6(int) Load 143(ic1D)
+             247:    246(ptr) ImageTexelPointer 243(ii1D) 244 19
+             248:      6(int) AtomicIAdd 247 36 19 245
+             249:     20(ptr) AccessChain 9(iv) 19
+             250:      6(int) Load 249
+             251:      6(int) IAdd 250 248
+             252:     20(ptr) AccessChain 9(iv) 19
+                              Store 252 251
+             256:   29(ivec2) Load 153(ic2D)
+             259:     18(int) Load 258(value)
+             261:    260(ptr) ImageTexelPointer 255(ui2D) 256 19
+             262:     18(int) AtomicIAdd 261 36 19 259
+             263:     18(int) Load 240(ui)
+             264:     18(int) IAdd 263 262
+                              Store 240(ui) 264
+             265:      6(int) Load 143(ic1D)
+             267:    246(ptr) ImageTexelPointer 243(ii1D) 265 19
+             268:      6(int) AtomicSMin 267 36 19 266
+             269:     20(ptr) AccessChain 9(iv) 19
+             270:      6(int) Load 269
+             271:      6(int) IAdd 270 268
+             272:     20(ptr) AccessChain 9(iv) 19
+                              Store 272 271
+             273:   29(ivec2) Load 153(ic2D)
+             274:     18(int) Load 258(value)
+             275:    260(ptr) ImageTexelPointer 255(ui2D) 273 19
+             276:     18(int) AtomicUMin 275 36 19 274
+             277:     18(int) Load 240(ui)
+             278:     18(int) IAdd 277 276
+                              Store 240(ui) 278
+             279:      6(int) Load 143(ic1D)
+             281:    246(ptr) ImageTexelPointer 243(ii1D) 279 19
+             282:      6(int) AtomicSMax 281 36 19 280
+             283:     20(ptr) AccessChain 9(iv) 19
+             284:      6(int) Load 283
+             285:      6(int) IAdd 284 282
+             286:     20(ptr) AccessChain 9(iv) 19
+                              Store 286 285
+             287:   29(ivec2) Load 153(ic2D)
+             288:     18(int) Load 258(value)
+             289:    260(ptr) ImageTexelPointer 255(ui2D) 287 19
+             290:     18(int) AtomicUMax 289 36 19 288
+             291:     18(int) Load 240(ui)
+             292:     18(int) IAdd 291 290
+                              Store 240(ui) 292
+             293:      6(int) Load 143(ic1D)
+             295:    246(ptr) ImageTexelPointer 243(ii1D) 293 19
+             296:      6(int) AtomicAnd 295 36 19 294
+             297:     20(ptr) AccessChain 9(iv) 19
+             298:      6(int) Load 297
+             299:      6(int) IAdd 298 296
+             300:     20(ptr) AccessChain 9(iv) 19
+                              Store 300 299
+             301:   29(ivec2) Load 153(ic2D)
+             302:     18(int) Load 258(value)
+             303:    260(ptr) ImageTexelPointer 255(ui2D) 301 19
+             304:     18(int) AtomicAnd 303 36 19 302
+             305:     18(int) Load 240(ui)
+             306:     18(int) IAdd 305 304
+                              Store 240(ui) 306
+             307:      6(int) Load 143(ic1D)
+             309:    246(ptr) ImageTexelPointer 243(ii1D) 307 19
+             310:      6(int) AtomicOr 309 36 19 308
+             311:     20(ptr) AccessChain 9(iv) 19
+             312:      6(int) Load 311
+             313:      6(int) IAdd 312 310
+             314:     20(ptr) AccessChain 9(iv) 19
+                              Store 314 313
+             315:   29(ivec2) Load 153(ic2D)
+             316:     18(int) Load 258(value)
+             317:    260(ptr) ImageTexelPointer 255(ui2D) 315 19
+             318:     18(int) AtomicOr 317 36 19 316
+             319:     18(int) Load 240(ui)
+             320:     18(int) IAdd 319 318
+                              Store 240(ui) 320
+             321:      6(int) Load 143(ic1D)
+             323:    246(ptr) ImageTexelPointer 243(ii1D) 321 19
+             324:      6(int) AtomicXor 323 36 19 322
+             325:     20(ptr) AccessChain 9(iv) 19
+             326:      6(int) Load 325
+             327:      6(int) IAdd 326 324
+             328:     20(ptr) AccessChain 9(iv) 19
+                              Store 328 327
+             329:   29(ivec2) Load 153(ic2D)
+             330:     18(int) Load 258(value)
+             331:    260(ptr) ImageTexelPointer 255(ui2D) 329 19
+             332:     18(int) AtomicXor 331 36 19 330
+             333:     18(int) Load 240(ui)
+             334:     18(int) IAdd 333 332
+                              Store 240(ui) 334
+             335:      6(int) Load 143(ic1D)
+             337:    246(ptr) ImageTexelPointer 243(ii1D) 335 19
+             338:      6(int) AtomicExchange 337 36 19 336
+             339:     20(ptr) AccessChain 9(iv) 19
+             340:      6(int) Load 339
+             341:      6(int) IAdd 340 338
+             342:     20(ptr) AccessChain 9(iv) 19
+                              Store 342 341
+             343:   29(ivec2) Load 153(ic2D)
+             344:     18(int) Load 258(value)
+             345:    260(ptr) ImageTexelPointer 255(ui2D) 343 19
+             346:     18(int) AtomicExchange 345 36 19 344
+             347:     18(int) Load 240(ui)
+             348:     18(int) IAdd 347 346
+                              Store 240(ui) 348
+             349:      6(int) Load 143(ic1D)
+             352:    246(ptr) ImageTexelPointer 243(ii1D) 349 19
+             353:      6(int) AtomicCompareExchange 352 36 19 19 351 350
+             354:     20(ptr) AccessChain 9(iv) 19
+             355:      6(int) Load 354
+             356:      6(int) IAdd 355 353
+             357:     20(ptr) AccessChain 9(iv) 19
+                              Store 357 356
+             358:   29(ivec2) Load 153(ic2D)
+             360:     18(int) Load 258(value)
+             361:    260(ptr) ImageTexelPointer 255(ui2D) 358 19
+             362:     18(int) AtomicCompareExchange 361 36 19 19 360 359
+             363:     18(int) Load 240(ui)
+             364:     18(int) IAdd 363 362
+                              Store 240(ui) 364
+             368:   29(ivec2) Load 153(ic2D)
+             369:    246(ptr) ImageTexelPointer 367(ii2DMS) 368 227
+             370:      6(int) AtomicCompareExchange 369 36 19 19 351 350
+             371:     20(ptr) AccessChain 9(iv) 19
+             372:      6(int) Load 371
+             373:      6(int) IAdd 372 370
+             374:     20(ptr) AccessChain 9(iv) 19
+                              Store 374 373
+             378:    7(ivec3) Load 163(ic3D)
+             379:     18(int) Load 258(value)
+             380:    260(ptr) ImageTexelPointer 377(ui2DMSArray) 378 231
+             381:     18(int) AtomicCompareExchange 380 36 19 19 379 359
+             382:     18(int) Load 240(ui)
+             383:     18(int) IAdd 382 381
+                              Store 240(ui) 383
+             387:         384 Load 386(wo2D)
+             388:   29(ivec2) Load 153(ic2D)
+             389:  136(fvec4) Load 138(v)
+                              ImageWrite 387 388 389
+             392:     18(int) Load 240(ui)
+             393:     20(ptr) AccessChain 9(iv) 36
+             394:      6(int) Load 393
+             395:     18(int) Bitcast 394
+             397:   396(bool) INotEqual 392 395
+             398:  136(fvec4) Load 138(v)
+             400:  399(bvec4) CompositeConstruct 397 397 397 397
+             401:  136(fvec4) Select 400 398 140
+                              Store 391(fragData) 401
                               Return
                               FunctionEnd