diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out
index f285c7a3ef3ed382f90cc35220ab126322404846..aa63e5d671b2a39239eeec481e4935664658309d 100644
--- a/Test/baseResults/150.frag.out
+++ b/Test/baseResults/150.frag.out
@@ -28,51 +28,51 @@ ERROR: node is still EOpNull!
 0:33      Sequence
 0:33        move second child to first child (temp 2-component vector of int)
 0:33          't11' (temp 2-component vector of int)
-0:33          Function Call: textureSize(s21; (global 2-component vector of int)
+0:33          Function Call: textureSize(s2M1; (global 2-component vector of int)
 0:33            'sms' (uniform sampler2DMS)
 0:34      Sequence
 0:34        move second child to first child (temp 2-component vector of int)
 0:34          't12' (temp 2-component vector of int)
-0:34          Function Call: textureSize(is21; (global 2-component vector of int)
+0:34          Function Call: textureSize(is2M1; (global 2-component vector of int)
 0:34            'isms' (uniform isampler2DMS)
 0:35      Sequence
 0:35        move second child to first child (temp 2-component vector of int)
 0:35          't13' (temp 2-component vector of int)
-0:35          Function Call: textureSize(us21; (global 2-component vector of int)
+0:35          Function Call: textureSize(us2M1; (global 2-component vector of int)
 0:35            'usms' (uniform usampler2DMS)
 0:36      Sequence
 0:36        move second child to first child (temp 3-component vector of int)
 0:36          't21' (temp 3-component vector of int)
-0:36          Function Call: textureSize(sA21; (global 3-component vector of int)
+0:36          Function Call: textureSize(sA2M1; (global 3-component vector of int)
 0:36            'smsa' (uniform sampler2DMSArray)
 0:37      Sequence
 0:37        move second child to first child (temp 3-component vector of int)
 0:37          't22' (temp 3-component vector of int)
-0:37          Function Call: textureSize(isA21; (global 3-component vector of int)
+0:37          Function Call: textureSize(isA2M1; (global 3-component vector of int)
 0:37            'ismsa' (uniform isampler2DMSArray)
 0:38      Sequence
 0:38        move second child to first child (temp 3-component vector of int)
 0:38          't23' (temp 3-component vector of int)
-0:38          Function Call: textureSize(usA21; (global 3-component vector of int)
+0:38          Function Call: textureSize(usA2M1; (global 3-component vector of int)
 0:38            'usmsa' (uniform usampler2DMSArray)
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          't31' (temp 4-component vector of float)
-0:39          Function Call: texelFetch(s21;vi2;i1; (global 4-component vector of float)
+0:39          Function Call: texelFetch(s2M1;vi2;i1; (global 4-component vector of float)
 0:39            'sms' (uniform sampler2DMS)
 0:39            'p2' (flat in 2-component vector of int)
 0:39            'samp' (flat in int)
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          't32' (temp 4-component vector of int)
-0:40          Function Call: texelFetch(is21;vi2;i1; (global 4-component vector of int)
+0:40          Function Call: texelFetch(is2M1;vi2;i1; (global 4-component vector of int)
 0:40            'isms' (uniform isampler2DMS)
 0:40            'p2' (flat in 2-component vector of int)
 0:40            'samp' (flat in int)
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          't33' (temp 4-component vector of uint)
-0:41          Function Call: texelFetch(us21;vi2;i1; (global 4-component vector of uint)
+0:41          Function Call: texelFetch(us2M1;vi2;i1; (global 4-component vector of uint)
 0:41            'usms' (uniform usampler2DMS)
 0:41            'p2' (flat in 2-component vector of int)
 0:41            Constant:
@@ -80,14 +80,14 @@ ERROR: node is still EOpNull!
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of float)
 0:42          't41' (temp 4-component vector of float)
-0:42          Function Call: texelFetch(sA21;vi3;i1; (global 4-component vector of float)
+0:42          Function Call: texelFetch(sA2M1;vi3;i1; (global 4-component vector of float)
 0:42            'smsa' (uniform sampler2DMSArray)
 0:42            'p3' (flat in 3-component vector of int)
 0:42            'samp' (flat in int)
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of int)
 0:43          't42' (temp 4-component vector of int)
-0:43          Function Call: texelFetch(isA21;vi3;i1; (global 4-component vector of int)
+0:43          Function Call: texelFetch(isA2M1;vi3;i1; (global 4-component vector of int)
 0:43            'ismsa' (uniform isampler2DMSArray)
 0:43            Constant:
 0:43              2 (const int)
@@ -97,7 +97,7 @@ ERROR: node is still EOpNull!
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of uint)
 0:44          't43' (temp 4-component vector of uint)
-0:44          Function Call: texelFetch(usA21;vi3;i1; (global 4-component vector of uint)
+0:44          Function Call: texelFetch(usA2M1;vi3;i1; (global 4-component vector of uint)
 0:44            'usmsa' (uniform usampler2DMSArray)
 0:44            'p3' (flat in 3-component vector of int)
 0:44            'samp' (flat in int)
@@ -143,51 +143,51 @@ ERROR: node is still EOpNull!
 0:33      Sequence
 0:33        move second child to first child (temp 2-component vector of int)
 0:33          't11' (temp 2-component vector of int)
-0:33          Function Call: textureSize(s21; (global 2-component vector of int)
+0:33          Function Call: textureSize(s2M1; (global 2-component vector of int)
 0:33            'sms' (uniform sampler2DMS)
 0:34      Sequence
 0:34        move second child to first child (temp 2-component vector of int)
 0:34          't12' (temp 2-component vector of int)
-0:34          Function Call: textureSize(is21; (global 2-component vector of int)
+0:34          Function Call: textureSize(is2M1; (global 2-component vector of int)
 0:34            'isms' (uniform isampler2DMS)
 0:35      Sequence
 0:35        move second child to first child (temp 2-component vector of int)
 0:35          't13' (temp 2-component vector of int)
-0:35          Function Call: textureSize(us21; (global 2-component vector of int)
+0:35          Function Call: textureSize(us2M1; (global 2-component vector of int)
 0:35            'usms' (uniform usampler2DMS)
 0:36      Sequence
 0:36        move second child to first child (temp 3-component vector of int)
 0:36          't21' (temp 3-component vector of int)
-0:36          Function Call: textureSize(sA21; (global 3-component vector of int)
+0:36          Function Call: textureSize(sA2M1; (global 3-component vector of int)
 0:36            'smsa' (uniform sampler2DMSArray)
 0:37      Sequence
 0:37        move second child to first child (temp 3-component vector of int)
 0:37          't22' (temp 3-component vector of int)
-0:37          Function Call: textureSize(isA21; (global 3-component vector of int)
+0:37          Function Call: textureSize(isA2M1; (global 3-component vector of int)
 0:37            'ismsa' (uniform isampler2DMSArray)
 0:38      Sequence
 0:38        move second child to first child (temp 3-component vector of int)
 0:38          't23' (temp 3-component vector of int)
-0:38          Function Call: textureSize(usA21; (global 3-component vector of int)
+0:38          Function Call: textureSize(usA2M1; (global 3-component vector of int)
 0:38            'usmsa' (uniform usampler2DMSArray)
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          't31' (temp 4-component vector of float)
-0:39          Function Call: texelFetch(s21;vi2;i1; (global 4-component vector of float)
+0:39          Function Call: texelFetch(s2M1;vi2;i1; (global 4-component vector of float)
 0:39            'sms' (uniform sampler2DMS)
 0:39            'p2' (flat in 2-component vector of int)
 0:39            'samp' (flat in int)
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          't32' (temp 4-component vector of int)
-0:40          Function Call: texelFetch(is21;vi2;i1; (global 4-component vector of int)
+0:40          Function Call: texelFetch(is2M1;vi2;i1; (global 4-component vector of int)
 0:40            'isms' (uniform isampler2DMS)
 0:40            'p2' (flat in 2-component vector of int)
 0:40            'samp' (flat in int)
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          't33' (temp 4-component vector of uint)
-0:41          Function Call: texelFetch(us21;vi2;i1; (global 4-component vector of uint)
+0:41          Function Call: texelFetch(us2M1;vi2;i1; (global 4-component vector of uint)
 0:41            'usms' (uniform usampler2DMS)
 0:41            'p2' (flat in 2-component vector of int)
 0:41            Constant:
@@ -195,14 +195,14 @@ ERROR: node is still EOpNull!
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of float)
 0:42          't41' (temp 4-component vector of float)
-0:42          Function Call: texelFetch(sA21;vi3;i1; (global 4-component vector of float)
+0:42          Function Call: texelFetch(sA2M1;vi3;i1; (global 4-component vector of float)
 0:42            'smsa' (uniform sampler2DMSArray)
 0:42            'p3' (flat in 3-component vector of int)
 0:42            'samp' (flat in int)
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of int)
 0:43          't42' (temp 4-component vector of int)
-0:43          Function Call: texelFetch(isA21;vi3;i1; (global 4-component vector of int)
+0:43          Function Call: texelFetch(isA2M1;vi3;i1; (global 4-component vector of int)
 0:43            'ismsa' (uniform isampler2DMSArray)
 0:43            Constant:
 0:43              2 (const int)
@@ -212,7 +212,7 @@ ERROR: node is still EOpNull!
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of uint)
 0:44          't43' (temp 4-component vector of uint)
-0:44          Function Call: texelFetch(usA21;vi3;i1; (global 4-component vector of uint)
+0:44          Function Call: texelFetch(usA2M1;vi3;i1; (global 4-component vector of uint)
 0:44            'usmsa' (uniform usampler2DMSArray)
 0:44            'p3' (flat in 3-component vector of int)
 0:44            'samp' (flat in int)
diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out
index b33a0442dbe505526e3cd39fdc9460d745fe17cf..b48460c281ccb6391cce76560176fb37a96f0d93 100644
--- a/Test/baseResults/310.frag.out
+++ b/Test/baseResults/310.frag.out
@@ -285,7 +285,7 @@ ERROR: node is still EOpNull!
 0:101              3 (const int)
 0:102      move second child to first child (temp highp 2-component vector of int)
 0:102        'v2' (temp highp 2-component vector of int)
-0:102        Function Call: textureSize(s21; (global highp 2-component vector of int)
+0:102        Function Call: textureSize(s2M1; (global highp 2-component vector of int)
 0:102          's2dms' (uniform highp sampler2DMS)
 0:103      move second child to first child (temp highp 2-component vector of int)
 0:103        'v2' (temp highp 2-component vector of int)
@@ -774,7 +774,7 @@ ERROR: node is still EOpNull!
 0:101              3 (const int)
 0:102      move second child to first child (temp highp 2-component vector of int)
 0:102        'v2' (temp highp 2-component vector of int)
-0:102        Function Call: textureSize(s21; (global highp 2-component vector of int)
+0:102        Function Call: textureSize(s2M1; (global highp 2-component vector of int)
 0:102          's2dms' (uniform highp sampler2DMS)
 0:103      move second child to first child (temp highp 2-component vector of int)
 0:103        'v2' (temp highp 2-component vector of int)
diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out
index dee5d7135cd316b2e46f125602f26330db8917f3..208cd56e3da041fea445008bbcfda4ecfeb122a8 100644
--- a/Test/baseResults/310.vert.out
+++ b/Test/baseResults/310.vert.out
@@ -211,16 +211,16 @@ ERROR: node is still EOpNull!
 0:?     Sequence
 0:63      move second child to first child (temp highp 2-component vector of int)
 0:63        'v2' (temp highp 2-component vector of int)
-0:63        Function Call: textureSize(s21; (global highp 2-component vector of int)
+0:63        Function Call: textureSize(s2M1; (global highp 2-component vector of int)
 0:63          's2dms' (uniform highp sampler2DMS)
 0:64      move second child to first child (temp highp 2-component vector of int)
 0:64        'v2' (temp highp 2-component vector of int)
-0:64        Function Call: textureSize(us21; (global highp 2-component vector of int)
+0:64        Function Call: textureSize(us2M1; (global highp 2-component vector of int)
 0:64          'us2dms' (uniform highp usampler2DMS)
 0:65      Sequence
 0:65        move second child to first child (temp highp 4-component vector of float)
 0:65          'v4' (temp highp 4-component vector of float)
-0:65          Function Call: texelFetch(s21;vi2;i1; (global highp 4-component vector of float)
+0:65          Function Call: texelFetch(s2M1;vi2;i1; (global highp 4-component vector of float)
 0:65            's2dms' (uniform highp sampler2DMS)
 0:65            'v2' (temp highp 2-component vector of int)
 0:65            Constant:
@@ -228,7 +228,7 @@ ERROR: node is still EOpNull!
 0:66      Sequence
 0:66        move second child to first child (temp highp 4-component vector of int)
 0:66          'iv4' (temp highp 4-component vector of int)
-0:66          Function Call: texelFetch(is21;vi2;i1; (global highp 4-component vector of int)
+0:66          Function Call: texelFetch(is2M1;vi2;i1; (global highp 4-component vector of int)
 0:66            'is2dms' (uniform highp isampler2DMS)
 0:66            'v2' (temp highp 2-component vector of int)
 0:66            Constant:
@@ -937,16 +937,16 @@ ERROR: node is still EOpNull!
 0:?     Sequence
 0:63      move second child to first child (temp highp 2-component vector of int)
 0:63        'v2' (temp highp 2-component vector of int)
-0:63        Function Call: textureSize(s21; (global highp 2-component vector of int)
+0:63        Function Call: textureSize(s2M1; (global highp 2-component vector of int)
 0:63          's2dms' (uniform highp sampler2DMS)
 0:64      move second child to first child (temp highp 2-component vector of int)
 0:64        'v2' (temp highp 2-component vector of int)
-0:64        Function Call: textureSize(us21; (global highp 2-component vector of int)
+0:64        Function Call: textureSize(us2M1; (global highp 2-component vector of int)
 0:64          'us2dms' (uniform highp usampler2DMS)
 0:65      Sequence
 0:65        move second child to first child (temp highp 4-component vector of float)
 0:65          'v4' (temp highp 4-component vector of float)
-0:65          Function Call: texelFetch(s21;vi2;i1; (global highp 4-component vector of float)
+0:65          Function Call: texelFetch(s2M1;vi2;i1; (global highp 4-component vector of float)
 0:65            's2dms' (uniform highp sampler2DMS)
 0:65            'v2' (temp highp 2-component vector of int)
 0:65            Constant:
@@ -954,7 +954,7 @@ ERROR: node is still EOpNull!
 0:66      Sequence
 0:66        move second child to first child (temp highp 4-component vector of int)
 0:66          'iv4' (temp highp 4-component vector of int)
-0:66          Function Call: texelFetch(is21;vi2;i1; (global highp 4-component vector of int)
+0:66          Function Call: texelFetch(is2M1;vi2;i1; (global highp 4-component vector of int)
 0:66            'is2dms' (uniform highp isampler2DMS)
 0:66            'v2' (temp highp 2-component vector of int)
 0:66            Constant:
diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out
index d536a9013689ae4ffe1c0605c2ebb8293bfcf3b0..b31639f145eca16cc796258386494cda994efd5a 100644
--- a/Test/baseResults/420.vert.out
+++ b/Test/baseResults/420.vert.out
@@ -204,13 +204,13 @@ ERROR: node is still EOpNull!
 0:117      Sequence
 0:117        move second child to first child (temp 4-component vector of float)
 0:117          'col' (temp 4-component vector of float)
-0:117          Function Call: imageLoad(I21;vi2;i1; (global 4-component vector of float)
+0:117          Function Call: imageLoad(I2M1;vi2;i1; (global 4-component vector of float)
 0:117            'img2DMS' (uniform image2DMS)
 0:117            Construct ivec2 (temp 2-component vector of int)
 0:117              'i' (temp int)
 0:117              'i' (temp int)
 0:117            'i' (temp int)
-0:118      Function Call: imageStore(I21;vi2;i1;vf4; (global void)
+0:118      Function Call: imageStore(I2M1;vi2;i1;vf4; (global void)
 0:118        'img2DMSWO' (writeonly uniform image2DMS)
 0:118        Construct ivec2 (temp 2-component vector of int)
 0:118          'i' (temp int)
@@ -221,7 +221,7 @@ ERROR: node is still EOpNull!
 0:118          0.000000
 0:118          0.000000
 0:118          0.000000
-0:119      Function Call: imageLoad(I21;vi2;i1; (global 4-component vector of float)
+0:119      Function Call: imageLoad(I2M1;vi2;i1; (global 4-component vector of float)
 0:119        'img2DMSWO' (writeonly uniform image2DMS)
 0:119        Construct ivec2 (temp 2-component vector of int)
 0:119          'i' (temp int)
@@ -449,13 +449,13 @@ ERROR: node is still EOpNull!
 0:117      Sequence
 0:117        move second child to first child (temp 4-component vector of float)
 0:117          'col' (temp 4-component vector of float)
-0:117          Function Call: imageLoad(I21;vi2;i1; (global 4-component vector of float)
+0:117          Function Call: imageLoad(I2M1;vi2;i1; (global 4-component vector of float)
 0:117            'img2DMS' (uniform image2DMS)
 0:117            Construct ivec2 (temp 2-component vector of int)
 0:117              'i' (temp int)
 0:117              'i' (temp int)
 0:117            'i' (temp int)
-0:118      Function Call: imageStore(I21;vi2;i1;vf4; (global void)
+0:118      Function Call: imageStore(I2M1;vi2;i1;vf4; (global void)
 0:118        'img2DMSWO' (writeonly uniform image2DMS)
 0:118        Construct ivec2 (temp 2-component vector of int)
 0:118          'i' (temp int)
@@ -466,7 +466,7 @@ ERROR: node is still EOpNull!
 0:118          0.000000
 0:118          0.000000
 0:118          0.000000
-0:119      Function Call: imageLoad(I21;vi2;i1; (global 4-component vector of float)
+0:119      Function Call: imageLoad(I2M1;vi2;i1; (global 4-component vector of float)
 0:119        'img2DMSWO' (writeonly uniform image2DMS)
 0:119        Construct ivec2 (temp 2-component vector of int)
 0:119          'i' (temp int)
diff --git a/Test/baseResults/430.vert.out b/Test/baseResults/430.vert.out
index c3ef534f3f25ca25de4ee4c5db71eec558828b0c..3f21e1defe29470e30ce0f796492baeae66a59cb 100644
--- a/Test/baseResults/430.vert.out
+++ b/Test/baseResults/430.vert.out
@@ -105,19 +105,19 @@ ERROR: node is still EOpNull!
 0:168      Sequence
 0:168        move second child to first child (temp int)
 0:168          's' (temp int)
-0:168          Function Call: textureSamples(s21; (global int)
+0:168          Function Call: textureSamples(s2M1; (global int)
 0:168            's2dms' (uniform sampler2DMS)
 0:169      add second child into first child (temp int)
 0:169        's' (temp int)
-0:169        Function Call: textureSamples(usA21; (global int)
+0:169        Function Call: textureSamples(usA2M1; (global int)
 0:169          'us2dmsa' (uniform usampler2DMSArray)
 0:170      add second child into first child (temp int)
 0:170        's' (temp int)
-0:170        Function Call: imageSamples(iI21; (global int)
+0:170        Function Call: imageSamples(iI2M1; (global int)
 0:170          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
 0:171      add second child into first child (temp int)
 0:171        's' (temp int)
-0:171        Function Call: imageSamples(IA21; (global int)
+0:171        Function Call: imageSamples(IA2M1; (global int)
 0:171          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)
 0:176  Function Definition: fooq2( (global void)
 0:176    Function Parameters: 
@@ -125,19 +125,19 @@ ERROR: node is still EOpNull!
 0:178      Sequence
 0:178        move second child to first child (temp int)
 0:178          's' (temp int)
-0:178          Function Call: textureSamples(s21; (global int)
+0:178          Function Call: textureSamples(s2M1; (global int)
 0:178            's2dms' (uniform sampler2DMS)
 0:179      add second child into first child (temp int)
 0:179        's' (temp int)
-0:179        Function Call: textureSamples(usA21; (global int)
+0:179        Function Call: textureSamples(usA2M1; (global int)
 0:179          'us2dmsa' (uniform usampler2DMSArray)
 0:180      add second child into first child (temp int)
 0:180        's' (temp int)
-0:180        Function Call: imageSamples(iI21; (global int)
+0:180        Function Call: imageSamples(iI2M1; (global int)
 0:180          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
 0:181      add second child into first child (temp int)
 0:181        's' (temp int)
-0:181        Function Call: imageSamples(IA21; (global int)
+0:181        Function Call: imageSamples(IA2M1; (global int)
 0:181          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)
 0:?   Linker Objects
 0:?     'v4' (layout(location=3 ) temp 4-component vector of float)
@@ -237,19 +237,19 @@ ERROR: node is still EOpNull!
 0:168      Sequence
 0:168        move second child to first child (temp int)
 0:168          's' (temp int)
-0:168          Function Call: textureSamples(s21; (global int)
+0:168          Function Call: textureSamples(s2M1; (global int)
 0:168            's2dms' (uniform sampler2DMS)
 0:169      add second child into first child (temp int)
 0:169        's' (temp int)
-0:169        Function Call: textureSamples(usA21; (global int)
+0:169        Function Call: textureSamples(usA2M1; (global int)
 0:169          'us2dmsa' (uniform usampler2DMSArray)
 0:170      add second child into first child (temp int)
 0:170        's' (temp int)
-0:170        Function Call: imageSamples(iI21; (global int)
+0:170        Function Call: imageSamples(iI2M1; (global int)
 0:170          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
 0:171      add second child into first child (temp int)
 0:171        's' (temp int)
-0:171        Function Call: imageSamples(IA21; (global int)
+0:171        Function Call: imageSamples(IA2M1; (global int)
 0:171          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)
 0:176  Function Definition: fooq2( (global void)
 0:176    Function Parameters: 
@@ -257,19 +257,19 @@ ERROR: node is still EOpNull!
 0:178      Sequence
 0:178        move second child to first child (temp int)
 0:178          's' (temp int)
-0:178          Function Call: textureSamples(s21; (global int)
+0:178          Function Call: textureSamples(s2M1; (global int)
 0:178            's2dms' (uniform sampler2DMS)
 0:179      add second child into first child (temp int)
 0:179        's' (temp int)
-0:179        Function Call: textureSamples(usA21; (global int)
+0:179        Function Call: textureSamples(usA2M1; (global int)
 0:179          'us2dmsa' (uniform usampler2DMSArray)
 0:180      add second child into first child (temp int)
 0:180        's' (temp int)
-0:180        Function Call: imageSamples(iI21; (global int)
+0:180        Function Call: imageSamples(iI2M1; (global int)
 0:180          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
 0:181      add second child into first child (temp int)
 0:181        's' (temp int)
-0:181        Function Call: imageSamples(IA21; (global int)
+0:181        Function Call: imageSamples(IA2M1; (global int)
 0:181          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)
 0:?   Linker Objects
 0:?     'v4' (layout(location=3 ) temp 4-component vector of float)
diff --git a/Test/baseResults/450.frag.out b/Test/baseResults/450.frag.out
index fa47d11f62be403a7b6ca015397c4ce9f8d8685c..7fcfa75218c8521eed1aa52b6af18bbf49ea1ebf 100644
--- a/Test/baseResults/450.frag.out
+++ b/Test/baseResults/450.frag.out
@@ -105,24 +105,24 @@ Shader version: 450
 0:44      Sequence
 0:44        move second child to first child (temp int)
 0:44          's' (temp int)
-0:44          Function Call: textureSamples(s21; (global int)
+0:44          Function Call: textureSamples(s2M1; (global int)
 0:44            's2dms' (uniform sampler2DMS)
 0:45      add second child into first child (temp int)
 0:45        's' (temp int)
-0:45        Function Call: textureSamples(usA21; (global int)
+0:45        Function Call: textureSamples(usA2M1; (global int)
 0:45          'us2dmsa' (uniform usampler2DMSArray)
 0:46      add second child into first child (temp int)
 0:46        's' (temp int)
-0:46        Function Call: imageSamples(iI21; (global int)
+0:46        Function Call: imageSamples(iI2M1; (global int)
 0:46          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
 0:47      add second child into first child (temp int)
 0:47        's' (temp int)
-0:47        Function Call: imageSamples(IA21; (global int)
+0:47        Function Call: imageSamples(IA2M1; (global int)
 0:47          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)
 0:48      Sequence
 0:48        move second child to first child (temp float)
 0:48          'f' (temp float)
-0:48          Function Call: imageAtomicExchange(IA21;vi3;i1;f1; (global float)
+0:48          Function Call: imageAtomicExchange(IA2M1;vi3;i1;f1; (global float)
 0:48            'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)
 0:48            Convert float to int (temp 3-component vector of int)
 0:48              'in3' (smooth in 3-component vector of float)
@@ -249,24 +249,24 @@ Shader version: 450
 0:44      Sequence
 0:44        move second child to first child (temp int)
 0:44          's' (temp int)
-0:44          Function Call: textureSamples(s21; (global int)
+0:44          Function Call: textureSamples(s2M1; (global int)
 0:44            's2dms' (uniform sampler2DMS)
 0:45      add second child into first child (temp int)
 0:45        's' (temp int)
-0:45        Function Call: textureSamples(usA21; (global int)
+0:45        Function Call: textureSamples(usA2M1; (global int)
 0:45          'us2dmsa' (uniform usampler2DMSArray)
 0:46      add second child into first child (temp int)
 0:46        's' (temp int)
-0:46        Function Call: imageSamples(iI21; (global int)
+0:46        Function Call: imageSamples(iI2M1; (global int)
 0:46          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
 0:47      add second child into first child (temp int)
 0:47        's' (temp int)
-0:47        Function Call: imageSamples(IA21; (global int)
+0:47        Function Call: imageSamples(IA2M1; (global int)
 0:47          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)
 0:48      Sequence
 0:48        move second child to first child (temp float)
 0:48          'f' (temp float)
-0:48          Function Call: imageAtomicExchange(IA21;vi3;i1;f1; (global float)
+0:48          Function Call: imageAtomicExchange(IA2M1;vi3;i1;f1; (global float)
 0:48            'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)
 0:48            Convert float to int (temp 3-component vector of int)
 0:48              'in3' (smooth in 3-component vector of float)
diff --git a/Test/baseResults/newTexture.frag.out b/Test/baseResults/newTexture.frag.out
index 68094b37ff833373560785577346b5f32c61fa1e..8690143a42cab5c0da1c73a2bad85af223d20ab5 100644
--- a/Test/baseResults/newTexture.frag.out
+++ b/Test/baseResults/newTexture.frag.out
@@ -184,7 +184,7 @@ Shader version: 430
 0:64          'iv' (temp 4-component vector of int)
 0:66      add second child into first child (temp 4-component vector of int)
 0:66        'iv' (temp 4-component vector of int)
-0:66        Function Call: texelFetch(is21;vi2;i1; (global 4-component vector of int)
+0:66        Function Call: texelFetch(is2M1;vi2;i1; (global 4-component vector of int)
 0:66          'is2Dms' (uniform isampler2DMS)
 0:66          'ic2D' (flat in 2-component vector of int)
 0:66          'ic1D' (flat in int)
@@ -436,7 +436,7 @@ Shader version: 430
 0:64          'iv' (temp 4-component vector of int)
 0:66      add second child into first child (temp 4-component vector of int)
 0:66        'iv' (temp 4-component vector of int)
-0:66        Function Call: texelFetch(is21;vi2;i1; (global 4-component vector of int)
+0:66        Function Call: texelFetch(is2M1;vi2;i1; (global 4-component vector of int)
 0:66          'is2Dms' (uniform isampler2DMS)
 0:66          'ic2D' (flat in 2-component vector of int)
 0:66          'ic1D' (flat in int)
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index e58e2ce2d90fefb802317360113c89858fba8a1b..981beebc62c0237bedf20e2d6859dab442a27043 100644
--- a/glslang/Include/revision.h
+++ b/glslang/Include/revision.h
@@ -2,5 +2,5 @@
 // For the version, it uses the latest git tag followed by the number of commits.
 // For the date, it uses the current date (when then script is run).
 
-#define GLSLANG_REVISION "2.3.716"
+#define GLSLANG_REVISION "2.3.717"
 #define GLSLANG_DATE "16-Aug-2015"
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 0ec183c3afdd21f5f7f7de7c914710af3a457547..7330106c326db2f4c625a0016ed2a1c4b999d8d4 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -2152,8 +2152,9 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, TString& typeName, int /*
                                 if (bias && compare)
                                     continue;
 
-                                // non-optional lod argument (lod that's not driven by lod loop)
-                                if (fetch && sampler.dim != EsdBuffer && sampler.dim != EsdRect && !sampler.ms)
+                                // non-optional lod argument (lod that's not driven by lod loop) or sample
+                                if ((fetch && sampler.dim != EsdBuffer && sampler.dim != EsdRect && !sampler.ms) ||
+                                    (sampler.ms && fetch))
                                     s.append(",int");
 
                                 // non-optional lod
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index 3a401ecd7cb6c651c922157ea62e79508014c089..d389356f30b2712288472f30c458d45a04b36e79 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -89,6 +89,8 @@ void TType::buildMangledName(TString& mangledName)
         case EsdBuffer:   mangledName += "B";  break;
         default: break; // some compilers want this
         }
+        if (sampler.ms)
+            mangledName += "M";
         break;
     case EbtStruct:
         mangledName += "struct-";