Add cl_arm_job_slot_selection extension (#67)

Signed-off-by: Kevin Petit <kevin.petit@arm.com>
diff --git a/extensions/arm/cl_arm_job_slot_selection.txt b/extensions/arm/cl_arm_job_slot_selection.txt
new file mode 100644
index 0000000..93f109d
--- /dev/null
+++ b/extensions/arm/cl_arm_job_slot_selection.txt
@@ -0,0 +1,72 @@
+Name
+
+    ARM_job_slot_selection
+
+Name Strings
+
+    cl_arm_job_slot_selection
+
+Contributors
+
+    Kevin Petit, Arm Ltd. (kevin.petit 'at' arm.com)
+
+Contacts
+
+    Kevin Petit, Arm Ltd. (kevin.petit 'at' arm.com)
+
+Status
+
+    Complete.
+
+Version
+
+    Revision: #1, May 20th, 2019
+
+Number
+
+    OpenCL Extension #58
+
+Dependencies
+
+    Requires OpenCL version 2.0 or later or cl_khr_create_command_queue.
+
+Overview
+
+    On devices that support work submission via job slots, this extension
+    provides a way of selecting the job slot that is used to submit work to the
+    device as well as a device info query to obtain a list of usable job slots.
+
+New Procedures and Functions
+
+    Device Info query
+
+      CL_DEVICE_JOB_SLOTS_ARM (return type cl_uint) returns a bitfield
+      listing the job slots that can be used to submit work to the device.
+      If bit i is set, then job slot i can be used to submit work.
+
+    Command queue property
+
+      CL_QUEUE_JOB_SLOT_ARM can be used when creating a command queue to
+      specify the job slot used to target the device.
+
+    Example
+
+      cl_uint available_job_slots;
+      cl_int err;
+      err = clGetDeviceInfo(device, CL_DEVICE_JOB_SLOTS_ARM,
+                            sizeof(cl_uint), &available_job_slots, NULL);
+
+      // Application-specific logic to select the job slot
+      cl_uint job_slot = ...
+
+      const cl_queue_properties properties[] = {
+          CL_QUEUE_JOB_SLOT_ARM, job_slot,
+      };
+
+      cl_command_queue queue;
+      queue = clCreateCommandQueueWithProperties(context, device, properties,
+                                                 &err);
+
+Revision History
+
+    Revision: #1, May  20th, 2019 - Initial revision
diff --git a/extensions/clext.php b/extensions/clext.php
index 92b8008..5846c5d 100644
--- a/extensions/clext.php
+++ b/extensions/clext.php
@@ -113,4 +113,6 @@
 </li>
 <li value=57><a href="extensions/intel/cl_intel_spirv_device_side_avc_motion_estimation.html">cl_intel_spirv_device_side_avc_motion_estimation</a>
 </li>
+<li value=58><a href="extensions/arm/cl_arm_job_slot_selection.txt">cl_arm_job_slot_selection</a>
+</li>
 </ol>
diff --git a/extensions/registry.py b/extensions/registry.py
index 7489dab..38fc9ac 100644
--- a/extensions/registry.py
+++ b/extensions/registry.py
@@ -51,6 +51,11 @@
         'flags' : { 'public' },
         'url' : 'extensions/arm/cl_arm_import_memory.txt',
     },
+    'cl_arm_job_slot_selection' : {
+        'number' : 58,
+        'flags' : { 'public' },
+        'url' : 'extensions/arm/cl_arm_job_slot_selection.txt',
+    },
     'cl_arm_non_uniform_work_group_size' : {
         'number' : 39,
         'flags' : { 'public' },