Add mappings of barriers and atomics for OpenGL GLSL -> SPIR-V.
diff --git a/extensions/ARB/ARB_gl_spirv.txt b/extensions/ARB/ARB_gl_spirv.txt
index 0026768..7c7cb4b 100644
--- a/extensions/ARB/ARB_gl_spirv.txt
+++ b/extensions/ARB/ARB_gl_spirv.txt
@@ -29,8 +29,8 @@
 
 Version
 
-    Last Modified Date: 10-Apr-2018
-    Revision: 38
+    Last Modified Date: 25-Apr-2018
+    Revision: 39
 
 Number
 
@@ -312,11 +312,44 @@
 
       max_vertices   ->  OutputVertices
 
-    Mapping of other instructions
+    Mapping of barriers
 
-      %     -> OpUMod/OpSMod
-      mod() -> OpFMod
-      NA    -> OpSRem/OpFRem
+      barrier() (compute) -> OpControlBarrier(/*Execution*/Workgroup,
+                                              /*Memory*/Workgroup,
+                                              /*Semantics*/AcquireRelease |
+                                                           WorkgroupMemory)
+
+      barrier() (tess control) -> OpControlBarrier(/*Execution*/Workgroup,
+                                                   /*Memory*/Invocation,
+                                                   /*Semantics*/None)
+
+      memoryBarrier() -> OpMemoryBarrier(/*Memory*/Device,
+                                         /*Semantics*/AcquireRelease |
+                                                      UniformMemory |
+                                                      WorkgroupMemory |
+                                                      ImageMemory)
+
+      memoryBarrierBuffer() -> OpMemoryBarrier(/*Memory*/Device,
+                                               /*Semantics*/AcquireRelease |
+                                                            UniformMemory)
+
+      memoryBarrierShared() -> OpMemoryBarrier(/*Memory*/Device,
+                                               /*Semantics*/AcquireRelease |
+                                                            WorkgroupMemory)
+
+      memoryBarrierImage() -> OpMemoryBarrier(/*Memory*/Device,
+                                              /*Semantics*/AcquireRelease |
+                                                           ImageMemory)
+
+      groupMemoryBarrier() -> OpMemoryBarrier(/*Memory*/Workgroup,
+                                              /*Semantics*/AcquireRelease |
+                                                           UniformMemory |
+                                                           WorkgroupMemory |
+                                                           ImageMemory)
+
+    Mapping of atomics
+
+      all atomic builtin functions -> Semantics = None(Relaxed)
 
       atomicExchange()      -> OpAtomicExchange
       imageAtomicExchange() -> OpAtomicExchange
@@ -324,6 +357,16 @@
       imageAtomicCompSwap() -> OpAtomicCompareExchange
       NA                    -> OpAtomicCompareExchangeWeak
 
+      atomicCounterIncrement -> OpAtomicIIncrement
+      atomicCounterDecrement -> OpAtomicIDecrement
+      atomicCounter          -> OpAtomicLoad
+
+    Mapping of other instructions
+
+      %     -> OpUMod/OpSMod
+      mod() -> OpFMod
+      NA    -> OpSRem/OpFRem
+
       pack/unpack (conversion)    -> pack/unpack in GLSL extended instructions
       pack/unpack (no conversion) -> OpBitcast
 
@@ -2030,6 +2073,7 @@
 
     Rev.    Date         Author         Changes
     ----  -----------    ------------   ---------------------------------
+    39    25-Apr-2018    JohnK          add mappings of barriers and atomics
     38    10-Apr-2018    dgkoch         OpImageQuerySizeLod and OpImageQuerylevels
                                         only work with Sampled images
                                         (SPIR-V/issues/280).