Add tokens for SPV_INTEL_subgroups
diff --git a/include/spirv/1.3/spirv.core.grammar.json b/include/spirv/1.3/spirv.core.grammar.json
index 1e423be..266a504 100644
--- a/include/spirv/1.3/spirv.core.grammar.json
+++ b/include/spirv/1.3/spirv.core.grammar.json
@@ -3723,6 +3723,92 @@
         { "kind" : "IdRef", "name" : "'Fragment Index'" }
       ],
       "capabilities" : [ "FragmentMaskAMD" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleINTEL",
+      "opcode" : 5571,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'InvocationId'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleDownINTEL",
+      "opcode" : 5572,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Next'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleUpINTEL",
+      "opcode" : 5573,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Previous'" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleXorINTEL",
+      "opcode" : 5574,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupBlockReadINTEL",
+      "opcode" : 5575,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Ptr'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupBlockWriteINTEL",
+      "opcode" : 5576,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Ptr'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupImageBlockReadINTEL",
+      "opcode" : 5577,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupImageBlockWriteINTEL",
+      "opcode" : 5578,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
     }
   ],
   "operand_kinds" : [
@@ -6212,6 +6298,21 @@
           "value" : 5260,
           "capabilities" : [ "MultiView" ],
           "extensions" : [ "SPV_NVX_multiview_per_view_attributes" ]
+        },
+        {
+          "enumerant" : "SubgroupShuffleINTEL",
+          "value" : 5568,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        },
+        {
+          "enumerant" : "SubgroupBufferBlockIOINTEL",
+          "value" : 5569,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        },
+        {
+          "enumerant" : "SubgroupImageBlockIOINTEL",
+          "value" : 5570,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
         }
       ]
     },
diff --git a/include/spirv/1.3/spirv.h b/include/spirv/1.3/spirv.h
index 386ed6e..91bdd8a 100644
--- a/include/spirv/1.3/spirv.h
+++ b/include/spirv/1.3/spirv.h
@@ -687,6 +687,9 @@
     SpvCapabilityShaderViewportMaskNV = 5255,
     SpvCapabilityShaderStereoViewNV = 5259,
     SpvCapabilityPerViewAttributesNV = 5260,
+    SpvCapabilitySubgroupShuffleINTEL = 5568,
+    SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
+    SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
     SpvCapabilityMax = 0x7fffffff,
 } SpvCapability;
 
@@ -1047,6 +1050,14 @@
     SpvOpGroupSMaxNonUniformAMD = 5007,
     SpvOpFragmentMaskFetchAMD = 5011,
     SpvOpFragmentFetchAMD = 5012,
+    SpvOpSubgroupShuffleINTEL = 5571,
+    SpvOpSubgroupShuffleDownINTEL = 5572,
+    SpvOpSubgroupShuffleUpINTEL = 5573,
+    SpvOpSubgroupShuffleXorINTEL = 5574,
+    SpvOpSubgroupBlockReadINTEL = 5575,
+    SpvOpSubgroupBlockWriteINTEL = 5576,
+    SpvOpSubgroupImageBlockReadINTEL = 5577,
+    SpvOpSubgroupImageBlockWriteINTEL = 5578,
     SpvOpMax = 0x7fffffff,
 } SpvOp;
 
diff --git a/include/spirv/1.3/spirv.hpp b/include/spirv/1.3/spirv.hpp
index d528dea..2d4d607 100644
--- a/include/spirv/1.3/spirv.hpp
+++ b/include/spirv/1.3/spirv.hpp
@@ -683,6 +683,9 @@
     CapabilityShaderViewportMaskNV = 5255,
     CapabilityShaderStereoViewNV = 5259,
     CapabilityPerViewAttributesNV = 5260,
+    CapabilitySubgroupShuffleINTEL = 5568,
+    CapabilitySubgroupBufferBlockIOINTEL = 5569,
+    CapabilitySubgroupImageBlockIOINTEL = 5570,
     CapabilityMax = 0x7fffffff,
 };
 
@@ -1043,6 +1046,14 @@
     OpGroupSMaxNonUniformAMD = 5007,
     OpFragmentMaskFetchAMD = 5011,
     OpFragmentFetchAMD = 5012,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
     OpMax = 0x7fffffff,
 };
 
diff --git a/include/spirv/1.3/spirv.hpp11 b/include/spirv/1.3/spirv.hpp11
index 33db8eb..be384fa 100644
--- a/include/spirv/1.3/spirv.hpp11
+++ b/include/spirv/1.3/spirv.hpp11
@@ -683,6 +683,9 @@
     ShaderViewportMaskNV = 5255,
     ShaderStereoViewNV = 5259,
     PerViewAttributesNV = 5260,
+    SubgroupShuffleINTEL = 5568,
+    SubgroupBufferBlockIOINTEL = 5569,
+    SubgroupImageBlockIOINTEL = 5570,
     Max = 0x7fffffff,
 };
 
@@ -1043,6 +1046,14 @@
     OpGroupSMaxNonUniformAMD = 5007,
     OpFragmentMaskFetchAMD = 5011,
     OpFragmentFetchAMD = 5012,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
     Max = 0x7fffffff,
 };
 
diff --git a/include/spirv/1.3/spirv.json b/include/spirv/1.3/spirv.json
index cc9624a..15949ce 100644
--- a/include/spirv/1.3/spirv.json
+++ b/include/spirv/1.3/spirv.json
@@ -707,7 +707,10 @@
                     "ShaderViewportIndexLayerNV": 5254,
                     "ShaderViewportMaskNV": 5255,
                     "ShaderStereoViewNV": 5259,
-                    "PerViewAttributesNV": 5260
+                    "PerViewAttributesNV": 5260,
+                    "SubgroupShuffleINTEL": 5568,
+                    "SubgroupBufferBlockIOINTEL": 5569,
+                    "SubgroupImageBlockIOINTEL": 5570
                 }
             },
             {
@@ -1070,7 +1073,15 @@
                     "OpGroupUMaxNonUniformAMD": 5006,
                     "OpGroupSMaxNonUniformAMD": 5007,
                     "OpFragmentMaskFetchAMD": 5011,
-                    "OpFragmentFetchAMD": 5012
+                    "OpFragmentFetchAMD": 5012,
+                    "OpSubgroupShuffleINTEL": 5571,
+                    "OpSubgroupShuffleDownINTEL": 5572,
+                    "OpSubgroupShuffleUpINTEL": 5573,
+                    "OpSubgroupShuffleXorINTEL": 5574,
+                    "OpSubgroupBlockReadINTEL": 5575,
+                    "OpSubgroupBlockWriteINTEL": 5576,
+                    "OpSubgroupImageBlockReadINTEL": 5577,
+                    "OpSubgroupImageBlockWriteINTEL": 5578
                 }
             }
         ]
diff --git a/include/spirv/1.3/spirv.lua b/include/spirv/1.3/spirv.lua
index eebd2c6..3ab7e98 100644
--- a/include/spirv/1.3/spirv.lua
+++ b/include/spirv/1.3/spirv.lua
@@ -645,6 +645,9 @@
         ShaderViewportMaskNV = 5255,
         ShaderStereoViewNV = 5259,
         PerViewAttributesNV = 5260,
+        SubgroupShuffleINTEL = 5568,
+        SubgroupBufferBlockIOINTEL = 5569,
+        SubgroupImageBlockIOINTEL = 5570,
     },
 
     Op = {
@@ -1004,6 +1007,14 @@
         OpGroupSMaxNonUniformAMD = 5007,
         OpFragmentMaskFetchAMD = 5011,
         OpFragmentFetchAMD = 5012,
+        OpSubgroupShuffleINTEL = 5571,
+        OpSubgroupShuffleDownINTEL = 5572,
+        OpSubgroupShuffleUpINTEL = 5573,
+        OpSubgroupShuffleXorINTEL = 5574,
+        OpSubgroupBlockReadINTEL = 5575,
+        OpSubgroupBlockWriteINTEL = 5576,
+        OpSubgroupImageBlockReadINTEL = 5577,
+        OpSubgroupImageBlockWriteINTEL = 5578,
     },
 
 }
diff --git a/include/spirv/1.3/spirv.py b/include/spirv/1.3/spirv.py
index f920224..e2d57e5 100755
--- a/include/spirv/1.3/spirv.py
+++ b/include/spirv/1.3/spirv.py
@@ -645,6 +645,9 @@
         'ShaderViewportMaskNV' : 5255,
         'ShaderStereoViewNV' : 5259,
         'PerViewAttributesNV' : 5260,
+        'SubgroupShuffleINTEL' : 5568,
+        'SubgroupBufferBlockIOINTEL' : 5569,
+        'SubgroupImageBlockIOINTEL' : 5570,
     },
 
     'Op' : {
@@ -1004,6 +1007,14 @@
         'OpGroupSMaxNonUniformAMD' : 5007,
         'OpFragmentMaskFetchAMD' : 5011,
         'OpFragmentFetchAMD' : 5012,
+        'OpSubgroupShuffleINTEL' : 5571,
+        'OpSubgroupShuffleDownINTEL' : 5572,
+        'OpSubgroupShuffleUpINTEL' : 5573,
+        'OpSubgroupShuffleXorINTEL' : 5574,
+        'OpSubgroupBlockReadINTEL' : 5575,
+        'OpSubgroupBlockWriteINTEL' : 5576,
+        'OpSubgroupImageBlockReadINTEL' : 5577,
+        'OpSubgroupImageBlockWriteINTEL' : 5578,
     },
 
 }