diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out
index 9101e22f8e6d363ff89b999301a943adcf616a8f..b6557efa50cfe6fa57c9dc5ee66d5028e00cf255 100755
--- a/Test/baseResults/hlsl.basic.comp.out
+++ b/Test/baseResults/hlsl.basic.comp.out
@@ -2,13 +2,17 @@ hlsl.basic.comp
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:4  Function Definition: main(i1; (temp void)
+0:4  Function Definition: main(i1;i1; (temp void)
 0:4    Function Parameters: 
-0:4      'dti' (in int LocalInvocationID)
+0:4      'dti' (in int GlobalInvocationID)
+0:4      'gti' (in int LocalInvocationID)
 0:?     Sequence
-0:5      'dti' (in int LocalInvocationID)
+0:5      subtract (temp int)
+0:5        'dti' (in int GlobalInvocationID)
+0:5        'gti' (in int LocalInvocationID)
 0:?   Linker Objects
-0:?     'dti' (in int LocalInvocationID)
+0:?     'dti' (in int GlobalInvocationID)
+0:?     'gti' (in int LocalInvocationID)
 0:?     'a' (shared 100-element array of 4-component vector of float)
 
 
@@ -18,41 +22,51 @@ Linked compute stage:
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:4  Function Definition: main(i1; (temp void)
+0:4  Function Definition: main(i1;i1; (temp void)
 0:4    Function Parameters: 
-0:4      'dti' (in int LocalInvocationID)
+0:4      'dti' (in int GlobalInvocationID)
+0:4      'gti' (in int LocalInvocationID)
 0:?     Sequence
-0:5      'dti' (in int LocalInvocationID)
+0:5      subtract (temp int)
+0:5        'dti' (in int GlobalInvocationID)
+0:5        'gti' (in int LocalInvocationID)
 0:?   Linker Objects
-0:?     'dti' (in int LocalInvocationID)
+0:?     'dti' (in int GlobalInvocationID)
+0:?     'gti' (in int LocalInvocationID)
 0:?     'a' (shared 100-element array of 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 16
+// Id's are bound by 20
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "main" 8
+                              EntryPoint GLCompute 4  "main" 8 10
                               ExecutionMode 4 LocalSize 1 1 1
                               Name 4  "main"
                               Name 8  "dti"
-                              Name 15  "a"
-                              Decorate 8(dti) BuiltIn LocalInvocationId
+                              Name 10  "gti"
+                              Name 19  "a"
+                              Decorate 8(dti) BuiltIn GlobalInvocationId
+                              Decorate 10(gti) BuiltIn LocalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
                7:             TypePointer Input 6(int)
           8(dti):      7(ptr) Variable Input
-               9:             TypeFloat 32
-              10:             TypeVector 9(float) 4
-              11:             TypeInt 32 0
-              12:     11(int) Constant 100
-              13:             TypeArray 10(fvec4) 12
-              14:             TypePointer Workgroup 13
-           15(a):     14(ptr) Variable Workgroup
+         10(gti):      7(ptr) Variable Input
+              13:             TypeFloat 32
+              14:             TypeVector 13(float) 4
+              15:             TypeInt 32 0
+              16:     15(int) Constant 100
+              17:             TypeArray 14(fvec4) 16
+              18:             TypePointer Workgroup 17
+           19(a):     18(ptr) Variable Workgroup
          4(main):           2 Function None 3
                5:             Label
+               9:      6(int) Load 8(dti)
+              11:      6(int) Load 10(gti)
+              12:      6(int) ISub 9 11
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.numthreads.comp.out b/Test/baseResults/hlsl.numthreads.comp.out
index 76e95c8f86bc5e91a3fc67b581e820c336da18f8..8ac76a962c83a7d52252ce7b75350ce99eabdde7 100644
--- a/Test/baseResults/hlsl.numthreads.comp.out
+++ b/Test/baseResults/hlsl.numthreads.comp.out
@@ -7,9 +7,9 @@ local_size = (4, 4, 2)
 0:4      'tid' (in 3-component vector of uint)
 0:9  Function Definition: main_aux1(vu3; (temp void)
 0:9    Function Parameters: 
-0:9      'tid' (in 3-component vector of uint LocalInvocationID)
+0:9      'tid' (in 3-component vector of uint GlobalInvocationID)
 0:?   Linker Objects
-0:?     'tid' (in 3-component vector of uint LocalInvocationID)
+0:?     'tid' (in 3-component vector of uint GlobalInvocationID)
 
 
 Linked compute stage:
@@ -23,9 +23,9 @@ local_size = (4, 4, 2)
 0:4      'tid' (in 3-component vector of uint)
 0:9  Function Definition: main_aux1(vu3; (temp void)
 0:9    Function Parameters: 
-0:9      'tid' (in 3-component vector of uint LocalInvocationID)
+0:9      'tid' (in 3-component vector of uint GlobalInvocationID)
 0:?   Linker Objects
-0:?     'tid' (in 3-component vector of uint LocalInvocationID)
+0:?     'tid' (in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
 // Generated by (magic number): 80001
@@ -40,7 +40,7 @@ local_size = (4, 4, 2)
                               Name 11  "main(vu3;"
                               Name 10  "tid"
                               Name 14  "tid"
-                              Decorate 14(tid) BuiltIn LocalInvocationId
+                              Decorate 14(tid) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
diff --git a/Test/hlsl.basic.comp b/Test/hlsl.basic.comp
index 8a65a59616f20b32c64ae2e92c225ec16835daf4..1d95239ed8ff9af7b9e13f7ee3808440a61b6632 100644
--- a/Test/hlsl.basic.comp
+++ b/Test/hlsl.basic.comp
@@ -1,6 +1,6 @@
 groupshared float4 a[100];
 
-void main(int dti : SV_DispatchThreadID)
+void main(int dti : SV_DispatchThreadID, int gti : SV_GroupThreadID)
 {
-    dti;
+    dti - gti;
 }
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index f4c35bcbb6d59bc4900163f4780759845a071360..f99e69a3266c207f93f2e17805fba57049bec8c4 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 "Overload400-PrecQual.1725"
-#define GLSLANG_DATE "30-Dec-2016"
+#define GLSLANG_REVISION "Overload400-PrecQual.1726"
+#define GLSLANG_DATE "02-Jan-2017"
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index 893cbfcaf9d79c5b8815093d79a4fae553586fc9..5978ae38a86b4ed05247a7016e36b4d87b2bfd99 100755
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -3195,7 +3195,7 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, con
     else if (semanticUpperCase == "SV_GSINSTANCEID")
         qualifier.builtIn = EbvInvocationId;
     else if (semanticUpperCase == "SV_DISPATCHTHREADID")
-        qualifier.builtIn = EbvLocalInvocationId;
+        qualifier.builtIn = EbvGlobalInvocationId;
     else if (semanticUpperCase == "SV_GROUPTHREADID")
         qualifier.builtIn = EbvLocalInvocationId;
     else if (semanticUpperCase == "SV_GROUPID")