Explorar el Código

Add a generic texel fetch test

Test all core sampler functions.
Nathaniel Cesario hace 2 años
padre
commit
f3f23fece3
Se han modificado 3 ficheros con 5365 adiciones y 0 borrados
  1. 4423 0
      Test/baseResults/spv.floatFetch.frag.out
  2. 941 0
      Test/spv.floatFetch.frag
  3. 1 0
      gtests/Spv.FromFile.cpp

+ 4423 - 0
Test/baseResults/spv.floatFetch.frag.out

@@ -0,0 +1,4423 @@
+spv.floatFetch.frag
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 3599
+
+                              Capability Shader
+                              Capability ImageGatherExtended
+                              Capability StorageImageMultisample
+                              Capability ImageCubeArray
+                              Capability ImageRect
+                              Capability SampledRect
+                              Capability InputAttachment
+                              Capability SparseResidency
+                              Capability MinLod
+                              Capability Sampled1D
+                              Capability Image1D
+                              Capability SampledCubeArray
+                              Capability SampledBuffer
+                              Capability ImageBuffer
+                              Capability ImageMSArray
+                              Capability ImageQuery
+                              Capability ImageGatherBiasLodAMD
+                              Extension  "SPV_AMD_texture_gather_bias_lod"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 127 138 150 197 283 371 866 874 882 2665 3590 3598
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              SourceExtension  "GL_AMD_texture_gather_bias_lod"
+                              SourceExtension  "GL_ARB_sparse_texture2"
+                              SourceExtension  "GL_ARB_sparse_texture_clamp"
+                              Name 4  "main"
+                              Name 9  "testTexture("
+                              Name 11  "testTextureProj("
+                              Name 13  "testTextureLod("
+                              Name 15  "testTextureOffset("
+                              Name 17  "testTextureProjOffset("
+                              Name 19  "testTextureLodOffset("
+                              Name 21  "testTextureProjLodOffset("
+                              Name 23  "testTexelFetch("
+                              Name 25  "testTexelFetchOffset("
+                              Name 27  "testTextureGrad("
+                              Name 29  "testTextureGradOffset("
+                              Name 31  "testTextureProjGrad("
+                              Name 33  "testTextureProjGradoffset("
+                              Name 35  "testTextureGather("
+                              Name 37  "testTextureGatherOffset("
+                              Name 39  "testTextureGatherOffsets("
+                              Name 41  "testTextureGatherLod("
+                              Name 43  "testTextureGatherLodOffset("
+                              Name 45  "testTextureGatherLodOffsets("
+                              Name 50  "testTextureSize("
+                              Name 54  "testTextureQueryLod("
+                              Name 57  "testTextureQueryLevels("
+                              Name 59  "testTextureSamples("
+                              Name 61  "testImageLoad("
+                              Name 66  "testImageStore(vf4;"
+                              Name 65  "data"
+                              Name 68  "testSparseTexture("
+                              Name 70  "testSparseTextureLod("
+                              Name 72  "testSparseTextureOffset("
+                              Name 74  "testSparseTextureLodOffset("
+                              Name 76  "testSparseTextureGrad("
+                              Name 78  "testSparseTextureGradOffset("
+                              Name 80  "testSparseTexelFetch("
+                              Name 82  "testSparseTexelFetchOffset("
+                              Name 84  "testSparseTextureGather("
+                              Name 86  "testSparseTextureGatherOffset("
+                              Name 88  "testSparseTextureGatherOffsets("
+                              Name 90  "testSparseTextureGatherLod("
+                              Name 92  "testSparseTextureGatherLodOffset("
+                              Name 94  "testSparseTextureGatherLodOffsets("
+                              Name 96  "testSparseImageLoad("
+                              Name 98  "testSparseTextureClamp("
+                              Name 100  "testTextureClamp("
+                              Name 102  "testSparseTextureOffsetClamp("
+                              Name 104  "testTextureOffsetClamp("
+                              Name 106  "testSparseTextureGradClamp("
+                              Name 108  "testTextureGradClamp("
+                              Name 110  "testSparseTextureGradOffsetClamp("
+                              Name 112  "testTextureGradOffsetClamp("
+                              Name 114  "testCombinedTextureSampler("
+                              Name 116  "testSubpassLoad("
+                              Name 118  "texel"
+                              Name 124  "s1D"
+                              Name 127  "c1"
+                              Name 135  "s2D"
+                              Name 138  "c2"
+                              Name 146  "s3D"
+                              Name 150  "c3"
+                              Name 158  "sCube"
+                              Name 167  "s1DShadow"
+                              Name 182  "s2DShadow"
+                              Name 194  "sCubeShadow"
+                              Name 197  "c4"
+                              Name 208  "s1DArray"
+                              Name 217  "s2DArray"
+                              Name 226  "sCubeArray"
+                              Name 235  "s1DArrayShadow"
+                              Name 247  "s2DArrayShadow"
+                              Name 259  "s2DRect"
+                              Name 268  "s2DRectShadow"
+                              Name 280  "sCubeArrayShadow"
+                              Name 283  "compare"
+                              Name 293  "texel"
+                              Name 368  "texel"
+                              Name 371  "lod"
+                              Name 442  "texel"
+                              Name 521  "texel"
+                              Name 596  "texel"
+                              Name 657  "texel"
+                              Name 717  "texel"
+                              Name 773  "sBuffer"
+                              Name 784  "s2DMS"
+                              Name 795  "s2DMSArray"
+                              Name 807  "texel"
+                              Name 863  "texel"
+                              Name 866  "dPdxy1"
+                              Name 874  "dPdxy2"
+                              Name 882  "dPdxy3"
+                              Name 986  "texel"
+                              Name 1082  "texel"
+                              Name 1177  "texel"
+                              Name 1272  "texel"
+                              Name 1332  "texel"
+                              Name 1369  "texel"
+                              Name 1409  "texel"
+                              Name 1437  "texel"
+                              Name 1453  "texel"
+                              Name 1470  "size"
+                              Name 1688  "lod"
+                              Name 1758  "levels"
+                              Name 1827  "samples"
+                              Name 1841  "texel"
+                              Name 1844  "i1D"
+                              Name 1853  "i2D"
+                              Name 1862  "i3D"
+                              Name 1871  "i2DRect"
+                              Name 1880  "iCube"
+                              Name 1889  "iBuffer"
+                              Name 1898  "i1DArray"
+                              Name 1907  "i2DArray"
+                              Name 1916  "iCubeArray"
+                              Name 1925  "i2DMS"
+                              Name 1934  "i2DMSArray"
+                              Name 1988  "texel"
+                              Name 1991  "ResType"
+                              Name 2009  "ResType"
+                              Name 2059  "texel"
+                              Name 2101  "texel"
+                              Name 2146  "texel"
+                              Name 2176  "texel"
+                              Name 2258  "texel"
+                              Name 2317  "texel"
+                              Name 2369  "texel"
+                              Name 2407  "texel"
+                              Name 2466  "texel"
+                              Name 2503  "texel"
+                              Name 2550  "texel"
+                              Name 2578  "texel"
+                              Name 2594  "texel"
+                              Name 2610  "texel"
+                              Name 2662  "texel"
+                              Name 2665  "lodClamp"
+                              Name 2729  "texel"
+                              Name 2829  "texel"
+                              Name 2867  "texel"
+                              Name 2937  "texel"
+                              Name 3011  "texel"
+                              Name 3126  "texel"
+                              Name 3174  "texel"
+                              Name 3262  "texel"
+                              Name 3264  "t1D"
+                              Name 3268  "s"
+                              Name 3276  "t2D"
+                              Name 3285  "t3D"
+                              Name 3294  "tCube"
+                              Name 3303  "sShadow"
+                              Name 3334  "t1DArray"
+                              Name 3343  "t2DArray"
+                              Name 3352  "tCubeArray"
+                              Name 3381  "t2DRect"
+                              Name 3414  "subpass"
+                              Name 3420  "subpassMS"
+                              Name 3426  "result"
+                              Name 3511  "param"
+                              Name 3590  "fragColor"
+                              Name 3593  "tBuffer"
+                              Name 3595  "t2DMS"
+                              Name 3597  "t2DMSArray"
+                              Name 3598  "bias"
+                              Decorate 124(s1D) DescriptorSet 0
+                              Decorate 124(s1D) Binding 0
+                              Decorate 127(c1) Location 0
+                              Decorate 135(s2D) DescriptorSet 0
+                              Decorate 135(s2D) Binding 1
+                              Decorate 138(c2) Location 1
+                              Decorate 146(s3D) DescriptorSet 0
+                              Decorate 146(s3D) Binding 2
+                              Decorate 150(c3) Location 2
+                              Decorate 158(sCube) DescriptorSet 0
+                              Decorate 158(sCube) Binding 4
+                              Decorate 167(s1DShadow) DescriptorSet 0
+                              Decorate 167(s1DShadow) Binding 11
+                              Decorate 182(s2DShadow) DescriptorSet 0
+                              Decorate 182(s2DShadow) Binding 12
+                              Decorate 194(sCubeShadow) DescriptorSet 0
+                              Decorate 194(sCubeShadow) Binding 14
+                              Decorate 197(c4) Location 3
+                              Decorate 208(s1DArray) DescriptorSet 0
+                              Decorate 208(s1DArray) Binding 7
+                              Decorate 217(s2DArray) DescriptorSet 0
+                              Decorate 217(s2DArray) Binding 8
+                              Decorate 226(sCubeArray) DescriptorSet 0
+                              Decorate 226(sCubeArray) Binding 9
+                              Decorate 235(s1DArrayShadow) DescriptorSet 0
+                              Decorate 235(s1DArrayShadow) Binding 15
+                              Decorate 247(s2DArrayShadow) DescriptorSet 0
+                              Decorate 247(s2DArrayShadow) Binding 16
+                              Decorate 259(s2DRect) DescriptorSet 0
+                              Decorate 259(s2DRect) Binding 3
+                              Decorate 268(s2DRectShadow) DescriptorSet 0
+                              Decorate 268(s2DRectShadow) Binding 13
+                              Decorate 280(sCubeArrayShadow) DescriptorSet 0
+                              Decorate 280(sCubeArrayShadow) Binding 17
+                              Decorate 283(compare) Location 4
+                              Decorate 371(lod) Location 5
+                              Decorate 773(sBuffer) DescriptorSet 0
+                              Decorate 773(sBuffer) Binding 5
+                              Decorate 784(s2DMS) DescriptorSet 0
+                              Decorate 784(s2DMS) Binding 6
+                              Decorate 795(s2DMSArray) DescriptorSet 0
+                              Decorate 795(s2DMSArray) Binding 10
+                              Decorate 866(dPdxy1) Location 8
+                              Decorate 874(dPdxy2) Location 9
+                              Decorate 882(dPdxy3) Location 10
+                              Decorate 1844(i1D) DescriptorSet 1
+                              Decorate 1844(i1D) Binding 0
+                              Decorate 1853(i2D) DescriptorSet 1
+                              Decorate 1853(i2D) Binding 1
+                              Decorate 1862(i3D) DescriptorSet 1
+                              Decorate 1862(i3D) Binding 2
+                              Decorate 1871(i2DRect) DescriptorSet 1
+                              Decorate 1871(i2DRect) Binding 3
+                              Decorate 1880(iCube) DescriptorSet 1
+                              Decorate 1880(iCube) Binding 4
+                              Decorate 1889(iBuffer) DescriptorSet 1
+                              Decorate 1889(iBuffer) Binding 8
+                              Decorate 1898(i1DArray) DescriptorSet 1
+                              Decorate 1898(i1DArray) Binding 5
+                              Decorate 1907(i2DArray) DescriptorSet 1
+                              Decorate 1907(i2DArray) Binding 6
+                              Decorate 1916(iCubeArray) DescriptorSet 1
+                              Decorate 1916(iCubeArray) Binding 7
+                              Decorate 1925(i2DMS) DescriptorSet 1
+                              Decorate 1925(i2DMS) Binding 9
+                              Decorate 1934(i2DMSArray) DescriptorSet 1
+                              Decorate 1934(i2DMSArray) Binding 10
+                              Decorate 2665(lodClamp) Location 7
+                              Decorate 3264(t1D) DescriptorSet 2
+                              Decorate 3264(t1D) Binding 0
+                              Decorate 3268(s) DescriptorSet 2
+                              Decorate 3268(s) Binding 11
+                              Decorate 3276(t2D) DescriptorSet 2
+                              Decorate 3276(t2D) Binding 1
+                              Decorate 3285(t3D) DescriptorSet 2
+                              Decorate 3285(t3D) Binding 2
+                              Decorate 3294(tCube) DescriptorSet 2
+                              Decorate 3294(tCube) Binding 4
+                              Decorate 3303(sShadow) DescriptorSet 2
+                              Decorate 3303(sShadow) Binding 12
+                              Decorate 3334(t1DArray) DescriptorSet 2
+                              Decorate 3334(t1DArray) Binding 5
+                              Decorate 3343(t2DArray) DescriptorSet 2
+                              Decorate 3343(t2DArray) Binding 6
+                              Decorate 3352(tCubeArray) DescriptorSet 2
+                              Decorate 3352(tCubeArray) Binding 7
+                              Decorate 3381(t2DRect) DescriptorSet 2
+                              Decorate 3381(t2DRect) Binding 3
+                              Decorate 3414(subpass) DescriptorSet 3
+                              Decorate 3414(subpass) Binding 0
+                              Decorate 3414(subpass) InputAttachmentIndex 0
+                              Decorate 3420(subpassMS) DescriptorSet 3
+                              Decorate 3420(subpassMS) Binding 1
+                              Decorate 3420(subpassMS) InputAttachmentIndex 0
+                              Decorate 3590(fragColor) Location 0
+                              Decorate 3593(tBuffer) DescriptorSet 2
+                              Decorate 3593(tBuffer) Binding 8
+                              Decorate 3595(t2DMS) DescriptorSet 2
+                              Decorate 3595(t2DMS) Binding 9
+                              Decorate 3597(t2DMSArray) DescriptorSet 2
+                              Decorate 3597(t2DMSArray) Binding 10
+                              Decorate 3598(bias) Location 6
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeFunction 7(fvec4)
+              47:             TypeInt 32 1
+              48:             TypeVector 47(int) 4
+              49:             TypeFunction 48(ivec4)
+              52:             TypeVector 6(float) 2
+              53:             TypeFunction 52(fvec2)
+              56:             TypeFunction 47(int)
+              63:             TypePointer Function 7(fvec4)
+              64:             TypeFunction 2 63(ptr)
+             119:    6(float) Constant 0
+             120:    7(fvec4) ConstantComposite 119 119 119 119
+             121:             TypeImage 6(float) 1D sampled format:Unknown
+             122:             TypeSampledImage 121
+             123:             TypePointer UniformConstant 122
+        124(s1D):    123(ptr) Variable UniformConstant
+             126:             TypePointer Input 6(float)
+         127(c1):    126(ptr) Variable Input
+             132:             TypeImage 6(float) 2D sampled format:Unknown
+             133:             TypeSampledImage 132
+             134:             TypePointer UniformConstant 133
+        135(s2D):    134(ptr) Variable UniformConstant
+             137:             TypePointer Input 52(fvec2)
+         138(c2):    137(ptr) Variable Input
+             143:             TypeImage 6(float) 3D sampled format:Unknown
+             144:             TypeSampledImage 143
+             145:             TypePointer UniformConstant 144
+        146(s3D):    145(ptr) Variable UniformConstant
+             148:             TypeVector 6(float) 3
+             149:             TypePointer Input 148(fvec3)
+         150(c3):    149(ptr) Variable Input
+             155:             TypeImage 6(float) Cube sampled format:Unknown
+             156:             TypeSampledImage 155
+             157:             TypePointer UniformConstant 156
+      158(sCube):    157(ptr) Variable UniformConstant
+             164:             TypeImage 6(float) 1D depth sampled format:Unknown
+             165:             TypeSampledImage 164
+             166:             TypePointer UniformConstant 165
+  167(s1DShadow):    166(ptr) Variable UniformConstant
+             172:             TypeInt 32 0
+             173:    172(int) Constant 0
+             174:             TypePointer Function 6(float)
+             179:             TypeImage 6(float) 2D depth sampled format:Unknown
+             180:             TypeSampledImage 179
+             181:             TypePointer UniformConstant 180
+  182(s2DShadow):    181(ptr) Variable UniformConstant
+             191:             TypeImage 6(float) Cube depth sampled format:Unknown
+             192:             TypeSampledImage 191
+             193:             TypePointer UniformConstant 192
+194(sCubeShadow):    193(ptr) Variable UniformConstant
+             196:             TypePointer Input 7(fvec4)
+         197(c4):    196(ptr) Variable Input
+             205:             TypeImage 6(float) 1D array sampled format:Unknown
+             206:             TypeSampledImage 205
+             207:             TypePointer UniformConstant 206
+   208(s1DArray):    207(ptr) Variable UniformConstant
+             214:             TypeImage 6(float) 2D array sampled format:Unknown
+             215:             TypeSampledImage 214
+             216:             TypePointer UniformConstant 215
+   217(s2DArray):    216(ptr) Variable UniformConstant
+             223:             TypeImage 6(float) Cube array sampled format:Unknown
+             224:             TypeSampledImage 223
+             225:             TypePointer UniformConstant 224
+ 226(sCubeArray):    225(ptr) Variable UniformConstant
+             232:             TypeImage 6(float) 1D depth array sampled format:Unknown
+             233:             TypeSampledImage 232
+             234:             TypePointer UniformConstant 233
+235(s1DArrayShadow):    234(ptr) Variable UniformConstant
+             244:             TypeImage 6(float) 2D depth array sampled format:Unknown
+             245:             TypeSampledImage 244
+             246:             TypePointer UniformConstant 245
+247(s2DArrayShadow):    246(ptr) Variable UniformConstant
+             256:             TypeImage 6(float) Rect sampled format:Unknown
+             257:             TypeSampledImage 256
+             258:             TypePointer UniformConstant 257
+    259(s2DRect):    258(ptr) Variable UniformConstant
+             265:             TypeImage 6(float) Rect depth sampled format:Unknown
+             266:             TypeSampledImage 265
+             267:             TypePointer UniformConstant 266
+268(s2DRectShadow):    267(ptr) Variable UniformConstant
+             277:             TypeImage 6(float) Cube depth array sampled format:Unknown
+             278:             TypeSampledImage 277
+             279:             TypePointer UniformConstant 278
+280(sCubeArrayShadow):    279(ptr) Variable UniformConstant
+    283(compare):    126(ptr) Variable Input
+        371(lod):    126(ptr) Variable Input
+             445:     47(int) Constant 1
+             451:             TypeVector 47(int) 2
+             452:  451(ivec2) ConstantComposite 445 445
+             458:             TypeVector 47(int) 3
+             459:  458(ivec3) ConstantComposite 445 445 445
+             770:             TypeImage 6(float) Buffer sampled format:Unknown
+             771:             TypeSampledImage 770
+             772:             TypePointer UniformConstant 771
+    773(sBuffer):    772(ptr) Variable UniformConstant
+             781:             TypeImage 6(float) 2D multi-sampled sampled format:Unknown
+             782:             TypeSampledImage 781
+             783:             TypePointer UniformConstant 782
+      784(s2DMS):    783(ptr) Variable UniformConstant
+             792:             TypeImage 6(float) 2D array multi-sampled sampled format:Unknown
+             793:             TypeSampledImage 792
+             794:             TypePointer UniformConstant 793
+ 795(s2DMSArray):    794(ptr) Variable UniformConstant
+             799:     47(int) Constant 2
+     866(dPdxy1):    126(ptr) Variable Input
+     874(dPdxy2):    137(ptr) Variable Input
+     882(dPdxy3):    149(ptr) Variable Input
+            1275:     47(int) Constant 0
+            1372:    172(int) Constant 4
+            1373:             TypeArray 451(ivec2) 1372
+            1374:        1373 ConstantComposite 452 452 452 452
+            1469:             TypePointer Function 48(ivec4)
+            1471:   48(ivec4) ConstantComposite 1275 1275 1275 1275
+            1477:             TypePointer Function 47(int)
+            1492:    172(int) Constant 1
+            1507:    172(int) Constant 2
+            1687:             TypePointer Function 52(fvec2)
+            1689:   52(fvec2) ConstantComposite 119 119
+            1842:             TypeImage 6(float) 1D nonsampled format:Rgba16f
+            1843:             TypePointer UniformConstant 1842
+       1844(i1D):   1843(ptr) Variable UniformConstant
+            1851:             TypeImage 6(float) 2D nonsampled format:Rgba16f
+            1852:             TypePointer UniformConstant 1851
+       1853(i2D):   1852(ptr) Variable UniformConstant
+            1860:             TypeImage 6(float) 3D nonsampled format:Rgba16f
+            1861:             TypePointer UniformConstant 1860
+       1862(i3D):   1861(ptr) Variable UniformConstant
+            1869:             TypeImage 6(float) Rect nonsampled format:Rgba16f
+            1870:             TypePointer UniformConstant 1869
+   1871(i2DRect):   1870(ptr) Variable UniformConstant
+            1878:             TypeImage 6(float) Cube nonsampled format:Rgba16f
+            1879:             TypePointer UniformConstant 1878
+     1880(iCube):   1879(ptr) Variable UniformConstant
+            1887:             TypeImage 6(float) Buffer nonsampled format:Rgba16f
+            1888:             TypePointer UniformConstant 1887
+   1889(iBuffer):   1888(ptr) Variable UniformConstant
+            1896:             TypeImage 6(float) 1D array nonsampled format:Rgba16f
+            1897:             TypePointer UniformConstant 1896
+  1898(i1DArray):   1897(ptr) Variable UniformConstant
+            1905:             TypeImage 6(float) 2D array nonsampled format:Rgba16f
+            1906:             TypePointer UniformConstant 1905
+  1907(i2DArray):   1906(ptr) Variable UniformConstant
+            1914:             TypeImage 6(float) Cube array nonsampled format:Rgba16f
+            1915:             TypePointer UniformConstant 1914
+1916(iCubeArray):   1915(ptr) Variable UniformConstant
+            1923:             TypeImage 6(float) 2D multi-sampled nonsampled format:Rgba16f
+            1924:             TypePointer UniformConstant 1923
+     1925(i2DMS):   1924(ptr) Variable UniformConstant
+            1932:             TypeImage 6(float) 2D array multi-sampled nonsampled format:Rgba16f
+            1933:             TypePointer UniformConstant 1932
+1934(i2DMSArray):   1933(ptr) Variable UniformConstant
+   1991(ResType):             TypeStruct 47(int) 7(fvec4)
+   2009(ResType):             TypeStruct 47(int) 6(float)
+            2506:  451(ivec2) ConstantComposite 445 799
+            2507:     47(int) Constant 3
+            2508:     47(int) Constant 4
+            2509:  451(ivec2) ConstantComposite 2507 2508
+            2510:     47(int) Constant 15
+            2511:     47(int) Constant 16
+            2512:  451(ivec2) ConstantComposite 2510 2511
+            2513:     47(int) Constant 4294967294
+            2514:  451(ivec2) ConstantComposite 2513 1275
+            2515:        1373 ConstantComposite 2506 2509 2512 2514
+  2665(lodClamp):    126(ptr) Variable Input
+            3263:             TypePointer UniformConstant 121
+       3264(t1D):   3263(ptr) Variable UniformConstant
+            3266:             TypeSampler
+            3267:             TypePointer UniformConstant 3266
+         3268(s):   3267(ptr) Variable UniformConstant
+            3275:             TypePointer UniformConstant 132
+       3276(t2D):   3275(ptr) Variable UniformConstant
+            3284:             TypePointer UniformConstant 143
+       3285(t3D):   3284(ptr) Variable UniformConstant
+            3293:             TypePointer UniformConstant 155
+     3294(tCube):   3293(ptr) Variable UniformConstant
+   3303(sShadow):   3267(ptr) Variable UniformConstant
+            3333:             TypePointer UniformConstant 205
+  3334(t1DArray):   3333(ptr) Variable UniformConstant
+            3342:             TypePointer UniformConstant 214
+  3343(t2DArray):   3342(ptr) Variable UniformConstant
+            3351:             TypePointer UniformConstant 223
+3352(tCubeArray):   3351(ptr) Variable UniformConstant
+            3380:             TypePointer UniformConstant 256
+   3381(t2DRect):   3380(ptr) Variable UniformConstant
+            3412:             TypeImage 6(float) SubpassData nonsampled format:Unknown
+            3413:             TypePointer UniformConstant 3412
+   3414(subpass):   3413(ptr) Variable UniformConstant
+            3416:  451(ivec2) ConstantComposite 1275 1275
+            3418:             TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown
+            3419:             TypePointer UniformConstant 3418
+ 3420(subpassMS):   3419(ptr) Variable UniformConstant
+            3589:             TypePointer Output 7(fvec4)
+ 3590(fragColor):   3589(ptr) Variable Output
+            3592:             TypePointer UniformConstant 770
+   3593(tBuffer):   3592(ptr) Variable UniformConstant
+            3594:             TypePointer UniformConstant 781
+     3595(t2DMS):   3594(ptr) Variable UniformConstant
+            3596:             TypePointer UniformConstant 792
+3597(t2DMSArray):   3596(ptr) Variable UniformConstant
+      3598(bias):    126(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+    3426(result):     63(ptr) Variable Function
+     3511(param):     63(ptr) Variable Function
+                              Store 3426(result) 120
+            3427:    7(fvec4) FunctionCall 9(testTexture()
+            3428:    7(fvec4) Load 3426(result)
+            3429:    7(fvec4) FAdd 3428 3427
+                              Store 3426(result) 3429
+            3430:    7(fvec4) FunctionCall 11(testTextureProj()
+            3431:    7(fvec4) Load 3426(result)
+            3432:    7(fvec4) FAdd 3431 3430
+                              Store 3426(result) 3432
+            3433:    7(fvec4) FunctionCall 13(testTextureLod()
+            3434:    7(fvec4) Load 3426(result)
+            3435:    7(fvec4) FAdd 3434 3433
+                              Store 3426(result) 3435
+            3436:    7(fvec4) FunctionCall 15(testTextureOffset()
+            3437:    7(fvec4) Load 3426(result)
+            3438:    7(fvec4) FAdd 3437 3436
+                              Store 3426(result) 3438
+            3439:    7(fvec4) FunctionCall 19(testTextureLodOffset()
+            3440:    7(fvec4) Load 3426(result)
+            3441:    7(fvec4) FAdd 3440 3439
+                              Store 3426(result) 3441
+            3442:    7(fvec4) FunctionCall 21(testTextureProjLodOffset()
+            3443:    7(fvec4) Load 3426(result)
+            3444:    7(fvec4) FAdd 3443 3442
+                              Store 3426(result) 3444
+            3445:    7(fvec4) FunctionCall 23(testTexelFetch()
+            3446:    7(fvec4) Load 3426(result)
+            3447:    7(fvec4) FAdd 3446 3445
+                              Store 3426(result) 3447
+            3448:    7(fvec4) FunctionCall 25(testTexelFetchOffset()
+            3449:    7(fvec4) Load 3426(result)
+            3450:    7(fvec4) FAdd 3449 3448
+                              Store 3426(result) 3450
+            3451:    7(fvec4) FunctionCall 27(testTextureGrad()
+            3452:    7(fvec4) Load 3426(result)
+            3453:    7(fvec4) FAdd 3452 3451
+                              Store 3426(result) 3453
+            3454:    7(fvec4) FunctionCall 29(testTextureGradOffset()
+            3455:    7(fvec4) Load 3426(result)
+            3456:    7(fvec4) FAdd 3455 3454
+                              Store 3426(result) 3456
+            3457:    7(fvec4) FunctionCall 31(testTextureProjGrad()
+            3458:    7(fvec4) Load 3426(result)
+            3459:    7(fvec4) FAdd 3458 3457
+                              Store 3426(result) 3459
+            3460:    7(fvec4) FunctionCall 33(testTextureProjGradoffset()
+            3461:    7(fvec4) Load 3426(result)
+            3462:    7(fvec4) FAdd 3461 3460
+                              Store 3426(result) 3462
+            3463:    7(fvec4) FunctionCall 35(testTextureGather()
+            3464:    7(fvec4) Load 3426(result)
+            3465:    7(fvec4) FAdd 3464 3463
+                              Store 3426(result) 3465
+            3466:    7(fvec4) FunctionCall 37(testTextureGatherOffset()
+            3467:    7(fvec4) Load 3426(result)
+            3468:    7(fvec4) FAdd 3467 3466
+                              Store 3426(result) 3468
+            3469:    7(fvec4) FunctionCall 39(testTextureGatherOffsets()
+            3470:    7(fvec4) Load 3426(result)
+            3471:    7(fvec4) FAdd 3470 3469
+                              Store 3426(result) 3471
+            3472:    7(fvec4) FunctionCall 41(testTextureGatherLod()
+            3473:    7(fvec4) Load 3426(result)
+            3474:    7(fvec4) FAdd 3473 3472
+                              Store 3426(result) 3474
+            3475:    7(fvec4) FunctionCall 43(testTextureGatherLodOffset()
+            3476:    7(fvec4) Load 3426(result)
+            3477:    7(fvec4) FAdd 3476 3475
+                              Store 3426(result) 3477
+            3478:    7(fvec4) FunctionCall 45(testTextureGatherLodOffsets()
+            3479:    7(fvec4) Load 3426(result)
+            3480:    7(fvec4) FAdd 3479 3478
+                              Store 3426(result) 3480
+            3481:   48(ivec4) FunctionCall 50(testTextureSize()
+            3482:    7(fvec4) ConvertSToF 3481
+            3483:    7(fvec4) Load 3426(result)
+            3484:    7(fvec4) FAdd 3483 3482
+                              Store 3426(result) 3484
+            3485:   52(fvec2) FunctionCall 54(testTextureQueryLod()
+            3486:    6(float) CompositeExtract 3485 0
+            3487:    6(float) CompositeExtract 3485 1
+            3488:   52(fvec2) CompositeConstruct 3486 3487
+            3489:    7(fvec4) Load 3426(result)
+            3490:   52(fvec2) VectorShuffle 3489 3489 0 1
+            3491:   52(fvec2) FAdd 3490 3488
+            3492:    174(ptr) AccessChain 3426(result) 173
+            3493:    6(float) CompositeExtract 3491 0
+                              Store 3492 3493
+            3494:    174(ptr) AccessChain 3426(result) 1492
+            3495:    6(float) CompositeExtract 3491 1
+                              Store 3494 3495
+            3496:     47(int) FunctionCall 57(testTextureQueryLevels()
+            3497:    6(float) ConvertSToF 3496
+            3498:    174(ptr) AccessChain 3426(result) 173
+            3499:    6(float) Load 3498
+            3500:    6(float) FAdd 3499 3497
+            3501:    174(ptr) AccessChain 3426(result) 173
+                              Store 3501 3500
+            3502:     47(int) FunctionCall 59(testTextureSamples()
+            3503:    6(float) ConvertSToF 3502
+            3504:    174(ptr) AccessChain 3426(result) 173
+            3505:    6(float) Load 3504
+            3506:    6(float) FAdd 3505 3503
+            3507:    174(ptr) AccessChain 3426(result) 173
+                              Store 3507 3506
+            3508:    7(fvec4) FunctionCall 61(testImageLoad()
+            3509:    7(fvec4) Load 3426(result)
+            3510:    7(fvec4) FAdd 3509 3508
+                              Store 3426(result) 3510
+            3512:    7(fvec4) Load 3426(result)
+                              Store 3511(param) 3512
+            3513:           2 FunctionCall 66(testImageStore(vf4;) 3511(param)
+            3514:    7(fvec4) FunctionCall 68(testSparseTexture()
+            3515:    7(fvec4) Load 3426(result)
+            3516:    7(fvec4) FAdd 3515 3514
+                              Store 3426(result) 3516
+            3517:    7(fvec4) FunctionCall 70(testSparseTextureLod()
+            3518:    7(fvec4) Load 3426(result)
+            3519:    7(fvec4) FAdd 3518 3517
+                              Store 3426(result) 3519
+            3520:    7(fvec4) FunctionCall 72(testSparseTextureOffset()
+            3521:    7(fvec4) Load 3426(result)
+            3522:    7(fvec4) FAdd 3521 3520
+                              Store 3426(result) 3522
+            3523:    7(fvec4) FunctionCall 74(testSparseTextureLodOffset()
+            3524:    7(fvec4) Load 3426(result)
+            3525:    7(fvec4) FAdd 3524 3523
+                              Store 3426(result) 3525
+            3526:    7(fvec4) FunctionCall 76(testSparseTextureGrad()
+            3527:    7(fvec4) Load 3426(result)
+            3528:    7(fvec4) FAdd 3527 3526
+                              Store 3426(result) 3528
+            3529:    7(fvec4) FunctionCall 78(testSparseTextureGradOffset()
+            3530:    7(fvec4) Load 3426(result)
+            3531:    7(fvec4) FAdd 3530 3529
+                              Store 3426(result) 3531
+            3532:    7(fvec4) FunctionCall 80(testSparseTexelFetch()
+            3533:    7(fvec4) Load 3426(result)
+            3534:    7(fvec4) FAdd 3533 3532
+                              Store 3426(result) 3534
+            3535:    7(fvec4) FunctionCall 82(testSparseTexelFetchOffset()
+            3536:    7(fvec4) Load 3426(result)
+            3537:    7(fvec4) FAdd 3536 3535
+                              Store 3426(result) 3537
+            3538:    7(fvec4) FunctionCall 84(testSparseTextureGather()
+            3539:    7(fvec4) Load 3426(result)
+            3540:    7(fvec4) FAdd 3539 3538
+                              Store 3426(result) 3540
+            3541:    7(fvec4) FunctionCall 86(testSparseTextureGatherOffset()
+            3542:    7(fvec4) Load 3426(result)
+            3543:    7(fvec4) FAdd 3542 3541
+                              Store 3426(result) 3543
+            3544:    7(fvec4) FunctionCall 88(testSparseTextureGatherOffsets()
+            3545:    7(fvec4) Load 3426(result)
+            3546:    7(fvec4) FAdd 3545 3544
+                              Store 3426(result) 3546
+            3547:    7(fvec4) FunctionCall 90(testSparseTextureGatherLod()
+            3548:    7(fvec4) Load 3426(result)
+            3549:    7(fvec4) FAdd 3548 3547
+                              Store 3426(result) 3549
+            3550:    7(fvec4) FunctionCall 92(testSparseTextureGatherLodOffset()
+            3551:    7(fvec4) Load 3426(result)
+            3552:    7(fvec4) FAdd 3551 3550
+                              Store 3426(result) 3552
+            3553:    7(fvec4) FunctionCall 94(testSparseTextureGatherLodOffsets()
+            3554:    7(fvec4) Load 3426(result)
+            3555:    7(fvec4) FAdd 3554 3553
+                              Store 3426(result) 3555
+            3556:    7(fvec4) FunctionCall 96(testSparseImageLoad()
+            3557:    7(fvec4) Load 3426(result)
+            3558:    7(fvec4) FAdd 3557 3556
+                              Store 3426(result) 3558
+            3559:    7(fvec4) FunctionCall 98(testSparseTextureClamp()
+            3560:    7(fvec4) Load 3426(result)
+            3561:    7(fvec4) FAdd 3560 3559
+                              Store 3426(result) 3561
+            3562:    7(fvec4) FunctionCall 100(testTextureClamp()
+            3563:    7(fvec4) Load 3426(result)
+            3564:    7(fvec4) FAdd 3563 3562
+                              Store 3426(result) 3564
+            3565:    7(fvec4) FunctionCall 102(testSparseTextureOffsetClamp()
+            3566:    7(fvec4) Load 3426(result)
+            3567:    7(fvec4) FAdd 3566 3565
+                              Store 3426(result) 3567
+            3568:    7(fvec4) FunctionCall 104(testTextureOffsetClamp()
+            3569:    7(fvec4) Load 3426(result)
+            3570:    7(fvec4) FAdd 3569 3568
+                              Store 3426(result) 3570
+            3571:    7(fvec4) FunctionCall 76(testSparseTextureGrad()
+            3572:    7(fvec4) Load 3426(result)
+            3573:    7(fvec4) FAdd 3572 3571
+                              Store 3426(result) 3573
+            3574:    7(fvec4) FunctionCall 27(testTextureGrad()
+            3575:    7(fvec4) Load 3426(result)
+            3576:    7(fvec4) FAdd 3575 3574
+                              Store 3426(result) 3576
+            3577:    7(fvec4) FunctionCall 110(testSparseTextureGradOffsetClamp()
+            3578:    7(fvec4) Load 3426(result)
+            3579:    7(fvec4) FAdd 3578 3577
+                              Store 3426(result) 3579
+            3580:    7(fvec4) FunctionCall 112(testTextureGradOffsetClamp()
+            3581:    7(fvec4) Load 3426(result)
+            3582:    7(fvec4) FAdd 3581 3580
+                              Store 3426(result) 3582
+            3583:    7(fvec4) FunctionCall 114(testCombinedTextureSampler()
+            3584:    7(fvec4) Load 3426(result)
+            3585:    7(fvec4) FAdd 3584 3583
+                              Store 3426(result) 3585
+            3586:    7(fvec4) FunctionCall 116(testSubpassLoad()
+            3587:    7(fvec4) Load 3426(result)
+            3588:    7(fvec4) FAdd 3587 3586
+                              Store 3426(result) 3588
+            3591:    7(fvec4) Load 3426(result)
+                              Store 3590(fragColor) 3591
+                              Return
+                              FunctionEnd
+ 9(testTexture():    7(fvec4) Function None 8
+              10:             Label
+      118(texel):     63(ptr) Variable Function
+                              Store 118(texel) 120
+             125:         122 Load 124(s1D)
+             128:    6(float) Load 127(c1)
+             129:    7(fvec4) ImageSampleImplicitLod 125 128
+             130:    7(fvec4) Load 118(texel)
+             131:    7(fvec4) FAdd 130 129
+                              Store 118(texel) 131
+             136:         133 Load 135(s2D)
+             139:   52(fvec2) Load 138(c2)
+             140:    7(fvec4) ImageSampleImplicitLod 136 139
+             141:    7(fvec4) Load 118(texel)
+             142:    7(fvec4) FAdd 141 140
+                              Store 118(texel) 142
+             147:         144 Load 146(s3D)
+             151:  148(fvec3) Load 150(c3)
+             152:    7(fvec4) ImageSampleImplicitLod 147 151
+             153:    7(fvec4) Load 118(texel)
+             154:    7(fvec4) FAdd 153 152
+                              Store 118(texel) 154
+             159:         156 Load 158(sCube)
+             160:  148(fvec3) Load 150(c3)
+             161:    7(fvec4) ImageSampleImplicitLod 159 160
+             162:    7(fvec4) Load 118(texel)
+             163:    7(fvec4) FAdd 162 161
+                              Store 118(texel) 163
+             168:         165 Load 167(s1DShadow)
+             169:  148(fvec3) Load 150(c3)
+             170:    6(float) CompositeExtract 169 2
+             171:    6(float) ImageSampleDrefImplicitLod 168 169 170
+             175:    174(ptr) AccessChain 118(texel) 173
+             176:    6(float) Load 175
+             177:    6(float) FAdd 176 171
+             178:    174(ptr) AccessChain 118(texel) 173
+                              Store 178 177
+             183:         180 Load 182(s2DShadow)
+             184:  148(fvec3) Load 150(c3)
+             185:    6(float) CompositeExtract 184 2
+             186:    6(float) ImageSampleDrefImplicitLod 183 184 185
+             187:    174(ptr) AccessChain 118(texel) 173
+             188:    6(float) Load 187
+             189:    6(float) FAdd 188 186
+             190:    174(ptr) AccessChain 118(texel) 173
+                              Store 190 189
+             195:         192 Load 194(sCubeShadow)
+             198:    7(fvec4) Load 197(c4)
+             199:    6(float) CompositeExtract 198 3
+             200:    6(float) ImageSampleDrefImplicitLod 195 198 199
+             201:    174(ptr) AccessChain 118(texel) 173
+             202:    6(float) Load 201
+             203:    6(float) FAdd 202 200
+             204:    174(ptr) AccessChain 118(texel) 173
+                              Store 204 203
+             209:         206 Load 208(s1DArray)
+             210:   52(fvec2) Load 138(c2)
+             211:    7(fvec4) ImageSampleImplicitLod 209 210
+             212:    7(fvec4) Load 118(texel)
+             213:    7(fvec4) FAdd 212 211
+                              Store 118(texel) 213
+             218:         215 Load 217(s2DArray)
+             219:  148(fvec3) Load 150(c3)
+             220:    7(fvec4) ImageSampleImplicitLod 218 219
+             221:    7(fvec4) Load 118(texel)
+             222:    7(fvec4) FAdd 221 220
+                              Store 118(texel) 222
+             227:         224 Load 226(sCubeArray)
+             228:    7(fvec4) Load 197(c4)
+             229:    7(fvec4) ImageSampleImplicitLod 227 228
+             230:    7(fvec4) Load 118(texel)
+             231:    7(fvec4) FAdd 230 229
+                              Store 118(texel) 231
+             236:         233 Load 235(s1DArrayShadow)
+             237:  148(fvec3) Load 150(c3)
+             238:    6(float) CompositeExtract 237 2
+             239:    6(float) ImageSampleDrefImplicitLod 236 237 238
+             240:    174(ptr) AccessChain 118(texel) 173
+             241:    6(float) Load 240
+             242:    6(float) FAdd 241 239
+             243:    174(ptr) AccessChain 118(texel) 173
+                              Store 243 242
+             248:         245 Load 247(s2DArrayShadow)
+             249:    7(fvec4) Load 197(c4)
+             250:    6(float) CompositeExtract 249 3
+             251:    6(float) ImageSampleDrefImplicitLod 248 249 250
+             252:    174(ptr) AccessChain 118(texel) 173
+             253:    6(float) Load 252
+             254:    6(float) FAdd 253 251
+             255:    174(ptr) AccessChain 118(texel) 173
+                              Store 255 254
+             260:         257 Load 259(s2DRect)
+             261:   52(fvec2) Load 138(c2)
+             262:    7(fvec4) ImageSampleImplicitLod 260 261
+             263:    7(fvec4) Load 118(texel)
+             264:    7(fvec4) FAdd 263 262
+                              Store 118(texel) 264
+             269:         266 Load 268(s2DRectShadow)
+             270:  148(fvec3) Load 150(c3)
+             271:    6(float) CompositeExtract 270 2
+             272:    6(float) ImageSampleDrefImplicitLod 269 270 271
+             273:    174(ptr) AccessChain 118(texel) 173
+             274:    6(float) Load 273
+             275:    6(float) FAdd 274 272
+             276:    174(ptr) AccessChain 118(texel) 173
+                              Store 276 275
+             281:         278 Load 280(sCubeArrayShadow)
+             282:    7(fvec4) Load 197(c4)
+             284:    6(float) Load 283(compare)
+             285:    6(float) ImageSampleDrefImplicitLod 281 282 284
+             286:    174(ptr) AccessChain 118(texel) 173
+             287:    6(float) Load 286
+             288:    6(float) FAdd 287 285
+             289:    174(ptr) AccessChain 118(texel) 173
+                              Store 289 288
+             290:    7(fvec4) Load 118(texel)
+                              ReturnValue 290
+                              FunctionEnd
+11(testTextureProj():    7(fvec4) Function None 8
+              12:             Label
+      293(texel):     63(ptr) Variable Function
+                              Store 293(texel) 120
+             294:         122 Load 124(s1D)
+             295:   52(fvec2) Load 138(c2)
+             296:    7(fvec4) ImageSampleProjImplicitLod 294 295
+             297:    7(fvec4) Load 293(texel)
+             298:    7(fvec4) FAdd 297 296
+                              Store 293(texel) 298
+             299:         122 Load 124(s1D)
+             300:    7(fvec4) Load 197(c4)
+             301:    6(float) CompositeExtract 300 3
+             302:    7(fvec4) CompositeInsert 301 300 1
+             303:    7(fvec4) ImageSampleProjImplicitLod 299 302
+             304:    7(fvec4) Load 293(texel)
+             305:    7(fvec4) FAdd 304 303
+                              Store 293(texel) 305
+             306:         133 Load 135(s2D)
+             307:  148(fvec3) Load 150(c3)
+             308:    7(fvec4) ImageSampleProjImplicitLod 306 307
+             309:    7(fvec4) Load 293(texel)
+             310:    7(fvec4) FAdd 309 308
+                              Store 293(texel) 310
+             311:         133 Load 135(s2D)
+             312:    7(fvec4) Load 197(c4)
+             313:    6(float) CompositeExtract 312 3
+             314:    7(fvec4) CompositeInsert 313 312 2
+             315:    7(fvec4) ImageSampleProjImplicitLod 311 314
+             316:    7(fvec4) Load 293(texel)
+             317:    7(fvec4) FAdd 316 315
+                              Store 293(texel) 317
+             318:         144 Load 146(s3D)
+             319:    7(fvec4) Load 197(c4)
+             320:    7(fvec4) ImageSampleProjImplicitLod 318 319
+             321:    7(fvec4) Load 293(texel)
+             322:    7(fvec4) FAdd 321 320
+                              Store 293(texel) 322
+             323:         165 Load 167(s1DShadow)
+             324:    7(fvec4) Load 197(c4)
+             325:    6(float) CompositeExtract 324 2
+             326:    6(float) CompositeExtract 324 3
+             327:    7(fvec4) CompositeInsert 326 324 1
+             328:    6(float) ImageSampleProjDrefImplicitLod 323 327 325
+             329:    174(ptr) AccessChain 293(texel) 173
+             330:    6(float) Load 329
+             331:    6(float) FAdd 330 328
+             332:    174(ptr) AccessChain 293(texel) 173
+                              Store 332 331
+             333:         180 Load 182(s2DShadow)
+             334:    7(fvec4) Load 197(c4)
+             335:    6(float) CompositeExtract 334 2
+             336:    6(float) CompositeExtract 334 3
+             337:    7(fvec4) CompositeInsert 336 334 2
+             338:    6(float) ImageSampleProjDrefImplicitLod 333 337 335
+             339:    174(ptr) AccessChain 293(texel) 173
+             340:    6(float) Load 339
+             341:    6(float) FAdd 340 338
+             342:    174(ptr) AccessChain 293(texel) 173
+                              Store 342 341
+             343:         257 Load 259(s2DRect)
+             344:  148(fvec3) Load 150(c3)
+             345:    7(fvec4) ImageSampleProjImplicitLod 343 344
+             346:    7(fvec4) Load 293(texel)
+             347:    7(fvec4) FAdd 346 345
+                              Store 293(texel) 347
+             348:         257 Load 259(s2DRect)
+             349:    7(fvec4) Load 197(c4)
+             350:    6(float) CompositeExtract 349 3
+             351:    7(fvec4) CompositeInsert 350 349 2
+             352:    7(fvec4) ImageSampleProjImplicitLod 348 351
+             353:    7(fvec4) Load 293(texel)
+             354:    7(fvec4) FAdd 353 352
+                              Store 293(texel) 354
+             355:         266 Load 268(s2DRectShadow)
+             356:    7(fvec4) Load 197(c4)
+             357:    6(float) CompositeExtract 356 2
+             358:    6(float) CompositeExtract 356 3
+             359:    7(fvec4) CompositeInsert 358 356 2
+             360:    6(float) ImageSampleProjDrefImplicitLod 355 359 357
+             361:    174(ptr) AccessChain 293(texel) 173
+             362:    6(float) Load 361
+             363:    6(float) FAdd 362 360
+             364:    174(ptr) AccessChain 293(texel) 173
+                              Store 364 363
+             365:    7(fvec4) Load 293(texel)
+                              ReturnValue 365
+                              FunctionEnd
+13(testTextureLod():    7(fvec4) Function None 8
+              14:             Label
+      368(texel):     63(ptr) Variable Function
+                              Store 368(texel) 120
+             369:         122 Load 124(s1D)
+             370:    6(float) Load 127(c1)
+             372:    6(float) Load 371(lod)
+             373:    7(fvec4) ImageSampleExplicitLod 369 370 Lod 372
+             374:    7(fvec4) Load 368(texel)
+             375:    7(fvec4) FAdd 374 373
+                              Store 368(texel) 375
+             376:         133 Load 135(s2D)
+             377:   52(fvec2) Load 138(c2)
+             378:    6(float) Load 371(lod)
+             379:    7(fvec4) ImageSampleExplicitLod 376 377 Lod 378
+             380:    7(fvec4) Load 368(texel)
+             381:    7(fvec4) FAdd 380 379
+                              Store 368(texel) 381
+             382:         144 Load 146(s3D)
+             383:  148(fvec3) Load 150(c3)
+             384:    6(float) Load 371(lod)
+             385:    7(fvec4) ImageSampleExplicitLod 382 383 Lod 384
+             386:    7(fvec4) Load 368(texel)
+             387:    7(fvec4) FAdd 386 385
+                              Store 368(texel) 387
+             388:         156 Load 158(sCube)
+             389:  148(fvec3) Load 150(c3)
+             390:    6(float) Load 371(lod)
+             391:    7(fvec4) ImageSampleExplicitLod 388 389 Lod 390
+             392:    7(fvec4) Load 368(texel)
+             393:    7(fvec4) FAdd 392 391
+                              Store 368(texel) 393
+             394:         165 Load 167(s1DShadow)
+             395:  148(fvec3) Load 150(c3)
+             396:    6(float) Load 371(lod)
+             397:    6(float) CompositeExtract 395 2
+             398:    6(float) ImageSampleDrefExplicitLod 394 395 397 Lod 396
+             399:    174(ptr) AccessChain 368(texel) 173
+             400:    6(float) Load 399
+             401:    6(float) FAdd 400 398
+             402:    174(ptr) AccessChain 368(texel) 173
+                              Store 402 401
+             403:         180 Load 182(s2DShadow)
+             404:  148(fvec3) Load 150(c3)
+             405:    6(float) Load 371(lod)
+             406:    6(float) CompositeExtract 404 2
+             407:    6(float) ImageSampleDrefExplicitLod 403 404 406 Lod 405
+             408:    174(ptr) AccessChain 368(texel) 173
+             409:    6(float) Load 408
+             410:    6(float) FAdd 409 407
+             411:    174(ptr) AccessChain 368(texel) 173
+                              Store 411 410
+             412:         206 Load 208(s1DArray)
+             413:   52(fvec2) Load 138(c2)
+             414:    6(float) Load 371(lod)
+             415:    7(fvec4) ImageSampleExplicitLod 412 413 Lod 414
+             416:    7(fvec4) Load 368(texel)
+             417:    7(fvec4) FAdd 416 415
+                              Store 368(texel) 417
+             418:         215 Load 217(s2DArray)
+             419:  148(fvec3) Load 150(c3)
+             420:    6(float) Load 371(lod)
+             421:    7(fvec4) ImageSampleExplicitLod 418 419 Lod 420
+             422:    7(fvec4) Load 368(texel)
+             423:    7(fvec4) FAdd 422 421
+                              Store 368(texel) 423
+             424:         233 Load 235(s1DArrayShadow)
+             425:  148(fvec3) Load 150(c3)
+             426:    6(float) Load 371(lod)
+             427:    6(float) CompositeExtract 425 2
+             428:    6(float) ImageSampleDrefExplicitLod 424 425 427 Lod 426
+             429:    174(ptr) AccessChain 368(texel) 173
+             430:    6(float) Load 429
+             431:    6(float) FAdd 430 428
+             432:    174(ptr) AccessChain 368(texel) 173
+                              Store 432 431
+             433:         224 Load 226(sCubeArray)
+             434:    7(fvec4) Load 197(c4)
+             435:    6(float) Load 371(lod)
+             436:    7(fvec4) ImageSampleExplicitLod 433 434 Lod 435
+             437:    7(fvec4) Load 368(texel)
+             438:    7(fvec4) FAdd 437 436
+                              Store 368(texel) 438
+             439:    7(fvec4) Load 368(texel)
+                              ReturnValue 439
+                              FunctionEnd
+15(testTextureOffset():    7(fvec4) Function None 8
+              16:             Label
+      442(texel):     63(ptr) Variable Function
+                              Store 442(texel) 120
+             443:         122 Load 124(s1D)
+             444:    6(float) Load 127(c1)
+             446:    7(fvec4) ImageSampleImplicitLod 443 444 ConstOffset 445
+             447:    7(fvec4) Load 442(texel)
+             448:    7(fvec4) FAdd 447 446
+                              Store 442(texel) 448
+             449:         133 Load 135(s2D)
+             450:   52(fvec2) Load 138(c2)
+             453:    7(fvec4) ImageSampleImplicitLod 449 450 ConstOffset 452
+             454:    7(fvec4) Load 442(texel)
+             455:    7(fvec4) FAdd 454 453
+                              Store 442(texel) 455
+             456:         144 Load 146(s3D)
+             457:  148(fvec3) Load 150(c3)
+             460:    7(fvec4) ImageSampleImplicitLod 456 457 ConstOffset 459
+             461:    7(fvec4) Load 442(texel)
+             462:    7(fvec4) FAdd 461 460
+                              Store 442(texel) 462
+             463:         257 Load 259(s2DRect)
+             464:   52(fvec2) Load 138(c2)
+             465:    7(fvec4) ImageSampleImplicitLod 463 464 ConstOffset 452
+             466:    7(fvec4) Load 442(texel)
+             467:    7(fvec4) FAdd 466 465
+                              Store 442(texel) 467
+             468:         266 Load 268(s2DRectShadow)
+             469:  148(fvec3) Load 150(c3)
+             470:    6(float) CompositeExtract 469 2
+             471:    6(float) ImageSampleDrefImplicitLod 468 469 470 ConstOffset 452
+             472:    174(ptr) AccessChain 442(texel) 173
+             473:    6(float) Load 472
+             474:    6(float) FAdd 473 471
+             475:    174(ptr) AccessChain 442(texel) 173
+                              Store 475 474
+             476:         165 Load 167(s1DShadow)
+             477:  148(fvec3) Load 150(c3)
+             478:    6(float) CompositeExtract 477 2
+             479:    6(float) ImageSampleDrefImplicitLod 476 477 478 ConstOffset 445
+             480:    174(ptr) AccessChain 442(texel) 173
+             481:    6(float) Load 480
+             482:    6(float) FAdd 481 479
+             483:    174(ptr) AccessChain 442(texel) 173
+                              Store 483 482
+             484:         180 Load 182(s2DShadow)
+             485:  148(fvec3) Load 150(c3)
+             486:    6(float) CompositeExtract 485 2
+             487:    6(float) ImageSampleDrefImplicitLod 484 485 486 ConstOffset 452
+             488:    174(ptr) AccessChain 442(texel) 173
+             489:    6(float) Load 488
+             490:    6(float) FAdd 489 487
+             491:    174(ptr) AccessChain 442(texel) 173
+                              Store 491 490
+             492:         206 Load 208(s1DArray)
+             493:   52(fvec2) Load 138(c2)
+             494:    7(fvec4) ImageSampleImplicitLod 492 493 ConstOffset 445
+             495:    7(fvec4) Load 442(texel)
+             496:    7(fvec4) FAdd 495 494
+                              Store 442(texel) 496
+             497:         215 Load 217(s2DArray)
+             498:  148(fvec3) Load 150(c3)
+             499:    7(fvec4) ImageSampleImplicitLod 497 498 ConstOffset 452
+             500:    7(fvec4) Load 442(texel)
+             501:    7(fvec4) FAdd 500 499
+                              Store 442(texel) 501
+             502:         233 Load 235(s1DArrayShadow)
+             503:  148(fvec3) Load 150(c3)
+             504:    6(float) CompositeExtract 503 2
+             505:    6(float) ImageSampleDrefImplicitLod 502 503 504 ConstOffset 445
+             506:    174(ptr) AccessChain 442(texel) 173
+             507:    6(float) Load 506
+             508:    6(float) FAdd 507 505
+             509:    174(ptr) AccessChain 442(texel) 173
+                              Store 509 508
+             510:         245 Load 247(s2DArrayShadow)
+             511:    7(fvec4) Load 197(c4)
+             512:    6(float) CompositeExtract 511 3
+             513:    6(float) ImageSampleDrefImplicitLod 510 511 512 ConstOffset 452
+             514:    174(ptr) AccessChain 442(texel) 173
+             515:    6(float) Load 514
+             516:    6(float) FAdd 515 513
+             517:    174(ptr) AccessChain 442(texel) 173
+                              Store 517 516
+             518:    7(fvec4) Load 442(texel)
+                              ReturnValue 518
+                              FunctionEnd
+17(testTextureProjOffset():    7(fvec4) Function None 8
+              18:             Label
+      521(texel):     63(ptr) Variable Function
+                              Store 521(texel) 120
+             522:         122 Load 124(s1D)
+             523:   52(fvec2) Load 138(c2)
+             524:    7(fvec4) ImageSampleProjImplicitLod 522 523 ConstOffset 445
+             525:    7(fvec4) Load 521(texel)
+             526:    7(fvec4) FAdd 525 524
+                              Store 521(texel) 526
+             527:         122 Load 124(s1D)
+             528:    7(fvec4) Load 197(c4)
+             529:    6(float) CompositeExtract 528 3
+             530:    7(fvec4) CompositeInsert 529 528 1
+             531:    7(fvec4) ImageSampleProjImplicitLod 527 530 ConstOffset 445
+             532:    7(fvec4) Load 521(texel)
+             533:    7(fvec4) FAdd 532 531
+                              Store 521(texel) 533
+             534:         133 Load 135(s2D)
+             535:  148(fvec3) Load 150(c3)
+             536:    7(fvec4) ImageSampleProjImplicitLod 534 535 ConstOffset 452
+             537:    7(fvec4) Load 521(texel)
+             538:    7(fvec4) FAdd 537 536
+                              Store 521(texel) 538
+             539:         133 Load 135(s2D)
+             540:    7(fvec4) Load 197(c4)
+             541:    6(float) CompositeExtract 540 3
+             542:    7(fvec4) CompositeInsert 541 540 2
+             543:    7(fvec4) ImageSampleProjImplicitLod 539 542 ConstOffset 452
+             544:    7(fvec4) Load 521(texel)
+             545:    7(fvec4) FAdd 544 543
+                              Store 521(texel) 545
+             546:         144 Load 146(s3D)
+             547:    7(fvec4) Load 197(c4)
+             548:    7(fvec4) ImageSampleProjImplicitLod 546 547 ConstOffset 459
+             549:    7(fvec4) Load 521(texel)
+             550:    7(fvec4) FAdd 549 548
+                              Store 521(texel) 550
+             551:         257 Load 259(s2DRect)
+             552:  148(fvec3) Load 150(c3)
+             553:    7(fvec4) ImageSampleProjImplicitLod 551 552 ConstOffset 452
+             554:    7(fvec4) Load 521(texel)
+             555:    7(fvec4) FAdd 554 553
+                              Store 521(texel) 555
+             556:         257 Load 259(s2DRect)
+             557:    7(fvec4) Load 197(c4)
+             558:    6(float) CompositeExtract 557 3
+             559:    7(fvec4) CompositeInsert 558 557 2
+             560:    7(fvec4) ImageSampleProjImplicitLod 556 559 ConstOffset 452
+             561:    7(fvec4) Load 521(texel)
+             562:    7(fvec4) FAdd 561 560
+                              Store 521(texel) 562
+             563:         266 Load 268(s2DRectShadow)
+             564:    7(fvec4) Load 197(c4)
+             565:    6(float) CompositeExtract 564 2
+             566:    6(float) CompositeExtract 564 3
+             567:    7(fvec4) CompositeInsert 566 564 2
+             568:    6(float) ImageSampleProjDrefImplicitLod 563 567 565 ConstOffset 452
+             569:    174(ptr) AccessChain 521(texel) 173
+             570:    6(float) Load 569
+             571:    6(float) FAdd 570 568
+             572:    174(ptr) AccessChain 521(texel) 173
+                              Store 572 571
+             573:         165 Load 167(s1DShadow)
+             574:    7(fvec4) Load 197(c4)
+             575:    6(float) CompositeExtract 574 2
+             576:    6(float) CompositeExtract 574 3
+             577:    7(fvec4) CompositeInsert 576 574 1
+             578:    6(float) ImageSampleProjDrefImplicitLod 573 577 575 ConstOffset 445
+             579:    174(ptr) AccessChain 521(texel) 173
+             580:    6(float) Load 579
+             581:    6(float) FAdd 580 578
+             582:    174(ptr) AccessChain 521(texel) 173
+                              Store 582 581
+             583:         180 Load 182(s2DShadow)
+             584:    7(fvec4) Load 197(c4)
+             585:    6(float) CompositeExtract 584 2
+             586:    6(float) CompositeExtract 584 3
+             587:    7(fvec4) CompositeInsert 586 584 2
+             588:    6(float) ImageSampleProjDrefImplicitLod 583 587 585 ConstOffset 452
+             589:    174(ptr) AccessChain 521(texel) 173
+             590:    6(float) Load 589
+             591:    6(float) FAdd 590 588
+             592:    174(ptr) AccessChain 521(texel) 173
+                              Store 592 591
+             593:    7(fvec4) Load 521(texel)
+                              ReturnValue 593
+                              FunctionEnd
+19(testTextureLodOffset():    7(fvec4) Function None 8
+              20:             Label
+      596(texel):     63(ptr) Variable Function
+                              Store 596(texel) 120
+             597:         122 Load 124(s1D)
+             598:    6(float) Load 127(c1)
+             599:    6(float) Load 371(lod)
+             600:    7(fvec4) ImageSampleExplicitLod 597 598 Lod ConstOffset 599 445
+             601:    7(fvec4) Load 596(texel)
+             602:    7(fvec4) FAdd 601 600
+                              Store 596(texel) 602
+             603:         133 Load 135(s2D)
+             604:   52(fvec2) Load 138(c2)
+             605:    6(float) Load 371(lod)
+             606:    7(fvec4) ImageSampleExplicitLod 603 604 Lod ConstOffset 605 452
+             607:    7(fvec4) Load 596(texel)
+             608:    7(fvec4) FAdd 607 606
+                              Store 596(texel) 608
+             609:         144 Load 146(s3D)
+             610:  148(fvec3) Load 150(c3)
+             611:    6(float) Load 371(lod)
+             612:    7(fvec4) ImageSampleExplicitLod 609 610 Lod ConstOffset 611 459
+             613:    7(fvec4) Load 596(texel)
+             614:    7(fvec4) FAdd 613 612
+                              Store 596(texel) 614
+             615:         165 Load 167(s1DShadow)
+             616:  148(fvec3) Load 150(c3)
+             617:    6(float) Load 371(lod)
+             618:    6(float) CompositeExtract 616 2
+             619:    6(float) ImageSampleDrefExplicitLod 615 616 618 Lod ConstOffset 617 445
+             620:    174(ptr) AccessChain 596(texel) 173
+             621:    6(float) Load 620
+             622:    6(float) FAdd 621 619
+             623:    174(ptr) AccessChain 596(texel) 173
+                              Store 623 622
+             624:         180 Load 182(s2DShadow)
+             625:  148(fvec3) Load 150(c3)
+             626:    6(float) Load 371(lod)
+             627:    6(float) CompositeExtract 625 2
+             628:    6(float) ImageSampleDrefExplicitLod 624 625 627 Lod ConstOffset 626 452
+             629:    174(ptr) AccessChain 596(texel) 173
+             630:    6(float) Load 629
+             631:    6(float) FAdd 630 628
+             632:    174(ptr) AccessChain 596(texel) 173
+                              Store 632 631
+             633:         206 Load 208(s1DArray)
+             634:   52(fvec2) Load 138(c2)
+             635:    6(float) Load 371(lod)
+             636:    7(fvec4) ImageSampleExplicitLod 633 634 Lod ConstOffset 635 445
+             637:    7(fvec4) Load 596(texel)
+             638:    7(fvec4) FAdd 637 636
+                              Store 596(texel) 638
+             639:         215 Load 217(s2DArray)
+             640:  148(fvec3) Load 150(c3)
+             641:    6(float) Load 371(lod)
+             642:    7(fvec4) ImageSampleExplicitLod 639 640 Lod ConstOffset 641 452
+             643:    7(fvec4) Load 596(texel)
+             644:    7(fvec4) FAdd 643 642
+                              Store 596(texel) 644
+             645:         233 Load 235(s1DArrayShadow)
+             646:  148(fvec3) Load 150(c3)
+             647:    6(float) Load 371(lod)
+             648:    6(float) CompositeExtract 646 2
+             649:    6(float) ImageSampleDrefExplicitLod 645 646 648 Lod ConstOffset 647 445
+             650:    174(ptr) AccessChain 596(texel) 173
+             651:    6(float) Load 650
+             652:    6(float) FAdd 651 649
+             653:    174(ptr) AccessChain 596(texel) 173
+                              Store 653 652
+             654:    7(fvec4) Load 596(texel)
+                              ReturnValue 654
+                              FunctionEnd
+21(testTextureProjLodOffset():    7(fvec4) Function None 8
+              22:             Label
+      657(texel):     63(ptr) Variable Function
+                              Store 657(texel) 120
+             658:         122 Load 124(s1D)
+             659:   52(fvec2) Load 138(c2)
+             660:    6(float) Load 371(lod)
+             661:    7(fvec4) ImageSampleProjExplicitLod 658 659 Lod ConstOffset 660 445
+             662:    7(fvec4) Load 657(texel)
+             663:    7(fvec4) FAdd 662 661
+                              Store 657(texel) 663
+             664:         122 Load 124(s1D)
+             665:    7(fvec4) Load 197(c4)
+             666:    6(float) Load 371(lod)
+             667:    6(float) CompositeExtract 665 3
+             668:    7(fvec4) CompositeInsert 667 665 1
+             669:    7(fvec4) ImageSampleProjExplicitLod 664 668 Lod ConstOffset 666 445
+             670:    7(fvec4) Load 657(texel)
+             671:    7(fvec4) FAdd 670 669
+                              Store 657(texel) 671
+             672:         133 Load 135(s2D)
+             673:  148(fvec3) Load 150(c3)
+             674:    6(float) Load 371(lod)
+             675:    7(fvec4) ImageSampleProjExplicitLod 672 673 Lod ConstOffset 674 452
+             676:    7(fvec4) Load 657(texel)
+             677:    7(fvec4) FAdd 676 675
+                              Store 657(texel) 677
+             678:         133 Load 135(s2D)
+             679:    7(fvec4) Load 197(c4)
+             680:    6(float) Load 371(lod)
+             681:    6(float) CompositeExtract 679 3
+             682:    7(fvec4) CompositeInsert 681 679 2
+             683:    7(fvec4) ImageSampleProjExplicitLod 678 682 Lod ConstOffset 680 452
+             684:    7(fvec4) Load 657(texel)
+             685:    7(fvec4) FAdd 684 683
+                              Store 657(texel) 685
+             686:         144 Load 146(s3D)
+             687:    7(fvec4) Load 197(c4)
+             688:    6(float) Load 371(lod)
+             689:    7(fvec4) ImageSampleProjExplicitLod 686 687 Lod ConstOffset 688 459
+             690:    7(fvec4) Load 657(texel)
+             691:    7(fvec4) FAdd 690 689
+                              Store 657(texel) 691
+             692:         165 Load 167(s1DShadow)
+             693:    7(fvec4) Load 197(c4)
+             694:    6(float) Load 371(lod)
+             695:    6(float) CompositeExtract 693 2
+             696:    6(float) CompositeExtract 693 3
+             697:    7(fvec4) CompositeInsert 696 693 1
+             698:    6(float) ImageSampleProjDrefExplicitLod 692 697 695 Lod ConstOffset 694 445
+             699:    174(ptr) AccessChain 657(texel) 173
+             700:    6(float) Load 699
+             701:    6(float) FAdd 700 698
+             702:    174(ptr) AccessChain 657(texel) 173
+                              Store 702 701
+             703:         180 Load 182(s2DShadow)
+             704:    7(fvec4) Load 197(c4)
+             705:    6(float) Load 371(lod)
+             706:    6(float) CompositeExtract 704 2
+             707:    6(float) CompositeExtract 704 3
+             708:    7(fvec4) CompositeInsert 707 704 2
+             709:    6(float) ImageSampleProjDrefExplicitLod 703 708 706 Lod ConstOffset 705 452
+             710:    174(ptr) AccessChain 657(texel) 173
+             711:    6(float) Load 710
+             712:    6(float) FAdd 711 709
+             713:    174(ptr) AccessChain 657(texel) 173
+                              Store 713 712
+             714:    7(fvec4) Load 657(texel)
+                              ReturnValue 714
+                              FunctionEnd
+23(testTexelFetch():    7(fvec4) Function None 8
+              24:             Label
+      717(texel):     63(ptr) Variable Function
+                              Store 717(texel) 120
+             718:         122 Load 124(s1D)
+             719:    6(float) Load 127(c1)
+             720:     47(int) ConvertFToS 719
+             721:    6(float) Load 371(lod)
+             722:     47(int) ConvertFToS 721
+             723:         121 Image 718
+             724:    7(fvec4) ImageFetch 723 720 Lod 722
+             725:    7(fvec4) Load 717(texel)
+             726:    7(fvec4) FAdd 725 724
+                              Store 717(texel) 726
+             727:         133 Load 135(s2D)
+             728:   52(fvec2) Load 138(c2)
+             729:  451(ivec2) ConvertFToS 728
+             730:    6(float) Load 371(lod)
+             731:     47(int) ConvertFToS 730
+             732:         132 Image 727
+             733:    7(fvec4) ImageFetch 732 729 Lod 731
+             734:    7(fvec4) Load 717(texel)
+             735:    7(fvec4) FAdd 734 733
+                              Store 717(texel) 735
+             736:         144 Load 146(s3D)
+             737:  148(fvec3) Load 150(c3)
+             738:  458(ivec3) ConvertFToS 737
+             739:    6(float) Load 371(lod)
+             740:     47(int) ConvertFToS 739
+             741:         143 Image 736
+             742:    7(fvec4) ImageFetch 741 738 Lod 740
+             743:    7(fvec4) Load 717(texel)
+             744:    7(fvec4) FAdd 743 742
+                              Store 717(texel) 744
+             745:         257 Load 259(s2DRect)
+             746:   52(fvec2) Load 138(c2)
+             747:  451(ivec2) ConvertFToS 746
+             748:         256 Image 745
+             749:    7(fvec4) ImageFetch 748 747
+             750:    7(fvec4) Load 717(texel)
+             751:    7(fvec4) FAdd 750 749
+                              Store 717(texel) 751
+             752:         206 Load 208(s1DArray)
+             753:   52(fvec2) Load 138(c2)
+             754:  451(ivec2) ConvertFToS 753
+             755:    6(float) Load 371(lod)
+             756:     47(int) ConvertFToS 755
+             757:         205 Image 752
+             758:    7(fvec4) ImageFetch 757 754 Lod 756
+             759:    7(fvec4) Load 717(texel)
+             760:    7(fvec4) FAdd 759 758
+                              Store 717(texel) 760
+             761:         215 Load 217(s2DArray)
+             762:  148(fvec3) Load 150(c3)
+             763:  458(ivec3) ConvertFToS 762
+             764:    6(float) Load 371(lod)
+             765:     47(int) ConvertFToS 764
+             766:         214 Image 761
+             767:    7(fvec4) ImageFetch 766 763 Lod 765
+             768:    7(fvec4) Load 717(texel)
+             769:    7(fvec4) FAdd 768 767
+                              Store 717(texel) 769
+             774:         771 Load 773(sBuffer)
+             775:    6(float) Load 127(c1)
+             776:     47(int) ConvertFToS 775
+             777:         770 Image 774
+             778:    7(fvec4) ImageFetch 777 776
+             779:    7(fvec4) Load 717(texel)
+             780:    7(fvec4) FAdd 779 778
+                              Store 717(texel) 780
+             785:         782 Load 784(s2DMS)
+             786:   52(fvec2) Load 138(c2)
+             787:  451(ivec2) ConvertFToS 786
+             788:         781 Image 785
+             789:    7(fvec4) ImageFetch 788 787 Sample 445
+             790:    7(fvec4) Load 717(texel)
+             791:    7(fvec4) FAdd 790 789
+                              Store 717(texel) 791
+             796:         793 Load 795(s2DMSArray)
+             797:  148(fvec3) Load 150(c3)
+             798:  458(ivec3) ConvertFToS 797
+             800:         792 Image 796
+             801:    7(fvec4) ImageFetch 800 798 Sample 799
+             802:    7(fvec4) Load 717(texel)
+             803:    7(fvec4) FAdd 802 801
+                              Store 717(texel) 803
+             804:    7(fvec4) Load 717(texel)
+                              ReturnValue 804
+                              FunctionEnd
+25(testTexelFetchOffset():    7(fvec4) Function None 8
+              26:             Label
+      807(texel):     63(ptr) Variable Function
+                              Store 807(texel) 120
+             808:         122 Load 124(s1D)
+             809:    6(float) Load 127(c1)
+             810:     47(int) ConvertFToS 809
+             811:    6(float) Load 371(lod)
+             812:     47(int) ConvertFToS 811
+             813:         121 Image 808
+             814:    7(fvec4) ImageFetch 813 810 Lod ConstOffset 812 445
+             815:    7(fvec4) Load 807(texel)
+             816:    7(fvec4) FAdd 815 814
+                              Store 807(texel) 816
+             817:         133 Load 135(s2D)
+             818:   52(fvec2) Load 138(c2)
+             819:  451(ivec2) ConvertFToS 818
+             820:    6(float) Load 371(lod)
+             821:     47(int) ConvertFToS 820
+             822:         132 Image 817
+             823:    7(fvec4) ImageFetch 822 819 Lod ConstOffset 821 452
+             824:    7(fvec4) Load 807(texel)
+             825:    7(fvec4) FAdd 824 823
+                              Store 807(texel) 825
+             826:         144 Load 146(s3D)
+             827:  148(fvec3) Load 150(c3)
+             828:  458(ivec3) ConvertFToS 827
+             829:    6(float) Load 371(lod)
+             830:     47(int) ConvertFToS 829
+             831:         143 Image 826
+             832:    7(fvec4) ImageFetch 831 828 Lod ConstOffset 830 459
+             833:    7(fvec4) Load 807(texel)
+             834:    7(fvec4) FAdd 833 832
+                              Store 807(texel) 834
+             835:         257 Load 259(s2DRect)
+             836:   52(fvec2) Load 138(c2)
+             837:  451(ivec2) ConvertFToS 836
+             838:         256 Image 835
+             839:    7(fvec4) ImageFetch 838 837 ConstOffset 452
+             840:    7(fvec4) Load 807(texel)
+             841:    7(fvec4) FAdd 840 839
+                              Store 807(texel) 841
+             842:         206 Load 208(s1DArray)
+             843:   52(fvec2) Load 138(c2)
+             844:  451(ivec2) ConvertFToS 843
+             845:    6(float) Load 371(lod)
+             846:     47(int) ConvertFToS 845
+             847:         205 Image 842
+             848:    7(fvec4) ImageFetch 847 844 Lod ConstOffset 846 445
+             849:    7(fvec4) Load 807(texel)
+             850:    7(fvec4) FAdd 849 848
+                              Store 807(texel) 850
+             851:         215 Load 217(s2DArray)
+             852:  148(fvec3) Load 150(c3)
+             853:  458(ivec3) ConvertFToS 852
+             854:    6(float) Load 371(lod)
+             855:     47(int) ConvertFToS 854
+             856:         214 Image 851
+             857:    7(fvec4) ImageFetch 856 853 Lod ConstOffset 855 452
+             858:    7(fvec4) Load 807(texel)
+             859:    7(fvec4) FAdd 858 857
+                              Store 807(texel) 859
+             860:    7(fvec4) Load 807(texel)
+                              ReturnValue 860
+                              FunctionEnd
+27(testTextureGrad():    7(fvec4) Function None 8
+              28:             Label
+      863(texel):     63(ptr) Variable Function
+                              Store 863(texel) 120
+             864:         122 Load 124(s1D)
+             865:    6(float) Load 127(c1)
+             867:    6(float) Load 866(dPdxy1)
+             868:    6(float) Load 866(dPdxy1)
+             869:    7(fvec4) ImageSampleExplicitLod 864 865 Grad 867 868
+             870:    7(fvec4) Load 863(texel)
+             871:    7(fvec4) FAdd 870 869
+                              Store 863(texel) 871
+             872:         133 Load 135(s2D)
+             873:   52(fvec2) Load 138(c2)
+             875:   52(fvec2) Load 874(dPdxy2)
+             876:   52(fvec2) Load 874(dPdxy2)
+             877:    7(fvec4) ImageSampleExplicitLod 872 873 Grad 875 876
+             878:    7(fvec4) Load 863(texel)
+             879:    7(fvec4) FAdd 878 877
+                              Store 863(texel) 879
+             880:         144 Load 146(s3D)
+             881:  148(fvec3) Load 150(c3)
+             883:  148(fvec3) Load 882(dPdxy3)
+             884:  148(fvec3) Load 882(dPdxy3)
+             885:    7(fvec4) ImageSampleExplicitLod 880 881 Grad 883 884
+             886:    7(fvec4) Load 863(texel)
+             887:    7(fvec4) FAdd 886 885
+                              Store 863(texel) 887
+             888:         156 Load 158(sCube)
+             889:  148(fvec3) Load 150(c3)
+             890:  148(fvec3) Load 882(dPdxy3)
+             891:  148(fvec3) Load 882(dPdxy3)
+             892:    7(fvec4) ImageSampleExplicitLod 888 889 Grad 890 891
+             893:    7(fvec4) Load 863(texel)
+             894:    7(fvec4) FAdd 893 892
+                              Store 863(texel) 894
+             895:         257 Load 259(s2DRect)
+             896:   52(fvec2) Load 138(c2)
+             897:   52(fvec2) Load 874(dPdxy2)
+             898:   52(fvec2) Load 874(dPdxy2)
+             899:    7(fvec4) ImageSampleExplicitLod 895 896 Grad 897 898
+             900:    7(fvec4) Load 863(texel)
+             901:    7(fvec4) FAdd 900 899
+                              Store 863(texel) 901
+             902:         266 Load 268(s2DRectShadow)
+             903:  148(fvec3) Load 150(c3)
+             904:   52(fvec2) Load 874(dPdxy2)
+             905:   52(fvec2) Load 874(dPdxy2)
+             906:    6(float) CompositeExtract 903 2
+             907:    6(float) ImageSampleDrefExplicitLod 902 903 906 Grad 904 905
+             908:    174(ptr) AccessChain 863(texel) 173
+             909:    6(float) Load 908
+             910:    6(float) FAdd 909 907
+             911:    174(ptr) AccessChain 863(texel) 173
+                              Store 911 910
+             912:         165 Load 167(s1DShadow)
+             913:  148(fvec3) Load 150(c3)
+             914:    6(float) Load 866(dPdxy1)
+             915:    6(float) Load 866(dPdxy1)
+             916:    6(float) CompositeExtract 913 2
+             917:    6(float) ImageSampleDrefExplicitLod 912 913 916 Grad 914 915
+             918:    174(ptr) AccessChain 863(texel) 173
+             919:    6(float) Load 918
+             920:    6(float) FAdd 919 917
+             921:    174(ptr) AccessChain 863(texel) 173
+                              Store 921 920
+             922:         180 Load 182(s2DShadow)
+             923:  148(fvec3) Load 150(c3)
+             924:   52(fvec2) Load 874(dPdxy2)
+             925:   52(fvec2) Load 874(dPdxy2)
+             926:    6(float) CompositeExtract 923 2
+             927:    6(float) ImageSampleDrefExplicitLod 922 923 926 Grad 924 925
+             928:    174(ptr) AccessChain 863(texel) 173
+             929:    6(float) Load 928
+             930:    6(float) FAdd 929 927
+             931:    174(ptr) AccessChain 863(texel) 173
+                              Store 931 930
+             932:         192 Load 194(sCubeShadow)
+             933:    7(fvec4) Load 197(c4)
+             934:  148(fvec3) Load 882(dPdxy3)
+             935:  148(fvec3) Load 882(dPdxy3)
+             936:    6(float) CompositeExtract 933 3
+             937:    6(float) ImageSampleDrefExplicitLod 932 933 936 Grad 934 935
+             938:    174(ptr) AccessChain 863(texel) 173
+             939:    6(float) Load 938
+             940:    6(float) FAdd 939 937
+             941:    174(ptr) AccessChain 863(texel) 173
+                              Store 941 940
+             942:         206 Load 208(s1DArray)
+             943:   52(fvec2) Load 138(c2)
+             944:    6(float) Load 866(dPdxy1)
+             945:    6(float) Load 866(dPdxy1)
+             946:    7(fvec4) ImageSampleExplicitLod 942 943 Grad 944 945
+             947:    7(fvec4) Load 863(texel)
+             948:    7(fvec4) FAdd 947 946
+                              Store 863(texel) 948
+             949:         215 Load 217(s2DArray)
+             950:  148(fvec3) Load 150(c3)
+             951:   52(fvec2) Load 874(dPdxy2)
+             952:   52(fvec2) Load 874(dPdxy2)
+             953:    7(fvec4) ImageSampleExplicitLod 949 950 Grad 951 952
+             954:    7(fvec4) Load 863(texel)
+             955:    7(fvec4) FAdd 954 953
+                              Store 863(texel) 955
+             956:         233 Load 235(s1DArrayShadow)
+             957:  148(fvec3) Load 150(c3)
+             958:    6(float) Load 866(dPdxy1)
+             959:    6(float) Load 866(dPdxy1)
+             960:    6(float) CompositeExtract 957 2
+             961:    6(float) ImageSampleDrefExplicitLod 956 957 960 Grad 958 959
+             962:    174(ptr) AccessChain 863(texel) 173
+             963:    6(float) Load 962
+             964:    6(float) FAdd 963 961
+             965:    174(ptr) AccessChain 863(texel) 173
+                              Store 965 964
+             966:         245 Load 247(s2DArrayShadow)
+             967:    7(fvec4) Load 197(c4)
+             968:   52(fvec2) Load 874(dPdxy2)
+             969:   52(fvec2) Load 874(dPdxy2)
+             970:    6(float) CompositeExtract 967 3
+             971:    6(float) ImageSampleDrefExplicitLod 966 967 970 Grad 968 969
+             972:    174(ptr) AccessChain 863(texel) 173
+             973:    6(float) Load 972
+             974:    6(float) FAdd 973 971
+             975:    174(ptr) AccessChain 863(texel) 173
+                              Store 975 974
+             976:         224 Load 226(sCubeArray)
+             977:    7(fvec4) Load 197(c4)
+             978:  148(fvec3) Load 882(dPdxy3)
+             979:  148(fvec3) Load 882(dPdxy3)
+             980:    7(fvec4) ImageSampleExplicitLod 976 977 Grad 978 979
+             981:    7(fvec4) Load 863(texel)
+             982:    7(fvec4) FAdd 981 980
+                              Store 863(texel) 982
+             983:    7(fvec4) Load 863(texel)
+                              ReturnValue 983
+                              FunctionEnd
+29(testTextureGradOffset():    7(fvec4) Function None 8
+              30:             Label
+      986(texel):     63(ptr) Variable Function
+                              Store 986(texel) 120
+             987:         122 Load 124(s1D)
+             988:    6(float) Load 127(c1)
+             989:    6(float) Load 866(dPdxy1)
+             990:    6(float) Load 866(dPdxy1)
+             991:    7(fvec4) ImageSampleExplicitLod 987 988 Grad ConstOffset 989 990 445
+             992:    7(fvec4) Load 986(texel)
+             993:    7(fvec4) FAdd 992 991
+                              Store 986(texel) 993
+             994:         133 Load 135(s2D)
+             995:   52(fvec2) Load 138(c2)
+             996:   52(fvec2) Load 874(dPdxy2)
+             997:   52(fvec2) Load 874(dPdxy2)
+             998:    7(fvec4) ImageSampleExplicitLod 994 995 Grad ConstOffset 996 997 452
+             999:    7(fvec4) Load 986(texel)
+            1000:    7(fvec4) FAdd 999 998
+                              Store 986(texel) 1000
+            1001:         144 Load 146(s3D)
+            1002:  148(fvec3) Load 150(c3)
+            1003:  148(fvec3) Load 882(dPdxy3)
+            1004:  148(fvec3) Load 882(dPdxy3)
+            1005:    7(fvec4) ImageSampleExplicitLod 1001 1002 Grad ConstOffset 1003 1004 459
+            1006:    7(fvec4) Load 986(texel)
+            1007:    7(fvec4) FAdd 1006 1005
+                              Store 986(texel) 1007
+            1008:         257 Load 259(s2DRect)
+            1009:   52(fvec2) Load 138(c2)
+            1010:   52(fvec2) Load 874(dPdxy2)
+            1011:   52(fvec2) Load 874(dPdxy2)
+            1012:    7(fvec4) ImageSampleExplicitLod 1008 1009 Grad ConstOffset 1010 1011 452
+            1013:    7(fvec4) Load 986(texel)
+            1014:    7(fvec4) FAdd 1013 1012
+                              Store 986(texel) 1014
+            1015:         266 Load 268(s2DRectShadow)
+            1016:  148(fvec3) Load 150(c3)
+            1017:   52(fvec2) Load 874(dPdxy2)
+            1018:   52(fvec2) Load 874(dPdxy2)
+            1019:    6(float) CompositeExtract 1016 2
+            1020:    6(float) ImageSampleDrefExplicitLod 1015 1016 1019 Grad ConstOffset 1017 1018 452
+            1021:    174(ptr) AccessChain 986(texel) 173
+            1022:    6(float) Load 1021
+            1023:    6(float) FAdd 1022 1020
+            1024:    174(ptr) AccessChain 986(texel) 173
+                              Store 1024 1023
+            1025:         165 Load 167(s1DShadow)
+            1026:  148(fvec3) Load 150(c3)
+            1027:    6(float) Load 866(dPdxy1)
+            1028:    6(float) Load 866(dPdxy1)
+            1029:    6(float) CompositeExtract 1026 2
+            1030:    6(float) ImageSampleDrefExplicitLod 1025 1026 1029 Grad ConstOffset 1027 1028 445
+            1031:    174(ptr) AccessChain 986(texel) 173
+            1032:    6(float) Load 1031
+            1033:    6(float) FAdd 1032 1030
+            1034:    174(ptr) AccessChain 986(texel) 173
+                              Store 1034 1033
+            1035:         180 Load 182(s2DShadow)
+            1036:  148(fvec3) Load 150(c3)
+            1037:   52(fvec2) Load 874(dPdxy2)
+            1038:   52(fvec2) Load 874(dPdxy2)
+            1039:    6(float) CompositeExtract 1036 2
+            1040:    6(float) ImageSampleDrefExplicitLod 1035 1036 1039 Grad ConstOffset 1037 1038 452
+            1041:    174(ptr) AccessChain 986(texel) 173
+            1042:    6(float) Load 1041
+            1043:    6(float) FAdd 1042 1040
+            1044:    174(ptr) AccessChain 986(texel) 173
+                              Store 1044 1043
+            1045:         206 Load 208(s1DArray)
+            1046:   52(fvec2) Load 138(c2)
+            1047:    6(float) Load 866(dPdxy1)
+            1048:    6(float) Load 866(dPdxy1)
+            1049:    7(fvec4) ImageSampleExplicitLod 1045 1046 Grad ConstOffset 1047 1048 445
+            1050:    7(fvec4) Load 986(texel)
+            1051:    7(fvec4) FAdd 1050 1049
+                              Store 986(texel) 1051
+            1052:         215 Load 217(s2DArray)
+            1053:  148(fvec3) Load 150(c3)
+            1054:   52(fvec2) Load 874(dPdxy2)
+            1055:   52(fvec2) Load 874(dPdxy2)
+            1056:    7(fvec4) ImageSampleExplicitLod 1052 1053 Grad ConstOffset 1054 1055 452
+            1057:    7(fvec4) Load 986(texel)
+            1058:    7(fvec4) FAdd 1057 1056
+                              Store 986(texel) 1058
+            1059:         233 Load 235(s1DArrayShadow)
+            1060:  148(fvec3) Load 150(c3)
+            1061:    6(float) Load 866(dPdxy1)
+            1062:    6(float) Load 866(dPdxy1)
+            1063:    6(float) CompositeExtract 1060 2
+            1064:    6(float) ImageSampleDrefExplicitLod 1059 1060 1063 Grad ConstOffset 1061 1062 445
+            1065:    174(ptr) AccessChain 986(texel) 173
+            1066:    6(float) Load 1065
+            1067:    6(float) FAdd 1066 1064
+            1068:    174(ptr) AccessChain 986(texel) 173
+                              Store 1068 1067
+            1069:         245 Load 247(s2DArrayShadow)
+            1070:    7(fvec4) Load 197(c4)
+            1071:   52(fvec2) Load 874(dPdxy2)
+            1072:   52(fvec2) Load 874(dPdxy2)
+            1073:    6(float) CompositeExtract 1070 3
+            1074:    6(float) ImageSampleDrefExplicitLod 1069 1070 1073 Grad ConstOffset 1071 1072 452
+            1075:    174(ptr) AccessChain 986(texel) 173
+            1076:    6(float) Load 1075
+            1077:    6(float) FAdd 1076 1074
+            1078:    174(ptr) AccessChain 986(texel) 173
+                              Store 1078 1077
+            1079:    7(fvec4) Load 986(texel)
+                              ReturnValue 1079
+                              FunctionEnd
+31(testTextureProjGrad():    7(fvec4) Function None 8
+              32:             Label
+     1082(texel):     63(ptr) Variable Function
+                              Store 1082(texel) 120
+            1083:         122 Load 124(s1D)
+            1084:   52(fvec2) Load 138(c2)
+            1085:    6(float) Load 866(dPdxy1)
+            1086:    6(float) Load 866(dPdxy1)
+            1087:    7(fvec4) ImageSampleProjExplicitLod 1083 1084 Grad 1085 1086
+            1088:    7(fvec4) Load 1082(texel)
+            1089:    7(fvec4) FAdd 1088 1087
+                              Store 1082(texel) 1089
+            1090:         122 Load 124(s1D)
+            1091:    7(fvec4) Load 197(c4)
+            1092:    6(float) Load 866(dPdxy1)
+            1093:    6(float) Load 866(dPdxy1)
+            1094:    6(float) CompositeExtract 1091 3
+            1095:    7(fvec4) CompositeInsert 1094 1091 1
+            1096:    7(fvec4) ImageSampleProjExplicitLod 1090 1095 Grad 1092 1093
+            1097:    7(fvec4) Load 1082(texel)
+            1098:    7(fvec4) FAdd 1097 1096
+                              Store 1082(texel) 1098
+            1099:         133 Load 135(s2D)
+            1100:  148(fvec3) Load 150(c3)
+            1101:   52(fvec2) Load 874(dPdxy2)
+            1102:   52(fvec2) Load 874(dPdxy2)
+            1103:    7(fvec4) ImageSampleProjExplicitLod 1099 1100 Grad 1101 1102
+            1104:    7(fvec4) Load 1082(texel)
+            1105:    7(fvec4) FAdd 1104 1103
+                              Store 1082(texel) 1105
+            1106:         133 Load 135(s2D)
+            1107:    7(fvec4) Load 197(c4)
+            1108:   52(fvec2) Load 874(dPdxy2)
+            1109:   52(fvec2) Load 874(dPdxy2)
+            1110:    6(float) CompositeExtract 1107 3
+            1111:    7(fvec4) CompositeInsert 1110 1107 2
+            1112:    7(fvec4) ImageSampleProjExplicitLod 1106 1111 Grad 1108 1109
+            1113:    7(fvec4) Load 1082(texel)
+            1114:    7(fvec4) FAdd 1113 1112
+                              Store 1082(texel) 1114
+            1115:         144 Load 146(s3D)
+            1116:    7(fvec4) Load 197(c4)
+            1117:  148(fvec3) Load 882(dPdxy3)
+            1118:  148(fvec3) Load 882(dPdxy3)
+            1119:    7(fvec4) ImageSampleProjExplicitLod 1115 1116 Grad 1117 1118
+            1120:    7(fvec4) Load 1082(texel)
+            1121:    7(fvec4) FAdd 1120 1119
+                              Store 1082(texel) 1121
+            1122:         257 Load 259(s2DRect)
+            1123:  148(fvec3) Load 150(c3)
+            1124:   52(fvec2) Load 874(dPdxy2)
+            1125:   52(fvec2) Load 874(dPdxy2)
+            1126:    7(fvec4) ImageSampleProjExplicitLod 1122 1123 Grad 1124 1125
+            1127:    7(fvec4) Load 1082(texel)
+            1128:    7(fvec4) FAdd 1127 1126
+                              Store 1082(texel) 1128
+            1129:         257 Load 259(s2DRect)
+            1130:    7(fvec4) Load 197(c4)
+            1131:   52(fvec2) Load 874(dPdxy2)
+            1132:   52(fvec2) Load 874(dPdxy2)
+            1133:    6(float) CompositeExtract 1130 3
+            1134:    7(fvec4) CompositeInsert 1133 1130 2
+            1135:    7(fvec4) ImageSampleProjExplicitLod 1129 1134 Grad 1131 1132
+            1136:    7(fvec4) Load 1082(texel)
+            1137:    7(fvec4) FAdd 1136 1135
+                              Store 1082(texel) 1137
+            1138:         266 Load 268(s2DRectShadow)
+            1139:    7(fvec4) Load 197(c4)
+            1140:   52(fvec2) Load 874(dPdxy2)
+            1141:   52(fvec2) Load 874(dPdxy2)
+            1142:    6(float) CompositeExtract 1139 2
+            1143:    6(float) CompositeExtract 1139 3
+            1144:    7(fvec4) CompositeInsert 1143 1139 2
+            1145:    6(float) ImageSampleProjDrefExplicitLod 1138 1144 1142 Grad 1140 1141
+            1146:    174(ptr) AccessChain 1082(texel) 173
+            1147:    6(float) Load 1146
+            1148:    6(float) FAdd 1147 1145
+            1149:    174(ptr) AccessChain 1082(texel) 173
+                              Store 1149 1148
+            1150:         165 Load 167(s1DShadow)
+            1151:    7(fvec4) Load 197(c4)
+            1152:    6(float) Load 866(dPdxy1)
+            1153:    6(float) Load 866(dPdxy1)
+            1154:    6(float) CompositeExtract 1151 2
+            1155:    6(float) CompositeExtract 1151 3
+            1156:    7(fvec4) CompositeInsert 1155 1151 1
+            1157:    6(float) ImageSampleProjDrefExplicitLod 1150 1156 1154 Grad 1152 1153
+            1158:    174(ptr) AccessChain 1082(texel) 173
+            1159:    6(float) Load 1158
+            1160:    6(float) FAdd 1159 1157
+            1161:    174(ptr) AccessChain 1082(texel) 173
+                              Store 1161 1160
+            1162:         180 Load 182(s2DShadow)
+            1163:    7(fvec4) Load 197(c4)
+            1164:   52(fvec2) Load 874(dPdxy2)
+            1165:   52(fvec2) Load 874(dPdxy2)
+            1166:    6(float) CompositeExtract 1163 2
+            1167:    6(float) CompositeExtract 1163 3
+            1168:    7(fvec4) CompositeInsert 1167 1163 2
+            1169:    6(float) ImageSampleProjDrefExplicitLod 1162 1168 1166 Grad 1164 1165
+            1170:    174(ptr) AccessChain 1082(texel) 173
+            1171:    6(float) Load 1170
+            1172:    6(float) FAdd 1171 1169
+            1173:    174(ptr) AccessChain 1082(texel) 173
+                              Store 1173 1172
+            1174:    7(fvec4) Load 1082(texel)
+                              ReturnValue 1174
+                              FunctionEnd
+33(testTextureProjGradoffset():    7(fvec4) Function None 8
+              34:             Label
+     1177(texel):     63(ptr) Variable Function
+                              Store 1177(texel) 120
+            1178:         122 Load 124(s1D)
+            1179:   52(fvec2) Load 138(c2)
+            1180:    6(float) Load 866(dPdxy1)
+            1181:    6(float) Load 866(dPdxy1)
+            1182:    7(fvec4) ImageSampleProjExplicitLod 1178 1179 Grad ConstOffset 1180 1181 445
+            1183:    7(fvec4) Load 1177(texel)
+            1184:    7(fvec4) FAdd 1183 1182
+                              Store 1177(texel) 1184
+            1185:         122 Load 124(s1D)
+            1186:    7(fvec4) Load 197(c4)
+            1187:    6(float) Load 866(dPdxy1)
+            1188:    6(float) Load 866(dPdxy1)
+            1189:    6(float) CompositeExtract 1186 3
+            1190:    7(fvec4) CompositeInsert 1189 1186 1
+            1191:    7(fvec4) ImageSampleProjExplicitLod 1185 1190 Grad ConstOffset 1187 1188 445
+            1192:    7(fvec4) Load 1177(texel)
+            1193:    7(fvec4) FAdd 1192 1191
+                              Store 1177(texel) 1193
+            1194:         133 Load 135(s2D)
+            1195:  148(fvec3) Load 150(c3)
+            1196:   52(fvec2) Load 874(dPdxy2)
+            1197:   52(fvec2) Load 874(dPdxy2)
+            1198:    7(fvec4) ImageSampleProjExplicitLod 1194 1195 Grad ConstOffset 1196 1197 452
+            1199:    7(fvec4) Load 1177(texel)
+            1200:    7(fvec4) FAdd 1199 1198
+                              Store 1177(texel) 1200
+            1201:         133 Load 135(s2D)
+            1202:    7(fvec4) Load 197(c4)
+            1203:   52(fvec2) Load 874(dPdxy2)
+            1204:   52(fvec2) Load 874(dPdxy2)
+            1205:    6(float) CompositeExtract 1202 3
+            1206:    7(fvec4) CompositeInsert 1205 1202 2
+            1207:    7(fvec4) ImageSampleProjExplicitLod 1201 1206 Grad ConstOffset 1203 1204 452
+            1208:    7(fvec4) Load 1177(texel)
+            1209:    7(fvec4) FAdd 1208 1207
+                              Store 1177(texel) 1209
+            1210:         257 Load 259(s2DRect)
+            1211:  148(fvec3) Load 150(c3)
+            1212:   52(fvec2) Load 874(dPdxy2)
+            1213:   52(fvec2) Load 874(dPdxy2)
+            1214:    7(fvec4) ImageSampleProjExplicitLod 1210 1211 Grad ConstOffset 1212 1213 452
+            1215:    7(fvec4) Load 1177(texel)
+            1216:    7(fvec4) FAdd 1215 1214
+                              Store 1177(texel) 1216
+            1217:         257 Load 259(s2DRect)
+            1218:    7(fvec4) Load 197(c4)
+            1219:   52(fvec2) Load 874(dPdxy2)
+            1220:   52(fvec2) Load 874(dPdxy2)
+            1221:    6(float) CompositeExtract 1218 3
+            1222:    7(fvec4) CompositeInsert 1221 1218 2
+            1223:    7(fvec4) ImageSampleProjExplicitLod 1217 1222 Grad ConstOffset 1219 1220 452
+            1224:    7(fvec4) Load 1177(texel)
+            1225:    7(fvec4) FAdd 1224 1223
+                              Store 1177(texel) 1225
+            1226:         266 Load 268(s2DRectShadow)
+            1227:    7(fvec4) Load 197(c4)
+            1228:   52(fvec2) Load 874(dPdxy2)
+            1229:   52(fvec2) Load 874(dPdxy2)
+            1230:    6(float) CompositeExtract 1227 2
+            1231:    6(float) CompositeExtract 1227 3
+            1232:    7(fvec4) CompositeInsert 1231 1227 2
+            1233:    6(float) ImageSampleProjDrefExplicitLod 1226 1232 1230 Grad ConstOffset 1228 1229 452
+            1234:    174(ptr) AccessChain 1177(texel) 173
+            1235:    6(float) Load 1234
+            1236:    6(float) FAdd 1235 1233
+            1237:    174(ptr) AccessChain 1177(texel) 173
+                              Store 1237 1236
+            1238:         144 Load 146(s3D)
+            1239:    7(fvec4) Load 197(c4)
+            1240:  148(fvec3) Load 882(dPdxy3)
+            1241:  148(fvec3) Load 882(dPdxy3)
+            1242:    7(fvec4) ImageSampleProjExplicitLod 1238 1239 Grad ConstOffset 1240 1241 459
+            1243:    7(fvec4) Load 1177(texel)
+            1244:    7(fvec4) FAdd 1243 1242
+                              Store 1177(texel) 1244
+            1245:         165 Load 167(s1DShadow)
+            1246:    7(fvec4) Load 197(c4)
+            1247:    6(float) Load 866(dPdxy1)
+            1248:    6(float) Load 866(dPdxy1)
+            1249:    6(float) CompositeExtract 1246 2
+            1250:    6(float) CompositeExtract 1246 3
+            1251:    7(fvec4) CompositeInsert 1250 1246 1
+            1252:    6(float) ImageSampleProjDrefExplicitLod 1245 1251 1249 Grad ConstOffset 1247 1248 445
+            1253:    174(ptr) AccessChain 1177(texel) 173
+            1254:    6(float) Load 1253
+            1255:    6(float) FAdd 1254 1252
+            1256:    174(ptr) AccessChain 1177(texel) 173
+                              Store 1256 1255
+            1257:         180 Load 182(s2DShadow)
+            1258:    7(fvec4) Load 197(c4)
+            1259:   52(fvec2) Load 874(dPdxy2)
+            1260:   52(fvec2) Load 874(dPdxy2)
+            1261:    6(float) CompositeExtract 1258 2
+            1262:    6(float) CompositeExtract 1258 3
+            1263:    7(fvec4) CompositeInsert 1262 1258 2
+            1264:    6(float) ImageSampleProjDrefExplicitLod 1257 1263 1261 Grad ConstOffset 1259 1260 452
+            1265:    174(ptr) AccessChain 1177(texel) 173
+            1266:    6(float) Load 1265
+            1267:    6(float) FAdd 1266 1264
+            1268:    174(ptr) AccessChain 1177(texel) 173
+                              Store 1268 1267
+            1269:    7(fvec4) Load 1177(texel)
+                              ReturnValue 1269
+                              FunctionEnd
+35(testTextureGather():    7(fvec4) Function None 8
+              36:             Label
+     1272(texel):     63(ptr) Variable Function
+                              Store 1272(texel) 120
+            1273:         133 Load 135(s2D)
+            1274:   52(fvec2) Load 138(c2)
+            1276:    7(fvec4) ImageGather 1273 1274 1275
+            1277:    7(fvec4) Load 1272(texel)
+            1278:    7(fvec4) FAdd 1277 1276
+                              Store 1272(texel) 1278
+            1279:         215 Load 217(s2DArray)
+            1280:  148(fvec3) Load 150(c3)
+            1281:    7(fvec4) ImageGather 1279 1280 1275
+            1282:    7(fvec4) Load 1272(texel)
+            1283:    7(fvec4) FAdd 1282 1281
+                              Store 1272(texel) 1283
+            1284:         156 Load 158(sCube)
+            1285:  148(fvec3) Load 150(c3)
+            1286:    7(fvec4) ImageGather 1284 1285 1275
+            1287:    7(fvec4) Load 1272(texel)
+            1288:    7(fvec4) FAdd 1287 1286
+                              Store 1272(texel) 1288
+            1289:         224 Load 226(sCubeArray)
+            1290:    7(fvec4) Load 197(c4)
+            1291:    7(fvec4) ImageGather 1289 1290 1275
+            1292:    7(fvec4) Load 1272(texel)
+            1293:    7(fvec4) FAdd 1292 1291
+                              Store 1272(texel) 1293
+            1294:         257 Load 259(s2DRect)
+            1295:   52(fvec2) Load 138(c2)
+            1296:    7(fvec4) ImageGather 1294 1295 1275
+            1297:    7(fvec4) Load 1272(texel)
+            1298:    7(fvec4) FAdd 1297 1296
+                              Store 1272(texel) 1298
+            1299:         180 Load 182(s2DShadow)
+            1300:   52(fvec2) Load 138(c2)
+            1301:    6(float) Load 283(compare)
+            1302:    7(fvec4) ImageDrefGather 1299 1300 1301
+            1303:    7(fvec4) Load 1272(texel)
+            1304:    7(fvec4) FAdd 1303 1302
+                              Store 1272(texel) 1304
+            1305:         245 Load 247(s2DArrayShadow)
+            1306:  148(fvec3) Load 150(c3)
+            1307:    6(float) Load 283(compare)
+            1308:    7(fvec4) ImageDrefGather 1305 1306 1307
+            1309:    7(fvec4) Load 1272(texel)
+            1310:    7(fvec4) FAdd 1309 1308
+                              Store 1272(texel) 1310
+            1311:         192 Load 194(sCubeShadow)
+            1312:  148(fvec3) Load 150(c3)
+            1313:    6(float) Load 283(compare)
+            1314:    7(fvec4) ImageDrefGather 1311 1312 1313
+            1315:    7(fvec4) Load 1272(texel)
+            1316:    7(fvec4) FAdd 1315 1314
+                              Store 1272(texel) 1316
+            1317:         278 Load 280(sCubeArrayShadow)
+            1318:    7(fvec4) Load 197(c4)
+            1319:    6(float) Load 283(compare)
+            1320:    7(fvec4) ImageDrefGather 1317 1318 1319
+            1321:    7(fvec4) Load 1272(texel)
+            1322:    7(fvec4) FAdd 1321 1320
+                              Store 1272(texel) 1322
+            1323:         266 Load 268(s2DRectShadow)
+            1324:   52(fvec2) Load 138(c2)
+            1325:    6(float) Load 283(compare)
+            1326:    7(fvec4) ImageDrefGather 1323 1324 1325
+            1327:    7(fvec4) Load 1272(texel)
+            1328:    7(fvec4) FAdd 1327 1326
+                              Store 1272(texel) 1328
+            1329:    7(fvec4) Load 1272(texel)
+                              ReturnValue 1329
+                              FunctionEnd
+37(testTextureGatherOffset():    7(fvec4) Function None 8
+              38:             Label
+     1332(texel):     63(ptr) Variable Function
+                              Store 1332(texel) 120
+            1333:         133 Load 135(s2D)
+            1334:   52(fvec2) Load 138(c2)
+            1335:    7(fvec4) ImageGather 1333 1334 1275 ConstOffset 452
+            1336:    7(fvec4) Load 1332(texel)
+            1337:    7(fvec4) FAdd 1336 1335
+                              Store 1332(texel) 1337
+            1338:         215 Load 217(s2DArray)
+            1339:  148(fvec3) Load 150(c3)
+            1340:    7(fvec4) ImageGather 1338 1339 1275 ConstOffset 452
+            1341:    7(fvec4) Load 1332(texel)
+            1342:    7(fvec4) FAdd 1341 1340
+                              Store 1332(texel) 1342
+            1343:         257 Load 259(s2DRect)
+            1344:   52(fvec2) Load 138(c2)
+            1345:    7(fvec4) ImageGather 1343 1344 1275 ConstOffset 452
+            1346:    7(fvec4) Load 1332(texel)
+            1347:    7(fvec4) FAdd 1346 1345
+                              Store 1332(texel) 1347
+            1348:         180 Load 182(s2DShadow)
+            1349:   52(fvec2) Load 138(c2)
+            1350:    6(float) Load 283(compare)
+            1351:    7(fvec4) ImageDrefGather 1348 1349 1350 ConstOffset 452
+            1352:    7(fvec4) Load 1332(texel)
+            1353:    7(fvec4) FAdd 1352 1351
+                              Store 1332(texel) 1353
+            1354:         245 Load 247(s2DArrayShadow)
+            1355:  148(fvec3) Load 150(c3)
+            1356:    6(float) Load 283(compare)
+            1357:    7(fvec4) ImageDrefGather 1354 1355 1356 ConstOffset 452
+            1358:    7(fvec4) Load 1332(texel)
+            1359:    7(fvec4) FAdd 1358 1357
+                              Store 1332(texel) 1359
+            1360:         266 Load 268(s2DRectShadow)
+            1361:   52(fvec2) Load 138(c2)
+            1362:    6(float) Load 283(compare)
+            1363:    7(fvec4) ImageDrefGather 1360 1361 1362 ConstOffset 452
+            1364:    7(fvec4) Load 1332(texel)
+            1365:    7(fvec4) FAdd 1364 1363
+                              Store 1332(texel) 1365
+            1366:    7(fvec4) Load 1332(texel)
+                              ReturnValue 1366
+                              FunctionEnd
+39(testTextureGatherOffsets():    7(fvec4) Function None 8
+              40:             Label
+     1369(texel):     63(ptr) Variable Function
+                              Store 1369(texel) 120
+            1370:         133 Load 135(s2D)
+            1371:   52(fvec2) Load 138(c2)
+            1375:    7(fvec4) ImageGather 1370 1371 1275 ConstOffsets 1374
+            1376:    7(fvec4) Load 1369(texel)
+            1377:    7(fvec4) FAdd 1376 1375
+                              Store 1369(texel) 1377
+            1378:         215 Load 217(s2DArray)
+            1379:  148(fvec3) Load 150(c3)
+            1380:    7(fvec4) ImageGather 1378 1379 1275 ConstOffsets 1374
+            1381:    7(fvec4) Load 1369(texel)
+            1382:    7(fvec4) FAdd 1381 1380
+                              Store 1369(texel) 1382
+            1383:         257 Load 259(s2DRect)
+            1384:   52(fvec2) Load 138(c2)
+            1385:    7(fvec4) ImageGather 1383 1384 1275 ConstOffsets 1374
+            1386:    7(fvec4) Load 1369(texel)
+            1387:    7(fvec4) FAdd 1386 1385
+                              Store 1369(texel) 1387
+            1388:         180 Load 182(s2DShadow)
+            1389:   52(fvec2) Load 138(c2)
+            1390:    6(float) Load 283(compare)
+            1391:    7(fvec4) ImageDrefGather 1388 1389 1390 ConstOffsets 1374
+            1392:    7(fvec4) Load 1369(texel)
+            1393:    7(fvec4) FAdd 1392 1391
+                              Store 1369(texel) 1393
+            1394:         245 Load 247(s2DArrayShadow)
+            1395:  148(fvec3) Load 150(c3)
+            1396:    6(float) Load 283(compare)
+            1397:    7(fvec4) ImageDrefGather 1394 1395 1396 ConstOffsets 1374
+            1398:    7(fvec4) Load 1369(texel)
+            1399:    7(fvec4) FAdd 1398 1397
+                              Store 1369(texel) 1399
+            1400:         266 Load 268(s2DRectShadow)
+            1401:   52(fvec2) Load 138(c2)
+            1402:    6(float) Load 283(compare)
+            1403:    7(fvec4) ImageDrefGather 1400 1401 1402 ConstOffsets 1374
+            1404:    7(fvec4) Load 1369(texel)
+            1405:    7(fvec4) FAdd 1404 1403
+                              Store 1369(texel) 1405
+            1406:    7(fvec4) Load 1369(texel)
+                              ReturnValue 1406
+                              FunctionEnd
+41(testTextureGatherLod():    7(fvec4) Function None 8
+              42:             Label
+     1409(texel):     63(ptr) Variable Function
+                              Store 1409(texel) 120
+            1410:         133 Load 135(s2D)
+            1411:   52(fvec2) Load 138(c2)
+            1412:    6(float) Load 371(lod)
+            1413:    7(fvec4) ImageGather 1410 1411 1275 Lod 1412
+            1414:    7(fvec4) Load 1409(texel)
+            1415:    7(fvec4) FAdd 1414 1413
+                              Store 1409(texel) 1415
+            1416:         215 Load 217(s2DArray)
+            1417:  148(fvec3) Load 150(c3)
+            1418:    6(float) Load 371(lod)
+            1419:    7(fvec4) ImageGather 1416 1417 1275 Lod 1418
+            1420:    7(fvec4) Load 1409(texel)
+            1421:    7(fvec4) FAdd 1420 1419
+                              Store 1409(texel) 1421
+            1422:         156 Load 158(sCube)
+            1423:  148(fvec3) Load 150(c3)
+            1424:    6(float) Load 371(lod)
+            1425:    7(fvec4) ImageGather 1422 1423 1275 Lod 1424
+            1426:    7(fvec4) Load 1409(texel)
+            1427:    7(fvec4) FAdd 1426 1425
+                              Store 1409(texel) 1427
+            1428:         224 Load 226(sCubeArray)
+            1429:    7(fvec4) Load 197(c4)
+            1430:    6(float) Load 371(lod)
+            1431:    7(fvec4) ImageGather 1428 1429 1275 Lod 1430
+            1432:    7(fvec4) Load 1409(texel)
+            1433:    7(fvec4) FAdd 1432 1431
+                              Store 1409(texel) 1433
+            1434:    7(fvec4) Load 1409(texel)
+                              ReturnValue 1434
+                              FunctionEnd
+43(testTextureGatherLodOffset():    7(fvec4) Function None 8
+              44:             Label
+     1437(texel):     63(ptr) Variable Function
+                              Store 1437(texel) 120
+            1438:         133 Load 135(s2D)
+            1439:   52(fvec2) Load 138(c2)
+            1440:    6(float) Load 371(lod)
+            1441:    7(fvec4) ImageGather 1438 1439 1275 Lod ConstOffset 1440 452
+            1442:    7(fvec4) Load 1437(texel)
+            1443:    7(fvec4) FAdd 1442 1441
+                              Store 1437(texel) 1443
+            1444:         215 Load 217(s2DArray)
+            1445:  148(fvec3) Load 150(c3)
+            1446:    6(float) Load 371(lod)
+            1447:    7(fvec4) ImageGather 1444 1445 1275 Lod ConstOffset 1446 452
+            1448:    7(fvec4) Load 1437(texel)
+            1449:    7(fvec4) FAdd 1448 1447
+                              Store 1437(texel) 1449
+            1450:    7(fvec4) Load 1437(texel)
+                              ReturnValue 1450
+                              FunctionEnd
+45(testTextureGatherLodOffsets():    7(fvec4) Function None 8
+              46:             Label
+     1453(texel):     63(ptr) Variable Function
+                              Store 1453(texel) 120
+            1454:         133 Load 135(s2D)
+            1455:   52(fvec2) Load 138(c2)
+            1456:    6(float) Load 371(lod)
+            1457:    7(fvec4) ImageGather 1454 1455 1275 Lod ConstOffsets 1456 1374
+            1458:    7(fvec4) Load 1453(texel)
+            1459:    7(fvec4) FAdd 1458 1457
+                              Store 1453(texel) 1459
+            1460:         215 Load 217(s2DArray)
+            1461:  148(fvec3) Load 150(c3)
+            1462:    6(float) Load 371(lod)
+            1463:    7(fvec4) ImageGather 1460 1461 1275 Lod ConstOffsets 1462 1374
+            1464:    7(fvec4) Load 1453(texel)
+            1465:    7(fvec4) FAdd 1464 1463
+                              Store 1453(texel) 1465
+            1466:    7(fvec4) Load 1453(texel)
+                              ReturnValue 1466
+                              FunctionEnd
+50(testTextureSize():   48(ivec4) Function None 49
+              51:             Label
+      1470(size):   1469(ptr) Variable Function
+                              Store 1470(size) 1471
+            1472:         122 Load 124(s1D)
+            1473:    6(float) Load 371(lod)
+            1474:     47(int) ConvertFToS 1473
+            1475:         121 Image 1472
+            1476:     47(int) ImageQuerySizeLod 1475 1474
+            1478:   1477(ptr) AccessChain 1470(size) 173
+            1479:     47(int) Load 1478
+            1480:     47(int) IAdd 1479 1476
+            1481:   1477(ptr) AccessChain 1470(size) 173
+                              Store 1481 1480
+            1482:         133 Load 135(s2D)
+            1483:    6(float) Load 371(lod)
+            1484:     47(int) ConvertFToS 1483
+            1485:         132 Image 1482
+            1486:  451(ivec2) ImageQuerySizeLod 1485 1484
+            1487:   48(ivec4) Load 1470(size)
+            1488:  451(ivec2) VectorShuffle 1487 1487 0 1
+            1489:  451(ivec2) IAdd 1488 1486
+            1490:   1477(ptr) AccessChain 1470(size) 173
+            1491:     47(int) CompositeExtract 1489 0
+                              Store 1490 1491
+            1493:   1477(ptr) AccessChain 1470(size) 1492
+            1494:     47(int) CompositeExtract 1489 1
+                              Store 1493 1494
+            1495:         144 Load 146(s3D)
+            1496:    6(float) Load 371(lod)
+            1497:     47(int) ConvertFToS 1496
+            1498:         143 Image 1495
+            1499:  458(ivec3) ImageQuerySizeLod 1498 1497
+            1500:   48(ivec4) Load 1470(size)
+            1501:  458(ivec3) VectorShuffle 1500 1500 0 1 2
+            1502:  458(ivec3) IAdd 1501 1499
+            1503:   1477(ptr) AccessChain 1470(size) 173
+            1504:     47(int) CompositeExtract 1502 0
+                              Store 1503 1504
+            1505:   1477(ptr) AccessChain 1470(size) 1492
+            1506:     47(int) CompositeExtract 1502 1
+                              Store 1505 1506
+            1508:   1477(ptr) AccessChain 1470(size) 1507
+            1509:     47(int) CompositeExtract 1502 2
+                              Store 1508 1509
+            1510:         156 Load 158(sCube)
+            1511:    6(float) Load 371(lod)
+            1512:     47(int) ConvertFToS 1511
+            1513:         155 Image 1510
+            1514:  451(ivec2) ImageQuerySizeLod 1513 1512
+            1515:   48(ivec4) Load 1470(size)
+            1516:  451(ivec2) VectorShuffle 1515 1515 0 1
+            1517:  451(ivec2) IAdd 1516 1514
+            1518:   1477(ptr) AccessChain 1470(size) 173
+            1519:     47(int) CompositeExtract 1517 0
+                              Store 1518 1519
+            1520:   1477(ptr) AccessChain 1470(size) 1492
+            1521:     47(int) CompositeExtract 1517 1
+                              Store 1520 1521
+            1522:         165 Load 167(s1DShadow)
+            1523:    6(float) Load 371(lod)
+            1524:     47(int) ConvertFToS 1523
+            1525:         164 Image 1522
+            1526:     47(int) ImageQuerySizeLod 1525 1524
+            1527:   1477(ptr) AccessChain 1470(size) 173
+            1528:     47(int) Load 1527
+            1529:     47(int) IAdd 1528 1526
+            1530:   1477(ptr) AccessChain 1470(size) 173
+                              Store 1530 1529
+            1531:         180 Load 182(s2DShadow)
+            1532:    6(float) Load 371(lod)
+            1533:     47(int) ConvertFToS 1532
+            1534:         179 Image 1531
+            1535:  451(ivec2) ImageQuerySizeLod 1534 1533
+            1536:   48(ivec4) Load 1470(size)
+            1537:  451(ivec2) VectorShuffle 1536 1536 0 1
+            1538:  451(ivec2) IAdd 1537 1535
+            1539:   1477(ptr) AccessChain 1470(size) 173
+            1540:     47(int) CompositeExtract 1538 0
+                              Store 1539 1540
+            1541:   1477(ptr) AccessChain 1470(size) 1492
+            1542:     47(int) CompositeExtract 1538 1
+                              Store 1541 1542
+            1543:         192 Load 194(sCubeShadow)
+            1544:    6(float) Load 371(lod)
+            1545:     47(int) ConvertFToS 1544
+            1546:         191 Image 1543
+            1547:  451(ivec2) ImageQuerySizeLod 1546 1545
+            1548:   48(ivec4) Load 1470(size)
+            1549:  451(ivec2) VectorShuffle 1548 1548 0 1
+            1550:  451(ivec2) IAdd 1549 1547
+            1551:   1477(ptr) AccessChain 1470(size) 173
+            1552:     47(int) CompositeExtract 1550 0
+                              Store 1551 1552
+            1553:   1477(ptr) AccessChain 1470(size) 1492
+            1554:     47(int) CompositeExtract 1550 1
+                              Store 1553 1554
+            1555:         224 Load 226(sCubeArray)
+            1556:    6(float) Load 371(lod)
+            1557:     47(int) ConvertFToS 1556
+            1558:         223 Image 1555
+            1559:  458(ivec3) ImageQuerySizeLod 1558 1557
+            1560:   48(ivec4) Load 1470(size)
+            1561:  458(ivec3) VectorShuffle 1560 1560 0 1 2
+            1562:  458(ivec3) IAdd 1561 1559
+            1563:   1477(ptr) AccessChain 1470(size) 173
+            1564:     47(int) CompositeExtract 1562 0
+                              Store 1563 1564
+            1565:   1477(ptr) AccessChain 1470(size) 1492
+            1566:     47(int) CompositeExtract 1562 1
+                              Store 1565 1566
+            1567:   1477(ptr) AccessChain 1470(size) 1507
+            1568:     47(int) CompositeExtract 1562 2
+                              Store 1567 1568
+            1569:         278 Load 280(sCubeArrayShadow)
+            1570:    6(float) Load 371(lod)
+            1571:     47(int) ConvertFToS 1570
+            1572:         277 Image 1569
+            1573:  458(ivec3) ImageQuerySizeLod 1572 1571
+            1574:   48(ivec4) Load 1470(size)
+            1575:  458(ivec3) VectorShuffle 1574 1574 0 1 2
+            1576:  458(ivec3) IAdd 1575 1573
+            1577:   1477(ptr) AccessChain 1470(size) 173
+            1578:     47(int) CompositeExtract 1576 0
+                              Store 1577 1578
+            1579:   1477(ptr) AccessChain 1470(size) 1492
+            1580:     47(int) CompositeExtract 1576 1
+                              Store 1579 1580
+            1581:   1477(ptr) AccessChain 1470(size) 1507
+            1582:     47(int) CompositeExtract 1576 2
+                              Store 1581 1582
+            1583:         257 Load 259(s2DRect)
+            1584:         256 Image 1583
+            1585:  451(ivec2) ImageQuerySize 1584
+            1586:   48(ivec4) Load 1470(size)
+            1587:  451(ivec2) VectorShuffle 1586 1586 0 1
+            1588:  451(ivec2) IAdd 1587 1585
+            1589:   1477(ptr) AccessChain 1470(size) 173
+            1590:     47(int) CompositeExtract 1588 0
+                              Store 1589 1590
+            1591:   1477(ptr) AccessChain 1470(size) 1492
+            1592:     47(int) CompositeExtract 1588 1
+                              Store 1591 1592
+            1593:         266 Load 268(s2DRectShadow)
+            1594:         265 Image 1593
+            1595:  451(ivec2) ImageQuerySize 1594
+            1596:   48(ivec4) Load 1470(size)
+            1597:  451(ivec2) VectorShuffle 1596 1596 0 1
+            1598:  451(ivec2) IAdd 1597 1595
+            1599:   1477(ptr) AccessChain 1470(size) 173
+            1600:     47(int) CompositeExtract 1598 0
+                              Store 1599 1600
+            1601:   1477(ptr) AccessChain 1470(size) 1492
+            1602:     47(int) CompositeExtract 1598 1
+                              Store 1601 1602
+            1603:         206 Load 208(s1DArray)
+            1604:    6(float) Load 371(lod)
+            1605:     47(int) ConvertFToS 1604
+            1606:         205 Image 1603
+            1607:  451(ivec2) ImageQuerySizeLod 1606 1605
+            1608:   48(ivec4) Load 1470(size)
+            1609:  451(ivec2) VectorShuffle 1608 1608 0 1
+            1610:  451(ivec2) IAdd 1609 1607
+            1611:   1477(ptr) AccessChain 1470(size) 173
+            1612:     47(int) CompositeExtract 1610 0
+                              Store 1611 1612
+            1613:   1477(ptr) AccessChain 1470(size) 1492
+            1614:     47(int) CompositeExtract 1610 1
+                              Store 1613 1614
+            1615:         215 Load 217(s2DArray)
+            1616:    6(float) Load 371(lod)
+            1617:     47(int) ConvertFToS 1616
+            1618:         214 Image 1615
+            1619:  458(ivec3) ImageQuerySizeLod 1618 1617
+            1620:   48(ivec4) Load 1470(size)
+            1621:  458(ivec3) VectorShuffle 1620 1620 0 1 2
+            1622:  458(ivec3) IAdd 1621 1619
+            1623:   1477(ptr) AccessChain 1470(size) 173
+            1624:     47(int) CompositeExtract 1622 0
+                              Store 1623 1624
+            1625:   1477(ptr) AccessChain 1470(size) 1492
+            1626:     47(int) CompositeExtract 1622 1
+                              Store 1625 1626
+            1627:   1477(ptr) AccessChain 1470(size) 1507
+            1628:     47(int) CompositeExtract 1622 2
+                              Store 1627 1628
+            1629:         233 Load 235(s1DArrayShadow)
+            1630:    6(float) Load 371(lod)
+            1631:     47(int) ConvertFToS 1630
+            1632:         232 Image 1629
+            1633:  451(ivec2) ImageQuerySizeLod 1632 1631
+            1634:   48(ivec4) Load 1470(size)
+            1635:  451(ivec2) VectorShuffle 1634 1634 0 1
+            1636:  451(ivec2) IAdd 1635 1633
+            1637:   1477(ptr) AccessChain 1470(size) 173
+            1638:     47(int) CompositeExtract 1636 0
+                              Store 1637 1638
+            1639:   1477(ptr) AccessChain 1470(size) 1492
+            1640:     47(int) CompositeExtract 1636 1
+                              Store 1639 1640
+            1641:         245 Load 247(s2DArrayShadow)
+            1642:    6(float) Load 371(lod)
+            1643:     47(int) ConvertFToS 1642
+            1644:         244 Image 1641
+            1645:  458(ivec3) ImageQuerySizeLod 1644 1643
+            1646:   48(ivec4) Load 1470(size)
+            1647:  458(ivec3) VectorShuffle 1646 1646 0 1 2
+            1648:  458(ivec3) IAdd 1647 1645
+            1649:   1477(ptr) AccessChain 1470(size) 173
+            1650:     47(int) CompositeExtract 1648 0
+                              Store 1649 1650
+            1651:   1477(ptr) AccessChain 1470(size) 1492
+            1652:     47(int) CompositeExtract 1648 1
+                              Store 1651 1652
+            1653:   1477(ptr) AccessChain 1470(size) 1507
+            1654:     47(int) CompositeExtract 1648 2
+                              Store 1653 1654
+            1655:         771 Load 773(sBuffer)
+            1656:         770 Image 1655
+            1657:     47(int) ImageQuerySize 1656
+            1658:   1477(ptr) AccessChain 1470(size) 173
+            1659:     47(int) Load 1658
+            1660:     47(int) IAdd 1659 1657
+            1661:   1477(ptr) AccessChain 1470(size) 173
+                              Store 1661 1660
+            1662:         782 Load 784(s2DMS)
+            1663:         781 Image 1662
+            1664:  451(ivec2) ImageQuerySize 1663
+            1665:   48(ivec4) Load 1470(size)
+            1666:  451(ivec2) VectorShuffle 1665 1665 0 1
+            1667:  451(ivec2) IAdd 1666 1664
+            1668:   1477(ptr) AccessChain 1470(size) 173
+            1669:     47(int) CompositeExtract 1667 0
+                              Store 1668 1669
+            1670:   1477(ptr) AccessChain 1470(size) 1492
+            1671:     47(int) CompositeExtract 1667 1
+                              Store 1670 1671
+            1672:         793 Load 795(s2DMSArray)
+            1673:         792 Image 1672
+            1674:  458(ivec3) ImageQuerySize 1673
+            1675:   48(ivec4) Load 1470(size)
+            1676:  458(ivec3) VectorShuffle 1675 1675 0 1 2
+            1677:  458(ivec3) IAdd 1676 1674
+            1678:   1477(ptr) AccessChain 1470(size) 173
+            1679:     47(int) CompositeExtract 1677 0
+                              Store 1678 1679
+            1680:   1477(ptr) AccessChain 1470(size) 1492
+            1681:     47(int) CompositeExtract 1677 1
+                              Store 1680 1681
+            1682:   1477(ptr) AccessChain 1470(size) 1507
+            1683:     47(int) CompositeExtract 1677 2
+                              Store 1682 1683
+            1684:   48(ivec4) Load 1470(size)
+                              ReturnValue 1684
+                              FunctionEnd
+54(testTextureQueryLod():   52(fvec2) Function None 53
+              55:             Label
+       1688(lod):   1687(ptr) Variable Function
+                              Store 1688(lod) 1689
+            1690:         122 Load 124(s1D)
+            1691:    6(float) Load 127(c1)
+            1692:   52(fvec2) ImageQueryLod 1690 1691
+            1693:   52(fvec2) Load 1688(lod)
+            1694:   52(fvec2) FAdd 1693 1692
+                              Store 1688(lod) 1694
+            1695:         133 Load 135(s2D)
+            1696:   52(fvec2) Load 138(c2)
+            1697:   52(fvec2) ImageQueryLod 1695 1696
+            1698:   52(fvec2) Load 1688(lod)
+            1699:   52(fvec2) FAdd 1698 1697
+                              Store 1688(lod) 1699
+            1700:         144 Load 146(s3D)
+            1701:  148(fvec3) Load 150(c3)
+            1702:   52(fvec2) ImageQueryLod 1700 1701
+            1703:   52(fvec2) Load 1688(lod)
+            1704:   52(fvec2) FAdd 1703 1702
+                              Store 1688(lod) 1704
+            1705:         156 Load 158(sCube)
+            1706:  148(fvec3) Load 150(c3)
+            1707:   52(fvec2) ImageQueryLod 1705 1706
+            1708:   52(fvec2) Load 1688(lod)
+            1709:   52(fvec2) FAdd 1708 1707
+                              Store 1688(lod) 1709
+            1710:         206 Load 208(s1DArray)
+            1711:    6(float) Load 127(c1)
+            1712:   52(fvec2) ImageQueryLod 1710 1711
+            1713:   52(fvec2) Load 1688(lod)
+            1714:   52(fvec2) FAdd 1713 1712
+                              Store 1688(lod) 1714
+            1715:         215 Load 217(s2DArray)
+            1716:   52(fvec2) Load 138(c2)
+            1717:   52(fvec2) ImageQueryLod 1715 1716
+            1718:   52(fvec2) Load 1688(lod)
+            1719:   52(fvec2) FAdd 1718 1717
+                              Store 1688(lod) 1719
+            1720:         224 Load 226(sCubeArray)
+            1721:  148(fvec3) Load 150(c3)
+            1722:   52(fvec2) ImageQueryLod 1720 1721
+            1723:   52(fvec2) Load 1688(lod)
+            1724:   52(fvec2) FAdd 1723 1722
+                              Store 1688(lod) 1724
+            1725:         165 Load 167(s1DShadow)
+            1726:    6(float) Load 127(c1)
+            1727:   52(fvec2) ImageQueryLod 1725 1726
+            1728:   52(fvec2) Load 1688(lod)
+            1729:   52(fvec2) FAdd 1728 1727
+                              Store 1688(lod) 1729
+            1730:         180 Load 182(s2DShadow)
+            1731:   52(fvec2) Load 138(c2)
+            1732:   52(fvec2) ImageQueryLod 1730 1731
+            1733:   52(fvec2) Load 1688(lod)
+            1734:   52(fvec2) FAdd 1733 1732
+                              Store 1688(lod) 1734
+            1735:         278 Load 280(sCubeArrayShadow)
+            1736:  148(fvec3) Load 150(c3)
+            1737:   52(fvec2) ImageQueryLod 1735 1736
+            1738:   52(fvec2) Load 1688(lod)
+            1739:   52(fvec2) FAdd 1738 1737
+                              Store 1688(lod) 1739
+            1740:         233 Load 235(s1DArrayShadow)
+            1741:    6(float) Load 127(c1)
+            1742:   52(fvec2) ImageQueryLod 1740 1741
+            1743:   52(fvec2) Load 1688(lod)
+            1744:   52(fvec2) FAdd 1743 1742
+                              Store 1688(lod) 1744
+            1745:         245 Load 247(s2DArrayShadow)
+            1746:   52(fvec2) Load 138(c2)
+            1747:   52(fvec2) ImageQueryLod 1745 1746
+            1748:   52(fvec2) Load 1688(lod)
+            1749:   52(fvec2) FAdd 1748 1747
+                              Store 1688(lod) 1749
+            1750:         278 Load 280(sCubeArrayShadow)
+            1751:  148(fvec3) Load 150(c3)
+            1752:   52(fvec2) ImageQueryLod 1750 1751
+            1753:   52(fvec2) Load 1688(lod)
+            1754:   52(fvec2) FAdd 1753 1752
+                              Store 1688(lod) 1754
+            1755:   52(fvec2) Load 1688(lod)
+                              ReturnValue 1755
+                              FunctionEnd
+57(testTextureQueryLevels():     47(int) Function None 56
+              58:             Label
+    1758(levels):   1477(ptr) Variable Function
+                              Store 1758(levels) 1275
+            1759:         122 Load 124(s1D)
+            1760:         121 Image 1759
+            1761:     47(int) ImageQueryLevels 1760
+            1762:     47(int) Load 1758(levels)
+            1763:     47(int) IAdd 1762 1761
+                              Store 1758(levels) 1763
+            1764:         133 Load 135(s2D)
+            1765:         132 Image 1764
+            1766:     47(int) ImageQueryLevels 1765
+            1767:     47(int) Load 1758(levels)
+            1768:     47(int) IAdd 1767 1766
+                              Store 1758(levels) 1768
+            1769:         144 Load 146(s3D)
+            1770:         143 Image 1769
+            1771:     47(int) ImageQueryLevels 1770
+            1772:     47(int) Load 1758(levels)
+            1773:     47(int) IAdd 1772 1771
+                              Store 1758(levels) 1773
+            1774:         156 Load 158(sCube)
+            1775:         155 Image 1774
+            1776:     47(int) ImageQueryLevels 1775
+            1777:     47(int) Load 1758(levels)
+            1778:     47(int) IAdd 1777 1776
+                              Store 1758(levels) 1778
+            1779:         165 Load 167(s1DShadow)
+            1780:         164 Image 1779
+            1781:     47(int) ImageQueryLevels 1780
+            1782:     47(int) Load 1758(levels)
+            1783:     47(int) IAdd 1782 1781
+                              Store 1758(levels) 1783
+            1784:         180 Load 182(s2DShadow)
+            1785:         179 Image 1784
+            1786:     47(int) ImageQueryLevels 1785
+            1787:     47(int) Load 1758(levels)
+            1788:     47(int) IAdd 1787 1786
+                              Store 1758(levels) 1788
+            1789:         192 Load 194(sCubeShadow)
+            1790:         191 Image 1789
+            1791:     47(int) ImageQueryLevels 1790
+            1792:     47(int) Load 1758(levels)
+            1793:     47(int) IAdd 1792 1791
+                              Store 1758(levels) 1793
+            1794:         224 Load 226(sCubeArray)
+            1795:         223 Image 1794
+            1796:     47(int) ImageQueryLevels 1795
+            1797:     47(int) Load 1758(levels)
+            1798:     47(int) IAdd 1797 1796
+                              Store 1758(levels) 1798
+            1799:         278 Load 280(sCubeArrayShadow)
+            1800:         277 Image 1799
+            1801:     47(int) ImageQueryLevels 1800
+            1802:     47(int) Load 1758(levels)
+            1803:     47(int) IAdd 1802 1801
+                              Store 1758(levels) 1803
+            1804:         206 Load 208(s1DArray)
+            1805:         205 Image 1804
+            1806:     47(int) ImageQueryLevels 1805
+            1807:     47(int) Load 1758(levels)
+            1808:     47(int) IAdd 1807 1806
+                              Store 1758(levels) 1808
+            1809:         215 Load 217(s2DArray)
+            1810:         214 Image 1809
+            1811:     47(int) ImageQueryLevels 1810
+            1812:     47(int) Load 1758(levels)
+            1813:     47(int) IAdd 1812 1811
+                              Store 1758(levels) 1813
+            1814:         233 Load 235(s1DArrayShadow)
+            1815:         232 Image 1814
+            1816:     47(int) ImageQueryLevels 1815
+            1817:     47(int) Load 1758(levels)
+            1818:     47(int) IAdd 1817 1816
+                              Store 1758(levels) 1818
+            1819:         245 Load 247(s2DArrayShadow)
+            1820:         244 Image 1819
+            1821:     47(int) ImageQueryLevels 1820
+            1822:     47(int) Load 1758(levels)
+            1823:     47(int) IAdd 1822 1821
+                              Store 1758(levels) 1823
+            1824:     47(int) Load 1758(levels)
+                              ReturnValue 1824
+                              FunctionEnd
+59(testTextureSamples():     47(int) Function None 56
+              60:             Label
+   1827(samples):   1477(ptr) Variable Function
+                              Store 1827(samples) 1275
+            1828:         782 Load 784(s2DMS)
+            1829:         781 Image 1828
+            1830:     47(int) ImageQuerySamples 1829
+            1831:     47(int) Load 1827(samples)
+            1832:     47(int) IAdd 1831 1830
+                              Store 1827(samples) 1832
+            1833:         793 Load 795(s2DMSArray)
+            1834:         792 Image 1833
+            1835:     47(int) ImageQuerySamples 1834
+            1836:     47(int) Load 1827(samples)
+            1837:     47(int) IAdd 1836 1835
+                              Store 1827(samples) 1837
+            1838:     47(int) Load 1827(samples)
+                              ReturnValue 1838
+                              FunctionEnd
+61(testImageLoad():    7(fvec4) Function None 8
+              62:             Label
+     1841(texel):     63(ptr) Variable Function
+                              Store 1841(texel) 120
+            1845:        1842 Load 1844(i1D)
+            1846:    6(float) Load 127(c1)
+            1847:     47(int) ConvertFToS 1846
+            1848:    7(fvec4) ImageRead 1845 1847
+            1849:    7(fvec4) Load 1841(texel)
+            1850:    7(fvec4) FAdd 1849 1848
+                              Store 1841(texel) 1850
+            1854:        1851 Load 1853(i2D)
+            1855:   52(fvec2) Load 138(c2)
+            1856:  451(ivec2) ConvertFToS 1855
+            1857:    7(fvec4) ImageRead 1854 1856
+            1858:    7(fvec4) Load 1841(texel)
+            1859:    7(fvec4) FAdd 1858 1857
+                              Store 1841(texel) 1859
+            1863:        1860 Load 1862(i3D)
+            1864:  148(fvec3) Load 150(c3)
+            1865:  458(ivec3) ConvertFToS 1864
+            1866:    7(fvec4) ImageRead 1863 1865
+            1867:    7(fvec4) Load 1841(texel)
+            1868:    7(fvec4) FAdd 1867 1866
+                              Store 1841(texel) 1868
+            1872:        1869 Load 1871(i2DRect)
+            1873:   52(fvec2) Load 138(c2)
+            1874:  451(ivec2) ConvertFToS 1873
+            1875:    7(fvec4) ImageRead 1872 1874
+            1876:    7(fvec4) Load 1841(texel)
+            1877:    7(fvec4) FAdd 1876 1875
+                              Store 1841(texel) 1877
+            1881:        1878 Load 1880(iCube)
+            1882:  148(fvec3) Load 150(c3)
+            1883:  458(ivec3) ConvertFToS 1882
+            1884:    7(fvec4) ImageRead 1881 1883
+            1885:    7(fvec4) Load 1841(texel)
+            1886:    7(fvec4) FAdd 1885 1884
+                              Store 1841(texel) 1886
+            1890:        1887 Load 1889(iBuffer)
+            1891:    6(float) Load 127(c1)
+            1892:     47(int) ConvertFToS 1891
+            1893:    7(fvec4) ImageRead 1890 1892
+            1894:    7(fvec4) Load 1841(texel)
+            1895:    7(fvec4) FAdd 1894 1893
+                              Store 1841(texel) 1895
+            1899:        1896 Load 1898(i1DArray)
+            1900:   52(fvec2) Load 138(c2)
+            1901:  451(ivec2) ConvertFToS 1900
+            1902:    7(fvec4) ImageRead 1899 1901
+            1903:    7(fvec4) Load 1841(texel)
+            1904:    7(fvec4) FAdd 1903 1902
+                              Store 1841(texel) 1904
+            1908:        1905 Load 1907(i2DArray)
+            1909:  148(fvec3) Load 150(c3)
+            1910:  458(ivec3) ConvertFToS 1909
+            1911:    7(fvec4) ImageRead 1908 1910
+            1912:    7(fvec4) Load 1841(texel)
+            1913:    7(fvec4) FAdd 1912 1911
+                              Store 1841(texel) 1913
+            1917:        1914 Load 1916(iCubeArray)
+            1918:  148(fvec3) Load 150(c3)
+            1919:  458(ivec3) ConvertFToS 1918
+            1920:    7(fvec4) ImageRead 1917 1919
+            1921:    7(fvec4) Load 1841(texel)
+            1922:    7(fvec4) FAdd 1921 1920
+                              Store 1841(texel) 1922
+            1926:        1923 Load 1925(i2DMS)
+            1927:   52(fvec2) Load 138(c2)
+            1928:  451(ivec2) ConvertFToS 1927
+            1929:    7(fvec4) ImageRead 1926 1928 Sample 445
+            1930:    7(fvec4) Load 1841(texel)
+            1931:    7(fvec4) FAdd 1930 1929
+                              Store 1841(texel) 1931
+            1935:        1932 Load 1934(i2DMSArray)
+            1936:  148(fvec3) Load 150(c3)
+            1937:  458(ivec3) ConvertFToS 1936
+            1938:    7(fvec4) ImageRead 1935 1937 Sample 445
+            1939:    7(fvec4) Load 1841(texel)
+            1940:    7(fvec4) FAdd 1939 1938
+                              Store 1841(texel) 1940
+            1941:    7(fvec4) Load 1841(texel)
+                              ReturnValue 1941
+                              FunctionEnd
+66(testImageStore(vf4;):           2 Function None 64
+        65(data):     63(ptr) FunctionParameter
+              67:             Label
+            1944:        1842 Load 1844(i1D)
+            1945:    6(float) Load 127(c1)
+            1946:     47(int) ConvertFToS 1945
+            1947:    7(fvec4) Load 65(data)
+                              ImageWrite 1944 1946 1947
+            1948:        1851 Load 1853(i2D)
+            1949:   52(fvec2) Load 138(c2)
+            1950:  451(ivec2) ConvertFToS 1949
+            1951:    7(fvec4) Load 65(data)
+                              ImageWrite 1948 1950 1951
+            1952:        1860 Load 1862(i3D)
+            1953:  148(fvec3) Load 150(c3)
+            1954:  458(ivec3) ConvertFToS 1953
+            1955:    7(fvec4) Load 65(data)
+                              ImageWrite 1952 1954 1955
+            1956:        1869 Load 1871(i2DRect)
+            1957:   52(fvec2) Load 138(c2)
+            1958:  451(ivec2) ConvertFToS 1957
+            1959:    7(fvec4) Load 65(data)
+                              ImageWrite 1956 1958 1959
+            1960:        1878 Load 1880(iCube)
+            1961:  148(fvec3) Load 150(c3)
+            1962:  458(ivec3) ConvertFToS 1961
+            1963:    7(fvec4) Load 65(data)
+                              ImageWrite 1960 1962 1963
+            1964:        1887 Load 1889(iBuffer)
+            1965:    6(float) Load 127(c1)
+            1966:     47(int) ConvertFToS 1965
+            1967:    7(fvec4) Load 65(data)
+                              ImageWrite 1964 1966 1967
+            1968:        1896 Load 1898(i1DArray)
+            1969:   52(fvec2) Load 138(c2)
+            1970:  451(ivec2) ConvertFToS 1969
+            1971:    7(fvec4) Load 65(data)
+                              ImageWrite 1968 1970 1971
+            1972:        1905 Load 1907(i2DArray)
+            1973:  148(fvec3) Load 150(c3)
+            1974:  458(ivec3) ConvertFToS 1973
+            1975:    7(fvec4) Load 65(data)
+                              ImageWrite 1972 1974 1975
+            1976:        1914 Load 1916(iCubeArray)
+            1977:  148(fvec3) Load 150(c3)
+            1978:  458(ivec3) ConvertFToS 1977
+            1979:    7(fvec4) Load 65(data)
+                              ImageWrite 1976 1978 1979
+            1980:        1923 Load 1925(i2DMS)
+            1981:   52(fvec2) Load 138(c2)
+            1982:  451(ivec2) ConvertFToS 1981
+            1983:    7(fvec4) Load 65(data)
+                              ImageWrite 1980 1982 1983 Sample 445
+            1984:        1932 Load 1934(i2DMSArray)
+            1985:  148(fvec3) Load 150(c3)
+            1986:  458(ivec3) ConvertFToS 1985
+            1987:    7(fvec4) Load 65(data)
+                              ImageWrite 1984 1986 1987 Sample 445
+                              Return
+                              FunctionEnd
+68(testSparseTexture():    7(fvec4) Function None 8
+              69:             Label
+     1988(texel):     63(ptr) Variable Function
+                              Store 1988(texel) 120
+            1989:         133 Load 135(s2D)
+            1990:   52(fvec2) Load 138(c2)
+            1992:1991(ResType) ImageSparseSampleImplicitLod 1989 1990
+            1993:    7(fvec4) CompositeExtract 1992 1
+                              Store 1988(texel) 1993
+            1994:     47(int) CompositeExtract 1992 0
+            1995:         144 Load 146(s3D)
+            1996:  148(fvec3) Load 150(c3)
+            1997:1991(ResType) ImageSparseSampleImplicitLod 1995 1996
+            1998:    7(fvec4) CompositeExtract 1997 1
+                              Store 1988(texel) 1998
+            1999:     47(int) CompositeExtract 1997 0
+            2000:         156 Load 158(sCube)
+            2001:  148(fvec3) Load 150(c3)
+            2002:1991(ResType) ImageSparseSampleImplicitLod 2000 2001
+            2003:    7(fvec4) CompositeExtract 2002 1
+                              Store 1988(texel) 2003
+            2004:     47(int) CompositeExtract 2002 0
+            2005:         180 Load 182(s2DShadow)
+            2006:  148(fvec3) Load 150(c3)
+            2007:    174(ptr) AccessChain 1988(texel) 173
+            2008:    6(float) CompositeExtract 2006 2
+            2010:2009(ResType) ImageSparseSampleDrefImplicitLod 2005 2006 2008
+            2011:    6(float) CompositeExtract 2010 1
+                              Store 2007 2011
+            2012:     47(int) CompositeExtract 2010 0
+            2013:         192 Load 194(sCubeShadow)
+            2014:    7(fvec4) Load 197(c4)
+            2015:    174(ptr) AccessChain 1988(texel) 173
+            2016:    6(float) CompositeExtract 2014 3
+            2017:2009(ResType) ImageSparseSampleDrefImplicitLod 2013 2014 2016
+            2018:    6(float) CompositeExtract 2017 1
+                              Store 2015 2018
+            2019:     47(int) CompositeExtract 2017 0
+            2020:         215 Load 217(s2DArray)
+            2021:  148(fvec3) Load 150(c3)
+            2022:1991(ResType) ImageSparseSampleImplicitLod 2020 2021
+            2023:    7(fvec4) CompositeExtract 2022 1
+                              Store 1988(texel) 2023
+            2024:     47(int) CompositeExtract 2022 0
+            2025:         224 Load 226(sCubeArray)
+            2026:    7(fvec4) Load 197(c4)
+            2027:1991(ResType) ImageSparseSampleImplicitLod 2025 2026
+            2028:    7(fvec4) CompositeExtract 2027 1
+                              Store 1988(texel) 2028
+            2029:     47(int) CompositeExtract 2027 0
+            2030:         245 Load 247(s2DArrayShadow)
+            2031:    7(fvec4) Load 197(c4)
+            2032:    174(ptr) AccessChain 1988(texel) 173
+            2033:    6(float) CompositeExtract 2031 3
+            2034:2009(ResType) ImageSparseSampleDrefImplicitLod 2030 2031 2033
+            2035:    6(float) CompositeExtract 2034 1
+                              Store 2032 2035
+            2036:     47(int) CompositeExtract 2034 0
+            2037:         257 Load 259(s2DRect)
+            2038:   52(fvec2) Load 138(c2)
+            2039:1991(ResType) ImageSparseSampleImplicitLod 2037 2038
+            2040:    7(fvec4) CompositeExtract 2039 1
+                              Store 1988(texel) 2040
+            2041:     47(int) CompositeExtract 2039 0
+            2042:         266 Load 268(s2DRectShadow)
+            2043:  148(fvec3) Load 150(c3)
+            2044:    174(ptr) AccessChain 1988(texel) 173
+            2045:    6(float) CompositeExtract 2043 2
+            2046:2009(ResType) ImageSparseSampleDrefImplicitLod 2042 2043 2045
+            2047:    6(float) CompositeExtract 2046 1
+                              Store 2044 2047
+            2048:     47(int) CompositeExtract 2046 0
+            2049:         278 Load 280(sCubeArrayShadow)
+            2050:    7(fvec4) Load 197(c4)
+            2051:    6(float) Load 283(compare)
+            2052:    174(ptr) AccessChain 1988(texel) 173
+            2053:2009(ResType) ImageSparseSampleDrefImplicitLod 2049 2050 2051
+            2054:    6(float) CompositeExtract 2053 1
+                              Store 2052 2054
+            2055:     47(int) CompositeExtract 2053 0
+            2056:    7(fvec4) Load 1988(texel)
+                              ReturnValue 2056
+                              FunctionEnd
+70(testSparseTextureLod():    7(fvec4) Function None 8
+              71:             Label
+     2059(texel):     63(ptr) Variable Function
+                              Store 2059(texel) 120
+            2060:         133 Load 135(s2D)
+            2061:   52(fvec2) Load 138(c2)
+            2062:    6(float) Load 371(lod)
+            2063:1991(ResType) ImageSparseSampleExplicitLod 2060 2061 Lod 2062
+            2064:    7(fvec4) CompositeExtract 2063 1
+                              Store 2059(texel) 2064
+            2065:     47(int) CompositeExtract 2063 0
+            2066:         144 Load 146(s3D)
+            2067:  148(fvec3) Load 150(c3)
+            2068:    6(float) Load 371(lod)
+            2069:1991(ResType) ImageSparseSampleExplicitLod 2066 2067 Lod 2068
+            2070:    7(fvec4) CompositeExtract 2069 1
+                              Store 2059(texel) 2070
+            2071:     47(int) CompositeExtract 2069 0
+            2072:         156 Load 158(sCube)
+            2073:  148(fvec3) Load 150(c3)
+            2074:    6(float) Load 371(lod)
+            2075:1991(ResType) ImageSparseSampleExplicitLod 2072 2073 Lod 2074
+            2076:    7(fvec4) CompositeExtract 2075 1
+                              Store 2059(texel) 2076
+            2077:     47(int) CompositeExtract 2075 0
+            2078:         180 Load 182(s2DShadow)
+            2079:  148(fvec3) Load 150(c3)
+            2080:    6(float) Load 371(lod)
+            2081:    174(ptr) AccessChain 2059(texel) 173
+            2082:    6(float) CompositeExtract 2079 2
+            2083:2009(ResType) ImageSparseSampleDrefExplicitLod 2078 2079 2082 Lod 2080
+            2084:    6(float) CompositeExtract 2083 1
+                              Store 2081 2084
+            2085:     47(int) CompositeExtract 2083 0
+            2086:         215 Load 217(s2DArray)
+            2087:  148(fvec3) Load 150(c3)
+            2088:    6(float) Load 371(lod)
+            2089:1991(ResType) ImageSparseSampleExplicitLod 2086 2087 Lod 2088
+            2090:    7(fvec4) CompositeExtract 2089 1
+                              Store 2059(texel) 2090
+            2091:     47(int) CompositeExtract 2089 0
+            2092:         224 Load 226(sCubeArray)
+            2093:    7(fvec4) Load 197(c4)
+            2094:    6(float) Load 371(lod)
+            2095:1991(ResType) ImageSparseSampleExplicitLod 2092 2093 Lod 2094
+            2096:    7(fvec4) CompositeExtract 2095 1
+                              Store 2059(texel) 2096
+            2097:     47(int) CompositeExtract 2095 0
+            2098:    7(fvec4) Load 2059(texel)
+                              ReturnValue 2098
+                              FunctionEnd
+72(testSparseTextureOffset():    7(fvec4) Function None 8
+              73:             Label
+     2101(texel):     63(ptr) Variable Function
+                              Store 2101(texel) 120
+            2102:         133 Load 135(s2D)
+            2103:   52(fvec2) Load 138(c2)
+            2104:1991(ResType) ImageSparseSampleImplicitLod 2102 2103 ConstOffset 452
+            2105:    7(fvec4) CompositeExtract 2104 1
+                              Store 2101(texel) 2105
+            2106:     47(int) CompositeExtract 2104 0
+            2107:         144 Load 146(s3D)
+            2108:  148(fvec3) Load 150(c3)
+            2109:1991(ResType) ImageSparseSampleImplicitLod 2107 2108 ConstOffset 459
+            2110:    7(fvec4) CompositeExtract 2109 1
+                              Store 2101(texel) 2110
+            2111:     47(int) CompositeExtract 2109 0
+            2112:         257 Load 259(s2DRect)
+            2113:   52(fvec2) Load 138(c2)
+            2114:1991(ResType) ImageSparseSampleImplicitLod 2112 2113 ConstOffset 452
+            2115:    7(fvec4) CompositeExtract 2114 1
+                              Store 2101(texel) 2115
+            2116:     47(int) CompositeExtract 2114 0
+            2117:         266 Load 268(s2DRectShadow)
+            2118:  148(fvec3) Load 150(c3)
+            2119:    174(ptr) AccessChain 2101(texel) 173
+            2120:    6(float) CompositeExtract 2118 2
+            2121:2009(ResType) ImageSparseSampleDrefImplicitLod 2117 2118 2120 ConstOffset 452
+            2122:    6(float) CompositeExtract 2121 1
+                              Store 2119 2122
+            2123:     47(int) CompositeExtract 2121 0
+            2124:         180 Load 182(s2DShadow)
+            2125:  148(fvec3) Load 150(c3)
+            2126:    174(ptr) AccessChain 2101(texel) 173
+            2127:    6(float) CompositeExtract 2125 2
+            2128:2009(ResType) ImageSparseSampleDrefImplicitLod 2124 2125 2127 ConstOffset 452
+            2129:    6(float) CompositeExtract 2128 1
+                              Store 2126 2129
+            2130:     47(int) CompositeExtract 2128 0
+            2131:         215 Load 217(s2DArray)
+            2132:  148(fvec3) Load 150(c3)
+            2133:1991(ResType) ImageSparseSampleImplicitLod 2131 2132 ConstOffset 452
+            2134:    7(fvec4) CompositeExtract 2133 1
+                              Store 2101(texel) 2134
+            2135:     47(int) CompositeExtract 2133 0
+            2136:         245 Load 247(s2DArrayShadow)
+            2137:    7(fvec4) Load 197(c4)
+            2138:    174(ptr) AccessChain 2101(texel) 173
+            2139:    6(float) CompositeExtract 2137 3
+            2140:2009(ResType) ImageSparseSampleDrefImplicitLod 2136 2137 2139 ConstOffset 452
+            2141:    6(float) CompositeExtract 2140 1
+                              Store 2138 2141
+            2142:     47(int) CompositeExtract 2140 0
+            2143:    7(fvec4) Load 2101(texel)
+                              ReturnValue 2143
+                              FunctionEnd
+74(testSparseTextureLodOffset():    7(fvec4) Function None 8
+              75:             Label
+     2146(texel):     63(ptr) Variable Function
+                              Store 2146(texel) 120
+            2147:         133 Load 135(s2D)
+            2148:   52(fvec2) Load 138(c2)
+            2149:    6(float) Load 371(lod)
+            2150:1991(ResType) ImageSparseSampleExplicitLod 2147 2148 Lod ConstOffset 2149 452
+            2151:    7(fvec4) CompositeExtract 2150 1
+                              Store 2146(texel) 2151
+            2152:     47(int) CompositeExtract 2150 0
+            2153:         144 Load 146(s3D)
+            2154:  148(fvec3) Load 150(c3)
+            2155:    6(float) Load 371(lod)
+            2156:1991(ResType) ImageSparseSampleExplicitLod 2153 2154 Lod ConstOffset 2155 459
+            2157:    7(fvec4) CompositeExtract 2156 1
+                              Store 2146(texel) 2157
+            2158:     47(int) CompositeExtract 2156 0
+            2159:         180 Load 182(s2DShadow)
+            2160:  148(fvec3) Load 150(c3)
+            2161:    6(float) Load 371(lod)
+            2162:    174(ptr) AccessChain 2146(texel) 173
+            2163:    6(float) CompositeExtract 2160 2
+            2164:2009(ResType) ImageSparseSampleDrefExplicitLod 2159 2160 2163 Lod ConstOffset 2161 452
+            2165:    6(float) CompositeExtract 2164 1
+                              Store 2162 2165
+            2166:     47(int) CompositeExtract 2164 0
+            2167:         215 Load 217(s2DArray)
+            2168:  148(fvec3) Load 150(c3)
+            2169:    6(float) Load 371(lod)
+            2170:1991(ResType) ImageSparseSampleExplicitLod 2167 2168 Lod ConstOffset 2169 452
+            2171:    7(fvec4) CompositeExtract 2170 1
+                              Store 2146(texel) 2171
+            2172:     47(int) CompositeExtract 2170 0
+            2173:    7(fvec4) Load 2146(texel)
+                              ReturnValue 2173
+                              FunctionEnd
+76(testSparseTextureGrad():    7(fvec4) Function None 8
+              77:             Label
+     2176(texel):     63(ptr) Variable Function
+                              Store 2176(texel) 120
+            2177:         133 Load 135(s2D)
+            2178:   52(fvec2) Load 138(c2)
+            2179:   52(fvec2) Load 874(dPdxy2)
+            2180:   52(fvec2) Load 874(dPdxy2)
+            2181:1991(ResType) ImageSparseSampleExplicitLod 2177 2178 Grad 2179 2180
+            2182:    7(fvec4) CompositeExtract 2181 1
+                              Store 2176(texel) 2182
+            2183:     47(int) CompositeExtract 2181 0
+            2184:         144 Load 146(s3D)
+            2185:  148(fvec3) Load 150(c3)
+            2186:  148(fvec3) Load 882(dPdxy3)
+            2187:  148(fvec3) Load 882(dPdxy3)
+            2188:1991(ResType) ImageSparseSampleExplicitLod 2184 2185 Grad 2186 2187
+            2189:    7(fvec4) CompositeExtract 2188 1
+                              Store 2176(texel) 2189
+            2190:     47(int) CompositeExtract 2188 0
+            2191:         156 Load 158(sCube)
+            2192:  148(fvec3) Load 150(c3)
+            2193:  148(fvec3) Load 882(dPdxy3)
+            2194:  148(fvec3) Load 882(dPdxy3)
+            2195:1991(ResType) ImageSparseSampleExplicitLod 2191 2192 Grad 2193 2194
+            2196:    7(fvec4) CompositeExtract 2195 1
+                              Store 2176(texel) 2196
+            2197:     47(int) CompositeExtract 2195 0
+            2198:         257 Load 259(s2DRect)
+            2199:   52(fvec2) Load 138(c2)
+            2200:   52(fvec2) Load 874(dPdxy2)
+            2201:   52(fvec2) Load 874(dPdxy2)
+            2202:1991(ResType) ImageSparseSampleExplicitLod 2198 2199 Grad 2200 2201
+            2203:    7(fvec4) CompositeExtract 2202 1
+                              Store 2176(texel) 2203
+            2204:     47(int) CompositeExtract 2202 0
+            2205:         266 Load 268(s2DRectShadow)
+            2206:  148(fvec3) Load 150(c3)
+            2207:   52(fvec2) Load 874(dPdxy2)
+            2208:   52(fvec2) Load 874(dPdxy2)
+            2209:    174(ptr) AccessChain 2176(texel) 173
+            2210:    6(float) CompositeExtract 2206 2
+            2211:2009(ResType) ImageSparseSampleDrefExplicitLod 2205 2206 2210 Grad 2207 2208
+            2212:    6(float) CompositeExtract 2211 1
+                              Store 2209 2212
+            2213:     47(int) CompositeExtract 2211 0
+            2214:         180 Load 182(s2DShadow)
+            2215:  148(fvec3) Load 150(c3)
+            2216:   52(fvec2) Load 874(dPdxy2)
+            2217:   52(fvec2) Load 874(dPdxy2)
+            2218:    174(ptr) AccessChain 2176(texel) 173
+            2219:    6(float) CompositeExtract 2215 2
+            2220:2009(ResType) ImageSparseSampleDrefExplicitLod 2214 2215 2219 Grad 2216 2217
+            2221:    6(float) CompositeExtract 2220 1
+                              Store 2218 2221
+            2222:     47(int) CompositeExtract 2220 0
+            2223:         192 Load 194(sCubeShadow)
+            2224:    7(fvec4) Load 197(c4)
+            2225:  148(fvec3) Load 882(dPdxy3)
+            2226:  148(fvec3) Load 882(dPdxy3)
+            2227:    174(ptr) AccessChain 2176(texel) 173
+            2228:    6(float) CompositeExtract 2224 3
+            2229:2009(ResType) ImageSparseSampleDrefExplicitLod 2223 2224 2228 Grad 2225 2226
+            2230:    6(float) CompositeExtract 2229 1
+                              Store 2227 2230
+            2231:     47(int) CompositeExtract 2229 0
+            2232:         215 Load 217(s2DArray)
+            2233:  148(fvec3) Load 150(c3)
+            2234:   52(fvec2) Load 874(dPdxy2)
+            2235:   52(fvec2) Load 874(dPdxy2)
+            2236:1991(ResType) ImageSparseSampleExplicitLod 2232 2233 Grad 2234 2235
+            2237:    7(fvec4) CompositeExtract 2236 1
+                              Store 2176(texel) 2237
+            2238:     47(int) CompositeExtract 2236 0
+            2239:         245 Load 247(s2DArrayShadow)
+            2240:    7(fvec4) Load 197(c4)
+            2241:   52(fvec2) Load 874(dPdxy2)
+            2242:   52(fvec2) Load 874(dPdxy2)
+            2243:    174(ptr) AccessChain 2176(texel) 173
+            2244:    6(float) CompositeExtract 2240 3
+            2245:2009(ResType) ImageSparseSampleDrefExplicitLod 2239 2240 2244 Grad 2241 2242
+            2246:    6(float) CompositeExtract 2245 1
+                              Store 2243 2246
+            2247:     47(int) CompositeExtract 2245 0
+            2248:         224 Load 226(sCubeArray)
+            2249:    7(fvec4) Load 197(c4)
+            2250:  148(fvec3) Load 882(dPdxy3)
+            2251:  148(fvec3) Load 882(dPdxy3)
+            2252:1991(ResType) ImageSparseSampleExplicitLod 2248 2249 Grad 2250 2251
+            2253:    7(fvec4) CompositeExtract 2252 1
+                              Store 2176(texel) 2253
+            2254:     47(int) CompositeExtract 2252 0
+            2255:    7(fvec4) Load 2176(texel)
+                              ReturnValue 2255
+                              FunctionEnd
+78(testSparseTextureGradOffset():    7(fvec4) Function None 8
+              79:             Label
+     2258(texel):     63(ptr) Variable Function
+                              Store 2258(texel) 120
+            2259:         133 Load 135(s2D)
+            2260:   52(fvec2) Load 138(c2)
+            2261:   52(fvec2) Load 874(dPdxy2)
+            2262:   52(fvec2) Load 874(dPdxy2)
+            2263:1991(ResType) ImageSparseSampleExplicitLod 2259 2260 Grad ConstOffset 2261 2262 452
+            2264:    7(fvec4) CompositeExtract 2263 1
+                              Store 2258(texel) 2264
+            2265:     47(int) CompositeExtract 2263 0
+            2266:         144 Load 146(s3D)
+            2267:  148(fvec3) Load 150(c3)
+            2268:  148(fvec3) Load 882(dPdxy3)
+            2269:  148(fvec3) Load 882(dPdxy3)
+            2270:1991(ResType) ImageSparseSampleExplicitLod 2266 2267 Grad ConstOffset 2268 2269 459
+            2271:    7(fvec4) CompositeExtract 2270 1
+                              Store 2258(texel) 2271
+            2272:     47(int) CompositeExtract 2270 0
+            2273:         257 Load 259(s2DRect)
+            2274:   52(fvec2) Load 138(c2)
+            2275:   52(fvec2) Load 874(dPdxy2)
+            2276:   52(fvec2) Load 874(dPdxy2)
+            2277:1991(ResType) ImageSparseSampleExplicitLod 2273 2274 Grad ConstOffset 2275 2276 452
+            2278:    7(fvec4) CompositeExtract 2277 1
+                              Store 2258(texel) 2278
+            2279:     47(int) CompositeExtract 2277 0
+            2280:         266 Load 268(s2DRectShadow)
+            2281:  148(fvec3) Load 150(c3)
+            2282:   52(fvec2) Load 874(dPdxy2)
+            2283:   52(fvec2) Load 874(dPdxy2)
+            2284:    174(ptr) AccessChain 2258(texel) 173
+            2285:    6(float) CompositeExtract 2281 2
+            2286:2009(ResType) ImageSparseSampleDrefExplicitLod 2280 2281 2285 Grad ConstOffset 2282 2283 452
+            2287:    6(float) CompositeExtract 2286 1
+                              Store 2284 2287
+            2288:     47(int) CompositeExtract 2286 0
+            2289:         180 Load 182(s2DShadow)
+            2290:  148(fvec3) Load 150(c3)
+            2291:   52(fvec2) Load 874(dPdxy2)
+            2292:   52(fvec2) Load 874(dPdxy2)
+            2293:    174(ptr) AccessChain 2258(texel) 173
+            2294:    6(float) CompositeExtract 2290 2
+            2295:2009(ResType) ImageSparseSampleDrefExplicitLod 2289 2290 2294 Grad ConstOffset 2291 2292 452
+            2296:    6(float) CompositeExtract 2295 1
+                              Store 2293 2296
+            2297:     47(int) CompositeExtract 2295 0
+            2298:         215 Load 217(s2DArray)
+            2299:  148(fvec3) Load 150(c3)
+            2300:   52(fvec2) Load 874(dPdxy2)
+            2301:   52(fvec2) Load 874(dPdxy2)
+            2302:1991(ResType) ImageSparseSampleExplicitLod 2298 2299 Grad ConstOffset 2300 2301 452
+            2303:    7(fvec4) CompositeExtract 2302 1
+                              Store 2258(texel) 2303
+            2304:     47(int) CompositeExtract 2302 0
+            2305:         245 Load 247(s2DArrayShadow)
+            2306:    7(fvec4) Load 197(c4)
+            2307:   52(fvec2) Load 874(dPdxy2)
+            2308:   52(fvec2) Load 874(dPdxy2)
+            2309:    174(ptr) AccessChain 2258(texel) 173
+            2310:    6(float) CompositeExtract 2306 3
+            2311:2009(ResType) ImageSparseSampleDrefExplicitLod 2305 2306 2310 Grad ConstOffset 2307 2308 452
+            2312:    6(float) CompositeExtract 2311 1
+                              Store 2309 2312
+            2313:     47(int) CompositeExtract 2311 0
+            2314:    7(fvec4) Load 2258(texel)
+                              ReturnValue 2314
+                              FunctionEnd
+80(testSparseTexelFetch():    7(fvec4) Function None 8
+              81:             Label
+     2317(texel):     63(ptr) Variable Function
+                              Store 2317(texel) 120
+            2318:         133 Load 135(s2D)
+            2319:   52(fvec2) Load 138(c2)
+            2320:  451(ivec2) ConvertFToS 2319
+            2321:    6(float) Load 371(lod)
+            2322:     47(int) ConvertFToS 2321
+            2323:         132 Image 2318
+            2324:1991(ResType) ImageSparseFetch 2323 2320 Lod 2322
+            2325:    7(fvec4) CompositeExtract 2324 1
+                              Store 2317(texel) 2325
+            2326:     47(int) CompositeExtract 2324 0
+            2327:         144 Load 146(s3D)
+            2328:  148(fvec3) Load 150(c3)
+            2329:  458(ivec3) ConvertFToS 2328
+            2330:    6(float) Load 371(lod)
+            2331:     47(int) ConvertFToS 2330
+            2332:         143 Image 2327
+            2333:1991(ResType) ImageSparseFetch 2332 2329 Lod 2331
+            2334:    7(fvec4) CompositeExtract 2333 1
+                              Store 2317(texel) 2334
+            2335:     47(int) CompositeExtract 2333 0
+            2336:         257 Load 259(s2DRect)
+            2337:   52(fvec2) Load 138(c2)
+            2338:  451(ivec2) ConvertFToS 2337
+            2339:         256 Image 2336
+            2340:1991(ResType) ImageSparseFetch 2339 2338
+            2341:    7(fvec4) CompositeExtract 2340 1
+                              Store 2317(texel) 2341
+            2342:     47(int) CompositeExtract 2340 0
+            2343:         215 Load 217(s2DArray)
+            2344:  148(fvec3) Load 150(c3)
+            2345:  458(ivec3) ConvertFToS 2344
+            2346:    6(float) Load 371(lod)
+            2347:     47(int) ConvertFToS 2346
+            2348:         214 Image 2343
+            2349:1991(ResType) ImageSparseFetch 2348 2345 Lod 2347
+            2350:    7(fvec4) CompositeExtract 2349 1
+                              Store 2317(texel) 2350
+            2351:     47(int) CompositeExtract 2349 0
+            2352:         782 Load 784(s2DMS)
+            2353:   52(fvec2) Load 138(c2)
+            2354:  451(ivec2) ConvertFToS 2353
+            2355:         781 Image 2352
+            2356:1991(ResType) ImageSparseFetch 2355 2354 Sample 445
+            2357:    7(fvec4) CompositeExtract 2356 1
+                              Store 2317(texel) 2357
+            2358:     47(int) CompositeExtract 2356 0
+            2359:         793 Load 795(s2DMSArray)
+            2360:  148(fvec3) Load 150(c3)
+            2361:  458(ivec3) ConvertFToS 2360
+            2362:         792 Image 2359
+            2363:1991(ResType) ImageSparseFetch 2362 2361 Sample 799
+            2364:    7(fvec4) CompositeExtract 2363 1
+                              Store 2317(texel) 2364
+            2365:     47(int) CompositeExtract 2363 0
+            2366:    7(fvec4) Load 2317(texel)
+                              ReturnValue 2366
+                              FunctionEnd
+82(testSparseTexelFetchOffset():    7(fvec4) Function None 8
+              83:             Label
+     2369(texel):     63(ptr) Variable Function
+                              Store 2369(texel) 120
+            2370:         133 Load 135(s2D)
+            2371:   52(fvec2) Load 138(c2)
+            2372:  451(ivec2) ConvertFToS 2371
+            2373:    6(float) Load 371(lod)
+            2374:     47(int) ConvertFToS 2373
+            2375:         132 Image 2370
+            2376:1991(ResType) ImageSparseFetch 2375 2372 Lod ConstOffset 2374 452
+            2377:    7(fvec4) CompositeExtract 2376 1
+                              Store 2369(texel) 2377
+            2378:     47(int) CompositeExtract 2376 0
+            2379:         144 Load 146(s3D)
+            2380:  148(fvec3) Load 150(c3)
+            2381:  458(ivec3) ConvertFToS 2380
+            2382:    6(float) Load 371(lod)
+            2383:     47(int) ConvertFToS 2382
+            2384:         143 Image 2379
+            2385:1991(ResType) ImageSparseFetch 2384 2381 Lod ConstOffset 2383 459
+            2386:    7(fvec4) CompositeExtract 2385 1
+                              Store 2369(texel) 2386
+            2387:     47(int) CompositeExtract 2385 0
+            2388:         257 Load 259(s2DRect)
+            2389:   52(fvec2) Load 138(c2)
+            2390:  451(ivec2) ConvertFToS 2389
+            2391:         256 Image 2388
+            2392:1991(ResType) ImageSparseFetch 2391 2390 ConstOffset 452
+            2393:    7(fvec4) CompositeExtract 2392 1
+                              Store 2369(texel) 2393
+            2394:     47(int) CompositeExtract 2392 0
+            2395:         215 Load 217(s2DArray)
+            2396:  148(fvec3) Load 150(c3)
+            2397:  458(ivec3) ConvertFToS 2396
+            2398:    6(float) Load 371(lod)
+            2399:     47(int) ConvertFToS 2398
+            2400:         214 Image 2395
+            2401:1991(ResType) ImageSparseFetch 2400 2397 Lod ConstOffset 2399 452
+            2402:    7(fvec4) CompositeExtract 2401 1
+                              Store 2369(texel) 2402
+            2403:     47(int) CompositeExtract 2401 0
+            2404:    7(fvec4) Load 2369(texel)
+                              ReturnValue 2404
+                              FunctionEnd
+84(testSparseTextureGather():    7(fvec4) Function None 8
+              85:             Label
+     2407(texel):     63(ptr) Variable Function
+                              Store 2407(texel) 120
+            2408:         133 Load 135(s2D)
+            2409:   52(fvec2) Load 138(c2)
+            2410:1991(ResType) ImageSparseGather 2408 2409 1275
+            2411:    7(fvec4) CompositeExtract 2410 1
+                              Store 2407(texel) 2411
+            2412:     47(int) CompositeExtract 2410 0
+            2413:         215 Load 217(s2DArray)
+            2414:  148(fvec3) Load 150(c3)
+            2415:1991(ResType) ImageSparseGather 2413 2414 1275
+            2416:    7(fvec4) CompositeExtract 2415 1
+                              Store 2407(texel) 2416
+            2417:     47(int) CompositeExtract 2415 0
+            2418:         156 Load 158(sCube)
+            2419:  148(fvec3) Load 150(c3)
+            2420:1991(ResType) ImageSparseGather 2418 2419 1275
+            2421:    7(fvec4) CompositeExtract 2420 1
+                              Store 2407(texel) 2421
+            2422:     47(int) CompositeExtract 2420 0
+            2423:         224 Load 226(sCubeArray)
+            2424:    7(fvec4) Load 197(c4)
+            2425:1991(ResType) ImageSparseGather 2423 2424 1275
+            2426:    7(fvec4) CompositeExtract 2425 1
+                              Store 2407(texel) 2426
+            2427:     47(int) CompositeExtract 2425 0
+            2428:         257 Load 259(s2DRect)
+            2429:   52(fvec2) Load 138(c2)
+            2430:1991(ResType) ImageSparseGather 2428 2429 1275
+            2431:    7(fvec4) CompositeExtract 2430 1
+                              Store 2407(texel) 2431
+            2432:     47(int) CompositeExtract 2430 0
+            2433:         180 Load 182(s2DShadow)
+            2434:   52(fvec2) Load 138(c2)
+            2435:    6(float) Load 283(compare)
+            2436:1991(ResType) ImageSparseDrefGather 2433 2434 2435
+            2437:    7(fvec4) CompositeExtract 2436 1
+                              Store 2407(texel) 2437
+            2438:     47(int) CompositeExtract 2436 0
+            2439:         245 Load 247(s2DArrayShadow)
+            2440:  148(fvec3) Load 150(c3)
+            2441:    6(float) Load 283(compare)
+            2442:1991(ResType) ImageSparseDrefGather 2439 2440 2441
+            2443:    7(fvec4) CompositeExtract 2442 1
+                              Store 2407(texel) 2443
+            2444:     47(int) CompositeExtract 2442 0
+            2445:         192 Load 194(sCubeShadow)
+            2446:  148(fvec3) Load 150(c3)
+            2447:    6(float) Load 283(compare)
+            2448:1991(ResType) ImageSparseDrefGather 2445 2446 2447
+            2449:    7(fvec4) CompositeExtract 2448 1
+                              Store 2407(texel) 2449
+            2450:     47(int) CompositeExtract 2448 0
+            2451:         278 Load 280(sCubeArrayShadow)
+            2452:    7(fvec4) Load 197(c4)
+            2453:    6(float) Load 283(compare)
+            2454:1991(ResType) ImageSparseDrefGather 2451 2452 2453
+            2455:    7(fvec4) CompositeExtract 2454 1
+                              Store 2407(texel) 2455
+            2456:     47(int) CompositeExtract 2454 0
+            2457:         266 Load 268(s2DRectShadow)
+            2458:   52(fvec2) Load 138(c2)
+            2459:    6(float) Load 283(compare)
+            2460:1991(ResType) ImageSparseDrefGather 2457 2458 2459
+            2461:    7(fvec4) CompositeExtract 2460 1
+                              Store 2407(texel) 2461
+            2462:     47(int) CompositeExtract 2460 0
+            2463:    7(fvec4) Load 2407(texel)
+                              ReturnValue 2463
+                              FunctionEnd
+86(testSparseTextureGatherOffset():    7(fvec4) Function None 8
+              87:             Label
+     2466(texel):     63(ptr) Variable Function
+                              Store 2466(texel) 120
+            2467:         133 Load 135(s2D)
+            2468:   52(fvec2) Load 138(c2)
+            2469:1991(ResType) ImageSparseGather 2467 2468 1275 ConstOffset 452
+            2470:    7(fvec4) CompositeExtract 2469 1
+                              Store 2466(texel) 2470
+            2471:     47(int) CompositeExtract 2469 0
+            2472:         215 Load 217(s2DArray)
+            2473:  148(fvec3) Load 150(c3)
+            2474:1991(ResType) ImageSparseGather 2472 2473 1275 ConstOffset 452
+            2475:    7(fvec4) CompositeExtract 2474 1
+                              Store 2466(texel) 2475
+            2476:     47(int) CompositeExtract 2474 0
+            2477:         257 Load 259(s2DRect)
+            2478:   52(fvec2) Load 138(c2)
+            2479:1991(ResType) ImageSparseGather 2477 2478 1275 ConstOffset 452
+            2480:    7(fvec4) CompositeExtract 2479 1
+                              Store 2466(texel) 2480
+            2481:     47(int) CompositeExtract 2479 0
+            2482:         180 Load 182(s2DShadow)
+            2483:   52(fvec2) Load 138(c2)
+            2484:    6(float) Load 283(compare)
+            2485:1991(ResType) ImageSparseDrefGather 2482 2483 2484 ConstOffset 452
+            2486:    7(fvec4) CompositeExtract 2485 1
+                              Store 2466(texel) 2486
+            2487:     47(int) CompositeExtract 2485 0
+            2488:         245 Load 247(s2DArrayShadow)
+            2489:  148(fvec3) Load 150(c3)
+            2490:    6(float) Load 283(compare)
+            2491:1991(ResType) ImageSparseDrefGather 2488 2489 2490 ConstOffset 452
+            2492:    7(fvec4) CompositeExtract 2491 1
+                              Store 2466(texel) 2492
+            2493:     47(int) CompositeExtract 2491 0
+            2494:         266 Load 268(s2DRectShadow)
+            2495:   52(fvec2) Load 138(c2)
+            2496:    6(float) Load 283(compare)
+            2497:1991(ResType) ImageSparseDrefGather 2494 2495 2496 ConstOffset 452
+            2498:    7(fvec4) CompositeExtract 2497 1
+                              Store 2466(texel) 2498
+            2499:     47(int) CompositeExtract 2497 0
+            2500:    7(fvec4) Load 2466(texel)
+                              ReturnValue 2500
+                              FunctionEnd
+88(testSparseTextureGatherOffsets():    7(fvec4) Function None 8
+              89:             Label
+     2503(texel):     63(ptr) Variable Function
+                              Store 2503(texel) 120
+            2504:         133 Load 135(s2D)
+            2505:   52(fvec2) Load 138(c2)
+            2516:1991(ResType) ImageSparseGather 2504 2505 1275 ConstOffsets 2515
+            2517:    7(fvec4) CompositeExtract 2516 1
+                              Store 2503(texel) 2517
+            2518:     47(int) CompositeExtract 2516 0
+            2519:         215 Load 217(s2DArray)
+            2520:  148(fvec3) Load 150(c3)
+            2521:1991(ResType) ImageSparseGather 2519 2520 1275 ConstOffsets 2515
+            2522:    7(fvec4) CompositeExtract 2521 1
+                              Store 2503(texel) 2522
+            2523:     47(int) CompositeExtract 2521 0
+            2524:         257 Load 259(s2DRect)
+            2525:   52(fvec2) Load 138(c2)
+            2526:1991(ResType) ImageSparseGather 2524 2525 1275 ConstOffsets 2515
+            2527:    7(fvec4) CompositeExtract 2526 1
+                              Store 2503(texel) 2527
+            2528:     47(int) CompositeExtract 2526 0
+            2529:         180 Load 182(s2DShadow)
+            2530:   52(fvec2) Load 138(c2)
+            2531:    6(float) Load 283(compare)
+            2532:1991(ResType) ImageSparseDrefGather 2529 2530 2531 ConstOffsets 2515
+            2533:    7(fvec4) CompositeExtract 2532 1
+                              Store 2503(texel) 2533
+            2534:     47(int) CompositeExtract 2532 0
+            2535:         245 Load 247(s2DArrayShadow)
+            2536:  148(fvec3) Load 150(c3)
+            2537:    6(float) Load 283(compare)
+            2538:1991(ResType) ImageSparseDrefGather 2535 2536 2537 ConstOffsets 2515
+            2539:    7(fvec4) CompositeExtract 2538 1
+                              Store 2503(texel) 2539
+            2540:     47(int) CompositeExtract 2538 0
+            2541:         266 Load 268(s2DRectShadow)
+            2542:   52(fvec2) Load 138(c2)
+            2543:    6(float) Load 283(compare)
+            2544:1991(ResType) ImageSparseDrefGather 2541 2542 2543 ConstOffsets 2515
+            2545:    7(fvec4) CompositeExtract 2544 1
+                              Store 2503(texel) 2545
+            2546:     47(int) CompositeExtract 2544 0
+            2547:    7(fvec4) Load 2503(texel)
+                              ReturnValue 2547
+                              FunctionEnd
+90(testSparseTextureGatherLod():    7(fvec4) Function None 8
+              91:             Label
+     2550(texel):     63(ptr) Variable Function
+                              Store 2550(texel) 120
+            2551:         133 Load 135(s2D)
+            2552:   52(fvec2) Load 138(c2)
+            2553:    6(float) Load 371(lod)
+            2554:1991(ResType) ImageSparseGather 2551 2552 1275 Lod 2553
+            2555:    7(fvec4) CompositeExtract 2554 1
+                              Store 2550(texel) 2555
+            2556:     47(int) CompositeExtract 2554 0
+            2557:         215 Load 217(s2DArray)
+            2558:  148(fvec3) Load 150(c3)
+            2559:    6(float) Load 371(lod)
+            2560:1991(ResType) ImageSparseGather 2557 2558 1275 Lod 2559
+            2561:    7(fvec4) CompositeExtract 2560 1
+                              Store 2550(texel) 2561
+            2562:     47(int) CompositeExtract 2560 0
+            2563:         156 Load 158(sCube)
+            2564:  148(fvec3) Load 150(c3)
+            2565:    6(float) Load 371(lod)
+            2566:1991(ResType) ImageSparseGather 2563 2564 1275 Lod 2565
+            2567:    7(fvec4) CompositeExtract 2566 1
+                              Store 2550(texel) 2567
+            2568:     47(int) CompositeExtract 2566 0
+            2569:         224 Load 226(sCubeArray)
+            2570:    7(fvec4) Load 197(c4)
+            2571:    6(float) Load 371(lod)
+            2572:1991(ResType) ImageSparseGather 2569 2570 1275 Lod 2571
+            2573:    7(fvec4) CompositeExtract 2572 1
+                              Store 2550(texel) 2573
+            2574:     47(int) CompositeExtract 2572 0
+            2575:    7(fvec4) Load 2550(texel)
+                              ReturnValue 2575
+                              FunctionEnd
+92(testSparseTextureGatherLodOffset():    7(fvec4) Function None 8
+              93:             Label
+     2578(texel):     63(ptr) Variable Function
+                              Store 2578(texel) 120
+            2579:         133 Load 135(s2D)
+            2580:   52(fvec2) Load 138(c2)
+            2581:    6(float) Load 371(lod)
+            2582:1991(ResType) ImageSparseGather 2579 2580 1275 Lod ConstOffset 2581 452
+            2583:    7(fvec4) CompositeExtract 2582 1
+                              Store 2578(texel) 2583
+            2584:     47(int) CompositeExtract 2582 0
+            2585:         215 Load 217(s2DArray)
+            2586:  148(fvec3) Load 150(c3)
+            2587:    6(float) Load 371(lod)
+            2588:1991(ResType) ImageSparseGather 2585 2586 1275 Lod ConstOffset 2587 452
+            2589:    7(fvec4) CompositeExtract 2588 1
+                              Store 2578(texel) 2589
+            2590:     47(int) CompositeExtract 2588 0
+            2591:    7(fvec4) Load 2578(texel)
+                              ReturnValue 2591
+                              FunctionEnd
+94(testSparseTextureGatherLodOffsets():    7(fvec4) Function None 8
+              95:             Label
+     2594(texel):     63(ptr) Variable Function
+                              Store 2594(texel) 120
+            2595:         133 Load 135(s2D)
+            2596:   52(fvec2) Load 138(c2)
+            2597:    6(float) Load 371(lod)
+            2598:1991(ResType) ImageSparseGather 2595 2596 1275 Lod ConstOffsets 2597 1374
+            2599:    7(fvec4) CompositeExtract 2598 1
+                              Store 2594(texel) 2599
+            2600:     47(int) CompositeExtract 2598 0
+            2601:         215 Load 217(s2DArray)
+            2602:  148(fvec3) Load 150(c3)
+            2603:    6(float) Load 371(lod)
+            2604:1991(ResType) ImageSparseGather 2601 2602 1275 Lod ConstOffsets 2603 1374
+            2605:    7(fvec4) CompositeExtract 2604 1
+                              Store 2594(texel) 2605
+            2606:     47(int) CompositeExtract 2604 0
+            2607:    7(fvec4) Load 2594(texel)
+                              ReturnValue 2607
+                              FunctionEnd
+96(testSparseImageLoad():    7(fvec4) Function None 8
+              97:             Label
+     2610(texel):     63(ptr) Variable Function
+                              Store 2610(texel) 120
+            2611:        1851 Load 1853(i2D)
+            2612:   52(fvec2) Load 138(c2)
+            2613:  451(ivec2) ConvertFToS 2612
+            2614:1991(ResType) ImageSparseRead 2611 2613
+            2615:    7(fvec4) CompositeExtract 2614 1
+                              Store 2610(texel) 2615
+            2616:     47(int) CompositeExtract 2614 0
+            2617:        1860 Load 1862(i3D)
+            2618:  148(fvec3) Load 150(c3)
+            2619:  458(ivec3) ConvertFToS 2618
+            2620:1991(ResType) ImageSparseRead 2617 2619
+            2621:    7(fvec4) CompositeExtract 2620 1
+                              Store 2610(texel) 2621
+            2622:     47(int) CompositeExtract 2620 0
+            2623:        1869 Load 1871(i2DRect)
+            2624:   52(fvec2) Load 138(c2)
+            2625:  451(ivec2) ConvertFToS 2624
+            2626:1991(ResType) ImageSparseRead 2623 2625
+            2627:    7(fvec4) CompositeExtract 2626 1
+                              Store 2610(texel) 2627
+            2628:     47(int) CompositeExtract 2626 0
+            2629:        1878 Load 1880(iCube)
+            2630:  148(fvec3) Load 150(c3)
+            2631:  458(ivec3) ConvertFToS 2630
+            2632:1991(ResType) ImageSparseRead 2629 2631
+            2633:    7(fvec4) CompositeExtract 2632 1
+                              Store 2610(texel) 2633
+            2634:     47(int) CompositeExtract 2632 0
+            2635:        1905 Load 1907(i2DArray)
+            2636:  148(fvec3) Load 150(c3)
+            2637:  458(ivec3) ConvertFToS 2636
+            2638:1991(ResType) ImageSparseRead 2635 2637
+            2639:    7(fvec4) CompositeExtract 2638 1
+                              Store 2610(texel) 2639
+            2640:     47(int) CompositeExtract 2638 0
+            2641:        1914 Load 1916(iCubeArray)
+            2642:  148(fvec3) Load 150(c3)
+            2643:  458(ivec3) ConvertFToS 2642
+            2644:1991(ResType) ImageSparseRead 2641 2643
+            2645:    7(fvec4) CompositeExtract 2644 1
+                              Store 2610(texel) 2645
+            2646:     47(int) CompositeExtract 2644 0
+            2647:        1923 Load 1925(i2DMS)
+            2648:   52(fvec2) Load 138(c2)
+            2649:  451(ivec2) ConvertFToS 2648
+            2650:1991(ResType) ImageSparseRead 2647 2649 Sample 445
+            2651:    7(fvec4) CompositeExtract 2650 1
+                              Store 2610(texel) 2651
+            2652:     47(int) CompositeExtract 2650 0
+            2653:        1932 Load 1934(i2DMSArray)
+            2654:  148(fvec3) Load 150(c3)
+            2655:  458(ivec3) ConvertFToS 2654
+            2656:1991(ResType) ImageSparseRead 2653 2655 Sample 799
+            2657:    7(fvec4) CompositeExtract 2656 1
+                              Store 2610(texel) 2657
+            2658:     47(int) CompositeExtract 2656 0
+            2659:    7(fvec4) Load 2610(texel)
+                              ReturnValue 2659
+                              FunctionEnd
+98(testSparseTextureClamp():    7(fvec4) Function None 8
+              99:             Label
+     2662(texel):     63(ptr) Variable Function
+                              Store 2662(texel) 120
+            2663:         133 Load 135(s2D)
+            2664:   52(fvec2) Load 138(c2)
+            2666:    6(float) Load 2665(lodClamp)
+            2667:1991(ResType) ImageSparseSampleImplicitLod 2663 2664 MinLod 2666
+            2668:    7(fvec4) CompositeExtract 2667 1
+                              Store 2662(texel) 2668
+            2669:     47(int) CompositeExtract 2667 0
+            2670:         144 Load 146(s3D)
+            2671:  148(fvec3) Load 150(c3)
+            2672:    6(float) Load 2665(lodClamp)
+            2673:1991(ResType) ImageSparseSampleImplicitLod 2670 2671 MinLod 2672
+            2674:    7(fvec4) CompositeExtract 2673 1
+                              Store 2662(texel) 2674
+            2675:     47(int) CompositeExtract 2673 0
+            2676:         156 Load 158(sCube)
+            2677:  148(fvec3) Load 150(c3)
+            2678:    6(float) Load 2665(lodClamp)
+            2679:1991(ResType) ImageSparseSampleImplicitLod 2676 2677 MinLod 2678
+            2680:    7(fvec4) CompositeExtract 2679 1
+                              Store 2662(texel) 2680
+            2681:     47(int) CompositeExtract 2679 0
+            2682:         180 Load 182(s2DShadow)
+            2683:  148(fvec3) Load 150(c3)
+            2684:    6(float) Load 2665(lodClamp)
+            2685:    174(ptr) AccessChain 2662(texel) 173
+            2686:    6(float) CompositeExtract 2683 2
+            2687:2009(ResType) ImageSparseSampleDrefImplicitLod 2682 2683 2686 MinLod 2684
+            2688:    6(float) CompositeExtract 2687 1
+                              Store 2685 2688
+            2689:     47(int) CompositeExtract 2687 0
+            2690:         192 Load 194(sCubeShadow)
+            2691:    7(fvec4) Load 197(c4)
+            2692:    6(float) Load 2665(lodClamp)
+            2693:    174(ptr) AccessChain 2662(texel) 173
+            2694:    6(float) CompositeExtract 2691 3
+            2695:2009(ResType) ImageSparseSampleDrefImplicitLod 2690 2691 2694 MinLod 2692
+            2696:    6(float) CompositeExtract 2695 1
+                              Store 2693 2696
+            2697:     47(int) CompositeExtract 2695 0
+            2698:         215 Load 217(s2DArray)
+            2699:  148(fvec3) Load 150(c3)
+            2700:    6(float) Load 2665(lodClamp)
+            2701:1991(ResType) ImageSparseSampleImplicitLod 2698 2699 MinLod 2700
+            2702:    7(fvec4) CompositeExtract 2701 1
+                              Store 2662(texel) 2702
+            2703:     47(int) CompositeExtract 2701 0
+            2704:         224 Load 226(sCubeArray)
+            2705:    7(fvec4) Load 197(c4)
+            2706:    6(float) Load 2665(lodClamp)
+            2707:1991(ResType) ImageSparseSampleImplicitLod 2704 2705 MinLod 2706
+            2708:    7(fvec4) CompositeExtract 2707 1
+                              Store 2662(texel) 2708
+            2709:     47(int) CompositeExtract 2707 0
+            2710:         245 Load 247(s2DArrayShadow)
+            2711:    7(fvec4) Load 197(c4)
+            2712:    6(float) Load 2665(lodClamp)
+            2713:    174(ptr) AccessChain 2662(texel) 173
+            2714:    6(float) CompositeExtract 2711 3
+            2715:2009(ResType) ImageSparseSampleDrefImplicitLod 2710 2711 2714 MinLod 2712
+            2716:    6(float) CompositeExtract 2715 1
+                              Store 2713 2716
+            2717:     47(int) CompositeExtract 2715 0
+            2718:         278 Load 280(sCubeArrayShadow)
+            2719:    7(fvec4) Load 197(c4)
+            2720:    6(float) Load 283(compare)
+            2721:    6(float) Load 2665(lodClamp)
+            2722:    174(ptr) AccessChain 2662(texel) 173
+            2723:2009(ResType) ImageSparseSampleDrefImplicitLod 2718 2719 2720 MinLod 2721
+            2724:    6(float) CompositeExtract 2723 1
+                              Store 2722 2724
+            2725:     47(int) CompositeExtract 2723 0
+            2726:    7(fvec4) Load 2662(texel)
+                              ReturnValue 2726
+                              FunctionEnd
+100(testTextureClamp():    7(fvec4) Function None 8
+             101:             Label
+     2729(texel):     63(ptr) Variable Function
+                              Store 2729(texel) 120
+            2730:         122 Load 124(s1D)
+            2731:    6(float) Load 127(c1)
+            2732:    6(float) Load 2665(lodClamp)
+            2733:    7(fvec4) ImageSampleImplicitLod 2730 2731 MinLod 2732
+            2734:    7(fvec4) Load 2729(texel)
+            2735:    7(fvec4) FAdd 2734 2733
+                              Store 2729(texel) 2735
+            2736:         133 Load 135(s2D)
+            2737:   52(fvec2) Load 138(c2)
+            2738:    6(float) Load 2665(lodClamp)
+            2739:    7(fvec4) ImageSampleImplicitLod 2736 2737 MinLod 2738
+            2740:    7(fvec4) Load 2729(texel)
+            2741:    7(fvec4) FAdd 2740 2739
+                              Store 2729(texel) 2741
+            2742:         144 Load 146(s3D)
+            2743:  148(fvec3) Load 150(c3)
+            2744:    6(float) Load 2665(lodClamp)
+            2745:    7(fvec4) ImageSampleImplicitLod 2742 2743 MinLod 2744
+            2746:    7(fvec4) Load 2729(texel)
+            2747:    7(fvec4) FAdd 2746 2745
+                              Store 2729(texel) 2747
+            2748:         156 Load 158(sCube)
+            2749:  148(fvec3) Load 150(c3)
+            2750:    6(float) Load 2665(lodClamp)
+            2751:    7(fvec4) ImageSampleImplicitLod 2748 2749 MinLod 2750
+            2752:    7(fvec4) Load 2729(texel)
+            2753:    7(fvec4) FAdd 2752 2751
+                              Store 2729(texel) 2753
+            2754:         165 Load 167(s1DShadow)
+            2755:  148(fvec3) Load 150(c3)
+            2756:    6(float) Load 2665(lodClamp)
+            2757:    6(float) CompositeExtract 2755 2
+            2758:    6(float) ImageSampleDrefImplicitLod 2754 2755 2757 MinLod 2756
+            2759:    174(ptr) AccessChain 2729(texel) 173
+            2760:    6(float) Load 2759
+            2761:    6(float) FAdd 2760 2758
+            2762:    174(ptr) AccessChain 2729(texel) 173
+                              Store 2762 2761
+            2763:         180 Load 182(s2DShadow)
+            2764:  148(fvec3) Load 150(c3)
+            2765:    6(float) Load 2665(lodClamp)
+            2766:    6(float) CompositeExtract 2764 2
+            2767:    6(float) ImageSampleDrefImplicitLod 2763 2764 2766 MinLod 2765
+            2768:    174(ptr) AccessChain 2729(texel) 173
+            2769:    6(float) Load 2768
+            2770:    6(float) FAdd 2769 2767
+            2771:    174(ptr) AccessChain 2729(texel) 173
+                              Store 2771 2770
+            2772:         192 Load 194(sCubeShadow)
+            2773:    7(fvec4) Load 197(c4)
+            2774:    6(float) Load 2665(lodClamp)
+            2775:    6(float) CompositeExtract 2773 3
+            2776:    6(float) ImageSampleDrefImplicitLod 2772 2773 2775 MinLod 2774
+            2777:    174(ptr) AccessChain 2729(texel) 173
+            2778:    6(float) Load 2777
+            2779:    6(float) FAdd 2778 2776
+            2780:    174(ptr) AccessChain 2729(texel) 173
+                              Store 2780 2779
+            2781:         206 Load 208(s1DArray)
+            2782:   52(fvec2) Load 138(c2)
+            2783:    6(float) Load 2665(lodClamp)
+            2784:    7(fvec4) ImageSampleImplicitLod 2781 2782 MinLod 2783
+            2785:    7(fvec4) Load 2729(texel)
+            2786:    7(fvec4) FAdd 2785 2784
+                              Store 2729(texel) 2786
+            2787:         215 Load 217(s2DArray)
+            2788:  148(fvec3) Load 150(c3)
+            2789:    6(float) Load 2665(lodClamp)
+            2790:    7(fvec4) ImageSampleImplicitLod 2787 2788 MinLod 2789
+            2791:    7(fvec4) Load 2729(texel)
+            2792:    7(fvec4) FAdd 2791 2790
+                              Store 2729(texel) 2792
+            2793:         224 Load 226(sCubeArray)
+            2794:    7(fvec4) Load 197(c4)
+            2795:    6(float) Load 2665(lodClamp)
+            2796:    7(fvec4) ImageSampleImplicitLod 2793 2794 MinLod 2795
+            2797:    7(fvec4) Load 2729(texel)
+            2798:    7(fvec4) FAdd 2797 2796
+                              Store 2729(texel) 2798
+            2799:         233 Load 235(s1DArrayShadow)
+            2800:  148(fvec3) Load 150(c3)
+            2801:    6(float) Load 2665(lodClamp)
+            2802:    6(float) CompositeExtract 2800 2
+            2803:    6(float) ImageSampleDrefImplicitLod 2799 2800 2802 MinLod 2801
+            2804:    174(ptr) AccessChain 2729(texel) 173
+            2805:    6(float) Load 2804
+            2806:    6(float) FAdd 2805 2803
+            2807:    174(ptr) AccessChain 2729(texel) 173
+                              Store 2807 2806
+            2808:         245 Load 247(s2DArrayShadow)
+            2809:    7(fvec4) Load 197(c4)
+            2810:    6(float) Load 2665(lodClamp)
+            2811:    6(float) CompositeExtract 2809 3
+            2812:    6(float) ImageSampleDrefImplicitLod 2808 2809 2811 MinLod 2810
+            2813:    174(ptr) AccessChain 2729(texel) 173
+            2814:    6(float) Load 2813
+            2815:    6(float) FAdd 2814 2812
+            2816:    174(ptr) AccessChain 2729(texel) 173
+                              Store 2816 2815
+            2817:         278 Load 280(sCubeArrayShadow)
+            2818:    7(fvec4) Load 197(c4)
+            2819:    6(float) Load 283(compare)
+            2820:    6(float) Load 2665(lodClamp)
+            2821:    6(float) ImageSampleDrefImplicitLod 2817 2818 2819 MinLod 2820
+            2822:    174(ptr) AccessChain 2729(texel) 173
+            2823:    6(float) Load 2822
+            2824:    6(float) FAdd 2823 2821
+            2825:    174(ptr) AccessChain 2729(texel) 173
+                              Store 2825 2824
+            2826:    7(fvec4) Load 2729(texel)
+                              ReturnValue 2826
+                              FunctionEnd
+102(testSparseTextureOffsetClamp():    7(fvec4) Function None 8
+             103:             Label
+     2829(texel):     63(ptr) Variable Function
+                              Store 2829(texel) 120
+            2830:         133 Load 135(s2D)
+            2831:   52(fvec2) Load 138(c2)
+            2832:    6(float) Load 2665(lodClamp)
+            2833:1991(ResType) ImageSparseSampleImplicitLod 2830 2831 ConstOffset MinLod 452 2832
+            2834:    7(fvec4) CompositeExtract 2833 1
+                              Store 2829(texel) 2834
+            2835:     47(int) CompositeExtract 2833 0
+            2836:         144 Load 146(s3D)
+            2837:  148(fvec3) Load 150(c3)
+            2838:    6(float) Load 2665(lodClamp)
+            2839:1991(ResType) ImageSparseSampleImplicitLod 2836 2837 ConstOffset MinLod 459 2838
+            2840:    7(fvec4) CompositeExtract 2839 1
+                              Store 2829(texel) 2840
+            2841:     47(int) CompositeExtract 2839 0
+            2842:         180 Load 182(s2DShadow)
+            2843:  148(fvec3) Load 150(c3)
+            2844:    6(float) Load 2665(lodClamp)
+            2845:    174(ptr) AccessChain 2829(texel) 173
+            2846:    6(float) CompositeExtract 2843 2
+            2847:2009(ResType) ImageSparseSampleDrefImplicitLod 2842 2843 2846 ConstOffset MinLod 452 2844
+            2848:    6(float) CompositeExtract 2847 1
+                              Store 2845 2848
+            2849:     47(int) CompositeExtract 2847 0
+            2850:         215 Load 217(s2DArray)
+            2851:  148(fvec3) Load 150(c3)
+            2852:    6(float) Load 2665(lodClamp)
+            2853:1991(ResType) ImageSparseSampleImplicitLod 2850 2851 ConstOffset MinLod 452 2852
+            2854:    7(fvec4) CompositeExtract 2853 1
+                              Store 2829(texel) 2854
+            2855:     47(int) CompositeExtract 2853 0
+            2856:         245 Load 247(s2DArrayShadow)
+            2857:    7(fvec4) Load 197(c4)
+            2858:    6(float) Load 2665(lodClamp)
+            2859:    174(ptr) AccessChain 2829(texel) 173
+            2860:    6(float) CompositeExtract 2857 3
+            2861:2009(ResType) ImageSparseSampleDrefImplicitLod 2856 2857 2860 ConstOffset MinLod 452 2858
+            2862:    6(float) CompositeExtract 2861 1
+                              Store 2859 2862
+            2863:     47(int) CompositeExtract 2861 0
+            2864:    7(fvec4) Load 2829(texel)
+                              ReturnValue 2864
+                              FunctionEnd
+104(testTextureOffsetClamp():    7(fvec4) Function None 8
+             105:             Label
+     2867(texel):     63(ptr) Variable Function
+                              Store 2867(texel) 120
+            2868:         122 Load 124(s1D)
+            2869:    6(float) Load 127(c1)
+            2870:    6(float) Load 2665(lodClamp)
+            2871:    7(fvec4) ImageSampleImplicitLod 2868 2869 ConstOffset MinLod 445 2870
+            2872:    7(fvec4) Load 2867(texel)
+            2873:    7(fvec4) FAdd 2872 2871
+                              Store 2867(texel) 2873
+            2874:         133 Load 135(s2D)
+            2875:   52(fvec2) Load 138(c2)
+            2876:    6(float) Load 2665(lodClamp)
+            2877:    7(fvec4) ImageSampleImplicitLod 2874 2875 ConstOffset MinLod 452 2876
+            2878:    7(fvec4) Load 2867(texel)
+            2879:    7(fvec4) FAdd 2878 2877
+                              Store 2867(texel) 2879
+            2880:         144 Load 146(s3D)
+            2881:  148(fvec3) Load 150(c3)
+            2882:    6(float) Load 2665(lodClamp)
+            2883:    7(fvec4) ImageSampleImplicitLod 2880 2881 ConstOffset MinLod 459 2882
+            2884:    7(fvec4) Load 2867(texel)
+            2885:    7(fvec4) FAdd 2884 2883
+                              Store 2867(texel) 2885
+            2886:         165 Load 167(s1DShadow)
+            2887:  148(fvec3) Load 150(c3)
+            2888:    6(float) Load 2665(lodClamp)
+            2889:    6(float) CompositeExtract 2887 2
+            2890:    6(float) ImageSampleDrefImplicitLod 2886 2887 2889 ConstOffset MinLod 445 2888
+            2891:    174(ptr) AccessChain 2867(texel) 173
+            2892:    6(float) Load 2891
+            2893:    6(float) FAdd 2892 2890
+            2894:    174(ptr) AccessChain 2867(texel) 173
+                              Store 2894 2893
+            2895:         180 Load 182(s2DShadow)
+            2896:  148(fvec3) Load 150(c3)
+            2897:    6(float) Load 2665(lodClamp)
+            2898:    6(float) CompositeExtract 2896 2
+            2899:    6(float) ImageSampleDrefImplicitLod 2895 2896 2898 ConstOffset MinLod 452 2897
+            2900:    174(ptr) AccessChain 2867(texel) 173
+            2901:    6(float) Load 2900
+            2902:    6(float) FAdd 2901 2899
+            2903:    174(ptr) AccessChain 2867(texel) 173
+                              Store 2903 2902
+            2904:         206 Load 208(s1DArray)
+            2905:   52(fvec2) Load 138(c2)
+            2906:    6(float) Load 2665(lodClamp)
+            2907:    7(fvec4) ImageSampleImplicitLod 2904 2905 ConstOffset MinLod 445 2906
+            2908:    7(fvec4) Load 2867(texel)
+            2909:    7(fvec4) FAdd 2908 2907
+                              Store 2867(texel) 2909
+            2910:         215 Load 217(s2DArray)
+            2911:  148(fvec3) Load 150(c3)
+            2912:    6(float) Load 2665(lodClamp)
+            2913:    7(fvec4) ImageSampleImplicitLod 2910 2911 ConstOffset MinLod 452 2912
+            2914:    7(fvec4) Load 2867(texel)
+            2915:    7(fvec4) FAdd 2914 2913
+                              Store 2867(texel) 2915
+            2916:         233 Load 235(s1DArrayShadow)
+            2917:  148(fvec3) Load 150(c3)
+            2918:    6(float) Load 2665(lodClamp)
+            2919:    6(float) CompositeExtract 2917 2
+            2920:    6(float) ImageSampleDrefImplicitLod 2916 2917 2919 ConstOffset MinLod 445 2918
+            2921:    174(ptr) AccessChain 2867(texel) 173
+            2922:    6(float) Load 2921
+            2923:    6(float) FAdd 2922 2920
+            2924:    174(ptr) AccessChain 2867(texel) 173
+                              Store 2924 2923
+            2925:         245 Load 247(s2DArrayShadow)
+            2926:    7(fvec4) Load 197(c4)
+            2927:    6(float) Load 2665(lodClamp)
+            2928:    6(float) CompositeExtract 2926 3
+            2929:    6(float) ImageSampleDrefImplicitLod 2925 2926 2928 ConstOffset MinLod 452 2927
+            2930:    174(ptr) AccessChain 2867(texel) 173
+            2931:    6(float) Load 2930
+            2932:    6(float) FAdd 2931 2929
+            2933:    174(ptr) AccessChain 2867(texel) 173
+                              Store 2933 2932
+            2934:    7(fvec4) Load 2867(texel)
+                              ReturnValue 2934
+                              FunctionEnd
+106(testSparseTextureGradClamp():    7(fvec4) Function None 8
+             107:             Label
+     2937(texel):     63(ptr) Variable Function
+                              Store 2937(texel) 120
+            2938:         133 Load 135(s2D)
+            2939:   52(fvec2) Load 138(c2)
+            2940:   52(fvec2) Load 874(dPdxy2)
+            2941:   52(fvec2) Load 874(dPdxy2)
+            2942:    6(float) Load 2665(lodClamp)
+            2943:1991(ResType) ImageSparseSampleExplicitLod 2938 2939 Grad MinLod 2940 2941 2942
+            2944:    7(fvec4) CompositeExtract 2943 1
+                              Store 2937(texel) 2944
+            2945:     47(int) CompositeExtract 2943 0
+            2946:         144 Load 146(s3D)
+            2947:  148(fvec3) Load 150(c3)
+            2948:  148(fvec3) Load 882(dPdxy3)
+            2949:  148(fvec3) Load 882(dPdxy3)
+            2950:    6(float) Load 2665(lodClamp)
+            2951:1991(ResType) ImageSparseSampleExplicitLod 2946 2947 Grad MinLod 2948 2949 2950
+            2952:    7(fvec4) CompositeExtract 2951 1
+                              Store 2937(texel) 2952
+            2953:     47(int) CompositeExtract 2951 0
+            2954:         156 Load 158(sCube)
+            2955:  148(fvec3) Load 150(c3)
+            2956:  148(fvec3) Load 882(dPdxy3)
+            2957:  148(fvec3) Load 882(dPdxy3)
+            2958:    6(float) Load 2665(lodClamp)
+            2959:1991(ResType) ImageSparseSampleExplicitLod 2954 2955 Grad MinLod 2956 2957 2958
+            2960:    7(fvec4) CompositeExtract 2959 1
+                              Store 2937(texel) 2960
+            2961:     47(int) CompositeExtract 2959 0
+            2962:         180 Load 182(s2DShadow)
+            2963:  148(fvec3) Load 150(c3)
+            2964:   52(fvec2) Load 874(dPdxy2)
+            2965:   52(fvec2) Load 874(dPdxy2)
+            2966:    6(float) Load 2665(lodClamp)
+            2967:    174(ptr) AccessChain 2937(texel) 173
+            2968:    6(float) CompositeExtract 2963 2
+            2969:2009(ResType) ImageSparseSampleDrefExplicitLod 2962 2963 2968 Grad MinLod 2964 2965 2966
+            2970:    6(float) CompositeExtract 2969 1
+                              Store 2967 2970
+            2971:     47(int) CompositeExtract 2969 0
+            2972:         192 Load 194(sCubeShadow)
+            2973:    7(fvec4) Load 197(c4)
+            2974:  148(fvec3) Load 882(dPdxy3)
+            2975:  148(fvec3) Load 882(dPdxy3)
+            2976:    6(float) Load 2665(lodClamp)
+            2977:    174(ptr) AccessChain 2937(texel) 173
+            2978:    6(float) CompositeExtract 2973 3
+            2979:2009(ResType) ImageSparseSampleDrefExplicitLod 2972 2973 2978 Grad MinLod 2974 2975 2976
+            2980:    6(float) CompositeExtract 2979 1
+                              Store 2977 2980
+            2981:     47(int) CompositeExtract 2979 0
+            2982:         215 Load 217(s2DArray)
+            2983:  148(fvec3) Load 150(c3)
+            2984:   52(fvec2) Load 874(dPdxy2)
+            2985:   52(fvec2) Load 874(dPdxy2)
+            2986:    6(float) Load 2665(lodClamp)
+            2987:1991(ResType) ImageSparseSampleExplicitLod 2982 2983 Grad MinLod 2984 2985 2986
+            2988:    7(fvec4) CompositeExtract 2987 1
+                              Store 2937(texel) 2988
+            2989:     47(int) CompositeExtract 2987 0
+            2990:         245 Load 247(s2DArrayShadow)
+            2991:    7(fvec4) Load 197(c4)
+            2992:   52(fvec2) Load 874(dPdxy2)
+            2993:   52(fvec2) Load 874(dPdxy2)
+            2994:    6(float) Load 2665(lodClamp)
+            2995:    174(ptr) AccessChain 2937(texel) 173
+            2996:    6(float) CompositeExtract 2991 3
+            2997:2009(ResType) ImageSparseSampleDrefExplicitLod 2990 2991 2996 Grad MinLod 2992 2993 2994
+            2998:    6(float) CompositeExtract 2997 1
+                              Store 2995 2998
+            2999:     47(int) CompositeExtract 2997 0
+            3000:         224 Load 226(sCubeArray)
+            3001:    7(fvec4) Load 197(c4)
+            3002:  148(fvec3) Load 882(dPdxy3)
+            3003:  148(fvec3) Load 882(dPdxy3)
+            3004:    6(float) Load 2665(lodClamp)
+            3005:1991(ResType) ImageSparseSampleExplicitLod 3000 3001 Grad MinLod 3002 3003 3004
+            3006:    7(fvec4) CompositeExtract 3005 1
+                              Store 2937(texel) 3006
+            3007:     47(int) CompositeExtract 3005 0
+            3008:    7(fvec4) Load 2937(texel)
+                              ReturnValue 3008
+                              FunctionEnd
+108(testTextureGradClamp():    7(fvec4) Function None 8
+             109:             Label
+     3011(texel):     63(ptr) Variable Function
+                              Store 3011(texel) 120
+            3012:         122 Load 124(s1D)
+            3013:    6(float) Load 127(c1)
+            3014:    6(float) Load 866(dPdxy1)
+            3015:    6(float) Load 866(dPdxy1)
+            3016:    6(float) Load 2665(lodClamp)
+            3017:    7(fvec4) ImageSampleExplicitLod 3012 3013 Grad MinLod 3014 3015 3016
+            3018:    7(fvec4) Load 3011(texel)
+            3019:    7(fvec4) FAdd 3018 3017
+                              Store 3011(texel) 3019
+            3020:         133 Load 135(s2D)
+            3021:   52(fvec2) Load 138(c2)
+            3022:   52(fvec2) Load 874(dPdxy2)
+            3023:   52(fvec2) Load 874(dPdxy2)
+            3024:    6(float) Load 2665(lodClamp)
+            3025:    7(fvec4) ImageSampleExplicitLod 3020 3021 Grad MinLod 3022 3023 3024
+            3026:    7(fvec4) Load 3011(texel)
+            3027:    7(fvec4) FAdd 3026 3025
+                              Store 3011(texel) 3027
+            3028:         144 Load 146(s3D)
+            3029:  148(fvec3) Load 150(c3)
+            3030:  148(fvec3) Load 882(dPdxy3)
+            3031:  148(fvec3) Load 882(dPdxy3)
+            3032:    6(float) Load 2665(lodClamp)
+            3033:    7(fvec4) ImageSampleExplicitLod 3028 3029 Grad MinLod 3030 3031 3032
+            3034:    7(fvec4) Load 3011(texel)
+            3035:    7(fvec4) FAdd 3034 3033
+                              Store 3011(texel) 3035
+            3036:         156 Load 158(sCube)
+            3037:  148(fvec3) Load 150(c3)
+            3038:  148(fvec3) Load 882(dPdxy3)
+            3039:  148(fvec3) Load 882(dPdxy3)
+            3040:    6(float) Load 2665(lodClamp)
+            3041:    7(fvec4) ImageSampleExplicitLod 3036 3037 Grad MinLod 3038 3039 3040
+            3042:    7(fvec4) Load 3011(texel)
+            3043:    7(fvec4) FAdd 3042 3041
+                              Store 3011(texel) 3043
+            3044:         165 Load 167(s1DShadow)
+            3045:  148(fvec3) Load 150(c3)
+            3046:    6(float) Load 866(dPdxy1)
+            3047:    6(float) Load 866(dPdxy1)
+            3048:    6(float) Load 2665(lodClamp)
+            3049:    6(float) CompositeExtract 3045 2
+            3050:    6(float) ImageSampleDrefExplicitLod 3044 3045 3049 Grad MinLod 3046 3047 3048
+            3051:    174(ptr) AccessChain 3011(texel) 173
+            3052:    6(float) Load 3051
+            3053:    6(float) FAdd 3052 3050
+            3054:    174(ptr) AccessChain 3011(texel) 173
+                              Store 3054 3053
+            3055:         180 Load 182(s2DShadow)
+            3056:  148(fvec3) Load 150(c3)
+            3057:   52(fvec2) Load 874(dPdxy2)
+            3058:   52(fvec2) Load 874(dPdxy2)
+            3059:    6(float) Load 2665(lodClamp)
+            3060:    6(float) CompositeExtract 3056 2
+            3061:    6(float) ImageSampleDrefExplicitLod 3055 3056 3060 Grad MinLod 3057 3058 3059
+            3062:    174(ptr) AccessChain 3011(texel) 173
+            3063:    6(float) Load 3062
+            3064:    6(float) FAdd 3063 3061
+            3065:    174(ptr) AccessChain 3011(texel) 173
+                              Store 3065 3064
+            3066:         192 Load 194(sCubeShadow)
+            3067:    7(fvec4) Load 197(c4)
+            3068:  148(fvec3) Load 882(dPdxy3)
+            3069:  148(fvec3) Load 882(dPdxy3)
+            3070:    6(float) Load 2665(lodClamp)
+            3071:    6(float) CompositeExtract 3067 3
+            3072:    6(float) ImageSampleDrefExplicitLod 3066 3067 3071 Grad MinLod 3068 3069 3070
+            3073:    174(ptr) AccessChain 3011(texel) 173
+            3074:    6(float) Load 3073
+            3075:    6(float) FAdd 3074 3072
+            3076:    174(ptr) AccessChain 3011(texel) 173
+                              Store 3076 3075
+            3077:         206 Load 208(s1DArray)
+            3078:   52(fvec2) Load 138(c2)
+            3079:    6(float) Load 866(dPdxy1)
+            3080:    6(float) Load 866(dPdxy1)
+            3081:    6(float) Load 2665(lodClamp)
+            3082:    7(fvec4) ImageSampleExplicitLod 3077 3078 Grad MinLod 3079 3080 3081
+            3083:    7(fvec4) Load 3011(texel)
+            3084:    7(fvec4) FAdd 3083 3082
+                              Store 3011(texel) 3084
+            3085:         215 Load 217(s2DArray)
+            3086:  148(fvec3) Load 150(c3)
+            3087:   52(fvec2) Load 874(dPdxy2)
+            3088:   52(fvec2) Load 874(dPdxy2)
+            3089:    6(float) Load 2665(lodClamp)
+            3090:    7(fvec4) ImageSampleExplicitLod 3085 3086 Grad MinLod 3087 3088 3089
+            3091:    7(fvec4) Load 3011(texel)
+            3092:    7(fvec4) FAdd 3091 3090
+                              Store 3011(texel) 3092
+            3093:         233 Load 235(s1DArrayShadow)
+            3094:  148(fvec3) Load 150(c3)
+            3095:    6(float) Load 866(dPdxy1)
+            3096:    6(float) Load 866(dPdxy1)
+            3097:    6(float) Load 2665(lodClamp)
+            3098:    6(float) CompositeExtract 3094 2
+            3099:    6(float) ImageSampleDrefExplicitLod 3093 3094 3098 Grad MinLod 3095 3096 3097
+            3100:    174(ptr) AccessChain 3011(texel) 173
+            3101:    6(float) Load 3100
+            3102:    6(float) FAdd 3101 3099
+            3103:    174(ptr) AccessChain 3011(texel) 173
+                              Store 3103 3102
+            3104:         245 Load 247(s2DArrayShadow)
+            3105:    7(fvec4) Load 197(c4)
+            3106:   52(fvec2) Load 874(dPdxy2)
+            3107:   52(fvec2) Load 874(dPdxy2)
+            3108:    6(float) Load 2665(lodClamp)
+            3109:    6(float) CompositeExtract 3105 3
+            3110:    6(float) ImageSampleDrefExplicitLod 3104 3105 3109 Grad MinLod 3106 3107 3108
+            3111:    174(ptr) AccessChain 3011(texel) 173
+            3112:    6(float) Load 3111
+            3113:    6(float) FAdd 3112 3110
+            3114:    174(ptr) AccessChain 3011(texel) 173
+                              Store 3114 3113
+            3115:         224 Load 226(sCubeArray)
+            3116:    7(fvec4) Load 197(c4)
+            3117:  148(fvec3) Load 882(dPdxy3)
+            3118:  148(fvec3) Load 882(dPdxy3)
+            3119:    6(float) Load 2665(lodClamp)
+            3120:    7(fvec4) ImageSampleExplicitLod 3115 3116 Grad MinLod 3117 3118 3119
+            3121:    7(fvec4) Load 3011(texel)
+            3122:    7(fvec4) FAdd 3121 3120
+                              Store 3011(texel) 3122
+            3123:    7(fvec4) Load 3011(texel)
+                              ReturnValue 3123
+                              FunctionEnd
+110(testSparseTextureGradOffsetClamp():    7(fvec4) Function None 8
+             111:             Label
+     3126(texel):     63(ptr) Variable Function
+                              Store 3126(texel) 120
+            3127:         133 Load 135(s2D)
+            3128:   52(fvec2) Load 138(c2)
+            3129:   52(fvec2) Load 874(dPdxy2)
+            3130:   52(fvec2) Load 874(dPdxy2)
+            3131:    6(float) Load 2665(lodClamp)
+            3132:1991(ResType) ImageSparseSampleExplicitLod 3127 3128 Grad ConstOffset MinLod 3129 3130 452 3131
+            3133:    7(fvec4) CompositeExtract 3132 1
+                              Store 3126(texel) 3133
+            3134:     47(int) CompositeExtract 3132 0
+            3135:         144 Load 146(s3D)
+            3136:  148(fvec3) Load 150(c3)
+            3137:  148(fvec3) Load 882(dPdxy3)
+            3138:  148(fvec3) Load 882(dPdxy3)
+            3139:    6(float) Load 2665(lodClamp)
+            3140:1991(ResType) ImageSparseSampleExplicitLod 3135 3136 Grad ConstOffset MinLod 3137 3138 459 3139
+            3141:    7(fvec4) CompositeExtract 3140 1
+                              Store 3126(texel) 3141
+            3142:     47(int) CompositeExtract 3140 0
+            3143:         180 Load 182(s2DShadow)
+            3144:  148(fvec3) Load 150(c3)
+            3145:   52(fvec2) Load 874(dPdxy2)
+            3146:   52(fvec2) Load 874(dPdxy2)
+            3147:    6(float) Load 2665(lodClamp)
+            3148:    174(ptr) AccessChain 3126(texel) 173
+            3149:    6(float) CompositeExtract 3144 2
+            3150:2009(ResType) ImageSparseSampleDrefExplicitLod 3143 3144 3149 Grad ConstOffset MinLod 3145 3146 452 3147
+            3151:    6(float) CompositeExtract 3150 1
+                              Store 3148 3151
+            3152:     47(int) CompositeExtract 3150 0
+            3153:         215 Load 217(s2DArray)
+            3154:  148(fvec3) Load 150(c3)
+            3155:   52(fvec2) Load 874(dPdxy2)
+            3156:   52(fvec2) Load 874(dPdxy2)
+            3157:    6(float) Load 2665(lodClamp)
+            3158:1991(ResType) ImageSparseSampleExplicitLod 3153 3154 Grad ConstOffset MinLod 3155 3156 452 3157
+            3159:    7(fvec4) CompositeExtract 3158 1
+                              Store 3126(texel) 3159
+            3160:     47(int) CompositeExtract 3158 0
+            3161:         245 Load 247(s2DArrayShadow)
+            3162:    7(fvec4) Load 197(c4)
+            3163:   52(fvec2) Load 874(dPdxy2)
+            3164:   52(fvec2) Load 874(dPdxy2)
+            3165:    6(float) Load 2665(lodClamp)
+            3166:    174(ptr) AccessChain 3126(texel) 173
+            3167:    6(float) CompositeExtract 3162 3
+            3168:2009(ResType) ImageSparseSampleDrefExplicitLod 3161 3162 3167 Grad ConstOffset MinLod 3163 3164 452 3165
+            3169:    6(float) CompositeExtract 3168 1
+                              Store 3166 3169
+            3170:     47(int) CompositeExtract 3168 0
+            3171:    7(fvec4) Load 3126(texel)
+                              ReturnValue 3171
+                              FunctionEnd
+112(testTextureGradOffsetClamp():    7(fvec4) Function None 8
+             113:             Label
+     3174(texel):     63(ptr) Variable Function
+                              Store 3174(texel) 120
+            3175:         122 Load 124(s1D)
+            3176:    6(float) Load 127(c1)
+            3177:    6(float) Load 866(dPdxy1)
+            3178:    6(float) Load 866(dPdxy1)
+            3179:    6(float) Load 2665(lodClamp)
+            3180:    7(fvec4) ImageSampleExplicitLod 3175 3176 Grad ConstOffset MinLod 3177 3178 445 3179
+            3181:    7(fvec4) Load 3174(texel)
+            3182:    7(fvec4) FAdd 3181 3180
+                              Store 3174(texel) 3182
+            3183:         133 Load 135(s2D)
+            3184:   52(fvec2) Load 138(c2)
+            3185:   52(fvec2) Load 874(dPdxy2)
+            3186:   52(fvec2) Load 874(dPdxy2)
+            3187:    6(float) Load 2665(lodClamp)
+            3188:    7(fvec4) ImageSampleExplicitLod 3183 3184 Grad ConstOffset MinLod 3185 3186 452 3187
+            3189:    7(fvec4) Load 3174(texel)
+            3190:    7(fvec4) FAdd 3189 3188
+                              Store 3174(texel) 3190
+            3191:         144 Load 146(s3D)
+            3192:  148(fvec3) Load 150(c3)
+            3193:  148(fvec3) Load 882(dPdxy3)
+            3194:  148(fvec3) Load 882(dPdxy3)
+            3195:    6(float) Load 2665(lodClamp)
+            3196:    7(fvec4) ImageSampleExplicitLod 3191 3192 Grad ConstOffset MinLod 3193 3194 459 3195
+            3197:    7(fvec4) Load 3174(texel)
+            3198:    7(fvec4) FAdd 3197 3196
+                              Store 3174(texel) 3198
+            3199:         165 Load 167(s1DShadow)
+            3200:  148(fvec3) Load 150(c3)
+            3201:    6(float) Load 866(dPdxy1)
+            3202:    6(float) Load 866(dPdxy1)
+            3203:    6(float) Load 2665(lodClamp)
+            3204:    6(float) CompositeExtract 3200 2
+            3205:    6(float) ImageSampleDrefExplicitLod 3199 3200 3204 Grad ConstOffset MinLod 3201 3202 445 3203
+            3206:    174(ptr) AccessChain 3174(texel) 173
+            3207:    6(float) Load 3206
+            3208:    6(float) FAdd 3207 3205
+            3209:    174(ptr) AccessChain 3174(texel) 173
+                              Store 3209 3208
+            3210:         180 Load 182(s2DShadow)
+            3211:  148(fvec3) Load 150(c3)
+            3212:   52(fvec2) Load 874(dPdxy2)
+            3213:   52(fvec2) Load 874(dPdxy2)
+            3214:    6(float) Load 2665(lodClamp)
+            3215:    6(float) CompositeExtract 3211 2
+            3216:    6(float) ImageSampleDrefExplicitLod 3210 3211 3215 Grad ConstOffset MinLod 3212 3213 452 3214
+            3217:    174(ptr) AccessChain 3174(texel) 173
+            3218:    6(float) Load 3217
+            3219:    6(float) FAdd 3218 3216
+            3220:    174(ptr) AccessChain 3174(texel) 173
+                              Store 3220 3219
+            3221:         206 Load 208(s1DArray)
+            3222:   52(fvec2) Load 138(c2)
+            3223:    6(float) Load 866(dPdxy1)
+            3224:    6(float) Load 866(dPdxy1)
+            3225:    6(float) Load 2665(lodClamp)
+            3226:    7(fvec4) ImageSampleExplicitLod 3221 3222 Grad ConstOffset MinLod 3223 3224 445 3225
+            3227:    7(fvec4) Load 3174(texel)
+            3228:    7(fvec4) FAdd 3227 3226
+                              Store 3174(texel) 3228
+            3229:         215 Load 217(s2DArray)
+            3230:  148(fvec3) Load 150(c3)
+            3231:   52(fvec2) Load 874(dPdxy2)
+            3232:   52(fvec2) Load 874(dPdxy2)
+            3233:    6(float) Load 2665(lodClamp)
+            3234:    7(fvec4) ImageSampleExplicitLod 3229 3230 Grad ConstOffset MinLod 3231 3232 452 3233
+            3235:    7(fvec4) Load 3174(texel)
+            3236:    7(fvec4) FAdd 3235 3234
+                              Store 3174(texel) 3236
+            3237:         233 Load 235(s1DArrayShadow)
+            3238:  148(fvec3) Load 150(c3)
+            3239:    6(float) Load 866(dPdxy1)
+            3240:    6(float) Load 866(dPdxy1)
+            3241:    6(float) Load 2665(lodClamp)
+            3242:    6(float) CompositeExtract 3238 2
+            3243:    6(float) ImageSampleDrefExplicitLod 3237 3238 3242 Grad ConstOffset MinLod 3239 3240 445 3241
+            3244:    174(ptr) AccessChain 3174(texel) 173
+            3245:    6(float) Load 3244
+            3246:    6(float) FAdd 3245 3243
+            3247:    174(ptr) AccessChain 3174(texel) 173
+                              Store 3247 3246
+            3248:         245 Load 247(s2DArrayShadow)
+            3249:    7(fvec4) Load 197(c4)
+            3250:   52(fvec2) Load 874(dPdxy2)
+            3251:   52(fvec2) Load 874(dPdxy2)
+            3252:    6(float) Load 2665(lodClamp)
+            3253:    6(float) CompositeExtract 3249 3
+            3254:    6(float) ImageSampleDrefExplicitLod 3248 3249 3253 Grad ConstOffset MinLod 3250 3251 452 3252
+            3255:    174(ptr) AccessChain 3174(texel) 173
+            3256:    6(float) Load 3255
+            3257:    6(float) FAdd 3256 3254
+            3258:    174(ptr) AccessChain 3174(texel) 173
+                              Store 3258 3257
+            3259:    7(fvec4) Load 3174(texel)
+                              ReturnValue 3259
+                              FunctionEnd
+114(testCombinedTextureSampler():    7(fvec4) Function None 8
+             115:             Label
+     3262(texel):     63(ptr) Variable Function
+                              Store 3262(texel) 120
+            3265:         121 Load 3264(t1D)
+            3269:        3266 Load 3268(s)
+            3270:         122 SampledImage 3265 3269
+            3271:    6(float) Load 127(c1)
+            3272:    7(fvec4) ImageSampleImplicitLod 3270 3271
+            3273:    7(fvec4) Load 3262(texel)
+            3274:    7(fvec4) FAdd 3273 3272
+                              Store 3262(texel) 3274
+            3277:         132 Load 3276(t2D)
+            3278:        3266 Load 3268(s)
+            3279:         133 SampledImage 3277 3278
+            3280:   52(fvec2) Load 138(c2)
+            3281:    7(fvec4) ImageSampleImplicitLod 3279 3280
+            3282:    7(fvec4) Load 3262(texel)
+            3283:    7(fvec4) FAdd 3282 3281
+                              Store 3262(texel) 3283
+            3286:         143 Load 3285(t3D)
+            3287:        3266 Load 3268(s)
+            3288:         144 SampledImage 3286 3287
+            3289:  148(fvec3) Load 150(c3)
+            3290:    7(fvec4) ImageSampleImplicitLod 3288 3289
+            3291:    7(fvec4) Load 3262(texel)
+            3292:    7(fvec4) FAdd 3291 3290
+                              Store 3262(texel) 3292
+            3295:         155 Load 3294(tCube)
+            3296:        3266 Load 3268(s)
+            3297:         156 SampledImage 3295 3296
+            3298:  148(fvec3) Load 150(c3)
+            3299:    7(fvec4) ImageSampleImplicitLod 3297 3298
+            3300:    7(fvec4) Load 3262(texel)
+            3301:    7(fvec4) FAdd 3300 3299
+                              Store 3262(texel) 3301
+            3302:         121 Load 3264(t1D)
+            3304:        3266 Load 3303(sShadow)
+            3305:         165 SampledImage 3302 3304
+            3306:  148(fvec3) Load 150(c3)
+            3307:    6(float) CompositeExtract 3306 2
+            3308:    6(float) ImageSampleDrefImplicitLod 3305 3306 3307
+            3309:    174(ptr) AccessChain 3262(texel) 173
+            3310:    6(float) Load 3309
+            3311:    6(float) FAdd 3310 3308
+            3312:    174(ptr) AccessChain 3262(texel) 173
+                              Store 3312 3311
+            3313:         132 Load 3276(t2D)
+            3314:        3266 Load 3303(sShadow)
+            3315:         180 SampledImage 3313 3314
+            3316:  148(fvec3) Load 150(c3)
+            3317:    6(float) CompositeExtract 3316 2
+            3318:    6(float) ImageSampleDrefImplicitLod 3315 3316 3317
+            3319:    174(ptr) AccessChain 3262(texel) 173
+            3320:    6(float) Load 3319
+            3321:    6(float) FAdd 3320 3318
+            3322:    174(ptr) AccessChain 3262(texel) 173
+                              Store 3322 3321
+            3323:         155 Load 3294(tCube)
+            3324:        3266 Load 3303(sShadow)
+            3325:         192 SampledImage 3323 3324
+            3326:    7(fvec4) Load 197(c4)
+            3327:    6(float) CompositeExtract 3326 3
+            3328:    6(float) ImageSampleDrefImplicitLod 3325 3326 3327
+            3329:    174(ptr) AccessChain 3262(texel) 173
+            3330:    6(float) Load 3329
+            3331:    6(float) FAdd 3330 3328
+            3332:    174(ptr) AccessChain 3262(texel) 173
+                              Store 3332 3331
+            3335:         205 Load 3334(t1DArray)
+            3336:        3266 Load 3268(s)
+            3337:         206 SampledImage 3335 3336
+            3338:   52(fvec2) Load 138(c2)
+            3339:    7(fvec4) ImageSampleImplicitLod 3337 3338
+            3340:    7(fvec4) Load 3262(texel)
+            3341:    7(fvec4) FAdd 3340 3339
+                              Store 3262(texel) 3341
+            3344:         214 Load 3343(t2DArray)
+            3345:        3266 Load 3268(s)
+            3346:         215 SampledImage 3344 3345
+            3347:  148(fvec3) Load 150(c3)
+            3348:    7(fvec4) ImageSampleImplicitLod 3346 3347
+            3349:    7(fvec4) Load 3262(texel)
+            3350:    7(fvec4) FAdd 3349 3348
+                              Store 3262(texel) 3350
+            3353:         223 Load 3352(tCubeArray)
+            3354:        3266 Load 3268(s)
+            3355:         224 SampledImage 3353 3354
+            3356:    7(fvec4) Load 197(c4)
+            3357:    7(fvec4) ImageSampleImplicitLod 3355 3356
+            3358:    7(fvec4) Load 3262(texel)
+            3359:    7(fvec4) FAdd 3358 3357
+                              Store 3262(texel) 3359
+            3360:         205 Load 3334(t1DArray)
+            3361:        3266 Load 3303(sShadow)
+            3362:         233 SampledImage 3360 3361
+            3363:  148(fvec3) Load 150(c3)
+            3364:    6(float) CompositeExtract 3363 2
+            3365:    6(float) ImageSampleDrefImplicitLod 3362 3363 3364
+            3366:    174(ptr) AccessChain 3262(texel) 173
+            3367:    6(float) Load 3366
+            3368:    6(float) FAdd 3367 3365
+            3369:    174(ptr) AccessChain 3262(texel) 173
+                              Store 3369 3368
+            3370:         214 Load 3343(t2DArray)
+            3371:        3266 Load 3303(sShadow)
+            3372:         245 SampledImage 3370 3371
+            3373:    7(fvec4) Load 197(c4)
+            3374:    6(float) CompositeExtract 3373 3
+            3375:    6(float) ImageSampleDrefImplicitLod 3372 3373 3374
+            3376:    174(ptr) AccessChain 3262(texel) 173
+            3377:    6(float) Load 3376
+            3378:    6(float) FAdd 3377 3375
+            3379:    174(ptr) AccessChain 3262(texel) 173
+                              Store 3379 3378
+            3382:         256 Load 3381(t2DRect)
+            3383:        3266 Load 3268(s)
+            3384:         257 SampledImage 3382 3383
+            3385:   52(fvec2) Load 138(c2)
+            3386:    7(fvec4) ImageSampleImplicitLod 3384 3385
+            3387:    7(fvec4) Load 3262(texel)
+            3388:    7(fvec4) FAdd 3387 3386
+                              Store 3262(texel) 3388
+            3389:         256 Load 3381(t2DRect)
+            3390:        3266 Load 3303(sShadow)
+            3391:         266 SampledImage 3389 3390
+            3392:  148(fvec3) Load 150(c3)
+            3393:    6(float) CompositeExtract 3392 2
+            3394:    6(float) ImageSampleDrefImplicitLod 3391 3392 3393
+            3395:    174(ptr) AccessChain 3262(texel) 173
+            3396:    6(float) Load 3395
+            3397:    6(float) FAdd 3396 3394
+            3398:    174(ptr) AccessChain 3262(texel) 173
+                              Store 3398 3397
+            3399:         223 Load 3352(tCubeArray)
+            3400:        3266 Load 3303(sShadow)
+            3401:         278 SampledImage 3399 3400
+            3402:    7(fvec4) Load 197(c4)
+            3403:    6(float) Load 283(compare)
+            3404:    6(float) ImageSampleDrefImplicitLod 3401 3402 3403
+            3405:    174(ptr) AccessChain 3262(texel) 173
+            3406:    6(float) Load 3405
+            3407:    6(float) FAdd 3406 3404
+            3408:    174(ptr) AccessChain 3262(texel) 173
+                              Store 3408 3407
+            3409:    7(fvec4) Load 3262(texel)
+                              ReturnValue 3409
+                              FunctionEnd
+116(testSubpassLoad():    7(fvec4) Function None 8
+             117:             Label
+            3415:        3412 Load 3414(subpass)
+            3417:    7(fvec4) ImageRead 3415 3416
+            3421:        3418 Load 3420(subpassMS)
+            3422:    7(fvec4) ImageRead 3421 3416 Sample 799
+            3423:    7(fvec4) FAdd 3417 3422
+                              ReturnValue 3423
+                              FunctionEnd

+ 941 - 0
Test/spv.floatFetch.frag

@@ -0,0 +1,941 @@
+#version 450 core
+
+#extension GL_ARB_sparse_texture2: enable
+#extension GL_ARB_sparse_texture_clamp: enable
+#extension GL_AMD_texture_gather_bias_lod: enable
+
+layout(set = 0, binding =  0) uniform sampler1D            s1D;
+layout(set = 0, binding =  1) uniform sampler2D            s2D;
+layout(set = 0, binding =  2) uniform sampler3D            s3D;
+layout(set = 0, binding =  3) uniform sampler2DRect        s2DRect;
+layout(set = 0, binding =  4) uniform samplerCube          sCube;
+layout(set = 0, binding =  5) uniform samplerBuffer        sBuffer;
+layout(set = 0, binding =  6) uniform sampler2DMS          s2DMS;
+layout(set = 0, binding =  7) uniform sampler1DArray       s1DArray;
+layout(set = 0, binding =  8) uniform sampler2DArray       s2DArray;
+layout(set = 0, binding =  9) uniform samplerCubeArray     sCubeArray;
+layout(set = 0, binding = 10) uniform sampler2DMSArray     s2DMSArray;
+
+layout(set = 0, binding = 11) uniform sampler1DShadow          s1DShadow;
+layout(set = 0, binding = 12) uniform sampler2DShadow          s2DShadow;
+layout(set = 0, binding = 13) uniform sampler2DRectShadow      s2DRectShadow;
+layout(set = 0, binding = 14) uniform samplerCubeShadow        sCubeShadow;
+layout(set = 0, binding = 15) uniform sampler1DArrayShadow     s1DArrayShadow;
+layout(set = 0, binding = 16) uniform sampler2DArrayShadow     s2DArrayShadow;
+layout(set = 0, binding = 17) uniform samplerCubeArrayShadow   sCubeArrayShadow;
+
+layout(set = 1, binding =  0) layout(rgba16f) uniform image1D          i1D;
+layout(set = 1, binding =  1) layout(rgba16f) uniform image2D          i2D;
+layout(set = 1, binding =  2) layout(rgba16f) uniform image3D          i3D;
+layout(set = 1, binding =  3) layout(rgba16f) uniform image2DRect      i2DRect;
+layout(set = 1, binding =  4) layout(rgba16f) uniform imageCube        iCube;
+layout(set = 1, binding =  5) layout(rgba16f) uniform image1DArray     i1DArray;
+layout(set = 1, binding =  6) layout(rgba16f) uniform image2DArray     i2DArray;
+layout(set = 1, binding =  7) layout(rgba16f) uniform imageCubeArray   iCubeArray;
+layout(set = 1, binding =  8) layout(rgba16f) uniform imageBuffer      iBuffer;
+layout(set = 1, binding =  9) layout(rgba16f) uniform image2DMS        i2DMS;
+layout(set = 1, binding = 10) layout(rgba16f) uniform image2DMSArray   i2DMSArray;
+
+layout(set = 2, binding =  0) uniform texture1D           t1D;
+layout(set = 2, binding =  1) uniform texture2D           t2D;
+layout(set = 2, binding =  2) uniform texture3D           t3D;
+layout(set = 2, binding =  3) uniform texture2DRect       t2DRect;
+layout(set = 2, binding =  4) uniform textureCube         tCube;
+layout(set = 2, binding =  5) uniform texture1DArray      t1DArray;
+layout(set = 2, binding =  6) uniform texture2DArray      t2DArray;
+layout(set = 2, binding =  7) uniform textureCubeArray    tCubeArray;
+layout(set = 2, binding =  8) uniform textureBuffer       tBuffer;
+layout(set = 2, binding =  9) uniform texture2DMS         t2DMS;
+layout(set = 2, binding = 10) uniform texture2DMSArray    t2DMSArray;
+
+layout(set = 2, binding = 11) uniform sampler s;
+layout(set = 2, binding = 12) uniform samplerShadow sShadow;
+
+layout(set = 3, binding = 0, input_attachment_index = 0) uniform subpassInput   subpass;
+layout(set = 3, binding = 1, input_attachment_index = 0) uniform subpassInputMS subpassMS;
+
+layout(location =  0) in float c1;
+layout(location =  1) in vec2  c2;
+layout(location =  2) in vec3  c3;
+layout(location =  3) in vec4  c4;
+
+layout(location =  4) in float compare;
+layout(location =  5) in float lod;
+layout(location =  6) in float bias;
+layout(location =  7) in float lodClamp;
+
+layout(location =  8) in float dPdxy1;
+layout(location =  9) in vec2  dPdxy2;
+layout(location = 10) in vec3  dPdxy3;
+
+const int   offset1 = 1;
+const ivec2 offset2 = ivec2(1);
+const ivec3 offset3 = ivec3(1);
+const ivec2 offsets[4] = { offset2, offset2, offset2, offset2 };
+
+layout(location = 0) out vec4 fragColor;
+
+vec4 testTexture()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += texture(s1D, c1);
+    texel   += texture(s2D, c2);
+    texel   += texture(s3D, c3);
+    texel   += texture(sCube, c3);
+    texel.x += texture(s1DShadow, c3);
+    texel.x += texture(s2DShadow, c3);
+    texel.x += texture(sCubeShadow, c4);
+    texel   += texture(s1DArray, c2);
+    texel   += texture(s2DArray, c3);
+    texel   += texture(sCubeArray, c4);
+    texel.x += texture(s1DArrayShadow, c3);
+    texel.x += texture(s2DArrayShadow, c4);
+    texel   += texture(s2DRect, c2);
+    texel.x += texture(s2DRectShadow, c3);
+    texel.x += texture(sCubeArrayShadow, c4, compare);
+
+    return texel;
+}
+
+vec4 testTextureProj()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureProj(s1D, c2);
+    texel   += textureProj(s1D, c4);
+    texel   += textureProj(s2D, c3);
+    texel   += textureProj(s2D, c4);
+    texel   += textureProj(s3D, c4);
+    texel.x += textureProj(s1DShadow, c4);
+    texel.x += textureProj(s2DShadow, c4);
+    texel   += textureProj(s2DRect, c3);
+    texel   += textureProj(s2DRect, c4);
+    texel.x += textureProj(s2DRectShadow, c4);
+
+    return texel;
+}
+
+vec4 testTextureLod()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureLod(s1D, c1, lod);
+    texel   += textureLod(s2D, c2, lod);
+    texel   += textureLod(s3D, c3, lod);
+    texel   += textureLod(sCube, c3, lod);
+    texel.x += textureLod(s1DShadow, c3, lod);
+    texel.x += textureLod(s2DShadow, c3, lod);
+    texel   += textureLod(s1DArray, c2, lod);
+    texel   += textureLod(s2DArray, c3, lod);
+    texel.x += textureLod(s1DArrayShadow, c3, lod);
+    texel   += textureLod(sCubeArray, c4, lod);
+
+    return texel;
+}
+
+vec4 testTextureOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureOffset(s1D, c1, offset1);
+    texel   += textureOffset(s2D, c2, offset2);
+    texel   += textureOffset(s3D, c3, offset3);
+    texel   += textureOffset(s2DRect, c2, offset2);
+    texel.x += textureOffset(s2DRectShadow, c3, offset2);
+    texel.x += textureOffset(s1DShadow, c3, offset1);
+    texel.x += textureOffset(s2DShadow, c3, offset2);
+    texel   += textureOffset(s1DArray, c2, offset1);
+    texel   += textureOffset(s2DArray, c3, offset2);
+    texel.x += textureOffset(s1DArrayShadow, c3, offset1);
+    texel.x += textureOffset(s2DArrayShadow, c4, offset2);
+
+    return texel;
+}
+
+vec4 testTextureProjOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureProjOffset(s1D, c2, offset1);
+    texel   += textureProjOffset(s1D, c4, offset1);
+    texel   += textureProjOffset(s2D, c3, offset2);
+    texel   += textureProjOffset(s2D, c4, offset2);
+    texel   += textureProjOffset(s3D, c4, offset3);
+    texel   += textureProjOffset(s2DRect, c3, offset2);
+    texel   += textureProjOffset(s2DRect, c4, offset2);
+    texel.x += textureProjOffset(s2DRectShadow, c4, offset2);
+    texel.x += textureProjOffset(s1DShadow, c4, offset1);
+    texel.x += textureProjOffset(s2DShadow, c4, offset2);
+
+    return texel;
+}
+
+vec4 testTextureLodOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureLodOffset(s1D, c1, lod, offset1);
+    texel   += textureLodOffset(s2D, c2, lod, offset2);
+    texel   += textureLodOffset(s3D, c3, lod, offset3);
+    texel.x += textureLodOffset(s1DShadow, c3, lod, offset1);
+    texel.x += textureLodOffset(s2DShadow, c3, lod, offset2);
+    texel   += textureLodOffset(s1DArray, c2, lod, offset1);
+    texel   += textureLodOffset(s2DArray, c3, lod, offset2);
+    texel.x += textureLodOffset(s1DArrayShadow, c3, lod, offset1);
+
+    return texel;
+}
+
+vec4 testTextureProjLodOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureProjLodOffset(s1D, c2, lod, offset1);
+    texel   += textureProjLodOffset(s1D, c4, lod, offset1);
+    texel   += textureProjLodOffset(s2D, c3, lod, offset2);
+    texel   += textureProjLodOffset(s2D, c4, lod, offset2);
+    texel   += textureProjLodOffset(s3D, c4, lod, offset3);
+    texel.x += textureProjLodOffset(s1DShadow, c4, lod, offset1);
+    texel.x += textureProjLodOffset(s2DShadow, c4, lod, offset2);
+
+    return texel;
+}
+
+vec4 testTexelFetch()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += texelFetch(s1D, int(c1), int(lod));
+    texel   += texelFetch(s2D, ivec2(c2), int(lod));
+    texel   += texelFetch(s3D, ivec3(c3), int(lod));
+    texel   += texelFetch(s2DRect, ivec2(c2));
+    texel   += texelFetch(s1DArray, ivec2(c2), int(lod));
+    texel   += texelFetch(s2DArray, ivec3(c3), int(lod));
+    texel   += texelFetch(sBuffer, int(c1));
+    texel   += texelFetch(s2DMS, ivec2(c2), 1);
+    texel   += texelFetch(s2DMSArray, ivec3(c3), 2);
+
+    return texel;
+}
+
+vec4 testTexelFetchOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += texelFetchOffset(s1D, int(c1), int(lod), offset1);
+    texel   += texelFetchOffset(s2D, ivec2(c2), int(lod), offset2);
+    texel   += texelFetchOffset(s3D, ivec3(c3), int(lod), offset3);
+    texel   += texelFetchOffset(s2DRect, ivec2(c2), offset2);
+    texel   += texelFetchOffset(s1DArray, ivec2(c2), int(lod), offset1);
+    texel   += texelFetchOffset(s2DArray, ivec3(c3), int(lod), offset2);
+
+    return texel;
+}
+
+vec4 testTextureGrad()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGrad(s1D, c1, dPdxy1, dPdxy1);
+    texel   += textureGrad(s2D, c2, dPdxy2, dPdxy2);
+    texel   += textureGrad(s3D, c3, dPdxy3, dPdxy3);
+    texel   += textureGrad(sCube, c3, dPdxy3, dPdxy3);
+    texel   += textureGrad(s2DRect, c2, dPdxy2, dPdxy2);
+    texel.x += textureGrad(s2DRectShadow, c3, dPdxy2, dPdxy2);
+    texel.x += textureGrad(s1DShadow, c3, dPdxy1, dPdxy1);
+    texel.x += textureGrad(s2DShadow, c3, dPdxy2, dPdxy2);
+    texel.x += textureGrad(sCubeShadow, c4, dPdxy3, dPdxy3);
+    texel   += textureGrad(s1DArray, c2, dPdxy1, dPdxy1);
+    texel   += textureGrad(s2DArray, c3, dPdxy2, dPdxy2);
+    texel.x += textureGrad(s1DArrayShadow, c3, dPdxy1, dPdxy1);
+    texel.x += textureGrad(s2DArrayShadow, c4, dPdxy2, dPdxy2);
+    texel   += textureGrad(sCubeArray, c4, dPdxy3, dPdxy3);
+
+    return texel;
+}
+
+vec4 testTextureGradOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGradOffset(s1D, c1, dPdxy1, dPdxy1, offset1);
+    texel   += textureGradOffset(s2D, c2, dPdxy2, dPdxy2, offset2);
+    texel   += textureGradOffset(s3D, c3, dPdxy3, dPdxy3, offset3);
+    texel   += textureGradOffset(s2DRect, c2, dPdxy2, dPdxy2, offset2);
+    texel.x += textureGradOffset(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2);
+    texel.x += textureGradOffset(s1DShadow, c3, dPdxy1, dPdxy1, offset1);
+    texel.x += textureGradOffset(s2DShadow, c3, dPdxy2, dPdxy2, offset2);
+    texel   += textureGradOffset(s1DArray, c2, dPdxy1, dPdxy1, offset1);
+    texel   += textureGradOffset(s2DArray, c3, dPdxy2, dPdxy2, offset2);
+    texel.x += textureGradOffset(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1);
+    texel.x += textureGradOffset(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2);
+
+    return texel;
+}
+
+vec4 testTextureProjGrad()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureProjGrad(s1D, c2, dPdxy1, dPdxy1);
+    texel   += textureProjGrad(s1D, c4, dPdxy1, dPdxy1);
+    texel   += textureProjGrad(s2D, c3, dPdxy2, dPdxy2);
+    texel   += textureProjGrad(s2D, c4, dPdxy2, dPdxy2);
+    texel   += textureProjGrad(s3D, c4, dPdxy3, dPdxy3);
+    texel   += textureProjGrad(s2DRect, c3, dPdxy2, dPdxy2);
+    texel   += textureProjGrad(s2DRect, c4, dPdxy2, dPdxy2);
+    texel.x += textureProjGrad(s2DRectShadow, c4, dPdxy2, dPdxy2);
+    texel.x += textureProjGrad(s1DShadow, c4, dPdxy1, dPdxy1);
+    texel.x += textureProjGrad(s2DShadow, c4, dPdxy2, dPdxy2);
+
+    return texel;
+}
+
+vec4 testTextureProjGradoffset()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureProjGradOffset(s1D, c2, dPdxy1, dPdxy1, offset1);
+    texel   += textureProjGradOffset(s1D, c4, dPdxy1, dPdxy1, offset1);
+    texel   += textureProjGradOffset(s2D, c3, dPdxy2, dPdxy2, offset2);
+    texel   += textureProjGradOffset(s2D, c4, dPdxy2, dPdxy2, offset2);
+    texel   += textureProjGradOffset(s2DRect, c3, dPdxy2, dPdxy2, offset2);
+    texel   += textureProjGradOffset(s2DRect, c4, dPdxy2, dPdxy2, offset2);
+    texel.x += textureProjGradOffset(s2DRectShadow, c4, dPdxy2, dPdxy2, offset2);
+    texel   += textureProjGradOffset(s3D, c4, dPdxy3, dPdxy3, offset3);
+    texel.x += textureProjGradOffset(s1DShadow, c4, dPdxy1, dPdxy1, offset1);
+    texel.x += textureProjGradOffset(s2DShadow, c4, dPdxy2, dPdxy2, offset2);
+
+    return texel;
+}
+
+vec4 testTextureGather()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGather(s2D, c2, 0);
+    texel   += textureGather(s2DArray, c3, 0);
+    texel   += textureGather(sCube, c3, 0);
+    texel   += textureGather(sCubeArray, c4, 0);
+    texel   += textureGather(s2DRect, c2, 0);
+    texel   += textureGather(s2DShadow, c2, compare);
+    texel   += textureGather(s2DArrayShadow, c3, compare);
+    texel   += textureGather(sCubeShadow, c3, compare);
+    texel   += textureGather(sCubeArrayShadow, c4, compare);
+    texel   += textureGather(s2DRectShadow, c2, compare);
+
+    return texel;
+}
+
+vec4 testTextureGatherOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGatherOffset(s2D, c2, offset2, 0);
+    texel   += textureGatherOffset(s2DArray, c3, offset2, 0);
+    texel   += textureGatherOffset(s2DRect, c2, offset2, 0);
+    texel   += textureGatherOffset(s2DShadow, c2, compare, offset2);
+    texel   += textureGatherOffset(s2DArrayShadow, c3, compare, offset2);
+    texel   += textureGatherOffset(s2DRectShadow, c2, compare, offset2);
+
+    return texel;
+}
+
+vec4 testTextureGatherOffsets()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGatherOffsets(s2D, c2, offsets, 0);
+    texel   += textureGatherOffsets(s2DArray, c3, offsets, 0);
+    texel   += textureGatherOffsets(s2DRect, c2, offsets, 0);
+    texel   += textureGatherOffsets(s2DShadow, c2, compare, offsets);
+    texel   += textureGatherOffsets(s2DArrayShadow, c3, compare, offsets);
+    texel   += textureGatherOffsets(s2DRectShadow, c2, compare, offsets);
+
+    return texel;
+}
+
+vec4 testTextureGatherLod()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGatherLodAMD(s2D, c2, lod, 0);
+    texel   += textureGatherLodAMD(s2DArray, c3, lod, 0);
+    texel   += textureGatherLodAMD(sCube, c3, lod, 0);
+    texel   += textureGatherLodAMD(sCubeArray, c4, lod, 0);
+
+    return texel;
+}
+
+vec4 testTextureGatherLodOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGatherLodOffsetAMD(s2D, c2, lod, offset2, 0);
+    texel   += textureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, 0);
+
+    return texel;
+}
+
+vec4 testTextureGatherLodOffsets()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGatherLodOffsetsAMD(s2D, c2, lod, offsets, 0);
+    texel   += textureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, 0);
+
+    return texel;
+}
+
+ivec4 testTextureSize()
+{
+    ivec4 size = ivec4(0);
+
+    size.x      += textureSize(s1D, int(lod));
+    size.xy     += textureSize(s2D, int(lod));
+    size.xyz    += textureSize(s3D, int(lod));
+    size.xy     += textureSize(sCube, int(lod));
+    size.x      += textureSize(s1DShadow, int(lod));
+    size.xy     += textureSize(s2DShadow, int(lod));
+    size.xy     += textureSize(sCubeShadow, int(lod));
+    size.xyz    += textureSize(sCubeArray, int(lod));
+    size.xyz    += textureSize(sCubeArrayShadow, int(lod));
+    size.xy     += textureSize(s2DRect);
+    size.xy     += textureSize(s2DRectShadow);
+    size.xy     += textureSize(s1DArray, int(lod));
+    size.xyz    += textureSize(s2DArray, int(lod));
+    size.xy     += textureSize(s1DArrayShadow, int(lod));
+    size.xyz    += textureSize(s2DArrayShadow, int(lod));
+    size.x      += textureSize(sBuffer);
+    size.xy     += textureSize(s2DMS);
+    size.xyz    += textureSize(s2DMSArray);
+
+    return size;
+}
+
+vec2 testTextureQueryLod()
+{
+    vec2 lod = vec2(0.0);
+
+    lod  += textureQueryLod(s1D, c1);
+    lod  += textureQueryLod(s2D, c2);
+    lod  += textureQueryLod(s3D, c3);
+    lod  += textureQueryLod(sCube, c3);
+    lod  += textureQueryLod(s1DArray, c1);
+    lod  += textureQueryLod(s2DArray, c2);
+    lod  += textureQueryLod(sCubeArray, c3);
+    lod  += textureQueryLod(s1DShadow, c1);
+    lod  += textureQueryLod(s2DShadow, c2);
+    lod  += textureQueryLod(sCubeArrayShadow, c3);
+    lod  += textureQueryLod(s1DArrayShadow, c1);
+    lod  += textureQueryLod(s2DArrayShadow, c2);
+    lod  += textureQueryLod(sCubeArrayShadow, c3);
+
+    return lod;
+}
+
+int testTextureQueryLevels()
+{
+    int levels = 0;
+
+    levels  += textureQueryLevels(s1D);
+    levels  += textureQueryLevels(s2D);
+    levels  += textureQueryLevels(s3D);
+    levels  += textureQueryLevels(sCube);
+    levels  += textureQueryLevels(s1DShadow);
+    levels  += textureQueryLevels(s2DShadow);
+    levels  += textureQueryLevels(sCubeShadow);
+    levels  += textureQueryLevels(sCubeArray);
+    levels  += textureQueryLevels(sCubeArrayShadow);
+    levels  += textureQueryLevels(s1DArray);
+    levels  += textureQueryLevels(s2DArray);
+    levels  += textureQueryLevels(s1DArrayShadow);
+    levels  += textureQueryLevels(s2DArrayShadow);
+
+    return levels;
+}
+
+int testTextureSamples()
+{
+    int samples = 0;
+
+    samples += textureSamples(s2DMS);
+    samples += textureSamples(s2DMSArray);
+
+    return samples;
+}
+
+vec4 testImageLoad()
+{
+    vec4 texel = vec4(0.0);
+
+    texel += imageLoad(i1D, int(c1));
+    texel += imageLoad(i2D, ivec2(c2));
+    texel += imageLoad(i3D, ivec3(c3));
+    texel += imageLoad(i2DRect, ivec2(c2));
+    texel += imageLoad(iCube, ivec3(c3));
+    texel += imageLoad(iBuffer, int(c1));
+    texel += imageLoad(i1DArray, ivec2(c2));
+    texel += imageLoad(i2DArray, ivec3(c3));
+    texel += imageLoad(iCubeArray, ivec3(c3));
+    texel += imageLoad(i2DMS, ivec2(c2), 1);
+    texel += imageLoad(i2DMSArray, ivec3(c3), 1);
+
+    return texel;
+}
+
+void testImageStore(vec4 data)
+{
+    imageStore(i1D, int(c1), data);
+    imageStore(i2D, ivec2(c2), data);
+    imageStore(i3D, ivec3(c3), data);
+    imageStore(i2DRect, ivec2(c2), data);
+    imageStore(iCube, ivec3(c3), data);
+    imageStore(iBuffer, int(c1), data);
+    imageStore(i1DArray, ivec2(c2), data);
+    imageStore(i2DArray, ivec3(c3), data);
+    imageStore(iCubeArray, ivec3(c3), data);
+    imageStore(i2DMS, ivec2(c2), 1, data);
+    imageStore(i2DMSArray, ivec3(c3), 1, data);
+}
+
+vec4 testSparseTexture()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureARB(s2D, c2, texel);
+    sparseTextureARB(s3D, c3, texel);
+    sparseTextureARB(sCube, c3, texel);
+    sparseTextureARB(s2DShadow, c3, texel.x);
+    sparseTextureARB(sCubeShadow, c4, texel.x);
+    sparseTextureARB(s2DArray, c3, texel);
+    sparseTextureARB(sCubeArray, c4, texel);
+    sparseTextureARB(s2DArrayShadow, c4, texel.x);
+    sparseTextureARB(s2DRect, c2, texel);
+    sparseTextureARB(s2DRectShadow, c3, texel.x);
+    sparseTextureARB(sCubeArrayShadow, c4, compare, texel.x);
+
+    return texel;
+}
+
+vec4 testSparseTextureLod()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureLodARB(s2D, c2, lod, texel);
+    sparseTextureLodARB(s3D, c3, lod, texel);
+    sparseTextureLodARB(sCube, c3, lod, texel);
+    sparseTextureLodARB(s2DShadow, c3, lod, texel.x);
+    sparseTextureLodARB(s2DArray, c3, lod, texel);
+    sparseTextureLodARB(sCubeArray, c4, lod, texel);
+
+    return texel;
+}
+
+vec4 testSparseTextureOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureOffsetARB(s2D, c2, offset2, texel);
+    sparseTextureOffsetARB(s3D, c3, offset3, texel);
+    sparseTextureOffsetARB(s2DRect, c2, offset2, texel);
+    sparseTextureOffsetARB(s2DRectShadow, c3, offset2, texel.x);
+    sparseTextureOffsetARB(s2DShadow, c3, offset2, texel.x);
+    sparseTextureOffsetARB(s2DArray, c3, offset2, texel);
+    sparseTextureOffsetARB(s2DArrayShadow, c4, offset2, texel.x);
+
+    return texel;
+}
+
+vec4 testSparseTextureLodOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureLodOffsetARB(s2D, c2, lod, offset2, texel);
+    sparseTextureLodOffsetARB(s3D, c3, lod, offset3, texel);
+    sparseTextureLodOffsetARB(s2DShadow, c3, lod, offset2, texel.x);
+    sparseTextureLodOffsetARB(s2DArray, c3, lod, offset2, texel);
+
+    return texel;
+}
+
+vec4 testSparseTextureGrad()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureGradARB(s2D, c2, dPdxy2, dPdxy2, texel);
+    sparseTextureGradARB(s3D, c3, dPdxy3, dPdxy3, texel);
+    sparseTextureGradARB(sCube, c3, dPdxy3, dPdxy3, texel);
+    sparseTextureGradARB(s2DRect, c2, dPdxy2, dPdxy2, texel);
+    sparseTextureGradARB(s2DRectShadow, c3, dPdxy2, dPdxy2, texel.x);
+    sparseTextureGradARB(s2DShadow, c3, dPdxy2, dPdxy2, texel.x);
+    sparseTextureGradARB(sCubeShadow, c4, dPdxy3, dPdxy3, texel.x);
+    sparseTextureGradARB(s2DArray, c3, dPdxy2, dPdxy2, texel);
+    sparseTextureGradARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, texel.x);
+    sparseTextureGradARB(sCubeArray, c4, dPdxy3, dPdxy3, texel);
+
+    return texel;
+}
+
+vec4 testSparseTextureGradOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureGradOffsetARB(s2D, c2, dPdxy2, dPdxy2, offset2, texel);
+    sparseTextureGradOffsetARB(s3D, c3, dPdxy3, dPdxy3, offset3, texel);
+    sparseTextureGradOffsetARB(s2DRect, c2, dPdxy2, dPdxy2, offset2, texel);
+    sparseTextureGradOffsetARB(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2, texel.x);
+    sparseTextureGradOffsetARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, texel.x);
+    sparseTextureGradOffsetARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, texel);
+    sparseTextureGradOffsetARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, texel.x);
+
+    return texel;
+}
+
+vec4 testSparseTexelFetch()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTexelFetchARB(s2D, ivec2(c2), int(lod), texel);
+    sparseTexelFetchARB(s3D, ivec3(c3), int(lod), texel);
+    sparseTexelFetchARB(s2DRect, ivec2(c2), texel);
+    sparseTexelFetchARB(s2DArray, ivec3(c3), int(lod), texel);
+    sparseTexelFetchARB(s2DMS, ivec2(c2), 1, texel);
+    sparseTexelFetchARB(s2DMSArray, ivec3(c3), 2, texel);
+
+    return texel;
+}
+
+vec4 testSparseTexelFetchOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTexelFetchOffsetARB(s2D, ivec2(c2), int(lod), offset2, texel);
+    sparseTexelFetchOffsetARB(s3D, ivec3(c3), int(lod), offset3, texel);
+    sparseTexelFetchOffsetARB(s2DRect, ivec2(c2), offset2, texel);
+    sparseTexelFetchOffsetARB(s2DArray, ivec3(c3), int(lod), offset2, texel);
+
+    return texel;
+}
+
+vec4 testSparseTextureGather()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureGatherARB(s2D, c2, texel, 0);
+    sparseTextureGatherARB(s2DArray, c3, texel, 0);
+    sparseTextureGatherARB(sCube, c3, texel, 0);
+    sparseTextureGatherARB(sCubeArray, c4, texel, 0);
+    sparseTextureGatherARB(s2DRect, c2, texel, 0);
+    sparseTextureGatherARB(s2DShadow, c2, compare, texel);
+    sparseTextureGatherARB(s2DArrayShadow, c3, compare, texel);
+    sparseTextureGatherARB(sCubeShadow, c3, compare, texel);
+    sparseTextureGatherARB(sCubeArrayShadow, c4, compare, texel);
+    sparseTextureGatherARB(s2DRectShadow, c2, compare, texel);
+
+    return texel;
+}
+
+vec4 testSparseTextureGatherOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureGatherOffsetARB(s2D, c2, offset2, texel, 0);
+    sparseTextureGatherOffsetARB(s2DArray, c3, offset2, texel, 0);
+    sparseTextureGatherOffsetARB(s2DRect, c2, offset2, texel, 0);
+    sparseTextureGatherOffsetARB(s2DShadow, c2, compare, offset2, texel);
+    sparseTextureGatherOffsetARB(s2DArrayShadow, c3, compare, offset2, texel);
+    sparseTextureGatherOffsetARB(s2DRectShadow, c2, compare, offset2, texel);
+
+    return texel;
+}
+
+vec4 testSparseTextureGatherOffsets()
+{
+    vec4 texel = vec4(0.0);
+    const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0));
+
+    sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel, 0);
+    sparseTextureGatherOffsetsARB(s2DArray, c3, constOffsets, texel, 0);
+    sparseTextureGatherOffsetsARB(s2DRect, c2, constOffsets, texel, 0);
+    sparseTextureGatherOffsetsARB(s2DShadow, c2, compare, constOffsets, texel);
+    sparseTextureGatherOffsetsARB(s2DArrayShadow, c3, compare, constOffsets, texel);
+    sparseTextureGatherOffsetsARB(s2DRectShadow, c2, compare, constOffsets, texel);
+
+    return texel;
+}
+
+vec4 testSparseTextureGatherLod()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureGatherLodAMD(s2D, c2, lod, texel, 0);
+    sparseTextureGatherLodAMD(s2DArray, c3, lod, texel, 0);
+    sparseTextureGatherLodAMD(sCube, c3, lod, texel, 0);
+    sparseTextureGatherLodAMD(sCubeArray, c4, lod, texel, 0);
+
+    return texel;
+}
+
+vec4 testSparseTextureGatherLodOffset()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureGatherLodOffsetAMD(s2D, c2, lod, offset2, texel, 0);
+    sparseTextureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, texel, 0);
+
+    return texel;
+}
+
+vec4 testSparseTextureGatherLodOffsets()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureGatherLodOffsetsAMD(s2D, c2, lod, offsets, texel, 0);
+    sparseTextureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, texel, 0);
+
+    return texel;
+}
+
+vec4 testSparseImageLoad()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseImageLoadARB(i2D, ivec2(c2), texel);
+    sparseImageLoadARB(i3D, ivec3(c3), texel);
+    sparseImageLoadARB(i2DRect, ivec2(c2), texel);
+    sparseImageLoadARB(iCube, ivec3(c3), texel);
+    sparseImageLoadARB(i2DArray, ivec3(c3), texel);
+    sparseImageLoadARB(iCubeArray, ivec3(c3), texel);
+    sparseImageLoadARB(i2DMS, ivec2(c2), 1, texel);
+    sparseImageLoadARB(i2DMSArray, ivec3(c3), 2, texel);
+
+    return texel;
+}
+
+vec4 testSparseTextureClamp()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureClampARB(s2D, c2, lodClamp, texel);
+    sparseTextureClampARB(s3D, c3, lodClamp, texel);
+    sparseTextureClampARB(sCube, c3, lodClamp, texel);
+    sparseTextureClampARB(s2DShadow, c3, lodClamp, texel.x);
+    sparseTextureClampARB(sCubeShadow, c4, lodClamp, texel.x);
+    sparseTextureClampARB(s2DArray, c3, lodClamp, texel);
+    sparseTextureClampARB(sCubeArray, c4, lodClamp, texel);
+    sparseTextureClampARB(s2DArrayShadow, c4, lodClamp, texel.x);
+    sparseTextureClampARB(sCubeArrayShadow, c4, compare, lodClamp, texel.x);
+
+    return texel;
+}
+
+vec4 testTextureClamp()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureClampARB(s1D, c1, lodClamp);
+    texel   += textureClampARB(s2D, c2, lodClamp);
+    texel   += textureClampARB(s3D, c3, lodClamp);
+    texel   += textureClampARB(sCube, c3, lodClamp);
+    texel.x += textureClampARB(s1DShadow, c3, lodClamp);
+    texel.x += textureClampARB(s2DShadow, c3, lodClamp);
+    texel.x += textureClampARB(sCubeShadow, c4, lodClamp);
+    texel   += textureClampARB(s1DArray, c2, lodClamp);
+    texel   += textureClampARB(s2DArray, c3, lodClamp);
+    texel   += textureClampARB(sCubeArray, c4, lodClamp);
+    texel.x += textureClampARB(s1DArrayShadow, c3, lodClamp);
+    texel.x += textureClampARB(s2DArrayShadow, c4, lodClamp);
+    texel.x += textureClampARB(sCubeArrayShadow, c4, compare, lodClamp);
+
+    return texel;
+}
+
+vec4 testSparseTextureOffsetClamp()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureOffsetClampARB(s2D, c2, offset2, lodClamp, texel);
+    sparseTextureOffsetClampARB(s3D, c3, offset3, lodClamp, texel);
+    sparseTextureOffsetClampARB(s2DShadow, c3, offset2, lodClamp, texel.x);
+    sparseTextureOffsetClampARB(s2DArray, c3, offset2, lodClamp, texel);
+    sparseTextureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp, texel.x);
+
+    return texel;
+}
+
+vec4 testTextureOffsetClamp()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureOffsetClampARB(s1D, c1, offset1, lodClamp);
+    texel   += textureOffsetClampARB(s2D, c2, offset2, lodClamp);
+    texel   += textureOffsetClampARB(s3D, c3, offset3, lodClamp);
+    texel.x += textureOffsetClampARB(s1DShadow, c3, offset1, lodClamp);
+    texel.x += textureOffsetClampARB(s2DShadow, c3, offset2, lodClamp);
+    texel   += textureOffsetClampARB(s1DArray, c2, offset1, lodClamp);
+    texel   += textureOffsetClampARB(s2DArray, c3, offset2, lodClamp);
+    texel.x += textureOffsetClampARB(s1DArrayShadow, c3, offset1, lodClamp);
+    texel.x += textureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp);
+    
+    return texel;
+}
+
+vec4 testSparseTextureGradClamp()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp, texel);
+    sparseTextureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp, texel);
+    sparseTextureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp, texel);
+    sparseTextureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp, texel.x);
+    sparseTextureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp, texel.x);
+    sparseTextureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp, texel);
+    sparseTextureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp, texel.x);
+    sparseTextureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp, texel);
+
+    return texel;
+}
+
+vec4 testTextureGradClamp()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGradClampARB(s1D, c1, dPdxy1, dPdxy1, lodClamp);
+    texel   += textureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp);
+    texel   += textureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp);
+    texel   += textureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp);
+    texel.x += textureGradClampARB(s1DShadow, c3, dPdxy1, dPdxy1, lodClamp);
+    texel.x += textureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp);
+    texel.x += textureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp);
+    texel   += textureGradClampARB(s1DArray, c2, dPdxy1, dPdxy1, lodClamp);
+    texel   += textureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp);
+    texel.x += textureGradClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, lodClamp);
+    texel.x += textureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp);
+    texel   += textureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp);
+
+    return texel;
+}
+
+vec4 testSparseTextureGradOffsetClamp()
+{
+    vec4 texel = vec4(0.0);
+
+    sparseTextureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp, texel);
+    sparseTextureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp, texel);
+    sparseTextureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel.x);
+    sparseTextureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel);
+    sparseTextureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp, texel.x);
+
+    return texel;
+}
+
+vec4 testTextureGradOffsetClamp()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += textureGradOffsetClampARB(s1D, c1, dPdxy1, dPdxy1, offset1, lodClamp);
+    texel   += textureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp);
+    texel   += textureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp);
+    texel.x += textureGradOffsetClampARB(s1DShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp);
+    texel.x += textureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp);
+    texel   += textureGradOffsetClampARB(s1DArray, c2, dPdxy1, dPdxy1, offset1, lodClamp);
+    texel   += textureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp);
+    texel.x += textureGradOffsetClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp);
+    texel.x += textureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp);
+
+    return texel;
+}
+
+vec4 testCombinedTextureSampler()
+{
+    vec4 texel = vec4(0.0);
+
+    texel   += texture(sampler1D(t1D, s), c1);
+    texel   += texture(sampler2D(t2D, s), c2);
+    texel   += texture(sampler3D(t3D, s), c3);
+    texel   += texture(samplerCube(tCube, s), c3);
+    texel.x += texture(sampler1DShadow(t1D, sShadow), c3);
+    texel.x += texture(sampler2DShadow(t2D, sShadow), c3);
+    texel.x += texture(samplerCubeShadow(tCube, sShadow), c4);
+    texel   += texture(sampler1DArray(t1DArray, s), c2);
+    texel   += texture(sampler2DArray(t2DArray, s), c3);
+    texel   += texture(samplerCubeArray(tCubeArray, s), c4);
+    texel.x += texture(sampler1DArrayShadow(t1DArray, sShadow), c3);
+    texel.x += texture(sampler2DArrayShadow(t2DArray, sShadow), c4);
+    texel   += texture(sampler2DRect(t2DRect, s), c2);
+    texel.x += texture(sampler2DRectShadow(t2DRect, sShadow), c3);
+    texel.x += texture(samplerCubeArrayShadow(tCubeArray, sShadow), c4, compare);
+
+    return texel;
+}
+
+vec4 testSubpassLoad()
+{
+    return subpassLoad(subpass) + subpassLoad(subpassMS, 2);
+}
+
+void main()
+{
+    vec4 result = vec4(0.0);
+
+    result  += testTexture();
+    result  += testTextureProj();
+    result  += testTextureLod();
+    result  += testTextureOffset();
+    result  += testTextureLodOffset();
+    result  += testTextureProjLodOffset();
+    result  += testTexelFetch();
+    result  += testTexelFetchOffset();
+    result  += testTextureGrad();
+    result  += testTextureGradOffset();
+    result  += testTextureProjGrad();
+    result  += testTextureProjGradoffset();
+    result  += testTextureGather();
+    result  += testTextureGatherOffset();
+    result  += testTextureGatherOffsets();
+    result  += testTextureGatherLod();
+    result  += testTextureGatherLodOffset();
+    result  += testTextureGatherLodOffsets();
+
+    result    += vec4(testTextureSize());
+    result.xy += vec2(testTextureQueryLod());
+    result.x  += testTextureQueryLevels();
+    result.x  += testTextureSamples();
+
+    result  += testImageLoad();
+    testImageStore(result);
+
+    result += testSparseTexture();
+    result += testSparseTextureLod();
+    result += testSparseTextureOffset();
+    result += testSparseTextureLodOffset();
+    result += testSparseTextureGrad();
+    result += testSparseTextureGradOffset();
+    result += testSparseTexelFetch();
+    result += testSparseTexelFetchOffset();
+    result += testSparseTextureGather();
+    result += testSparseTextureGatherOffset();
+    result += testSparseTextureGatherOffsets();
+    result += testSparseTextureGatherLod();
+    result += testSparseTextureGatherLodOffset();
+    result += testSparseTextureGatherLodOffsets();
+
+    result += testSparseImageLoad();
+
+    result += testSparseTextureClamp();
+    result += testTextureClamp();
+    result += testSparseTextureOffsetClamp();
+    result += testTextureOffsetClamp();
+    result += testSparseTextureGrad();
+    result += testTextureGrad();
+    result += testSparseTextureGradOffsetClamp();
+    result += testTextureGradOffsetClamp();
+
+    result += testCombinedTextureSampler();
+    result += testSubpassLoad();
+
+    fragColor = result;
+}
+

+ 1 - 0
gtests/Spv.FromFile.cpp

@@ -528,6 +528,7 @@ INSTANTIATE_TEST_SUITE_P(
         "spv.fragmentShaderBarycentric4.frag",
         "spv.ext.texture_shadow_lod.frag",
         "spv.ext.texture_shadow_lod.error.frag",
+        "spv.floatFetch.frag",
     })),
     FileNameAsCustomTestSuffix
 );