Merge pull request #189 from jekstrand/SPV_EXT_shader_atomic_float_min_max

Add header changes for SPV_EXT_shader_atomic_float_min_max
diff --git a/include/spirv/unified1/spirv.core.grammar.json b/include/spirv/unified1/spirv.core.grammar.json
index 514965e..f3f585c 100644
--- a/include/spirv/unified1/spirv.core.grammar.json
+++ b/include/spirv/unified1/spirv.core.grammar.json
@@ -5189,6 +5189,36 @@
       "version" : "None"
     },
     {
+      "opname" : "OpAtomicFMinEXT",
+      "class"  : "Atomic",
+      "opcode" : 5614,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ],
+      "capabilities" : [ "AtomicFloat16MinMaxEXT", "AtomicFloat32MinMaxEXT", "AtomicFloat64MinMaxEXT" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpAtomicFMaxEXT",
+      "class"  : "Atomic",
+      "opcode" : 5615,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ],
+      "capabilities" : [ "AtomicFloat16MinMaxEXT", "AtomicFloat32MinMaxEXT", "AtomicFloat64MinMaxEXT" ],
+      "version" : "None"
+    },
+    {
       "opname" : "OpDecorateString",
       "class"  : "Annotation",
       "opcode" : 5632,
@@ -12063,6 +12093,24 @@
           "version" : "None"
         },
         {
+          "enumerant" : "AtomicFloat32MinMaxEXT",
+          "value" : 5612,
+          "extensions" : [ "SPV_EXT_shader_atomic_float_min_max" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "AtomicFloat64MinMaxEXT",
+          "value" : 5613,
+          "extensions" : [ "SPV_EXT_shader_atomic_float_min_max" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "AtomicFloat16MinMaxEXT",
+          "value" : 5616,
+          "extensions" : [ "SPV_EXT_shader_atomic_float_min_max" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "VectorComputeINTEL",
           "value" : 5617,
           "capabilities" : [ "VectorAnyINTEL" ],
diff --git a/include/spirv/unified1/spirv.cs b/include/spirv/unified1/spirv.cs
index 3a07e52..c83b731 100644
--- a/include/spirv/unified1/spirv.cs
+++ b/include/spirv/unified1/spirv.cs
@@ -1014,6 +1014,9 @@
             FunctionPointersINTEL = 5603,
             IndirectReferencesINTEL = 5604,
             AsmINTEL = 5606,
+            AtomicFloat32MinMaxEXT = 5612,
+            AtomicFloat64MinMaxEXT = 5613,
+            AtomicFloat16MinMaxEXT = 5616,
             VectorComputeINTEL = 5617,
             VectorAnyINTEL = 5619,
             SubgroupAvcMotionEstimationINTEL = 5696,
@@ -1106,14 +1109,16 @@
             Horizontal4Pixels = 0x00000008,
         }
 
-        public enum FPDenormMode {
-          Preserve = 0,
-          FlushToZero = 1,
+        public enum FPDenormMode
+        {
+            Preserve = 0,
+            FlushToZero = 1,
         }
 
-        public enum FPOperationMode {
-          IEEE = 0,
-          ALT = 1,
+        public enum FPOperationMode
+        {
+            IEEE = 0,
+            ALT = 1,
         }
 
         public enum Op
@@ -1541,6 +1546,8 @@
             OpAsmTargetINTEL = 5609,
             OpAsmINTEL = 5610,
             OpAsmCallINTEL = 5611,
+            OpAtomicFMinEXT = 5614,
+            OpAtomicFMaxEXT = 5615,
             OpDecorateString = 5632,
             OpDecorateStringGOOGLE = 5632,
             OpMemberDecorateString = 5633,
diff --git a/include/spirv/unified1/spirv.h b/include/spirv/unified1/spirv.h
index 41a650b..fbdc763 100644
--- a/include/spirv/unified1/spirv.h
+++ b/include/spirv/unified1/spirv.h
@@ -1014,6 +1014,9 @@
     SpvCapabilityFunctionPointersINTEL = 5603,
     SpvCapabilityIndirectReferencesINTEL = 5604,
     SpvCapabilityAsmINTEL = 5606,
+    SpvCapabilityAtomicFloat32MinMaxEXT = 5612,
+    SpvCapabilityAtomicFloat64MinMaxEXT = 5613,
+    SpvCapabilityAtomicFloat16MinMaxEXT = 5616,
     SpvCapabilityVectorComputeINTEL = 5617,
     SpvCapabilityVectorAnyINTEL = 5619,
     SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,
@@ -1106,15 +1109,15 @@
 } SpvFragmentShadingRateMask;
 
 typedef enum SpvFPDenormMode_ {
-  SpvFPDenormModePreserve = 0,
-  SpvFPDenormModeFlushToZero = 1,
-  SpvFPDenormModeMax = 0x7fffffff,
+    SpvFPDenormModePreserve = 0,
+    SpvFPDenormModeFlushToZero = 1,
+    SpvFPDenormModeMax = 0x7fffffff,
 } SpvFPDenormMode;
 
 typedef enum SpvFPOperationMode_ {
-  SpvFPOperationModeIEEE = 0,
-  SpvFPOperationModeALT = 1,
-  SpvFPOperationModeMax = 0x7fffffff,
+    SpvFPOperationModeIEEE = 0,
+    SpvFPOperationModeALT = 1,
+    SpvFPOperationModeMax = 0x7fffffff,
 } SpvFPOperationMode;
 
 typedef enum SpvOp_ {
@@ -1541,6 +1544,8 @@
     SpvOpAsmTargetINTEL = 5609,
     SpvOpAsmINTEL = 5610,
     SpvOpAsmCallINTEL = 5611,
+    SpvOpAtomicFMinEXT = 5614,
+    SpvOpAtomicFMaxEXT = 5615,
     SpvOpDecorateString = 5632,
     SpvOpDecorateStringGOOGLE = 5632,
     SpvOpMemberDecorateString = 5633,
@@ -2123,6 +2128,8 @@
     case SpvOpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpAsmINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
     case SpvOpDecorateString: *hasResult = false; *hasResultType = false; break;
     case SpvOpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
     case SpvOpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
diff --git a/include/spirv/unified1/spirv.hpp b/include/spirv/unified1/spirv.hpp
index af629ef..19e28b8 100644
--- a/include/spirv/unified1/spirv.hpp
+++ b/include/spirv/unified1/spirv.hpp
@@ -1010,6 +1010,9 @@
     CapabilityFunctionPointersINTEL = 5603,
     CapabilityIndirectReferencesINTEL = 5604,
     CapabilityAsmINTEL = 5606,
+    CapabilityAtomicFloat32MinMaxEXT = 5612,
+    CapabilityAtomicFloat64MinMaxEXT = 5613,
+    CapabilityAtomicFloat16MinMaxEXT = 5616,
     CapabilityVectorComputeINTEL = 5617,
     CapabilityVectorAnyINTEL = 5619,
     CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
@@ -1102,15 +1105,15 @@
 };
 
 enum FPDenormMode {
-  FPDenormModePreserve = 0,
-  FPDenormModeFlushToZero = 1,
-  FPDenormModeMax = 0x7fffffff,
+    FPDenormModePreserve = 0,
+    FPDenormModeFlushToZero = 1,
+    FPDenormModeMax = 0x7fffffff,
 };
 
 enum FPOperationMode {
-  FPOperationModeIEEE = 0,
-  FPOperationModeALT = 1,
-  FPOperationModeMax = 0x7fffffff,
+    FPOperationModeIEEE = 0,
+    FPOperationModeALT = 1,
+    FPOperationModeMax = 0x7fffffff,
 };
 
 enum Op {
@@ -1537,6 +1540,8 @@
     OpAsmTargetINTEL = 5609,
     OpAsmINTEL = 5610,
     OpAsmCallINTEL = 5611,
+    OpAtomicFMinEXT = 5614,
+    OpAtomicFMaxEXT = 5615,
     OpDecorateString = 5632,
     OpDecorateStringGOOGLE = 5632,
     OpMemberDecorateString = 5633,
@@ -2119,6 +2124,8 @@
     case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
     case OpAsmINTEL: *hasResult = true; *hasResultType = true; break;
     case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
     case OpDecorateString: *hasResult = false; *hasResultType = false; break;
     case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
     case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
diff --git a/include/spirv/unified1/spirv.hpp11 b/include/spirv/unified1/spirv.hpp11
index 58f3bf3..26ee33a 100644
--- a/include/spirv/unified1/spirv.hpp11
+++ b/include/spirv/unified1/spirv.hpp11
@@ -1010,6 +1010,9 @@
     FunctionPointersINTEL = 5603,
     IndirectReferencesINTEL = 5604,
     AsmINTEL = 5606,
+    AtomicFloat32MinMaxEXT = 5612,
+    AtomicFloat64MinMaxEXT = 5613,
+    AtomicFloat16MinMaxEXT = 5616,
     VectorComputeINTEL = 5617,
     VectorAnyINTEL = 5619,
     SubgroupAvcMotionEstimationINTEL = 5696,
@@ -1537,6 +1540,8 @@
     OpAsmTargetINTEL = 5609,
     OpAsmINTEL = 5610,
     OpAsmCallINTEL = 5611,
+    OpAtomicFMinEXT = 5614,
+    OpAtomicFMaxEXT = 5615,
     OpDecorateString = 5632,
     OpDecorateStringGOOGLE = 5632,
     OpMemberDecorateString = 5633,
@@ -2119,6 +2124,8 @@
     case Op::OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
     case Op::OpAsmINTEL: *hasResult = true; *hasResultType = true; break;
     case Op::OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
     case Op::OpDecorateString: *hasResult = false; *hasResultType = false; break;
     case Op::OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
     case Op::OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
diff --git a/include/spirv/unified1/spirv.json b/include/spirv/unified1/spirv.json
index d1a56dd..d12eb68 100644
--- a/include/spirv/unified1/spirv.json
+++ b/include/spirv/unified1/spirv.json
@@ -997,6 +997,9 @@
                     "FunctionPointersINTEL": 5603,
                     "IndirectReferencesINTEL": 5604,
                     "AsmINTEL": 5606,
+                    "AtomicFloat32MinMaxEXT": 5612,
+                    "AtomicFloat64MinMaxEXT": 5613,
+                    "AtomicFloat16MinMaxEXT": 5616,
                     "VectorComputeINTEL": 5617,
                     "VectorAnyINTEL": 5619,
                     "SubgroupAvcMotionEstimationINTEL": 5696,
@@ -1526,6 +1529,8 @@
                     "OpAsmTargetINTEL": 5609,
                     "OpAsmINTEL": 5610,
                     "OpAsmCallINTEL": 5611,
+                    "OpAtomicFMinEXT": 5614,
+                    "OpAtomicFMaxEXT": 5615,
                     "OpDecorateString": 5632,
                     "OpDecorateStringGOOGLE": 5632,
                     "OpMemberDecorateString": 5633,
diff --git a/include/spirv/unified1/spirv.lua b/include/spirv/unified1/spirv.lua
index 3193ff7..b9c8bc4 100644
--- a/include/spirv/unified1/spirv.lua
+++ b/include/spirv/unified1/spirv.lua
@@ -972,6 +972,9 @@
         FunctionPointersINTEL = 5603,
         IndirectReferencesINTEL = 5604,
         AsmINTEL = 5606,
+        AtomicFloat32MinMaxEXT = 5612,
+        AtomicFloat64MinMaxEXT = 5613,
+        AtomicFloat16MinMaxEXT = 5616,
         VectorComputeINTEL = 5617,
         VectorAnyINTEL = 5619,
         SubgroupAvcMotionEstimationINTEL = 5696,
@@ -1491,6 +1494,8 @@
         OpAsmTargetINTEL = 5609,
         OpAsmINTEL = 5610,
         OpAsmCallINTEL = 5611,
+        OpAtomicFMinEXT = 5614,
+        OpAtomicFMaxEXT = 5615,
         OpDecorateString = 5632,
         OpDecorateStringGOOGLE = 5632,
         OpMemberDecorateString = 5633,
diff --git a/include/spirv/unified1/spirv.py b/include/spirv/unified1/spirv.py
index 46d7182..0829dc1 100644
--- a/include/spirv/unified1/spirv.py
+++ b/include/spirv/unified1/spirv.py
@@ -972,6 +972,9 @@
         'FunctionPointersINTEL' : 5603,
         'IndirectReferencesINTEL' : 5604,
         'AsmINTEL' : 5606,
+        'AtomicFloat32MinMaxEXT' : 5612,
+        'AtomicFloat64MinMaxEXT' : 5613,
+        'AtomicFloat16MinMaxEXT' : 5616,
         'VectorComputeINTEL' : 5617,
         'VectorAnyINTEL' : 5619,
         'SubgroupAvcMotionEstimationINTEL' : 5696,
@@ -1491,6 +1494,8 @@
         'OpAsmTargetINTEL' : 5609,
         'OpAsmINTEL' : 5610,
         'OpAsmCallINTEL' : 5611,
+        'OpAtomicFMinEXT' : 5614,
+        'OpAtomicFMaxEXT' : 5615,
         'OpDecorateString' : 5632,
         'OpDecorateStringGOOGLE' : 5632,
         'OpMemberDecorateString' : 5633,
diff --git a/include/spirv/unified1/spv.d b/include/spirv/unified1/spv.d
index 5d09343..e1db29b 100644
--- a/include/spirv/unified1/spv.d
+++ b/include/spirv/unified1/spv.d
@@ -1017,6 +1017,9 @@
     FunctionPointersINTEL = 5603,
     IndirectReferencesINTEL = 5604,
     AsmINTEL = 5606,
+    AtomicFloat32MinMaxEXT = 5612,
+    AtomicFloat64MinMaxEXT = 5613,
+    AtomicFloat16MinMaxEXT = 5616,
     VectorComputeINTEL = 5617,
     VectorAnyINTEL = 5619,
     SubgroupAvcMotionEstimationINTEL = 5696,
@@ -1546,6 +1549,8 @@
     OpAsmTargetINTEL = 5609,
     OpAsmINTEL = 5610,
     OpAsmCallINTEL = 5611,
+    OpAtomicFMinEXT = 5614,
+    OpAtomicFMaxEXT = 5615,
     OpDecorateString = 5632,
     OpDecorateStringGOOGLE = 5632,
     OpMemberDecorateString = 5633,