Tests: fix some paths not automapping, and some shaders with no main.
diff --git a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
index 41f0b09..f73a024 100644
--- a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
+++ b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
@@ -16,7 +16,7 @@
                               Decorate 47(gss) DescriptorSet 0
                               Decorate 47(gss) Binding 0
                               Decorate 51(gtex) DescriptorSet 0
-                              Decorate 51(gtex) Binding 0
+                              Decorate 51(gtex) Binding 2
                               Decorate 62(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
index 6b090b2..ce23593 100644
--- a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
@@ -18,11 +18,11 @@
                               Decorate 38(tex) DescriptorSet 0
                               Decorate 38(tex) Binding 0
                               Decorate 82(s.s2D) DescriptorSet 0
-                              Decorate 82(s.s2D) Binding 0
+                              Decorate 82(s.s2D) Binding 1
                               Decorate 97(s2.s2D) DescriptorSet 0
-                              Decorate 97(s2.s2D) Binding 0
+                              Decorate 97(s2.s2D) Binding 2
                               Decorate 100(s2.tex) DescriptorSet 0
-                              Decorate 100(s2.tex) Binding 0
+                              Decorate 100(s2.tex) Binding 3
                               Decorate 120(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
index 126e13a..8e7df80 100644
--- a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
+++ b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
@@ -15,7 +15,7 @@
                               Decorate 43(g_tInputTexture_sampler) DescriptorSet 0
                               Decorate 43(g_tInputTexture_sampler) Binding 0
                               Decorate 47(g_tInputTexture) DescriptorSet 0
-                              Decorate 47(g_tInputTexture) Binding 0
+                              Decorate 47(g_tInputTexture) Binding 1
                               Decorate 80(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
index 03dc8dc..25b9e2f 100644
--- a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
+++ b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
@@ -15,7 +15,7 @@
                               Decorate 44(g_tInputTexture_sampler) DescriptorSet 0
                               Decorate 44(g_tInputTexture_sampler) Binding 0
                               Decorate 47(g_tInputTexture) DescriptorSet 0
-                              Decorate 47(g_tInputTexture) Binding 0
+                              Decorate 47(g_tInputTexture) Binding 1
                               Decorate 57(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/Test/baseLegalResults/hlsl.flattenSubset.frag.out
index 68d1236..6587d52 100644
--- a/Test/baseLegalResults/hlsl.flattenSubset.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenSubset.frag.out
@@ -17,7 +17,7 @@
                               Decorate 21(samp) DescriptorSet 0
                               Decorate 21(samp) Binding 0
                               Decorate 33(tex) DescriptorSet 0
-                              Decorate 33(tex) Binding 0
+                              Decorate 33(tex) Binding 1
                               Decorate 47(vpos) Location 0
                               Decorate 50(@entryPointOutput) Location 0
                2:             TypeVoid
diff --git a/Test/baseResults/hlsl.aliasOpaque.frag.out b/Test/baseResults/hlsl.aliasOpaque.frag.out
index d22bac6..74f1e29 100644
--- a/Test/baseResults/hlsl.aliasOpaque.frag.out
+++ b/Test/baseResults/hlsl.aliasOpaque.frag.out
@@ -167,11 +167,11 @@
                               Name 56  "param"
                               Name 62  "@entryPointOutput"
                               Decorate 44(gss2) DescriptorSet 0
-                              Decorate 44(gss2) Binding 0
+                              Decorate 44(gss2) Binding 1
                               Decorate 47(gss) DescriptorSet 0
                               Decorate 47(gss) Binding 0
                               Decorate 51(gtex) DescriptorSet 0
-                              Decorate 51(gtex) Binding 0
+                              Decorate 51(gtex) Binding 2
                               Decorate 62(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out
index 4c2a8c1..a6b0442 100644
--- a/Test/baseResults/hlsl.array.flatten.frag.out
+++ b/Test/baseResults/hlsl.array.flatten.frag.out
@@ -393,17 +393,17 @@
                               Name 141  "g_samp_explicit[1]"
                               Name 142  "g_samp_explicit[2]"
                               Decorate 42(g_tex[1]) DescriptorSet 0
-                              Decorate 42(g_tex[1]) Binding 0
+                              Decorate 42(g_tex[1]) Binding 4
                               Decorate 45(g_samp[1]) DescriptorSet 0
-                              Decorate 45(g_samp[1]) Binding 0
+                              Decorate 45(g_samp[1]) Binding 10
                               Decorate 65(g_samp[0]) DescriptorSet 0
-                              Decorate 65(g_samp[0]) Binding 0
+                              Decorate 65(g_samp[0]) Binding 9
                               Decorate 70(g_samp[2]) DescriptorSet 0
-                              Decorate 70(g_samp[2]) Binding 0
+                              Decorate 70(g_samp[2]) Binding 11
                               Decorate 74(g_tex[0]) DescriptorSet 0
                               Decorate 74(g_tex[0]) Binding 0
                               Decorate 79(g_tex[2]) DescriptorSet 0
-                              Decorate 79(g_tex[2]) Binding 0
+                              Decorate 79(g_tex[2]) Binding 8
                               Decorate 88 ArrayStride 48
                               Decorate 89 ArrayStride 48
                               Decorate 90 ArrayStride 16
@@ -416,7 +416,7 @@
                               MemberDecorate 91($Global) 2 Offset 384
                               Decorate 91($Global) Block
                               Decorate 93 DescriptorSet 0
-                              Decorate 93 Binding 0
+                              Decorate 93 Binding 12
                               Decorate 134(ps_output.color) Location 0
                               Decorate 137(g_tex_explicit[0]) DescriptorSet 0
                               Decorate 137(g_tex_explicit[0]) Binding 1
diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out
index 402807e..b3af784 100644
--- a/Test/baseResults/hlsl.array.implicit-size.frag.out
+++ b/Test/baseResults/hlsl.array.implicit-size.frag.out
@@ -30,7 +30,7 @@
 0:12        2.000000
 0:12        3 (const int)
 0:12        4.000000
-0:26  Function Definition: main(struct-PS_OUTPUT-vf41; ( temp void)
+0:26  Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void)
 0:26    Function Parameters: 
 0:26      'ps_output' ( out structure{ temp 4-component vector of float color})
 0:?     Sequence
@@ -73,15 +73,27 @@
 0:31            indirect index ( temp float)
 0:31              'g_array' ( global 5-element array of float)
 0:31              'idx' ( temp int)
+0:26  Function Definition: main( ( temp void)
+0:26    Function Parameters: 
+0:?     Sequence
+0:26      Function Call: @main(struct-PS_OUTPUT-vf41; ( temp void)
+0:?         'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:26      Sequence
+0:26        move second child to first child ( temp 4-component vector of float)
+0:?           'ps_output.color' (layout( location=0) out 4-component vector of float)
+0:26          color: direct index for structure ( temp 4-component vector of float)
+0:?             'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:26            Constant:
+0:26              0 (const int)
 0:?   Linker Objects
 0:?     'g_array' ( global 5-element array of float)
 0:?     'g_array_unused' ( global 7-element array of float)
 0:?     'g_mystruct' ( global 2-element array of structure{ temp int i,  temp float f})
+0:?     'ps_output.color' (layout( location=0) out 4-component vector of float)
 
 
 Linked fragment stage:
 
-WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 500
 gl_FragCoord origin is upper left
@@ -114,7 +126,7 @@
 0:12        2.000000
 0:12        3 (const int)
 0:12        4.000000
-0:26  Function Definition: main(struct-PS_OUTPUT-vf41; ( temp void)
+0:26  Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void)
 0:26    Function Parameters: 
 0:26      'ps_output' ( out structure{ temp 4-component vector of float color})
 0:?     Sequence
@@ -157,25 +169,38 @@
 0:31            indirect index ( temp float)
 0:31              'g_array' ( global 5-element array of float)
 0:31              'idx' ( temp int)
+0:26  Function Definition: main( ( temp void)
+0:26    Function Parameters: 
+0:?     Sequence
+0:26      Function Call: @main(struct-PS_OUTPUT-vf41; ( temp void)
+0:?         'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:26      Sequence
+0:26        move second child to first child ( temp 4-component vector of float)
+0:?           'ps_output.color' (layout( location=0) out 4-component vector of float)
+0:26          color: direct index for structure ( temp 4-component vector of float)
+0:?             'ps_output' ( temp structure{ temp 4-component vector of float color})
+0:26            Constant:
+0:26              0 (const int)
 0:?   Linker Objects
 0:?     'g_array' ( global 5-element array of float)
 0:?     'g_array_unused' ( global 7-element array of float)
 0:?     'g_mystruct' ( global 2-element array of structure{ temp int i,  temp float f})
+0:?     'ps_output.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 72
+// Id's are bound by 80
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction"
+                              EntryPoint Fragment 4  "main" 77
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
-                              Name 4  "PixelShaderFunction"
+                              Name 4  "main"
                               Name 8  "PS_OUTPUT"
                               MemberName 8(PS_OUTPUT) 0  "color"
-                              Name 12  "main(struct-PS_OUTPUT-vf41;"
+                              Name 12  "@main(struct-PS_OUTPUT-vf41;"
                               Name 11  "ps_output"
                               Name 18  "g_array"
                               Name 28  "g_array_unused"
@@ -185,6 +210,10 @@
                               Name 37  "g_mystruct"
                               Name 46  "l_array"
                               Name 64  "idx"
+                              Name 72  "ps_output"
+                              Name 73  "param"
+                              Name 77  "ps_output.color"
+                              Decorate 77(ps_output.color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -231,14 +260,24 @@
               56:             TypePointer Function 6(float)
               63:             TypePointer Function 32(int)
               70:             TypePointer Function 7(fvec4)
-4(PixelShaderFunction):           2 Function None 3
+              76:             TypePointer Output 7(fvec4)
+77(ps_output.color):     76(ptr) Variable Output
+         4(main):           2 Function None 3
                5:             Label
+   72(ps_output):      9(ptr) Variable Function
+       73(param):      9(ptr) Variable Function
                               Store 18(g_array) 24
                               Store 28(g_array_unused) 31
                               Store 37(g_mystruct) 42
+              74:           2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 73(param)
+              75:8(PS_OUTPUT) Load 73(param)
+                              Store 72(ps_output) 75
+              78:     70(ptr) AccessChain 72(ps_output) 48
+              79:    7(fvec4) Load 78
+                              Store 77(ps_output.color) 79
                               Return
                               FunctionEnd
-12(main(struct-PS_OUTPUT-vf41;):           2 Function None 10
+12(@main(struct-PS_OUTPUT-vf41;):           2 Function None 10
    11(ps_output):      9(ptr) FunctionParameter
               13:             Label
      46(l_array):     45(ptr) Variable Function
diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out
index e41c02d..e20fbb2 100644
--- a/Test/baseResults/hlsl.buffer.frag.out
+++ b/Test/baseResults/hlsl.buffer.frag.out
@@ -197,7 +197,7 @@
                               MemberDecorate 24(cbufName2) 0 Offset 0
                               Decorate 24(cbufName2) Block
                               Decorate 26 DescriptorSet 0
-                              Decorate 26 Binding 0
+                              Decorate 26 Binding 3
                               MemberDecorate 31(buf1) 0 Offset 0
                               Decorate 31(buf1) Block
                               Decorate 33 DescriptorSet 0
@@ -206,12 +206,12 @@
                               MemberDecorate 37(buf2) 0 Offset 0
                               Decorate 37(buf2) BufferBlock
                               Decorate 39 DescriptorSet 0
-                              Decorate 39 Binding 0
+                              Decorate 39 Binding 1
                               MemberDecorate 43(cbufName) 0 Offset 0
                               MemberDecorate 43(cbufName) 1 Offset 20
                               Decorate 43(cbufName) Block
                               Decorate 45 DescriptorSet 0
-                              Decorate 45 Binding 0
+                              Decorate 45 Binding 2
                               MemberDecorate 50(tbufName) 0 NonWritable
                               MemberDecorate 50(tbufName) 0 Offset 16
                               MemberDecorate 50(tbufName) 1 NonWritable
diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index 698350c..e8435b8 100644
--- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -405,21 +405,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 33(g_tTex1di4a) DescriptorSet 0
-                              Decorate 33(g_tTex1di4a) Binding 0
+                              Decorate 33(g_tTex1di4a) Binding 2
                               Decorate 45(g_tTex1du4a) DescriptorSet 0
-                              Decorate 45(g_tTex1du4a) Binding 0
+                              Decorate 45(g_tTex1du4a) Binding 3
                               Decorate 56(g_tTex2df4a) DescriptorSet 0
-                              Decorate 56(g_tTex2df4a) Binding 0
+                              Decorate 56(g_tTex2df4a) Binding 4
                               Decorate 67(g_tTex2di4a) DescriptorSet 0
-                              Decorate 67(g_tTex2di4a) Binding 0
+                              Decorate 67(g_tTex2di4a) Binding 5
                               Decorate 79(g_tTex2du4a) DescriptorSet 0
-                              Decorate 79(g_tTex2du4a) Binding 0
+                              Decorate 79(g_tTex2du4a) Binding 6
                               Decorate 92(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 92(g_tTexcdf4a) Binding 0
+                              Decorate 92(g_tTexcdf4a) Binding 7
                               Decorate 104(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 104(g_tTexcdi4a) Binding 0
+                              Decorate 104(g_tTexcdi4a) Binding 8
                               Decorate 115(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 115(g_tTexcdu4a) Binding 0
+                              Decorate 115(g_tTexcdu4a) Binding 9
                               Decorate 140(@entryPointOutput.Color) Location 0
                               Decorate 144(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 147(g_tTex1df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
index e4bcb61..d1769cd 100644
--- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
@@ -405,21 +405,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 33(g_tTex1di4a) DescriptorSet 0
-                              Decorate 33(g_tTex1di4a) Binding 0
+                              Decorate 33(g_tTex1di4a) Binding 2
                               Decorate 45(g_tTex1du4a) DescriptorSet 0
-                              Decorate 45(g_tTex1du4a) Binding 0
+                              Decorate 45(g_tTex1du4a) Binding 3
                               Decorate 56(g_tTex2df4a) DescriptorSet 0
-                              Decorate 56(g_tTex2df4a) Binding 0
+                              Decorate 56(g_tTex2df4a) Binding 4
                               Decorate 67(g_tTex2di4a) DescriptorSet 0
-                              Decorate 67(g_tTex2di4a) Binding 0
+                              Decorate 67(g_tTex2di4a) Binding 5
                               Decorate 79(g_tTex2du4a) DescriptorSet 0
-                              Decorate 79(g_tTex2du4a) Binding 0
+                              Decorate 79(g_tTex2du4a) Binding 6
                               Decorate 92(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 92(g_tTexcdf4a) Binding 0
+                              Decorate 92(g_tTexcdf4a) Binding 7
                               Decorate 104(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 104(g_tTexcdi4a) Binding 0
+                              Decorate 104(g_tTexcdi4a) Binding 8
                               Decorate 115(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 115(g_tTexcdu4a) Binding 0
+                              Decorate 115(g_tTexcdu4a) Binding 9
                               Decorate 140(@entryPointOutput.Color) Location 0
                               Decorate 144(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 147(g_tTex1df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.constantbuffer.frag.out b/Test/baseResults/hlsl.constantbuffer.frag.out
index 48d849b..546c63f 100644
--- a/Test/baseResults/hlsl.constantbuffer.frag.out
+++ b/Test/baseResults/hlsl.constantbuffer.frag.out
@@ -160,7 +160,7 @@
                               MemberDecorate 12(cb3) 1 Offset 4
                               Decorate 12(cb3) Block
                               Decorate 18(cb3) DescriptorSet 0
-                              Decorate 18(cb3) Binding 0
+                              Decorate 18(cb3) Binding 1
                               MemberDecorate 31(cb1) 0 Offset 0
                               Decorate 31(cb1) Block
                               Decorate 33(cb1) DescriptorSet 0
@@ -170,7 +170,7 @@
                               MemberDecorate 46(cbuff) 0 Offset 0
                               Decorate 46(cbuff) Block
                               Decorate 48 DescriptorSet 0
-                              Decorate 48 Binding 0
+                              Decorate 48 Binding 2
                               Decorate 64(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.flattenOpaque.frag.out b/Test/baseResults/hlsl.flattenOpaque.frag.out
index 688656c..ff3ec17 100644
--- a/Test/baseResults/hlsl.flattenOpaque.frag.out
+++ b/Test/baseResults/hlsl.flattenOpaque.frag.out
@@ -339,11 +339,11 @@
                               Decorate 38(tex) DescriptorSet 0
                               Decorate 38(tex) Binding 0
                               Decorate 82(s.s2D) DescriptorSet 0
-                              Decorate 82(s.s2D) Binding 0
+                              Decorate 82(s.s2D) Binding 1
                               Decorate 97(s2.s2D) DescriptorSet 0
-                              Decorate 97(s2.s2D) Binding 0
+                              Decorate 97(s2.s2D) Binding 2
                               Decorate 100(s2.tex) DescriptorSet 0
-                              Decorate 100(s2.tex) Binding 0
+                              Decorate 100(s2.tex) Binding 3
                               Decorate 120(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
index 6d16858..5c265fd 100644
--- a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
+++ b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
@@ -195,7 +195,7 @@
                               Decorate 43(g_tInputTexture_sampler) DescriptorSet 0
                               Decorate 43(g_tInputTexture_sampler) Binding 0
                               Decorate 47(g_tInputTexture) DescriptorSet 0
-                              Decorate 47(g_tInputTexture) Binding 0
+                              Decorate 47(g_tInputTexture) Binding 1
                               Decorate 80(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
index 62a2e8e..23351ae 100644
--- a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
+++ b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
@@ -131,7 +131,7 @@
                               Decorate 44(g_tInputTexture_sampler) DescriptorSet 0
                               Decorate 44(g_tInputTexture_sampler) Binding 0
                               Decorate 47(g_tInputTexture) DescriptorSet 0
-                              Decorate 47(g_tInputTexture) Binding 0
+                              Decorate 47(g_tInputTexture) Binding 1
                               Decorate 57(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.flattenSubset.frag.out b/Test/baseResults/hlsl.flattenSubset.frag.out
index f6da1a9..4ce8c99 100644
--- a/Test/baseResults/hlsl.flattenSubset.frag.out
+++ b/Test/baseResults/hlsl.flattenSubset.frag.out
@@ -154,7 +154,7 @@
                               Decorate 21(samp) DescriptorSet 0
                               Decorate 21(samp) Binding 0
                               Decorate 33(tex) DescriptorSet 0
-                              Decorate 33(tex) Binding 0
+                              Decorate 33(tex) Binding 1
                               Decorate 47(vpos) Location 0
                               Decorate 50(@entryPointOutput) Location 0
                2:             TypeVoid
diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out
index 0f7600e..d5097b6 100644
--- a/Test/baseResults/hlsl.float1.frag.out
+++ b/Test/baseResults/hlsl.float1.frag.out
@@ -12,7 +12,7 @@
 0:2      'scalar' ( global float)
 0:2      Constant:
 0:2        2.000000
-0:5  Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float)
+0:5  Function Definition: @ShaderFunction(vf1;f1; ( temp 1-component vector of float)
 0:5    Function Parameters: 
 0:5      'inFloat1' ( in 1-component vector of float)
 0:5      'inScalar' ( in float)
@@ -25,14 +25,30 @@
 0:6          vector-scale ( temp 1-component vector of float)
 0:6            'inFloat1' ( in 1-component vector of float)
 0:6            'inScalar' ( in float)
+0:5  Function Definition: ShaderFunction( ( temp void)
+0:5    Function Parameters: 
+0:?     Sequence
+0:5      move second child to first child ( temp 1-component vector of float)
+0:?         'inFloat1' ( temp 1-component vector of float)
+0:?         'inFloat1' (layout( location=0) in 1-component vector of float)
+0:5      move second child to first child ( temp float)
+0:?         'inScalar' ( temp float)
+0:?         'inScalar' (layout( location=1) in float)
+0:5      move second child to first child ( temp 1-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 1-component vector of float)
+0:5        Function Call: @ShaderFunction(vf1;f1; ( temp 1-component vector of float)
+0:?           'inFloat1' ( temp 1-component vector of float)
+0:?           'inScalar' ( temp float)
 0:?   Linker Objects
 0:?     'f1' ( global 1-component vector of float)
 0:?     'scalar' ( global float)
+0:?     '@entryPointOutput' (layout( location=0) out 1-component vector of float)
+0:?     'inFloat1' (layout( location=0) in 1-component vector of float)
+0:?     'inScalar' (layout( location=1) in float)
 
 
 Linked fragment stage:
 
-WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 500
 gl_FragCoord origin is upper left
@@ -47,7 +63,7 @@
 0:2      'scalar' ( global float)
 0:2      Constant:
 0:2        2.000000
-0:5  Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float)
+0:5  Function Definition: @ShaderFunction(vf1;f1; ( temp 1-component vector of float)
 0:5    Function Parameters: 
 0:5      'inFloat1' ( in 1-component vector of float)
 0:5      'inScalar' ( in float)
@@ -60,26 +76,53 @@
 0:6          vector-scale ( temp 1-component vector of float)
 0:6            'inFloat1' ( in 1-component vector of float)
 0:6            'inScalar' ( in float)
+0:5  Function Definition: ShaderFunction( ( temp void)
+0:5    Function Parameters: 
+0:?     Sequence
+0:5      move second child to first child ( temp 1-component vector of float)
+0:?         'inFloat1' ( temp 1-component vector of float)
+0:?         'inFloat1' (layout( location=0) in 1-component vector of float)
+0:5      move second child to first child ( temp float)
+0:?         'inScalar' ( temp float)
+0:?         'inScalar' (layout( location=1) in float)
+0:5      move second child to first child ( temp 1-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 1-component vector of float)
+0:5        Function Call: @ShaderFunction(vf1;f1; ( temp 1-component vector of float)
+0:?           'inFloat1' ( temp 1-component vector of float)
+0:?           'inScalar' ( temp float)
 0:?   Linker Objects
 0:?     'f1' ( global 1-component vector of float)
 0:?     'scalar' ( global float)
+0:?     '@entryPointOutput' (layout( location=0) out 1-component vector of float)
+0:?     'inFloat1' (layout( location=0) in 1-component vector of float)
+0:?     'inScalar' (layout( location=1) in float)
 
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 27
+// Id's are bound by 41
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction"
+                              EntryPoint Fragment 4  "ShaderFunction" 29 32 35
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
-                              Name 4  "PixelShaderFunction"
-                              Name 11  "ShaderFunction(vf1;f1;"
+                              Name 4  "ShaderFunction"
+                              Name 11  "@ShaderFunction(vf1;f1;"
                               Name 9  "inFloat1"
                               Name 10  "inScalar"
                               Name 14  "f1"
                               Name 16  "scalar"
+                              Name 27  "inFloat1"
+                              Name 29  "inFloat1"
+                              Name 31  "inScalar"
+                              Name 32  "inScalar"
+                              Name 35  "@entryPointOutput"
+                              Name 36  "param"
+                              Name 38  "param"
+                              Decorate 29(inFloat1) Location 0
+                              Decorate 32(inScalar) Location 1
+                              Decorate 35(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -90,13 +133,32 @@
               15:    6(float) Constant 1065353216
       16(scalar):     13(ptr) Variable Private
               17:    6(float) Constant 1073741824
-4(PixelShaderFunction):           2 Function None 3
+              28:             TypePointer Input 6(float)
+    29(inFloat1):     28(ptr) Variable Input
+    32(inScalar):     28(ptr) Variable Input
+              34:             TypePointer Output 6(float)
+35(@entryPointOutput):     34(ptr) Variable Output
+4(ShaderFunction):           2 Function None 3
                5:             Label
+    27(inFloat1):      7(ptr) Variable Function
+    31(inScalar):      7(ptr) Variable Function
+       36(param):      7(ptr) Variable Function
+       38(param):      7(ptr) Variable Function
                               Store 14(f1) 15
                               Store 16(scalar) 17
+              30:    6(float) Load 29(inFloat1)
+                              Store 27(inFloat1) 30
+              33:    6(float) Load 32(inScalar)
+                              Store 31(inScalar) 33
+              37:    6(float) Load 27(inFloat1)
+                              Store 36(param) 37
+              39:    6(float) Load 31(inScalar)
+                              Store 38(param) 39
+              40:    6(float) FunctionCall 11(@ShaderFunction(vf1;f1;) 36(param) 38(param)
+                              Store 35(@entryPointOutput) 40
                               Return
                               FunctionEnd
-11(ShaderFunction(vf1;f1;):    6(float) Function None 8
+11(@ShaderFunction(vf1;f1;):    6(float) Function None 8
      9(inFloat1):      7(ptr) FunctionParameter
     10(inScalar):      7(ptr) FunctionParameter
               12:             Label
diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out
index 8e8c821..00b1ce9 100644
--- a/Test/baseResults/hlsl.float4.frag.out
+++ b/Test/baseResults/hlsl.float4.frag.out
@@ -5,7 +5,7 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:9  Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float)
+0:9  Function Definition: @ShaderFunction(vf4; ( temp 4-component vector of float)
 0:9    Function Parameters: 
 0:9      'input' ( in 4-component vector of float)
 0:?     Sequence
@@ -16,18 +16,29 @@
 0:10            'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor,  uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4})
 0:10            Constant:
 0:10              0 (const uint)
+0:9  Function Definition: ShaderFunction( ( temp void)
+0:9    Function Parameters: 
+0:?     Sequence
+0:9      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:9      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:9        Function Call: @ShaderFunction(vf4; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor,  uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4})
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
 
 
 Linked fragment stage:
 
-WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:9  Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float)
+0:9  Function Definition: @ShaderFunction(vf4; ( temp 4-component vector of float)
 0:9    Function Parameters: 
 0:9      'input' ( in 4-component vector of float)
 0:?     Sequence
@@ -38,21 +49,33 @@
 0:10            'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor,  uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4})
 0:10            Constant:
 0:10              0 (const uint)
+0:9  Function Definition: ShaderFunction( ( temp void)
+0:9    Function Parameters: 
+0:?     Sequence
+0:9      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:9      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:9        Function Call: @ShaderFunction(vf4; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor,  uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4})
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 26
+// Id's are bound by 35
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction"
+                              EntryPoint Fragment 4  "ShaderFunction" 28 31
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
-                              Name 4  "PixelShaderFunction"
-                              Name 11  "ShaderFunction(vf4;"
+                              Name 4  "ShaderFunction"
+                              Name 11  "@ShaderFunction(vf4;"
                               Name 10  "input"
                               Name 15  "$Global"
                               MemberName 15($Global) 0  "AmbientColor"
@@ -61,6 +84,10 @@
                               MemberName 15($Global) 3  "ff3"
                               MemberName 15($Global) 4  "ff4"
                               Name 17  ""
+                              Name 26  "input"
+                              Name 28  "input"
+                              Name 31  "@entryPointOutput"
+                              Name 32  "param"
                               MemberDecorate 15($Global) 0 Offset 0
                               MemberDecorate 15($Global) 1 Offset 16
                               MemberDecorate 15($Global) 2 Offset 20
@@ -69,6 +96,8 @@
                               Decorate 15($Global) Block
                               Decorate 17 DescriptorSet 0
                               Decorate 17 Binding 0
+                              Decorate 28(input) Location 0
+                              Decorate 31(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -82,11 +111,23 @@
               18:             TypeInt 32 1
               19:     18(int) Constant 0
               20:             TypePointer Uniform 7(fvec4)
-4(PixelShaderFunction):           2 Function None 3
+              27:             TypePointer Input 7(fvec4)
+       28(input):     27(ptr) Variable Input
+              30:             TypePointer Output 7(fvec4)
+31(@entryPointOutput):     30(ptr) Variable Output
+4(ShaderFunction):           2 Function None 3
                5:             Label
+       26(input):      8(ptr) Variable Function
+       32(param):      8(ptr) Variable Function
+              29:    7(fvec4) Load 28(input)
+                              Store 26(input) 29
+              33:    7(fvec4) Load 26(input)
+                              Store 32(param) 33
+              34:    7(fvec4) FunctionCall 11(@ShaderFunction(vf4;) 32(param)
+                              Store 31(@entryPointOutput) 34
                               Return
                               FunctionEnd
-11(ShaderFunction(vf4;):    7(fvec4) Function None 9
+11(@ShaderFunction(vf4;):    7(fvec4) Function None 9
        10(input):      8(ptr) FunctionParameter
               12:             Label
               13:    7(fvec4) Load 10(input)
diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out
index b954c2b..ace4cae 100644
--- a/Test/baseResults/hlsl.gather.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out
@@ -301,19 +301,19 @@
                               Name 120  "g_tTex1di4a"
                               Name 123  "g_tTex1du4a"
                               Decorate 16(g_tTex2df4a) DescriptorSet 0
-                              Decorate 16(g_tTex2df4a) Binding 0
+                              Decorate 16(g_tTex2df4a) Binding 2
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 37(g_tTex2di4a) DescriptorSet 0
-                              Decorate 37(g_tTex2di4a) Binding 0
+                              Decorate 37(g_tTex2di4a) Binding 3
                               Decorate 52(g_tTex2du4a) DescriptorSet 0
-                              Decorate 52(g_tTex2du4a) Binding 0
+                              Decorate 52(g_tTex2du4a) Binding 4
                               Decorate 64(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 64(g_tTexcdf4a) Binding 0
+                              Decorate 64(g_tTexcdf4a) Binding 5
                               Decorate 74(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 74(g_tTexcdi4a) Binding 0
+                              Decorate 74(g_tTexcdi4a) Binding 6
                               Decorate 84(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 84(g_tTexcdu4a) Binding 0
+                              Decorate 84(g_tTexcdu4a) Binding 7
                               Decorate 107(@entryPointOutput.Color) Location 0
                               Decorate 111(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 116(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
index 530bccd..32ab41b 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
@@ -300,19 +300,19 @@
                               Name 131  "g_tTex3di4"
                               Name 134  "g_tTex3du4"
                               Decorate 16(g_tTex2df4) DescriptorSet 0
-                              Decorate 16(g_tTex2df4) Binding 0
+                              Decorate 16(g_tTex2df4) Binding 2
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 36(g_tTex2di4) DescriptorSet 0
-                              Decorate 36(g_tTex2di4) Binding 0
+                              Decorate 36(g_tTex2di4) Binding 3
                               Decorate 51(g_tTex2du4) DescriptorSet 0
-                              Decorate 51(g_tTex2du4) Binding 0
+                              Decorate 51(g_tTex2du4) Binding 4
                               Decorate 63(g_tTexcdf4) DescriptorSet 0
-                              Decorate 63(g_tTexcdf4) Binding 0
+                              Decorate 63(g_tTexcdf4) Binding 5
                               Decorate 74(g_tTexcdi4) DescriptorSet 0
-                              Decorate 74(g_tTexcdi4) Binding 0
+                              Decorate 74(g_tTexcdi4) Binding 6
                               Decorate 84(g_tTexcdu4) DescriptorSet 0
-                              Decorate 84(g_tTexcdu4) Binding 0
+                              Decorate 84(g_tTexcdu4) Binding 7
                               Decorate 108(@entryPointOutput.Color) Location 0
                               Decorate 112(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 115(g_sSamp2d) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
index de745d1..95c225c 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
@@ -257,19 +257,19 @@
                               Name 122  "g_tTex3di4"
                               Name 125  "g_tTex3du4"
                               Decorate 16(g_tTex2df4) DescriptorSet 0
-                              Decorate 16(g_tTex2df4) Binding 0
+                              Decorate 16(g_tTex2df4) Binding 2
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 36(g_tTex2di4) DescriptorSet 0
-                              Decorate 36(g_tTex2di4) Binding 0
+                              Decorate 36(g_tTex2di4) Binding 3
                               Decorate 51(g_tTex2du4) DescriptorSet 0
-                              Decorate 51(g_tTex2du4) Binding 0
+                              Decorate 51(g_tTex2du4) Binding 4
                               Decorate 63(g_tTexcdf4) DescriptorSet 0
-                              Decorate 63(g_tTexcdf4) Binding 0
+                              Decorate 63(g_tTexcdf4) Binding 5
                               Decorate 74(g_tTexcdi4) DescriptorSet 0
-                              Decorate 74(g_tTexcdi4) Binding 0
+                              Decorate 74(g_tTexcdi4) Binding 6
                               Decorate 84(g_tTexcdu4) DescriptorSet 0
-                              Decorate 84(g_tTexcdu4) Binding 0
+                              Decorate 84(g_tTexcdu4) Binding 7
                               Decorate 103(@entryPointOutput.Pos) BuiltIn Position
                               Decorate 106(g_sSamp2d) DescriptorSet 0
                               Decorate 106(g_sSamp2d) Binding 0
diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
index 3a89712..6f2c999 100644
--- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
@@ -246,13 +246,13 @@
                               Name 110  "g_tTexcdi4"
                               Name 113  "g_tTexcdu4"
                               Decorate 16(g_tTex2df4) DescriptorSet 0
-                              Decorate 16(g_tTex2df4) Binding 0
+                              Decorate 16(g_tTex2df4) Binding 2
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 39(g_tTex2di4) DescriptorSet 0
-                              Decorate 39(g_tTex2di4) Binding 0
+                              Decorate 39(g_tTex2di4) Binding 3
                               Decorate 55(g_tTex2du4) DescriptorSet 0
-                              Decorate 55(g_tTex2du4) Binding 0
+                              Decorate 55(g_tTex2du4) Binding 4
                               Decorate 79(@entryPointOutput.Color) Location 0
                               Decorate 83(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 88(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
index 3601187..94e311d 100644
--- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
@@ -234,13 +234,13 @@
                               Name 93  "g_tTex1di4"
                               Name 96  "g_tTex1du4"
                               Decorate 16(g_tTex2df4) DescriptorSet 0
-                              Decorate 16(g_tTex2df4) Binding 0
+                              Decorate 16(g_tTex2df4) Binding 2
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 40(g_tTex2di4) DescriptorSet 0
-                              Decorate 40(g_tTex2di4) Binding 0
+                              Decorate 40(g_tTex2di4) Binding 3
                               Decorate 55(g_tTex2du4) DescriptorSet 0
-                              Decorate 55(g_tTex2du4) Binding 0
+                              Decorate 55(g_tTex2du4) Binding 4
                               Decorate 80(@entryPointOutput.Color) Location 0
                               Decorate 84(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 89(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
index c2a4901..e5b7fbb 100644
--- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
@@ -813,7 +813,7 @@
                               Name 251  "g_tTex1di4a"
                               Name 254  "g_tTex1du4a"
                               Decorate 16(g_tTex2df4a) DescriptorSet 0
-                              Decorate 16(g_tTex2df4a) Binding 0
+                              Decorate 16(g_tTex2df4a) Binding 1
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               MemberDecorate 26($Global) 0 Offset 0
@@ -822,17 +822,17 @@
                               MemberDecorate 26($Global) 3 Offset 32
                               Decorate 26($Global) Block
                               Decorate 28 DescriptorSet 0
-                              Decorate 28 Binding 0
+                              Decorate 28 Binding 7
                               Decorate 41(g_tTex2di4a) DescriptorSet 0
-                              Decorate 41(g_tTex2di4a) Binding 0
+                              Decorate 41(g_tTex2di4a) Binding 2
                               Decorate 55(g_tTex2du4a) DescriptorSet 0
-                              Decorate 55(g_tTex2du4a) Binding 0
+                              Decorate 55(g_tTex2du4a) Binding 3
                               Decorate 131(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 131(g_tTexcdf4a) Binding 0
+                              Decorate 131(g_tTexcdf4a) Binding 4
                               Decorate 143(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 143(g_tTexcdi4a) Binding 0
+                              Decorate 143(g_tTexcdi4a) Binding 5
                               Decorate 154(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 154(g_tTexcdu4a) Binding 0
+                              Decorate 154(g_tTexcdu4a) Binding 6
                               Decorate 238(@entryPointOutput.Color) Location 0
                               Decorate 242(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 245(g_sSamp2d) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
index 8bb01d5..0540eb3 100644
--- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
@@ -824,7 +824,7 @@
                               Name 261  "g_tTex3di4"
                               Name 264  "g_tTex3du4"
                               Decorate 16(g_tTex2df4) DescriptorSet 0
-                              Decorate 16(g_tTex2df4) Binding 0
+                              Decorate 16(g_tTex2df4) Binding 2
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               MemberDecorate 26($Global) 0 Offset 0
@@ -833,17 +833,17 @@
                               MemberDecorate 26($Global) 3 Offset 32
                               Decorate 26($Global) Block
                               Decorate 28 DescriptorSet 0
-                              Decorate 28 Binding 0
+                              Decorate 28 Binding 8
                               Decorate 41(g_tTex2di4) DescriptorSet 0
-                              Decorate 41(g_tTex2di4) Binding 0
+                              Decorate 41(g_tTex2di4) Binding 3
                               Decorate 55(g_tTex2du4) DescriptorSet 0
-                              Decorate 55(g_tTex2du4) Binding 0
+                              Decorate 55(g_tTex2du4) Binding 4
                               Decorate 131(g_tTexcdf4) DescriptorSet 0
-                              Decorate 131(g_tTexcdf4) Binding 0
+                              Decorate 131(g_tTexcdf4) Binding 5
                               Decorate 143(g_tTexcdi4) DescriptorSet 0
-                              Decorate 143(g_tTexcdi4) Binding 0
+                              Decorate 143(g_tTexcdi4) Binding 6
                               Decorate 154(g_tTexcdu4) DescriptorSet 0
-                              Decorate 154(g_tTexcdu4) Binding 0
+                              Decorate 154(g_tTexcdu4) Binding 7
                               Decorate 238(@entryPointOutput.Color) Location 0
                               Decorate 242(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 245(g_sSamp2d) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
index a777678..ca26933 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
@@ -1334,7 +1334,7 @@
                               Name 395  "g_tTexcdi4"
                               Name 398  "g_tTexcdu4"
                               Decorate 16(g_tTex2df4) DescriptorSet 0
-                              Decorate 16(g_tTex2df4) Binding 0
+                              Decorate 16(g_tTex2df4) Binding 2
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               MemberDecorate 30($Global) 0 Offset 0
@@ -1347,11 +1347,11 @@
                               MemberDecorate 30($Global) 7 Offset 80
                               Decorate 30($Global) Block
                               Decorate 32 DescriptorSet 0
-                              Decorate 32 Binding 0
+                              Decorate 32 Binding 5
                               Decorate 47(g_tTex2di4) DescriptorSet 0
-                              Decorate 47(g_tTex2di4) Binding 0
+                              Decorate 47(g_tTex2di4) Binding 3
                               Decorate 63(g_tTex2du4) DescriptorSet 0
-                              Decorate 63(g_tTex2du4) Binding 0
+                              Decorate 63(g_tTex2du4) Binding 4
                               Decorate 363(@entryPointOutput.Color) Location 0
                               Decorate 367(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 370(g_sSamp2d) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
index 2acc975..a8ae3f6 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
@@ -1323,7 +1323,7 @@
                               Name 385  "g_tTexcdi4a"
                               Name 388  "g_tTexcdu4a"
                               Decorate 16(g_tTex2df4a) DescriptorSet 0
-                              Decorate 16(g_tTex2df4a) Binding 0
+                              Decorate 16(g_tTex2df4a) Binding 1
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               MemberDecorate 30($Global) 0 Offset 0
@@ -1336,11 +1336,11 @@
                               MemberDecorate 30($Global) 7 Offset 80
                               Decorate 30($Global) Block
                               Decorate 32 DescriptorSet 0
-                              Decorate 32 Binding 0
+                              Decorate 32 Binding 4
                               Decorate 47(g_tTex2di4a) DescriptorSet 0
-                              Decorate 47(g_tTex2di4a) Binding 0
+                              Decorate 47(g_tTex2di4a) Binding 2
                               Decorate 63(g_tTex2du4a) DescriptorSet 0
-                              Decorate 63(g_tTex2du4a) Binding 0
+                              Decorate 63(g_tTex2du4a) Binding 3
                               Decorate 363(@entryPointOutput.Color) Location 0
                               Decorate 367(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 370(g_sSamp2d) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
index 8ad84cd..4e84516 100644
--- a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
@@ -507,7 +507,7 @@
                               Name 160  "g_tTexcdi4"
                               Name 163  "g_tTexcdu4"
                               Decorate 16(g_tTex2df4) DescriptorSet 0
-                              Decorate 16(g_tTex2df4) Binding 0
+                              Decorate 16(g_tTex2df4) Binding 2
                               Decorate 20(g_sSampCmp) DescriptorSet 0
                               Decorate 20(g_sSampCmp) Binding 0
                               MemberDecorate 26($Global) 0 Offset 0
@@ -516,11 +516,11 @@
                               MemberDecorate 26($Global) 3 Offset 32
                               Decorate 26($Global) Block
                               Decorate 28 DescriptorSet 0
-                              Decorate 28 Binding 0
+                              Decorate 28 Binding 5
                               Decorate 44(g_tTex2di4) DescriptorSet 0
-                              Decorate 44(g_tTex2di4) Binding 0
+                              Decorate 44(g_tTex2di4) Binding 3
                               Decorate 60(g_tTex2du4) DescriptorSet 0
-                              Decorate 60(g_tTex2du4) Binding 0
+                              Decorate 60(g_tTex2du4) Binding 4
                               Decorate 129(@entryPointOutput.Color) Location 0
                               Decorate 133(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 138(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
index cf406ed..16b48cd 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
@@ -2425,57 +2425,57 @@
                               Decorate 17(g_tTex1df4) DescriptorSet 0
                               Decorate 17(g_tTex1df4) Binding 0
                               Decorate 35(g_tTex1di4) DescriptorSet 0
-                              Decorate 35(g_tTex1di4) Binding 0
+                              Decorate 35(g_tTex1di4) Binding 1
                               Decorate 48(g_tTex1du4) DescriptorSet 0
-                              Decorate 48(g_tTex1du4) Binding 0
+                              Decorate 48(g_tTex1du4) Binding 2
                               Decorate 63(g_tTex1df4a) DescriptorSet 0
-                              Decorate 63(g_tTex1df4a) Binding 0
+                              Decorate 63(g_tTex1df4a) Binding 12
                               Decorate 85(g_tTex1di4a) DescriptorSet 0
-                              Decorate 85(g_tTex1di4a) Binding 0
+                              Decorate 85(g_tTex1di4a) Binding 13
                               Decorate 104(g_tTex1du4a) DescriptorSet 0
-                              Decorate 104(g_tTex1du4a) Binding 0
+                              Decorate 104(g_tTex1du4a) Binding 14
                               Decorate 123(g_tTex2df4) DescriptorSet 0
-                              Decorate 123(g_tTex2df4) Binding 0
+                              Decorate 123(g_tTex2df4) Binding 3
                               Decorate 143(g_tTex2di4) DescriptorSet 0
-                              Decorate 143(g_tTex2di4) Binding 0
+                              Decorate 143(g_tTex2di4) Binding 4
                               Decorate 162(g_tTex2du4) DescriptorSet 0
-                              Decorate 162(g_tTex2du4) Binding 0
+                              Decorate 162(g_tTex2du4) Binding 5
                               Decorate 183(g_tTex2df4a) DescriptorSet 0
-                              Decorate 183(g_tTex2df4a) Binding 0
+                              Decorate 183(g_tTex2df4a) Binding 15
                               Decorate 207(g_tTex2di4a) DescriptorSet 0
-                              Decorate 207(g_tTex2di4a) Binding 0
+                              Decorate 207(g_tTex2di4a) Binding 16
                               Decorate 230(g_tTex2du4a) DescriptorSet 0
-                              Decorate 230(g_tTex2du4a) Binding 0
+                              Decorate 230(g_tTex2du4a) Binding 17
                               Decorate 253(g_tTex3df4) DescriptorSet 0
-                              Decorate 253(g_tTex3df4) Binding 0
+                              Decorate 253(g_tTex3df4) Binding 6
                               Decorate 277(g_tTex3di4) DescriptorSet 0
-                              Decorate 277(g_tTex3di4) Binding 0
+                              Decorate 277(g_tTex3di4) Binding 7
                               Decorate 300(g_tTex3du4) DescriptorSet 0
-                              Decorate 300(g_tTex3du4) Binding 0
+                              Decorate 300(g_tTex3du4) Binding 8
                               Decorate 323(g_tTexcdf4) DescriptorSet 0
-                              Decorate 323(g_tTexcdf4) Binding 0
+                              Decorate 323(g_tTexcdf4) Binding 9
                               Decorate 342(g_tTexcdi4) DescriptorSet 0
-                              Decorate 342(g_tTexcdi4) Binding 0
+                              Decorate 342(g_tTexcdi4) Binding 10
                               Decorate 361(g_tTexcdu4) DescriptorSet 0
-                              Decorate 361(g_tTexcdu4) Binding 0
+                              Decorate 361(g_tTexcdu4) Binding 11
                               Decorate 380(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 380(g_tTexcdf4a) Binding 0
+                              Decorate 380(g_tTexcdf4a) Binding 18
                               Decorate 403(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 403(g_tTexcdi4a) Binding 0
+                              Decorate 403(g_tTexcdi4a) Binding 19
                               Decorate 426(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 426(g_tTexcdu4a) Binding 0
+                              Decorate 426(g_tTexcdu4a) Binding 20
                               Decorate 449(g_tTex2dmsf4) DescriptorSet 0
-                              Decorate 449(g_tTex2dmsf4) Binding 0
+                              Decorate 449(g_tTex2dmsf4) Binding 21
                               Decorate 462(g_tTex2dmsi4) DescriptorSet 0
-                              Decorate 462(g_tTex2dmsi4) Binding 0
+                              Decorate 462(g_tTex2dmsi4) Binding 22
                               Decorate 474(g_tTex2dmsu4) DescriptorSet 0
-                              Decorate 474(g_tTex2dmsu4) Binding 0
+                              Decorate 474(g_tTex2dmsu4) Binding 23
                               Decorate 486(g_tTex2dmsf4a) DescriptorSet 0
-                              Decorate 486(g_tTex2dmsf4a) Binding 0
+                              Decorate 486(g_tTex2dmsf4a) Binding 24
                               Decorate 500(g_tTex2dmsi4a) DescriptorSet 0
-                              Decorate 500(g_tTex2dmsi4a) Binding 0
+                              Decorate 500(g_tTex2dmsi4a) Binding 25
                               Decorate 514(g_tTex2dmsu4a) DescriptorSet 0
-                              Decorate 514(g_tTex2dmsu4a) Binding 0
+                              Decorate 514(g_tTex2dmsu4a) Binding 26
                               Decorate 540(@entryPointOutput.Color) Location 0
                               Decorate 544(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 549(g_sSamp) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
index d096c38..c0751bb 100644
--- a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
@@ -794,39 +794,39 @@
                               Decorate 17(g_tTex1df4) DescriptorSet 0
                               Decorate 17(g_tTex1df4) Binding 0
                               Decorate 26(g_tTex1di4) DescriptorSet 0
-                              Decorate 26(g_tTex1di4) Binding 0
+                              Decorate 26(g_tTex1di4) Binding 1
                               Decorate 33(g_tTex1du4) DescriptorSet 0
-                              Decorate 33(g_tTex1du4) Binding 0
+                              Decorate 33(g_tTex1du4) Binding 2
                               Decorate 40(g_tBuffF) DescriptorSet 0
-                              Decorate 40(g_tBuffF) Binding 0
+                              Decorate 40(g_tBuffF) Binding 15
                               Decorate 47(g_tBuffI) DescriptorSet 0
-                              Decorate 47(g_tBuffI) Binding 0
+                              Decorate 47(g_tBuffI) Binding 16
                               Decorate 54(g_tBuffU) DescriptorSet 0
-                              Decorate 54(g_tBuffU) Binding 0
+                              Decorate 54(g_tBuffU) Binding 17
                               Decorate 63(g_tTex1df4a) DescriptorSet 0
-                              Decorate 63(g_tTex1df4a) Binding 0
+                              Decorate 63(g_tTex1df4a) Binding 9
                               Decorate 76(g_tTex1di4a) DescriptorSet 0
-                              Decorate 76(g_tTex1di4a) Binding 0
+                              Decorate 76(g_tTex1di4a) Binding 10
                               Decorate 86(g_tTex1du4a) DescriptorSet 0
-                              Decorate 86(g_tTex1du4a) Binding 0
+                              Decorate 86(g_tTex1du4a) Binding 11
                               Decorate 96(g_tTex2df4) DescriptorSet 0
-                              Decorate 96(g_tTex2df4) Binding 0
+                              Decorate 96(g_tTex2df4) Binding 3
                               Decorate 107(g_tTex2di4) DescriptorSet 0
-                              Decorate 107(g_tTex2di4) Binding 0
+                              Decorate 107(g_tTex2di4) Binding 4
                               Decorate 117(g_tTex2du4) DescriptorSet 0
-                              Decorate 117(g_tTex2du4) Binding 0
+                              Decorate 117(g_tTex2du4) Binding 5
                               Decorate 129(g_tTex2df4a) DescriptorSet 0
-                              Decorate 129(g_tTex2df4a) Binding 0
+                              Decorate 129(g_tTex2df4a) Binding 12
                               Decorate 142(g_tTex2di4a) DescriptorSet 0
-                              Decorate 142(g_tTex2di4a) Binding 0
+                              Decorate 142(g_tTex2di4a) Binding 13
                               Decorate 154(g_tTex2du4a) DescriptorSet 0
-                              Decorate 154(g_tTex2du4a) Binding 0
+                              Decorate 154(g_tTex2du4a) Binding 14
                               Decorate 166(g_tTex3df4) DescriptorSet 0
-                              Decorate 166(g_tTex3df4) Binding 0
+                              Decorate 166(g_tTex3df4) Binding 6
                               Decorate 179(g_tTex3di4) DescriptorSet 0
-                              Decorate 179(g_tTex3di4) Binding 0
+                              Decorate 179(g_tTex3di4) Binding 7
                               Decorate 191(g_tTex3du4) DescriptorSet 0
-                              Decorate 191(g_tTex3du4) Binding 0
+                              Decorate 191(g_tTex3du4) Binding 8
                               Decorate 216(@entryPointOutput.Color) Location 0
                               Decorate 220(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 225(g_sSamp) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
index 7c46c8e..cde5dc8 100644
--- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
+++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
@@ -620,9 +620,9 @@
                               Name 192  "@entryPointOutput.Depth"
                               Name 197  "g_sSamp"
                               Decorate 23(g_tTex2dmsf4) DescriptorSet 0
-                              Decorate 23(g_tTex2dmsf4) Binding 0
+                              Decorate 23(g_tTex2dmsf4) Binding 1
                               Decorate 131(g_tTex2dmsf4a) DescriptorSet 0
-                              Decorate 131(g_tTex2dmsf4a) Binding 0
+                              Decorate 131(g_tTex2dmsf4a) Binding 2
                               Decorate 181(sample) Flat
                               Decorate 181(sample) Location 0
                               Decorate 188(@entryPointOutput.Color) Location 0
diff --git a/Test/baseResults/hlsl.intrinsic.frexp.vert.out b/Test/baseResults/hlsl.intrinsic.frexp.vert.out
index 7069ece..e062534 100644
--- a/Test/baseResults/hlsl.intrinsic.frexp.vert.out
+++ b/Test/baseResults/hlsl.intrinsic.frexp.vert.out
@@ -51,12 +51,17 @@
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
+0:29  Function Definition: @main( ( temp void)
+0:29    Function Parameters: 
+0:29  Function Definition: main( ( temp void)
+0:29    Function Parameters: 
+0:?     Sequence
+0:29      Function Call: @main( ( temp void)
 0:?   Linker Objects
 
 
 Linked vertex stage:
 
-WARNING: Linking vertex stage: Entry point not found
 
 Shader version: 500
 0:? Sequence
@@ -110,18 +115,24 @@
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
+0:29  Function Definition: @main( ( temp void)
+0:29    Function Parameters: 
+0:29  Function Definition: main( ( temp void)
+0:29    Function Parameters: 
+0:?     Sequence
+0:29      Function Call: @main( ( temp void)
 0:?   Linker Objects
 
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 78
+// Id's are bound by 81
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "VertexShaderFunction"
+                              EntryPoint Vertex 4  "main"
                               Source HLSL 500
-                              Name 4  "VertexShaderFunction"
+                              Name 4  "main"
                               Name 11  "VertexShaderFunctionS(f1;f1;"
                               Name 9  "inF0"
                               Name 10  "inF1"
@@ -134,10 +145,11 @@
                               Name 32  "VertexShaderFunction4(vf4;vf4;"
                               Name 30  "inF0"
                               Name 31  "inF1"
-                              Name 36  "ResType"
-                              Name 46  "ResType"
-                              Name 58  "ResType"
-                              Name 69  "ResType"
+                              Name 34  "@main("
+                              Name 38  "ResType"
+                              Name 48  "ResType"
+                              Name 60  "ResType"
+                              Name 71  "ResType"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -152,71 +164,76 @@
               27:             TypeVector 6(float) 4
               28:             TypePointer Function 27(fvec4)
               29:             TypeFunction 27(fvec4) 28(ptr) 28(ptr)
-              35:             TypeInt 32 1
-     36(ResType):             TypeStruct 6(float) 35(int)
-              41:    6(float) Constant 0
-              45:             TypeVector 35(int) 2
-     46(ResType):             TypeStruct 13(fvec2) 45(ivec2)
-              51:    6(float) Constant 1065353216
-              52:    6(float) Constant 1073741824
-              53:   13(fvec2) ConstantComposite 51 52
-              57:             TypeVector 35(int) 3
-     58(ResType):             TypeStruct 20(fvec3) 57(ivec3)
-              63:    6(float) Constant 1077936128
-              64:   20(fvec3) ConstantComposite 51 52 63
-              68:             TypeVector 35(int) 4
-     69(ResType):             TypeStruct 27(fvec4) 68(ivec4)
-              74:    6(float) Constant 1082130432
-              75:   27(fvec4) ConstantComposite 51 52 63 74
-4(VertexShaderFunction):           2 Function None 3
+              37:             TypeInt 32 1
+     38(ResType):             TypeStruct 6(float) 37(int)
+              43:    6(float) Constant 0
+              47:             TypeVector 37(int) 2
+     48(ResType):             TypeStruct 13(fvec2) 47(ivec2)
+              53:    6(float) Constant 1065353216
+              54:    6(float) Constant 1073741824
+              55:   13(fvec2) ConstantComposite 53 54
+              59:             TypeVector 37(int) 3
+     60(ResType):             TypeStruct 20(fvec3) 59(ivec3)
+              65:    6(float) Constant 1077936128
+              66:   20(fvec3) ConstantComposite 53 54 65
+              70:             TypeVector 37(int) 4
+     71(ResType):             TypeStruct 27(fvec4) 70(ivec4)
+              76:    6(float) Constant 1082130432
+              77:   27(fvec4) ConstantComposite 53 54 65 76
+         4(main):           2 Function None 3
                5:             Label
+              80:           2 FunctionCall 34(@main()
                               Return
                               FunctionEnd
 11(VertexShaderFunctionS(f1;f1;):    6(float) Function None 8
          9(inF0):      7(ptr) FunctionParameter
         10(inF1):      7(ptr) FunctionParameter
               12:             Label
-              34:    6(float) Load 9(inF0)
-              37: 36(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 34
-              38:     35(int) CompositeExtract 37 1
-              39:    6(float) ConvertSToF 38
-                              Store 10(inF1) 39
-              40:    6(float) CompositeExtract 37 0
-                              ReturnValue 41
+              36:    6(float) Load 9(inF0)
+              39: 38(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 36
+              40:     37(int) CompositeExtract 39 1
+              41:    6(float) ConvertSToF 40
+                              Store 10(inF1) 41
+              42:    6(float) CompositeExtract 39 0
+                              ReturnValue 43
                               FunctionEnd
 18(VertexShaderFunction2(vf2;vf2;):   13(fvec2) Function None 15
         16(inF0):     14(ptr) FunctionParameter
         17(inF1):     14(ptr) FunctionParameter
               19:             Label
-              44:   13(fvec2) Load 16(inF0)
-              47: 46(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 44
-              48:   45(ivec2) CompositeExtract 47 1
-              49:   13(fvec2) ConvertSToF 48
-                              Store 17(inF1) 49
-              50:   13(fvec2) CompositeExtract 47 0
-                              ReturnValue 53
+              46:   13(fvec2) Load 16(inF0)
+              49: 48(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 46
+              50:   47(ivec2) CompositeExtract 49 1
+              51:   13(fvec2) ConvertSToF 50
+                              Store 17(inF1) 51
+              52:   13(fvec2) CompositeExtract 49 0
+                              ReturnValue 55
                               FunctionEnd
 25(VertexShaderFunction3(vf3;vf3;):   20(fvec3) Function None 22
         23(inF0):     21(ptr) FunctionParameter
         24(inF1):     21(ptr) FunctionParameter
               26:             Label
-              56:   20(fvec3) Load 23(inF0)
-              59: 58(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 56
-              60:   57(ivec3) CompositeExtract 59 1
-              61:   20(fvec3) ConvertSToF 60
-                              Store 24(inF1) 61
-              62:   20(fvec3) CompositeExtract 59 0
-                              ReturnValue 64
+              58:   20(fvec3) Load 23(inF0)
+              61: 60(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 58
+              62:   59(ivec3) CompositeExtract 61 1
+              63:   20(fvec3) ConvertSToF 62
+                              Store 24(inF1) 63
+              64:   20(fvec3) CompositeExtract 61 0
+                              ReturnValue 66
                               FunctionEnd
 32(VertexShaderFunction4(vf4;vf4;):   27(fvec4) Function None 29
         30(inF0):     28(ptr) FunctionParameter
         31(inF1):     28(ptr) FunctionParameter
               33:             Label
-              67:   27(fvec4) Load 30(inF0)
-              70: 69(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 67
-              71:   68(ivec4) CompositeExtract 70 1
-              72:   27(fvec4) ConvertSToF 71
-                              Store 31(inF1) 72
-              73:   27(fvec4) CompositeExtract 70 0
-                              ReturnValue 75
+              69:   27(fvec4) Load 30(inF0)
+              72: 71(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 69
+              73:   70(ivec4) CompositeExtract 72 1
+              74:   27(fvec4) ConvertSToF 73
+                              Store 31(inF1) 74
+              75:   27(fvec4) CompositeExtract 72 0
+                              ReturnValue 77
+                              FunctionEnd
+      34(@main():           2 Function None 3
+              35:             Label
+                              Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out
index 41b1c68..b51c6df 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.frag.out
@@ -966,9 +966,9 @@
                               Decorate 21 DescriptorSet 0
                               Decorate 21 Binding 0
                               Decorate 258(g_tTexbfs) DescriptorSet 0
-                              Decorate 258(g_tTexbfs) Binding 0
+                              Decorate 258(g_tTexbfs) Binding 1
                               Decorate 277(g_tTex1df4) DescriptorSet 0
-                              Decorate 277(g_tTex1df4) Binding 0
+                              Decorate 277(g_tTex1df4) Binding 2
                               Decorate 319(@entryPointOutput.color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
index 143fa72..e4846e7 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
@@ -258,7 +258,7 @@
                               Decorate 19 DescriptorSet 0
                               Decorate 19 Binding 0
                               Decorate 31(g_tTex1df4) DescriptorSet 0
-                              Decorate 31(g_tTex1df4) Binding 0
+                              Decorate 31(g_tTex1df4) Binding 1
                               Decorate 74(@entryPointOutput.color) Location 0
                               Decorate 79(g_tTexbfs) DescriptorSet 0
                               Decorate 79(g_tTexbfs) Binding 0
diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out
index 28e8e41..9ba69d9 100644
--- a/Test/baseResults/hlsl.intrinsics.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.vert.out
@@ -1384,12 +1384,17 @@
 0:413          matrix-multiply ( temp 3X4 matrix of float)
 0:413            'inFM2x4' ( in 2X4 matrix of float)
 0:413            'inFM3x2' ( in 3X2 matrix of float)
+0:416  Function Definition: @main( ( temp void)
+0:416    Function Parameters: 
+0:416  Function Definition: main( ( temp void)
+0:416    Function Parameters: 
+0:?     Sequence
+0:416      Function Call: @main( ( temp void)
 0:?   Linker Objects
 
 
 Linked vertex stage:
 
-WARNING: Linking vertex stage: Entry point not found
 
 Shader version: 500
 0:? Sequence
@@ -2776,19 +2781,25 @@
 0:413          matrix-multiply ( temp 3X4 matrix of float)
 0:413            'inFM2x4' ( in 2X4 matrix of float)
 0:413            'inFM3x2' ( in 3X2 matrix of float)
+0:416  Function Definition: @main( ( temp void)
+0:416    Function Parameters: 
+0:416  Function Definition: main( ( temp void)
+0:416    Function Parameters: 
+0:?     Sequence
+0:416      Function Call: @main( ( temp void)
 0:?   Linker Objects
 
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 1225
+// Id's are bound by 1228
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "VertexShaderFunction"
+                              EntryPoint Vertex 4  "main"
                               Source HLSL 500
-                              Name 4  "VertexShaderFunction"
+                              Name 4  "main"
                               Name 16  "VertexShaderFunctionS(f1;f1;f1;u1;u1;"
                               Name 11  "inF0"
                               Name 12  "inF1"
@@ -2860,50 +2871,51 @@
                               Name 126  "inFM3x3"
                               Name 127  "inFM3x4"
                               Name 128  "inFM2x4"
-                              Name 1049  "r0"
-                              Name 1053  "r1"
-                              Name 1057  "r2"
-                              Name 1061  "r3"
-                              Name 1065  "r4"
-                              Name 1069  "r5"
-                              Name 1073  "r6"
-                              Name 1077  "r7"
-                              Name 1081  "r8"
-                              Name 1085  "r0"
-                              Name 1089  "r1"
-                              Name 1093  "r2"
-                              Name 1097  "r3"
-                              Name 1101  "r4"
-                              Name 1105  "r5"
-                              Name 1109  "r6"
-                              Name 1113  "r7"
-                              Name 1117  "r8"
-                              Name 1121  "r0"
-                              Name 1125  "r1"
-                              Name 1129  "r2"
-                              Name 1133  "r3"
-                              Name 1137  "r4"
-                              Name 1141  "r5"
-                              Name 1145  "r6"
-                              Name 1149  "r7"
-                              Name 1153  "r8"
-                              Name 1157  "r00"
-                              Name 1161  "r01"
-                              Name 1165  "r02"
-                              Name 1169  "r03"
-                              Name 1173  "r04"
-                              Name 1177  "r05"
-                              Name 1181  "r06"
-                              Name 1185  "r07"
-                              Name 1189  "r08"
-                              Name 1193  "r09"
-                              Name 1197  "r10"
-                              Name 1201  "r11"
-                              Name 1205  "r12"
-                              Name 1209  "r13"
-                              Name 1213  "r14"
-                              Name 1217  "r15"
-                              Name 1221  "r16"
+                              Name 131  "@main("
+                              Name 1051  "r0"
+                              Name 1055  "r1"
+                              Name 1059  "r2"
+                              Name 1063  "r3"
+                              Name 1067  "r4"
+                              Name 1071  "r5"
+                              Name 1075  "r6"
+                              Name 1079  "r7"
+                              Name 1083  "r8"
+                              Name 1087  "r0"
+                              Name 1091  "r1"
+                              Name 1095  "r2"
+                              Name 1099  "r3"
+                              Name 1103  "r4"
+                              Name 1107  "r5"
+                              Name 1111  "r6"
+                              Name 1115  "r7"
+                              Name 1119  "r8"
+                              Name 1123  "r0"
+                              Name 1127  "r1"
+                              Name 1131  "r2"
+                              Name 1135  "r3"
+                              Name 1139  "r4"
+                              Name 1143  "r5"
+                              Name 1147  "r6"
+                              Name 1151  "r7"
+                              Name 1155  "r8"
+                              Name 1159  "r00"
+                              Name 1163  "r01"
+                              Name 1167  "r02"
+                              Name 1171  "r03"
+                              Name 1175  "r04"
+                              Name 1179  "r05"
+                              Name 1183  "r06"
+                              Name 1187  "r07"
+                              Name 1191  "r08"
+                              Name 1195  "r09"
+                              Name 1199  "r10"
+                              Name 1203  "r11"
+                              Name 1207  "r12"
+                              Name 1211  "r13"
+                              Name 1215  "r14"
+                              Name 1219  "r15"
+                              Name 1223  "r16"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -2948,52 +2960,53 @@
              117:             TypeMatrix 48(fvec4) 2
              118:             TypePointer Function 117
              119:             TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr)
-             132:             TypeBool
-             133:    6(float) Constant 0
-             146:             TypeInt 32 1
-             167:    146(int) Constant 7
-             199:    6(float) Constant 1050288283
-             214:    146(int) Constant 2
-             221:    6(float) Constant 1065353216
-             253:             TypeVector 132(bool) 2
-             254:   24(fvec2) ConstantComposite 133 133
-             267:             TypeVector 146(int) 2
-             288:    146(int) Constant 3
-             289:  267(ivec2) ConstantComposite 167 288
-             354:    6(float) Constant 1073741824
-             356:    146(int) Constant 1
-             357:  267(ivec2) ConstantComposite 356 214
-             392:   24(fvec2) ConstantComposite 221 354
-             396:             TypeVector 132(bool) 3
-             397:   36(fvec3) ConstantComposite 133 133 133
-             410:             TypeVector 146(int) 3
-             431:    146(int) Constant 5
-             432:  410(ivec3) ConstantComposite 167 288 431
-             501:  410(ivec3) ConstantComposite 356 214 288
-             536:    6(float) Constant 1077936128
-             537:   36(fvec3) ConstantComposite 221 354 536
-             541:             TypeVector 132(bool) 4
-             542:   48(fvec4) ConstantComposite 133 133 133 133
-             555:             TypeVector 146(int) 4
-             576:  555(ivec4) ConstantComposite 167 288 431 214
-             586:      8(int) Constant 1
-             592:      8(int) Constant 2
-             595:      8(int) Constant 3
-             655:    146(int) Constant 4
-             656:  555(ivec4) ConstantComposite 356 214 288 655
-             691:    6(float) Constant 1082130432
-             692:   48(fvec4) ConstantComposite 221 354 536 691
-             696:             TypeMatrix 253(bvec2) 2
-             806:   24(fvec2) ConstantComposite 354 354
-             807:          60 ConstantComposite 806 806
-             811:             TypeMatrix 396(bvec3) 3
-             924:   36(fvec3) ConstantComposite 536 536 536
-             925:          68 ConstantComposite 924 924 924
-             929:             TypeMatrix 541(bvec4) 4
-            1045:   48(fvec4) ConstantComposite 691 691 691 691
-            1046:          76 ConstantComposite 1045 1045 1045 1045
-4(VertexShaderFunction):           2 Function None 3
+             134:             TypeBool
+             135:    6(float) Constant 0
+             148:             TypeInt 32 1
+             169:    148(int) Constant 7
+             201:    6(float) Constant 1050288283
+             216:    148(int) Constant 2
+             223:    6(float) Constant 1065353216
+             255:             TypeVector 134(bool) 2
+             256:   24(fvec2) ConstantComposite 135 135
+             269:             TypeVector 148(int) 2
+             290:    148(int) Constant 3
+             291:  269(ivec2) ConstantComposite 169 290
+             356:    6(float) Constant 1073741824
+             358:    148(int) Constant 1
+             359:  269(ivec2) ConstantComposite 358 216
+             394:   24(fvec2) ConstantComposite 223 356
+             398:             TypeVector 134(bool) 3
+             399:   36(fvec3) ConstantComposite 135 135 135
+             412:             TypeVector 148(int) 3
+             433:    148(int) Constant 5
+             434:  412(ivec3) ConstantComposite 169 290 433
+             503:  412(ivec3) ConstantComposite 358 216 290
+             538:    6(float) Constant 1077936128
+             539:   36(fvec3) ConstantComposite 223 356 538
+             543:             TypeVector 134(bool) 4
+             544:   48(fvec4) ConstantComposite 135 135 135 135
+             557:             TypeVector 148(int) 4
+             578:  557(ivec4) ConstantComposite 169 290 433 216
+             588:      8(int) Constant 1
+             594:      8(int) Constant 2
+             597:      8(int) Constant 3
+             657:    148(int) Constant 4
+             658:  557(ivec4) ConstantComposite 358 216 290 657
+             693:    6(float) Constant 1082130432
+             694:   48(fvec4) ConstantComposite 223 356 538 693
+             698:             TypeMatrix 255(bvec2) 2
+             808:   24(fvec2) ConstantComposite 356 356
+             809:          60 ConstantComposite 808 808
+             813:             TypeMatrix 398(bvec3) 3
+             926:   36(fvec3) ConstantComposite 538 538 538
+             927:          68 ConstantComposite 926 926 926
+             931:             TypeMatrix 543(bvec4) 4
+            1047:   48(fvec4) ConstantComposite 693 693 693 693
+            1048:          76 ConstantComposite 1047 1047 1047 1047
+         4(main):           2 Function None 3
                5:             Label
+            1227:           2 FunctionCall 131(@main()
                               Return
                               FunctionEnd
 16(VertexShaderFunctionS(f1;f1;f1;u1;u1;):    6(float) Function None 10
@@ -3003,126 +3016,126 @@
         14(inU0):      9(ptr) FunctionParameter
         15(inU1):      9(ptr) FunctionParameter
               17:             Label
-             131:    6(float) Load 11(inF0)
-             134:   132(bool) FOrdNotEqual 131 133
-             135:   132(bool) All 134
-             136:    6(float) Load 11(inF0)
-             137:    6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 136
+             133:    6(float) Load 11(inF0)
+             136:   134(bool) FOrdNotEqual 133 135
+             137:   134(bool) All 136
              138:    6(float) Load 11(inF0)
-             139:    6(float) ExtInst 1(GLSL.std.450) 17(Acos) 138
+             139:    6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 138
              140:    6(float) Load 11(inF0)
-             141:   132(bool) FOrdNotEqual 140 133
-             142:   132(bool) Any 141
-             143:    6(float) Load 11(inF0)
-             144:    6(float) ExtInst 1(GLSL.std.450) 16(Asin) 143
+             141:    6(float) ExtInst 1(GLSL.std.450) 17(Acos) 140
+             142:    6(float) Load 11(inF0)
+             143:   134(bool) FOrdNotEqual 142 135
+             144:   134(bool) Any 143
              145:    6(float) Load 11(inF0)
-             147:    146(int) Bitcast 145
-             148:    6(float) Load 11(inF0)
-             149:      8(int) Bitcast 148
-             150:      8(int) Load 14(inU0)
-             151:    6(float) Bitcast 150
-             152:    6(float) Load 11(inF0)
-             153:    6(float) ExtInst 1(GLSL.std.450) 18(Atan) 152
+             146:    6(float) ExtInst 1(GLSL.std.450) 16(Asin) 145
+             147:    6(float) Load 11(inF0)
+             149:    148(int) Bitcast 147
+             150:    6(float) Load 11(inF0)
+             151:      8(int) Bitcast 150
+             152:      8(int) Load 14(inU0)
+             153:    6(float) Bitcast 152
              154:    6(float) Load 11(inF0)
-             155:    6(float) Load 12(inF1)
-             156:    6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 154 155
-             157:    6(float) Load 11(inF0)
-             158:    6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 157
+             155:    6(float) ExtInst 1(GLSL.std.450) 18(Atan) 154
+             156:    6(float) Load 11(inF0)
+             157:    6(float) Load 12(inF1)
+             158:    6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 156 157
              159:    6(float) Load 11(inF0)
-             160:    6(float) Load 12(inF1)
-             161:    6(float) Load 13(inF2)
-             162:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 159 160 161
-             163:    6(float) Load 11(inF0)
-             164:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 163
+             160:    6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 159
+             161:    6(float) Load 11(inF0)
+             162:    6(float) Load 12(inF1)
+             163:    6(float) Load 13(inF2)
+             164:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 161 162 163
              165:    6(float) Load 11(inF0)
-             166:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 165
-             168:    146(int) BitCount 167
-             169:    6(float) Load 11(inF0)
-             170:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 169
+             166:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 165
+             167:    6(float) Load 11(inF0)
+             168:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 167
+             170:    148(int) BitCount 169
              171:    6(float) Load 11(inF0)
-             172:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 171
+             172:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 171
              173:    6(float) Load 11(inF0)
-             174:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 173
-             175:    146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
-             176:    146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
-             177:    6(float) Load 11(inF0)
-             178:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 177
+             174:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 173
+             175:    6(float) Load 11(inF0)
+             176:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 175
+             177:    148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 169
+             178:    148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 169
              179:    6(float) Load 11(inF0)
-             180:    6(float) Load 12(inF1)
-             181:    6(float) FMod 179 180
-             182:    6(float) Load 11(inF0)
-             183:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 182
+             180:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 179
+             181:    6(float) Load 11(inF0)
+             182:    6(float) Load 12(inF1)
+             183:    6(float) FMod 181 182
              184:    6(float) Load 11(inF0)
-             185:   132(bool) IsInf 184
+             185:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 184
              186:    6(float) Load 11(inF0)
-             187:   132(bool) IsNan 186
+             187:   134(bool) IsInf 186
              188:    6(float) Load 11(inF0)
-             189:    6(float) Load 12(inF1)
-             190:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 188 189
-             191:    6(float) Load 11(inF0)
-             192:    6(float) Load 12(inF1)
-             193:    6(float) Load 13(inF2)
-             194:    6(float) ExtInst 1(GLSL.std.450) 46(FMix) 191 192 193
-             195:    6(float) Load 11(inF0)
-             196:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 195
+             189:   134(bool) IsNan 188
+             190:    6(float) Load 11(inF0)
+             191:    6(float) Load 12(inF1)
+             192:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 190 191
+             193:    6(float) Load 11(inF0)
+             194:    6(float) Load 12(inF1)
+             195:    6(float) Load 13(inF2)
+             196:    6(float) ExtInst 1(GLSL.std.450) 46(FMix) 193 194 195
              197:    6(float) Load 11(inF0)
-             198:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 197
-             200:    6(float) FMul 198 199
-             201:    6(float) Load 11(inF0)
-             202:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 201
+             198:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 197
+             199:    6(float) Load 11(inF0)
+             200:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 199
+             202:    6(float) FMul 200 201
              203:    6(float) Load 11(inF0)
-             204:    6(float) Load 12(inF1)
-             205:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 203 204
-             206:    6(float) Load 11(inF0)
-             207:    6(float) Load 12(inF1)
-             208:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 206 207
-             209:    6(float) Load 11(inF0)
-             210:    6(float) Load 12(inF1)
-             211:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 209 210
-             212:    6(float) Load 11(inF0)
-             213:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 212
-             215:    146(int) BitReverse 214
-             216:    6(float) Load 11(inF0)
-             217:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 216
+             204:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 203
+             205:    6(float) Load 11(inF0)
+             206:    6(float) Load 12(inF1)
+             207:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 205 206
+             208:    6(float) Load 11(inF0)
+             209:    6(float) Load 12(inF1)
+             210:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 208 209
+             211:    6(float) Load 11(inF0)
+             212:    6(float) Load 12(inF1)
+             213:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 211 212
+             214:    6(float) Load 11(inF0)
+             215:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 214
+             217:    148(int) BitReverse 216
              218:    6(float) Load 11(inF0)
-             219:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 218
+             219:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 218
              220:    6(float) Load 11(inF0)
-             222:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 220 133 221
-             223:    6(float) Load 11(inF0)
-             224:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 223
+             221:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 220
+             222:    6(float) Load 11(inF0)
+             224:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 222 135 223
              225:    6(float) Load 11(inF0)
-             226:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 225
+             226:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 225
              227:    6(float) Load 11(inF0)
              228:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 227
-                              Store 12(inF1) 228
              229:    6(float) Load 11(inF0)
-             230:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 229
-                              Store 13(inF2) 230
+             230:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 229
+                              Store 12(inF1) 230
              231:    6(float) Load 11(inF0)
-             232:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 231
+             232:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 231
+                              Store 13(inF2) 232
              233:    6(float) Load 11(inF0)
-             234:    6(float) Load 12(inF1)
-             235:    6(float) Load 13(inF2)
-             236:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 233 234 235
-             237:    6(float) Load 11(inF0)
-             238:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 237
+             234:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 233
+             235:    6(float) Load 11(inF0)
+             236:    6(float) Load 12(inF1)
+             237:    6(float) Load 13(inF2)
+             238:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 235 236 237
              239:    6(float) Load 11(inF0)
-             240:    6(float) Load 12(inF1)
-             241:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 239 240
-             242:    6(float) Load 11(inF0)
-             243:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 242
+             240:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 239
+             241:    6(float) Load 11(inF0)
+             242:    6(float) Load 12(inF1)
+             243:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 241 242
              244:    6(float) Load 11(inF0)
-             245:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 244
+             245:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 244
              246:    6(float) Load 11(inF0)
-             247:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 246
-                              ReturnValue 133
+             247:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 246
+             248:    6(float) Load 11(inF0)
+             249:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 248
+                              ReturnValue 135
                               FunctionEnd
 22(VertexShaderFunction1(vf1;vf1;vf1;):    6(float) Function None 18
         19(inF0):      7(ptr) FunctionParameter
         20(inF1):      7(ptr) FunctionParameter
         21(inF2):      7(ptr) FunctionParameter
               23:             Label
-                              ReturnValue 133
+                              ReturnValue 135
                               FunctionEnd
 34(VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2;):   24(fvec2) Function None 28
         29(inF0):     25(ptr) FunctionParameter
@@ -3131,141 +3144,141 @@
         32(inU0):     27(ptr) FunctionParameter
         33(inU1):     27(ptr) FunctionParameter
               35:             Label
-             252:   24(fvec2) Load 29(inF0)
-             255:  253(bvec2) FOrdNotEqual 252 254
-             256:   132(bool) All 255
-             257:   24(fvec2) Load 29(inF0)
-             258:   24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 257
+             254:   24(fvec2) Load 29(inF0)
+             257:  255(bvec2) FOrdNotEqual 254 256
+             258:   134(bool) All 257
              259:   24(fvec2) Load 29(inF0)
-             260:   24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 259
+             260:   24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 259
              261:   24(fvec2) Load 29(inF0)
-             262:  253(bvec2) FOrdNotEqual 261 254
-             263:   132(bool) Any 262
-             264:   24(fvec2) Load 29(inF0)
-             265:   24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 264
+             262:   24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 261
+             263:   24(fvec2) Load 29(inF0)
+             264:  255(bvec2) FOrdNotEqual 263 256
+             265:   134(bool) Any 264
              266:   24(fvec2) Load 29(inF0)
-             268:  267(ivec2) Bitcast 266
-             269:   24(fvec2) Load 29(inF0)
-             270:   26(ivec2) Bitcast 269
-             271:   26(ivec2) Load 32(inU0)
-             272:   24(fvec2) Bitcast 271
-             273:   24(fvec2) Load 29(inF0)
-             274:   24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 273
+             267:   24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 266
+             268:   24(fvec2) Load 29(inF0)
+             270:  269(ivec2) Bitcast 268
+             271:   24(fvec2) Load 29(inF0)
+             272:   26(ivec2) Bitcast 271
+             273:   26(ivec2) Load 32(inU0)
+             274:   24(fvec2) Bitcast 273
              275:   24(fvec2) Load 29(inF0)
-             276:   24(fvec2) Load 30(inF1)
-             277:   24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 275 276
-             278:   24(fvec2) Load 29(inF0)
-             279:   24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 278
+             276:   24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 275
+             277:   24(fvec2) Load 29(inF0)
+             278:   24(fvec2) Load 30(inF1)
+             279:   24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 277 278
              280:   24(fvec2) Load 29(inF0)
-             281:   24(fvec2) Load 30(inF1)
-             282:   24(fvec2) Load 31(inF2)
-             283:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 280 281 282
-             284:   24(fvec2) Load 29(inF0)
-             285:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 284
+             281:   24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 280
+             282:   24(fvec2) Load 29(inF0)
+             283:   24(fvec2) Load 30(inF1)
+             284:   24(fvec2) Load 31(inF2)
+             285:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 282 283 284
              286:   24(fvec2) Load 29(inF0)
-             287:   24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 286
-             290:  267(ivec2) BitCount 289
-             291:   24(fvec2) Load 29(inF0)
-             292:   24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 291
+             287:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 286
+             288:   24(fvec2) Load 29(inF0)
+             289:   24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 288
+             292:  269(ivec2) BitCount 291
              293:   24(fvec2) Load 29(inF0)
-             294:   24(fvec2) Load 30(inF1)
-             295:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 293 294
-             296:   24(fvec2) Load 29(inF0)
-             297:   24(fvec2) Load 30(inF1)
-             298:    6(float) Dot 296 297
-             299:   24(fvec2) Load 29(inF0)
-             300:   24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 299
+             294:   24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 293
+             295:   24(fvec2) Load 29(inF0)
+             296:   24(fvec2) Load 30(inF1)
+             297:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 295 296
+             298:   24(fvec2) Load 29(inF0)
+             299:   24(fvec2) Load 30(inF1)
+             300:    6(float) Dot 298 299
              301:   24(fvec2) Load 29(inF0)
-             302:   24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 301
+             302:   24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 301
              303:   24(fvec2) Load 29(inF0)
-             304:   24(fvec2) Load 30(inF1)
-             305:   24(fvec2) Load 31(inF2)
-             306:   24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 303 304 305
-             307:    146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
-             308:    146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
-             309:   24(fvec2) Load 29(inF0)
-             310:   24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 309
+             304:   24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 303
+             305:   24(fvec2) Load 29(inF0)
+             306:   24(fvec2) Load 30(inF1)
+             307:   24(fvec2) Load 31(inF2)
+             308:   24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 305 306 307
+             309:    148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 169
+             310:    148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 169
              311:   24(fvec2) Load 29(inF0)
-             312:   24(fvec2) Load 30(inF1)
-             313:   24(fvec2) FMod 311 312
-             314:   24(fvec2) Load 29(inF0)
-             315:   24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 314
+             312:   24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 311
+             313:   24(fvec2) Load 29(inF0)
+             314:   24(fvec2) Load 30(inF1)
+             315:   24(fvec2) FMod 313 314
              316:   24(fvec2) Load 29(inF0)
-             317:  253(bvec2) IsInf 316
+             317:   24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 316
              318:   24(fvec2) Load 29(inF0)
-             319:  253(bvec2) IsNan 318
+             319:  255(bvec2) IsInf 318
              320:   24(fvec2) Load 29(inF0)
-             321:   24(fvec2) Load 30(inF1)
-             322:   24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 320 321
-             323:   24(fvec2) Load 29(inF0)
-             324:   24(fvec2) Load 30(inF1)
-             325:   24(fvec2) Load 31(inF2)
-             326:   24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 323 324 325
-             327:   24(fvec2) Load 29(inF0)
-             328:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 327
+             321:  255(bvec2) IsNan 320
+             322:   24(fvec2) Load 29(inF0)
+             323:   24(fvec2) Load 30(inF1)
+             324:   24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 322 323
+             325:   24(fvec2) Load 29(inF0)
+             326:   24(fvec2) Load 30(inF1)
+             327:   24(fvec2) Load 31(inF2)
+             328:   24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 325 326 327
              329:   24(fvec2) Load 29(inF0)
-             330:   24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 329
+             330:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 329
              331:   24(fvec2) Load 29(inF0)
-             332:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 331
-             333:   24(fvec2) VectorTimesScalar 332 199
-             334:   24(fvec2) Load 29(inF0)
-             335:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 334
+             332:   24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 331
+             333:   24(fvec2) Load 29(inF0)
+             334:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 333
+             335:   24(fvec2) VectorTimesScalar 334 201
              336:   24(fvec2) Load 29(inF0)
-             337:   24(fvec2) Load 30(inF1)
-             338:   24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 336 337
-             339:   24(fvec2) Load 29(inF0)
-             340:   24(fvec2) Load 30(inF1)
-             341:   24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 339 340
-             342:   24(fvec2) Load 29(inF0)
-             343:   24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 342
+             337:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 336
+             338:   24(fvec2) Load 29(inF0)
+             339:   24(fvec2) Load 30(inF1)
+             340:   24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 338 339
+             341:   24(fvec2) Load 29(inF0)
+             342:   24(fvec2) Load 30(inF1)
+             343:   24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 341 342
              344:   24(fvec2) Load 29(inF0)
-             345:   24(fvec2) Load 30(inF1)
-             346:   24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 344 345
-             347:   24(fvec2) Load 29(inF0)
-             348:   24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 347
+             345:   24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 344
+             346:   24(fvec2) Load 29(inF0)
+             347:   24(fvec2) Load 30(inF1)
+             348:   24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 346 347
              349:   24(fvec2) Load 29(inF0)
-             350:   24(fvec2) Load 30(inF1)
-             351:   24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 349 350
-             352:   24(fvec2) Load 29(inF0)
-             353:   24(fvec2) Load 30(inF1)
-             355:   24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 352 353 354
-             358:  267(ivec2) BitReverse 357
-             359:   24(fvec2) Load 29(inF0)
-             360:   24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 359
+             350:   24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 349
+             351:   24(fvec2) Load 29(inF0)
+             352:   24(fvec2) Load 30(inF1)
+             353:   24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 351 352
+             354:   24(fvec2) Load 29(inF0)
+             355:   24(fvec2) Load 30(inF1)
+             357:   24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 354 355 356
+             360:  269(ivec2) BitReverse 359
              361:   24(fvec2) Load 29(inF0)
-             362:   24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 361
+             362:   24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 361
              363:   24(fvec2) Load 29(inF0)
-             364:   24(fvec2) CompositeConstruct 133 133
-             365:   24(fvec2) CompositeConstruct 221 221
-             366:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 363 364 365
-             367:   24(fvec2) Load 29(inF0)
-             368:   24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 367
+             364:   24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 363
+             365:   24(fvec2) Load 29(inF0)
+             366:   24(fvec2) CompositeConstruct 135 135
+             367:   24(fvec2) CompositeConstruct 223 223
+             368:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 365 366 367
              369:   24(fvec2) Load 29(inF0)
-             370:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 369
+             370:   24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 369
              371:   24(fvec2) Load 29(inF0)
              372:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 371
-                              Store 30(inF1) 372
              373:   24(fvec2) Load 29(inF0)
-             374:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 373
-                              Store 31(inF2) 374
+             374:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 373
+                              Store 30(inF1) 374
              375:   24(fvec2) Load 29(inF0)
-             376:   24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 375
+             376:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 375
+                              Store 31(inF2) 376
              377:   24(fvec2) Load 29(inF0)
-             378:   24(fvec2) Load 30(inF1)
-             379:   24(fvec2) Load 31(inF2)
-             380:   24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 377 378 379
-             381:   24(fvec2) Load 29(inF0)
-             382:   24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 381
+             378:   24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 377
+             379:   24(fvec2) Load 29(inF0)
+             380:   24(fvec2) Load 30(inF1)
+             381:   24(fvec2) Load 31(inF2)
+             382:   24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 379 380 381
              383:   24(fvec2) Load 29(inF0)
-             384:   24(fvec2) Load 30(inF1)
-             385:   24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 383 384
-             386:   24(fvec2) Load 29(inF0)
-             387:   24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 386
+             384:   24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 383
+             385:   24(fvec2) Load 29(inF0)
+             386:   24(fvec2) Load 30(inF1)
+             387:   24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 385 386
              388:   24(fvec2) Load 29(inF0)
-             389:   24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 388
+             389:   24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 388
              390:   24(fvec2) Load 29(inF0)
-             391:   24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 390
-                              ReturnValue 392
+             391:   24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 390
+             392:   24(fvec2) Load 29(inF0)
+             393:   24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 392
+                              ReturnValue 394
                               FunctionEnd
 46(VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3;):   36(fvec3) Function None 40
         41(inF0):     37(ptr) FunctionParameter
@@ -3274,144 +3287,144 @@
         44(inU0):     39(ptr) FunctionParameter
         45(inU1):     39(ptr) FunctionParameter
               47:             Label
-             395:   36(fvec3) Load 41(inF0)
-             398:  396(bvec3) FOrdNotEqual 395 397
-             399:   132(bool) All 398
-             400:   36(fvec3) Load 41(inF0)
-             401:   36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 400
+             397:   36(fvec3) Load 41(inF0)
+             400:  398(bvec3) FOrdNotEqual 397 399
+             401:   134(bool) All 400
              402:   36(fvec3) Load 41(inF0)
-             403:   36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 402
+             403:   36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 402
              404:   36(fvec3) Load 41(inF0)
-             405:  396(bvec3) FOrdNotEqual 404 397
-             406:   132(bool) Any 405
-             407:   36(fvec3) Load 41(inF0)
-             408:   36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 407
+             405:   36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 404
+             406:   36(fvec3) Load 41(inF0)
+             407:  398(bvec3) FOrdNotEqual 406 399
+             408:   134(bool) Any 407
              409:   36(fvec3) Load 41(inF0)
-             411:  410(ivec3) Bitcast 409
-             412:   36(fvec3) Load 41(inF0)
-             413:   38(ivec3) Bitcast 412
-             414:   38(ivec3) Load 44(inU0)
-             415:   36(fvec3) Bitcast 414
-             416:   36(fvec3) Load 41(inF0)
-             417:   36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 416
+             410:   36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 409
+             411:   36(fvec3) Load 41(inF0)
+             413:  412(ivec3) Bitcast 411
+             414:   36(fvec3) Load 41(inF0)
+             415:   38(ivec3) Bitcast 414
+             416:   38(ivec3) Load 44(inU0)
+             417:   36(fvec3) Bitcast 416
              418:   36(fvec3) Load 41(inF0)
-             419:   36(fvec3) Load 42(inF1)
-             420:   36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 418 419
-             421:   36(fvec3) Load 41(inF0)
-             422:   36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 421
+             419:   36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 418
+             420:   36(fvec3) Load 41(inF0)
+             421:   36(fvec3) Load 42(inF1)
+             422:   36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 420 421
              423:   36(fvec3) Load 41(inF0)
-             424:   36(fvec3) Load 42(inF1)
-             425:   36(fvec3) Load 43(inF2)
-             426:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 423 424 425
-             427:   36(fvec3) Load 41(inF0)
-             428:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 427
+             424:   36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 423
+             425:   36(fvec3) Load 41(inF0)
+             426:   36(fvec3) Load 42(inF1)
+             427:   36(fvec3) Load 43(inF2)
+             428:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 425 426 427
              429:   36(fvec3) Load 41(inF0)
-             430:   36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 429
-             433:  410(ivec3) BitCount 432
-             434:   36(fvec3) Load 41(inF0)
-             435:   36(fvec3) Load 42(inF1)
-             436:   36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 434 435
-             437:   36(fvec3) Load 41(inF0)
-             438:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 437
+             430:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 429
+             431:   36(fvec3) Load 41(inF0)
+             432:   36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 431
+             435:  412(ivec3) BitCount 434
+             436:   36(fvec3) Load 41(inF0)
+             437:   36(fvec3) Load 42(inF1)
+             438:   36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 436 437
              439:   36(fvec3) Load 41(inF0)
-             440:   36(fvec3) Load 42(inF1)
-             441:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 439 440
-             442:   36(fvec3) Load 41(inF0)
-             443:   36(fvec3) Load 42(inF1)
-             444:    6(float) Dot 442 443
-             445:   36(fvec3) Load 41(inF0)
-             446:   36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 445
+             440:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 439
+             441:   36(fvec3) Load 41(inF0)
+             442:   36(fvec3) Load 42(inF1)
+             443:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 441 442
+             444:   36(fvec3) Load 41(inF0)
+             445:   36(fvec3) Load 42(inF1)
+             446:    6(float) Dot 444 445
              447:   36(fvec3) Load 41(inF0)
-             448:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 447
+             448:   36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 447
              449:   36(fvec3) Load 41(inF0)
-             450:   36(fvec3) Load 42(inF1)
-             451:   36(fvec3) Load 43(inF2)
-             452:   36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 449 450 451
-             453:    146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
-             454:    146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
-             455:   36(fvec3) Load 41(inF0)
-             456:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 455
+             450:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 449
+             451:   36(fvec3) Load 41(inF0)
+             452:   36(fvec3) Load 42(inF1)
+             453:   36(fvec3) Load 43(inF2)
+             454:   36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 451 452 453
+             455:    148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 169
+             456:    148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 169
              457:   36(fvec3) Load 41(inF0)
-             458:   36(fvec3) Load 42(inF1)
-             459:   36(fvec3) FMod 457 458
-             460:   36(fvec3) Load 41(inF0)
-             461:   36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 460
+             458:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 457
+             459:   36(fvec3) Load 41(inF0)
+             460:   36(fvec3) Load 42(inF1)
+             461:   36(fvec3) FMod 459 460
              462:   36(fvec3) Load 41(inF0)
-             463:  396(bvec3) IsInf 462
+             463:   36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 462
              464:   36(fvec3) Load 41(inF0)
-             465:  396(bvec3) IsNan 464
+             465:  398(bvec3) IsInf 464
              466:   36(fvec3) Load 41(inF0)
-             467:   36(fvec3) Load 42(inF1)
-             468:   36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 466 467
-             469:   36(fvec3) Load 41(inF0)
-             470:   36(fvec3) Load 42(inF1)
-             471:   36(fvec3) Load 43(inF2)
-             472:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 469 470 471
-             473:   36(fvec3) Load 41(inF0)
-             474:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 473
+             467:  398(bvec3) IsNan 466
+             468:   36(fvec3) Load 41(inF0)
+             469:   36(fvec3) Load 42(inF1)
+             470:   36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 468 469
+             471:   36(fvec3) Load 41(inF0)
+             472:   36(fvec3) Load 42(inF1)
+             473:   36(fvec3) Load 43(inF2)
+             474:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 471 472 473
              475:   36(fvec3) Load 41(inF0)
-             476:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 475
+             476:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 475
              477:   36(fvec3) Load 41(inF0)
-             478:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 477
-             479:   36(fvec3) VectorTimesScalar 478 199
-             480:   36(fvec3) Load 41(inF0)
-             481:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 480
+             478:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 477
+             479:   36(fvec3) Load 41(inF0)
+             480:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 479
+             481:   36(fvec3) VectorTimesScalar 480 201
              482:   36(fvec3) Load 41(inF0)
-             483:   36(fvec3) Load 42(inF1)
-             484:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 482 483
-             485:   36(fvec3) Load 41(inF0)
-             486:   36(fvec3) Load 42(inF1)
-             487:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 485 486
-             488:   36(fvec3) Load 41(inF0)
-             489:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 488
+             483:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 482
+             484:   36(fvec3) Load 41(inF0)
+             485:   36(fvec3) Load 42(inF1)
+             486:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 484 485
+             487:   36(fvec3) Load 41(inF0)
+             488:   36(fvec3) Load 42(inF1)
+             489:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 487 488
              490:   36(fvec3) Load 41(inF0)
-             491:   36(fvec3) Load 42(inF1)
-             492:   36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 490 491
-             493:   36(fvec3) Load 41(inF0)
-             494:   36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 493
+             491:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 490
+             492:   36(fvec3) Load 41(inF0)
+             493:   36(fvec3) Load 42(inF1)
+             494:   36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 492 493
              495:   36(fvec3) Load 41(inF0)
-             496:   36(fvec3) Load 42(inF1)
-             497:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 495 496
-             498:   36(fvec3) Load 41(inF0)
-             499:   36(fvec3) Load 42(inF1)
-             500:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 498 499 354
-             502:  410(ivec3) BitReverse 501
-             503:   36(fvec3) Load 41(inF0)
-             504:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 503
+             496:   36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 495
+             497:   36(fvec3) Load 41(inF0)
+             498:   36(fvec3) Load 42(inF1)
+             499:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 497 498
+             500:   36(fvec3) Load 41(inF0)
+             501:   36(fvec3) Load 42(inF1)
+             502:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 500 501 356
+             504:  412(ivec3) BitReverse 503
              505:   36(fvec3) Load 41(inF0)
-             506:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 505
+             506:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 505
              507:   36(fvec3) Load 41(inF0)
-             508:   36(fvec3) CompositeConstruct 133 133 133
-             509:   36(fvec3) CompositeConstruct 221 221 221
-             510:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 507 508 509
-             511:   36(fvec3) Load 41(inF0)
-             512:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 511
+             508:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 507
+             509:   36(fvec3) Load 41(inF0)
+             510:   36(fvec3) CompositeConstruct 135 135 135
+             511:   36(fvec3) CompositeConstruct 223 223 223
+             512:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 509 510 511
              513:   36(fvec3) Load 41(inF0)
-             514:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 513
+             514:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 513
              515:   36(fvec3) Load 41(inF0)
              516:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 515
-                              Store 42(inF1) 516
              517:   36(fvec3) Load 41(inF0)
-             518:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 517
-                              Store 43(inF2) 518
+             518:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 517
+                              Store 42(inF1) 518
              519:   36(fvec3) Load 41(inF0)
-             520:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 519
+             520:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 519
+                              Store 43(inF2) 520
              521:   36(fvec3) Load 41(inF0)
-             522:   36(fvec3) Load 42(inF1)
-             523:   36(fvec3) Load 43(inF2)
-             524:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 521 522 523
-             525:   36(fvec3) Load 41(inF0)
-             526:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 525
+             522:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 521
+             523:   36(fvec3) Load 41(inF0)
+             524:   36(fvec3) Load 42(inF1)
+             525:   36(fvec3) Load 43(inF2)
+             526:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 523 524 525
              527:   36(fvec3) Load 41(inF0)
-             528:   36(fvec3) Load 42(inF1)
-             529:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 527 528
-             530:   36(fvec3) Load 41(inF0)
-             531:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 530
+             528:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 527
+             529:   36(fvec3) Load 41(inF0)
+             530:   36(fvec3) Load 42(inF1)
+             531:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 529 530
              532:   36(fvec3) Load 41(inF0)
-             533:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 532
+             533:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 532
              534:   36(fvec3) Load 41(inF0)
-             535:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 534
-                              ReturnValue 537
+             535:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 534
+             536:   36(fvec3) Load 41(inF0)
+             537:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 536
+                              ReturnValue 539
                               FunctionEnd
 58(VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4;):   48(fvec4) Function None 52
         53(inF0):     49(ptr) FunctionParameter
@@ -3420,517 +3433,517 @@
         56(inU0):     51(ptr) FunctionParameter
         57(inU1):     51(ptr) FunctionParameter
               59:             Label
-             540:   48(fvec4) Load 53(inF0)
-             543:  541(bvec4) FOrdNotEqual 540 542
-             544:   132(bool) All 543
-             545:   48(fvec4) Load 53(inF0)
-             546:   48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 545
+             542:   48(fvec4) Load 53(inF0)
+             545:  543(bvec4) FOrdNotEqual 542 544
+             546:   134(bool) All 545
              547:   48(fvec4) Load 53(inF0)
-             548:   48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 547
+             548:   48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 547
              549:   48(fvec4) Load 53(inF0)
-             550:  541(bvec4) FOrdNotEqual 549 542
-             551:   132(bool) Any 550
-             552:   48(fvec4) Load 53(inF0)
-             553:   48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 552
+             550:   48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 549
+             551:   48(fvec4) Load 53(inF0)
+             552:  543(bvec4) FOrdNotEqual 551 544
+             553:   134(bool) Any 552
              554:   48(fvec4) Load 53(inF0)
-             556:  555(ivec4) Bitcast 554
-             557:   48(fvec4) Load 53(inF0)
-             558:   50(ivec4) Bitcast 557
-             559:   50(ivec4) Load 56(inU0)
-             560:   48(fvec4) Bitcast 559
-             561:   48(fvec4) Load 53(inF0)
-             562:   48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 561
+             555:   48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 554
+             556:   48(fvec4) Load 53(inF0)
+             558:  557(ivec4) Bitcast 556
+             559:   48(fvec4) Load 53(inF0)
+             560:   50(ivec4) Bitcast 559
+             561:   50(ivec4) Load 56(inU0)
+             562:   48(fvec4) Bitcast 561
              563:   48(fvec4) Load 53(inF0)
-             564:   48(fvec4) Load 54(inF1)
-             565:   48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 563 564
-             566:   48(fvec4) Load 53(inF0)
-             567:   48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 566
+             564:   48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 563
+             565:   48(fvec4) Load 53(inF0)
+             566:   48(fvec4) Load 54(inF1)
+             567:   48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 565 566
              568:   48(fvec4) Load 53(inF0)
-             569:   48(fvec4) Load 54(inF1)
-             570:   48(fvec4) Load 55(inF2)
-             571:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 568 569 570
-             572:   48(fvec4) Load 53(inF0)
-             573:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 572
+             569:   48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 568
+             570:   48(fvec4) Load 53(inF0)
+             571:   48(fvec4) Load 54(inF1)
+             572:   48(fvec4) Load 55(inF2)
+             573:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 570 571 572
              574:   48(fvec4) Load 53(inF0)
-             575:   48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 574
-             577:  555(ivec4) BitCount 576
-             578:   48(fvec4) Load 53(inF0)
-             579:   48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 578
+             575:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 574
+             576:   48(fvec4) Load 53(inF0)
+             577:   48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 576
+             579:  557(ivec4) BitCount 578
              580:   48(fvec4) Load 53(inF0)
-             581:   48(fvec4) Load 54(inF1)
-             582:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 580 581
-             583:   48(fvec4) Load 53(inF0)
-             584:   48(fvec4) Load 54(inF1)
-             585:    6(float) Dot 583 584
-             587:      7(ptr) AccessChain 53(inF0) 586
-             588:    6(float) Load 587
-             589:      7(ptr) AccessChain 54(inF1) 586
+             581:   48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 580
+             582:   48(fvec4) Load 53(inF0)
+             583:   48(fvec4) Load 54(inF1)
+             584:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 582 583
+             585:   48(fvec4) Load 53(inF0)
+             586:   48(fvec4) Load 54(inF1)
+             587:    6(float) Dot 585 586
+             589:      7(ptr) AccessChain 53(inF0) 588
              590:    6(float) Load 589
-             591:    6(float) FMul 588 590
-             593:      7(ptr) AccessChain 53(inF0) 592
-             594:    6(float) Load 593
-             596:      7(ptr) AccessChain 54(inF1) 595
-             597:    6(float) Load 596
-             598:   48(fvec4) CompositeConstruct 221 591 594 597
-             599:   48(fvec4) Load 53(inF0)
-             600:   48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 599
+             591:      7(ptr) AccessChain 54(inF1) 588
+             592:    6(float) Load 591
+             593:    6(float) FMul 590 592
+             595:      7(ptr) AccessChain 53(inF0) 594
+             596:    6(float) Load 595
+             598:      7(ptr) AccessChain 54(inF1) 597
+             599:    6(float) Load 598
+             600:   48(fvec4) CompositeConstruct 223 593 596 599
              601:   48(fvec4) Load 53(inF0)
-             602:   48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 601
+             602:   48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 601
              603:   48(fvec4) Load 53(inF0)
-             604:   48(fvec4) Load 54(inF1)
-             605:   48(fvec4) Load 55(inF2)
-             606:   48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 603 604 605
-             607:    146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
-             608:    146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
-             609:   48(fvec4) Load 53(inF0)
-             610:   48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 609
+             604:   48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 603
+             605:   48(fvec4) Load 53(inF0)
+             606:   48(fvec4) Load 54(inF1)
+             607:   48(fvec4) Load 55(inF2)
+             608:   48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 605 606 607
+             609:    148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 169
+             610:    148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 169
              611:   48(fvec4) Load 53(inF0)
-             612:   48(fvec4) Load 54(inF1)
-             613:   48(fvec4) FMod 611 612
-             614:   48(fvec4) Load 53(inF0)
-             615:   48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 614
+             612:   48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 611
+             613:   48(fvec4) Load 53(inF0)
+             614:   48(fvec4) Load 54(inF1)
+             615:   48(fvec4) FMod 613 614
              616:   48(fvec4) Load 53(inF0)
-             617:  541(bvec4) IsInf 616
+             617:   48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 616
              618:   48(fvec4) Load 53(inF0)
-             619:  541(bvec4) IsNan 618
+             619:  543(bvec4) IsInf 618
              620:   48(fvec4) Load 53(inF0)
-             621:   48(fvec4) Load 54(inF1)
-             622:   48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 620 621
-             623:   48(fvec4) Load 53(inF0)
-             624:   48(fvec4) Load 54(inF1)
-             625:   48(fvec4) Load 55(inF2)
-             626:   48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 623 624 625
-             627:   48(fvec4) Load 53(inF0)
-             628:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 627
+             621:  543(bvec4) IsNan 620
+             622:   48(fvec4) Load 53(inF0)
+             623:   48(fvec4) Load 54(inF1)
+             624:   48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 622 623
+             625:   48(fvec4) Load 53(inF0)
+             626:   48(fvec4) Load 54(inF1)
+             627:   48(fvec4) Load 55(inF2)
+             628:   48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 625 626 627
              629:   48(fvec4) Load 53(inF0)
-             630:   48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 629
+             630:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 629
              631:   48(fvec4) Load 53(inF0)
-             632:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 631
-             633:   48(fvec4) VectorTimesScalar 632 199
-             634:   48(fvec4) Load 53(inF0)
-             635:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 634
+             632:   48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 631
+             633:   48(fvec4) Load 53(inF0)
+             634:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 633
+             635:   48(fvec4) VectorTimesScalar 634 201
              636:   48(fvec4) Load 53(inF0)
-             637:   48(fvec4) Load 54(inF1)
-             638:   48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 636 637
-             639:   48(fvec4) Load 53(inF0)
-             640:   48(fvec4) Load 54(inF1)
-             641:   48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 639 640
-             642:   48(fvec4) Load 53(inF0)
-             643:   48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 642
+             637:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 636
+             638:   48(fvec4) Load 53(inF0)
+             639:   48(fvec4) Load 54(inF1)
+             640:   48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 638 639
+             641:   48(fvec4) Load 53(inF0)
+             642:   48(fvec4) Load 54(inF1)
+             643:   48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 641 642
              644:   48(fvec4) Load 53(inF0)
-             645:   48(fvec4) Load 54(inF1)
-             646:   48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 644 645
-             647:   48(fvec4) Load 53(inF0)
-             648:   48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 647
+             645:   48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 644
+             646:   48(fvec4) Load 53(inF0)
+             647:   48(fvec4) Load 54(inF1)
+             648:   48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 646 647
              649:   48(fvec4) Load 53(inF0)
-             650:   48(fvec4) Load 54(inF1)
-             651:   48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 649 650
-             652:   48(fvec4) Load 53(inF0)
-             653:   48(fvec4) Load 54(inF1)
-             654:   48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 652 653 354
-             657:  555(ivec4) BitReverse 656
-             658:   48(fvec4) Load 53(inF0)
-             659:   48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 658
+             650:   48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 649
+             651:   48(fvec4) Load 53(inF0)
+             652:   48(fvec4) Load 54(inF1)
+             653:   48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 651 652
+             654:   48(fvec4) Load 53(inF0)
+             655:   48(fvec4) Load 54(inF1)
+             656:   48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 654 655 356
+             659:  557(ivec4) BitReverse 658
              660:   48(fvec4) Load 53(inF0)
-             661:   48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 660
+             661:   48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 660
              662:   48(fvec4) Load 53(inF0)
-             663:   48(fvec4) CompositeConstruct 133 133 133 133
-             664:   48(fvec4) CompositeConstruct 221 221 221 221
-             665:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 662 663 664
-             666:   48(fvec4) Load 53(inF0)
-             667:   48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 666
+             663:   48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 662
+             664:   48(fvec4) Load 53(inF0)
+             665:   48(fvec4) CompositeConstruct 135 135 135 135
+             666:   48(fvec4) CompositeConstruct 223 223 223 223
+             667:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 664 665 666
              668:   48(fvec4) Load 53(inF0)
-             669:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 668
+             669:   48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 668
              670:   48(fvec4) Load 53(inF0)
              671:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 670
-                              Store 54(inF1) 671
              672:   48(fvec4) Load 53(inF0)
-             673:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 672
-                              Store 55(inF2) 673
+             673:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 672
+                              Store 54(inF1) 673
              674:   48(fvec4) Load 53(inF0)
-             675:   48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 674
+             675:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 674
+                              Store 55(inF2) 675
              676:   48(fvec4) Load 53(inF0)
-             677:   48(fvec4) Load 54(inF1)
-             678:   48(fvec4) Load 55(inF2)
-             679:   48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 676 677 678
-             680:   48(fvec4) Load 53(inF0)
-             681:   48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 680
+             677:   48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 676
+             678:   48(fvec4) Load 53(inF0)
+             679:   48(fvec4) Load 54(inF1)
+             680:   48(fvec4) Load 55(inF2)
+             681:   48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 678 679 680
              682:   48(fvec4) Load 53(inF0)
-             683:   48(fvec4) Load 54(inF1)
-             684:   48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 682 683
-             685:   48(fvec4) Load 53(inF0)
-             686:   48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 685
+             683:   48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 682
+             684:   48(fvec4) Load 53(inF0)
+             685:   48(fvec4) Load 54(inF1)
+             686:   48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 684 685
              687:   48(fvec4) Load 53(inF0)
-             688:   48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 687
+             688:   48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 687
              689:   48(fvec4) Load 53(inF0)
-             690:   48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 689
-                              ReturnValue 692
+             690:   48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 689
+             691:   48(fvec4) Load 53(inF0)
+             692:   48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 691
+                              ReturnValue 694
                               FunctionEnd
 66(VertexShaderFunction2x2(mf22;mf22;mf22;):          60 Function None 62
         63(inF0):     61(ptr) FunctionParameter
         64(inF1):     61(ptr) FunctionParameter
         65(inF2):     61(ptr) FunctionParameter
               67:             Label
-             695:          60 Load 63(inF0)
-             697:         696 FOrdNotEqual 695 133
-             698:   132(bool) All 697
-             699:          60 Load 63(inF0)
-             700:          60 ExtInst 1(GLSL.std.450) 4(FAbs) 699
+             697:          60 Load 63(inF0)
+             699:         698 FOrdNotEqual 697 135
+             700:   134(bool) All 699
              701:          60 Load 63(inF0)
-             702:          60 ExtInst 1(GLSL.std.450) 17(Acos) 701
+             702:          60 ExtInst 1(GLSL.std.450) 4(FAbs) 701
              703:          60 Load 63(inF0)
-             704:         696 FOrdNotEqual 703 133
-             705:   132(bool) Any 704
-             706:          60 Load 63(inF0)
-             707:          60 ExtInst 1(GLSL.std.450) 16(Asin) 706
+             704:          60 ExtInst 1(GLSL.std.450) 17(Acos) 703
+             705:          60 Load 63(inF0)
+             706:         698 FOrdNotEqual 705 135
+             707:   134(bool) Any 706
              708:          60 Load 63(inF0)
-             709:          60 ExtInst 1(GLSL.std.450) 18(Atan) 708
+             709:          60 ExtInst 1(GLSL.std.450) 16(Asin) 708
              710:          60 Load 63(inF0)
-             711:          60 Load 64(inF1)
-             712:          60 ExtInst 1(GLSL.std.450) 25(Atan2) 710 711
-             713:          60 Load 63(inF0)
-             714:          60 ExtInst 1(GLSL.std.450) 9(Ceil) 713
+             711:          60 ExtInst 1(GLSL.std.450) 18(Atan) 710
+             712:          60 Load 63(inF0)
+             713:          60 Load 64(inF1)
+             714:          60 ExtInst 1(GLSL.std.450) 25(Atan2) 712 713
              715:          60 Load 63(inF0)
-             716:          60 Load 64(inF1)
-             717:          60 Load 65(inF2)
-             718:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 715 716 717
-             719:          60 Load 63(inF0)
-             720:          60 ExtInst 1(GLSL.std.450) 14(Cos) 719
+             716:          60 ExtInst 1(GLSL.std.450) 9(Ceil) 715
+             717:          60 Load 63(inF0)
+             718:          60 Load 64(inF1)
+             719:          60 Load 65(inF2)
+             720:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 717 718 719
              721:          60 Load 63(inF0)
-             722:          60 ExtInst 1(GLSL.std.450) 20(Cosh) 721
+             722:          60 ExtInst 1(GLSL.std.450) 14(Cos) 721
              723:          60 Load 63(inF0)
-             724:          60 ExtInst 1(GLSL.std.450) 12(Degrees) 723
+             724:          60 ExtInst 1(GLSL.std.450) 20(Cosh) 723
              725:          60 Load 63(inF0)
-             726:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 725
+             726:          60 ExtInst 1(GLSL.std.450) 12(Degrees) 725
              727:          60 Load 63(inF0)
-             728:          60 ExtInst 1(GLSL.std.450) 27(Exp) 727
+             728:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 727
              729:          60 Load 63(inF0)
-             730:          60 ExtInst 1(GLSL.std.450) 29(Exp2) 729
-             731:    146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
-             732:    146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
-             733:          60 Load 63(inF0)
-             734:          60 ExtInst 1(GLSL.std.450) 8(Floor) 733
+             730:          60 ExtInst 1(GLSL.std.450) 27(Exp) 729
+             731:          60 Load 63(inF0)
+             732:          60 ExtInst 1(GLSL.std.450) 29(Exp2) 731
+             733:    148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 169
+             734:    148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 169
              735:          60 Load 63(inF0)
-             736:          60 Load 64(inF1)
-             737:   24(fvec2) CompositeExtract 735 0
-             738:   24(fvec2) CompositeExtract 736 0
-             739:   24(fvec2) FMod 737 738
-             740:   24(fvec2) CompositeExtract 735 1
-             741:   24(fvec2) CompositeExtract 736 1
-             742:   24(fvec2) FMod 740 741
-             743:          60 CompositeConstruct 739 742
-             744:          60 Load 63(inF0)
-             745:          60 ExtInst 1(GLSL.std.450) 10(Fract) 744
+             736:          60 ExtInst 1(GLSL.std.450) 8(Floor) 735
+             737:          60 Load 63(inF0)
+             738:          60 Load 64(inF1)
+             739:   24(fvec2) CompositeExtract 737 0
+             740:   24(fvec2) CompositeExtract 738 0
+             741:   24(fvec2) FMod 739 740
+             742:   24(fvec2) CompositeExtract 737 1
+             743:   24(fvec2) CompositeExtract 738 1
+             744:   24(fvec2) FMod 742 743
+             745:          60 CompositeConstruct 741 744
              746:          60 Load 63(inF0)
-             747:          60 Load 64(inF1)
-             748:          60 ExtInst 1(GLSL.std.450) 53(Ldexp) 746 747
-             749:          60 Load 63(inF0)
-             750:          60 Load 64(inF1)
-             751:          60 Load 65(inF2)
-             752:          60 ExtInst 1(GLSL.std.450) 46(FMix) 749 750 751
-             753:          60 Load 63(inF0)
-             754:          60 ExtInst 1(GLSL.std.450) 28(Log) 753
+             747:          60 ExtInst 1(GLSL.std.450) 10(Fract) 746
+             748:          60 Load 63(inF0)
+             749:          60 Load 64(inF1)
+             750:          60 ExtInst 1(GLSL.std.450) 53(Ldexp) 748 749
+             751:          60 Load 63(inF0)
+             752:          60 Load 64(inF1)
+             753:          60 Load 65(inF2)
+             754:          60 ExtInst 1(GLSL.std.450) 46(FMix) 751 752 753
              755:          60 Load 63(inF0)
-             756:          60 ExtInst 1(GLSL.std.450) 30(Log2) 755
-             757:          60 MatrixTimesScalar 756 199
-             758:          60 Load 63(inF0)
-             759:          60 ExtInst 1(GLSL.std.450) 30(Log2) 758
+             756:          60 ExtInst 1(GLSL.std.450) 28(Log) 755
+             757:          60 Load 63(inF0)
+             758:          60 ExtInst 1(GLSL.std.450) 30(Log2) 757
+             759:          60 MatrixTimesScalar 758 201
              760:          60 Load 63(inF0)
-             761:          60 Load 64(inF1)
-             762:          60 ExtInst 1(GLSL.std.450) 40(FMax) 760 761
-             763:          60 Load 63(inF0)
-             764:          60 Load 64(inF1)
-             765:          60 ExtInst 1(GLSL.std.450) 37(FMin) 763 764
-             766:          60 Load 63(inF0)
-             767:          60 Load 64(inF1)
-             768:          60 ExtInst 1(GLSL.std.450) 26(Pow) 766 767
-             769:          60 Load 63(inF0)
-             770:          60 ExtInst 1(GLSL.std.450) 11(Radians) 769
+             761:          60 ExtInst 1(GLSL.std.450) 30(Log2) 760
+             762:          60 Load 63(inF0)
+             763:          60 Load 64(inF1)
+             764:          60 ExtInst 1(GLSL.std.450) 40(FMax) 762 763
+             765:          60 Load 63(inF0)
+             766:          60 Load 64(inF1)
+             767:          60 ExtInst 1(GLSL.std.450) 37(FMin) 765 766
+             768:          60 Load 63(inF0)
+             769:          60 Load 64(inF1)
+             770:          60 ExtInst 1(GLSL.std.450) 26(Pow) 768 769
              771:          60 Load 63(inF0)
-             772:          60 ExtInst 1(GLSL.std.450) 2(RoundEven) 771
+             772:          60 ExtInst 1(GLSL.std.450) 11(Radians) 771
              773:          60 Load 63(inF0)
-             774:          60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 773
+             774:          60 ExtInst 1(GLSL.std.450) 2(RoundEven) 773
              775:          60 Load 63(inF0)
-             776:   24(fvec2) CompositeConstruct 133 133
-             777:   24(fvec2) CompositeConstruct 221 221
-             778:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 775 776 777
-             779:          60 Load 63(inF0)
-             780:          60 ExtInst 1(GLSL.std.450) 6(FSign) 779
+             776:          60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 775
+             777:          60 Load 63(inF0)
+             778:   24(fvec2) CompositeConstruct 135 135
+             779:   24(fvec2) CompositeConstruct 223 223
+             780:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 777 778 779
              781:          60 Load 63(inF0)
-             782:          60 ExtInst 1(GLSL.std.450) 13(Sin) 781
+             782:          60 ExtInst 1(GLSL.std.450) 6(FSign) 781
              783:          60 Load 63(inF0)
              784:          60 ExtInst 1(GLSL.std.450) 13(Sin) 783
-                              Store 64(inF1) 784
              785:          60 Load 63(inF0)
-             786:          60 ExtInst 1(GLSL.std.450) 14(Cos) 785
-                              Store 65(inF2) 786
+             786:          60 ExtInst 1(GLSL.std.450) 13(Sin) 785
+                              Store 64(inF1) 786
              787:          60 Load 63(inF0)
-             788:          60 ExtInst 1(GLSL.std.450) 19(Sinh) 787
+             788:          60 ExtInst 1(GLSL.std.450) 14(Cos) 787
+                              Store 65(inF2) 788
              789:          60 Load 63(inF0)
-             790:          60 Load 64(inF1)
-             791:          60 Load 65(inF2)
-             792:          60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 789 790 791
-             793:          60 Load 63(inF0)
-             794:          60 ExtInst 1(GLSL.std.450) 31(Sqrt) 793
+             790:          60 ExtInst 1(GLSL.std.450) 19(Sinh) 789
+             791:          60 Load 63(inF0)
+             792:          60 Load 64(inF1)
+             793:          60 Load 65(inF2)
+             794:          60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 791 792 793
              795:          60 Load 63(inF0)
-             796:          60 Load 64(inF1)
-             797:          60 ExtInst 1(GLSL.std.450) 48(Step) 795 796
-             798:          60 Load 63(inF0)
-             799:          60 ExtInst 1(GLSL.std.450) 15(Tan) 798
+             796:          60 ExtInst 1(GLSL.std.450) 31(Sqrt) 795
+             797:          60 Load 63(inF0)
+             798:          60 Load 64(inF1)
+             799:          60 ExtInst 1(GLSL.std.450) 48(Step) 797 798
              800:          60 Load 63(inF0)
-             801:          60 ExtInst 1(GLSL.std.450) 21(Tanh) 800
+             801:          60 ExtInst 1(GLSL.std.450) 15(Tan) 800
              802:          60 Load 63(inF0)
-             803:          60 Transpose 802
+             803:          60 ExtInst 1(GLSL.std.450) 21(Tanh) 802
              804:          60 Load 63(inF0)
-             805:          60 ExtInst 1(GLSL.std.450) 3(Trunc) 804
-                              ReturnValue 807
+             805:          60 Transpose 804
+             806:          60 Load 63(inF0)
+             807:          60 ExtInst 1(GLSL.std.450) 3(Trunc) 806
+                              ReturnValue 809
                               FunctionEnd
 74(VertexShaderFunction3x3(mf33;mf33;mf33;):          68 Function None 70
         71(inF0):     69(ptr) FunctionParameter
         72(inF1):     69(ptr) FunctionParameter
         73(inF2):     69(ptr) FunctionParameter
               75:             Label
-             810:          68 Load 71(inF0)
-             812:         811 FOrdNotEqual 810 133
-             813:   132(bool) All 812
-             814:          68 Load 71(inF0)
-             815:          68 ExtInst 1(GLSL.std.450) 4(FAbs) 814
+             812:          68 Load 71(inF0)
+             814:         813 FOrdNotEqual 812 135
+             815:   134(bool) All 814
              816:          68 Load 71(inF0)
-             817:          68 ExtInst 1(GLSL.std.450) 17(Acos) 816
+             817:          68 ExtInst 1(GLSL.std.450) 4(FAbs) 816
              818:          68 Load 71(inF0)
-             819:         811 FOrdNotEqual 818 133
-             820:   132(bool) Any 819
-             821:          68 Load 71(inF0)
-             822:          68 ExtInst 1(GLSL.std.450) 16(Asin) 821
+             819:          68 ExtInst 1(GLSL.std.450) 17(Acos) 818
+             820:          68 Load 71(inF0)
+             821:         813 FOrdNotEqual 820 135
+             822:   134(bool) Any 821
              823:          68 Load 71(inF0)
-             824:          68 ExtInst 1(GLSL.std.450) 18(Atan) 823
+             824:          68 ExtInst 1(GLSL.std.450) 16(Asin) 823
              825:          68 Load 71(inF0)
-             826:          68 Load 72(inF1)
-             827:          68 ExtInst 1(GLSL.std.450) 25(Atan2) 825 826
-             828:          68 Load 71(inF0)
-             829:          68 ExtInst 1(GLSL.std.450) 9(Ceil) 828
+             826:          68 ExtInst 1(GLSL.std.450) 18(Atan) 825
+             827:          68 Load 71(inF0)
+             828:          68 Load 72(inF1)
+             829:          68 ExtInst 1(GLSL.std.450) 25(Atan2) 827 828
              830:          68 Load 71(inF0)
-             831:          68 Load 72(inF1)
-             832:          68 Load 73(inF2)
-             833:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 830 831 832
-             834:          68 Load 71(inF0)
-             835:          68 ExtInst 1(GLSL.std.450) 14(Cos) 834
+             831:          68 ExtInst 1(GLSL.std.450) 9(Ceil) 830
+             832:          68 Load 71(inF0)
+             833:          68 Load 72(inF1)
+             834:          68 Load 73(inF2)
+             835:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 832 833 834
              836:          68 Load 71(inF0)
-             837:          68 ExtInst 1(GLSL.std.450) 20(Cosh) 836
+             837:          68 ExtInst 1(GLSL.std.450) 14(Cos) 836
              838:          68 Load 71(inF0)
-             839:          68 ExtInst 1(GLSL.std.450) 12(Degrees) 838
+             839:          68 ExtInst 1(GLSL.std.450) 20(Cosh) 838
              840:          68 Load 71(inF0)
-             841:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 840
+             841:          68 ExtInst 1(GLSL.std.450) 12(Degrees) 840
              842:          68 Load 71(inF0)
-             843:          68 ExtInst 1(GLSL.std.450) 27(Exp) 842
+             843:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 842
              844:          68 Load 71(inF0)
-             845:          68 ExtInst 1(GLSL.std.450) 29(Exp2) 844
-             846:    146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
-             847:    146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
-             848:          68 Load 71(inF0)
-             849:          68 ExtInst 1(GLSL.std.450) 8(Floor) 848
+             845:          68 ExtInst 1(GLSL.std.450) 27(Exp) 844
+             846:          68 Load 71(inF0)
+             847:          68 ExtInst 1(GLSL.std.450) 29(Exp2) 846
+             848:    148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 169
+             849:    148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 169
              850:          68 Load 71(inF0)
-             851:          68 Load 72(inF1)
-             852:   36(fvec3) CompositeExtract 850 0
-             853:   36(fvec3) CompositeExtract 851 0
-             854:   36(fvec3) FMod 852 853
-             855:   36(fvec3) CompositeExtract 850 1
-             856:   36(fvec3) CompositeExtract 851 1
-             857:   36(fvec3) FMod 855 856
-             858:   36(fvec3) CompositeExtract 850 2
-             859:   36(fvec3) CompositeExtract 851 2
-             860:   36(fvec3) FMod 858 859
-             861:          68 CompositeConstruct 854 857 860
-             862:          68 Load 71(inF0)
-             863:          68 ExtInst 1(GLSL.std.450) 10(Fract) 862
+             851:          68 ExtInst 1(GLSL.std.450) 8(Floor) 850
+             852:          68 Load 71(inF0)
+             853:          68 Load 72(inF1)
+             854:   36(fvec3) CompositeExtract 852 0
+             855:   36(fvec3) CompositeExtract 853 0
+             856:   36(fvec3) FMod 854 855
+             857:   36(fvec3) CompositeExtract 852 1
+             858:   36(fvec3) CompositeExtract 853 1
+             859:   36(fvec3) FMod 857 858
+             860:   36(fvec3) CompositeExtract 852 2
+             861:   36(fvec3) CompositeExtract 853 2
+             862:   36(fvec3) FMod 860 861
+             863:          68 CompositeConstruct 856 859 862
              864:          68 Load 71(inF0)
-             865:          68 Load 72(inF1)
-             866:          68 ExtInst 1(GLSL.std.450) 53(Ldexp) 864 865
-             867:          68 Load 71(inF0)
-             868:          68 Load 72(inF1)
-             869:          68 Load 73(inF2)
-             870:          68 ExtInst 1(GLSL.std.450) 46(FMix) 867 868 869
-             871:          68 Load 71(inF0)
-             872:          68 ExtInst 1(GLSL.std.450) 28(Log) 871
+             865:          68 ExtInst 1(GLSL.std.450) 10(Fract) 864
+             866:          68 Load 71(inF0)
+             867:          68 Load 72(inF1)
+             868:          68 ExtInst 1(GLSL.std.450) 53(Ldexp) 866 867
+             869:          68 Load 71(inF0)
+             870:          68 Load 72(inF1)
+             871:          68 Load 73(inF2)
+             872:          68 ExtInst 1(GLSL.std.450) 46(FMix) 869 870 871
              873:          68 Load 71(inF0)
-             874:          68 ExtInst 1(GLSL.std.450) 30(Log2) 873
-             875:          68 MatrixTimesScalar 874 199
-             876:          68 Load 71(inF0)
-             877:          68 ExtInst 1(GLSL.std.450) 30(Log2) 876
+             874:          68 ExtInst 1(GLSL.std.450) 28(Log) 873
+             875:          68 Load 71(inF0)
+             876:          68 ExtInst 1(GLSL.std.450) 30(Log2) 875
+             877:          68 MatrixTimesScalar 876 201
              878:          68 Load 71(inF0)
-             879:          68 Load 72(inF1)
-             880:          68 ExtInst 1(GLSL.std.450) 40(FMax) 878 879
-             881:          68 Load 71(inF0)
-             882:          68 Load 72(inF1)
-             883:          68 ExtInst 1(GLSL.std.450) 37(FMin) 881 882
-             884:          68 Load 71(inF0)
-             885:          68 Load 72(inF1)
-             886:          68 ExtInst 1(GLSL.std.450) 26(Pow) 884 885
-             887:          68 Load 71(inF0)
-             888:          68 ExtInst 1(GLSL.std.450) 11(Radians) 887
+             879:          68 ExtInst 1(GLSL.std.450) 30(Log2) 878
+             880:          68 Load 71(inF0)
+             881:          68 Load 72(inF1)
+             882:          68 ExtInst 1(GLSL.std.450) 40(FMax) 880 881
+             883:          68 Load 71(inF0)
+             884:          68 Load 72(inF1)
+             885:          68 ExtInst 1(GLSL.std.450) 37(FMin) 883 884
+             886:          68 Load 71(inF0)
+             887:          68 Load 72(inF1)
+             888:          68 ExtInst 1(GLSL.std.450) 26(Pow) 886 887
              889:          68 Load 71(inF0)
-             890:          68 ExtInst 1(GLSL.std.450) 2(RoundEven) 889
+             890:          68 ExtInst 1(GLSL.std.450) 11(Radians) 889
              891:          68 Load 71(inF0)
-             892:          68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 891
+             892:          68 ExtInst 1(GLSL.std.450) 2(RoundEven) 891
              893:          68 Load 71(inF0)
-             894:   36(fvec3) CompositeConstruct 133 133 133
-             895:   36(fvec3) CompositeConstruct 221 221 221
-             896:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 893 894 895
-             897:          68 Load 71(inF0)
-             898:          68 ExtInst 1(GLSL.std.450) 6(FSign) 897
+             894:          68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 893
+             895:          68 Load 71(inF0)
+             896:   36(fvec3) CompositeConstruct 135 135 135
+             897:   36(fvec3) CompositeConstruct 223 223 223
+             898:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 895 896 897
              899:          68 Load 71(inF0)
-             900:          68 ExtInst 1(GLSL.std.450) 13(Sin) 899
+             900:          68 ExtInst 1(GLSL.std.450) 6(FSign) 899
              901:          68 Load 71(inF0)
              902:          68 ExtInst 1(GLSL.std.450) 13(Sin) 901
-                              Store 72(inF1) 902
              903:          68 Load 71(inF0)
-             904:          68 ExtInst 1(GLSL.std.450) 14(Cos) 903
-                              Store 73(inF2) 904
+             904:          68 ExtInst 1(GLSL.std.450) 13(Sin) 903
+                              Store 72(inF1) 904
              905:          68 Load 71(inF0)
-             906:          68 ExtInst 1(GLSL.std.450) 19(Sinh) 905
+             906:          68 ExtInst 1(GLSL.std.450) 14(Cos) 905
+                              Store 73(inF2) 906
              907:          68 Load 71(inF0)
-             908:          68 Load 72(inF1)
-             909:          68 Load 73(inF2)
-             910:          68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 907 908 909
-             911:          68 Load 71(inF0)
-             912:          68 ExtInst 1(GLSL.std.450) 31(Sqrt) 911
+             908:          68 ExtInst 1(GLSL.std.450) 19(Sinh) 907
+             909:          68 Load 71(inF0)
+             910:          68 Load 72(inF1)
+             911:          68 Load 73(inF2)
+             912:          68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 909 910 911
              913:          68 Load 71(inF0)
-             914:          68 Load 72(inF1)
-             915:          68 ExtInst 1(GLSL.std.450) 48(Step) 913 914
-             916:          68 Load 71(inF0)
-             917:          68 ExtInst 1(GLSL.std.450) 15(Tan) 916
+             914:          68 ExtInst 1(GLSL.std.450) 31(Sqrt) 913
+             915:          68 Load 71(inF0)
+             916:          68 Load 72(inF1)
+             917:          68 ExtInst 1(GLSL.std.450) 48(Step) 915 916
              918:          68 Load 71(inF0)
-             919:          68 ExtInst 1(GLSL.std.450) 21(Tanh) 918
+             919:          68 ExtInst 1(GLSL.std.450) 15(Tan) 918
              920:          68 Load 71(inF0)
-             921:          68 Transpose 920
+             921:          68 ExtInst 1(GLSL.std.450) 21(Tanh) 920
              922:          68 Load 71(inF0)
-             923:          68 ExtInst 1(GLSL.std.450) 3(Trunc) 922
-                              ReturnValue 925
+             923:          68 Transpose 922
+             924:          68 Load 71(inF0)
+             925:          68 ExtInst 1(GLSL.std.450) 3(Trunc) 924
+                              ReturnValue 927
                               FunctionEnd
 82(VertexShaderFunction4x4(mf44;mf44;mf44;):          76 Function None 78
         79(inF0):     77(ptr) FunctionParameter
         80(inF1):     77(ptr) FunctionParameter
         81(inF2):     77(ptr) FunctionParameter
               83:             Label
-             928:          76 Load 79(inF0)
-             930:         929 FOrdNotEqual 928 133
-             931:   132(bool) All 930
-             932:          76 Load 79(inF0)
-             933:          76 ExtInst 1(GLSL.std.450) 4(FAbs) 932
+             930:          76 Load 79(inF0)
+             932:         931 FOrdNotEqual 930 135
+             933:   134(bool) All 932
              934:          76 Load 79(inF0)
-             935:          76 ExtInst 1(GLSL.std.450) 17(Acos) 934
+             935:          76 ExtInst 1(GLSL.std.450) 4(FAbs) 934
              936:          76 Load 79(inF0)
-             937:         929 FOrdNotEqual 936 133
-             938:   132(bool) Any 937
-             939:          76 Load 79(inF0)
-             940:          76 ExtInst 1(GLSL.std.450) 16(Asin) 939
+             937:          76 ExtInst 1(GLSL.std.450) 17(Acos) 936
+             938:          76 Load 79(inF0)
+             939:         931 FOrdNotEqual 938 135
+             940:   134(bool) Any 939
              941:          76 Load 79(inF0)
-             942:          76 ExtInst 1(GLSL.std.450) 18(Atan) 941
+             942:          76 ExtInst 1(GLSL.std.450) 16(Asin) 941
              943:          76 Load 79(inF0)
-             944:          76 Load 80(inF1)
-             945:          76 ExtInst 1(GLSL.std.450) 25(Atan2) 943 944
-             946:          76 Load 79(inF0)
-             947:          76 ExtInst 1(GLSL.std.450) 9(Ceil) 946
+             944:          76 ExtInst 1(GLSL.std.450) 18(Atan) 943
+             945:          76 Load 79(inF0)
+             946:          76 Load 80(inF1)
+             947:          76 ExtInst 1(GLSL.std.450) 25(Atan2) 945 946
              948:          76 Load 79(inF0)
-             949:          76 Load 80(inF1)
-             950:          76 Load 81(inF2)
-             951:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 948 949 950
-             952:          76 Load 79(inF0)
-             953:          76 ExtInst 1(GLSL.std.450) 14(Cos) 952
+             949:          76 ExtInst 1(GLSL.std.450) 9(Ceil) 948
+             950:          76 Load 79(inF0)
+             951:          76 Load 80(inF1)
+             952:          76 Load 81(inF2)
+             953:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 950 951 952
              954:          76 Load 79(inF0)
-             955:          76 ExtInst 1(GLSL.std.450) 20(Cosh) 954
+             955:          76 ExtInst 1(GLSL.std.450) 14(Cos) 954
              956:          76 Load 79(inF0)
-             957:          76 ExtInst 1(GLSL.std.450) 12(Degrees) 956
+             957:          76 ExtInst 1(GLSL.std.450) 20(Cosh) 956
              958:          76 Load 79(inF0)
-             959:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 958
+             959:          76 ExtInst 1(GLSL.std.450) 12(Degrees) 958
              960:          76 Load 79(inF0)
-             961:          76 ExtInst 1(GLSL.std.450) 27(Exp) 960
+             961:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 960
              962:          76 Load 79(inF0)
-             963:          76 ExtInst 1(GLSL.std.450) 29(Exp2) 962
-             964:    146(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 167
-             965:    146(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 167
-             966:          76 Load 79(inF0)
-             967:          76 ExtInst 1(GLSL.std.450) 8(Floor) 966
+             963:          76 ExtInst 1(GLSL.std.450) 27(Exp) 962
+             964:          76 Load 79(inF0)
+             965:          76 ExtInst 1(GLSL.std.450) 29(Exp2) 964
+             966:    148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 169
+             967:    148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 169
              968:          76 Load 79(inF0)
-             969:          76 Load 80(inF1)
-             970:   48(fvec4) CompositeExtract 968 0
-             971:   48(fvec4) CompositeExtract 969 0
-             972:   48(fvec4) FMod 970 971
-             973:   48(fvec4) CompositeExtract 968 1
-             974:   48(fvec4) CompositeExtract 969 1
-             975:   48(fvec4) FMod 973 974
-             976:   48(fvec4) CompositeExtract 968 2
-             977:   48(fvec4) CompositeExtract 969 2
-             978:   48(fvec4) FMod 976 977
-             979:   48(fvec4) CompositeExtract 968 3
-             980:   48(fvec4) CompositeExtract 969 3
-             981:   48(fvec4) FMod 979 980
-             982:          76 CompositeConstruct 972 975 978 981
-             983:          76 Load 79(inF0)
-             984:          76 ExtInst 1(GLSL.std.450) 10(Fract) 983
+             969:          76 ExtInst 1(GLSL.std.450) 8(Floor) 968
+             970:          76 Load 79(inF0)
+             971:          76 Load 80(inF1)
+             972:   48(fvec4) CompositeExtract 970 0
+             973:   48(fvec4) CompositeExtract 971 0
+             974:   48(fvec4) FMod 972 973
+             975:   48(fvec4) CompositeExtract 970 1
+             976:   48(fvec4) CompositeExtract 971 1
+             977:   48(fvec4) FMod 975 976
+             978:   48(fvec4) CompositeExtract 970 2
+             979:   48(fvec4) CompositeExtract 971 2
+             980:   48(fvec4) FMod 978 979
+             981:   48(fvec4) CompositeExtract 970 3
+             982:   48(fvec4) CompositeExtract 971 3
+             983:   48(fvec4) FMod 981 982
+             984:          76 CompositeConstruct 974 977 980 983
              985:          76 Load 79(inF0)
-             986:          76 Load 80(inF1)
-             987:          76 ExtInst 1(GLSL.std.450) 53(Ldexp) 985 986
-             988:          76 Load 79(inF0)
-             989:          76 Load 80(inF1)
-             990:          76 Load 81(inF2)
-             991:          76 ExtInst 1(GLSL.std.450) 46(FMix) 988 989 990
-             992:          76 Load 79(inF0)
-             993:          76 ExtInst 1(GLSL.std.450) 28(Log) 992
+             986:          76 ExtInst 1(GLSL.std.450) 10(Fract) 985
+             987:          76 Load 79(inF0)
+             988:          76 Load 80(inF1)
+             989:          76 ExtInst 1(GLSL.std.450) 53(Ldexp) 987 988
+             990:          76 Load 79(inF0)
+             991:          76 Load 80(inF1)
+             992:          76 Load 81(inF2)
+             993:          76 ExtInst 1(GLSL.std.450) 46(FMix) 990 991 992
              994:          76 Load 79(inF0)
-             995:          76 ExtInst 1(GLSL.std.450) 30(Log2) 994
-             996:          76 MatrixTimesScalar 995 199
-             997:          76 Load 79(inF0)
-             998:          76 ExtInst 1(GLSL.std.450) 30(Log2) 997
+             995:          76 ExtInst 1(GLSL.std.450) 28(Log) 994
+             996:          76 Load 79(inF0)
+             997:          76 ExtInst 1(GLSL.std.450) 30(Log2) 996
+             998:          76 MatrixTimesScalar 997 201
              999:          76 Load 79(inF0)
-            1000:          76 Load 80(inF1)
-            1001:          76 ExtInst 1(GLSL.std.450) 40(FMax) 999 1000
-            1002:          76 Load 79(inF0)
-            1003:          76 Load 80(inF1)
-            1004:          76 ExtInst 1(GLSL.std.450) 37(FMin) 1002 1003
-            1005:          76 Load 79(inF0)
-            1006:          76 Load 80(inF1)
-            1007:          76 ExtInst 1(GLSL.std.450) 26(Pow) 1005 1006
-            1008:          76 Load 79(inF0)
-            1009:          76 ExtInst 1(GLSL.std.450) 11(Radians) 1008
+            1000:          76 ExtInst 1(GLSL.std.450) 30(Log2) 999
+            1001:          76 Load 79(inF0)
+            1002:          76 Load 80(inF1)
+            1003:          76 ExtInst 1(GLSL.std.450) 40(FMax) 1001 1002
+            1004:          76 Load 79(inF0)
+            1005:          76 Load 80(inF1)
+            1006:          76 ExtInst 1(GLSL.std.450) 37(FMin) 1004 1005
+            1007:          76 Load 79(inF0)
+            1008:          76 Load 80(inF1)
+            1009:          76 ExtInst 1(GLSL.std.450) 26(Pow) 1007 1008
             1010:          76 Load 79(inF0)
-            1011:          76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1010
+            1011:          76 ExtInst 1(GLSL.std.450) 11(Radians) 1010
             1012:          76 Load 79(inF0)
-            1013:          76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1012
+            1013:          76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1012
             1014:          76 Load 79(inF0)
-            1015:   48(fvec4) CompositeConstruct 133 133 133 133
-            1016:   48(fvec4) CompositeConstruct 221 221 221 221
-            1017:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1014 1015 1016
-            1018:          76 Load 79(inF0)
-            1019:          76 ExtInst 1(GLSL.std.450) 6(FSign) 1018
+            1015:          76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1014
+            1016:          76 Load 79(inF0)
+            1017:   48(fvec4) CompositeConstruct 135 135 135 135
+            1018:   48(fvec4) CompositeConstruct 223 223 223 223
+            1019:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1016 1017 1018
             1020:          76 Load 79(inF0)
-            1021:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1020
+            1021:          76 ExtInst 1(GLSL.std.450) 6(FSign) 1020
             1022:          76 Load 79(inF0)
             1023:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1022
-                              Store 80(inF1) 1023
             1024:          76 Load 79(inF0)
-            1025:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1024
-                              Store 81(inF2) 1025
+            1025:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1024
+                              Store 80(inF1) 1025
             1026:          76 Load 79(inF0)
-            1027:          76 ExtInst 1(GLSL.std.450) 19(Sinh) 1026
+            1027:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1026
+                              Store 81(inF2) 1027
             1028:          76 Load 79(inF0)
-            1029:          76 Load 80(inF1)
-            1030:          76 Load 81(inF2)
-            1031:          76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1028 1029 1030
-            1032:          76 Load 79(inF0)
-            1033:          76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1032
+            1029:          76 ExtInst 1(GLSL.std.450) 19(Sinh) 1028
+            1030:          76 Load 79(inF0)
+            1031:          76 Load 80(inF1)
+            1032:          76 Load 81(inF2)
+            1033:          76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1030 1031 1032
             1034:          76 Load 79(inF0)
-            1035:          76 Load 80(inF1)
-            1036:          76 ExtInst 1(GLSL.std.450) 48(Step) 1034 1035
-            1037:          76 Load 79(inF0)
-            1038:          76 ExtInst 1(GLSL.std.450) 15(Tan) 1037
+            1035:          76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1034
+            1036:          76 Load 79(inF0)
+            1037:          76 Load 80(inF1)
+            1038:          76 ExtInst 1(GLSL.std.450) 48(Step) 1036 1037
             1039:          76 Load 79(inF0)
-            1040:          76 ExtInst 1(GLSL.std.450) 21(Tanh) 1039
+            1040:          76 ExtInst 1(GLSL.std.450) 15(Tan) 1039
             1041:          76 Load 79(inF0)
-            1042:          76 Transpose 1041
+            1042:          76 ExtInst 1(GLSL.std.450) 21(Tanh) 1041
             1043:          76 Load 79(inF0)
-            1044:          76 ExtInst 1(GLSL.std.450) 3(Trunc) 1043
-                              ReturnValue 1046
+            1044:          76 Transpose 1043
+            1045:          76 Load 79(inF0)
+            1046:          76 ExtInst 1(GLSL.std.450) 3(Trunc) 1045
+                              ReturnValue 1048
                               FunctionEnd
 91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;):           2 Function None 84
         85(inF0):      7(ptr) FunctionParameter
@@ -3940,51 +3953,51 @@
        89(inFM0):     61(ptr) FunctionParameter
        90(inFM1):     61(ptr) FunctionParameter
               92:             Label
-        1049(r0):      7(ptr) Variable Function
-        1053(r1):     25(ptr) Variable Function
-        1057(r2):     25(ptr) Variable Function
-        1061(r3):      7(ptr) Variable Function
-        1065(r4):     25(ptr) Variable Function
-        1069(r5):     25(ptr) Variable Function
-        1073(r6):     61(ptr) Variable Function
-        1077(r7):     61(ptr) Variable Function
-        1081(r8):     61(ptr) Variable Function
-            1050:    6(float) Load 86(inF1)
-            1051:    6(float) Load 85(inF0)
-            1052:    6(float) FMul 1050 1051
-                              Store 1049(r0) 1052
-            1054:    6(float) Load 85(inF0)
-            1055:   24(fvec2) Load 87(inFV0)
-            1056:   24(fvec2) VectorTimesScalar 1055 1054
-                              Store 1053(r1) 1056
-            1058:   24(fvec2) Load 87(inFV0)
-            1059:    6(float) Load 85(inF0)
-            1060:   24(fvec2) VectorTimesScalar 1058 1059
-                              Store 1057(r2) 1060
-            1062:   24(fvec2) Load 87(inFV0)
-            1063:   24(fvec2) Load 88(inFV1)
-            1064:    6(float) Dot 1062 1063
-                              Store 1061(r3) 1064
-            1066:   24(fvec2) Load 87(inFV0)
-            1067:          60 Load 89(inFM0)
-            1068:   24(fvec2) VectorTimesMatrix 1066 1067
-                              Store 1065(r4) 1068
-            1070:          60 Load 89(inFM0)
-            1071:   24(fvec2) Load 87(inFV0)
-            1072:   24(fvec2) MatrixTimesVector 1070 1071
-                              Store 1069(r5) 1072
-            1074:    6(float) Load 85(inF0)
-            1075:          60 Load 89(inFM0)
-            1076:          60 MatrixTimesScalar 1075 1074
-                              Store 1073(r6) 1076
-            1078:          60 Load 89(inFM0)
-            1079:    6(float) Load 85(inF0)
-            1080:          60 MatrixTimesScalar 1078 1079
-                              Store 1077(r7) 1080
-            1082:          60 Load 90(inFM1)
-            1083:          60 Load 89(inFM0)
-            1084:          60 MatrixTimesMatrix 1082 1083
-                              Store 1081(r8) 1084
+        1051(r0):      7(ptr) Variable Function
+        1055(r1):     25(ptr) Variable Function
+        1059(r2):     25(ptr) Variable Function
+        1063(r3):      7(ptr) Variable Function
+        1067(r4):     25(ptr) Variable Function
+        1071(r5):     25(ptr) Variable Function
+        1075(r6):     61(ptr) Variable Function
+        1079(r7):     61(ptr) Variable Function
+        1083(r8):     61(ptr) Variable Function
+            1052:    6(float) Load 86(inF1)
+            1053:    6(float) Load 85(inF0)
+            1054:    6(float) FMul 1052 1053
+                              Store 1051(r0) 1054
+            1056:    6(float) Load 85(inF0)
+            1057:   24(fvec2) Load 87(inFV0)
+            1058:   24(fvec2) VectorTimesScalar 1057 1056
+                              Store 1055(r1) 1058
+            1060:   24(fvec2) Load 87(inFV0)
+            1061:    6(float) Load 85(inF0)
+            1062:   24(fvec2) VectorTimesScalar 1060 1061
+                              Store 1059(r2) 1062
+            1064:   24(fvec2) Load 87(inFV0)
+            1065:   24(fvec2) Load 88(inFV1)
+            1066:    6(float) Dot 1064 1065
+                              Store 1063(r3) 1066
+            1068:   24(fvec2) Load 87(inFV0)
+            1069:          60 Load 89(inFM0)
+            1070:   24(fvec2) VectorTimesMatrix 1068 1069
+                              Store 1067(r4) 1070
+            1072:          60 Load 89(inFM0)
+            1073:   24(fvec2) Load 87(inFV0)
+            1074:   24(fvec2) MatrixTimesVector 1072 1073
+                              Store 1071(r5) 1074
+            1076:    6(float) Load 85(inF0)
+            1077:          60 Load 89(inFM0)
+            1078:          60 MatrixTimesScalar 1077 1076
+                              Store 1075(r6) 1078
+            1080:          60 Load 89(inFM0)
+            1081:    6(float) Load 85(inF0)
+            1082:          60 MatrixTimesScalar 1080 1081
+                              Store 1079(r7) 1082
+            1084:          60 Load 90(inFM1)
+            1085:          60 Load 89(inFM0)
+            1086:          60 MatrixTimesMatrix 1084 1085
+                              Store 1083(r8) 1086
                               Return
                               FunctionEnd
 100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;):           2 Function None 93
@@ -3995,51 +4008,51 @@
        98(inFM0):     69(ptr) FunctionParameter
        99(inFM1):     69(ptr) FunctionParameter
              101:             Label
-        1085(r0):      7(ptr) Variable Function
-        1089(r1):     37(ptr) Variable Function
-        1093(r2):     37(ptr) Variable Function
-        1097(r3):      7(ptr) Variable Function
-        1101(r4):     37(ptr) Variable Function
-        1105(r5):     37(ptr) Variable Function
-        1109(r6):     69(ptr) Variable Function
-        1113(r7):     69(ptr) Variable Function
-        1117(r8):     69(ptr) Variable Function
-            1086:    6(float) Load 95(inF1)
-            1087:    6(float) Load 94(inF0)
-            1088:    6(float) FMul 1086 1087
-                              Store 1085(r0) 1088
-            1090:    6(float) Load 94(inF0)
-            1091:   36(fvec3) Load 96(inFV0)
-            1092:   36(fvec3) VectorTimesScalar 1091 1090
-                              Store 1089(r1) 1092
-            1094:   36(fvec3) Load 96(inFV0)
-            1095:    6(float) Load 94(inF0)
-            1096:   36(fvec3) VectorTimesScalar 1094 1095
-                              Store 1093(r2) 1096
-            1098:   36(fvec3) Load 96(inFV0)
-            1099:   36(fvec3) Load 97(inFV1)
-            1100:    6(float) Dot 1098 1099
-                              Store 1097(r3) 1100
-            1102:   36(fvec3) Load 96(inFV0)
-            1103:          68 Load 98(inFM0)
-            1104:   36(fvec3) VectorTimesMatrix 1102 1103
-                              Store 1101(r4) 1104
-            1106:          68 Load 98(inFM0)
-            1107:   36(fvec3) Load 96(inFV0)
-            1108:   36(fvec3) MatrixTimesVector 1106 1107
-                              Store 1105(r5) 1108
-            1110:    6(float) Load 94(inF0)
-            1111:          68 Load 98(inFM0)
-            1112:          68 MatrixTimesScalar 1111 1110
-                              Store 1109(r6) 1112
-            1114:          68 Load 98(inFM0)
-            1115:    6(float) Load 94(inF0)
-            1116:          68 MatrixTimesScalar 1114 1115
-                              Store 1113(r7) 1116
-            1118:          68 Load 99(inFM1)
-            1119:          68 Load 98(inFM0)
-            1120:          68 MatrixTimesMatrix 1118 1119
-                              Store 1117(r8) 1120
+        1087(r0):      7(ptr) Variable Function
+        1091(r1):     37(ptr) Variable Function
+        1095(r2):     37(ptr) Variable Function
+        1099(r3):      7(ptr) Variable Function
+        1103(r4):     37(ptr) Variable Function
+        1107(r5):     37(ptr) Variable Function
+        1111(r6):     69(ptr) Variable Function
+        1115(r7):     69(ptr) Variable Function
+        1119(r8):     69(ptr) Variable Function
+            1088:    6(float) Load 95(inF1)
+            1089:    6(float) Load 94(inF0)
+            1090:    6(float) FMul 1088 1089
+                              Store 1087(r0) 1090
+            1092:    6(float) Load 94(inF0)
+            1093:   36(fvec3) Load 96(inFV0)
+            1094:   36(fvec3) VectorTimesScalar 1093 1092
+                              Store 1091(r1) 1094
+            1096:   36(fvec3) Load 96(inFV0)
+            1097:    6(float) Load 94(inF0)
+            1098:   36(fvec3) VectorTimesScalar 1096 1097
+                              Store 1095(r2) 1098
+            1100:   36(fvec3) Load 96(inFV0)
+            1101:   36(fvec3) Load 97(inFV1)
+            1102:    6(float) Dot 1100 1101
+                              Store 1099(r3) 1102
+            1104:   36(fvec3) Load 96(inFV0)
+            1105:          68 Load 98(inFM0)
+            1106:   36(fvec3) VectorTimesMatrix 1104 1105
+                              Store 1103(r4) 1106
+            1108:          68 Load 98(inFM0)
+            1109:   36(fvec3) Load 96(inFV0)
+            1110:   36(fvec3) MatrixTimesVector 1108 1109
+                              Store 1107(r5) 1110
+            1112:    6(float) Load 94(inF0)
+            1113:          68 Load 98(inFM0)
+            1114:          68 MatrixTimesScalar 1113 1112
+                              Store 1111(r6) 1114
+            1116:          68 Load 98(inFM0)
+            1117:    6(float) Load 94(inF0)
+            1118:          68 MatrixTimesScalar 1116 1117
+                              Store 1115(r7) 1118
+            1120:          68 Load 99(inFM1)
+            1121:          68 Load 98(inFM0)
+            1122:          68 MatrixTimesMatrix 1120 1121
+                              Store 1119(r8) 1122
                               Return
                               FunctionEnd
 109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;):           2 Function None 102
@@ -4050,51 +4063,51 @@
       107(inFM0):     77(ptr) FunctionParameter
       108(inFM1):     77(ptr) FunctionParameter
              110:             Label
-        1121(r0):      7(ptr) Variable Function
-        1125(r1):     49(ptr) Variable Function
-        1129(r2):     49(ptr) Variable Function
-        1133(r3):      7(ptr) Variable Function
-        1137(r4):     49(ptr) Variable Function
-        1141(r5):     49(ptr) Variable Function
-        1145(r6):     77(ptr) Variable Function
-        1149(r7):     77(ptr) Variable Function
-        1153(r8):     77(ptr) Variable Function
-            1122:    6(float) Load 104(inF1)
-            1123:    6(float) Load 103(inF0)
-            1124:    6(float) FMul 1122 1123
-                              Store 1121(r0) 1124
-            1126:    6(float) Load 103(inF0)
-            1127:   48(fvec4) Load 105(inFV0)
-            1128:   48(fvec4) VectorTimesScalar 1127 1126
-                              Store 1125(r1) 1128
-            1130:   48(fvec4) Load 105(inFV0)
-            1131:    6(float) Load 103(inF0)
-            1132:   48(fvec4) VectorTimesScalar 1130 1131
-                              Store 1129(r2) 1132
-            1134:   48(fvec4) Load 105(inFV0)
-            1135:   48(fvec4) Load 106(inFV1)
-            1136:    6(float) Dot 1134 1135
-                              Store 1133(r3) 1136
-            1138:   48(fvec4) Load 105(inFV0)
-            1139:          76 Load 107(inFM0)
-            1140:   48(fvec4) VectorTimesMatrix 1138 1139
-                              Store 1137(r4) 1140
-            1142:          76 Load 107(inFM0)
-            1143:   48(fvec4) Load 105(inFV0)
-            1144:   48(fvec4) MatrixTimesVector 1142 1143
-                              Store 1141(r5) 1144
-            1146:    6(float) Load 103(inF0)
-            1147:          76 Load 107(inFM0)
-            1148:          76 MatrixTimesScalar 1147 1146
-                              Store 1145(r6) 1148
-            1150:          76 Load 107(inFM0)
-            1151:    6(float) Load 103(inF0)
-            1152:          76 MatrixTimesScalar 1150 1151
-                              Store 1149(r7) 1152
-            1154:          76 Load 108(inFM1)
-            1155:          76 Load 107(inFM0)
-            1156:          76 MatrixTimesMatrix 1154 1155
-                              Store 1153(r8) 1156
+        1123(r0):      7(ptr) Variable Function
+        1127(r1):     49(ptr) Variable Function
+        1131(r2):     49(ptr) Variable Function
+        1135(r3):      7(ptr) Variable Function
+        1139(r4):     49(ptr) Variable Function
+        1143(r5):     49(ptr) Variable Function
+        1147(r6):     77(ptr) Variable Function
+        1151(r7):     77(ptr) Variable Function
+        1155(r8):     77(ptr) Variable Function
+            1124:    6(float) Load 104(inF1)
+            1125:    6(float) Load 103(inF0)
+            1126:    6(float) FMul 1124 1125
+                              Store 1123(r0) 1126
+            1128:    6(float) Load 103(inF0)
+            1129:   48(fvec4) Load 105(inFV0)
+            1130:   48(fvec4) VectorTimesScalar 1129 1128
+                              Store 1127(r1) 1130
+            1132:   48(fvec4) Load 105(inFV0)
+            1133:    6(float) Load 103(inF0)
+            1134:   48(fvec4) VectorTimesScalar 1132 1133
+                              Store 1131(r2) 1134
+            1136:   48(fvec4) Load 105(inFV0)
+            1137:   48(fvec4) Load 106(inFV1)
+            1138:    6(float) Dot 1136 1137
+                              Store 1135(r3) 1138
+            1140:   48(fvec4) Load 105(inFV0)
+            1141:          76 Load 107(inFM0)
+            1142:   48(fvec4) VectorTimesMatrix 1140 1141
+                              Store 1139(r4) 1142
+            1144:          76 Load 107(inFM0)
+            1145:   48(fvec4) Load 105(inFV0)
+            1146:   48(fvec4) MatrixTimesVector 1144 1145
+                              Store 1143(r5) 1146
+            1148:    6(float) Load 103(inF0)
+            1149:          76 Load 107(inFM0)
+            1150:          76 MatrixTimesScalar 1149 1148
+                              Store 1147(r6) 1150
+            1152:          76 Load 107(inFM0)
+            1153:    6(float) Load 103(inF0)
+            1154:          76 MatrixTimesScalar 1152 1153
+                              Store 1151(r7) 1154
+            1156:          76 Load 108(inFM1)
+            1157:          76 Load 107(inFM0)
+            1158:          76 MatrixTimesMatrix 1156 1157
+                              Store 1155(r8) 1158
                               Return
                               FunctionEnd
 129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;):           2 Function None 119
@@ -4108,90 +4121,94 @@
     127(inFM3x4):    116(ptr) FunctionParameter
     128(inFM2x4):    118(ptr) FunctionParameter
              130:             Label
-       1157(r00):      7(ptr) Variable Function
-       1161(r01):     25(ptr) Variable Function
-       1165(r02):     37(ptr) Variable Function
-       1169(r03):     25(ptr) Variable Function
-       1173(r04):     37(ptr) Variable Function
-       1177(r05):      7(ptr) Variable Function
-       1181(r06):      7(ptr) Variable Function
-       1185(r07):     37(ptr) Variable Function
-       1189(r08):     25(ptr) Variable Function
-       1193(r09):     25(ptr) Variable Function
-       1197(r10):     37(ptr) Variable Function
-       1201(r11):    112(ptr) Variable Function
-       1205(r12):    114(ptr) Variable Function
-       1209(r13):     61(ptr) Variable Function
-       1213(r14):    112(ptr) Variable Function
-       1217(r15):    118(ptr) Variable Function
-       1221(r16):    116(ptr) Variable Function
-            1158:    6(float) Load 121(inF1)
-            1159:    6(float) Load 120(inF0)
-            1160:    6(float) FMul 1158 1159
-                              Store 1157(r00) 1160
-            1162:    6(float) Load 120(inF0)
-            1163:   24(fvec2) Load 122(inFV2)
-            1164:   24(fvec2) VectorTimesScalar 1163 1162
-                              Store 1161(r01) 1164
-            1166:    6(float) Load 120(inF0)
-            1167:   36(fvec3) Load 123(inFV3)
-            1168:   36(fvec3) VectorTimesScalar 1167 1166
-                              Store 1165(r02) 1168
-            1170:   24(fvec2) Load 122(inFV2)
-            1171:    6(float) Load 120(inF0)
-            1172:   24(fvec2) VectorTimesScalar 1170 1171
-                              Store 1169(r03) 1172
-            1174:   36(fvec3) Load 123(inFV3)
-            1175:    6(float) Load 120(inF0)
-            1176:   36(fvec3) VectorTimesScalar 1174 1175
-                              Store 1173(r04) 1176
-            1178:   24(fvec2) Load 122(inFV2)
-            1179:   24(fvec2) Load 122(inFV2)
-            1180:    6(float) Dot 1178 1179
-                              Store 1177(r05) 1180
-            1182:   36(fvec3) Load 123(inFV3)
-            1183:   36(fvec3) Load 123(inFV3)
-            1184:    6(float) Dot 1182 1183
-                              Store 1181(r06) 1184
-            1186:         111 Load 124(inFM2x3)
-            1187:   24(fvec2) Load 122(inFV2)
-            1188:   36(fvec3) MatrixTimesVector 1186 1187
-                              Store 1185(r07) 1188
-            1190:         113 Load 125(inFM3x2)
-            1191:   36(fvec3) Load 123(inFV3)
-            1192:   24(fvec2) MatrixTimesVector 1190 1191
-                              Store 1189(r08) 1192
-            1194:   36(fvec3) Load 123(inFV3)
-            1195:         111 Load 124(inFM2x3)
-            1196:   24(fvec2) VectorTimesMatrix 1194 1195
-                              Store 1193(r09) 1196
-            1198:   24(fvec2) Load 122(inFV2)
-            1199:         113 Load 125(inFM3x2)
-            1200:   36(fvec3) VectorTimesMatrix 1198 1199
-                              Store 1197(r10) 1200
-            1202:    6(float) Load 120(inF0)
-            1203:         111 Load 124(inFM2x3)
-            1204:         111 MatrixTimesScalar 1203 1202
-                              Store 1201(r11) 1204
-            1206:    6(float) Load 120(inF0)
-            1207:         113 Load 125(inFM3x2)
-            1208:         113 MatrixTimesScalar 1207 1206
-                              Store 1205(r12) 1208
-            1210:         113 Load 125(inFM3x2)
-            1211:         111 Load 124(inFM2x3)
-            1212:          60 MatrixTimesMatrix 1210 1211
-                              Store 1209(r13) 1212
-            1214:          68 Load 126(inFM3x3)
-            1215:         111 Load 124(inFM2x3)
-            1216:         111 MatrixTimesMatrix 1214 1215
-                              Store 1213(r14) 1216
-            1218:         115 Load 127(inFM3x4)
-            1219:         111 Load 124(inFM2x3)
-            1220:         117 MatrixTimesMatrix 1218 1219
-                              Store 1217(r15) 1220
-            1222:         117 Load 128(inFM2x4)
-            1223:         113 Load 125(inFM3x2)
-            1224:         115 MatrixTimesMatrix 1222 1223
-                              Store 1221(r16) 1224
+       1159(r00):      7(ptr) Variable Function
+       1163(r01):     25(ptr) Variable Function
+       1167(r02):     37(ptr) Variable Function
+       1171(r03):     25(ptr) Variable Function
+       1175(r04):     37(ptr) Variable Function
+       1179(r05):      7(ptr) Variable Function
+       1183(r06):      7(ptr) Variable Function
+       1187(r07):     37(ptr) Variable Function
+       1191(r08):     25(ptr) Variable Function
+       1195(r09):     25(ptr) Variable Function
+       1199(r10):     37(ptr) Variable Function
+       1203(r11):    112(ptr) Variable Function
+       1207(r12):    114(ptr) Variable Function
+       1211(r13):     61(ptr) Variable Function
+       1215(r14):    112(ptr) Variable Function
+       1219(r15):    118(ptr) Variable Function
+       1223(r16):    116(ptr) Variable Function
+            1160:    6(float) Load 121(inF1)
+            1161:    6(float) Load 120(inF0)
+            1162:    6(float) FMul 1160 1161
+                              Store 1159(r00) 1162
+            1164:    6(float) Load 120(inF0)
+            1165:   24(fvec2) Load 122(inFV2)
+            1166:   24(fvec2) VectorTimesScalar 1165 1164
+                              Store 1163(r01) 1166
+            1168:    6(float) Load 120(inF0)
+            1169:   36(fvec3) Load 123(inFV3)
+            1170:   36(fvec3) VectorTimesScalar 1169 1168
+                              Store 1167(r02) 1170
+            1172:   24(fvec2) Load 122(inFV2)
+            1173:    6(float) Load 120(inF0)
+            1174:   24(fvec2) VectorTimesScalar 1172 1173
+                              Store 1171(r03) 1174
+            1176:   36(fvec3) Load 123(inFV3)
+            1177:    6(float) Load 120(inF0)
+            1178:   36(fvec3) VectorTimesScalar 1176 1177
+                              Store 1175(r04) 1178
+            1180:   24(fvec2) Load 122(inFV2)
+            1181:   24(fvec2) Load 122(inFV2)
+            1182:    6(float) Dot 1180 1181
+                              Store 1179(r05) 1182
+            1184:   36(fvec3) Load 123(inFV3)
+            1185:   36(fvec3) Load 123(inFV3)
+            1186:    6(float) Dot 1184 1185
+                              Store 1183(r06) 1186
+            1188:         111 Load 124(inFM2x3)
+            1189:   24(fvec2) Load 122(inFV2)
+            1190:   36(fvec3) MatrixTimesVector 1188 1189
+                              Store 1187(r07) 1190
+            1192:         113 Load 125(inFM3x2)
+            1193:   36(fvec3) Load 123(inFV3)
+            1194:   24(fvec2) MatrixTimesVector 1192 1193
+                              Store 1191(r08) 1194
+            1196:   36(fvec3) Load 123(inFV3)
+            1197:         111 Load 124(inFM2x3)
+            1198:   24(fvec2) VectorTimesMatrix 1196 1197
+                              Store 1195(r09) 1198
+            1200:   24(fvec2) Load 122(inFV2)
+            1201:         113 Load 125(inFM3x2)
+            1202:   36(fvec3) VectorTimesMatrix 1200 1201
+                              Store 1199(r10) 1202
+            1204:    6(float) Load 120(inF0)
+            1205:         111 Load 124(inFM2x3)
+            1206:         111 MatrixTimesScalar 1205 1204
+                              Store 1203(r11) 1206
+            1208:    6(float) Load 120(inF0)
+            1209:         113 Load 125(inFM3x2)
+            1210:         113 MatrixTimesScalar 1209 1208
+                              Store 1207(r12) 1210
+            1212:         113 Load 125(inFM3x2)
+            1213:         111 Load 124(inFM2x3)
+            1214:          60 MatrixTimesMatrix 1212 1213
+                              Store 1211(r13) 1214
+            1216:          68 Load 126(inFM3x3)
+            1217:         111 Load 124(inFM2x3)
+            1218:         111 MatrixTimesMatrix 1216 1217
+                              Store 1215(r14) 1218
+            1220:         115 Load 127(inFM3x4)
+            1221:         111 Load 124(inFM2x3)
+            1222:         117 MatrixTimesMatrix 1220 1221
+                              Store 1219(r15) 1222
+            1224:         117 Load 128(inFM2x4)
+            1225:         113 Load 125(inFM3x2)
+            1226:         115 MatrixTimesMatrix 1224 1225
+                              Store 1223(r16) 1226
+                              Return
+                              FunctionEnd
+     131(@main():           2 Function None 3
+             132:             Label
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out
index 1e4f171..264ffcc 100644
--- a/Test/baseResults/hlsl.layout.frag.out
+++ b/Test/baseResults/hlsl.layout.frag.out
@@ -2,7 +2,7 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:16  Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:16  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
 0:16    Function Parameters: 
 0:16      'input' ( in 4-component vector of float)
 0:?     Sequence
@@ -33,22 +33,33 @@
 0:18              Constant:
 0:18                0 (const uint)
 0:18            'layout' ( temp 4-component vector of float)
+0:16  Function Definition: PixelShaderFunction( ( temp void)
+0:16    Function Parameters: 
+0:?     Sequence
+0:16      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:16      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:16        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
 0:?     'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
 0:?     'specConst' ( specialization-constant const int)
 0:?       10 (const int)
 0:?     'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
 
 
 Linked fragment stage:
 
-WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:16  Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:16  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
 0:16    Function Parameters: 
 0:16      'input' ( in 4-component vector of float)
 0:?     Sequence
@@ -79,26 +90,38 @@
 0:18              Constant:
 0:18                0 (const uint)
 0:18            'layout' ( temp 4-component vector of float)
+0:16  Function Definition: PixelShaderFunction( ( temp void)
+0:16    Function Parameters: 
+0:?     Sequence
+0:16      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:16      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:16        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
 0:?     'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
 0:?     'specConst' ( specialization-constant const int)
 0:?       10 (const int)
 0:?     'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
 
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 44
+// Id's are bound by 53
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main"
+                              EntryPoint Fragment 4  "PixelShaderFunction" 45 48
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
-                              Name 4  "main"
-                              Name 11  "PixelShaderFunction(vf4;"
+                              Name 4  "PixelShaderFunction"
+                              Name 11  "@PixelShaderFunction(vf4;"
                               Name 10  "input"
                               Name 13  "layout"
                               Name 17  "tbufName"
@@ -110,7 +133,11 @@
                               Name 33  "tbufName2"
                               MemberName 33(tbufName2) 0  "v1PostLayout"
                               Name 35  ""
-                              Name 43  "specConst"
+                              Name 43  "input"
+                              Name 45  "input"
+                              Name 48  "@entryPointOutput"
+                              Name 49  "param"
+                              Name 52  "specConst"
                               MemberDecorate 17(tbufName) 0 NonWritable
                               MemberDecorate 17(tbufName) 0 Offset 16
                               Decorate 17(tbufName) BufferBlock
@@ -124,7 +151,9 @@
                               Decorate 33(tbufName2) BufferBlock
                               Decorate 35 DescriptorSet 4
                               Decorate 35 Binding 7
-                              Decorate 43(specConst) SpecId 17
+                              Decorate 45(input) Location 0
+                              Decorate 48(@entryPointOutput) Location 0
+                              Decorate 52(specConst) SpecId 17
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -146,12 +175,24 @@
    33(tbufName2):             TypeStruct 7(fvec4)
               34:             TypePointer Uniform 33(tbufName2)
               35:     34(ptr) Variable Uniform
-   43(specConst):     20(int) SpecConstant 10
-         4(main):           2 Function None 3
+              44:             TypePointer Input 7(fvec4)
+       45(input):     44(ptr) Variable Input
+              47:             TypePointer Output 7(fvec4)
+48(@entryPointOutput):     47(ptr) Variable Output
+   52(specConst):     20(int) SpecConstant 10
+4(PixelShaderFunction):           2 Function None 3
                5:             Label
+       43(input):      8(ptr) Variable Function
+       49(param):      8(ptr) Variable Function
+              46:    7(fvec4) Load 45(input)
+                              Store 43(input) 46
+              50:    7(fvec4) Load 43(input)
+                              Store 49(param) 50
+              51:    7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 49(param)
+                              Store 48(@entryPointOutput) 51
                               Return
                               FunctionEnd
-11(PixelShaderFunction(vf4;):    7(fvec4) Function None 9
+11(@PixelShaderFunction(vf4;):    7(fvec4) Function None 9
        10(input):      8(ptr) FunctionParameter
               12:             Label
       13(layout):      8(ptr) Variable Function
diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
index 9597762..9be07b1 100644
--- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -396,7 +396,7 @@
                               Name 124  "@entryPointOutput.Depth"
                               Name 129  "g_sSamp"
                               Decorate 14(g_tTex2dmsf4) DescriptorSet 0
-                              Decorate 14(g_tTex2dmsf4) Binding 0
+                              Decorate 14(g_tTex2dmsf4) Binding 1
                               MemberDecorate 20($Global) 0 Offset 0
                               MemberDecorate 20($Global) 1 Offset 8
                               MemberDecorate 20($Global) 2 Offset 16
@@ -407,17 +407,17 @@
                               MemberDecorate 20($Global) 7 Offset 80
                               Decorate 20($Global) Block
                               Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 0
+                              Decorate 22 Binding 7
                               Decorate 31(g_tTex2dmsi4) DescriptorSet 0
-                              Decorate 31(g_tTex2dmsi4) Binding 0
+                              Decorate 31(g_tTex2dmsi4) Binding 2
                               Decorate 39(g_tTex2dmsu4) DescriptorSet 0
-                              Decorate 39(g_tTex2dmsu4) Binding 0
+                              Decorate 39(g_tTex2dmsu4) Binding 3
                               Decorate 66(g_tTex2dmsf4a) DescriptorSet 0
-                              Decorate 66(g_tTex2dmsf4a) Binding 0
+                              Decorate 66(g_tTex2dmsf4a) Binding 4
                               Decorate 75(g_tTex2dmsi4a) DescriptorSet 0
-                              Decorate 75(g_tTex2dmsi4a) Binding 0
+                              Decorate 75(g_tTex2dmsi4a) Binding 5
                               Decorate 82(g_tTex2dmsu4a) DescriptorSet 0
-                              Decorate 82(g_tTex2dmsu4a) Binding 0
+                              Decorate 82(g_tTex2dmsu4a) Binding 6
                               Decorate 120(@entryPointOutput.Color) Location 0
                               Decorate 124(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 129(g_sSamp) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out
index f26d7df..efdbb37 100644
--- a/Test/baseResults/hlsl.load.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.array.dx10.frag.out
@@ -442,7 +442,7 @@
                               Name 155  "g_tTexcdi4a"
                               Name 158  "g_tTexcdu4a"
                               Decorate 14(g_tTex1df4a) DescriptorSet 0
-                              Decorate 14(g_tTex1df4a) Binding 0
+                              Decorate 14(g_tTex1df4a) Binding 1
                               MemberDecorate 20($Global) 0 Offset 0
                               MemberDecorate 20($Global) 1 Offset 8
                               MemberDecorate 20($Global) 2 Offset 16
@@ -453,17 +453,17 @@
                               MemberDecorate 20($Global) 7 Offset 80
                               Decorate 20($Global) Block
                               Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 0
+                              Decorate 22 Binding 7
                               Decorate 36(g_tTex1di4a) DescriptorSet 0
-                              Decorate 36(g_tTex1di4a) Binding 0
+                              Decorate 36(g_tTex1di4a) Binding 2
                               Decorate 46(g_tTex1du4a) DescriptorSet 0
-                              Decorate 46(g_tTex1du4a) Binding 0
+                              Decorate 46(g_tTex1du4a) Binding 3
                               Decorate 57(g_tTex2df4a) DescriptorSet 0
-                              Decorate 57(g_tTex2df4a) Binding 0
+                              Decorate 57(g_tTex2df4a) Binding 4
                               Decorate 70(g_tTex2di4a) DescriptorSet 0
-                              Decorate 70(g_tTex2di4a) Binding 0
+                              Decorate 70(g_tTex2di4a) Binding 5
                               Decorate 80(g_tTex2du4a) DescriptorSet 0
-                              Decorate 80(g_tTex2du4a) Binding 0
+                              Decorate 80(g_tTex2du4a) Binding 6
                               Decorate 104(@entryPointOutput.Color) Location 0
                               Decorate 108(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 113(g_sSamp) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out
index 895a109..7e5af31 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out
@@ -555,23 +555,23 @@
                               MemberDecorate 20($Global) 7 Offset 80
                               Decorate 20($Global) Block
                               Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 0
+                              Decorate 22 Binding 9
                               Decorate 35(g_tTex1di4) DescriptorSet 0
-                              Decorate 35(g_tTex1di4) Binding 0
+                              Decorate 35(g_tTex1di4) Binding 1
                               Decorate 44(g_tTex1du4) DescriptorSet 0
-                              Decorate 44(g_tTex1du4) Binding 0
+                              Decorate 44(g_tTex1du4) Binding 2
                               Decorate 54(g_tTex2df4) DescriptorSet 0
-                              Decorate 54(g_tTex2df4) Binding 0
+                              Decorate 54(g_tTex2df4) Binding 3
                               Decorate 67(g_tTex2di4) DescriptorSet 0
-                              Decorate 67(g_tTex2di4) Binding 0
+                              Decorate 67(g_tTex2di4) Binding 4
                               Decorate 77(g_tTex2du4) DescriptorSet 0
-                              Decorate 77(g_tTex2du4) Binding 0
+                              Decorate 77(g_tTex2du4) Binding 5
                               Decorate 87(g_tTex3df4) DescriptorSet 0
-                              Decorate 87(g_tTex3df4) Binding 0
+                              Decorate 87(g_tTex3df4) Binding 6
                               Decorate 100(g_tTex3di4) DescriptorSet 0
-                              Decorate 100(g_tTex3di4) Binding 0
+                              Decorate 100(g_tTex3di4) Binding 7
                               Decorate 110(g_tTex3du4) DescriptorSet 0
-                              Decorate 110(g_tTex3du4) Binding 0
+                              Decorate 110(g_tTex3du4) Binding 8
                               Decorate 133(@entryPointOutput.Color) Location 0
                               Decorate 137(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 142(g_sSamp) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out
index 99a57a7..96461ca 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out
@@ -512,23 +512,23 @@
                               MemberDecorate 20($Global) 7 Offset 80
                               Decorate 20($Global) Block
                               Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 0
+                              Decorate 22 Binding 9
                               Decorate 35(g_tTex1di4) DescriptorSet 0
-                              Decorate 35(g_tTex1di4) Binding 0
+                              Decorate 35(g_tTex1di4) Binding 1
                               Decorate 44(g_tTex1du4) DescriptorSet 0
-                              Decorate 44(g_tTex1du4) Binding 0
+                              Decorate 44(g_tTex1du4) Binding 2
                               Decorate 54(g_tTex2df4) DescriptorSet 0
-                              Decorate 54(g_tTex2df4) Binding 0
+                              Decorate 54(g_tTex2df4) Binding 3
                               Decorate 67(g_tTex2di4) DescriptorSet 0
-                              Decorate 67(g_tTex2di4) Binding 0
+                              Decorate 67(g_tTex2di4) Binding 4
                               Decorate 77(g_tTex2du4) DescriptorSet 0
-                              Decorate 77(g_tTex2du4) Binding 0
+                              Decorate 77(g_tTex2du4) Binding 5
                               Decorate 87(g_tTex3df4) DescriptorSet 0
-                              Decorate 87(g_tTex3df4) Binding 0
+                              Decorate 87(g_tTex3df4) Binding 6
                               Decorate 100(g_tTex3di4) DescriptorSet 0
-                              Decorate 100(g_tTex3di4) Binding 0
+                              Decorate 100(g_tTex3di4) Binding 7
                               Decorate 110(g_tTex3du4) DescriptorSet 0
-                              Decorate 110(g_tTex3du4) Binding 0
+                              Decorate 110(g_tTex3du4) Binding 8
                               Decorate 129(@entryPointOutput.Pos) BuiltIn Position
                               Decorate 134(g_sSamp) DescriptorSet 0
                               Decorate 134(g_sSamp) Binding 0
diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
index 2255cf5..b30d6c2 100644
--- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
@@ -204,7 +204,7 @@
                               Name 68  "@entryPointOutput.Depth"
                               Name 71  "g_tTexbf4_test"
                               Decorate 16(g_tTexbf4) DescriptorSet 0
-                              Decorate 16(g_tTexbf4) Binding 0
+                              Decorate 16(g_tTexbf4) Binding 1
                               MemberDecorate 22($Global) 0 Offset 0
                               MemberDecorate 22($Global) 1 Offset 8
                               MemberDecorate 22($Global) 2 Offset 16
@@ -215,11 +215,11 @@
                               MemberDecorate 22($Global) 7 Offset 80
                               Decorate 22($Global) Block
                               Decorate 24 DescriptorSet 0
-                              Decorate 24 Binding 0
+                              Decorate 24 Binding 4
                               Decorate 34(g_tTexbi4) DescriptorSet 0
-                              Decorate 34(g_tTexbi4) Binding 0
+                              Decorate 34(g_tTexbi4) Binding 2
                               Decorate 45(g_tTexbu4) DescriptorSet 0
-                              Decorate 45(g_tTexbu4) Binding 0
+                              Decorate 45(g_tTexbu4) Binding 3
                               Decorate 64(@entryPointOutput.Color) Location 0
                               Decorate 68(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 71(g_tTexbf4_test) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
index 08a1c56..fe1e95e 100644
--- a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
@@ -210,7 +210,7 @@
                               Name 71  "@entryPointOutput.Depth"
                               Name 74  "g_tTexbfs_test"
                               Decorate 16(g_tTexbfs) DescriptorSet 0
-                              Decorate 16(g_tTexbfs) Binding 0
+                              Decorate 16(g_tTexbfs) Binding 1
                               MemberDecorate 22($Global) 0 Offset 0
                               MemberDecorate 22($Global) 1 Offset 8
                               MemberDecorate 22($Global) 2 Offset 16
@@ -221,11 +221,11 @@
                               MemberDecorate 22($Global) 7 Offset 80
                               Decorate 22($Global) Block
                               Decorate 24 DescriptorSet 0
-                              Decorate 24 Binding 0
+                              Decorate 24 Binding 4
                               Decorate 35(g_tTexbis) DescriptorSet 0
-                              Decorate 35(g_tTexbis) Binding 0
+                              Decorate 35(g_tTexbis) Binding 2
                               Decorate 46(g_tTexbus) DescriptorSet 0
-                              Decorate 46(g_tTexbus) Binding 0
+                              Decorate 46(g_tTexbus) Binding 3
                               Decorate 67(@entryPointOutput.Color) Location 0
                               Decorate 71(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 74(g_tTexbfs_test) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out
index ebf1bd3..cfc929d 100644
--- a/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out
@@ -628,23 +628,23 @@
                               MemberDecorate 20($Global) 7 Offset 80
                               Decorate 20($Global) Block
                               Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 0
+                              Decorate 22 Binding 9
                               Decorate 38(g_tTex1di4) DescriptorSet 0
-                              Decorate 38(g_tTex1di4) Binding 0
+                              Decorate 38(g_tTex1di4) Binding 1
                               Decorate 49(g_tTex1du4) DescriptorSet 0
-                              Decorate 49(g_tTex1du4) Binding 0
+                              Decorate 49(g_tTex1du4) Binding 2
                               Decorate 61(g_tTex2df4) DescriptorSet 0
-                              Decorate 61(g_tTex2df4) Binding 0
+                              Decorate 61(g_tTex2df4) Binding 3
                               Decorate 78(g_tTex2di4) DescriptorSet 0
-                              Decorate 78(g_tTex2di4) Binding 0
+                              Decorate 78(g_tTex2di4) Binding 4
                               Decorate 90(g_tTex2du4) DescriptorSet 0
-                              Decorate 90(g_tTex2du4) Binding 0
+                              Decorate 90(g_tTex2du4) Binding 5
                               Decorate 102(g_tTex3df4) DescriptorSet 0
-                              Decorate 102(g_tTex3df4) Binding 0
+                              Decorate 102(g_tTex3df4) Binding 6
                               Decorate 118(g_tTex3di4) DescriptorSet 0
-                              Decorate 118(g_tTex3di4) Binding 0
+                              Decorate 118(g_tTex3di4) Binding 7
                               Decorate 130(g_tTex3du4) DescriptorSet 0
-                              Decorate 130(g_tTex3du4) Binding 0
+                              Decorate 130(g_tTex3du4) Binding 8
                               Decorate 155(@entryPointOutput.Color) Location 0
                               Decorate 159(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 164(g_sSamp) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index 297c737..9093b0e 100644
--- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
@@ -491,7 +491,7 @@
                               Name 170  "g_tTexcdi4a"
                               Name 173  "g_tTexcdu4a"
                               Decorate 14(g_tTex1df4a) DescriptorSet 0
-                              Decorate 14(g_tTex1df4a) Binding 0
+                              Decorate 14(g_tTex1df4a) Binding 1
                               MemberDecorate 20($Global) 0 Offset 0
                               MemberDecorate 20($Global) 1 Offset 8
                               MemberDecorate 20($Global) 2 Offset 16
@@ -502,17 +502,17 @@
                               MemberDecorate 20($Global) 7 Offset 80
                               Decorate 20($Global) Block
                               Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 0
+                              Decorate 22 Binding 7
                               Decorate 39(g_tTex1di4a) DescriptorSet 0
-                              Decorate 39(g_tTex1di4a) Binding 0
+                              Decorate 39(g_tTex1di4a) Binding 2
                               Decorate 51(g_tTex1du4a) DescriptorSet 0
-                              Decorate 51(g_tTex1du4a) Binding 0
+                              Decorate 51(g_tTex1du4a) Binding 3
                               Decorate 64(g_tTex2df4a) DescriptorSet 0
-                              Decorate 64(g_tTex2df4a) Binding 0
+                              Decorate 64(g_tTex2df4a) Binding 4
                               Decorate 81(g_tTex2di4a) DescriptorSet 0
-                              Decorate 81(g_tTex2di4a) Binding 0
+                              Decorate 81(g_tTex2di4a) Binding 5
                               Decorate 93(g_tTex2du4a) DescriptorSet 0
-                              Decorate 93(g_tTex2du4a) Binding 0
+                              Decorate 93(g_tTex2du4a) Binding 6
                               Decorate 119(@entryPointOutput.Color) Location 0
                               Decorate 123(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 128(g_sSamp) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
index 7ad197c..70b249a 100644
--- a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
@@ -151,11 +151,11 @@
                               MemberDecorate 20($Global) 7 Offset 80
                               Decorate 20($Global) Block
                               Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 0
+                              Decorate 22 Binding 3
                               Decorate 31(g_tBuffU) DescriptorSet 0
-                              Decorate 31(g_tBuffU) Binding 0
+                              Decorate 31(g_tBuffU) Binding 2
                               Decorate 39(g_tBuffI) DescriptorSet 0
-                              Decorate 39(g_tBuffI) Binding 0
+                              Decorate 39(g_tBuffI) Binding 1
                               Decorate 54(@entryPointOutput.Color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
index 77344ac..3634704 100644
--- a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
@@ -255,7 +255,7 @@
                               Name 115  "g_tTex3di4"
                               Name 118  "g_tTex3du4"
                               Decorate 14(g_tTex1df4a) DescriptorSet 0
-                              Decorate 14(g_tTex1df4a) Binding 0
+                              Decorate 14(g_tTex1df4a) Binding 1
                               MemberDecorate 20($Global) 0 Offset 0
                               MemberDecorate 20($Global) 1 Offset 8
                               MemberDecorate 20($Global) 2 Offset 16
@@ -266,17 +266,17 @@
                               MemberDecorate 20($Global) 7 Offset 80
                               Decorate 20($Global) Block
                               Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 0
+                              Decorate 22 Binding 7
                               Decorate 30(g_tTex1di4a) DescriptorSet 0
-                              Decorate 30(g_tTex1di4a) Binding 0
+                              Decorate 30(g_tTex1di4a) Binding 2
                               Decorate 38(g_tTex1du4a) DescriptorSet 0
-                              Decorate 38(g_tTex1du4a) Binding 0
+                              Decorate 38(g_tTex1du4a) Binding 3
                               Decorate 46(g_tTex2df4a) DescriptorSet 0
-                              Decorate 46(g_tTex2df4a) Binding 0
+                              Decorate 46(g_tTex2df4a) Binding 4
                               Decorate 55(g_tTex2di4a) DescriptorSet 0
-                              Decorate 55(g_tTex2di4a) Binding 0
+                              Decorate 55(g_tTex2di4a) Binding 5
                               Decorate 62(g_tTex2du4a) DescriptorSet 0
-                              Decorate 62(g_tTex2du4a) Binding 0
+                              Decorate 62(g_tTex2du4a) Binding 6
                               Decorate 82(@entryPointOutput.Color) Location 0
                               Decorate 86(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 91(g_sSamp) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
index bf9ea2d..05d88d3 100644
--- a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
@@ -302,23 +302,23 @@
                               MemberDecorate 20($Global) 7 Offset 80
                               Decorate 20($Global) Block
                               Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 0
+                              Decorate 22 Binding 9
                               Decorate 30(g_tTex1di4) DescriptorSet 0
-                              Decorate 30(g_tTex1di4) Binding 0
+                              Decorate 30(g_tTex1di4) Binding 1
                               Decorate 38(g_tTex1du4) DescriptorSet 0
-                              Decorate 38(g_tTex1du4) Binding 0
+                              Decorate 38(g_tTex1du4) Binding 2
                               Decorate 46(g_tTex2df4) DescriptorSet 0
-                              Decorate 46(g_tTex2df4) Binding 0
+                              Decorate 46(g_tTex2df4) Binding 3
                               Decorate 55(g_tTex2di4) DescriptorSet 0
-                              Decorate 55(g_tTex2di4) Binding 0
+                              Decorate 55(g_tTex2di4) Binding 4
                               Decorate 62(g_tTex2du4) DescriptorSet 0
-                              Decorate 62(g_tTex2du4) Binding 0
+                              Decorate 62(g_tTex2du4) Binding 5
                               Decorate 69(g_tTex3df4) DescriptorSet 0
-                              Decorate 69(g_tTex3df4) Binding 0
+                              Decorate 69(g_tTex3df4) Binding 6
                               Decorate 78(g_tTex3di4) DescriptorSet 0
-                              Decorate 78(g_tTex3di4) Binding 0
+                              Decorate 78(g_tTex3di4) Binding 7
                               Decorate 85(g_tTex3du4) DescriptorSet 0
-                              Decorate 85(g_tTex3du4) Binding 0
+                              Decorate 85(g_tTex3du4) Binding 8
                               Decorate 104(@entryPointOutput.Color) Location 0
                               Decorate 108(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 113(g_sSamp) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out
index ed08983..9552ee2 100644
--- a/Test/baseResults/hlsl.matType.frag.out
+++ b/Test/baseResults/hlsl.matType.frag.out
@@ -2,101 +2,163 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:9  Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float)
+0:9  Function Definition: @ShaderFunction(vf1;f1; ( temp 1-component vector of float)
 0:9    Function Parameters: 
 0:9      'inFloat1' ( in 1-component vector of float)
 0:9      'inScalar' ( in float)
 0:?     Sequence
 0:10      Branch: Return with expression
 0:10        'inFloat1' ( in 1-component vector of float)
+0:9  Function Definition: ShaderFunction( ( temp void)
+0:9    Function Parameters: 
+0:?     Sequence
+0:9      move second child to first child ( temp 1-component vector of float)
+0:?         'inFloat1' ( temp 1-component vector of float)
+0:?         'inFloat1' (layout( location=0) in 1-component vector of float)
+0:9      move second child to first child ( temp float)
+0:?         'inScalar' ( temp float)
+0:?         'inScalar' (layout( location=1) in float)
+0:9      move second child to first child ( temp 1-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 1-component vector of float)
+0:9        Function Call: @ShaderFunction(vf1;f1; ( temp 1-component vector of float)
+0:?           'inFloat1' ( temp 1-component vector of float)
+0:?           'inScalar' ( temp float)
 0:?   Linker Objects
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 1-component vector of float f1,  uniform 1X1 matrix of float fmat11,  uniform 4X1 matrix of float fmat41,  uniform 1X2 matrix of float fmat12,  uniform 2X3 matrix of double dmat23,  uniform 4X4 matrix of int int44})
+0:?     '@entryPointOutput' (layout( location=0) out 1-component vector of float)
+0:?     'inFloat1' (layout( location=0) in 1-component vector of float)
+0:?     'inScalar' (layout( location=1) in float)
 
 
 Linked fragment stage:
 
-WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:9  Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float)
+0:9  Function Definition: @ShaderFunction(vf1;f1; ( temp 1-component vector of float)
 0:9    Function Parameters: 
 0:9      'inFloat1' ( in 1-component vector of float)
 0:9      'inScalar' ( in float)
 0:?     Sequence
 0:10      Branch: Return with expression
 0:10        'inFloat1' ( in 1-component vector of float)
+0:9  Function Definition: ShaderFunction( ( temp void)
+0:9    Function Parameters: 
+0:?     Sequence
+0:9      move second child to first child ( temp 1-component vector of float)
+0:?         'inFloat1' ( temp 1-component vector of float)
+0:?         'inFloat1' (layout( location=0) in 1-component vector of float)
+0:9      move second child to first child ( temp float)
+0:?         'inScalar' ( temp float)
+0:?         'inScalar' (layout( location=1) in float)
+0:9      move second child to first child ( temp 1-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 1-component vector of float)
+0:9        Function Call: @ShaderFunction(vf1;f1; ( temp 1-component vector of float)
+0:?           'inFloat1' ( temp 1-component vector of float)
+0:?           'inScalar' ( temp float)
 0:?   Linker Objects
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 1-component vector of float f1,  uniform 1X1 matrix of float fmat11,  uniform 4X1 matrix of float fmat41,  uniform 1X2 matrix of float fmat12,  uniform 2X3 matrix of double dmat23,  uniform 4X4 matrix of int int44})
+0:?     '@entryPointOutput' (layout( location=0) out 1-component vector of float)
+0:?     'inFloat1' (layout( location=0) in 1-component vector of float)
+0:?     'inScalar' (layout( location=1) in float)
 
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 30
+// Id's are bound by 44
 
                               Capability Shader
                               Capability Float64
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction"
+                              EntryPoint Fragment 4  "ShaderFunction" 18 21 24
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
-                              Name 4  "PixelShaderFunction"
-                              Name 11  "ShaderFunction(vf1;f1;"
+                              Name 4  "ShaderFunction"
+                              Name 11  "@ShaderFunction(vf1;f1;"
                               Name 9  "inFloat1"
                               Name 10  "inScalar"
-                              Name 27  "$Global"
-                              MemberName 27($Global) 0  "f1"
-                              MemberName 27($Global) 1  "fmat11"
-                              MemberName 27($Global) 2  "fmat41"
-                              MemberName 27($Global) 3  "fmat12"
-                              MemberName 27($Global) 4  "dmat23"
-                              MemberName 27($Global) 5  "int44"
-                              Name 29  ""
-                              MemberDecorate 27($Global) 0 Offset 0
-                              MemberDecorate 27($Global) 1 RowMajor
-                              MemberDecorate 27($Global) 1 Offset 16
-                              MemberDecorate 27($Global) 1 MatrixStride 16
-                              MemberDecorate 27($Global) 2 RowMajor
-                              MemberDecorate 27($Global) 2 Offset 32
-                              MemberDecorate 27($Global) 2 MatrixStride 16
-                              MemberDecorate 27($Global) 3 RowMajor
-                              MemberDecorate 27($Global) 3 Offset 48
-                              MemberDecorate 27($Global) 3 MatrixStride 16
-                              MemberDecorate 27($Global) 4 RowMajor
-                              MemberDecorate 27($Global) 4 Offset 80
-                              MemberDecorate 27($Global) 4 MatrixStride 16
-                              MemberDecorate 27($Global) 5 RowMajor
-                              MemberDecorate 27($Global) 5 Offset 128
-                              MemberDecorate 27($Global) 5 MatrixStride 16
-                              Decorate 27($Global) Block
-                              Decorate 29 DescriptorSet 0
-                              Decorate 29 Binding 0
+                              Name 16  "inFloat1"
+                              Name 18  "inFloat1"
+                              Name 20  "inScalar"
+                              Name 21  "inScalar"
+                              Name 24  "@entryPointOutput"
+                              Name 25  "param"
+                              Name 27  "param"
+                              Name 41  "$Global"
+                              MemberName 41($Global) 0  "f1"
+                              MemberName 41($Global) 1  "fmat11"
+                              MemberName 41($Global) 2  "fmat41"
+                              MemberName 41($Global) 3  "fmat12"
+                              MemberName 41($Global) 4  "dmat23"
+                              MemberName 41($Global) 5  "int44"
+                              Name 43  ""
+                              Decorate 18(inFloat1) Location 0
+                              Decorate 21(inScalar) Location 1
+                              Decorate 24(@entryPointOutput) Location 0
+                              MemberDecorate 41($Global) 0 Offset 0
+                              MemberDecorate 41($Global) 1 RowMajor
+                              MemberDecorate 41($Global) 1 Offset 16
+                              MemberDecorate 41($Global) 1 MatrixStride 16
+                              MemberDecorate 41($Global) 2 RowMajor
+                              MemberDecorate 41($Global) 2 Offset 32
+                              MemberDecorate 41($Global) 2 MatrixStride 16
+                              MemberDecorate 41($Global) 3 RowMajor
+                              MemberDecorate 41($Global) 3 Offset 48
+                              MemberDecorate 41($Global) 3 MatrixStride 16
+                              MemberDecorate 41($Global) 4 RowMajor
+                              MemberDecorate 41($Global) 4 Offset 80
+                              MemberDecorate 41($Global) 4 MatrixStride 16
+                              MemberDecorate 41($Global) 5 RowMajor
+                              MemberDecorate 41($Global) 5 Offset 128
+                              MemberDecorate 41($Global) 5 MatrixStride 16
+                              Decorate 41($Global) Block
+                              Decorate 43 DescriptorSet 0
+                              Decorate 43 Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypePointer Function 6(float)
                8:             TypeFunction 6(float) 7(ptr) 7(ptr)
-              16:             TypeVector 6(float) 1
-              17:             TypeMatrix 16(fvec) 1
-              18:             TypeMatrix 16(fvec) 4
-              19:             TypeVector 6(float) 2
-              20:             TypeMatrix 19(fvec2) 1
-              21:             TypeFloat 64
-              22:             TypeVector 21(float64_t) 3
-              23:             TypeMatrix 22(f64vec3) 2
-              24:             TypeInt 32 1
-              25:             TypeVector 24(int) 4
-              26:             TypeMatrix 25(ivec4) 4
-     27($Global):             TypeStruct 6(float) 17 18 20 23 26
-              28:             TypePointer Uniform 27($Global)
-              29:     28(ptr) Variable Uniform
-4(PixelShaderFunction):           2 Function None 3
+              17:             TypePointer Input 6(float)
+    18(inFloat1):     17(ptr) Variable Input
+    21(inScalar):     17(ptr) Variable Input
+              23:             TypePointer Output 6(float)
+24(@entryPointOutput):     23(ptr) Variable Output
+              30:             TypeVector 6(float) 1
+              31:             TypeMatrix 30(fvec) 1
+              32:             TypeMatrix 30(fvec) 4
+              33:             TypeVector 6(float) 2
+              34:             TypeMatrix 33(fvec2) 1
+              35:             TypeFloat 64
+              36:             TypeVector 35(float64_t) 3
+              37:             TypeMatrix 36(f64vec3) 2
+              38:             TypeInt 32 1
+              39:             TypeVector 38(int) 4
+              40:             TypeMatrix 39(ivec4) 4
+     41($Global):             TypeStruct 6(float) 31 32 34 37 40
+              42:             TypePointer Uniform 41($Global)
+              43:     42(ptr) Variable Uniform
+4(ShaderFunction):           2 Function None 3
                5:             Label
+    16(inFloat1):      7(ptr) Variable Function
+    20(inScalar):      7(ptr) Variable Function
+       25(param):      7(ptr) Variable Function
+       27(param):      7(ptr) Variable Function
+              19:    6(float) Load 18(inFloat1)
+                              Store 16(inFloat1) 19
+              22:    6(float) Load 21(inScalar)
+                              Store 20(inScalar) 22
+              26:    6(float) Load 16(inFloat1)
+                              Store 25(param) 26
+              28:    6(float) Load 20(inScalar)
+                              Store 27(param) 28
+              29:    6(float) FunctionCall 11(@ShaderFunction(vf1;f1;) 25(param) 27(param)
+                              Store 24(@entryPointOutput) 29
                               Return
                               FunctionEnd
-11(ShaderFunction(vf1;f1;):    6(float) Function None 8
+11(@ShaderFunction(vf1;f1;):    6(float) Function None 8
      9(inFloat1):      7(ptr) FunctionParameter
     10(inScalar):      7(ptr) FunctionParameter
               12:             Label
diff --git a/Test/baseResults/hlsl.mip.operator.frag.out b/Test/baseResults/hlsl.mip.operator.frag.out
index 4123d23..c5edcec 100644
--- a/Test/baseResults/hlsl.mip.operator.frag.out
+++ b/Test/baseResults/hlsl.mip.operator.frag.out
@@ -143,7 +143,7 @@
                               Name 25  "g_tTex2df4a"
                               Name 59  "@entryPointOutput"
                               Decorate 13(g_tTex2df4) DescriptorSet 0
-                              Decorate 13(g_tTex2df4) Binding 0
+                              Decorate 13(g_tTex2df4) Binding 1
                               Decorate 25(g_tTex2df4a) DescriptorSet 0
                               Decorate 25(g_tTex2df4a) Binding 0
                               Decorate 59(@entryPointOutput) Location 0
diff --git a/Test/baseResults/hlsl.partialFlattenMixed.vert.out b/Test/baseResults/hlsl.partialFlattenMixed.vert.out
index 520a0fb..33c3d61 100644
--- a/Test/baseResults/hlsl.partialFlattenMixed.vert.out
+++ b/Test/baseResults/hlsl.partialFlattenMixed.vert.out
@@ -116,7 +116,7 @@
                               Decorate 24(tex[0]) DescriptorSet 0
                               Decorate 24(tex[0]) Binding 0
                               Decorate 28(tex[1]) DescriptorSet 0
-                              Decorate 28(tex[1]) Binding 0
+                              Decorate 28(tex[1]) Binding 1
                               Decorate 36(pos) Location 0
                               Decorate 39(@entryPointOutput) BuiltIn Position
                2:             TypeVoid
diff --git a/Test/baseResults/hlsl.pp.line2.frag.out b/Test/baseResults/hlsl.pp.line2.frag.out
index 338884a..27cf3b9 100644
--- a/Test/baseResults/hlsl.pp.line2.frag.out
+++ b/Test/baseResults/hlsl.pp.line2.frag.out
@@ -88,7 +88,7 @@
                               Decorate 49(g_tColor) DescriptorSet 0
                               Decorate 49(g_tColor) Binding 0
                               Decorate 56(g_sAniso) DescriptorSet 0
-                              Decorate 56(g_sAniso) Binding 0
+                              Decorate 56(g_sAniso) Binding 1
                               Decorate 71(i.vTextureCoords) Location 0
                               Decorate 75(@entryPointOutput.vColor) Location 0
                3:             TypeVoid
diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out
index 5531ac0..2d81d8a 100644
--- a/Test/baseResults/hlsl.pp.line4.frag.out
+++ b/Test/baseResults/hlsl.pp.line4.frag.out
@@ -79,7 +79,7 @@
                               Decorate 48(g_tColor) DescriptorSet 0
                               Decorate 48(g_tColor) Binding 0
                               Decorate 55(g_sAniso) DescriptorSet 0
-                              Decorate 55(g_sAniso) Binding 0
+                              Decorate 55(g_sAniso) Binding 1
                               Decorate 70(i.vTextureCoords) Location 0
                               Decorate 74(@entryPointOutput.vColor) Location 0
                3:             TypeVoid
diff --git a/Test/baseResults/hlsl.preprocessor.frag.out b/Test/baseResults/hlsl.preprocessor.frag.out
index 11ec1ad..92ed3fd 100644
--- a/Test/baseResults/hlsl.preprocessor.frag.out
+++ b/Test/baseResults/hlsl.preprocessor.frag.out
@@ -116,7 +116,7 @@
                               Decorate 16(test_texture) DescriptorSet 0
                               Decorate 16(test_texture) Binding 0
                               Decorate 20(test_texture_ss) DescriptorSet 0
-                              Decorate 20(test_texture_ss) Binding 0
+                              Decorate 20(test_texture_ss) Binding 1
                               Decorate 33(input) Location 0
                               Decorate 36(@entryPointOutput) Location 0
                2:             TypeVoid
diff --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out
index 77b140b..f9dfb01 100644
--- a/Test/baseResults/hlsl.rw.atomics.frag.out
+++ b/Test/baseResults/hlsl.rw.atomics.frag.out
@@ -4010,25 +4010,25 @@
                               MemberDecorate 21($Global) 9 Offset 64
                               Decorate 21($Global) Block
                               Decorate 23 DescriptorSet 0
-                              Decorate 23 Binding 0
+                              Decorate 23 Binding 10
                               Decorate 121(g_tTex1du1) DescriptorSet 0
-                              Decorate 121(g_tTex1du1) Binding 0
+                              Decorate 121(g_tTex1du1) Binding 1
                               Decorate 217(g_tTex2di1) DescriptorSet 0
-                              Decorate 217(g_tTex2di1) Binding 0
+                              Decorate 217(g_tTex2di1) Binding 2
                               Decorate 308(g_tTex2du1) DescriptorSet 0
-                              Decorate 308(g_tTex2du1) Binding 0
+                              Decorate 308(g_tTex2du1) Binding 3
                               Decorate 399(g_tTex3di1) DescriptorSet 0
-                              Decorate 399(g_tTex3di1) Binding 0
+                              Decorate 399(g_tTex3di1) Binding 4
                               Decorate 490(g_tTex3du1) DescriptorSet 0
-                              Decorate 490(g_tTex3du1) Binding 0
+                              Decorate 490(g_tTex3du1) Binding 5
                               Decorate 581(g_tTex1di1a) DescriptorSet 0
-                              Decorate 581(g_tTex1di1a) Binding 0
+                              Decorate 581(g_tTex1di1a) Binding 6
                               Decorate 670(g_tTex1du1a) DescriptorSet 0
-                              Decorate 670(g_tTex1du1a) Binding 0
+                              Decorate 670(g_tTex1du1a) Binding 7
                               Decorate 931(g_tBuffI) DescriptorSet 0
-                              Decorate 931(g_tBuffI) Binding 0
+                              Decorate 931(g_tBuffI) Binding 8
                               Decorate 1020(g_tBuffU) DescriptorSet 0
-                              Decorate 1020(g_tBuffU) Binding 0
+                              Decorate 1020(g_tBuffU) Binding 9
                               Decorate 1117(@entryPointOutput.Color) Location 0
                               Decorate 1122(g_sSamp) DescriptorSet 0
                               Decorate 1122(g_sSamp) Binding 0
diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out
index 70f8bbe..30be9cb 100644
--- a/Test/baseResults/hlsl.rw.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.bracket.frag.out
@@ -1893,25 +1893,25 @@
                               MemberDecorate 63($Global) 10 Offset 128
                               Decorate 63($Global) Block
                               Decorate 65 DescriptorSet 0
-                              Decorate 65 Binding 0
+                              Decorate 65 Binding 9
                               Decorate 75(g_tTex1df4) DescriptorSet 0
                               Decorate 75(g_tTex1df4) Binding 0
                               Decorate 89(g_tTex1di4) DescriptorSet 0
-                              Decorate 89(g_tTex1di4) Binding 0
+                              Decorate 89(g_tTex1di4) Binding 1
                               Decorate 97(g_tTex1du4) DescriptorSet 0
-                              Decorate 97(g_tTex1du4) Binding 0
+                              Decorate 97(g_tTex1du4) Binding 2
                               Decorate 105(g_tTex2df4) DescriptorSet 0
-                              Decorate 105(g_tTex2df4) Binding 0
+                              Decorate 105(g_tTex2df4) Binding 3
                               Decorate 115(g_tTex2di4) DescriptorSet 0
-                              Decorate 115(g_tTex2di4) Binding 0
+                              Decorate 115(g_tTex2di4) Binding 4
                               Decorate 123(g_tTex2du4) DescriptorSet 0
-                              Decorate 123(g_tTex2du4) Binding 0
+                              Decorate 123(g_tTex2du4) Binding 5
                               Decorate 131(g_tTex3df4) DescriptorSet 0
-                              Decorate 131(g_tTex3df4) Binding 0
+                              Decorate 131(g_tTex3df4) Binding 6
                               Decorate 141(g_tTex3di4) DescriptorSet 0
-                              Decorate 141(g_tTex3di4) Binding 0
+                              Decorate 141(g_tTex3di4) Binding 7
                               Decorate 149(g_tTex3du4) DescriptorSet 0
-                              Decorate 149(g_tTex3du4) Binding 0
+                              Decorate 149(g_tTex3du4) Binding 8
                               Decorate 583(@entryPointOutput.Color) Location 0
                               Decorate 588(g_sSamp) DescriptorSet 0
                               Decorate 588(g_sSamp) Binding 0
diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
index a8e33dd..05ffef1 100644
--- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
@@ -1839,25 +1839,25 @@
                               MemberDecorate 59($Global) 10 Offset 104
                               Decorate 59($Global) Block
                               Decorate 61 DescriptorSet 0
-                              Decorate 61 Binding 0
+                              Decorate 61 Binding 10
                               Decorate 70(g_tTex1df1) DescriptorSet 0
-                              Decorate 70(g_tTex1df1) Binding 0
+                              Decorate 70(g_tTex1df1) Binding 1
                               Decorate 83(g_tTex1di1) DescriptorSet 0
-                              Decorate 83(g_tTex1di1) Binding 0
+                              Decorate 83(g_tTex1di1) Binding 2
                               Decorate 91(g_tTex1du1) DescriptorSet 0
-                              Decorate 91(g_tTex1du1) Binding 0
+                              Decorate 91(g_tTex1du1) Binding 3
                               Decorate 99(g_tTex2df1) DescriptorSet 0
-                              Decorate 99(g_tTex2df1) Binding 0
+                              Decorate 99(g_tTex2df1) Binding 4
                               Decorate 109(g_tTex2di1) DescriptorSet 0
-                              Decorate 109(g_tTex2di1) Binding 0
+                              Decorate 109(g_tTex2di1) Binding 5
                               Decorate 117(g_tTex2du1) DescriptorSet 0
-                              Decorate 117(g_tTex2du1) Binding 0
+                              Decorate 117(g_tTex2du1) Binding 6
                               Decorate 125(g_tTex3df1) DescriptorSet 0
-                              Decorate 125(g_tTex3df1) Binding 0
+                              Decorate 125(g_tTex3df1) Binding 7
                               Decorate 135(g_tTex3di1) DescriptorSet 0
-                              Decorate 135(g_tTex3di1) Binding 0
+                              Decorate 135(g_tTex3di1) Binding 8
                               Decorate 143(g_tTex3du1) DescriptorSet 0
-                              Decorate 143(g_tTex3du1) Binding 0
+                              Decorate 143(g_tTex3du1) Binding 9
                               Decorate 547(@entryPointOutput.Color) Location 0
                               Decorate 552(g_sSamp) DescriptorSet 0
                               Decorate 552(g_sSamp) Binding 0
diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
index 06c24e7..73e3b47 100644
--- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
@@ -1858,25 +1858,25 @@
                               MemberDecorate 64($Global) 10 Offset 112
                               Decorate 64($Global) Block
                               Decorate 66 DescriptorSet 0
-                              Decorate 66 Binding 0
+                              Decorate 66 Binding 10
                               Decorate 76(g_tTex1df2) DescriptorSet 0
-                              Decorate 76(g_tTex1df2) Binding 0
+                              Decorate 76(g_tTex1df2) Binding 1
                               Decorate 90(g_tTex1di2) DescriptorSet 0
-                              Decorate 90(g_tTex1di2) Binding 0
+                              Decorate 90(g_tTex1di2) Binding 2
                               Decorate 98(g_tTex1du2) DescriptorSet 0
-                              Decorate 98(g_tTex1du2) Binding 0
+                              Decorate 98(g_tTex1du2) Binding 3
                               Decorate 106(g_tTex2df2) DescriptorSet 0
-                              Decorate 106(g_tTex2df2) Binding 0
+                              Decorate 106(g_tTex2df2) Binding 4
                               Decorate 114(g_tTex2di2) DescriptorSet 0
-                              Decorate 114(g_tTex2di2) Binding 0
+                              Decorate 114(g_tTex2di2) Binding 5
                               Decorate 122(g_tTex2du2) DescriptorSet 0
-                              Decorate 122(g_tTex2du2) Binding 0
+                              Decorate 122(g_tTex2du2) Binding 6
                               Decorate 130(g_tTex3df2) DescriptorSet 0
-                              Decorate 130(g_tTex3df2) Binding 0
+                              Decorate 130(g_tTex3df2) Binding 7
                               Decorate 140(g_tTex3di2) DescriptorSet 0
-                              Decorate 140(g_tTex3di2) Binding 0
+                              Decorate 140(g_tTex3di2) Binding 8
                               Decorate 148(g_tTex3du2) DescriptorSet 0
-                              Decorate 148(g_tTex3du2) Binding 0
+                              Decorate 148(g_tTex3du2) Binding 9
                               Decorate 581(@entryPointOutput.Color) Location 0
                               Decorate 586(g_sSamp) DescriptorSet 0
                               Decorate 586(g_sSamp) Binding 0
diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out
index 2d00531..3be126f 100644
--- a/Test/baseResults/hlsl.sample.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out
@@ -368,21 +368,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 35(g_tTex1di4) DescriptorSet 0
-                              Decorate 35(g_tTex1di4) Binding 0
+                              Decorate 35(g_tTex1di4) Binding 2
                               Decorate 49(g_tTex1du4) DescriptorSet 0
-                              Decorate 49(g_tTex1du4) Binding 0
+                              Decorate 49(g_tTex1du4) Binding 3
                               Decorate 60(g_tTex2df4) DescriptorSet 0
-                              Decorate 60(g_tTex2df4) Binding 0
+                              Decorate 60(g_tTex2df4) Binding 4
                               Decorate 71(g_tTex2di4) DescriptorSet 0
-                              Decorate 71(g_tTex2di4) Binding 0
+                              Decorate 71(g_tTex2di4) Binding 5
                               Decorate 82(g_tTex2du4) DescriptorSet 0
-                              Decorate 82(g_tTex2du4) Binding 0
+                              Decorate 82(g_tTex2du4) Binding 6
                               Decorate 94(g_tTexcdf4) DescriptorSet 0
-                              Decorate 94(g_tTexcdf4) Binding 0
+                              Decorate 94(g_tTexcdf4) Binding 7
                               Decorate 104(g_tTexcdi4) DescriptorSet 0
-                              Decorate 104(g_tTexcdi4) Binding 0
+                              Decorate 104(g_tTexcdi4) Binding 8
                               Decorate 114(g_tTexcdu4) DescriptorSet 0
-                              Decorate 114(g_tTexcdu4) Binding 0
+                              Decorate 114(g_tTexcdu4) Binding 9
                               Decorate 138(@entryPointOutput.Color) Location 0
                               Decorate 142(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 145(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
index 1760902..66be0f7 100644
--- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
@@ -617,27 +617,27 @@
                               Decorate 49(g_sSamp) DescriptorSet 0
                               Decorate 49(g_sSamp) Binding 0
                               Decorate 60(g_tTex1di4) DescriptorSet 0
-                              Decorate 60(g_tTex1di4) Binding 0
+                              Decorate 60(g_tTex1di4) Binding 2
                               Decorate 73(g_tTex1du4) DescriptorSet 0
-                              Decorate 73(g_tTex1du4) Binding 0
+                              Decorate 73(g_tTex1du4) Binding 3
                               Decorate 83(g_tTex2df4) DescriptorSet 0
-                              Decorate 83(g_tTex2df4) Binding 0
+                              Decorate 83(g_tTex2df4) Binding 4
                               Decorate 94(g_tTex2di4) DescriptorSet 0
-                              Decorate 94(g_tTex2di4) Binding 0
+                              Decorate 94(g_tTex2di4) Binding 5
                               Decorate 105(g_tTex2du4) DescriptorSet 0
-                              Decorate 105(g_tTex2du4) Binding 0
+                              Decorate 105(g_tTex2du4) Binding 6
                               Decorate 117(g_tTex3df4) DescriptorSet 0
-                              Decorate 117(g_tTex3df4) Binding 0
+                              Decorate 117(g_tTex3df4) Binding 7
                               Decorate 128(g_tTex3di4) DescriptorSet 0
-                              Decorate 128(g_tTex3di4) Binding 0
+                              Decorate 128(g_tTex3di4) Binding 8
                               Decorate 138(g_tTex3du4) DescriptorSet 0
-                              Decorate 138(g_tTex3du4) Binding 0
+                              Decorate 138(g_tTex3du4) Binding 9
                               Decorate 151(g_tTexcdf4) DescriptorSet 0
-                              Decorate 151(g_tTexcdf4) Binding 0
+                              Decorate 151(g_tTexcdf4) Binding 10
                               Decorate 160(g_tTexcdi4) DescriptorSet 0
-                              Decorate 160(g_tTexcdi4) Binding 0
+                              Decorate 160(g_tTexcdi4) Binding 11
                               Decorate 169(g_tTexcdu4) DescriptorSet 0
-                              Decorate 169(g_tTexcdu4) Binding 0
+                              Decorate 169(g_tTexcdu4) Binding 12
                               Decorate 188(@entryPointOutput.Color) Location 0
                               Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 195(g_sSamp2d) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
index b641ad2..80cf7ee 100644
--- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
@@ -412,21 +412,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 33(g_tTex1di4) DescriptorSet 0
-                              Decorate 33(g_tTex1di4) Binding 0
+                              Decorate 33(g_tTex1di4) Binding 2
                               Decorate 46(g_tTex1du4) DescriptorSet 0
-                              Decorate 46(g_tTex1du4) Binding 0
+                              Decorate 46(g_tTex1du4) Binding 3
                               Decorate 56(g_tTex2df4) DescriptorSet 0
-                              Decorate 56(g_tTex2df4) Binding 0
+                              Decorate 56(g_tTex2df4) Binding 4
                               Decorate 70(g_tTex2di4) DescriptorSet 0
-                              Decorate 70(g_tTex2di4) Binding 0
+                              Decorate 70(g_tTex2di4) Binding 5
                               Decorate 82(g_tTex2du4) DescriptorSet 0
-                              Decorate 82(g_tTex2du4) Binding 0
+                              Decorate 82(g_tTex2du4) Binding 6
                               Decorate 96(g_tTex3df4) DescriptorSet 0
-                              Decorate 96(g_tTex3df4) Binding 0
+                              Decorate 96(g_tTex3df4) Binding 7
                               Decorate 109(g_tTex3di4) DescriptorSet 0
-                              Decorate 109(g_tTex3di4) Binding 0
+                              Decorate 109(g_tTex3di4) Binding 8
                               Decorate 120(g_tTex3du4) DescriptorSet 0
-                              Decorate 120(g_tTex3du4) Binding 0
+                              Decorate 120(g_tTex3du4) Binding 9
                               Decorate 144(@entryPointOutput.Color) Location 0
                               Decorate 148(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 151(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
index 54dc467..aa34a14 100644
--- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
@@ -313,15 +313,15 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 36(g_tTex1di4) DescriptorSet 0
-                              Decorate 36(g_tTex1di4) Binding 0
+                              Decorate 36(g_tTex1di4) Binding 2
                               Decorate 51(g_tTex1du4) DescriptorSet 0
-                              Decorate 51(g_tTex1du4) Binding 0
+                              Decorate 51(g_tTex1du4) Binding 3
                               Decorate 63(g_tTex2df4) DescriptorSet 0
-                              Decorate 63(g_tTex2df4) Binding 0
+                              Decorate 63(g_tTex2df4) Binding 4
                               Decorate 76(g_tTex2di4) DescriptorSet 0
-                              Decorate 76(g_tTex2di4) Binding 0
+                              Decorate 76(g_tTex2di4) Binding 5
                               Decorate 87(g_tTex2du4) DescriptorSet 0
-                              Decorate 87(g_tTex2du4) Binding 0
+                              Decorate 87(g_tTex2du4) Binding 6
                               Decorate 110(@entryPointOutput.Color) Location 0
                               Decorate 114(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 117(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
index 8aa0e7f..63097b1 100644
--- a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
@@ -180,15 +180,15 @@
                               Name 59  "psout"
                               Name 69  "@entryPointOutput.Color"
                               Decorate 16(g_tTex1df1) DescriptorSet 0
-                              Decorate 16(g_tTex1df1) Binding 0
+                              Decorate 16(g_tTex1df1) Binding 1
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 30(g_tTex1df2) DescriptorSet 0
-                              Decorate 30(g_tTex1df2) Binding 0
+                              Decorate 30(g_tTex1df2) Binding 2
                               Decorate 42(g_tTex1df3) DescriptorSet 0
-                              Decorate 42(g_tTex1df3) Binding 0
+                              Decorate 42(g_tTex1df3) Binding 3
                               Decorate 53(g_tTex1df4) DescriptorSet 0
-                              Decorate 53(g_tTex1df4) Binding 0
+                              Decorate 53(g_tTex1df4) Binding 4
                               Decorate 69(@entryPointOutput.Color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
index aec493d..1bc8bca 100644
--- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
@@ -404,21 +404,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 36(g_tTex1di4) DescriptorSet 0
-                              Decorate 36(g_tTex1di4) Binding 0
+                              Decorate 36(g_tTex1di4) Binding 2
                               Decorate 50(g_tTex1du4) DescriptorSet 0
-                              Decorate 50(g_tTex1du4) Binding 0
+                              Decorate 50(g_tTex1du4) Binding 3
                               Decorate 61(g_tTex2df4) DescriptorSet 0
-                              Decorate 61(g_tTex2df4) Binding 0
+                              Decorate 61(g_tTex2df4) Binding 4
                               Decorate 72(g_tTex2di4) DescriptorSet 0
-                              Decorate 72(g_tTex2di4) Binding 0
+                              Decorate 72(g_tTex2di4) Binding 5
                               Decorate 82(g_tTex2du4) DescriptorSet 0
-                              Decorate 82(g_tTex2du4) Binding 0
+                              Decorate 82(g_tTex2du4) Binding 6
                               Decorate 94(g_tTexcdf4) DescriptorSet 0
-                              Decorate 94(g_tTexcdf4) Binding 0
+                              Decorate 94(g_tTexcdf4) Binding 7
                               Decorate 104(g_tTexcdi4) DescriptorSet 0
-                              Decorate 104(g_tTexcdi4) Binding 0
+                              Decorate 104(g_tTexcdi4) Binding 8
                               Decorate 114(g_tTexcdu4) DescriptorSet 0
-                              Decorate 114(g_tTexcdu4) Binding 0
+                              Decorate 114(g_tTexcdu4) Binding 9
                               Decorate 138(@entryPointOutput.Color) Location 0
                               Decorate 142(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 145(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
index 9a29c6d..867d8c5 100644
--- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
@@ -475,27 +475,27 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 33(g_tTex1di4) DescriptorSet 0
-                              Decorate 33(g_tTex1di4) Binding 0
+                              Decorate 33(g_tTex1di4) Binding 2
                               Decorate 46(g_tTex1du4) DescriptorSet 0
-                              Decorate 46(g_tTex1du4) Binding 0
+                              Decorate 46(g_tTex1du4) Binding 3
                               Decorate 56(g_tTex2df4) DescriptorSet 0
-                              Decorate 56(g_tTex2df4) Binding 0
+                              Decorate 56(g_tTex2df4) Binding 4
                               Decorate 67(g_tTex2di4) DescriptorSet 0
-                              Decorate 67(g_tTex2di4) Binding 0
+                              Decorate 67(g_tTex2di4) Binding 5
                               Decorate 78(g_tTex2du4) DescriptorSet 0
-                              Decorate 78(g_tTex2du4) Binding 0
+                              Decorate 78(g_tTex2du4) Binding 6
                               Decorate 89(g_tTex3df4) DescriptorSet 0
-                              Decorate 89(g_tTex3df4) Binding 0
+                              Decorate 89(g_tTex3df4) Binding 7
                               Decorate 100(g_tTex3di4) DescriptorSet 0
-                              Decorate 100(g_tTex3di4) Binding 0
+                              Decorate 100(g_tTex3di4) Binding 8
                               Decorate 110(g_tTex3du4) DescriptorSet 0
-                              Decorate 110(g_tTex3du4) Binding 0
+                              Decorate 110(g_tTex3du4) Binding 9
                               Decorate 123(g_tTexcdf4) DescriptorSet 0
-                              Decorate 123(g_tTexcdf4) Binding 0
+                              Decorate 123(g_tTexcdf4) Binding 10
                               Decorate 132(g_tTexcdi4) DescriptorSet 0
-                              Decorate 132(g_tTexcdi4) Binding 0
+                              Decorate 132(g_tTexcdi4) Binding 11
                               Decorate 141(g_tTexcdu4) DescriptorSet 0
-                              Decorate 141(g_tTexcdu4) Binding 0
+                              Decorate 141(g_tTexcdu4) Binding 12
                               Decorate 162(@entryPointOutput.Color) Location 0
                               Decorate 166(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 169(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
index fb78b6c..d5702b7 100644
--- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
@@ -449,21 +449,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 34(g_tTex1di4) DescriptorSet 0
-                              Decorate 34(g_tTex1di4) Binding 0
+                              Decorate 34(g_tTex1di4) Binding 2
                               Decorate 47(g_tTex1du4) DescriptorSet 0
-                              Decorate 47(g_tTex1du4) Binding 0
+                              Decorate 47(g_tTex1du4) Binding 3
                               Decorate 57(g_tTex2df4) DescriptorSet 0
-                              Decorate 57(g_tTex2df4) Binding 0
+                              Decorate 57(g_tTex2df4) Binding 4
                               Decorate 71(g_tTex2di4) DescriptorSet 0
-                              Decorate 71(g_tTex2di4) Binding 0
+                              Decorate 71(g_tTex2di4) Binding 5
                               Decorate 83(g_tTex2du4) DescriptorSet 0
-                              Decorate 83(g_tTex2du4) Binding 0
+                              Decorate 83(g_tTex2du4) Binding 6
                               Decorate 96(g_tTex3df4) DescriptorSet 0
-                              Decorate 96(g_tTex3df4) Binding 0
+                              Decorate 96(g_tTex3df4) Binding 7
                               Decorate 109(g_tTex3di4) DescriptorSet 0
-                              Decorate 109(g_tTex3di4) Binding 0
+                              Decorate 109(g_tTex3di4) Binding 8
                               Decorate 120(g_tTex3du4) DescriptorSet 0
-                              Decorate 120(g_tTex3du4) Binding 0
+                              Decorate 120(g_tTex3du4) Binding 9
                               Decorate 144(@entryPointOutput.Color) Location 0
                               Decorate 148(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 151(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
index 8b7bd37..f58099e 100644
--- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
@@ -338,15 +338,15 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 37(g_tTex1di4) DescriptorSet 0
-                              Decorate 37(g_tTex1di4) Binding 0
+                              Decorate 37(g_tTex1di4) Binding 2
                               Decorate 52(g_tTex1du4) DescriptorSet 0
-                              Decorate 52(g_tTex1du4) Binding 0
+                              Decorate 52(g_tTex1du4) Binding 3
                               Decorate 64(g_tTex2df4) DescriptorSet 0
-                              Decorate 64(g_tTex2df4) Binding 0
+                              Decorate 64(g_tTex2df4) Binding 4
                               Decorate 77(g_tTex2di4) DescriptorSet 0
-                              Decorate 77(g_tTex2di4) Binding 0
+                              Decorate 77(g_tTex2di4) Binding 5
                               Decorate 87(g_tTex2du4) DescriptorSet 0
-                              Decorate 87(g_tTex2du4) Binding 0
+                              Decorate 87(g_tTex2du4) Binding 6
                               Decorate 110(@entryPointOutput.Color) Location 0
                               Decorate 114(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 117(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
index 8d0ff46..cb46730 100644
--- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
@@ -452,25 +452,25 @@
                               Name 205  "g_tTexcdi4"
                               Name 208  "g_tTexcdu4"
                               Decorate 16(g_tTex1df4a) DescriptorSet 0
-                              Decorate 16(g_tTex1df4a) Binding 0
+                              Decorate 16(g_tTex1df4a) Binding 1
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 39(g_tTex1di4a) DescriptorSet 0
-                              Decorate 39(g_tTex1di4a) Binding 0
+                              Decorate 39(g_tTex1di4a) Binding 2
                               Decorate 53(g_tTex1du4a) DescriptorSet 0
-                              Decorate 53(g_tTex1du4a) Binding 0
+                              Decorate 53(g_tTex1du4a) Binding 3
                               Decorate 66(g_tTex2df4a) DescriptorSet 0
-                              Decorate 66(g_tTex2df4a) Binding 0
+                              Decorate 66(g_tTex2df4a) Binding 4
                               Decorate 82(g_tTex2di4a) DescriptorSet 0
-                              Decorate 82(g_tTex2di4a) Binding 0
+                              Decorate 82(g_tTex2di4a) Binding 5
                               Decorate 96(g_tTex2du4a) DescriptorSet 0
-                              Decorate 96(g_tTex2du4a) Binding 0
+                              Decorate 96(g_tTex2du4a) Binding 6
                               Decorate 110(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 110(g_tTexcdf4a) Binding 0
+                              Decorate 110(g_tTexcdf4a) Binding 7
                               Decorate 126(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 126(g_tTexcdi4a) Binding 0
+                              Decorate 126(g_tTexcdi4a) Binding 8
                               Decorate 140(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 140(g_tTexcdu4a) Binding 0
+                              Decorate 140(g_tTexcdu4a) Binding 9
                               Decorate 166(@entryPointOutput.Color) Location 0
                               Decorate 170(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 175(g_tTex1df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
index c44f16b..db6601f 100644
--- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
@@ -438,21 +438,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 34(g_tTex1di4) DescriptorSet 0
-                              Decorate 34(g_tTex1di4) Binding 0
+                              Decorate 34(g_tTex1di4) Binding 1
                               Decorate 46(g_tTex1du4) DescriptorSet 0
-                              Decorate 46(g_tTex1du4) Binding 0
+                              Decorate 46(g_tTex1du4) Binding 2
                               Decorate 57(g_tTex2df4) DescriptorSet 0
-                              Decorate 57(g_tTex2df4) Binding 0
+                              Decorate 57(g_tTex2df4) Binding 3
                               Decorate 73(g_tTex2di4) DescriptorSet 0
-                              Decorate 73(g_tTex2di4) Binding 0
+                              Decorate 73(g_tTex2di4) Binding 4
                               Decorate 86(g_tTex2du4) DescriptorSet 0
-                              Decorate 86(g_tTex2du4) Binding 0
+                              Decorate 86(g_tTex2du4) Binding 5
                               Decorate 99(g_tTexcdf4) DescriptorSet 0
-                              Decorate 99(g_tTexcdf4) Binding 0
+                              Decorate 99(g_tTexcdf4) Binding 6
                               Decorate 115(g_tTexcdi4) DescriptorSet 0
-                              Decorate 115(g_tTexcdi4) Binding 0
+                              Decorate 115(g_tTexcdi4) Binding 7
                               Decorate 129(g_tTexcdu4) DescriptorSet 0
-                              Decorate 129(g_tTexcdu4) Binding 0
+                              Decorate 129(g_tTexcdu4) Binding 8
                               Decorate 155(@entryPointOutput.Color) Location 0
                               Decorate 159(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 164(g_tTex3df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
index ca0fb8c..e07adfe 100644
--- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
@@ -381,15 +381,15 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 35(g_tTex1di4) DescriptorSet 0
-                              Decorate 35(g_tTex1di4) Binding 0
+                              Decorate 35(g_tTex1di4) Binding 1
                               Decorate 47(g_tTex1du4) DescriptorSet 0
-                              Decorate 47(g_tTex1du4) Binding 0
+                              Decorate 47(g_tTex1du4) Binding 2
                               Decorate 58(g_tTex2df4) DescriptorSet 0
-                              Decorate 58(g_tTex2df4) Binding 0
+                              Decorate 58(g_tTex2df4) Binding 3
                               Decorate 77(g_tTex2di4) DescriptorSet 0
-                              Decorate 77(g_tTex2di4) Binding 0
+                              Decorate 77(g_tTex2di4) Binding 4
                               Decorate 90(g_tTex2du4) DescriptorSet 0
-                              Decorate 90(g_tTex2du4) Binding 0
+                              Decorate 90(g_tTex2du4) Binding 5
                               Decorate 115(@entryPointOutput.Color) Location 0
                               Decorate 119(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 124(g_tTex3df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
index 3d0b8fd..33d9105 100644
--- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
@@ -389,19 +389,19 @@
                               Name 174  "g_tTexcdi4a"
                               Name 177  "g_tTexcdu4a"
                               Decorate 16(g_tTex1df4a) DescriptorSet 0
-                              Decorate 16(g_tTex1df4a) Binding 0
+                              Decorate 16(g_tTex1df4a) Binding 1
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 40(g_tTex1di4a) DescriptorSet 0
-                              Decorate 40(g_tTex1di4a) Binding 0
+                              Decorate 40(g_tTex1di4a) Binding 2
                               Decorate 54(g_tTex1du4a) DescriptorSet 0
-                              Decorate 54(g_tTex1du4a) Binding 0
+                              Decorate 54(g_tTex1du4a) Binding 3
                               Decorate 67(g_tTex2df4a) DescriptorSet 0
-                              Decorate 67(g_tTex2df4a) Binding 0
+                              Decorate 67(g_tTex2df4a) Binding 4
                               Decorate 86(g_tTex2di4a) DescriptorSet 0
-                              Decorate 86(g_tTex2di4a) Binding 0
+                              Decorate 86(g_tTex2di4a) Binding 5
                               Decorate 100(g_tTex2du4a) DescriptorSet 0
-                              Decorate 100(g_tTex2du4a) Binding 0
+                              Decorate 100(g_tTex2du4a) Binding 6
                               Decorate 126(@entryPointOutput.Color) Location 0
                               Decorate 130(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 135(g_tTex1df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
index ce13388..11536fc 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
@@ -488,25 +488,25 @@
                               Name 206  "g_tTexcdi4"
                               Name 209  "g_tTexcdu4"
                               Decorate 16(g_tTex1df4a) DescriptorSet 0
-                              Decorate 16(g_tTex1df4a) Binding 0
+                              Decorate 16(g_tTex1df4a) Binding 1
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 40(g_tTex1di4a) DescriptorSet 0
-                              Decorate 40(g_tTex1di4a) Binding 0
+                              Decorate 40(g_tTex1di4a) Binding 2
                               Decorate 54(g_tTex1du4a) DescriptorSet 0
-                              Decorate 54(g_tTex1du4a) Binding 0
+                              Decorate 54(g_tTex1du4a) Binding 3
                               Decorate 67(g_tTex2df4a) DescriptorSet 0
-                              Decorate 67(g_tTex2df4a) Binding 0
+                              Decorate 67(g_tTex2df4a) Binding 4
                               Decorate 83(g_tTex2di4a) DescriptorSet 0
-                              Decorate 83(g_tTex2di4a) Binding 0
+                              Decorate 83(g_tTex2di4a) Binding 5
                               Decorate 97(g_tTex2du4a) DescriptorSet 0
-                              Decorate 97(g_tTex2du4a) Binding 0
+                              Decorate 97(g_tTex2du4a) Binding 6
                               Decorate 111(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 111(g_tTexcdf4a) Binding 0
+                              Decorate 111(g_tTexcdf4a) Binding 7
                               Decorate 127(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 127(g_tTexcdi4a) Binding 0
+                              Decorate 127(g_tTexcdi4a) Binding 8
                               Decorate 141(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 141(g_tTexcdu4a) Binding 0
+                              Decorate 141(g_tTexcdu4a) Binding 9
                               Decorate 167(@entryPointOutput.Color) Location 0
                               Decorate 171(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 176(g_tTex1df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
index 4bf15ec..d5f8f6a 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
@@ -474,21 +474,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 35(g_tTex1di4) DescriptorSet 0
-                              Decorate 35(g_tTex1di4) Binding 0
+                              Decorate 35(g_tTex1di4) Binding 1
                               Decorate 47(g_tTex1du4) DescriptorSet 0
-                              Decorate 47(g_tTex1du4) Binding 0
+                              Decorate 47(g_tTex1du4) Binding 2
                               Decorate 58(g_tTex2df4) DescriptorSet 0
-                              Decorate 58(g_tTex2df4) Binding 0
+                              Decorate 58(g_tTex2df4) Binding 3
                               Decorate 74(g_tTex2di4) DescriptorSet 0
-                              Decorate 74(g_tTex2di4) Binding 0
+                              Decorate 74(g_tTex2di4) Binding 4
                               Decorate 87(g_tTex2du4) DescriptorSet 0
-                              Decorate 87(g_tTex2du4) Binding 0
+                              Decorate 87(g_tTex2du4) Binding 5
                               Decorate 100(g_tTexcdf4) DescriptorSet 0
-                              Decorate 100(g_tTexcdf4) Binding 0
+                              Decorate 100(g_tTexcdf4) Binding 6
                               Decorate 116(g_tTexcdi4) DescriptorSet 0
-                              Decorate 116(g_tTexcdi4) Binding 0
+                              Decorate 116(g_tTexcdi4) Binding 7
                               Decorate 130(g_tTexcdu4) DescriptorSet 0
-                              Decorate 130(g_tTexcdu4) Binding 0
+                              Decorate 130(g_tTexcdu4) Binding 8
                               Decorate 156(@entryPointOutput.Color) Location 0
                               Decorate 160(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 165(g_tTex3df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
index b85daf0..799898e 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
@@ -405,15 +405,15 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 36(g_tTex1di4) DescriptorSet 0
-                              Decorate 36(g_tTex1di4) Binding 0
+                              Decorate 36(g_tTex1di4) Binding 1
                               Decorate 48(g_tTex1du4) DescriptorSet 0
-                              Decorate 48(g_tTex1du4) Binding 0
+                              Decorate 48(g_tTex1du4) Binding 2
                               Decorate 59(g_tTex2df4) DescriptorSet 0
-                              Decorate 59(g_tTex2df4) Binding 0
+                              Decorate 59(g_tTex2df4) Binding 3
                               Decorate 78(g_tTex2di4) DescriptorSet 0
-                              Decorate 78(g_tTex2di4) Binding 0
+                              Decorate 78(g_tTex2di4) Binding 4
                               Decorate 91(g_tTex2du4) DescriptorSet 0
-                              Decorate 91(g_tTex2du4) Binding 0
+                              Decorate 91(g_tTex2du4) Binding 5
                               Decorate 116(@entryPointOutput.Color) Location 0
                               Decorate 120(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 125(g_tTex3df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
index 6f460d0..a67138f 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
@@ -413,19 +413,19 @@
                               Name 175  "g_tTexcdi4a"
                               Name 178  "g_tTexcdu4a"
                               Decorate 16(g_tTex1df4a) DescriptorSet 0
-                              Decorate 16(g_tTex1df4a) Binding 0
+                              Decorate 16(g_tTex1df4a) Binding 1
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 41(g_tTex1di4a) DescriptorSet 0
-                              Decorate 41(g_tTex1di4a) Binding 0
+                              Decorate 41(g_tTex1di4a) Binding 2
                               Decorate 55(g_tTex1du4a) DescriptorSet 0
-                              Decorate 55(g_tTex1du4a) Binding 0
+                              Decorate 55(g_tTex1du4a) Binding 3
                               Decorate 68(g_tTex2df4a) DescriptorSet 0
-                              Decorate 68(g_tTex2df4a) Binding 0
+                              Decorate 68(g_tTex2df4a) Binding 4
                               Decorate 87(g_tTex2di4a) DescriptorSet 0
-                              Decorate 87(g_tTex2di4a) Binding 0
+                              Decorate 87(g_tTex2di4a) Binding 5
                               Decorate 101(g_tTex2du4a) DescriptorSet 0
-                              Decorate 101(g_tTex2du4a) Binding 0
+                              Decorate 101(g_tTex2du4a) Binding 6
                               Decorate 127(@entryPointOutput.Color) Location 0
                               Decorate 131(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 136(g_tTex1df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
index b2922a1..f09ab3b 100644
--- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
@@ -476,21 +476,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 37(g_tTex1di4) DescriptorSet 0
-                              Decorate 37(g_tTex1di4) Binding 0
+                              Decorate 37(g_tTex1di4) Binding 2
                               Decorate 49(g_tTex1du4) DescriptorSet 0
-                              Decorate 49(g_tTex1du4) Binding 0
+                              Decorate 49(g_tTex1du4) Binding 3
                               Decorate 58(g_tTex2df4) DescriptorSet 0
-                              Decorate 58(g_tTex2df4) Binding 0
+                              Decorate 58(g_tTex2df4) Binding 4
                               Decorate 71(g_tTex2di4) DescriptorSet 0
-                              Decorate 71(g_tTex2di4) Binding 0
+                              Decorate 71(g_tTex2di4) Binding 5
                               Decorate 80(g_tTex2du4) DescriptorSet 0
-                              Decorate 80(g_tTex2du4) Binding 0
+                              Decorate 80(g_tTex2du4) Binding 6
                               Decorate 89(g_tTexcdf4) DescriptorSet 0
-                              Decorate 89(g_tTexcdf4) Binding 0
+                              Decorate 89(g_tTexcdf4) Binding 7
                               Decorate 102(g_tTexcdi4) DescriptorSet 0
-                              Decorate 102(g_tTexcdi4) Binding 0
+                              Decorate 102(g_tTexcdi4) Binding 8
                               Decorate 111(g_tTexcdu4) DescriptorSet 0
-                              Decorate 111(g_tTexcdu4) Binding 0
+                              Decorate 111(g_tTexcdu4) Binding 9
                               Decorate 132(@entryPointOutput.Color) Location 0
                               Decorate 136(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 139(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
index 161821e..64fda9c 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
@@ -583,27 +583,27 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 34(g_tTex1di4) DescriptorSet 0
-                              Decorate 34(g_tTex1di4) Binding 0
+                              Decorate 34(g_tTex1di4) Binding 2
                               Decorate 47(g_tTex1du4) DescriptorSet 0
-                              Decorate 47(g_tTex1du4) Binding 0
+                              Decorate 47(g_tTex1du4) Binding 3
                               Decorate 57(g_tTex2df4) DescriptorSet 0
-                              Decorate 57(g_tTex2df4) Binding 0
+                              Decorate 57(g_tTex2df4) Binding 4
                               Decorate 69(g_tTex2di4) DescriptorSet 0
-                              Decorate 69(g_tTex2di4) Binding 0
+                              Decorate 69(g_tTex2di4) Binding 5
                               Decorate 80(g_tTex2du4) DescriptorSet 0
-                              Decorate 80(g_tTex2du4) Binding 0
+                              Decorate 80(g_tTex2du4) Binding 6
                               Decorate 92(g_tTex3df4) DescriptorSet 0
-                              Decorate 92(g_tTex3df4) Binding 0
+                              Decorate 92(g_tTex3df4) Binding 7
                               Decorate 105(g_tTex3di4) DescriptorSet 0
-                              Decorate 105(g_tTex3di4) Binding 0
+                              Decorate 105(g_tTex3di4) Binding 8
                               Decorate 115(g_tTex3du4) DescriptorSet 0
-                              Decorate 115(g_tTex3du4) Binding 0
+                              Decorate 115(g_tTex3du4) Binding 9
                               Decorate 128(g_tTexcdf4) DescriptorSet 0
-                              Decorate 128(g_tTexcdf4) Binding 0
+                              Decorate 128(g_tTexcdf4) Binding 10
                               Decorate 137(g_tTexcdi4) DescriptorSet 0
-                              Decorate 137(g_tTexcdi4) Binding 0
+                              Decorate 137(g_tTexcdi4) Binding 11
                               Decorate 146(g_tTexcdu4) DescriptorSet 0
-                              Decorate 146(g_tTexcdu4) Binding 0
+                              Decorate 146(g_tTexcdu4) Binding 12
                               Decorate 167(@entryPointOutput.Color) Location 0
                               Decorate 171(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 174(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
index b683d98..3dc80f1 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
@@ -540,27 +540,27 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 34(g_tTex1di4) DescriptorSet 0
-                              Decorate 34(g_tTex1di4) Binding 0
+                              Decorate 34(g_tTex1di4) Binding 2
                               Decorate 47(g_tTex1du4) DescriptorSet 0
-                              Decorate 47(g_tTex1du4) Binding 0
+                              Decorate 47(g_tTex1du4) Binding 3
                               Decorate 57(g_tTex2df4) DescriptorSet 0
-                              Decorate 57(g_tTex2df4) Binding 0
+                              Decorate 57(g_tTex2df4) Binding 4
                               Decorate 69(g_tTex2di4) DescriptorSet 0
-                              Decorate 69(g_tTex2di4) Binding 0
+                              Decorate 69(g_tTex2di4) Binding 5
                               Decorate 80(g_tTex2du4) DescriptorSet 0
-                              Decorate 80(g_tTex2du4) Binding 0
+                              Decorate 80(g_tTex2du4) Binding 6
                               Decorate 92(g_tTex3df4) DescriptorSet 0
-                              Decorate 92(g_tTex3df4) Binding 0
+                              Decorate 92(g_tTex3df4) Binding 7
                               Decorate 105(g_tTex3di4) DescriptorSet 0
-                              Decorate 105(g_tTex3di4) Binding 0
+                              Decorate 105(g_tTex3di4) Binding 8
                               Decorate 115(g_tTex3du4) DescriptorSet 0
-                              Decorate 115(g_tTex3du4) Binding 0
+                              Decorate 115(g_tTex3du4) Binding 9
                               Decorate 128(g_tTexcdf4) DescriptorSet 0
-                              Decorate 128(g_tTexcdf4) Binding 0
+                              Decorate 128(g_tTexcdf4) Binding 10
                               Decorate 137(g_tTexcdi4) DescriptorSet 0
-                              Decorate 137(g_tTexcdi4) Binding 0
+                              Decorate 137(g_tTexcdi4) Binding 11
                               Decorate 146(g_tTexcdu4) DescriptorSet 0
-                              Decorate 146(g_tTexcdu4) Binding 0
+                              Decorate 146(g_tTexcdu4) Binding 12
                               Decorate 162(@entryPointOutput.Pos) BuiltIn Position
                               Decorate 165(g_tTex1df4a) DescriptorSet 0
                               Decorate 165(g_tTex1df4a) Binding 1
diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
index 81fbc0b..0587bb0 100644
--- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
@@ -520,21 +520,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 35(g_tTex1di4) DescriptorSet 0
-                              Decorate 35(g_tTex1di4) Binding 0
+                              Decorate 35(g_tTex1di4) Binding 2
                               Decorate 48(g_tTex1du4) DescriptorSet 0
-                              Decorate 48(g_tTex1du4) Binding 0
+                              Decorate 48(g_tTex1du4) Binding 3
                               Decorate 58(g_tTex2df4) DescriptorSet 0
-                              Decorate 58(g_tTex2df4) Binding 0
+                              Decorate 58(g_tTex2df4) Binding 4
                               Decorate 73(g_tTex2di4) DescriptorSet 0
-                              Decorate 73(g_tTex2di4) Binding 0
+                              Decorate 73(g_tTex2di4) Binding 5
                               Decorate 85(g_tTex2du4) DescriptorSet 0
-                              Decorate 85(g_tTex2du4) Binding 0
+                              Decorate 85(g_tTex2du4) Binding 6
                               Decorate 99(g_tTex3df4) DescriptorSet 0
-                              Decorate 99(g_tTex3df4) Binding 0
+                              Decorate 99(g_tTex3df4) Binding 7
                               Decorate 114(g_tTex3di4) DescriptorSet 0
-                              Decorate 114(g_tTex3di4) Binding 0
+                              Decorate 114(g_tTex3di4) Binding 8
                               Decorate 125(g_tTex3du4) DescriptorSet 0
-                              Decorate 125(g_tTex3du4) Binding 0
+                              Decorate 125(g_tTex3du4) Binding 9
                               Decorate 149(@entryPointOutput.Color) Location 0
                               Decorate 153(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 156(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
index 01ca547..eaef970 100644
--- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
@@ -383,15 +383,15 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 38(g_tTex1di4) DescriptorSet 0
-                              Decorate 38(g_tTex1di4) Binding 0
+                              Decorate 38(g_tTex1di4) Binding 2
                               Decorate 50(g_tTex1du4) DescriptorSet 0
-                              Decorate 50(g_tTex1du4) Binding 0
+                              Decorate 50(g_tTex1du4) Binding 3
                               Decorate 59(g_tTex2df4) DescriptorSet 0
-                              Decorate 59(g_tTex2df4) Binding 0
+                              Decorate 59(g_tTex2df4) Binding 4
                               Decorate 75(g_tTex2di4) DescriptorSet 0
-                              Decorate 75(g_tTex2di4) Binding 0
+                              Decorate 75(g_tTex2di4) Binding 5
                               Decorate 84(g_tTex2du4) DescriptorSet 0
-                              Decorate 84(g_tTex2du4) Binding 0
+                              Decorate 84(g_tTex2du4) Binding 6
                               Decorate 103(@entryPointOutput.Color) Location 0
                               Decorate 107(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 110(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
index a5ff45a..f678091 100644
--- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -404,21 +404,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 36(g_tTex1di4a) DescriptorSet 0
-                              Decorate 36(g_tTex1di4a) Binding 0
+                              Decorate 36(g_tTex1di4a) Binding 2
                               Decorate 50(g_tTex1du4a) DescriptorSet 0
-                              Decorate 50(g_tTex1du4a) Binding 0
+                              Decorate 50(g_tTex1du4a) Binding 3
                               Decorate 61(g_tTex2df4a) DescriptorSet 0
-                              Decorate 61(g_tTex2df4a) Binding 0
+                              Decorate 61(g_tTex2df4a) Binding 4
                               Decorate 72(g_tTex2di4a) DescriptorSet 0
-                              Decorate 72(g_tTex2di4a) Binding 0
+                              Decorate 72(g_tTex2di4a) Binding 5
                               Decorate 83(g_tTex2du4a) DescriptorSet 0
-                              Decorate 83(g_tTex2du4a) Binding 0
+                              Decorate 83(g_tTex2du4a) Binding 6
                               Decorate 95(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 95(g_tTexcdf4a) Binding 0
+                              Decorate 95(g_tTexcdf4a) Binding 7
                               Decorate 105(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 105(g_tTexcdi4a) Binding 0
+                              Decorate 105(g_tTexcdi4a) Binding 8
                               Decorate 115(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 115(g_tTexcdu4a) Binding 0
+                              Decorate 115(g_tTexcdu4a) Binding 9
                               Decorate 139(@entryPointOutput.Color) Location 0
                               Decorate 143(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 146(g_tTex1df4) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
index 6b91c17..aafdc6f 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
@@ -478,27 +478,27 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 33(g_tTex1di4) DescriptorSet 0
-                              Decorate 33(g_tTex1di4) Binding 0
+                              Decorate 33(g_tTex1di4) Binding 2
                               Decorate 46(g_tTex1du4) DescriptorSet 0
-                              Decorate 46(g_tTex1du4) Binding 0
+                              Decorate 46(g_tTex1du4) Binding 3
                               Decorate 56(g_tTex2df4) DescriptorSet 0
-                              Decorate 56(g_tTex2df4) Binding 0
+                              Decorate 56(g_tTex2df4) Binding 4
                               Decorate 67(g_tTex2di4) DescriptorSet 0
-                              Decorate 67(g_tTex2di4) Binding 0
+                              Decorate 67(g_tTex2di4) Binding 5
                               Decorate 78(g_tTex2du4) DescriptorSet 0
-                              Decorate 78(g_tTex2du4) Binding 0
+                              Decorate 78(g_tTex2du4) Binding 6
                               Decorate 90(g_tTex3df4) DescriptorSet 0
-                              Decorate 90(g_tTex3df4) Binding 0
+                              Decorate 90(g_tTex3df4) Binding 7
                               Decorate 101(g_tTex3di4) DescriptorSet 0
-                              Decorate 101(g_tTex3di4) Binding 0
+                              Decorate 101(g_tTex3di4) Binding 8
                               Decorate 111(g_tTex3du4) DescriptorSet 0
-                              Decorate 111(g_tTex3du4) Binding 0
+                              Decorate 111(g_tTex3du4) Binding 9
                               Decorate 124(g_tTexcdf4) DescriptorSet 0
-                              Decorate 124(g_tTexcdf4) Binding 0
+                              Decorate 124(g_tTexcdf4) Binding 10
                               Decorate 133(g_tTexcdi4) DescriptorSet 0
-                              Decorate 133(g_tTexcdi4) Binding 0
+                              Decorate 133(g_tTexcdi4) Binding 11
                               Decorate 142(g_tTexcdu4) DescriptorSet 0
-                              Decorate 142(g_tTexcdu4) Binding 0
+                              Decorate 142(g_tTexcdu4) Binding 12
                               Decorate 163(@entryPointOutput.Color) Location 0
                               Decorate 167(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 170(g_sSamp2d) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
index 8f395ed..34f2a53 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
@@ -432,27 +432,27 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 33(g_tTex1di4) DescriptorSet 0
-                              Decorate 33(g_tTex1di4) Binding 0
+                              Decorate 33(g_tTex1di4) Binding 2
                               Decorate 46(g_tTex1du4) DescriptorSet 0
-                              Decorate 46(g_tTex1du4) Binding 0
+                              Decorate 46(g_tTex1du4) Binding 3
                               Decorate 56(g_tTex2df4) DescriptorSet 0
-                              Decorate 56(g_tTex2df4) Binding 0
+                              Decorate 56(g_tTex2df4) Binding 4
                               Decorate 67(g_tTex2di4) DescriptorSet 0
-                              Decorate 67(g_tTex2di4) Binding 0
+                              Decorate 67(g_tTex2di4) Binding 5
                               Decorate 78(g_tTex2du4) DescriptorSet 0
-                              Decorate 78(g_tTex2du4) Binding 0
+                              Decorate 78(g_tTex2du4) Binding 6
                               Decorate 90(g_tTex3df4) DescriptorSet 0
-                              Decorate 90(g_tTex3df4) Binding 0
+                              Decorate 90(g_tTex3df4) Binding 7
                               Decorate 101(g_tTex3di4) DescriptorSet 0
-                              Decorate 101(g_tTex3di4) Binding 0
+                              Decorate 101(g_tTex3di4) Binding 8
                               Decorate 111(g_tTex3du4) DescriptorSet 0
-                              Decorate 111(g_tTex3du4) Binding 0
+                              Decorate 111(g_tTex3du4) Binding 9
                               Decorate 124(g_tTexcdf4) DescriptorSet 0
-                              Decorate 124(g_tTexcdf4) Binding 0
+                              Decorate 124(g_tTexcdf4) Binding 10
                               Decorate 133(g_tTexcdi4) DescriptorSet 0
-                              Decorate 133(g_tTexcdi4) Binding 0
+                              Decorate 133(g_tTexcdi4) Binding 11
                               Decorate 142(g_tTexcdu4) DescriptorSet 0
-                              Decorate 142(g_tTexcdu4) Binding 0
+                              Decorate 142(g_tTexcdu4) Binding 12
                               Decorate 158(@entryPointOutput.Pos) BuiltIn Position
                               Decorate 161(g_tTex1df4a) DescriptorSet 0
                               Decorate 161(g_tTex1df4a) Binding 1
diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
index 10b48ec..0d3844d 100644
--- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
@@ -448,21 +448,21 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 34(g_tTex1di4) DescriptorSet 0
-                              Decorate 34(g_tTex1di4) Binding 0
+                              Decorate 34(g_tTex1di4) Binding 2
                               Decorate 47(g_tTex1du4) DescriptorSet 0
-                              Decorate 47(g_tTex1du4) Binding 0
+                              Decorate 47(g_tTex1du4) Binding 3
                               Decorate 57(g_tTex2df4) DescriptorSet 0
-                              Decorate 57(g_tTex2df4) Binding 0
+                              Decorate 57(g_tTex2df4) Binding 4
                               Decorate 71(g_tTex2di4) DescriptorSet 0
-                              Decorate 71(g_tTex2di4) Binding 0
+                              Decorate 71(g_tTex2di4) Binding 5
                               Decorate 83(g_tTex2du4) DescriptorSet 0
-                              Decorate 83(g_tTex2du4) Binding 0
+                              Decorate 83(g_tTex2du4) Binding 6
                               Decorate 97(g_tTex3df4) DescriptorSet 0
-                              Decorate 97(g_tTex3df4) Binding 0
+                              Decorate 97(g_tTex3df4) Binding 7
                               Decorate 110(g_tTex3di4) DescriptorSet 0
-                              Decorate 110(g_tTex3di4) Binding 0
+                              Decorate 110(g_tTex3di4) Binding 8
                               Decorate 121(g_tTex3du4) DescriptorSet 0
-                              Decorate 121(g_tTex3du4) Binding 0
+                              Decorate 121(g_tTex3du4) Binding 9
                               Decorate 145(@entryPointOutput.Color) Location 0
                               Decorate 149(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 152(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
index 5fb25a0..bb45099 100644
--- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
@@ -337,15 +337,15 @@
                               Decorate 20(g_sSamp) DescriptorSet 0
                               Decorate 20(g_sSamp) Binding 0
                               Decorate 37(g_tTex1di4) DescriptorSet 0
-                              Decorate 37(g_tTex1di4) Binding 0
+                              Decorate 37(g_tTex1di4) Binding 2
                               Decorate 52(g_tTex1du4) DescriptorSet 0
-                              Decorate 52(g_tTex1du4) Binding 0
+                              Decorate 52(g_tTex1du4) Binding 3
                               Decorate 64(g_tTex2df4) DescriptorSet 0
-                              Decorate 64(g_tTex2df4) Binding 0
+                              Decorate 64(g_tTex2df4) Binding 4
                               Decorate 77(g_tTex2di4) DescriptorSet 0
-                              Decorate 77(g_tTex2di4) Binding 0
+                              Decorate 77(g_tTex2di4) Binding 5
                               Decorate 88(g_tTex2du4) DescriptorSet 0
-                              Decorate 88(g_tTex2du4) Binding 0
+                              Decorate 88(g_tTex2du4) Binding 6
                               Decorate 111(@entryPointOutput.Color) Location 0
                               Decorate 115(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 118(g_tTex1df4a) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out
index 8da8d48..cacb5ab 100644
--- a/Test/baseResults/hlsl.shapeConv.frag.out
+++ b/Test/baseResults/hlsl.shapeConv.frag.out
@@ -2,7 +2,7 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4;f1; ( temp 4-component vector of float)
+0:2  Function Definition: @PixelShaderFunction(vf4;f1; ( temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' ( in 4-component vector of float)
 0:2      'f' ( in float)
@@ -154,17 +154,33 @@
 0:48            3.000000
 0:48            3.000000
 0:48            3.000000
+0:2  Function Definition: PixelShaderFunction( ( temp void)
+0:2    Function Parameters: 
+0:?     Sequence
+0:2      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:2      move second child to first child ( temp float)
+0:?         'f' ( temp float)
+0:?         'f' (layout( location=1) in float)
+0:2      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:2        Function Call: @PixelShaderFunction(vf4;f1; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
+0:?           'f' ( temp float)
 0:?   Linker Objects
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
+0:?     'f' (layout( location=1) in float)
 
 
 Linked fragment stage:
 
-WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4;f1; ( temp 4-component vector of float)
+0:2  Function Definition: @PixelShaderFunction(vf4;f1; ( temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' ( in 4-component vector of float)
 0:2      'f' ( in float)
@@ -316,20 +332,37 @@
 0:48            3.000000
 0:48            3.000000
 0:48            3.000000
+0:2  Function Definition: PixelShaderFunction( ( temp void)
+0:2    Function Parameters: 
+0:?     Sequence
+0:2      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:2      move second child to first child ( temp float)
+0:?         'f' ( temp float)
+0:?         'f' (layout( location=1) in float)
+0:2      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:2        Function Call: @PixelShaderFunction(vf4;f1; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
+0:?           'f' ( temp float)
 0:?   Linker Objects
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
+0:?     'f' (layout( location=1) in float)
 
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 127
+// Id's are bound by 142
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main"
+                              EntryPoint Fragment 4  "PixelShaderFunction" 129 133 136
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
-                              Name 4  "main"
-                              Name 13  "PixelShaderFunction(vf4;f1;"
+                              Name 4  "PixelShaderFunction"
+                              Name 13  "@PixelShaderFunction(vf4;f1;"
                               Name 11  "input"
                               Name 12  "f"
                               Name 15  "v"
@@ -344,6 +377,16 @@
                               Name 103  "mixed"
                               Name 115  "sf"
                               Name 118  "sf1"
+                              Name 127  "input"
+                              Name 129  "input"
+                              Name 131  "f"
+                              Name 133  "f"
+                              Name 136  "@entryPointOutput"
+                              Name 137  "param"
+                              Name 139  "param"
+                              Decorate 129(input) Location 0
+                              Decorate 133(f) Location 1
+                              Decorate 136(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -380,11 +423,31 @@
               87:             TypePointer Function 85(ivec3)
              122:    6(float) Constant 1077936128
              123:    7(fvec4) ConstantComposite 122 122 122 122
-         4(main):           2 Function None 3
+             128:             TypePointer Input 7(fvec4)
+      129(input):    128(ptr) Variable Input
+             132:             TypePointer Input 6(float)
+          133(f):    132(ptr) Variable Input
+             135:             TypePointer Output 7(fvec4)
+136(@entryPointOutput):    135(ptr) Variable Output
+4(PixelShaderFunction):           2 Function None 3
                5:             Label
+      127(input):      8(ptr) Variable Function
+          131(f):      9(ptr) Variable Function
+      137(param):      8(ptr) Variable Function
+      139(param):      9(ptr) Variable Function
+             130:    7(fvec4) Load 129(input)
+                              Store 127(input) 130
+             134:    6(float) Load 133(f)
+                              Store 131(f) 134
+             138:    7(fvec4) Load 127(input)
+                              Store 137(param) 138
+             140:    6(float) Load 131(f)
+                              Store 139(param) 140
+             141:    7(fvec4) FunctionCall 13(@PixelShaderFunction(vf4;f1;) 137(param) 139(param)
+                              Store 136(@entryPointOutput) 141
                               Return
                               FunctionEnd
-13(PixelShaderFunction(vf4;f1;):    7(fvec4) Function None 10
+13(@PixelShaderFunction(vf4;f1;):    7(fvec4) Function None 10
        11(input):      8(ptr) FunctionParameter
            12(f):      9(ptr) FunctionParameter
               14:             Label
diff --git a/Test/baseResults/hlsl.snorm.uav.comp.out b/Test/baseResults/hlsl.snorm.uav.comp.out
index 739d77d..8b9e621 100644
--- a/Test/baseResults/hlsl.snorm.uav.comp.out
+++ b/Test/baseResults/hlsl.snorm.uav.comp.out
@@ -141,7 +141,7 @@
                               MemberDecorate 25($Global) 0 Offset 0
                               Decorate 25($Global) Block
                               Decorate 27 DescriptorSet 0
-                              Decorate 27 Binding 0
+                              Decorate 27 Binding 2
                               Decorate 34(ResultOutS) DescriptorSet 0
                               Decorate 34(ResultOutS) Binding 1
                               Decorate 39(ResultInU) DescriptorSet 0
diff --git a/Test/baseResults/hlsl.structarray.flatten.frag.out b/Test/baseResults/hlsl.structarray.flatten.frag.out
index b654c32..f0b31d6 100644
--- a/Test/baseResults/hlsl.structarray.flatten.frag.out
+++ b/Test/baseResults/hlsl.structarray.flatten.frag.out
@@ -199,38 +199,52 @@
                               Name 78  "g_texdata_array2[2].tex"
                               Name 79  "g_texdata_array2[2].nonopaque_thing"
                               Decorate 18(g_texdata.tex) DescriptorSet 0
-                              Decorate 18(g_texdata.tex) Binding 0
+                              Decorate 18(g_texdata.tex) Binding 1
                               Decorate 22(g_texdata.samp) DescriptorSet 0
                               Decorate 22(g_texdata.samp) Binding 0
                               Decorate 28(g_texdata_array[1].tex) DescriptorSet 0
-                              Decorate 28(g_texdata_array[1].tex) Binding 0
+                              Decorate 28(g_texdata_array[1].tex) Binding 3
                               Decorate 30(g_texdata_array[1].samp) DescriptorSet 0
-                              Decorate 30(g_texdata_array[1].samp) Binding 0
+                              Decorate 30(g_texdata_array[1].samp) Binding 2
                               Decorate 40(g_texdata_array2[1].tex) DescriptorSet 0
-                              Decorate 40(g_texdata_array2[1].tex) Binding 0
+                              Decorate 40(g_texdata_array2[1].tex) Binding 5
                               Decorate 45(g_texdata_array2[1].samp) DescriptorSet 0
-                              Decorate 45(g_texdata_array2[1].samp) Binding 0
+                              Decorate 45(g_texdata_array2[1].samp) Binding 4
                               Decorate 59(ps_output.color) Location 0
                               Decorate 62(g_samp) DescriptorSet 0
                               Decorate 62(g_samp) Binding 0
                               Decorate 63(g_tex) DescriptorSet 0
                               Decorate 63(g_tex) Binding 0
+                              Decorate 65(g_texdata.nonopaque_thing) Location 0
+                              Decorate 65(g_texdata.nonopaque_thing) DescriptorSet 0
                               Decorate 66(g_texdata_array[0].samp) DescriptorSet 0
                               Decorate 66(g_texdata_array[0].samp) Binding 0
                               Decorate 67(g_texdata_array[0].tex) DescriptorSet 0
                               Decorate 67(g_texdata_array[0].tex) Binding 0
+                              Decorate 68(g_texdata_array[0].nonopaque_thing) Location 1
+                              Decorate 68(g_texdata_array[0].nonopaque_thing) DescriptorSet 0
+                              Decorate 69(g_texdata_array[1].nonopaque_thing) Location 2
+                              Decorate 69(g_texdata_array[1].nonopaque_thing) DescriptorSet 0
                               Decorate 70(g_texdata_array[2].samp) DescriptorSet 0
                               Decorate 70(g_texdata_array[2].samp) Binding 0
                               Decorate 71(g_texdata_array[2].tex) DescriptorSet 0
                               Decorate 71(g_texdata_array[2].tex) Binding 0
+                              Decorate 72(g_texdata_array[2].nonopaque_thing) Location 3
+                              Decorate 72(g_texdata_array[2].nonopaque_thing) DescriptorSet 0
                               Decorate 73(g_texdata_array2[0].samp) DescriptorSet 0
                               Decorate 73(g_texdata_array2[0].samp) Binding 0
                               Decorate 74(g_texdata_array2[0].tex) DescriptorSet 0
                               Decorate 74(g_texdata_array2[0].tex) Binding 0
+                              Decorate 75(g_texdata_array2[0].nonopaque_thing) Location 4
+                              Decorate 75(g_texdata_array2[0].nonopaque_thing) DescriptorSet 0
+                              Decorate 76(g_texdata_array2[1].nonopaque_thing) Location 5
+                              Decorate 76(g_texdata_array2[1].nonopaque_thing) DescriptorSet 0
                               Decorate 77(g_texdata_array2[2].samp) DescriptorSet 0
                               Decorate 77(g_texdata_array2[2].samp) Binding 0
                               Decorate 78(g_texdata_array2[2].tex) DescriptorSet 0
                               Decorate 78(g_texdata_array2[2].tex) Binding 0
+                              Decorate 79(g_texdata_array2[2].nonopaque_thing) Location 6
+                              Decorate 79(g_texdata_array2[2].nonopaque_thing) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
index c61b1d8..438c259 100644
--- a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
@@ -190,13 +190,13 @@
                               Decorate 9 BufferBlock
                               Decorate 12 BufferBlock
                               Decorate 49(sbuf_a) DescriptorSet 0
-                              Decorate 49(sbuf_a) Binding 0
+                              Decorate 49(sbuf_a) Binding 4
                               Decorate 50(sbuf_a@count) DescriptorSet 0
-                              Decorate 50(sbuf_a@count) Binding 0
+                              Decorate 50(sbuf_a@count) Binding 6
                               Decorate 51(sbuf_c) DescriptorSet 0
-                              Decorate 51(sbuf_c) Binding 0
+                              Decorate 51(sbuf_c) Binding 5
                               Decorate 52(sbuf_c@count) DescriptorSet 0
-                              Decorate 52(sbuf_c@count) Binding 0
+                              Decorate 52(sbuf_c@count) Binding 7
                               Decorate 58(pos) Flat
                               Decorate 58(pos) Location 0
                               Decorate 61(@entryPointOutput) Location 0
diff --git a/Test/baseResults/hlsl.structbuffer.append.frag.out b/Test/baseResults/hlsl.structbuffer.append.frag.out
index e213b4b..e17a099 100644
--- a/Test/baseResults/hlsl.structbuffer.append.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.append.frag.out
@@ -157,11 +157,11 @@
                               MemberDecorate 20(sbuf_a@count) 0 Offset 0
                               Decorate 20(sbuf_a@count) BufferBlock
                               Decorate 22(sbuf_a@count) DescriptorSet 0
-                              Decorate 22(sbuf_a@count) Binding 0
+                              Decorate 22(sbuf_a@count) Binding 1
                               Decorate 35(sbuf_c) DescriptorSet 0
-                              Decorate 35(sbuf_c) Binding 0
+                              Decorate 35(sbuf_c) Binding 2
                               Decorate 36(sbuf_c@count) DescriptorSet 0
-                              Decorate 36(sbuf_c@count) Binding 0
+                              Decorate 36(sbuf_c@count) Binding 3
                               Decorate 48(pos) Flat
                               Decorate 48(pos) Location 0
                               Decorate 51(@entryPointOutput) Location 0
diff --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
index 34b029b..3737b19 100644
--- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
@@ -208,7 +208,7 @@
                               MemberDecorate 15(sbuf2) 0 Offset 0
                               Decorate 15(sbuf2) BufferBlock
                               Decorate 17(sbuf2) DescriptorSet 0
-                              Decorate 17(sbuf2) Binding 0
+                              Decorate 17(sbuf2) Binding 1
                               MemberDecorate 28(sb_t) 0 Offset 0
                               MemberDecorate 28(sb_t) 1 Offset 12
                               Decorate 29 ArrayStride 16
diff --git a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
index e1c5466..5c066fe 100644
--- a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
+++ b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
@@ -224,14 +224,14 @@
                               MemberDecorate 26(csb@count) 0 Offset 0
                               Decorate 26(csb@count) BufferBlock
                               Decorate 28(csb@count) DescriptorSet 0
-                              Decorate 28(csb@count) Binding 0
+                              Decorate 28(csb@count) Binding 2
                               Decorate 58(outtx) DescriptorSet 0
                               Decorate 58(outtx) Binding 0
                               Decorate 63 ArrayStride 16
                               MemberDecorate 64(rwsb) 0 Offset 0
                               Decorate 64(rwsb) BufferBlock
                               Decorate 66(rwsb) DescriptorSet 0
-                              Decorate 66(rwsb) Binding 0
+                              Decorate 66(rwsb) Binding 3
                               Decorate 80(nThreadId) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out
index 1df5880..fbaee69 100644
--- a/Test/baseResults/hlsl.structbuffer.fn.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out
@@ -191,9 +191,9 @@
                               Decorate 18 BufferBlock
                               Decorate 20 BufferBlock
                               Decorate 47(sbuf2) DescriptorSet 0
-                              Decorate 47(sbuf2) Binding 0
+                              Decorate 47(sbuf2) Binding 2
                               Decorate 48(sbuf2@count) DescriptorSet 0
-                              Decorate 48(sbuf2@count) Binding 0
+                              Decorate 48(sbuf2@count) Binding 3
                               Decorate 50(sbuf) DescriptorSet 0
                               Decorate 50(sbuf) Binding 10
                               Decorate 63(pos) Flat
diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.out
index b9c1630..948fab7 100644
--- a/Test/baseResults/hlsl.structbuffer.incdec.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.out
@@ -238,15 +238,15 @@
                               Decorate 22(sbuf_rw_i) DescriptorSet 0
                               Decorate 22(sbuf_rw_i) Binding 0
                               Decorate 26(sbuf_rw_d) DescriptorSet 0
-                              Decorate 26(sbuf_rw_d) Binding 0
+                              Decorate 26(sbuf_rw_d) Binding 2
                               Decorate 27(sbuf_rw_nocounter) DescriptorSet 0
-                              Decorate 27(sbuf_rw_nocounter) Binding 0
+                              Decorate 27(sbuf_rw_nocounter) Binding 4
                               MemberDecorate 34(sbuf_rw_i@count) 0 Offset 0
                               Decorate 34(sbuf_rw_i@count) BufferBlock
                               Decorate 36(sbuf_rw_i@count) DescriptorSet 0
-                              Decorate 36(sbuf_rw_i@count) Binding 0
+                              Decorate 36(sbuf_rw_i@count) Binding 1
                               Decorate 42(sbuf_rw_d@count) DescriptorSet 0
-                              Decorate 42(sbuf_rw_d@count) Binding 0
+                              Decorate 42(sbuf_rw_d@count) Binding 3
                               Decorate 63(pos) Flat
                               Decorate 63(pos) Location 0
                               Decorate 66(@entryPointOutput) Location 0
diff --git a/Test/baseResults/hlsl.structbuffer.rw.frag.out b/Test/baseResults/hlsl.structbuffer.rw.frag.out
index fbd48a2..e522ea6 100644
--- a/Test/baseResults/hlsl.structbuffer.rw.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.rw.frag.out
@@ -207,7 +207,7 @@
                               MemberDecorate 15(sbuf2) 0 Offset 0
                               Decorate 15(sbuf2) BufferBlock
                               Decorate 17(sbuf2) DescriptorSet 0
-                              Decorate 17(sbuf2) Binding 0
+                              Decorate 17(sbuf2) Binding 1
                               MemberDecorate 28(sb_t) 0 Offset 0
                               MemberDecorate 28(sb_t) 1 Offset 12
                               Decorate 29 ArrayStride 16
diff --git a/Test/baseResults/hlsl.subpass.frag.out b/Test/baseResults/hlsl.subpass.frag.out
index 8d48028..0a86494 100644
--- a/Test/baseResults/hlsl.subpass.frag.out
+++ b/Test/baseResults/hlsl.subpass.frag.out
@@ -500,73 +500,73 @@
                               Decorate 27(subpass_i4) Binding 0
                               Decorate 27(subpass_i4) InputAttachmentIndex 2
                               Decorate 36(subpass_u4) DescriptorSet 0
-                              Decorate 36(subpass_u4) Binding 0
+                              Decorate 36(subpass_u4) Binding 2
                               Decorate 36(subpass_u4) InputAttachmentIndex 3
                               Decorate 42(subpass_ms_f4) DescriptorSet 0
-                              Decorate 42(subpass_ms_f4) Binding 0
+                              Decorate 42(subpass_ms_f4) Binding 3
                               Decorate 42(subpass_ms_f4) InputAttachmentIndex 4
                               Decorate 49(subpass_ms_i4) DescriptorSet 0
-                              Decorate 49(subpass_ms_i4) Binding 0
+                              Decorate 49(subpass_ms_i4) Binding 4
                               Decorate 49(subpass_ms_i4) InputAttachmentIndex 5
                               Decorate 55(subpass_ms_u4) DescriptorSet 0
-                              Decorate 55(subpass_ms_u4) Binding 0
+                              Decorate 55(subpass_ms_u4) Binding 5
                               Decorate 55(subpass_ms_u4) InputAttachmentIndex 6
                               Decorate 61(subpass_f3) DescriptorSet 0
-                              Decorate 61(subpass_f3) Binding 0
+                              Decorate 61(subpass_f3) Binding 6
                               Decorate 61(subpass_f3) InputAttachmentIndex 1
                               Decorate 71(subpass_i3) DescriptorSet 0
-                              Decorate 71(subpass_i3) Binding 0
+                              Decorate 71(subpass_i3) Binding 7
                               Decorate 71(subpass_i3) InputAttachmentIndex 2
                               Decorate 81(subpass_u3) DescriptorSet 0
-                              Decorate 81(subpass_u3) Binding 0
+                              Decorate 81(subpass_u3) Binding 8
                               Decorate 81(subpass_u3) InputAttachmentIndex 3
                               Decorate 89(subpass_ms_f3) DescriptorSet 0
-                              Decorate 89(subpass_ms_f3) Binding 0
+                              Decorate 89(subpass_ms_f3) Binding 9
                               Decorate 89(subpass_ms_f3) InputAttachmentIndex 4
                               Decorate 97(subpass_ms_i3) DescriptorSet 0
-                              Decorate 97(subpass_ms_i3) Binding 0
+                              Decorate 97(subpass_ms_i3) Binding 10
                               Decorate 97(subpass_ms_i3) InputAttachmentIndex 5
                               Decorate 105(subpass_ms_u3) DescriptorSet 0
-                              Decorate 105(subpass_ms_u3) Binding 0
+                              Decorate 105(subpass_ms_u3) Binding 11
                               Decorate 105(subpass_ms_u3) InputAttachmentIndex 6
                               Decorate 115(subpass_f2) DescriptorSet 0
-                              Decorate 115(subpass_f2) Binding 0
+                              Decorate 115(subpass_f2) Binding 12
                               Decorate 115(subpass_f2) InputAttachmentIndex 1
                               Decorate 123(subpass_i2) DescriptorSet 0
-                              Decorate 123(subpass_i2) Binding 0
+                              Decorate 123(subpass_i2) Binding 13
                               Decorate 123(subpass_i2) InputAttachmentIndex 2
                               Decorate 132(subpass_u2) DescriptorSet 0
-                              Decorate 132(subpass_u2) Binding 0
+                              Decorate 132(subpass_u2) Binding 14
                               Decorate 132(subpass_u2) InputAttachmentIndex 3
                               Decorate 139(subpass_ms_f2) DescriptorSet 0
-                              Decorate 139(subpass_ms_f2) Binding 0
+                              Decorate 139(subpass_ms_f2) Binding 15
                               Decorate 139(subpass_ms_f2) InputAttachmentIndex 4
                               Decorate 147(subpass_ms_i2) DescriptorSet 0
-                              Decorate 147(subpass_ms_i2) Binding 0
+                              Decorate 147(subpass_ms_i2) Binding 16
                               Decorate 147(subpass_ms_i2) InputAttachmentIndex 5
                               Decorate 154(subpass_ms_u2) DescriptorSet 0
-                              Decorate 154(subpass_ms_u2) Binding 0
+                              Decorate 154(subpass_ms_u2) Binding 17
                               Decorate 154(subpass_ms_u2) InputAttachmentIndex 6
                               Decorate 162(subpass_f) DescriptorSet 0
-                              Decorate 162(subpass_f) Binding 0
+                              Decorate 162(subpass_f) Binding 18
                               Decorate 162(subpass_f) InputAttachmentIndex 1
                               Decorate 168(subpass_i) DescriptorSet 0
-                              Decorate 168(subpass_i) Binding 0
+                              Decorate 168(subpass_i) Binding 19
                               Decorate 168(subpass_i) InputAttachmentIndex 2
                               Decorate 174(subpass_u) DescriptorSet 0
-                              Decorate 174(subpass_u) Binding 0
+                              Decorate 174(subpass_u) Binding 20
                               Decorate 174(subpass_u) InputAttachmentIndex 3
                               Decorate 179(subpass_ms_f) DescriptorSet 0
-                              Decorate 179(subpass_ms_f) Binding 0
+                              Decorate 179(subpass_ms_f) Binding 21
                               Decorate 179(subpass_ms_f) InputAttachmentIndex 4
                               Decorate 184(subpass_ms_i) DescriptorSet 0
-                              Decorate 184(subpass_ms_i) Binding 0
+                              Decorate 184(subpass_ms_i) Binding 22
                               Decorate 184(subpass_ms_i) InputAttachmentIndex 5
                               Decorate 189(subpass_ms_u) DescriptorSet 0
-                              Decorate 189(subpass_ms_u) Binding 0
+                              Decorate 189(subpass_ms_u) Binding 23
                               Decorate 189(subpass_ms_u) InputAttachmentIndex 6
                               Decorate 194(subpass_2) DescriptorSet 0
-                              Decorate 194(subpass_2) Binding 0
+                              Decorate 194(subpass_2) Binding 24
                               Decorate 194(subpass_2) InputAttachmentIndex 7
                               Decorate 202(@entryPointOutput) Location 0
                2:             TypeVoid
diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out
index 87ccdc7..04f49b5 100644
--- a/Test/baseResults/hlsl.swizzle.frag.out
+++ b/Test/baseResults/hlsl.swizzle.frag.out
@@ -10,7 +10,7 @@
 0:?         0.500000
 0:?         0.000000
 0:?         1.000000
-0:4  Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float)
+0:4  Function Definition: @ShaderFunction(vf4; ( temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' ( in 4-component vector of float)
 0:?     Sequence
@@ -32,13 +32,24 @@
 0:5              'AmbientColor' ( global 4-component vector of float)
 0:5              Constant:
 0:5                2 (const int)
+0:4  Function Definition: ShaderFunction( ( temp void)
+0:4    Function Parameters: 
+0:?     Sequence
+0:4      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:4      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4        Function Call: @ShaderFunction(vf4; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     'AmbientColor' ( global 4-component vector of float)
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
 
 
 Linked fragment stage:
 
-WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 500
 gl_FragCoord origin is upper left
@@ -51,7 +62,7 @@
 0:?         0.500000
 0:?         0.000000
 0:?         1.000000
-0:4  Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float)
+0:4  Function Definition: @ShaderFunction(vf4; ( temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' ( in 4-component vector of float)
 0:?     Sequence
@@ -73,23 +84,41 @@
 0:5              'AmbientColor' ( global 4-component vector of float)
 0:5              Constant:
 0:5                2 (const int)
+0:4  Function Definition: ShaderFunction( ( temp void)
+0:4    Function Parameters: 
+0:?     Sequence
+0:4      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:4      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4        Function Call: @ShaderFunction(vf4; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     'AmbientColor' ( global 4-component vector of float)
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 30
+// Id's are bound by 39
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction"
+                              EntryPoint Fragment 4  "ShaderFunction" 32 35
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
-                              Name 4  "PixelShaderFunction"
-                              Name 11  "ShaderFunction(vf4;"
+                              Name 4  "ShaderFunction"
+                              Name 11  "@ShaderFunction(vf4;"
                               Name 10  "input"
                               Name 14  "AmbientColor"
+                              Name 30  "input"
+                              Name 32  "input"
+                              Name 35  "@entryPointOutput"
+                              Name 36  "param"
+                              Decorate 32(input) Location 0
+                              Decorate 35(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -105,12 +134,24 @@
               21:             TypeInt 32 0
               22:     21(int) Constant 2
               23:             TypePointer Private 6(float)
-4(PixelShaderFunction):           2 Function None 3
+              31:             TypePointer Input 7(fvec4)
+       32(input):     31(ptr) Variable Input
+              34:             TypePointer Output 7(fvec4)
+35(@entryPointOutput):     34(ptr) Variable Output
+4(ShaderFunction):           2 Function None 3
                5:             Label
+       30(input):      8(ptr) Variable Function
+       36(param):      8(ptr) Variable Function
                               Store 14(AmbientColor) 18
+              33:    7(fvec4) Load 32(input)
+                              Store 30(input) 33
+              37:    7(fvec4) Load 30(input)
+                              Store 36(param) 37
+              38:    7(fvec4) FunctionCall 11(@ShaderFunction(vf4;) 36(param)
+                              Store 35(@entryPointOutput) 38
                               Return
                               FunctionEnd
-11(ShaderFunction(vf4;):    7(fvec4) Function None 9
+11(@ShaderFunction(vf4;):    7(fvec4) Function None 9
        10(input):      8(ptr) FunctionParameter
               12:             Label
               19:    7(fvec4) Load 10(input)
diff --git a/Test/baseResults/hlsl.texture.struct.frag.out b/Test/baseResults/hlsl.texture.struct.frag.out
index 7835d32..e8e05ce 100644
--- a/Test/baseResults/hlsl.texture.struct.frag.out
+++ b/Test/baseResults/hlsl.texture.struct.frag.out
@@ -907,17 +907,17 @@
                               Decorate 30(g_sSamp) DescriptorSet 0
                               Decorate 30(g_sSamp) Binding 0
                               Decorate 90(g_tTex2s1) DescriptorSet 0
-                              Decorate 90(g_tTex2s1) Binding 0
+                              Decorate 90(g_tTex2s1) Binding 1
                               Decorate 114(g_tTex2s2) DescriptorSet 0
-                              Decorate 114(g_tTex2s2) Binding 0
+                              Decorate 114(g_tTex2s2) Binding 2
                               Decorate 140(g_tTex2s3) DescriptorSet 0
-                              Decorate 140(g_tTex2s3) Binding 0
+                              Decorate 140(g_tTex2s3) Binding 3
                               Decorate 168(g_tTex2s4) DescriptorSet 0
-                              Decorate 168(g_tTex2s4) Binding 0
+                              Decorate 168(g_tTex2s4) Binding 4
                               Decorate 202(g_tTex2s5) DescriptorSet 0
-                              Decorate 202(g_tTex2s5) Binding 0
+                              Decorate 202(g_tTex2s5) Binding 5
                               Decorate 229(g_tTex2s1a) DescriptorSet 0
-                              Decorate 229(g_tTex2s1a) Binding 0
+                              Decorate 229(g_tTex2s1a) Binding 6
                               Decorate 238(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.texture.subvec4.frag.out b/Test/baseResults/hlsl.texture.subvec4.frag.out
index 01f32da..960142e 100644
--- a/Test/baseResults/hlsl.texture.subvec4.frag.out
+++ b/Test/baseResults/hlsl.texture.subvec4.frag.out
@@ -388,21 +388,21 @@
                               Decorate 17(g_tTex2dmsf1) DescriptorSet 0
                               Decorate 17(g_tTex2dmsf1) Binding 0
                               Decorate 33(g_tTex2dmsf2) DescriptorSet 0
-                              Decorate 33(g_tTex2dmsf2) Binding 0
+                              Decorate 33(g_tTex2dmsf2) Binding 1
                               Decorate 43(g_tTex2dmsf3) DescriptorSet 0
-                              Decorate 43(g_tTex2dmsf3) Binding 0
+                              Decorate 43(g_tTex2dmsf3) Binding 2
                               Decorate 53(g_tTex2dmsf4) DescriptorSet 0
-                              Decorate 53(g_tTex2dmsf4) Binding 0
+                              Decorate 53(g_tTex2dmsf4) Binding 3
                               Decorate 88(g_tTex2df1) DescriptorSet 0
-                              Decorate 88(g_tTex2df1) Binding 0
+                              Decorate 88(g_tTex2df1) Binding 4
                               Decorate 92(g_sSamp) DescriptorSet 0
-                              Decorate 92(g_sSamp) Binding 0
+                              Decorate 92(g_sSamp) Binding 8
                               Decorate 101(g_tTex2df2) DescriptorSet 0
-                              Decorate 101(g_tTex2df2) Binding 0
+                              Decorate 101(g_tTex2df2) Binding 5
                               Decorate 109(g_tTex2df3) DescriptorSet 0
-                              Decorate 109(g_tTex2df3) Binding 0
+                              Decorate 109(g_tTex2df3) Binding 6
                               Decorate 118(g_tTex2df4) DescriptorSet 0
-                              Decorate 118(g_tTex2df4) Binding 0
+                              Decorate 118(g_tTex2df4) Binding 7
                               Decorate 128(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.texturebuffer.frag.out b/Test/baseResults/hlsl.texturebuffer.frag.out
index 1aa9dbc..5078640 100644
--- a/Test/baseResults/hlsl.texturebuffer.frag.out
+++ b/Test/baseResults/hlsl.texturebuffer.frag.out
@@ -107,7 +107,7 @@
                               MemberDecorate 22(tbuf2) 1 Offset 16
                               Decorate 22(tbuf2) BufferBlock
                               Decorate 24 DescriptorSet 0
-                              Decorate 24 Binding 0
+                              Decorate 24 Binding 1
                               Decorate 32(pos) BuiltIn FragCoord
                               Decorate 35(@entryPointOutput) Location 0
                2:             TypeVoid
diff --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out
index 0e8fb5c..6b9ddb0 100644
--- a/Test/baseResults/hlsl.tx.bracket.frag.out
+++ b/Test/baseResults/hlsl.tx.bracket.frag.out
@@ -493,25 +493,25 @@
                               MemberDecorate 45($Global) 7 Offset 80
                               Decorate 45($Global) Block
                               Decorate 47 DescriptorSet 0
-                              Decorate 47 Binding 0
+                              Decorate 47 Binding 9
                               Decorate 57(g_tTex1df4) DescriptorSet 0
                               Decorate 57(g_tTex1df4) Binding 0
                               Decorate 72(g_tTex1di4) DescriptorSet 0
-                              Decorate 72(g_tTex1di4) Binding 0
+                              Decorate 72(g_tTex1di4) Binding 1
                               Decorate 80(g_tTex1du4) DescriptorSet 0
-                              Decorate 80(g_tTex1du4) Binding 0
+                              Decorate 80(g_tTex1du4) Binding 2
                               Decorate 88(g_tTex2df4) DescriptorSet 0
-                              Decorate 88(g_tTex2df4) Binding 0
+                              Decorate 88(g_tTex2df4) Binding 3
                               Decorate 98(g_tTex2di4) DescriptorSet 0
-                              Decorate 98(g_tTex2di4) Binding 0
+                              Decorate 98(g_tTex2di4) Binding 4
                               Decorate 106(g_tTex2du4) DescriptorSet 0
-                              Decorate 106(g_tTex2du4) Binding 0
+                              Decorate 106(g_tTex2du4) Binding 5
                               Decorate 114(g_tTex3df4) DescriptorSet 0
-                              Decorate 114(g_tTex3df4) Binding 0
+                              Decorate 114(g_tTex3df4) Binding 6
                               Decorate 124(g_tTex3di4) DescriptorSet 0
-                              Decorate 124(g_tTex3di4) Binding 0
+                              Decorate 124(g_tTex3di4) Binding 7
                               Decorate 132(g_tTex3du4) DescriptorSet 0
-                              Decorate 132(g_tTex3du4) Binding 0
+                              Decorate 132(g_tTex3du4) Binding 8
                               Decorate 164(@entryPointOutput.Color) Location 0
                               Decorate 169(g_sSamp) DescriptorSet 0
                               Decorate 169(g_sSamp) Binding 0
diff --git a/Test/baseResults/hlsl.tx.overload.frag.out b/Test/baseResults/hlsl.tx.overload.frag.out
index 8556b9e..068f93f 100644
--- a/Test/baseResults/hlsl.tx.overload.frag.out
+++ b/Test/baseResults/hlsl.tx.overload.frag.out
@@ -165,11 +165,11 @@
                               Decorate 45(tf1) DescriptorSet 0
                               Decorate 45(tf1) Binding 0
                               Decorate 49(tf4) DescriptorSet 0
-                              Decorate 49(tf4) Binding 0
+                              Decorate 49(tf4) Binding 1
                               Decorate 56(twf1) DescriptorSet 0
-                              Decorate 56(twf1) Binding 0
+                              Decorate 56(twf1) Binding 2
                               Decorate 63(twf4) DescriptorSet 0
-                              Decorate 63(twf4) Binding 0
+                              Decorate 63(twf4) Binding 3
                               Decorate 71(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out
index d4ab66e..b20ef8a 100644
--- a/Test/baseResults/hlsl.typedef.frag.out
+++ b/Test/baseResults/hlsl.typedef.frag.out
@@ -2,7 +2,7 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:4  Function Definition: ShaderFunction(vf4;i1; ( temp 4-component vector of float)
+0:4  Function Definition: @ShaderFunction(vf4;i1; ( temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' ( in 4-component vector of float)
 0:4      'ii' ( in int)
@@ -34,17 +34,33 @@
 0:10              add ( temp int)
 0:10                'i' ( temp int)
 0:10                'j' ( temp int)
+0:4  Function Definition: ShaderFunction( ( temp void)
+0:4    Function Parameters: 
+0:?     Sequence
+0:4      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:4      move second child to first child ( temp int)
+0:?         'ii' ( temp int)
+0:?         'ii' (layout( location=1) flat in int)
+0:4      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4        Function Call: @ShaderFunction(vf4;i1; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
+0:?           'ii' ( temp int)
 0:?   Linker Objects
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
+0:?     'ii' (layout( location=1) flat in int)
 
 
 Linked fragment stage:
 
-WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:4  Function Definition: ShaderFunction(vf4;i1; ( temp 4-component vector of float)
+0:4  Function Definition: @ShaderFunction(vf4;i1; ( temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' ( in 4-component vector of float)
 0:4      'ii' ( in int)
@@ -76,25 +92,53 @@
 0:10              add ( temp int)
 0:10                'i' ( temp int)
 0:10                'j' ( temp int)
+0:4  Function Definition: ShaderFunction( ( temp void)
+0:4    Function Parameters: 
+0:?     Sequence
+0:4      move second child to first child ( temp 4-component vector of float)
+0:?         'input' ( temp 4-component vector of float)
+0:?         'input' (layout( location=0) in 4-component vector of float)
+0:4      move second child to first child ( temp int)
+0:?         'ii' ( temp int)
+0:?         'ii' (layout( location=1) flat in int)
+0:4      move second child to first child ( temp 4-component vector of float)
+0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:4        Function Call: @ShaderFunction(vf4;i1; ( temp 4-component vector of float)
+0:?           'input' ( temp 4-component vector of float)
+0:?           'ii' ( temp int)
 0:?   Linker Objects
+0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'input' (layout( location=0) in 4-component vector of float)
+0:?     'ii' (layout( location=1) flat in int)
 
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 34
+// Id's are bound by 49
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction"
+                              EntryPoint Fragment 4  "ShaderFunction" 36 40 43
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
-                              Name 4  "PixelShaderFunction"
-                              Name 14  "ShaderFunction(vf4;i1;"
+                              Name 4  "ShaderFunction"
+                              Name 14  "@ShaderFunction(vf4;i1;"
                               Name 12  "input"
                               Name 13  "ii"
                               Name 16  "a1"
                               Name 19  "i"
                               Name 21  "j"
+                              Name 34  "input"
+                              Name 36  "input"
+                              Name 38  "ii"
+                              Name 40  "ii"
+                              Name 43  "@entryPointOutput"
+                              Name 44  "param"
+                              Name 46  "param"
+                              Decorate 36(input) Location 0
+                              Decorate 40(ii) Flat
+                              Decorate 40(ii) Location 1
+                              Decorate 43(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -106,11 +150,31 @@
               17:    6(float) Constant 1065353216
               18:    7(fvec4) ConstantComposite 17 17 17 17
               20:      9(int) Constant 2
-4(PixelShaderFunction):           2 Function None 3
+              35:             TypePointer Input 7(fvec4)
+       36(input):     35(ptr) Variable Input
+              39:             TypePointer Input 9(int)
+          40(ii):     39(ptr) Variable Input
+              42:             TypePointer Output 7(fvec4)
+43(@entryPointOutput):     42(ptr) Variable Output
+4(ShaderFunction):           2 Function None 3
                5:             Label
+       34(input):      8(ptr) Variable Function
+          38(ii):     10(ptr) Variable Function
+       44(param):      8(ptr) Variable Function
+       46(param):     10(ptr) Variable Function
+              37:    7(fvec4) Load 36(input)
+                              Store 34(input) 37
+              41:      9(int) Load 40(ii)
+                              Store 38(ii) 41
+              45:    7(fvec4) Load 34(input)
+                              Store 44(param) 45
+              47:      9(int) Load 38(ii)
+                              Store 46(param) 47
+              48:    7(fvec4) FunctionCall 14(@ShaderFunction(vf4;i1;) 44(param) 46(param)
+                              Store 43(@entryPointOutput) 48
                               Return
                               FunctionEnd
-14(ShaderFunction(vf4;i1;):    7(fvec4) Function None 11
+14(@ShaderFunction(vf4;i1;):    7(fvec4) Function None 11
        12(input):      8(ptr) FunctionParameter
           13(ii):     10(ptr) FunctionParameter
               15:             Label
diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out
index 4658338..be98e4d 100644
--- a/Test/baseResults/rayQuery.rgen.out
+++ b/Test/baseResults/rayQuery.rgen.out
@@ -28,6 +28,8 @@
                               MemberDecorate 26(block) 0 Offset 0
                               MemberDecorate 26(block) 1 Offset 16
                               Decorate 26(block) BufferBlock
+                              Decorate 28 DescriptorSet 0
+                              Decorate 28 Binding 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out
index e985def..ca96d9a 100644
--- a/Test/baseResults/remap.basic.dcefunc.frag.out
+++ b/Test/baseResults/remap.basic.dcefunc.frag.out
@@ -12,6 +12,8 @@
                               Name 4  "main"
                               Name 17  "outf4"
                               Name 19  "inf"
+                              Decorate 17(outf4) Location 0
+                              Decorate 19(inf) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/remap.basic.everything.frag.out b/Test/baseResults/remap.basic.everything.frag.out
index 0f7034a..4498e4a 100644
--- a/Test/baseResults/remap.basic.everything.frag.out
+++ b/Test/baseResults/remap.basic.everything.frag.out
@@ -8,6 +8,8 @@
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 5663  "main" 4539 3773
                               ExecutionMode 5663 OriginUpperLeft
+                              Decorate 4539 Location 0
+                              Decorate 3773 Location 0
                8:             TypeVoid
             1282:             TypeFunction 8
               13:             TypeFloat 32
diff --git a/Test/baseResults/remap.basic.none.frag.out b/Test/baseResults/remap.basic.none.frag.out
index 44790dd..998357a 100644
--- a/Test/baseResults/remap.basic.none.frag.out
+++ b/Test/baseResults/remap.basic.none.frag.out
@@ -13,6 +13,8 @@
                               Name 9  "dead_fn("
                               Name 17  "outf4"
                               Name 19  "inf"
+                              Decorate 17(outf4) Location 0
+                              Decorate 19(inf) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/remap.basic.strip.frag.out b/Test/baseResults/remap.basic.strip.frag.out
index 05f16ba..fc8e274 100644
--- a/Test/baseResults/remap.basic.strip.frag.out
+++ b/Test/baseResults/remap.basic.strip.frag.out
@@ -8,6 +8,8 @@
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 17 19
                               ExecutionMode 4 OriginUpperLeft
+                              Decorate 17 Location 0
+                              Decorate 19 Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
index b9ce55e..56674e6 100644
--- a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
+++ b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
@@ -17,27 +17,27 @@
                               Decorate 3305 DescriptorSet 0
                               Decorate 3305 Binding 0
                               Decorate 4743 DescriptorSet 0
-                              Decorate 4743 Binding 0
+                              Decorate 4743 Binding 2
                               Decorate 4807 DescriptorSet 0
-                              Decorate 4807 Binding 0
+                              Decorate 4807 Binding 3
                               Decorate 5042 DescriptorSet 0
-                              Decorate 5042 Binding 0
+                              Decorate 5042 Binding 4
                               Decorate 5058 DescriptorSet 0
-                              Decorate 5058 Binding 0
+                              Decorate 5058 Binding 5
                               Decorate 5122 DescriptorSet 0
-                              Decorate 5122 Binding 0
+                              Decorate 5122 Binding 6
                               Decorate 3967 DescriptorSet 0
-                              Decorate 3967 Binding 0
+                              Decorate 3967 Binding 7
                               Decorate 3983 DescriptorSet 0
-                              Decorate 3983 Binding 0
+                              Decorate 3983 Binding 8
                               Decorate 4047 DescriptorSet 0
-                              Decorate 4047 Binding 0
+                              Decorate 4047 Binding 9
                               Decorate 3789 DescriptorSet 0
-                              Decorate 3789 Binding 0
+                              Decorate 3789 Binding 10
                               Decorate 3805 DescriptorSet 0
-                              Decorate 3805 Binding 0
+                              Decorate 3805 Binding 11
                               Decorate 3869 DescriptorSet 0
-                              Decorate 3869 Binding 0
+                              Decorate 3869 Binding 12
                               Decorate 4253 Location 0
                               Decorate 3709 BuiltIn FragDepth
                8:             TypeVoid
diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
index 71b7de0..8fe6de7 100644
--- a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
+++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
@@ -69,27 +69,27 @@
                               Decorate 49(g_sSamp) DescriptorSet 0
                               Decorate 49(g_sSamp) Binding 0
                               Decorate 60(g_tTex1di4) DescriptorSet 0
-                              Decorate 60(g_tTex1di4) Binding 0
+                              Decorate 60(g_tTex1di4) Binding 2
                               Decorate 73(g_tTex1du4) DescriptorSet 0
-                              Decorate 73(g_tTex1du4) Binding 0
+                              Decorate 73(g_tTex1du4) Binding 3
                               Decorate 83(g_tTex2df4) DescriptorSet 0
-                              Decorate 83(g_tTex2df4) Binding 0
+                              Decorate 83(g_tTex2df4) Binding 4
                               Decorate 94(g_tTex2di4) DescriptorSet 0
-                              Decorate 94(g_tTex2di4) Binding 0
+                              Decorate 94(g_tTex2di4) Binding 5
                               Decorate 105(g_tTex2du4) DescriptorSet 0
-                              Decorate 105(g_tTex2du4) Binding 0
+                              Decorate 105(g_tTex2du4) Binding 6
                               Decorate 117(g_tTex3df4) DescriptorSet 0
-                              Decorate 117(g_tTex3df4) Binding 0
+                              Decorate 117(g_tTex3df4) Binding 7
                               Decorate 128(g_tTex3di4) DescriptorSet 0
-                              Decorate 128(g_tTex3di4) Binding 0
+                              Decorate 128(g_tTex3di4) Binding 8
                               Decorate 138(g_tTex3du4) DescriptorSet 0
-                              Decorate 138(g_tTex3du4) Binding 0
+                              Decorate 138(g_tTex3du4) Binding 9
                               Decorate 151(g_tTexcdf4) DescriptorSet 0
-                              Decorate 151(g_tTexcdf4) Binding 0
+                              Decorate 151(g_tTexcdf4) Binding 10
                               Decorate 160(g_tTexcdi4) DescriptorSet 0
-                              Decorate 160(g_tTexcdi4) Binding 0
+                              Decorate 160(g_tTexcdi4) Binding 11
                               Decorate 169(g_tTexcdu4) DescriptorSet 0
-                              Decorate 169(g_tTexcdu4) Binding 0
+                              Decorate 169(g_tTexcdu4) Binding 12
                               Decorate 188(@entryPointOutput.Color) Location 0
                               Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth
                               Decorate 195(g_sSamp2d) DescriptorSet 0
diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
index c65d237..a3e0b84 100644
--- a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
+++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
@@ -17,27 +17,27 @@
                               Decorate 49 DescriptorSet 0
                               Decorate 49 Binding 0
                               Decorate 60 DescriptorSet 0
-                              Decorate 60 Binding 0
+                              Decorate 60 Binding 2
                               Decorate 73 DescriptorSet 0
-                              Decorate 73 Binding 0
+                              Decorate 73 Binding 3
                               Decorate 83 DescriptorSet 0
-                              Decorate 83 Binding 0
+                              Decorate 83 Binding 4
                               Decorate 94 DescriptorSet 0
-                              Decorate 94 Binding 0
+                              Decorate 94 Binding 5
                               Decorate 105 DescriptorSet 0
-                              Decorate 105 Binding 0
+                              Decorate 105 Binding 6
                               Decorate 117 DescriptorSet 0
-                              Decorate 117 Binding 0
+                              Decorate 117 Binding 7
                               Decorate 128 DescriptorSet 0
-                              Decorate 128 Binding 0
+                              Decorate 128 Binding 8
                               Decorate 138 DescriptorSet 0
-                              Decorate 138 Binding 0
+                              Decorate 138 Binding 9
                               Decorate 151 DescriptorSet 0
-                              Decorate 151 Binding 0
+                              Decorate 151 Binding 10
                               Decorate 160 DescriptorSet 0
-                              Decorate 160 Binding 0
+                              Decorate 160 Binding 11
                               Decorate 169 DescriptorSet 0
-                              Decorate 169 Binding 0
+                              Decorate 169 Binding 12
                               Decorate 188 Location 0
                               Decorate 192 BuiltIn FragDepth
                               Decorate 195 DescriptorSet 0
diff --git a/Test/baseResults/remap.if.everything.frag.out b/Test/baseResults/remap.if.everything.frag.out
index 26cc3dc..5e3a6a2 100644
--- a/Test/baseResults/remap.if.everything.frag.out
+++ b/Test/baseResults/remap.if.everything.frag.out
@@ -8,6 +8,8 @@
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 5663  "main" 3773 4539
                               ExecutionMode 5663 OriginUpperLeft
+                              Decorate 3773 Location 0
+                              Decorate 4539 Location 0
                8:             TypeVoid
             1282:             TypeFunction 8
               13:             TypeFloat 32
diff --git a/Test/baseResults/remap.if.none.frag.out b/Test/baseResults/remap.if.none.frag.out
index 48e8587..7e7beda 100644
--- a/Test/baseResults/remap.if.none.frag.out
+++ b/Test/baseResults/remap.if.none.frag.out
@@ -12,6 +12,8 @@
                               Name 4  "main"
                               Name 8  "inf"
                               Name 17  "outf4"
+                              Decorate 8(inf) Location 0
+                              Decorate 17(outf4) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/remap.similar_1a.everything.frag.out b/Test/baseResults/remap.similar_1a.everything.frag.out
index 6d5ce1c..d8cea94 100644
--- a/Test/baseResults/remap.similar_1a.everything.frag.out
+++ b/Test/baseResults/remap.similar_1a.everything.frag.out
@@ -9,6 +9,9 @@
                               EntryPoint Fragment 5663  "main" 4201 4539 3773
                               ExecutionMode 5663 OriginUpperLeft
                               Decorate 4201 Flat
+                              Decorate 4201 Location 1
+                              Decorate 4539 Location 0
+                              Decorate 3773 Location 0
                8:             TypeVoid
             1282:             TypeFunction 8
               12:             TypeInt 32 1
diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out
index 457f1be..0ad0a71 100644
--- a/Test/baseResults/remap.similar_1a.none.frag.out
+++ b/Test/baseResults/remap.similar_1a.none.frag.out
@@ -23,6 +23,9 @@
                               Name 78  "param"
                               Name 82  "param"
                               Decorate 53(ini4) Flat
+                              Decorate 53(ini4) Location 1
+                              Decorate 73(outf4) Location 0
+                              Decorate 75(inf) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/remap.similar_1b.everything.frag.out b/Test/baseResults/remap.similar_1b.everything.frag.out
index 67425c6..f60415f 100644
--- a/Test/baseResults/remap.similar_1b.everything.frag.out
+++ b/Test/baseResults/remap.similar_1b.everything.frag.out
@@ -9,6 +9,9 @@
                               EntryPoint Fragment 5663  "main" 4201 4539 3773
                               ExecutionMode 5663 OriginUpperLeft
                               Decorate 4201 Flat
+                              Decorate 4201 Location 0
+                              Decorate 4539 Location 0
+                              Decorate 3773 Location 1
                8:             TypeVoid
             1282:             TypeFunction 8
               12:             TypeInt 32 1
diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out
index fe021e0..011afaa 100644
--- a/Test/baseResults/remap.similar_1b.none.frag.out
+++ b/Test/baseResults/remap.similar_1b.none.frag.out
@@ -23,6 +23,9 @@
                               Name 83  "param"
                               Name 87  "param"
                               Decorate 58(ini4) Flat
+                              Decorate 58(ini4) Location 0
+                              Decorate 78(outf4) Location 0
+                              Decorate 80(inf) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/remap.uniformarray.everything.frag.out b/Test/baseResults/remap.uniformarray.everything.frag.out
index 40429f2..5056d6f 100644
--- a/Test/baseResults/remap.uniformarray.everything.frag.out
+++ b/Test/baseResults/remap.uniformarray.everything.frag.out
@@ -8,6 +8,9 @@
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 5663  "main" 3608 4957 4339 5139
                               ExecutionMode 5663 OriginUpperLeft
+                              Decorate 3608 Location 1
+                              Decorate 4957 Location 0
+                              Decorate 4339 Location 7
                               Decorate 5139 Location 0
                8:             TypeVoid
             1282:             TypeFunction 8
diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out
index 42d55b9..0e73277 100644
--- a/Test/baseResults/remap.uniformarray.none.frag.out
+++ b/Test/baseResults/remap.uniformarray.none.frag.out
@@ -16,6 +16,9 @@
                               Name 35  "alpha"
                               Name 47  "gl_FragColor"
                               Name 52  "texSampler2D"
+                              Decorate 14(color) Location 1
+                              Decorate 25(inColor) Location 0
+                              Decorate 35(alpha) Location 7
                               Decorate 47(gl_FragColor) Location 0
                               Decorate 52(texSampler2D) DescriptorSet 0
                               Decorate 52(texSampler2D) Binding 0
diff --git a/Test/baseResults/spv.1.4.image.frag.out b/Test/baseResults/spv.1.4.image.frag.out
index 98ffdcb..0f0aeb4 100755
--- a/Test/baseResults/spv.1.4.image.frag.out
+++ b/Test/baseResults/spv.1.4.image.frag.out
@@ -26,6 +26,7 @@
                               Decorate 26(i2D) DescriptorSet 0
                               Decorate 26(i2D) Binding 1
                               Decorate 30(ic2D) Flat
+                              Decorate 30(ic2D) Location 0
                               Decorate 40(ii2D) DescriptorSet 0
                               Decorate 40(ii2D) Binding 12
                               Decorate 52(ui2D) DescriptorSet 0
@@ -36,7 +37,9 @@
                               Decorate 77(ii2DMS) Binding 13
                               Decorate 89(ui2DMS) DescriptorSet 0
                               Decorate 89(ui2DMS) Binding 13
+                              Decorate 100(fragData) Location 0
                               Decorate 103(value) Flat
+                              Decorate 103(value) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.1.4.sparseTexture.frag.out b/Test/baseResults/spv.1.4.sparseTexture.frag.out
index 3b566c7..76f455f 100755
--- a/Test/baseResults/spv.1.4.sparseTexture.frag.out
+++ b/Test/baseResults/spv.1.4.sparseTexture.frag.out
@@ -49,19 +49,26 @@
                               Name 212  "offsets"
                               Decorate 29(s2D) DescriptorSet 0
                               Decorate 29(s2D) Binding 0
+                              Decorate 33(c2) Location 0
                               Decorate 46(is2D) DescriptorSet 0
-                              Decorate 46(is2D) Binding 0
+                              Decorate 46(is2D) Binding 1
                               Decorate 63(us2D) DescriptorSet 0
-                              Decorate 63(us2D) Binding 0
+                              Decorate 63(us2D) Binding 2
                               Decorate 149(i2D) DescriptorSet 0
-                              Decorate 149(i2D) Binding 0
+                              Decorate 149(i2D) Binding 3
                               Decorate 152(ic2) Flat
+                              Decorate 152(ic2) Location 3
                               Decorate 162(ii2DMS) DescriptorSet 0
-                              Decorate 162(ii2DMS) Binding 0
+                              Decorate 162(ii2DMS) Binding 4
                               Decorate 177(ui3D) DescriptorSet 0
-                              Decorate 177(ui3D) Binding 0
+                              Decorate 177(ui3D) Binding 5
                               Decorate 181(ic3) Flat
+                              Decorate 181(ic3) Location 4
+                              Decorate 189(outColor) Location 0
+                              Decorate 206(c3) Location 1
+                              Decorate 208(c4) Location 2
                               Decorate 212(offsets) Flat
+                              Decorate 212(offsets) Location 5
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.1.4.texture.frag.out b/Test/baseResults/spv.1.4.texture.frag.out
index da3a24f..11b5845 100755
--- a/Test/baseResults/spv.1.4.texture.frag.out
+++ b/Test/baseResults/spv.1.4.texture.frag.out
@@ -21,12 +21,17 @@
                               Name 78  "color"
                               Decorate 15(texSampler2D) DescriptorSet 0
                               Decorate 15(texSampler2D) Binding 0
+                              Decorate 19(coords2D) Location 1
                               Decorate 28(itexSampler2D) DescriptorSet 0
-                              Decorate 28(itexSampler2D) Binding 0
+                              Decorate 28(itexSampler2D) Binding 1
                               Decorate 40(utexSampler2D) DescriptorSet 0
-                              Decorate 40(utexSampler2D) Binding 0
+                              Decorate 40(utexSampler2D) Binding 2
                               Decorate 51(iCoords2D) Flat
+                              Decorate 51(iCoords2D) Location 2
                               Decorate 54(iLod) Flat
+                              Decorate 54(iLod) Location 3
+                              Decorate 76(t) Location 0
+                              Decorate 78(color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.100ops.frag.out b/Test/baseResults/spv.100ops.frag.out
index d2b8f3e..17c863a 100644
--- a/Test/baseResults/spv.100ops.frag.out
+++ b/Test/baseResults/spv.100ops.frag.out
@@ -22,14 +22,17 @@
                               Decorate 13(face2) RelaxedPrecision
                               Decorate 17(z) RelaxedPrecision
                               Decorate 21(low) RelaxedPrecision
+                              Decorate 21(low) Location 0
                               Decorate 22 RelaxedPrecision
                               Decorate 23 RelaxedPrecision
                               Decorate 25 RelaxedPrecision
                               Decorate 26(high) RelaxedPrecision
+                              Decorate 26(high) Location 1
                               Decorate 27 RelaxedPrecision
                               Decorate 32 RelaxedPrecision
                               Decorate 34 RelaxedPrecision
                               Decorate 37(Color) RelaxedPrecision
+                              Decorate 37(Color) Location 0
                               Decorate 38 RelaxedPrecision
                               Decorate 39 RelaxedPrecision
                               Decorate 40 RelaxedPrecision
diff --git a/Test/baseResults/spv.130.frag.out b/Test/baseResults/spv.130.frag.out
index ca1f9e3..c8327d1 100644
--- a/Test/baseResults/spv.130.frag.out
+++ b/Test/baseResults/spv.130.frag.out
@@ -58,27 +58,34 @@
                               Name 199  "s2DRS"
                               Name 203  "s1D"
                               Name 204  "s2DS"
+                              Decorate 17(o) Location 0
                               Decorate 21(samp2D) DescriptorSet 0
-                              Decorate 21(samp2D) Binding 0
+                              Decorate 21(samp2D) Binding 2
                               Decorate 37(samp2DA) DescriptorSet 0
-                              Decorate 37(samp2DA) Binding 0
+                              Decorate 37(samp2DA) Binding 5
                               Decorate 47(samp2DR) DescriptorSet 0
-                              Decorate 47(samp2DR) Binding 0
+                              Decorate 47(samp2DR) Binding 4
                               Decorate 55(samp2DS) DescriptorSet 0
-                              Decorate 55(samp2DS) Binding 0
+                              Decorate 55(samp2DS) Binding 3
+                              Decorate 68(io) Location 1
                               Decorate 72(Sca) DescriptorSet 0
-                              Decorate 72(Sca) Binding 0
+                              Decorate 72(Sca) Binding 6
+                              Decorate 79(i) Location 0
                               Decorate 87(Isca) DescriptorSet 0
-                              Decorate 87(Isca) Binding 0
+                              Decorate 87(Isca) Binding 7
+                              Decorate 99(uo) Location 2
                               Decorate 103(Usca) DescriptorSet 0
-                              Decorate 103(Usca) Binding 0
+                              Decorate 103(Usca) Binding 8
                               Decorate 118(Scas) DescriptorSet 0
-                              Decorate 118(Scas) Binding 0
+                              Decorate 118(Scas) Binding 9
                               Decorate 167(sampC) DescriptorSet 0
-                              Decorate 167(sampC) Binding 0
+                              Decorate 167(sampC) Binding 1
                               Decorate 173(gl_ClipDistance) BuiltIn ClipDistance
                               Decorate 184(fflat) Flat
+                              Decorate 184(fflat) Location 1
+                              Decorate 185(fsmooth) Location 2
                               Decorate 186(fnop) NoPerspective
+                              Decorate 186(fnop) Location 3
                               Decorate 193(bounds) DescriptorSet 0
                               Decorate 193(bounds) Binding 0
                               Decorate 194(s2D) DescriptorSet 0
diff --git a/Test/baseResults/spv.140.frag.out b/Test/baseResults/spv.140.frag.out
index 45b7510..750cf74 100644
--- a/Test/baseResults/spv.140.frag.out
+++ b/Test/baseResults/spv.140.frag.out
@@ -36,11 +36,13 @@
                               MemberName 92(bi) 0  "v"
                               Name 95  "bname"
                               Decorate 14(gl_FrontFacing) BuiltIn FrontFacing
+                              Decorate 23(o) Location 0
                               Decorate 28(gl_ClipDistance) BuiltIn ClipDistance
+                              Decorate 38(k) Location 0
                               Decorate 50(sampR) DescriptorSet 0
                               Decorate 50(sampR) Binding 0
                               Decorate 58(sampB) DescriptorSet 0
-                              Decorate 58(sampB) Binding 0
+                              Decorate 58(sampB) Binding 1
                               Decorate 82(samp2Da) DescriptorSet 0
                               Decorate 82(samp2Da) Binding 0
                               Decorate 85 ArrayStride 64
diff --git a/Test/baseResults/spv.150.geom.out b/Test/baseResults/spv.150.geom.out
index ab05846..235e11f 100644
--- a/Test/baseResults/spv.150.geom.out
+++ b/Test/baseResults/spv.150.geom.out
@@ -38,8 +38,10 @@
                               MemberName 68(toFragment) 0  "color"
                               Name 70  "toF"
                               Decorate 8(fromVertex) Block
+                              Decorate 10 Location 1
                               Decorate 10 Stream 3
                               Decorate 13(fromVertex) Block
+                              Decorate 18(fromV) Location 0
                               MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position
                               MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
                               MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
@@ -55,6 +57,7 @@
                               Decorate 51(gl_Layer) Stream 0
                               Decorate 51(gl_Layer) BuiltIn Layer
                               Decorate 68(toFragment) Block
+                              Decorate 70(toF) Location 0
                               Decorate 70(toF) Stream 3
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.150.vert.out b/Test/baseResults/spv.150.vert.out
index 9e1c9f4..2e3e95a 100644
--- a/Test/baseResults/spv.150.vert.out
+++ b/Test/baseResults/spv.150.vert.out
@@ -33,8 +33,12 @@
                               MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
                               MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
                               Decorate 11(gl_PerVertex) Block
+                              Decorate 17(iv4) Location 0
+                              Decorate 23(ps) Location 1
+                              Decorate 38(s2out) Location 0
                               Decorate 47(s2D) DescriptorSet 0
                               Decorate 47(s2D) Binding 0
+                              Decorate 62(ui) Location 2
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.16bitstorage-int.frag.out b/Test/baseResults/spv.16bitstorage-int.frag.out
index 80733ce..725edce 100644
--- a/Test/baseResults/spv.16bitstorage-int.frag.out
+++ b/Test/baseResults/spv.16bitstorage-int.frag.out
@@ -93,7 +93,7 @@
                               MemberDecorate 17(B2) 7 Offset 472
                               Decorate 17(B2) BufferBlock
                               Decorate 19(b2) DescriptorSet 0
-                              Decorate 19(b2) Binding 0
+                              Decorate 19(b2) Binding 1
                               Decorate 22 ArrayStride 16
                               MemberDecorate 23(S) 0 Offset 0
                               MemberDecorate 23(S) 1 Offset 4
@@ -126,7 +126,7 @@
                               MemberDecorate 49(B5) 7 Offset 1696
                               Decorate 49(B5) Block
                               Decorate 51(b5) DescriptorSet 0
-                              Decorate 51(b5) Binding 0
+                              Decorate 51(b5) Binding 2
                               MemberDecorate 88(S2) 0 ColMajor
                               MemberDecorate 88(S2) 0 Offset 0
                               MemberDecorate 88(S2) 0 MatrixStride 16
@@ -137,7 +137,7 @@
                               MemberDecorate 90(B4) 1 Offset 80
                               Decorate 90(B4) BufferBlock
                               Decorate 92(b4) DescriptorSet 0
-                              Decorate 92(b4) Binding 0
+                              Decorate 92(b4) Binding 4
                               MemberDecorate 93(S2) 0 RowMajor
                               MemberDecorate 93(S2) 0 Offset 0
                               MemberDecorate 93(S2) 0 MatrixStride 16
@@ -146,7 +146,7 @@
                               MemberDecorate 94(B3) 0 Offset 0
                               Decorate 94(B3) BufferBlock
                               Decorate 96(b3) DescriptorSet 0
-                              Decorate 96(b3) Binding 0
+                              Decorate 96(b3) Binding 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 16 1
diff --git a/Test/baseResults/spv.16bitstorage-uint.frag.out b/Test/baseResults/spv.16bitstorage-uint.frag.out
index d4b1b75..d48d231 100644
--- a/Test/baseResults/spv.16bitstorage-uint.frag.out
+++ b/Test/baseResults/spv.16bitstorage-uint.frag.out
@@ -93,7 +93,7 @@
                               MemberDecorate 17(B2) 7 Offset 472
                               Decorate 17(B2) BufferBlock
                               Decorate 19(b2) DescriptorSet 0
-                              Decorate 19(b2) Binding 0
+                              Decorate 19(b2) Binding 1
                               Decorate 22 ArrayStride 16
                               MemberDecorate 23(S) 0 Offset 0
                               MemberDecorate 23(S) 1 Offset 4
@@ -126,7 +126,7 @@
                               MemberDecorate 49(B5) 7 Offset 1696
                               Decorate 49(B5) Block
                               Decorate 51(b5) DescriptorSet 0
-                              Decorate 51(b5) Binding 0
+                              Decorate 51(b5) Binding 2
                               MemberDecorate 89(S2) 0 ColMajor
                               MemberDecorate 89(S2) 0 Offset 0
                               MemberDecorate 89(S2) 0 MatrixStride 16
@@ -137,7 +137,7 @@
                               MemberDecorate 91(B4) 1 Offset 80
                               Decorate 91(B4) BufferBlock
                               Decorate 93(b4) DescriptorSet 0
-                              Decorate 93(b4) Binding 0
+                              Decorate 93(b4) Binding 4
                               MemberDecorate 94(S2) 0 RowMajor
                               MemberDecorate 94(S2) 0 Offset 0
                               MemberDecorate 94(S2) 0 MatrixStride 16
@@ -146,7 +146,7 @@
                               MemberDecorate 95(B3) 0 Offset 0
                               Decorate 95(B3) BufferBlock
                               Decorate 97(b3) DescriptorSet 0
-                              Decorate 97(b3) Binding 0
+                              Decorate 97(b3) Binding 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 16 0
diff --git a/Test/baseResults/spv.16bitstorage.frag.out b/Test/baseResults/spv.16bitstorage.frag.out
index c73eb59..d25fc5d 100644
--- a/Test/baseResults/spv.16bitstorage.frag.out
+++ b/Test/baseResults/spv.16bitstorage.frag.out
@@ -93,7 +93,7 @@
                               MemberDecorate 17(B2) 7 Offset 472
                               Decorate 17(B2) BufferBlock
                               Decorate 19(b2) DescriptorSet 0
-                              Decorate 19(b2) Binding 0
+                              Decorate 19(b2) Binding 1
                               Decorate 22 ArrayStride 16
                               MemberDecorate 23(S) 0 Offset 0
                               MemberDecorate 23(S) 1 Offset 4
@@ -126,7 +126,7 @@
                               MemberDecorate 50(B5) 7 Offset 1696
                               Decorate 50(B5) Block
                               Decorate 52(b5) DescriptorSet 0
-                              Decorate 52(b5) Binding 0
+                              Decorate 52(b5) Binding 2
                               MemberDecorate 88(S2) 0 ColMajor
                               MemberDecorate 88(S2) 0 Offset 0
                               MemberDecorate 88(S2) 0 MatrixStride 16
@@ -137,7 +137,7 @@
                               MemberDecorate 90(B4) 1 Offset 80
                               Decorate 90(B4) BufferBlock
                               Decorate 92(b4) DescriptorSet 0
-                              Decorate 92(b4) Binding 0
+                              Decorate 92(b4) Binding 4
                               MemberDecorate 93(S2) 0 RowMajor
                               MemberDecorate 93(S2) 0 Offset 0
                               MemberDecorate 93(S2) 0 MatrixStride 16
@@ -146,7 +146,7 @@
                               MemberDecorate 94(B3) 0 Offset 0
                               Decorate 94(B3) BufferBlock
                               Decorate 96(b3) DescriptorSet 0
-                              Decorate 96(b3) Binding 0
+                              Decorate 96(b3) Binding 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 16
diff --git a/Test/baseResults/spv.300BuiltIns.vert.out b/Test/baseResults/spv.300BuiltIns.vert.out
index 2633645..01359a7 100644
--- a/Test/baseResults/spv.300BuiltIns.vert.out
+++ b/Test/baseResults/spv.300BuiltIns.vert.out
@@ -21,6 +21,7 @@
                               MemberDecorate 8(gl_PerVertex) 1 BuiltIn PointSize
                               Decorate 8(gl_PerVertex) Block
                               Decorate 14(ps) RelaxedPrecision
+                              Decorate 14(ps) Location 0
                               Decorate 15 RelaxedPrecision
                               Decorate 21(gl_VertexIndex) BuiltIn VertexIndex
                               Decorate 30 RelaxedPrecision
diff --git a/Test/baseResults/spv.300layout.frag.out b/Test/baseResults/spv.300layout.frag.out
index db06955..37e50a5 100644
--- a/Test/baseResults/spv.300layout.frag.out
+++ b/Test/baseResults/spv.300layout.frag.out
@@ -21,14 +21,17 @@
                               Decorate 9(c) RelaxedPrecision
                               Decorate 9(c) Location 7
                               Decorate 11(color) RelaxedPrecision
+                              Decorate 11(color) Location 1
                               Decorate 12 RelaxedPrecision
                               MemberDecorate 13(S) 0 RelaxedPrecision
                               MemberDecorate 13(S) 1 RelaxedPrecision
+                              Decorate 15(s) Location 2
                               Decorate 19 RelaxedPrecision
                               Decorate 20 RelaxedPrecision
                               Decorate 26(p) RelaxedPrecision
                               Decorate 26(p) Location 3
                               Decorate 29(pos) RelaxedPrecision
+                              Decorate 29(pos) Location 0
                               Decorate 30 RelaxedPrecision
                               Decorate 33 RelaxedPrecision
                               Decorate 34 RelaxedPrecision
diff --git a/Test/baseResults/spv.300layout.vert.out b/Test/baseResults/spv.300layout.vert.out
index c97d217..8c1209d 100644
--- a/Test/baseResults/spv.300layout.vert.out
+++ b/Test/baseResults/spv.300layout.vert.out
@@ -36,6 +36,7 @@
                               MemberName 126(S) 0  "c"
                               MemberName 126(S) 1  "f"
                               Name 128  "s"
+                              Decorate 9(pos) Location 0
                               Decorate 11(p) Location 3
                               MemberDecorate 17(Transform) 0 RowMajor
                               MemberDecorate 17(Transform) 0 Offset 0
@@ -63,17 +64,21 @@
                               MemberDecorate 45(T3) 3 Offset 2048
                               Decorate 45(T3) Block
                               Decorate 47 DescriptorSet 0
-                              Decorate 47 Binding 0
+                              Decorate 47 Binding 2
                               MemberDecorate 78(T2) 0 Offset 0
                               MemberDecorate 78(T2) 1 RowMajor
                               MemberDecorate 78(T2) 1 Offset 16
                               MemberDecorate 78(T2) 1 MatrixStride 16
                               Decorate 78(T2) Block
                               Decorate 80 DescriptorSet 0
-                              Decorate 80 Binding 0
+                              Decorate 80 Binding 1
+                              Decorate 98(color) Location 1
                               Decorate 100(c) Location 7
                               Decorate 108(iout) Flat
+                              Decorate 108(iout) Location 2
+                              Decorate 114(uiuin) Location 0
                               Decorate 120(aiv2) Location 9
+                              Decorate 128(s) Location 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.300layoutp.vert.out b/Test/baseResults/spv.300layoutp.vert.out
index 2b1ef83..e7f0f5e 100644
--- a/Test/baseResults/spv.300layoutp.vert.out
+++ b/Test/baseResults/spv.300layoutp.vert.out
@@ -36,6 +36,7 @@
                               MemberName 78(S) 0  "c"
                               MemberName 78(S) 1  "f"
                               Name 80  "s"
+                              Decorate 9(pos) Location 0
                               Decorate 11(p) Location 3
                               MemberDecorate 17(Transform) 0 RowMajor
                               MemberDecorate 17(Transform) 0 Offset 0
@@ -63,17 +64,20 @@
                               MemberDecorate 33(T3) 3 Offset 160
                               Decorate 33(T3) Block
                               Decorate 35 DescriptorSet 0
-                              Decorate 35 Binding 0
+                              Decorate 35 Binding 2
                               MemberDecorate 42(T2) 0 Offset 0
                               MemberDecorate 42(T2) 1 RowMajor
                               MemberDecorate 42(T2) 1 Offset 16
                               MemberDecorate 42(T2) 1 MatrixStride 16
                               Decorate 42(T2) Block
                               Decorate 44 DescriptorSet 0
-                              Decorate 44 Binding 0
+                              Decorate 44 Binding 1
+                              Decorate 50(color) Location 1
                               Decorate 52(c) Location 7
                               Decorate 60(iout) Flat
+                              Decorate 60(iout) Location 2
                               Decorate 72(aiv2) Location 9
+                              Decorate 80(s) Location 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.310.bitcast.frag.out b/Test/baseResults/spv.310.bitcast.frag.out
index e4f62b4..1c06733 100644
--- a/Test/baseResults/spv.310.bitcast.frag.out
+++ b/Test/baseResults/spv.310.bitcast.frag.out
@@ -26,34 +26,46 @@
                               Name 139  "u3"
                               Name 148  "u4"
                               Decorate 14(f1) RelaxedPrecision
+                              Decorate 14(f1) Location 8
                               Decorate 15 RelaxedPrecision
                               Decorate 26(f2) RelaxedPrecision
+                              Decorate 26(f2) Location 9
                               Decorate 27 RelaxedPrecision
                               Decorate 37(f3) RelaxedPrecision
+                              Decorate 37(f3) Location 10
                               Decorate 38 RelaxedPrecision
+                              Decorate 48(f4) Location 11
                               Decorate 57 RelaxedPrecision
                               Decorate 64 RelaxedPrecision
                               Decorate 72 RelaxedPrecision
                               Decorate 89(i1) RelaxedPrecision
                               Decorate 89(i1) Flat
+                              Decorate 89(i1) Location 0
                               Decorate 90 RelaxedPrecision
                               Decorate 98(i2) RelaxedPrecision
                               Decorate 98(i2) Flat
+                              Decorate 98(i2) Location 1
                               Decorate 99 RelaxedPrecision
                               Decorate 107(i3) RelaxedPrecision
                               Decorate 107(i3) Flat
+                              Decorate 107(i3) Location 2
                               Decorate 108 RelaxedPrecision
                               Decorate 116(i4) Flat
+                              Decorate 116(i4) Location 3
                               Decorate 122(u1) RelaxedPrecision
                               Decorate 122(u1) Flat
+                              Decorate 122(u1) Location 4
                               Decorate 123 RelaxedPrecision
                               Decorate 130(u2) RelaxedPrecision
                               Decorate 130(u2) Flat
+                              Decorate 130(u2) Location 5
                               Decorate 131 RelaxedPrecision
                               Decorate 139(u3) RelaxedPrecision
                               Decorate 139(u3) Flat
+                              Decorate 139(u3) Location 6
                               Decorate 140 RelaxedPrecision
                               Decorate 148(u4) Flat
+                              Decorate 148(u4) Location 7
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out
index 3b90d41..6451bf6 100644
--- a/Test/baseResults/spv.310.comp.out
+++ b/Test/baseResults/spv.310.comp.out
@@ -43,13 +43,13 @@
                               MemberDecorate 23(outbna) 1 Offset 16
                               Decorate 23(outbna) BufferBlock
                               Decorate 25(outbnamena) DescriptorSet 0
-                              Decorate 25(outbnamena) Binding 0
+                              Decorate 25(outbnamena) Binding 1
                               Decorate 47 ArrayStride 16
                               MemberDecorate 48(outs) 0 Offset 0
                               MemberDecorate 48(outs) 1 Offset 16
                               Decorate 48(outs) BufferBlock
                               Decorate 50(outnames) DescriptorSet 0
-                              Decorate 50(outnames) Binding 0
+                              Decorate 50(outnames) Binding 2
                               Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId
                               Decorate 65(gl_DeviceIndex) BuiltIn DeviceIndex
                               Decorate 71 BuiltIn WorkgroupSize
diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out
index b2f4a16..a472461 100644
--- a/Test/baseResults/spv.400.frag.out
+++ b/Test/baseResults/spv.400.frag.out
@@ -53,19 +53,26 @@
                               Name 1107  "u"
                               Name 1115  "id"
                               Name 1116  "gl_PrimitiveID"
+                              Decorate 13(outp) Location 1
                               Decorate 17(u2drs) DescriptorSet 0
-                              Decorate 17(u2drs) Binding 0
+                              Decorate 17(u2drs) Binding 3
                               Decorate 1025(arrayedSampler) DescriptorSet 0
                               Decorate 1025(arrayedSampler) Binding 0
                               Decorate 1027(i) Flat
+                              Decorate 1027(i) Location 1
+                              Decorate 1033(c2D) Location 0
                               Decorate 1038(gl_ClipDistance) BuiltIn ClipDistance
+                              Decorate 1050(uoutp) Location 3
                               Decorate 1054(samp2dr) DescriptorSet 0
-                              Decorate 1054(samp2dr) Binding 0
+                              Decorate 1054(samp2dr) Binding 1
+                              Decorate 1076(ioutp) Location 2
                               Decorate 1080(isamp2DA) DescriptorSet 0
-                              Decorate 1080(isamp2DA) Binding 0
+                              Decorate 1080(isamp2DA) Binding 2
                               Decorate 1097(gl_FragCoord) BuiltIn FragCoord
                               Decorate 1099(vl2) Location 6
+                              Decorate 1105(uo) Location 0
                               Decorate 1107(u) Flat
+                              Decorate 1107(u) Location 2
                               Decorate 1116(gl_PrimitiveID) Flat
                               Decorate 1116(gl_PrimitiveID) BuiltIn PrimitiveId
                2:             TypeVoid
diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out
index e84b420..658e8d8 100644
--- a/Test/baseResults/spv.400.tesc.out
+++ b/Test/baseResults/spv.400.tesc.out
@@ -59,6 +59,9 @@
                               Decorate 72(gl_TessLevelInner) Patch
                               Decorate 72(gl_TessLevelInner) BuiltIn TessLevelInner
                               Decorate 78(patchOut) Patch
+                              Decorate 78(patchOut) Location 0
+                              Decorate 82(inb) Location 0
+                              Decorate 83(ind) Location 1
                               Decorate 86(ivla) Location 3
                               Decorate 87(ivlb) Location 4
                               Decorate 90(ovla) Location 3
diff --git a/Test/baseResults/spv.400.tese.out b/Test/baseResults/spv.400.tese.out
index 5705fbd..d66da88 100644
--- a/Test/baseResults/spv.400.tese.out
+++ b/Test/baseResults/spv.400.tese.out
@@ -68,8 +68,13 @@
                               MemberDecorate 64(gl_PerVertex) 2 BuiltIn ClipDistance
                               Decorate 64(gl_PerVertex) Block
                               Decorate 75(patchIn) Patch
+                              Decorate 75(patchIn) Location 0
+                              Decorate 79(inb) Location 1
+                              Decorate 80(ind) Location 2
                               Decorate 81(testblb) Block
+                              Decorate 84(blb) Location 3
                               Decorate 85(testbld) Block
+                              Decorate 88(bld) Location 4
                               Decorate 91(ivla) Location 23
                               Decorate 92(ivlb) Location 24
                               Decorate 95(ovla) Location 23
diff --git a/Test/baseResults/spv.420.geom.out b/Test/baseResults/spv.420.geom.out
index c75ae5d..e970e91 100644
--- a/Test/baseResults/spv.420.geom.out
+++ b/Test/baseResults/spv.420.geom.out
@@ -42,6 +42,7 @@
                               Decorate 33(gl_InvocationID) BuiltIn InvocationId
                               Decorate 41(s2D) DescriptorSet 0
                               Decorate 41(s2D) Binding 0
+                              Decorate 46(coord) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.430.frag.out b/Test/baseResults/spv.430.frag.out
index 96ab1e9..4450c8f 100644
--- a/Test/baseResults/spv.430.frag.out
+++ b/Test/baseResults/spv.430.frag.out
@@ -15,6 +15,7 @@
                               Name 9  "color"
                               Name 14  "gl_Layer"
                               Name 19  "gl_ViewportIndex"
+                              Decorate 9(color) Location 0
                               Decorate 14(gl_Layer) Flat
                               Decorate 14(gl_Layer) BuiltIn Layer
                               Decorate 19(gl_ViewportIndex) Flat
diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out
index 89e5b16..274cc6d 100644
--- a/Test/baseResults/spv.430.vert.out
+++ b/Test/baseResults/spv.430.vert.out
@@ -41,7 +41,12 @@
                               Name 65  "outMS"
                               MemberDecorate 10(gl_PerVertex) 0 BuiltIn ClipDistance
                               Decorate 10(gl_PerVertex) Block
+                              Decorate 23(bad) Location 0
                               Decorate 34(badorder3) Flat
+                              Decorate 34(badorder3) Location 1
+                              Decorate 38(f) Location 11
+                              Decorate 41(badorder) Location 10
+                              Decorate 42(badorder2) Location 0
                               Decorate 42(badorder2) Invariant
                               MemberDecorate 43(boundblock) 0 Offset 0
                               Decorate 43(boundblock) Block
@@ -62,6 +67,7 @@
                               Decorate 62(var) Location 0
                               MemberDecorate 63(MS) 0 Location 17
                               Decorate 63(MS) Block
+                              Decorate 65(outMS) Location 2
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.450.noRedecl.tesc.out b/Test/baseResults/spv.450.noRedecl.tesc.out
index 31c7b4d..a17e53b 100644
--- a/Test/baseResults/spv.450.noRedecl.tesc.out
+++ b/Test/baseResults/spv.450.noRedecl.tesc.out
@@ -24,6 +24,7 @@
                               MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
                               Decorate 11(gl_PerVertex) Block
                               Decorate 20(patchOut) Patch
+                              Decorate 20(patchOut) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.450.tesc.out b/Test/baseResults/spv.450.tesc.out
index 0c22d9a..1507f39 100644
--- a/Test/baseResults/spv.450.tesc.out
+++ b/Test/baseResults/spv.450.tesc.out
@@ -72,6 +72,7 @@
                               MemberDecorate 42(bn) 2 Patch
                               MemberDecorate 42(bn) 2 Location 25
                               Decorate 42(bn) Block
+                              Decorate 44 Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.460.frag.out b/Test/baseResults/spv.460.frag.out
index 067bd43..e38a584 100644
--- a/Test/baseResults/spv.460.frag.out
+++ b/Test/baseResults/spv.460.frag.out
@@ -16,6 +16,7 @@
                               Name 8  "aui"
                               Name 10  "ui"
                               Decorate 8(aui) Offset 0
+                              Decorate 8(aui) DescriptorSet 0
                               Decorate 8(aui) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out
index 54a47af..600ab3d 100644
--- a/Test/baseResults/spv.8bitstorage-int.frag.out
+++ b/Test/baseResults/spv.8bitstorage-int.frag.out
@@ -92,7 +92,7 @@
                               MemberDecorate 17(B2) 7 Offset 236
                               Decorate 17(B2) BufferBlock
                               Decorate 19(b2) DescriptorSet 0
-                              Decorate 19(b2) Binding 0
+                              Decorate 19(b2) Binding 1
                               Decorate 22 ArrayStride 16
                               MemberDecorate 23(S) 0 Offset 0
                               MemberDecorate 23(S) 1 Offset 2
@@ -125,7 +125,7 @@
                               MemberDecorate 49(B5) 7 Offset 1696
                               Decorate 49(B5) Block
                               Decorate 51(b5) DescriptorSet 0
-                              Decorate 51(b5) Binding 0
+                              Decorate 51(b5) Binding 2
                               MemberDecorate 88(S2) 0 ColMajor
                               MemberDecorate 88(S2) 0 Offset 0
                               MemberDecorate 88(S2) 0 MatrixStride 16
@@ -136,7 +136,7 @@
                               MemberDecorate 90(B4) 1 Offset 80
                               Decorate 90(B4) BufferBlock
                               Decorate 92(b4) DescriptorSet 0
-                              Decorate 92(b4) Binding 0
+                              Decorate 92(b4) Binding 4
                               MemberDecorate 93(S2) 0 RowMajor
                               MemberDecorate 93(S2) 0 Offset 0
                               MemberDecorate 93(S2) 0 MatrixStride 16
@@ -145,7 +145,7 @@
                               MemberDecorate 94(B3) 0 Offset 0
                               Decorate 94(B3) BufferBlock
                               Decorate 96(b3) DescriptorSet 0
-                              Decorate 96(b3) Binding 0
+                              Decorate 96(b3) Binding 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 8 1
diff --git a/Test/baseResults/spv.8bitstorage-uint.frag.out b/Test/baseResults/spv.8bitstorage-uint.frag.out
index 6565882..6fc3cd6 100644
--- a/Test/baseResults/spv.8bitstorage-uint.frag.out
+++ b/Test/baseResults/spv.8bitstorage-uint.frag.out
@@ -92,7 +92,7 @@
                               MemberDecorate 17(B2) 7 Offset 236
                               Decorate 17(B2) BufferBlock
                               Decorate 19(b2) DescriptorSet 0
-                              Decorate 19(b2) Binding 0
+                              Decorate 19(b2) Binding 1
                               Decorate 22 ArrayStride 16
                               MemberDecorate 23(S) 0 Offset 0
                               MemberDecorate 23(S) 1 Offset 2
@@ -125,7 +125,7 @@
                               MemberDecorate 49(B5) 7 Offset 1696
                               Decorate 49(B5) Block
                               Decorate 51(b5) DescriptorSet 0
-                              Decorate 51(b5) Binding 0
+                              Decorate 51(b5) Binding 2
                               MemberDecorate 89(S2) 0 ColMajor
                               MemberDecorate 89(S2) 0 Offset 0
                               MemberDecorate 89(S2) 0 MatrixStride 16
@@ -136,7 +136,7 @@
                               MemberDecorate 91(B4) 1 Offset 80
                               Decorate 91(B4) BufferBlock
                               Decorate 93(b4) DescriptorSet 0
-                              Decorate 93(b4) Binding 0
+                              Decorate 93(b4) Binding 4
                               MemberDecorate 94(S2) 0 RowMajor
                               MemberDecorate 94(S2) 0 Offset 0
                               MemberDecorate 94(S2) 0 MatrixStride 16
@@ -145,7 +145,7 @@
                               MemberDecorate 95(B3) 0 Offset 0
                               Decorate 95(B3) BufferBlock
                               Decorate 97(b3) DescriptorSet 0
-                              Decorate 97(b3) Binding 0
+                              Decorate 97(b3) Binding 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 8 0
diff --git a/Test/baseResults/spv.AofA.frag.out b/Test/baseResults/spv.AofA.frag.out
index c9f8b46..34f889a 100644
--- a/Test/baseResults/spv.AofA.frag.out
+++ b/Test/baseResults/spv.AofA.frag.out
@@ -30,9 +30,15 @@
                               Name 94  "uAofA"
                               MemberName 94(uAofA) 0  "f"
                               Name 98  "nameAofA"
+                              Decorate 39(outfloat) Location 0
+                              Decorate 44(g5) Location 1
                               Decorate 68(i) Flat
+                              Decorate 68(i) Location 36
                               Decorate 70(j) Flat
+                              Decorate 70(j) Location 37
                               Decorate 72(k) Flat
+                              Decorate 72(k) Location 38
+                              Decorate 78(infloat) Location 0
                               Decorate 92 ArrayStride 16
                               Decorate 93 ArrayStride 64
                               MemberDecorate 94(uAofA) 0 Offset 0
diff --git a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
index 7e62c57..3f9c93c 100644
--- a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
+++ b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
@@ -27,6 +27,7 @@
                               Decorate 8(gl_PerVertex) Block
                               Decorate 10 PassthroughNV
                               Decorate 12(Inputs) Block
+                              Decorate 14 Location 0
                               Decorate 14 PassthroughNV
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out
index ad54f6c..558897c 100644
--- a/Test/baseResults/spv.Operations.frag.out
+++ b/Test/baseResults/spv.Operations.frag.out
@@ -33,10 +33,17 @@
                               Name 564  "m2"
                               Name 580  "uiv4"
                               Name 582  "ub"
+                              Decorate 11(uv4) Location 1
                               Decorate 22(ui) Flat
+                              Decorate 22(ui) Location 3
+                              Decorate 220(uf) Location 2
                               Decorate 296(uui) Flat
+                              Decorate 296(uui) Location 5
                               Decorate 314(uuv4) Flat
+                              Decorate 314(uuv4) Location 4
+                              Decorate 539(FragColor) Location 0
                               Decorate 580(uiv4) Flat
+                              Decorate 580(uiv4) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out
index 47b7c92..28fb344 100644
--- a/Test/baseResults/spv.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.RayGenShader.rgen.out
@@ -31,6 +31,8 @@
                               MemberDecorate 37(block) 0 Offset 0
                               MemberDecorate 37(block) 1 Offset 16
                               Decorate 37(block) BufferBlock
+                              Decorate 39 DescriptorSet 0
+                              Decorate 39 Binding 2
                               Decorate 50(accNV1) DescriptorSet 0
                               Decorate 50(accNV1) Binding 1
                               Decorate 53(payload) Location 0
diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out
index 0bbcab9..f536c67 100755
--- a/Test/baseResults/spv.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.RayGenShader11.rgen.out
@@ -30,6 +30,8 @@
                               MemberDecorate 37(block) 0 Offset 0
                               MemberDecorate 37(block) 1 Offset 16
                               Decorate 37(block) Block
+                              Decorate 39 DescriptorSet 0
+                              Decorate 39 Binding 1
                               Decorate 52(payload) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out
index ce5f016..665126b 100644
--- a/Test/baseResults/spv.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out
@@ -37,6 +37,8 @@
                               MemberDecorate 34(block) 1 Offset 16
                               MemberDecorate 34(block) 2 Offset 28
                               Decorate 34(block) BufferBlock
+                              Decorate 36 DescriptorSet 0
+                              Decorate 36 Binding 2
                               Decorate 60(accNV1) DescriptorSet 0
                               Decorate 60(accNV1) Binding 1
                               Decorate 75 DecorationNonUniformEXT
diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out
index c5c71a5..29d9e88 100644
--- a/Test/baseResults/spv.accessChain.frag.out
+++ b/Test/baseResults/spv.accessChain.frag.out
@@ -71,6 +71,7 @@
                               Name 219  "param"
                               Decorate 69(OutColor) Location 0
                               Decorate 170(u) Flat
+                              Decorate 170(u) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out
index 976c747..b12cd47 100644
--- a/Test/baseResults/spv.aggOps.frag.out
+++ b/Test/baseResults/spv.aggOps.frag.out
@@ -44,6 +44,8 @@
                               Name 97  "samp2D"
                               Name 101  "coord"
                               Name 213  "color"
+                              Decorate 16(u) Location 1
+                              Decorate 41(w) Location 2
                               MemberDecorate 55(s1) 0 Offset 0
                               MemberDecorate 55(s1) 1 Offset 4
                               MemberDecorate 56(s2) 0 Offset 0
@@ -52,7 +54,7 @@
                               MemberDecorate 57(ub1) 0 Offset 0
                               Decorate 57(ub1) Block
                               Decorate 59(uName1) DescriptorSet 0
-                              Decorate 59(uName1) Binding 0
+                              Decorate 59(uName1) Binding 1
                               MemberDecorate 64(s1) 0 Offset 0
                               MemberDecorate 64(s1) 1 Offset 4
                               MemberDecorate 65(s2) 0 Offset 0
@@ -61,14 +63,16 @@
                               MemberDecorate 66(ub2) 0 Offset 0
                               Decorate 66(ub2) BufferBlock
                               Decorate 68(uName2) DescriptorSet 0
-                              Decorate 68(uName2) Binding 0
+                              Decorate 68(uName2) Binding 2
                               Decorate 97(samp2D) DescriptorSet 0
                               Decorate 97(samp2D) Binding 0
                               Decorate 101(coord) RelaxedPrecision
+                              Decorate 101(coord) Location 0
                               Decorate 102 RelaxedPrecision
                               Decorate 107 RelaxedPrecision
                               Decorate 108 RelaxedPrecision
                               Decorate 129 RelaxedPrecision
+                              Decorate 213(color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.always-discard.frag.out b/Test/baseResults/spv.always-discard.frag.out
index fb4529e..841c81e 100644
--- a/Test/baseResults/spv.always-discard.frag.out
+++ b/Test/baseResults/spv.always-discard.frag.out
@@ -18,6 +18,7 @@
                               Name 30  "y"
                               Name 36  "radius"
                               Name 59  "gl_FragColor"
+                              Decorate 21(tex_coord) Location 0
                               Decorate 59(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.always-discard2.frag.out b/Test/baseResults/spv.always-discard2.frag.out
index 2d8f66e..09024ef 100644
--- a/Test/baseResults/spv.always-discard2.frag.out
+++ b/Test/baseResults/spv.always-discard2.frag.out
@@ -17,6 +17,7 @@
                               Name 21  "tex_coord"
                               Name 30  "y"
                               Name 38  "gl_FragColor"
+                              Decorate 21(tex_coord) Location 0
                               Decorate 38(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out
index 08bd830..d4c2126 100644
--- a/Test/baseResults/spv.atomic.comp.out
+++ b/Test/baseResults/spv.atomic.comp.out
@@ -30,8 +30,10 @@
                               Name 72  "arrY"
                               Name 73  "arrZ"
                               Decorate 20(counter) Offset 0
+                              Decorate 20(counter) DescriptorSet 0
                               Decorate 20(counter) Binding 0
                               Decorate 27(countArr) Offset 4
+                              Decorate 27(countArr) DescriptorSet 0
                               Decorate 27(countArr) Binding 0
                               MemberDecorate 62(dataSSB) 0 Restrict
                               MemberDecorate 62(dataSSB) 0 Offset 0
diff --git a/Test/baseResults/spv.bitCast.frag.out b/Test/baseResults/spv.bitCast.frag.out
index f590ec7..db73179 100644
--- a/Test/baseResults/spv.bitCast.frag.out
+++ b/Test/baseResults/spv.bitCast.frag.out
@@ -26,14 +26,27 @@
                               Name 139  "u3"
                               Name 148  "u4"
                               Name 154  "fragColor"
+                              Decorate 14(f1) Location 8
+                              Decorate 26(f2) Location 9
+                              Decorate 37(f3) Location 10
+                              Decorate 48(f4) Location 11
                               Decorate 89(i1) Flat
+                              Decorate 89(i1) Location 0
                               Decorate 98(i2) Flat
+                              Decorate 98(i2) Location 1
                               Decorate 107(i3) Flat
+                              Decorate 107(i3) Location 2
                               Decorate 116(i4) Flat
+                              Decorate 116(i4) Location 3
                               Decorate 122(u1) Flat
+                              Decorate 122(u1) Location 4
                               Decorate 130(u2) Flat
+                              Decorate 130(u2) Location 5
                               Decorate 139(u3) Flat
+                              Decorate 139(u3) Location 6
                               Decorate 148(u4) Flat
+                              Decorate 148(u4) Location 7
+                              Decorate 154(fragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.bufferhandle3.frag.out b/Test/baseResults/spv.bufferhandle3.frag.out
index ba50eb1..42a5757 100644
--- a/Test/baseResults/spv.bufferhandle3.frag.out
+++ b/Test/baseResults/spv.bufferhandle3.frag.out
@@ -46,6 +46,7 @@
                               Decorate 40(x) DescriptorSet 1
                               Decorate 40(x) Binding 2
                               Decorate 42(k) Flat
+                              Decorate 42(k) Location 0
                               Decorate 42(k) DecorationAliasedPointerEXT
                               Decorate 23(param) DecorationAliasedPointerEXT
                2:             TypeVoid
diff --git a/Test/baseResults/spv.bufferhandle7.frag.out b/Test/baseResults/spv.bufferhandle7.frag.out
index 9beaee1..40b7a16 100644
--- a/Test/baseResults/spv.bufferhandle7.frag.out
+++ b/Test/baseResults/spv.bufferhandle7.frag.out
@@ -47,7 +47,7 @@
                               MemberDecorate 15(t2) 1 Offset 8
                               Decorate 15(t2) Block
                               Decorate 17(u) DescriptorSet 0
-                              Decorate 17(u) Binding 0
+                              Decorate 17(u) Binding 1
                2:             TypeVoid
                3:             TypeFunction 2
                               TypeForwardPointer 6 PhysicalStorageBufferEXT
diff --git a/Test/baseResults/spv.bufferhandle9.frag.out b/Test/baseResults/spv.bufferhandle9.frag.out
index b452acc..30b44a6 100644
--- a/Test/baseResults/spv.bufferhandle9.frag.out
+++ b/Test/baseResults/spv.bufferhandle9.frag.out
@@ -40,7 +40,9 @@
                               Decorate 8(blockType) Block
                               Decorate 13(b1) DecorationAliasedPointerEXT
                               Decorate 16(h) Flat
+                              Decorate 16(h) Location 0
                               Decorate 19(i) Flat
+                              Decorate 19(i) Location 1
                               Decorate 34(b2) DecorationAliasedPointerEXT
                               Decorate 37(b3) DecorationAliasedPointerEXT
                               MemberDecorate 53(t2) 0 Offset 0
diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out
index b1944cf..6dfc6bb 100755
--- a/Test/baseResults/spv.bufferhandleUvec2.frag.out
+++ b/Test/baseResults/spv.bufferhandleUvec2.frag.out
@@ -41,7 +41,9 @@
                               Decorate 8(blockType) Block
                               Decorate 13(b1) DecorationAliasedPointerEXT
                               Decorate 16(h) Flat
+                              Decorate 16(h) Location 0
                               Decorate 19(i) Flat
+                              Decorate 19(i) Location 1
                               Decorate 34(b2) DecorationAliasedPointerEXT
                               Decorate 37(b3) DecorationAliasedPointerEXT
                               MemberDecorate 68(t2) 0 Offset 0
diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out
index a05afb9..1dffd56 100644
--- a/Test/baseResults/spv.conditionalDiscard.frag.out
+++ b/Test/baseResults/spv.conditionalDiscard.frag.out
@@ -16,6 +16,7 @@
                               Name 34  "gl_FragColor"
                               Decorate 13(tex) DescriptorSet 0
                               Decorate 13(tex) Binding 0
+                              Decorate 17(coord) Location 0
                               Decorate 34(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out
index 60129dd..de1fbdc 100644
--- a/Test/baseResults/spv.conversion.frag.out
+++ b/Test/baseResults/spv.conversion.frag.out
@@ -50,10 +50,18 @@
                               Name 452  "i_f3"
                               Name 454  "i_f4"
                               Decorate 39(i_i) Flat
+                              Decorate 39(i_i) Location 0
+                              Decorate 53(i_f) Location 4
                               Decorate 157(i_i4) Flat
+                              Decorate 157(i_i4) Location 3
                               Decorate 322(gl_FragColor) Location 0
                               Decorate 446(i_i2) Flat
+                              Decorate 446(i_i2) Location 1
                               Decorate 448(i_i3) Flat
+                              Decorate 448(i_i3) Location 2
+                              Decorate 450(i_f2) Location 5
+                              Decorate 452(i_f3) Location 6
+                              Decorate 454(i_f4) Location 7
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeBool
diff --git a/Test/baseResults/spv.dataOut.frag.out b/Test/baseResults/spv.dataOut.frag.out
index 5dc14ce..1af1998 100644
--- a/Test/baseResults/spv.dataOut.frag.out
+++ b/Test/baseResults/spv.dataOut.frag.out
@@ -12,6 +12,7 @@
                               Name 4  "main"
                               Name 12  "gl_FragData"
                               Name 16  "Color"
+                              Decorate 16(Color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.dataOutIndirect.frag.out b/Test/baseResults/spv.dataOutIndirect.frag.out
index fa6a0da..39f368e 100644
--- a/Test/baseResults/spv.dataOutIndirect.frag.out
+++ b/Test/baseResults/spv.dataOutIndirect.frag.out
@@ -15,10 +15,12 @@
                               MemberName 14(b) 0  "i"
                               Name 16  "bName"
                               Name 22  "Color"
+                              Decorate 12(fcolor) Location 0
                               MemberDecorate 14(b) 0 Offset 0
                               Decorate 14(b) Block
                               Decorate 16(bName) DescriptorSet 0
                               Decorate 16(bName) Binding 0
+                              Decorate 22(Color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out
index fab5e58..b138c2f 100644
--- a/Test/baseResults/spv.dataOutIndirect.vert.out
+++ b/Test/baseResults/spv.dataOutIndirect.vert.out
@@ -15,6 +15,8 @@
                               Name 25  "colorOut"
                               Name 28  "color"
                               Name 34  "gl_Position"
+                              Decorate 25(colorOut) Location 0
+                              Decorate 28(color) Location 0
                               Decorate 34(gl_Position) BuiltIn Position
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.depthOut.frag.out b/Test/baseResults/spv.depthOut.frag.out
index d212c89..9562d8f 100644
--- a/Test/baseResults/spv.depthOut.frag.out
+++ b/Test/baseResults/spv.depthOut.frag.out
@@ -16,6 +16,8 @@
                               Name 10  "Depth"
                               Name 14  "Color"
                               Decorate 8(gl_FragDepth) BuiltIn FragDepth
+                              Decorate 10(Depth) Location 1
+                              Decorate 14(Color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.deviceGroup.frag.out b/Test/baseResults/spv.deviceGroup.frag.out
index 2d16272..5e8fbb7 100644
--- a/Test/baseResults/spv.deviceGroup.frag.out
+++ b/Test/baseResults/spv.deviceGroup.frag.out
@@ -14,6 +14,7 @@
                               Name 4  "main"
                               Name 9  "color"
                               Name 12  "gl_DeviceIndex"
+                              Decorate 9(color) Location 0
                               Decorate 12(gl_DeviceIndex) Flat
                               Decorate 12(gl_DeviceIndex) BuiltIn DeviceIndex
                2:             TypeVoid
diff --git a/Test/baseResults/spv.discard-dce.frag.out b/Test/baseResults/spv.discard-dce.frag.out
index c4a5cb2..a3f4b36 100644
--- a/Test/baseResults/spv.discard-dce.frag.out
+++ b/Test/baseResults/spv.discard-dce.frag.out
@@ -18,6 +18,7 @@
                               Name 30  "y"
                               Name 36  "radius"
                               Name 59  "gl_FragColor"
+                              Decorate 21(tex_coord) Location 0
                               Decorate 59(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out
index 945f0d7..61c576a 100644
--- a/Test/baseResults/spv.doWhileLoop.frag.out
+++ b/Test/baseResults/spv.doWhileLoop.frag.out
@@ -15,6 +15,9 @@
                               Name 17  "bigColor"
                               Name 27  "d"
                               Name 32  "gl_FragColor"
+                              Decorate 11(BaseColor) Location 1
+                              Decorate 17(bigColor) Location 0
+                              Decorate 27(d) Location 2
                               Decorate 32(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.drawParams.vert.out b/Test/baseResults/spv.drawParams.vert.out
index e9d4970..dc0f736 100644
--- a/Test/baseResults/spv.drawParams.vert.out
+++ b/Test/baseResults/spv.drawParams.vert.out
@@ -21,6 +21,7 @@
                               Decorate 10(gl_BaseVertexARB) BuiltIn BaseVertex
                               Decorate 13(gl_BaseInstanceARB) BuiltIn BaseInstance
                               Decorate 16(gl_DrawIDARB) BuiltIn DrawIndex
+                              Decorate 21(pos) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out
index a4eb8ca..1053069 100644
--- a/Test/baseResults/spv.earlyReturnDiscard.frag.out
+++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out
@@ -24,7 +24,17 @@
                               Name 77  "b"
                               Name 105  "gl_FragColor"
                               Name 109  "threshhold3"
+                              Decorate 11(BaseColor) Location 9
+                              Decorate 14(otherColor) Location 3
+                              Decorate 17(c) Location 4
+                              Decorate 19(d) Location 0
+                              Decorate 25(bigColor) Location 1
+                              Decorate 30(smallColor) Location 2
+                              Decorate 39(minimum) Location 8
+                              Decorate 51(threshhold) Location 5
+                              Decorate 63(threshhold2) Location 6
                               Decorate 105(gl_FragColor) Location 0
+                              Decorate 109(threshhold3) Location 7
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out
index da16fa4..ae2fa74 100644
--- a/Test/baseResults/spv.ext.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out
@@ -34,6 +34,8 @@
                               MemberDecorate 38(block) 0 Offset 0
                               MemberDecorate 38(block) 1 Offset 16
                               Decorate 38(block) BufferBlock
+                              Decorate 40 DescriptorSet 0
+                              Decorate 40 Binding 3
                               Decorate 51(accEXT1) DescriptorSet 0
                               Decorate 51(accEXT1) Binding 1
                               Decorate 54(imageu) DescriptorSet 0
diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
index 30ed902..26d5513 100644
--- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
@@ -30,6 +30,8 @@
                               MemberDecorate 37(block) 0 Offset 0
                               MemberDecorate 37(block) 1 Offset 16
                               Decorate 37(block) BufferBlock
+                              Decorate 39 DescriptorSet 0
+                              Decorate 39 Binding 1
                               Decorate 52(payload) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
index 3962bcb..1b3e13e 100644
--- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
@@ -37,6 +37,8 @@
                               MemberDecorate 34(block) 1 Offset 16
                               MemberDecorate 34(block) 2 Offset 28
                               Decorate 34(block) BufferBlock
+                              Decorate 36 DescriptorSet 0
+                              Decorate 36 Binding 2
                               Decorate 60(accEXT1) DescriptorSet 0
                               Decorate 60(accEXT1) Binding 1
                               Decorate 75 DecorationNonUniformEXT
diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out
index ca1bca1..ffefa53 100644
--- a/Test/baseResults/spv.float16.frag.out
+++ b/Test/baseResults/spv.float16.frag.out
@@ -115,6 +115,7 @@
                               Name 531  "f16_to_d"
                               Name 532  "f_to_f16"
                               Name 533  "d_to_f16"
+                              Decorate 465(if16v) Location 0
                               Decorate 512 ArrayStride 16
                               Decorate 513 ArrayStride 32
                               MemberDecorate 514(S) 0 Offset 0
diff --git a/Test/baseResults/spv.float32.frag.out b/Test/baseResults/spv.float32.frag.out
index db413c4..7938e1d 100644
--- a/Test/baseResults/spv.float32.frag.out
+++ b/Test/baseResults/spv.float32.frag.out
@@ -104,6 +104,7 @@
                               Name 530  "f16_to_d"
                               Name 531  "f_to_f16"
                               Name 532  "d_to_f16"
+                              Decorate 471(if32v) Location 0
                               Decorate 518 ArrayStride 16
                               Decorate 519 ArrayStride 32
                               MemberDecorate 520(S) 0 Offset 0
diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out
index b98c870..7476144 100644
--- a/Test/baseResults/spv.float64.frag.out
+++ b/Test/baseResults/spv.float64.frag.out
@@ -105,6 +105,7 @@
                               Name 522  "f_to_f16"
                               Name 523  "d_to_f16"
                               Decorate 461(if64v) Flat
+                              Decorate 461(if64v) Location 0
                               Decorate 508 ArrayStride 16
                               Decorate 509 ArrayStride 64
                               MemberDecorate 510(S) 0 Offset 0
diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out
index fc68306..8a63594 100644
--- a/Test/baseResults/spv.flowControl.frag.out
+++ b/Test/baseResults/spv.flowControl.frag.out
@@ -19,6 +19,12 @@
                               Name 25  "bigColor"
                               Name 30  "smallColor"
                               Name 35  "gl_FragColor"
+                              Decorate 11(BaseColor) Location 5
+                              Decorate 14(otherColor) Location 3
+                              Decorate 17(c) Location 4
+                              Decorate 19(d) Location 0
+                              Decorate 25(bigColor) Location 1
+                              Decorate 30(smallColor) Location 2
                               Decorate 35(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out
index b4b0f5d..8cbef7c 100644
--- a/Test/baseResults/spv.forLoop.frag.out
+++ b/Test/baseResults/spv.forLoop.frag.out
@@ -25,9 +25,14 @@
                               Name 94  "i"
                               Name 104  "f"
                               Name 117  "i"
+                              Decorate 11(BaseColor) Location 1
                               Decorate 24(Count) Flat
+                              Decorate 24(Count) Location 3
+                              Decorate 28(bigColor) Location 0
                               Decorate 36(gl_FragColor) Location 0
                               Decorate 53(v4) Flat
+                              Decorate 53(v4) Location 4
+                              Decorate 104(f) Location 2
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out
index 26140af..0f87100 100644
--- a/Test/baseResults/spv.forwardFun.frag.out
+++ b/Test/baseResults/spv.forwardFun.frag.out
@@ -26,6 +26,7 @@
                               Decorate 15(bar) RelaxedPrecision
                               Decorate 18(color) RelaxedPrecision
                               Decorate 20(BaseColor) RelaxedPrecision
+                              Decorate 20(BaseColor) Location 1
                               Decorate 22 RelaxedPrecision
                               Decorate 23 RelaxedPrecision
                               Decorate 24 RelaxedPrecision
@@ -37,11 +38,13 @@
                               Decorate 32 RelaxedPrecision
                               Decorate 33 RelaxedPrecision
                               Decorate 36(d) RelaxedPrecision
+                              Decorate 36(d) Location 2
                               Decorate 37 RelaxedPrecision
                               Decorate 52 RelaxedPrecision
                               Decorate 55 RelaxedPrecision
                               Decorate 56 RelaxedPrecision
                               Decorate 59(bigColor) RelaxedPrecision
+                              Decorate 59(bigColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                8:             TypeFloat 32
diff --git a/Test/baseResults/spv.fullyCovered.frag.out b/Test/baseResults/spv.fullyCovered.frag.out
index 4dbea15..0cac5d8 100644
--- a/Test/baseResults/spv.fullyCovered.frag.out
+++ b/Test/baseResults/spv.fullyCovered.frag.out
@@ -15,6 +15,7 @@
                               Name 4  "main"
                               Name 9  "color"
                               Name 12  "gl_FragFullyCoveredNV"
+                              Decorate 9(color) Location 0
                               Decorate 12(gl_FragFullyCoveredNV) BuiltIn FullyCoveredEXT
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out
index 4fa7863..3a8d00b 100644
--- a/Test/baseResults/spv.functionCall.frag.out
+++ b/Test/baseResults/spv.functionCall.frag.out
@@ -28,7 +28,10 @@
                               Name 66  "g"
                               Name 69  "gl_FragColor"
                               Name 75  "bigColor"
+                              Decorate 35(d) Location 2
+                              Decorate 58(BaseColor) Location 1
                               Decorate 69(gl_FragColor) Location 0
+                              Decorate 75(bigColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.functionNestedOpaque.vert.out b/Test/baseResults/spv.functionNestedOpaque.vert.out
index 4543895..1b63fd7 100644
--- a/Test/baseResults/spv.functionNestedOpaque.vert.out
+++ b/Test/baseResults/spv.functionNestedOpaque.vert.out
@@ -19,6 +19,8 @@
                               Name 21  "bar(struct-S-s211;"
                               Name 20  "p"
                               Name 36  "si"
+                              Decorate 36(si) DescriptorSet 0
+                              Decorate 36(si) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.functionSemantics.frag.out b/Test/baseResults/spv.functionSemantics.frag.out
index 000a7bc..503a370 100644
--- a/Test/baseResults/spv.functionSemantics.frag.out
+++ b/Test/baseResults/spv.functionSemantics.frag.out
@@ -42,6 +42,7 @@
                               Name 133  "param"
                               Name 136  "arg"
                               Name 152  "gl_FragColor"
+                              Decorate 76(u) Location 0
                               Decorate 152(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out
index 63d26d8..68b5fa3 100644
--- a/Test/baseResults/spv.image.frag.out
+++ b/Test/baseResults/spv.image.frag.out
@@ -68,13 +68,17 @@
                               Decorate 108(i2DMSArray) DescriptorSet 0
                               Decorate 108(i2DMSArray) Binding 10
                               Decorate 132(ic1D) Flat
+                              Decorate 132(ic1D) Location 0
                               Decorate 142(ic2D) Flat
+                              Decorate 142(ic2D) Location 1
                               Decorate 152(ic3D) Flat
+                              Decorate 152(ic3D) Location 2
                               Decorate 232(ii1D) DescriptorSet 0
                               Decorate 232(ii1D) Binding 11
                               Decorate 245(ui2D) DescriptorSet 0
                               Decorate 245(ui2D) Binding 12
                               Decorate 248(value) Flat
+                              Decorate 248(value) Location 4
                               Decorate 357(ii2DMS) DescriptorSet 0
                               Decorate 357(ii2DMS) Binding 13
                               Decorate 367(ui2DMSArray) DescriptorSet 0
@@ -82,7 +86,9 @@
                               Decorate 376(wo2D) DescriptorSet 0
                               Decorate 376(wo2D) Binding 1
                               Decorate 376(wo2D) NonReadable
+                              Decorate 381(fragData) Location 0
                               Decorate 394(ic4D) Flat
+                              Decorate 394(ic4D) Location 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.intOps.vert.out b/Test/baseResults/spv.intOps.vert.out
index 272233e..067b921 100644
--- a/Test/baseResults/spv.intOps.vert.out
+++ b/Test/baseResults/spv.intOps.vert.out
@@ -38,6 +38,21 @@
                               Name 173  "u3"
                               Name 182  "i3"
                               Name 247  "v4"
+                              Decorate 9(iout) Location 1
+                              Decorate 15(uout) Location 0
+                              Decorate 21(fout) Location 2
+                              Decorate 26(u2) Location 1
+                              Decorate 47(u1) Location 0
+                              Decorate 67(u4) Location 3
+                              Decorate 83(i4) Location 11
+                              Decorate 100(v3) Location 6
+                              Decorate 121(v1) Location 4
+                              Decorate 142(v2) Location 5
+                              Decorate 146(i2) Location 9
+                              Decorate 156(i1) Location 8
+                              Decorate 173(u3) Location 2
+                              Decorate 182(i3) Location 10
+                              Decorate 247(v4) Location 7
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.interpOps.frag.out b/Test/baseResults/spv.interpOps.frag.out
index 7ec4f9f..117f6a0 100644
--- a/Test/baseResults/spv.interpOps.frag.out
+++ b/Test/baseResults/spv.interpOps.frag.out
@@ -19,8 +19,15 @@
                               Name 47  "samp"
                               Name 72  "offset"
                               Name 98  "fragColor"
+                              Decorate 13(if1) Location 0
+                              Decorate 24(if2) Location 1
+                              Decorate 33(if3) Location 2
+                              Decorate 41(if4) Location 3
                               Decorate 47(samp) Flat
+                              Decorate 47(samp) Location 4
                               Decorate 72(offset) Flat
+                              Decorate 72(offset) Location 5
+                              Decorate 98(fragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out
index 44d58ab..c9a82c7 100644
--- a/Test/baseResults/spv.layoutNested.vert.out
+++ b/Test/baseResults/spv.layoutNested.vert.out
@@ -167,11 +167,13 @@
                               Decorate 60(bBtn3) DescriptorSet 1
                               Decorate 60(bBtn3) Binding 0
                               Decorate 62(sout) Flat
+                              Decorate 62(sout) Location 0
                               MemberDecorate 63(S) 0 Invariant
                               MemberDecorate 63(S) 1 RelaxedPrecision
                               MemberDecorate 63(S) 1 Invariant
                               MemberDecorate 63(S) 2 RelaxedPrecision
                               MemberDecorate 63(S) 2 Invariant
+                              Decorate 65(soutinv) Location 10
                               Decorate 65(soutinv) Invariant
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.length.frag.out b/Test/baseResults/spv.length.frag.out
index de391bc..6c0ce63 100644
--- a/Test/baseResults/spv.length.frag.out
+++ b/Test/baseResults/spv.length.frag.out
@@ -14,6 +14,7 @@
                               Name 14  "v"
                               Name 26  "gl_FragColor"
                               Name 32  "u"
+                              Decorate 14(v) Location 0
                               Decorate 26(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out
index adfa0fd..d4baf1d 100644
--- a/Test/baseResults/spv.localAggregates.frag.out
+++ b/Test/baseResults/spv.localAggregates.frag.out
@@ -39,12 +39,18 @@
                               Name 134  "foo"
                               Name 135  "foo2"
                               Decorate 15(foo3) Flat
+                              Decorate 15(foo3) Location 9
+                              Decorate 40(coord) Location 0
                               Decorate 90(condition) Flat
+                              Decorate 90(condition) Location 18
+                              Decorate 98(color) Location 1
                               Decorate 108(gl_FragColor) Location 0
                               Decorate 128(samp2D) DescriptorSet 0
                               Decorate 128(samp2D) Binding 0
                               Decorate 134(foo) Flat
+                              Decorate 134(foo) Location 2
                               Decorate 135(foo2) Flat
+                              Decorate 135(foo2) Location 4
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out
index a3a3423..21ccfd0 100644
--- a/Test/baseResults/spv.loops.frag.out
+++ b/Test/baseResults/spv.loops.frag.out
@@ -48,8 +48,38 @@
                               Name 649  "d16"
                               Name 687  "d18"
                               Name 698  "d17"
+                              Decorate 11(BaseColor) Location 11
+                              Decorate 54(d) Location 12
+                              Decorate 57(bigColor) Location 0
+                              Decorate 71(bigColor1_1) Location 1
+                              Decorate 106(d2) Location 13
+                              Decorate 114(d3) Location 14
+                              Decorate 118(bigColor1_2) Location 2
+                              Decorate 131(bigColor1_3) Location 3
+                              Decorate 137(d4) Location 15
                               Decorate 157(Count) Flat
+                              Decorate 157(Count) Location 29
+                              Decorate 160(bigColor2) Location 4
+                              Decorate 171(bigColor3) Location 5
+                              Decorate 308(bigColor4) Location 6
+                              Decorate 344(bigColor5) Location 7
+                              Decorate 350(d5) Location 16
+                              Decorate 366(d6) Location 17
+                              Decorate 380(bigColor6) Location 8
+                              Decorate 418(d7) Location 18
+                              Decorate 450(bigColor7) Location 9
+                              Decorate 469(d8) Location 19
+                              Decorate 512(d9) Location 20
+                              Decorate 544(d10) Location 21
+                              Decorate 552(d11) Location 22
+                              Decorate 562(d12) Location 23
+                              Decorate 588(bigColor8) Location 10
                               Decorate 615(gl_FragColor) Location 0
+                              Decorate 624(d14) Location 24
+                              Decorate 629(d15) Location 25
+                              Decorate 649(d16) Location 26
+                              Decorate 687(d18) Location 28
+                              Decorate 698(d17) Location 27
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out
index 65329d4..9814396 100644
--- a/Test/baseResults/spv.loopsArtificial.frag.out
+++ b/Test/baseResults/spv.loopsArtificial.frag.out
@@ -30,8 +30,26 @@
                               Name 153  "d2"
                               Name 154  "d3"
                               Name 157  "Count"
+                              Decorate 11(BaseColor) Location 11
+                              Decorate 17(bigColor4) Location 6
+                              Decorate 27(d4) Location 15
+                              Decorate 80(d13) Location 16
                               Decorate 140(gl_FragColor) Location 0
+                              Decorate 142(bigColor) Location 0
+                              Decorate 143(bigColor1_1) Location 1
+                              Decorate 144(bigColor1_2) Location 2
+                              Decorate 145(bigColor1_3) Location 3
+                              Decorate 146(bigColor2) Location 4
+                              Decorate 147(bigColor3) Location 5
+                              Decorate 148(bigColor5) Location 7
+                              Decorate 149(bigColor6) Location 8
+                              Decorate 150(bigColor7) Location 9
+                              Decorate 151(bigColor8) Location 10
+                              Decorate 152(d) Location 12
+                              Decorate 153(d2) Location 13
+                              Decorate 154(d3) Location 14
                               Decorate 157(Count) Flat
+                              Decorate 157(Count) Location 17
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.matFun.vert.out b/Test/baseResults/spv.matFun.vert.out
index d39160d..4e59370 100644
--- a/Test/baseResults/spv.matFun.vert.out
+++ b/Test/baseResults/spv.matFun.vert.out
@@ -45,6 +45,7 @@
                               Decorate 77(bl) Block
                               Decorate 79(bName) DescriptorSet 0
                               Decorate 79(bName) Binding 0
+                              Decorate 81(v3) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.matrix.frag.out b/Test/baseResults/spv.matrix.frag.out
index f7b6ce3..b1061f4 100644
--- a/Test/baseResults/spv.matrix.frag.out
+++ b/Test/baseResults/spv.matrix.frag.out
@@ -23,6 +23,12 @@
                               Name 174  "m43"
                               Name 179  "m4"
                               Name 187  "color"
+                              Decorate 12(m1) Location 0
+                              Decorate 14(m2) Location 3
+                              Decorate 28(f) Location 6
+                              Decorate 161(v4) Location 8
+                              Decorate 169(v3) Location 7
+                              Decorate 187(color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.matrix2.frag.out b/Test/baseResults/spv.matrix2.frag.out
index 77a098a..156c39f 100644
--- a/Test/baseResults/spv.matrix2.frag.out
+++ b/Test/baseResults/spv.matrix2.frag.out
@@ -27,6 +27,18 @@
                               Name 218  "colorTransform"
                               Name 219  "m"
                               Name 220  "n"
+                              Decorate 12(v) Location 28
+                              Decorate 16(u) Location 29
+                              Decorate 37(FragColor) Location 0
+                              Decorate 38(Color) Location 3
+                              Decorate 65(un34) Location 16
+                              Decorate 87(um43) Location 12
+                              Decorate 147(um4) Location 24
+                              Decorate 158(um2) Location 19
+                              Decorate 181(um3) Location 21
+                              Decorate 218(colorTransform) Location 0
+                              Decorate 219(m) Location 4
+                              Decorate 220(n) Location 8
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out
index 737e862..4d887f1 100644
--- a/Test/baseResults/spv.memoryQualifier.frag.out
+++ b/Test/baseResults/spv.memoryQualifier.frag.out
@@ -67,7 +67,7 @@
                               MemberDecorate 50(Buffer) 5 Offset 56
                               Decorate 50(Buffer) BufferBlock
                               Decorate 52 DescriptorSet 0
-                              Decorate 52 Binding 0
+                              Decorate 52 Binding 4
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.meshShaderSharedMem.mesh.out b/Test/baseResults/spv.meshShaderSharedMem.mesh.out
index adac07f..5cd4c9f 100644
--- a/Test/baseResults/spv.meshShaderSharedMem.mesh.out
+++ b/Test/baseResults/spv.meshShaderSharedMem.mesh.out
@@ -31,7 +31,7 @@
                               MemberDecorate 37(block0) 0 Offset 0
                               Decorate 37(block0) Block
                               Decorate 39 DescriptorSet 0
-                              Decorate 39 Binding 0
+                              Decorate 39 Binding 1
                               Decorate 55(uni_image) DescriptorSet 0
                               Decorate 55(uni_image) Binding 0
                               Decorate 55(uni_image) NonReadable
diff --git a/Test/baseResults/spv.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.meshShaderTaskMem.mesh.out
index 057e0fd..bd9fb25 100644
--- a/Test/baseResults/spv.meshShaderTaskMem.mesh.out
+++ b/Test/baseResults/spv.meshShaderTaskMem.mesh.out
@@ -38,6 +38,7 @@
                               MemberDecorate 28(taskBlock) 1 PerTaskNV
                               MemberDecorate 28(taskBlock) 1 Offset 16
                               Decorate 28(taskBlock) Block
+                              Decorate 30(mytask) Location 0
                               Decorate 35 ArrayStride 4
                               MemberDecorate 36(bufferBlock) 0 Offset 0
                               MemberDecorate 36(bufferBlock) 1 Offset 16
diff --git a/Test/baseResults/spv.meshTaskShader.task.out b/Test/baseResults/spv.meshTaskShader.task.out
index 96d37c4..20d6f7d 100644
--- a/Test/baseResults/spv.meshTaskShader.task.out
+++ b/Test/baseResults/spv.meshTaskShader.task.out
@@ -39,7 +39,7 @@
                               MemberDecorate 47(block0) 0 Offset 0
                               Decorate 47(block0) Block
                               Decorate 49 DescriptorSet 0
-                              Decorate 49 Binding 0
+                              Decorate 49 Binding 1
                               Decorate 65(uni_image) DescriptorSet 0
                               Decorate 65(uni_image) Binding 0
                               Decorate 65(uni_image) NonReadable
@@ -51,6 +51,7 @@
                               MemberDecorate 88(Task) 2 PerTaskNV
                               MemberDecorate 88(Task) 2 Offset 32
                               Decorate 88(Task) Block
+                              Decorate 90(mytask) Location 0
                               Decorate 113(gl_TaskCountNV) BuiltIn TaskCountNV
                               Decorate 115 BuiltIn WorkgroupSize
                2:             TypeVoid
diff --git a/Test/baseResults/spv.multiView.frag.out b/Test/baseResults/spv.multiView.frag.out
index 5363352..41ec0e5 100644
--- a/Test/baseResults/spv.multiView.frag.out
+++ b/Test/baseResults/spv.multiView.frag.out
@@ -14,6 +14,7 @@
                               Name 4  "main"
                               Name 9  "color"
                               Name 12  "gl_ViewIndex"
+                              Decorate 9(color) Location 0
                               Decorate 12(gl_ViewIndex) Flat
                               Decorate 12(gl_ViewIndex) BuiltIn ViewIndex
                2:             TypeVoid
diff --git a/Test/baseResults/spv.newTexture.frag.out b/Test/baseResults/spv.newTexture.frag.out
index 6bbb032..42e36a3 100644
--- a/Test/baseResults/spv.newTexture.frag.out
+++ b/Test/baseResults/spv.newTexture.frag.out
@@ -46,33 +46,41 @@
                               Name 283  "ic4D"
                               Decorate 13(s2D) DescriptorSet 0
                               Decorate 13(s2D) Binding 0
+                              Decorate 17(c2D) Location 1
                               Decorate 23(sCubeArrayShadow) DescriptorSet 0
-                              Decorate 23(sCubeArrayShadow) Binding 0
+                              Decorate 23(sCubeArrayShadow) Binding 5
+                              Decorate 26(c4D) Location 3
+                              Decorate 29(c1D) Location 0
                               Decorate 42(s3D) DescriptorSet 0
-                              Decorate 42(s3D) Binding 0
+                              Decorate 42(s3D) Binding 2
                               Decorate 51(s2DArray) DescriptorSet 0
-                              Decorate 51(s2DArray) Binding 0
+                              Decorate 51(s2DArray) Binding 7
+                              Decorate 55(c3D) Location 2
                               Decorate 64(s2DShadow) DescriptorSet 0
-                              Decorate 64(s2DShadow) Binding 0
+                              Decorate 64(s2DShadow) Binding 6
                               Decorate 81(ic3D) Flat
+                              Decorate 81(ic3D) Location 6
                               Decorate 84(ic1D) Flat
+                              Decorate 84(ic1D) Location 4
                               Decorate 92(ic2D) Flat
+                              Decorate 92(ic2D) Location 5
                               Decorate 102(sr) DescriptorSet 0
-                              Decorate 102(sr) Binding 0
+                              Decorate 102(sr) Binding 1
                               Decorate 128(sCube) DescriptorSet 0
-                              Decorate 128(sCube) Binding 0
+                              Decorate 128(sCube) Binding 3
                               Decorate 139(s2DArrayShadow) DescriptorSet 0
-                              Decorate 139(s2DArrayShadow) Binding 0
+                              Decorate 139(s2DArrayShadow) Binding 8
                               Decorate 171(is2D) DescriptorSet 0
-                              Decorate 171(is2D) Binding 0
+                              Decorate 171(is2D) Binding 9
                               Decorate 208(is3D) DescriptorSet 0
-                              Decorate 208(is3D) Binding 0
+                              Decorate 208(is3D) Binding 10
                               Decorate 220(isCube) DescriptorSet 0
-                              Decorate 220(isCube) Binding 0
+                              Decorate 220(isCube) Binding 11
                               Decorate 232(is2DArray) DescriptorSet 0
-                              Decorate 232(is2DArray) Binding 0
+                              Decorate 232(is2DArray) Binding 12
                               Decorate 247(sCubeShadow) DescriptorSet 0
-                              Decorate 247(sCubeShadow) Binding 0
+                              Decorate 247(sCubeShadow) Binding 4
+                              Decorate 253(FragData) Location 0
                               Decorate 265(is2Dms) DescriptorSet 0
                               Decorate 265(is2Dms) Binding 0
                               Decorate 269(us2D) DescriptorSet 0
@@ -84,6 +92,7 @@
                               Decorate 281(us2DArray) DescriptorSet 0
                               Decorate 281(us2DArray) Binding 0
                               Decorate 283(ic4D) Flat
+                              Decorate 283(ic4D) Location 7
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.nonSquare.vert.out b/Test/baseResults/spv.nonSquare.vert.out
index 9746fe0..2796826 100644
--- a/Test/baseResults/spv.nonSquare.vert.out
+++ b/Test/baseResults/spv.nonSquare.vert.out
@@ -16,7 +16,10 @@
                               Name 22  "m32"
                               Name 28  "gl_Position"
                               Name 55  "v4"
+                              Decorate 12(v3) Location 0
+                              Decorate 22(m32) Location 0
                               Decorate 28(gl_Position) BuiltIn Position
+                              Decorate 55(v4) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out
index 12c5fa5..af838cc 100644
--- a/Test/baseResults/spv.pp.line.frag.out
+++ b/Test/baseResults/spv.pp.line.frag.out
@@ -60,8 +60,11 @@
                               Decorate 22(texSampler1D) DescriptorSet 0
                               Decorate 22(texSampler1D) Binding 0
                               Decorate 37(texSampler2D) DescriptorSet 0
-                              Decorate 37(texSampler2D) Binding 0
+                              Decorate 37(texSampler2D) Binding 1
+                              Decorate 41(coords2D) Location 2
                               Decorate 53(gl_FragColor) Location 0
+                              Decorate 56(u) Location 1
+                              Decorate 59(blend) Location 0
                3:             TypeVoid
                4:             TypeFunction 3
                7:             TypeFloat 32
diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out
index ac4c0aa..04109fb 100644
--- a/Test/baseResults/spv.precision.frag.out
+++ b/Test/baseResults/spv.precision.frag.out
@@ -35,6 +35,7 @@
                               Name 116  "s"
                               Decorate 12(foo(vf3;) RelaxedPrecision
                               Decorate 11(mv3) RelaxedPrecision
+                              Decorate 23(highfin) Location 2
                               Decorate 38(sum) RelaxedPrecision
                               Decorate 40(uniform_medium) RelaxedPrecision
                               Decorate 41 RelaxedPrecision
@@ -47,11 +48,14 @@
                               Decorate 55(arg2) RelaxedPrecision
                               Decorate 57(d) RelaxedPrecision
                               Decorate 59(lowfin) RelaxedPrecision
+                              Decorate 59(lowfin) Location 0
                               Decorate 60 RelaxedPrecision
                               Decorate 61(mediumfin) RelaxedPrecision
+                              Decorate 61(mediumfin) Location 1
                               Decorate 62 RelaxedPrecision
                               Decorate 63 RelaxedPrecision
                               Decorate 73(mediumfout) RelaxedPrecision
+                              Decorate 73(mediumfout) Location 0
                               Decorate 74 RelaxedPrecision
                               Decorate 75 RelaxedPrecision
                               Decorate 76 RelaxedPrecision
@@ -77,6 +81,7 @@
                               Decorate 112 RelaxedPrecision
                               Decorate 113 RelaxedPrecision
                               MemberDecorate 114(S) 1 RelaxedPrecision
+                              Decorate 116(s) Location 3
                               Decorate 120 RelaxedPrecision
                               Decorate 124 RelaxedPrecision
                               Decorate 125 RelaxedPrecision
diff --git a/Test/baseResults/spv.precisionNonESSamp.frag.out b/Test/baseResults/spv.precisionNonESSamp.frag.out
index 97681f3..a5e264d 100644
--- a/Test/baseResults/spv.precisionNonESSamp.frag.out
+++ b/Test/baseResults/spv.precisionNonESSamp.frag.out
@@ -31,14 +31,14 @@
                               Decorate 18 RelaxedPrecision
                               Decorate 19 RelaxedPrecision
                               Decorate 23(t) DescriptorSet 0
-                              Decorate 23(t) Binding 0
+                              Decorate 23(t) Binding 1
                               Decorate 27(v3) RelaxedPrecision
                               Decorate 27(v3) Location 1
                               Decorate 28 RelaxedPrecision
                               Decorate 31(vi1) RelaxedPrecision
                               Decorate 34(i1) RelaxedPrecision
                               Decorate 34(i1) DescriptorSet 0
-                              Decorate 34(i1) Binding 0
+                              Decorate 34(i1) Binding 2
                               Decorate 35 RelaxedPrecision
                               Decorate 39(iv2) RelaxedPrecision
                               Decorate 39(iv2) Flat
@@ -47,7 +47,7 @@
                               Decorate 41 RelaxedPrecision
                               Decorate 42(vi2) RelaxedPrecision
                               Decorate 43(i2) DescriptorSet 0
-                              Decorate 43(i2) Binding 0
+                              Decorate 43(i2) Binding 3
                               Decorate 45 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.pushConstant.vert.out b/Test/baseResults/spv.pushConstant.vert.out
index 5348edb..7141fa0 100644
--- a/Test/baseResults/spv.pushConstant.vert.out
+++ b/Test/baseResults/spv.pushConstant.vert.out
@@ -18,6 +18,7 @@
                               MemberDecorate 11(Material) 0 Offset 0
                               MemberDecorate 11(Material) 1 Offset 4
                               Decorate 11(Material) Block
+                              Decorate 24(color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.pushConstantAnon.vert.out b/Test/baseResults/spv.pushConstantAnon.vert.out
index 3932b42..86f8271 100644
--- a/Test/baseResults/spv.pushConstantAnon.vert.out
+++ b/Test/baseResults/spv.pushConstantAnon.vert.out
@@ -18,6 +18,7 @@
                               MemberDecorate 11(Material) 0 Offset 0
                               MemberDecorate 11(Material) 1 Offset 4
                               Decorate 11(Material) Block
+                              Decorate 24(color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.qualifiers.vert.out b/Test/baseResults/spv.qualifiers.vert.out
index 47f73a0..f25cb39 100644
--- a/Test/baseResults/spv.qualifiers.vert.out
+++ b/Test/baseResults/spv.qualifiers.vert.out
@@ -16,10 +16,16 @@
                               Name 17  "outVn"
                               Name 19  "outVcn"
                               Decorate 9(outVc) Centroid
+                              Decorate 9(outVc) Location 0
+                              Decorate 11(inV) Location 0
+                              Decorate 13(outVs) Location 1
                               Decorate 15(outVf) Flat
+                              Decorate 15(outVf) Location 2
                               Decorate 17(outVn) NoPerspective
+                              Decorate 17(outVn) Location 3
                               Decorate 19(outVcn) NoPerspective
                               Decorate 19(outVcn) Centroid
+                              Decorate 19(outVcn) Location 4
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out
index 97d845a..9aa00da 100644
--- a/Test/baseResults/spv.queryL.frag.out
+++ b/Test/baseResults/spv.queryL.frag.out
@@ -44,39 +44,39 @@
                               Decorate 13(samp1D) DescriptorSet 0
                               Decorate 13(samp1D) Binding 0
                               Decorate 23(isamp2D) DescriptorSet 0
-                              Decorate 23(isamp2D) Binding 0
+                              Decorate 23(isamp2D) Binding 1
                               Decorate 34(usamp3D) DescriptorSet 0
-                              Decorate 34(usamp3D) Binding 0
+                              Decorate 34(usamp3D) Binding 4
                               Decorate 46(sampCube) DescriptorSet 0
-                              Decorate 46(sampCube) Binding 0
+                              Decorate 46(sampCube) Binding 5
                               Decorate 55(isamp1DA) DescriptorSet 0
-                              Decorate 55(isamp1DA) Binding 0
+                              Decorate 55(isamp1DA) Binding 7
                               Decorate 64(usamp2DA) DescriptorSet 0
-                              Decorate 64(usamp2DA) Binding 0
+                              Decorate 64(usamp2DA) Binding 9
                               Decorate 73(isampCubeA) DescriptorSet 0
-                              Decorate 73(isampCubeA) Binding 0
+                              Decorate 73(isampCubeA) Binding 10
                               Decorate 82(samp1Ds) DescriptorSet 0
-                              Decorate 82(samp1Ds) Binding 0
+                              Decorate 82(samp1Ds) Binding 12
                               Decorate 91(samp2Ds) DescriptorSet 0
-                              Decorate 91(samp2Ds) Binding 0
+                              Decorate 91(samp2Ds) Binding 13
                               Decorate 100(sampCubes) DescriptorSet 0
-                              Decorate 100(sampCubes) Binding 0
+                              Decorate 100(sampCubes) Binding 14
                               Decorate 109(samp1DAs) DescriptorSet 0
-                              Decorate 109(samp1DAs) Binding 0
+                              Decorate 109(samp1DAs) Binding 15
                               Decorate 118(samp2DAs) DescriptorSet 0
-                              Decorate 118(samp2DAs) Binding 0
+                              Decorate 118(samp2DAs) Binding 16
                               Decorate 127(sampCubeAs) DescriptorSet 0
-                              Decorate 127(sampCubeAs) Binding 0
+                              Decorate 127(sampCubeAs) Binding 17
                               Decorate 141(usamp2D) DescriptorSet 0
-                              Decorate 141(usamp2D) Binding 0
+                              Decorate 141(usamp2D) Binding 2
                               Decorate 150(isamp3D) DescriptorSet 0
-                              Decorate 150(isamp3D) Binding 0
+                              Decorate 150(isamp3D) Binding 3
                               Decorate 159(isampCube) DescriptorSet 0
-                              Decorate 159(isampCube) Binding 0
+                              Decorate 159(isampCube) Binding 6
                               Decorate 173(samp2DA) DescriptorSet 0
-                              Decorate 173(samp2DA) Binding 0
+                              Decorate 173(samp2DA) Binding 8
                               Decorate 182(usampCubeA) DescriptorSet 0
-                              Decorate 182(usampCubeA) Binding 0
+                              Decorate 182(usampCubeA) Binding 11
                               Decorate 219(sampBuf) DescriptorSet 0
                               Decorate 219(sampBuf) Binding 0
                               Decorate 223(sampRect) DescriptorSet 0
diff --git a/Test/baseResults/spv.rankShift.comp.out b/Test/baseResults/spv.rankShift.comp.out
index e0fba77..6879121 100644
--- a/Test/baseResults/spv.rankShift.comp.out
+++ b/Test/baseResults/spv.rankShift.comp.out
@@ -16,7 +16,11 @@
                               Name 11  "arg0"
                               Name 15  "arg1"
                               Decorate 11(arg0) Location 4
+                              Decorate 11(arg0) DescriptorSet 0
+                              Decorate 11(arg0) Binding 0
                               Decorate 15(arg1) Location 5
+                              Decorate 15(arg1) DescriptorSet 0
+                              Decorate 15(arg1) Binding 1
                               Decorate 32 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
index 2892325..31dfd03 100644
--- a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
+++ b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
@@ -17,6 +17,7 @@
                               Name 19  "color"
                               Decorate 11(gl_SampleMask) BuiltIn SampleMask
                               Decorate 11(gl_SampleMask) OverrideCoverageNV
+                              Decorate 19(color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.separate.frag.out b/Test/baseResults/spv.separate.frag.out
index 690ab2f..cc4ef08 100644
--- a/Test/baseResults/spv.separate.frag.out
+++ b/Test/baseResults/spv.separate.frag.out
@@ -56,15 +56,17 @@
                               Name 283  "tex1D"
                               Name 293  "tex3D"
                               Name 304  "tex2DRect"
+                              Decorate 11(color) Location 0
                               Decorate 14(t2d) DescriptorSet 0
-                              Decorate 14(t2d) Binding 0
+                              Decorate 14(t2d) Binding 2
                               Decorate 18(s) DescriptorSet 0
                               Decorate 18(s) Binding 0
                               Decorate 31(t3d) DescriptorSet 0
-                              Decorate 31(t3d) Binding 0
+                              Decorate 31(t3d) Binding 3
                               Decorate 34(i) Flat
+                              Decorate 34(i) Location 0
                               Decorate 41(sA) DescriptorSet 0
-                              Decorate 41(sA) Binding 0
+                              Decorate 41(sA) Binding 1
                               Decorate 58(tex2D) DescriptorSet 0
                               Decorate 58(tex2D) Binding 0
                               Decorate 64(texCube) DescriptorSet 0
diff --git a/Test/baseResults/spv.set.vert.out b/Test/baseResults/spv.set.vert.out
index fe4326f..cbcd3d7 100644
--- a/Test/baseResults/spv.set.vert.out
+++ b/Test/baseResults/spv.set.vert.out
@@ -14,6 +14,7 @@
                               MemberName 10(setBuf) 0  "color"
                               Name 12  "setBufInst"
                               Name 21  "samp2D"
+                              Decorate 9(color) Location 0
                               MemberDecorate 10(setBuf) 0 Offset 0
                               Decorate 10(setBuf) BufferBlock
                               Decorate 12(setBufInst) DescriptorSet 0
diff --git a/Test/baseResults/spv.shaderImageFootprint.frag.out b/Test/baseResults/spv.shaderImageFootprint.frag.out
index 7559564..e023465 100644
--- a/Test/baseResults/spv.shaderImageFootprint.frag.out
+++ b/Test/baseResults/spv.shaderImageFootprint.frag.out
@@ -74,7 +74,7 @@
                               MemberDecorate 8(result2D) 5 Offset 36
                               Decorate 8(result2D) BufferBlock
                               Decorate 10 DescriptorSet 0
-                              Decorate 10 Binding 0
+                              Decorate 10 Binding 2
                               Decorate 17(sample2D) DescriptorSet 0
                               Decorate 17(sample2D) Binding 0
                               Decorate 21(P2) Location 0
@@ -93,9 +93,9 @@
                               MemberDecorate 377(result3D) 5 Offset 60
                               Decorate 377(result3D) BufferBlock
                               Decorate 379 DescriptorSet 0
-                              Decorate 379 Binding 0
+                              Decorate 379 Binding 3
                               Decorate 383(sample3D) DescriptorSet 0
-                              Decorate 383(sample3D) Binding 0
+                              Decorate 383(sample3D) Binding 1
                               Decorate 387(P3) Location 2
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.shiftOps.frag.out b/Test/baseResults/spv.shiftOps.frag.out
index 15df236..8f16548 100644
--- a/Test/baseResults/spv.shiftOps.frag.out
+++ b/Test/baseResults/spv.shiftOps.frag.out
@@ -16,10 +16,16 @@
                               Name 25  "ucolor"
                               Name 27  "u3"
                               Name 30  "i1"
+                              Decorate 9(icolor) Location 0
                               Decorate 11(i3) Flat
+                              Decorate 11(i3) Location 2
                               Decorate 15(u1) Flat
+                              Decorate 15(u1) Location 1
+                              Decorate 25(ucolor) Location 1
                               Decorate 27(u3) Flat
+                              Decorate 27(u3) Location 3
                               Decorate 30(i1) Flat
+                              Decorate 30(i1) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.shortCircuit.frag.out b/Test/baseResults/spv.shortCircuit.frag.out
index 6104b04..d582806 100644
--- a/Test/baseResults/spv.shortCircuit.frag.out
+++ b/Test/baseResults/spv.shortCircuit.frag.out
@@ -21,8 +21,14 @@
                               Name 142  "uv4"
                               Name 145  "ub41"
                               Name 146  "ub42"
+                              Decorate 12(of1) Location 0
+                              Decorate 24(of4) Location 1
                               Decorate 34(ui) Flat
+                              Decorate 34(ui) Location 3
+                              Decorate 113(uf) Location 2
                               Decorate 140(uiv4) Flat
+                              Decorate 140(uiv4) Location 0
+                              Decorate 142(uv4) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeBool
diff --git a/Test/baseResults/spv.simpleFunctionCall.frag.out b/Test/baseResults/spv.simpleFunctionCall.frag.out
index 8e666a6..4be8a4a 100644
--- a/Test/baseResults/spv.simpleFunctionCall.frag.out
+++ b/Test/baseResults/spv.simpleFunctionCall.frag.out
@@ -13,6 +13,7 @@
                               Name 9  "foo("
                               Name 12  "BaseColor"
                               Name 17  "gl_FragColor"
+                              Decorate 12(BaseColor) Location 0
                               Decorate 17(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.simpleMat.vert.out b/Test/baseResults/spv.simpleMat.vert.out
index ff51dc0..dc0ca40 100644
--- a/Test/baseResults/spv.simpleMat.vert.out
+++ b/Test/baseResults/spv.simpleMat.vert.out
@@ -17,6 +17,12 @@
                               Name 19  "f"
                               Name 23  "am3"
                               Name 34  "arraym"
+                              Decorate 9(glPos) Location 5
+                              Decorate 12(mvp) Location 0
+                              Decorate 15(v) Location 0
+                              Decorate 19(f) Location 4
+                              Decorate 23(am3) Location 1
+                              Decorate 34(arraym) Location 4
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out
index 3414200..fa12317 100644
--- a/Test/baseResults/spv.sparseTexture.frag.out
+++ b/Test/baseResults/spv.sparseTexture.frag.out
@@ -49,37 +49,44 @@
                               Name 423  "outColor"
                               Decorate 29(s2D) DescriptorSet 0
                               Decorate 29(s2D) Binding 0
+                              Decorate 33(c2) Location 0
                               Decorate 44(s3D) DescriptorSet 0
-                              Decorate 44(s3D) Binding 0
+                              Decorate 44(s3D) Binding 1
+                              Decorate 48(c3) Location 1
                               Decorate 59(isCube) DescriptorSet 0
-                              Decorate 59(isCube) Binding 0
+                              Decorate 59(isCube) Binding 8
                               Decorate 71(s2DShadow) DescriptorSet 0
-                              Decorate 71(s2DShadow) Binding 0
+                              Decorate 71(s2DShadow) Binding 2
                               Decorate 86(sCubeArrayShadow) DescriptorSet 0
-                              Decorate 86(sCubeArrayShadow) Binding 0
+                              Decorate 86(sCubeArrayShadow) Binding 6
+                              Decorate 89(c4) Location 2
                               Decorate 108(usCubeArray) DescriptorSet 0
-                              Decorate 108(usCubeArray) Binding 0
+                              Decorate 108(usCubeArray) Binding 10
                               Decorate 140(us2DRect) DescriptorSet 0
-                              Decorate 140(us2DRect) Binding 0
+                              Decorate 140(us2DRect) Binding 11
                               Decorate 154(s2DArrayShadow) DescriptorSet 0
-                              Decorate 154(s2DArrayShadow) Binding 0
+                              Decorate 154(s2DArrayShadow) Binding 4
                               Decorate 188(s2DMS) DescriptorSet 0
-                              Decorate 188(s2DMS) Binding 0
+                              Decorate 188(s2DMS) Binding 7
                               Decorate 228(is2DArray) DescriptorSet 0
-                              Decorate 228(is2DArray) Binding 0
+                              Decorate 228(is2DArray) Binding 9
                               Decorate 261(sCubeShadow) DescriptorSet 0
-                              Decorate 261(sCubeShadow) Binding 0
+                              Decorate 261(sCubeShadow) Binding 3
                               Decorate 294(s2DRectShadow) DescriptorSet 0
-                              Decorate 294(s2DRectShadow) Binding 0
+                              Decorate 294(s2DRectShadow) Binding 5
                               Decorate 365(offsets) Flat
+                              Decorate 365(offsets) Location 5
                               Decorate 390(i2D) DescriptorSet 0
-                              Decorate 390(i2D) Binding 0
+                              Decorate 390(i2D) Binding 12
                               Decorate 393(ic2) Flat
+                              Decorate 393(ic2) Location 3
                               Decorate 402(ii3D) DescriptorSet 0
-                              Decorate 402(ii3D) Binding 0
+                              Decorate 402(ii3D) Binding 13
                               Decorate 405(ic3) Flat
+                              Decorate 405(ic3) Location 4
                               Decorate 414(i2DMS) DescriptorSet 0
-                              Decorate 414(i2DMS) Binding 0
+                              Decorate 414(i2DMS) Binding 14
+                              Decorate 423(outColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out
index fedd64a..3d73767 100644
--- a/Test/baseResults/spv.sparseTextureClamp.frag.out
+++ b/Test/baseResults/spv.sparseTextureClamp.frag.out
@@ -42,26 +42,31 @@
                               Name 345  "outColor"
                               Decorate 29(s2D) DescriptorSet 0
                               Decorate 29(s2D) Binding 0
+                              Decorate 33(c2) Location 0
+                              Decorate 36(lodClamp) Location 3
                               Decorate 47(s3D) DescriptorSet 0
-                              Decorate 47(s3D) Binding 0
+                              Decorate 47(s3D) Binding 1
+                              Decorate 51(c3) Location 1
                               Decorate 63(isCube) DescriptorSet 0
-                              Decorate 63(isCube) Binding 0
+                              Decorate 63(isCube) Binding 7
                               Decorate 76(s2DShadow) DescriptorSet 0
-                              Decorate 76(s2DShadow) Binding 0
+                              Decorate 76(s2DShadow) Binding 2
                               Decorate 92(sCubeArrayShadow) DescriptorSet 0
-                              Decorate 92(sCubeArrayShadow) Binding 0
+                              Decorate 92(sCubeArrayShadow) Binding 6
+                              Decorate 95(c4) Location 2
                               Decorate 154(us2DRect) DescriptorSet 0
-                              Decorate 154(us2DRect) Binding 0
+                              Decorate 154(us2DRect) Binding 10
                               Decorate 170(s2DArrayShadow) DescriptorSet 0
-                              Decorate 170(s2DArrayShadow) Binding 0
+                              Decorate 170(s2DArrayShadow) Binding 4
                               Decorate 218(sCubeShadow) DescriptorSet 0
-                              Decorate 218(sCubeShadow) Binding 0
+                              Decorate 218(sCubeShadow) Binding 3
                               Decorate 235(usCubeArray) DescriptorSet 0
-                              Decorate 235(usCubeArray) Binding 0
+                              Decorate 235(usCubeArray) Binding 9
                               Decorate 286(s2DRectShadow) DescriptorSet 0
-                              Decorate 286(s2DRectShadow) Binding 0
+                              Decorate 286(s2DRectShadow) Binding 5
                               Decorate 305(is2DArray) DescriptorSet 0
-                              Decorate 305(is2DArray) Binding 0
+                              Decorate 305(is2DArray) Binding 8
+                              Decorate 345(outColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out
index 206e30a..d80de0f 100644
--- a/Test/baseResults/spv.specConstant.vert.out
+++ b/Test/baseResults/spv.specConstant.vert.out
@@ -31,11 +31,15 @@
                               Name 76  "result"
                               Name 77  "gl_MaxImageUnits"
                               Decorate 9(arraySize) SpecId 16
+                              Decorate 20(color) Location 0
+                              Decorate 22(ucol) Location 0
+                              Decorate 28(size) Location 1
                               Decorate 30(spBool) SpecId 17
                               Decorate 34(scale) SpecId 22
                               Decorate 39(spDouble) SpecId 19
                               Decorate 40(spFloat) SpecId 18
                               Decorate 50(dupArraySize) SpecId 116
+                              Decorate 53(dupUcol) Location 5
                               Decorate 60(spDupBool) SpecId 117
                               Decorate 63(dupScale) SpecId 122
                               Decorate 67(spDupDouble) SpecId 119
diff --git a/Test/baseResults/spv.specConstantComposite.vert.out b/Test/baseResults/spv.specConstantComposite.vert.out
index 20a071b..635ad06 100644
--- a/Test/baseResults/spv.specConstantComposite.vert.out
+++ b/Test/baseResults/spv.specConstantComposite.vert.out
@@ -24,9 +24,11 @@
                               Name 39  "spec_double"
                               Name 42  "global_vec4_array_with_spec_length"
                               Decorate 21(spec_bool) SpecId 203
+                              Decorate 27(color) Location 0
                               Decorate 28(spec_int) SpecId 200
                               Decorate 37(spec_float) SpecId 201
                               Decorate 39(spec_double) SpecId 202
+                              Decorate 42(global_vec4_array_with_spec_length) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
               14:             TypeInt 32 1
diff --git a/Test/baseResults/spv.specTexture.frag.out b/Test/baseResults/spv.specTexture.frag.out
index a4cf47d..c8c2088 100755
--- a/Test/baseResults/spv.specTexture.frag.out
+++ b/Test/baseResults/spv.specTexture.frag.out
@@ -14,6 +14,7 @@
                               Name 13  "tex"
                               Name 19  "offs"
                               Decorate 9(color_out) Location 0
+                              Decorate 13(tex) Location 0
                               Decorate 13(tex) DescriptorSet 0
                               Decorate 13(tex) Binding 0
                               Decorate 19(offs) SpecId 1
diff --git a/Test/baseResults/spv.storageBuffer.vert.out b/Test/baseResults/spv.storageBuffer.vert.out
index 79cf9f1..4911654 100644
--- a/Test/baseResults/spv.storageBuffer.vert.out
+++ b/Test/baseResults/spv.storageBuffer.vert.out
@@ -34,7 +34,7 @@
                               MemberDecorate 22(bb) 0 Offset 0
                               Decorate 22(bb) Block
                               Decorate 24(bbi) DescriptorSet 0
-                              Decorate 24(bbi) Binding 0
+                              Decorate 24(bbi) Binding 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out
index d61c0e4..27a81d2 100644
--- a/Test/baseResults/spv.structAssignment.frag.out
+++ b/Test/baseResults/spv.structAssignment.frag.out
@@ -40,6 +40,7 @@
                               Decorate 40(samp2D) DescriptorSet 0
                               Decorate 40(samp2D) Binding 0
                               Decorate 44(coord) RelaxedPrecision
+                              Decorate 44(coord) Location 0
                               Decorate 45 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out
index 2a114d7..8094a5a 100644
--- a/Test/baseResults/spv.structDeref.frag.out
+++ b/Test/baseResults/spv.structDeref.frag.out
@@ -40,6 +40,7 @@
                               Name 99  "gl_FragColor"
                               Name 116  "samp2D"
                               Name 122  "foo2"
+                              Decorate 61(coord) Location 0
                               Decorate 99(gl_FragColor) Location 0
                               Decorate 116(samp2D) DescriptorSet 0
                               Decorate 116(samp2D) Binding 0
diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out
index e8f8b39..cbb6b11 100644
--- a/Test/baseResults/spv.structure.frag.out
+++ b/Test/baseResults/spv.structure.frag.out
@@ -27,6 +27,7 @@
                               Decorate 45(gl_FragColor) Location 0
                               Decorate 50(samp2D) DescriptorSet 0
                               Decorate 50(samp2D) Binding 0
+                              Decorate 54(coord) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.subpass.frag.out b/Test/baseResults/spv.subpass.frag.out
index 4bc556a..63ae091 100644
--- a/Test/baseResults/spv.subpass.frag.out
+++ b/Test/baseResults/spv.subpass.frag.out
@@ -22,23 +22,26 @@
                               Name 53  "ucolor"
                               Name 56  "usub"
                               Name 61  "usubMS"
+                              Decorate 15(icolor) Location 1
+                              Decorate 27(color) Location 0
                               Decorate 30(sub) DescriptorSet 0
                               Decorate 30(sub) Binding 0
                               Decorate 30(sub) InputAttachmentIndex 1
                               Decorate 35(subMS) DescriptorSet 0
-                              Decorate 35(subMS) Binding 0
+                              Decorate 35(subMS) Binding 1
                               Decorate 35(subMS) InputAttachmentIndex 2
                               Decorate 42(isub) DescriptorSet 0
-                              Decorate 42(isub) Binding 0
+                              Decorate 42(isub) Binding 2
                               Decorate 42(isub) InputAttachmentIndex 3
                               Decorate 45(isubMS) DescriptorSet 0
-                              Decorate 45(isubMS) Binding 0
+                              Decorate 45(isubMS) Binding 3
                               Decorate 45(isubMS) InputAttachmentIndex 4
+                              Decorate 53(ucolor) Location 2
                               Decorate 56(usub) DescriptorSet 0
-                              Decorate 56(usub) Binding 0
+                              Decorate 56(usub) Binding 4
                               Decorate 56(usub) InputAttachmentIndex 5
                               Decorate 61(usubMS) DescriptorSet 0
-                              Decorate 61(usubMS) Binding 0
+                              Decorate 61(usubMS) Binding 5
                               Decorate 61(usubMS) InputAttachmentIndex 6
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out
index 729257c..8721f20 100644
--- a/Test/baseResults/spv.switch.frag.out
+++ b/Test/baseResults/spv.switch.frag.out
@@ -60,12 +60,14 @@
                               Decorate 60(local) RelaxedPrecision
                               Decorate 62(c) RelaxedPrecision
                               Decorate 62(c) Flat
+                              Decorate 62(c) Location 0
                               Decorate 63 RelaxedPrecision
                               Decorate 64 RelaxedPrecision
                               Decorate 66 RelaxedPrecision
                               Decorate 67 RelaxedPrecision
                               Decorate 73(f) RelaxedPrecision
                               Decorate 75(x) RelaxedPrecision
+                              Decorate 75(x) Location 2
                               Decorate 76 RelaxedPrecision
                               Decorate 77 RelaxedPrecision
                               Decorate 79 RelaxedPrecision
@@ -101,6 +103,7 @@
                               Decorate 127 RelaxedPrecision
                               Decorate 129(d) RelaxedPrecision
                               Decorate 129(d) Flat
+                              Decorate 129(d) Location 1
                               Decorate 130 RelaxedPrecision
                               Decorate 134 RelaxedPrecision
                               Decorate 135 RelaxedPrecision
@@ -149,11 +152,13 @@
                               Decorate 221 RelaxedPrecision
                               Decorate 222 RelaxedPrecision
                               Decorate 227(color) RelaxedPrecision
+                              Decorate 227(color) Location 0
                               Decorate 228 RelaxedPrecision
                               Decorate 229 RelaxedPrecision
                               Decorate 230 RelaxedPrecision
                               Decorate 231 RelaxedPrecision
                               Decorate 233(v) RelaxedPrecision
+                              Decorate 233(v) Location 3
                               Decorate 235 RelaxedPrecision
                               Decorate 237 RelaxedPrecision
                               Decorate 239 RelaxedPrecision
diff --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out
index 9b31a26..207948c 100644
--- a/Test/baseResults/spv.swizzle.frag.out
+++ b/Test/baseResults/spv.swizzle.frag.out
@@ -24,7 +24,10 @@
                               Name 81  "c"
                               Name 83  "rep"
                               Name 107  "blend"
+                              Decorate 14(u) Location 1
+                              Decorate 30(t) Location 2
                               Decorate 69(gl_FragColor) Location 0
+                              Decorate 107(blend) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.swizzleInversion.frag.out b/Test/baseResults/spv.swizzleInversion.frag.out
index 7964360..5c7faa6 100644
--- a/Test/baseResults/spv.swizzleInversion.frag.out
+++ b/Test/baseResults/spv.swizzleInversion.frag.out
@@ -20,6 +20,8 @@
                               Name 37  "in3"
                               Name 40  "v32"
                               Name 43  "v31"
+                              Decorate 12(in4) Location 0
+                              Decorate 37(in3) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out
index db77cbb..7f4c44e 100644
--- a/Test/baseResults/spv.test.frag.out
+++ b/Test/baseResults/spv.test.frag.out
@@ -23,9 +23,14 @@
                               Name 49  "blend"
                               Decorate 16(texSampler2D) DescriptorSet 0
                               Decorate 16(texSampler2D) Binding 0
+                              Decorate 20(t) Location 3
+                              Decorate 22(scale) Location 1
                               Decorate 33(texSampler3D) DescriptorSet 0
-                              Decorate 33(texSampler3D) Binding 0
+                              Decorate 33(texSampler3D) Binding 1
+                              Decorate 37(coords) Location 4
                               Decorate 43(gl_FragColor) Location 0
+                              Decorate 46(u) Location 2
+                              Decorate 49(blend) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.test.vert.out b/Test/baseResults/spv.test.vert.out
index 3b06c66..b49edab 100644
--- a/Test/baseResults/spv.test.vert.out
+++ b/Test/baseResults/spv.test.vert.out
@@ -16,7 +16,11 @@
                               Name 15  "gl_Position"
                               Name 18  "transform"
                               Name 21  "position"
+                              Decorate 9(uv) Location 0
+                              Decorate 11(uv_in) Location 5
                               Decorate 15(gl_Position) BuiltIn Position
+                              Decorate 18(transform) Location 0
+                              Decorate 21(position) Location 4
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out
index 3ea7338..54b4d0a 100644
--- a/Test/baseResults/spv.texture.frag.out
+++ b/Test/baseResults/spv.texture.frag.out
@@ -41,17 +41,22 @@
                               Name 304  "t"
                               Decorate 32(texSampler1D) DescriptorSet 0
                               Decorate 32(texSampler1D) Binding 0
+                              Decorate 47(coords2D) Location 4
                               Decorate 76(texSampler2D) DescriptorSet 0
-                              Decorate 76(texSampler2D) Binding 0
+                              Decorate 76(texSampler2D) Binding 1
                               Decorate 104(texSampler3D) DescriptorSet 0
-                              Decorate 104(texSampler3D) Binding 0
+                              Decorate 104(texSampler3D) Binding 2
                               Decorate 130(texSamplerCube) DescriptorSet 0
-                              Decorate 130(texSamplerCube) Binding 0
+                              Decorate 130(texSamplerCube) Binding 3
                               Decorate 145(shadowSampler1D) DescriptorSet 0
-                              Decorate 145(shadowSampler1D) Binding 0
+                              Decorate 145(shadowSampler1D) Binding 4
                               Decorate 164(shadowSampler2D) DescriptorSet 0
-                              Decorate 164(shadowSampler2D) Binding 0
+                              Decorate 164(shadowSampler2D) Binding 5
                               Decorate 291(gl_FragColor) Location 0
+                              Decorate 294(u) Location 2
+                              Decorate 297(blend) Location 0
+                              Decorate 303(scale) Location 1
+                              Decorate 304(t) Location 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.texture.sampler.transform.frag.out b/Test/baseResults/spv.texture.sampler.transform.frag.out
index f2306e7..1bcef05 100644
--- a/Test/baseResults/spv.texture.sampler.transform.frag.out
+++ b/Test/baseResults/spv.texture.sampler.transform.frag.out
@@ -13,8 +13,10 @@
                               Name 9  "color"
                               Name 13  "tex"
                               Name 17  "coord"
+                              Decorate 9(color) Location 0
                               Decorate 13(tex) DescriptorSet 0
                               Decorate 13(tex) Binding 0
+                              Decorate 17(coord) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.texture.vert.out b/Test/baseResults/spv.texture.vert.out
index 3f9336b..d896e5d 100644
--- a/Test/baseResults/spv.texture.vert.out
+++ b/Test/baseResults/spv.texture.vert.out
@@ -25,16 +25,17 @@
                               Name 148  "gl_Position"
                               Decorate 29(texSampler1D) DescriptorSet 0
                               Decorate 29(texSampler1D) Binding 0
+                              Decorate 39(coords2D) Location 0
                               Decorate 56(texSampler2D) DescriptorSet 0
-                              Decorate 56(texSampler2D) Binding 0
+                              Decorate 56(texSampler2D) Binding 1
                               Decorate 80(texSampler3D) DescriptorSet 0
-                              Decorate 80(texSampler3D) Binding 0
+                              Decorate 80(texSampler3D) Binding 2
                               Decorate 96(texSamplerCube) DescriptorSet 0
-                              Decorate 96(texSamplerCube) Binding 0
+                              Decorate 96(texSamplerCube) Binding 3
                               Decorate 106(shadowSampler1D) DescriptorSet 0
-                              Decorate 106(shadowSampler1D) Binding 0
+                              Decorate 106(shadowSampler1D) Binding 4
                               Decorate 118(shadowSampler2D) DescriptorSet 0
-                              Decorate 118(shadowSampler2D) Binding 0
+                              Decorate 118(shadowSampler2D) Binding 5
                               Decorate 148(gl_Position) BuiltIn Position
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.textureBuffer.vert.out b/Test/baseResults/spv.textureBuffer.vert.out
index 4631290..aca9691 100644
--- a/Test/baseResults/spv.textureBuffer.vert.out
+++ b/Test/baseResults/spv.textureBuffer.vert.out
@@ -18,13 +18,13 @@
                               Decorate 9(tBuf) DescriptorSet 0
                               Decorate 9(tBuf) Binding 0
                               Decorate 13(s) DescriptorSet 0
-                              Decorate 13(s) Binding 0
+                              Decorate 13(s) Binding 1
                               Decorate 23(sBuf) DescriptorSet 0
-                              Decorate 23(sBuf) Binding 0
+                              Decorate 23(sBuf) Binding 2
                               Decorate 32(utBuf) DescriptorSet 0
-                              Decorate 32(utBuf) Binding 0
+                              Decorate 32(utBuf) Binding 3
                               Decorate 38(itBuf) DescriptorSet 0
-                              Decorate 38(itBuf) Binding 0
+                              Decorate 38(itBuf) Binding 4
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.textureGatherBiasLod.frag.out b/Test/baseResults/spv.textureGatherBiasLod.frag.out
index aada70d..96a2e6b 100644
--- a/Test/baseResults/spv.textureGatherBiasLod.frag.out
+++ b/Test/baseResults/spv.textureGatherBiasLod.frag.out
@@ -33,12 +33,18 @@
                               Name 296  "fragColor"
                               Decorate 16(s2D) DescriptorSet 0
                               Decorate 16(s2D) Binding 0
+                              Decorate 20(c2) Location 0
+                              Decorate 25(bias) Location 4
                               Decorate 33(s2DArray) DescriptorSet 0
-                              Decorate 33(s2DArray) Binding 0
+                              Decorate 33(s2DArray) Binding 1
+                              Decorate 37(c3) Location 1
                               Decorate 47(sCube) DescriptorSet 0
-                              Decorate 47(sCube) Binding 0
+                              Decorate 47(sCube) Binding 2
                               Decorate 58(sCubeArray) DescriptorSet 0
-                              Decorate 58(sCubeArray) Binding 0
+                              Decorate 58(sCubeArray) Binding 3
+                              Decorate 61(c4) Location 2
+                              Decorate 176(lod) Location 3
+                              Decorate 296(fragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out
index 3f7fd12..e7464f3 100644
--- a/Test/baseResults/spv.types.frag.out
+++ b/Test/baseResults/spv.types.frag.out
@@ -48,13 +48,29 @@
                               Name 161  "i_f4"
                               Name 165  "gl_FragColor"
                               Decorate 96(u_i) Flat
+                              Decorate 96(u_i) Location 0
                               Decorate 98(i_i) Flat
+                              Decorate 98(i_i) Location 8
                               Decorate 105(u_i2) Flat
+                              Decorate 105(u_i2) Location 1
                               Decorate 107(i_i2) Flat
+                              Decorate 107(i_i2) Location 9
                               Decorate 114(u_i3) Flat
+                              Decorate 114(u_i3) Location 2
                               Decorate 116(i_i3) Flat
+                              Decorate 116(i_i3) Location 10
                               Decorate 123(u_i4) Flat
+                              Decorate 123(u_i4) Location 3
                               Decorate 125(i_i4) Flat
+                              Decorate 125(i_i4) Location 11
+                              Decorate 132(u_f) Location 4
+                              Decorate 134(i_f) Location 12
+                              Decorate 141(u_f2) Location 5
+                              Decorate 143(i_f2) Location 13
+                              Decorate 150(u_f3) Location 6
+                              Decorate 152(i_f3) Location 14
+                              Decorate 159(u_f4) Location 7
+                              Decorate 161(i_f4) Location 15
                               Decorate 165(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out
index 612b323..356cd8a 100644
--- a/Test/baseResults/spv.uint.frag.out
+++ b/Test/baseResults/spv.uint.frag.out
@@ -35,6 +35,7 @@
                               Decorate 12(u) RelaxedPrecision
                               Decorate 15(t) RelaxedPrecision
                               Decorate 15(t) Flat
+                              Decorate 15(t) Location 0
                               Decorate 19 RelaxedPrecision
                               Decorate 21 RelaxedPrecision
                               Decorate 27 RelaxedPrecision
@@ -56,11 +57,13 @@
                               Decorate 61 RelaxedPrecision
                               Decorate 62 RelaxedPrecision
                               Decorate 68(c) RelaxedPrecision
+                              Decorate 68(c) Location 0
                               Decorate 72(usampler) RelaxedPrecision
                               Decorate 72(usampler) DescriptorSet 0
                               Decorate 72(usampler) Binding 0
                               Decorate 73 RelaxedPrecision
                               Decorate 77(tc) RelaxedPrecision
+                              Decorate 77(tc) Location 2
                               Decorate 78 RelaxedPrecision
                               Decorate 79 RelaxedPrecision
                               Decorate 80 RelaxedPrecision
@@ -136,10 +139,13 @@
                               Decorate 202 RelaxedPrecision
                               Decorate 203 RelaxedPrecision
                               Decorate 206(f) RelaxedPrecision
+                              Decorate 206(f) Location 1
                               Decorate 208(v) RelaxedPrecision
                               Decorate 208(v) Flat
+                              Decorate 208(v) Location 3
                               Decorate 210(i) RelaxedPrecision
                               Decorate 210(i) Flat
+                              Decorate 210(i) Location 4
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out
index 339d1de..c8f0761 100644
--- a/Test/baseResults/spv.uniformArray.frag.out
+++ b/Test/baseResults/spv.uniformArray.frag.out
@@ -16,6 +16,9 @@
                               Name 35  "alpha"
                               Name 47  "gl_FragColor"
                               Name 52  "texSampler2D"
+                              Decorate 14(color) Location 1
+                              Decorate 25(inColor) Location 0
+                              Decorate 35(alpha) Location 7
                               Decorate 47(gl_FragColor) Location 0
                               Decorate 52(texSampler2D) DescriptorSet 0
                               Decorate 52(texSampler2D) Binding 0
diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out
index cc6d96b..7d37a82 100644
--- a/Test/baseResults/spv.variableArrayIndex.frag.out
+++ b/Test/baseResults/spv.variableArrayIndex.frag.out
@@ -33,12 +33,17 @@
                               Name 63  "coord"
                               Name 69  "constructed"
                               Decorate 10(Count) Flat
+                              Decorate 10(Count) Location 39
                               Decorate 20(foo3) Flat
+                              Decorate 20(foo3) Location 23
                               Decorate 34(foo2) Flat
+                              Decorate 34(foo2) Location 3
                               Decorate 36(foo) Flat
+                              Decorate 36(foo) Location 1
                               Decorate 54(gl_FragColor) Location 0
                               Decorate 59(samp2D) DescriptorSet 0
                               Decorate 59(samp2D) Binding 0
+                              Decorate 63(coord) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out
index d5a59ae..899a756 100644
--- a/Test/baseResults/spv.varyingArray.frag.out
+++ b/Test/baseResults/spv.varyingArray.frag.out
@@ -19,7 +19,11 @@
                               Name 48  "foo"
                               Decorate 13(texSampler2D) DescriptorSet 0
                               Decorate 13(texSampler2D) Binding 0
+                              Decorate 19(TexCoord) Location 2
+                              Decorate 34(color) Location 0
+                              Decorate 39(alpha) Location 1
                               Decorate 45(gl_FragColor) Location 0
+                              Decorate 48(foo) Location 8
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out
index 799def9..dea2c56 100644
--- a/Test/baseResults/spv.varyingArrayIndirect.frag.out
+++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out
@@ -21,8 +21,14 @@
                               Name 56  "gl_FragColor"
                               Decorate 13(texSampler2D) DescriptorSet 0
                               Decorate 13(texSampler2D) Binding 0
+                              Decorate 19(userIn) Location 8
                               Decorate 22(b) Flat
+                              Decorate 22(b) Location 11
+                              Decorate 30(TexCoord) Location 2
                               Decorate 31(a) Flat
+                              Decorate 31(a) Location 10
+                              Decorate 45(color) Location 0
+                              Decorate 50(alpha) Location 1
                               Decorate 56(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out
index 804b32c..33e44cd 100644
--- a/Test/baseResults/spv.voidFunction.frag.out
+++ b/Test/baseResults/spv.voidFunction.frag.out
@@ -18,7 +18,10 @@
                               Name 37  "gl_FragColor"
                               Name 40  "BaseColor"
                               Name 42  "d"
+                              Decorate 24(bigColor) Location 0
                               Decorate 37(gl_FragColor) Location 0
+                              Decorate 40(BaseColor) Location 1
+                              Decorate 42(d) Location 2
                2:             TypeVoid
                3:             TypeFunction 2
               10:             TypeFloat 32
diff --git a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
index 7592cf7..3ca1630 100644
--- a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
+++ b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
@@ -33,7 +33,7 @@
                               MemberDecorate 22(bb) 0 Offset 0
                               Decorate 22(bb) Block
                               Decorate 24(bbi) DescriptorSet 0
-                              Decorate 24(bbi) Binding 0
+                              Decorate 24(bbi) Binding 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out
index 67d44f4..9c51152 100644
--- a/Test/baseResults/spv.whileLoop.frag.out
+++ b/Test/baseResults/spv.whileLoop.frag.out
@@ -15,6 +15,9 @@
                               Name 24  "d"
                               Name 28  "bigColor"
                               Name 33  "gl_FragColor"
+                              Decorate 11(BaseColor) Location 1
+                              Decorate 24(d) Location 2
+                              Decorate 28(bigColor) Location 0
                               Decorate 33(gl_FragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/hlsl.intrinsic.frexp.vert b/Test/hlsl.intrinsic.frexp.vert
index f0fd5e0..90e6bd3 100644
--- a/Test/hlsl.intrinsic.frexp.vert
+++ b/Test/hlsl.intrinsic.frexp.vert
@@ -26,3 +26,4 @@
 #define MATFNS() \
     frexp(inF0, inF1);
 
+void main() { }
diff --git a/Test/hlsl.intrinsics.vert b/Test/hlsl.intrinsics.vert
index c442f16..cc58688 100644
--- a/Test/hlsl.intrinsics.vert
+++ b/Test/hlsl.intrinsics.vert
@@ -412,3 +412,5 @@
     float2x4 r15 = mul(inFM2x3, inFM3x4);
     float3x4 r16 = mul(inFM3x2, inFM2x4);
 }
+
+void main() { }
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index f483536..b72fdb7 100755
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -135,7 +135,7 @@
         {"hlsl.amend.frag", "f1"},
         {"hlsl.aliasOpaque.frag", "main"},
         {"hlsl.array.frag", "PixelShaderFunction"},
-        {"hlsl.array.implicit-size.frag", "PixelShaderFunction"},
+        {"hlsl.array.implicit-size.frag", "main"},
         {"hlsl.array.multidim.frag", "main"},
         {"hlsl.assoc.frag", "PixelShaderFunction"},
         {"hlsl.attribute.frag", "PixelShaderFunction"},
@@ -193,8 +193,8 @@
         {"hlsl.entry-in.frag", "PixelShaderFunction"},
         {"hlsl.entry-out.frag", "PixelShaderFunction"},
         {"hlsl.fraggeom.frag", "main"},
-        {"hlsl.float1.frag", "PixelShaderFunction"},
-        {"hlsl.float4.frag", "PixelShaderFunction"},
+        {"hlsl.float1.frag", "ShaderFunction"},
+        {"hlsl.float4.frag", "ShaderFunction"},
         {"hlsl.flatten.return.frag", "main"},
         {"hlsl.flattenOpaque.frag", "main"},
         {"hlsl.flattenOpaqueInit.vert", "main"},
@@ -257,7 +257,7 @@
         {"hlsl.intrinsics.promote.frag", "main"},
         {"hlsl.intrinsics.promote.down.frag", "main"},
         {"hlsl.intrinsics.promote.outputs.frag", "main"},
-        {"hlsl.layout.frag", "main"},
+        {"hlsl.layout.frag", "PixelShaderFunction"},
         {"hlsl.layoutOverride.vert", "main"},
         {"hlsl.load.2dms.dx10.frag", "main"},
         {"hlsl.load.array.dx10.frag", "main"},
@@ -348,7 +348,7 @@
         {"hlsl.scalar-length.frag", "main"},
         {"hlsl.scalarCast.vert", "main"},
         {"hlsl.semicolons.frag", "main"},
-        {"hlsl.shapeConv.frag", "main"},
+        {"hlsl.shapeConv.frag", "PixelShaderFunction"},
         {"hlsl.shapeConvRet.frag", "main"},
         {"hlsl.singleArgIntPromo.vert", "main"},
         {"hlsl.self_cast.frag", "main"},
@@ -389,9 +389,9 @@
         {"hlsl.texture.struct.frag", "main"},
         {"hlsl.texture.subvec4.frag", "main"},
         {"hlsl.this.frag", "main"},
-        {"hlsl.intrinsics.vert", "VertexShaderFunction"},
-        {"hlsl.intrinsic.frexp.vert", "VertexShaderFunction"},
-        {"hlsl.matType.frag", "PixelShaderFunction"},
+        {"hlsl.intrinsics.vert", "main"},
+        {"hlsl.intrinsic.frexp.vert", "main"},
+        {"hlsl.matType.frag", "ShaderFunction"},
         {"hlsl.matType.bool.frag", "main"},
         {"hlsl.matType.int.frag", "main"},
         {"hlsl.max.frag", "PixelShaderFunction"},
@@ -406,7 +406,7 @@
         {"hlsl.sin.frag", "PixelShaderFunction"},
         {"hlsl.struct.frag", "PixelShaderFunction"},
         {"hlsl.switch.frag", "PixelShaderFunction"},
-        {"hlsl.swizzle.frag", "PixelShaderFunction"},
+        {"hlsl.swizzle.frag", "ShaderFunction"},
         {"hlsl.target.frag", "main"},
         {"hlsl.targetStruct1.frag", "main"},
         {"hlsl.targetStruct2.frag", "main"},
@@ -417,7 +417,7 @@
         {"hlsl.type.half.frag", "main"},
         {"hlsl.type.identifier.frag", "main"},
         {"hlsl.typeGraphCopy.vert", "main"},
-        {"hlsl.typedef.frag", "PixelShaderFunction"},
+        {"hlsl.typedef.frag", "ShaderFunction"},
         {"hlsl.whileLoop.frag", "PixelShaderFunction"},
         {"hlsl.void.frag", "PixelShaderFunction"},
         {"hlsl.type.type.conversion.all.frag", "main"}
diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h
index 8d2ebd9..9c4fc32 100755
--- a/gtests/TestFixture.h
+++ b/gtests/TestFixture.h
@@ -253,6 +253,9 @@
         glslang::TProgram program;
         program.addShader(&shader);
         success &= program.link(controls);
+#ifndef GLSLANG_WEB
+        success &= program.mapIO();
+#endif
 
         spv::SpvBuildLogger logger;
 
@@ -356,6 +359,9 @@
         glslang::TProgram program;
         program.addShader(&shader);
         success &= program.link(controls);
+#ifndef GLSLANG_WEB
+        success &= program.mapIO();
+#endif
 
         spv::SpvBuildLogger logger;