Add SPV_KHR_shader_ballot enumerants.
diff --git a/include/spirv/1.1/spirv.core.grammar.json b/include/spirv/1.1/spirv.core.grammar.json
index 0ab09f7..ae2e053 100644
--- a/include/spirv/1.1/spirv.core.grammar.json
+++ b/include/spirv/1.1/spirv.core.grammar.json
@@ -3109,6 +3109,26 @@
       "operands" : [
         { "kind" : "LiteralString", "name" : "'Process'" }
       ]
+    },
+    {
+      "opname" : "OpSubgroupBallotKHR",
+      "opcode" : 4421,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupFirstInvocationKHR",
+      "opcode" : 4422,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
     }
   ],
   "operand_kinds" : [
@@ -3304,10 +3324,6 @@
           "value" : "0x0000"
         },
         {
-          "enumerant" : "SequentiallyConsistent",
-          "value" : "0x0010"
-        },
-        {
           "enumerant" : "Acquire",
           "value" : "0x0002"
         },
@@ -3320,6 +3336,10 @@
           "value" : "0x0008"
         },
         {
+          "enumerant" : "SequentiallyConsistent",
+          "value" : "0x0010"
+        },
+        {
           "enumerant" : "UniformMemory",
           "value" : "0x0040",
           "capabilities" : [ "Shader" ]
@@ -4839,6 +4859,31 @@
           "enumerant" : "InstanceIndex",
           "value" : 43,
           "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SubgroupEqMaskKHR",
+          "value" : 4416,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupGeMaskKHR",
+          "value" : 4417,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupGtMaskKHR",
+          "value" : 4418,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupLeMaskKHR",
+          "value" : 4419,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupLtMaskKHR",
+          "value" : 4420,
+          "capabilities" : [ "SubgroupBallotKHR" ]
         }
       ]
     },
@@ -5197,6 +5242,11 @@
           "enumerant" : "PipeStorage",
           "value" : 60,
           "capabilities" : [ "Pipes" ]
+        },
+        {
+          "enumerant" : "SubgroupBallotKHR",
+          "value" : 4423,
+          "extensions" : [ "SPV_KHR_shader_ballot" ]
         }
       ]
     },
diff --git a/include/spirv/1.1/spirv.h b/include/spirv/1.1/spirv.h
index 003971b..d23f21d 100644
--- a/include/spirv/1.1/spirv.h
+++ b/include/spirv/1.1/spirv.h
@@ -428,6 +428,11 @@
     SpvBuiltInSubgroupLocalInvocationId = 41,
     SpvBuiltInVertexIndex = 42,
     SpvBuiltInInstanceIndex = 43,
+    SpvBuiltInSubgroupEqMaskKHR = 4416,
+    SpvBuiltInSubgroupGeMaskKHR = 4417,
+    SpvBuiltInSubgroupGtMaskKHR = 4418,
+    SpvBuiltInSubgroupLeMaskKHR = 4419,
+    SpvBuiltInSubgroupLtMaskKHR = 4420,
     SpvBuiltInMax = 0x7fffffff,
 } SpvBuiltIn;
 
@@ -610,6 +615,7 @@
     SpvCapabilitySubgroupDispatch = 58,
     SpvCapabilityNamedBarrier = 59,
     SpvCapabilityPipeStorage = 60,
+    SpvCapabilitySubgroupBallotKHR = 4423,
     SpvCapabilityMax = 0x7fffffff,
 } SpvCapability;
 
@@ -918,6 +924,8 @@
     SpvOpNamedBarrierInitialize = 328,
     SpvOpMemoryNamedBarrier = 329,
     SpvOpModuleProcessed = 330,
+    SpvOpSubgroupBallotKHR = 4421,
+    SpvOpSubgroupFirstInvocationKHR = 4422,
     SpvOpMax = 0x7fffffff,
 } SpvOp;
 
diff --git a/include/spirv/1.1/spirv.hpp b/include/spirv/1.1/spirv.hpp
index 6241c36..48cdc04 100644
--- a/include/spirv/1.1/spirv.hpp
+++ b/include/spirv/1.1/spirv.hpp
@@ -424,6 +424,11 @@
     BuiltInSubgroupLocalInvocationId = 41,
     BuiltInVertexIndex = 42,
     BuiltInInstanceIndex = 43,
+    BuiltInSubgroupEqMaskKHR = 4416,
+    BuiltInSubgroupGeMaskKHR = 4417,
+    BuiltInSubgroupGtMaskKHR = 4418,
+    BuiltInSubgroupLeMaskKHR = 4419,
+    BuiltInSubgroupLtMaskKHR = 4420,
     BuiltInMax = 0x7fffffff,
 };
 
@@ -606,6 +611,7 @@
     CapabilitySubgroupDispatch = 58,
     CapabilityNamedBarrier = 59,
     CapabilityPipeStorage = 60,
+    CapabilitySubgroupBallotKHR = 4423,
     CapabilityMax = 0x7fffffff,
 };
 
@@ -914,6 +920,8 @@
     OpNamedBarrierInitialize = 328,
     OpMemoryNamedBarrier = 329,
     OpModuleProcessed = 330,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
     OpMax = 0x7fffffff,
 };
 
diff --git a/include/spirv/1.1/spirv.hpp11 b/include/spirv/1.1/spirv.hpp11
index 660021e..5edabfa 100644
--- a/include/spirv/1.1/spirv.hpp11
+++ b/include/spirv/1.1/spirv.hpp11
@@ -424,6 +424,11 @@
     SubgroupLocalInvocationId = 41,
     VertexIndex = 42,
     InstanceIndex = 43,
+    SubgroupEqMaskKHR = 4416,
+    SubgroupGeMaskKHR = 4417,
+    SubgroupGtMaskKHR = 4418,
+    SubgroupLeMaskKHR = 4419,
+    SubgroupLtMaskKHR = 4420,
     Max = 0x7fffffff,
 };
 
@@ -606,6 +611,7 @@
     SubgroupDispatch = 58,
     NamedBarrier = 59,
     PipeStorage = 60,
+    SubgroupBallotKHR = 4423,
     Max = 0x7fffffff,
 };
 
@@ -914,6 +920,8 @@
     OpNamedBarrierInitialize = 328,
     OpMemoryNamedBarrier = 329,
     OpModuleProcessed = 330,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
     Max = 0x7fffffff,
 };
 
diff --git a/include/spirv/1.1/spirv.json b/include/spirv/1.1/spirv.json
index 38cdfcf..2ae3881 100644
--- a/include/spirv/1.1/spirv.json
+++ b/include/spirv/1.1/spirv.json
@@ -466,7 +466,12 @@
                     "SubgroupId": 40,
                     "SubgroupLocalInvocationId": 41,
                     "VertexIndex": 42,
-                    "InstanceIndex": 43
+                    "InstanceIndex": 43,
+                    "SubgroupEqMaskKHR": 4416,
+                    "SubgroupGeMaskKHR": 4417,
+                    "SubgroupGtMaskKHR": 4418,
+                    "SubgroupLeMaskKHR": 4419,
+                    "SubgroupLtMaskKHR": 4420
                 }
             },
             {
@@ -630,7 +635,8 @@
                     "MultiViewport": 57,
                     "SubgroupDispatch": 58,
                     "NamedBarrier": 59,
-                    "PipeStorage": 60
+                    "PipeStorage": 60,
+                    "SubgroupBallotKHR": 4423
                 }
             },
             {
@@ -941,7 +947,9 @@
                     "OpTypeNamedBarrier": 327,
                     "OpNamedBarrierInitialize": 328,
                     "OpMemoryNamedBarrier": 329,
-                    "OpModuleProcessed": 330
+                    "OpModuleProcessed": 330,
+                    "OpSubgroupBallotKHR": 4421,
+                    "OpSubgroupFirstInvocationKHR": 4422
                 }
             }
         ]
diff --git a/include/spirv/1.1/spirv.lua b/include/spirv/1.1/spirv.lua
index deddce2..ad087b6 100644
--- a/include/spirv/1.1/spirv.lua
+++ b/include/spirv/1.1/spirv.lua
@@ -396,6 +396,11 @@
         SubgroupLocalInvocationId = 41,
         VertexIndex = 42,
         InstanceIndex = 43,
+        SubgroupEqMaskKHR = 4416,
+        SubgroupGeMaskKHR = 4417,
+        SubgroupGtMaskKHR = 4418,
+        SubgroupLeMaskKHR = 4419,
+        SubgroupLtMaskKHR = 4420,
     },
 
     SelectionControlShift = {
@@ -568,6 +573,7 @@
         SubgroupDispatch = 58,
         NamedBarrier = 59,
         PipeStorage = 60,
+        SubgroupBallotKHR = 4423,
     },
 
     Op = {
@@ -875,6 +881,8 @@
         OpNamedBarrierInitialize = 328,
         OpMemoryNamedBarrier = 329,
         OpModuleProcessed = 330,
+        OpSubgroupBallotKHR = 4421,
+        OpSubgroupFirstInvocationKHR = 4422,
     },
 
 }
diff --git a/include/spirv/1.1/spirv.py b/include/spirv/1.1/spirv.py
index 8c67157..5ee4cbf 100644
--- a/include/spirv/1.1/spirv.py
+++ b/include/spirv/1.1/spirv.py
@@ -396,6 +396,11 @@
         'SubgroupLocalInvocationId' : 41,
         'VertexIndex' : 42,
         'InstanceIndex' : 43,
+        'SubgroupEqMaskKHR' : 4416,
+        'SubgroupGeMaskKHR' : 4417,
+        'SubgroupGtMaskKHR' : 4418,
+        'SubgroupLeMaskKHR' : 4419,
+        'SubgroupLtMaskKHR' : 4420,
     },
 
     'SelectionControlShift' : {
@@ -568,6 +573,7 @@
         'SubgroupDispatch' : 58,
         'NamedBarrier' : 59,
         'PipeStorage' : 60,
+        'SubgroupBallotKHR' : 4423,
     },
 
     'Op' : {
@@ -875,6 +881,8 @@
         'OpNamedBarrierInitialize' : 328,
         'OpMemoryNamedBarrier' : 329,
         'OpModuleProcessed' : 330,
+        'OpSubgroupBallotKHR' : 4421,
+        'OpSubgroupFirstInvocationKHR' : 4422,
     },
 
 }