diff --git a/3-0/include/CL/internal/cl_profile_amd.h b/3-0/include/CL/internal/cl_profile_amd.h
index 1c6e281..24d542c 100755
--- a/3-0/include/CL/internal/cl_profile_amd.h
+++ b/3-0/include/CL/internal/cl_profile_amd.h
@@ -99,22 +99,50 @@
 extern "C" {
 #endif /*__cplusplus*/
 
-typedef struct _cl_perfcounter_amd * cl_perfcounter_amd;
+typedef struct _cl_perfcounter_amd* cl_perfcounter_amd;
 typedef cl_ulong cl_perfcounter_property;
 typedef cl_uint cl_perfcounter_info;
 
 /* cl_perfcounter_info */
-enum PerfcounterInfo
-{
-    CL_PERFCOUNTER_NONE                 = 0x0,
-    CL_PERFCOUNTER_REFERENCE_COUNT      = 0x1,
-    CL_PERFCOUNTER_DATA                 = 0x2,
-    CL_PERFCOUNTER_GPU_BLOCK_INDEX      = 0x3,
-    CL_PERFCOUNTER_GPU_COUNTER_INDEX    = 0x4,
-    CL_PERFCOUNTER_GPU_EVENT_INDEX      = 0x5,
-    CL_PERFCOUNTER_LAST
+enum PerfcounterInfo {
+  CL_PERFCOUNTER_NONE = 0x0,
+  CL_PERFCOUNTER_REFERENCE_COUNT = 0x1,
+  CL_PERFCOUNTER_DATA = 0x2,
+  CL_PERFCOUNTER_GPU_BLOCK_INDEX = 0x3,
+  CL_PERFCOUNTER_GPU_COUNTER_INDEX = 0x4,
+  CL_PERFCOUNTER_GPU_EVENT_INDEX = 0x5,
+  CL_PERFCOUNTER_LAST
 };
 
+/*********************************
+* Set device clock mode data
+*********************************/
+enum cl_DeviceClockMode_AMD {
+  CL_DEVICE_CLOCK_MODE_DEFAULT_AMD = 0x0, /*Device clocks and other power settings are restored to default*/
+  CL_DEVICE_CLOCK_MODE_QUERY_AMD = 0x1, /*Queries the current device clock ratios. Leaves the clock mode of the device unchanged*/
+  CL_DEVICE_CLOCK_MODE_PROFILING_AMD = 0x2, /*Scale down from peak ratio*/
+  CL_DEVICE_CLOCK_MODE_MINIMUMMEMORY_AMD = 0x3, /* Memory clock is set to the lowest available level*/
+  CL_DEVICE_CLOCK_MODE_MINIMUMENGINE_AMD = 0x4, /*Engine clock is set to the lowest available level*/
+  CL_DEVICE_CLOCK_MODE_PEAK_AMD = 0x5, /*Clocks set to maximum when possible. Fan set to maximum.*/
+  CL_DEVICE_CLOCK_MODE_QUERYPROFILING_AMD = 0x6, /*Queries the profiling device clock ratios. Leaves the clock mode of the device unchanged*/
+  CL_DEVICE_CLOCK_MODE_QUERYPEAK_AMD = 0x7, /*Queries the peak device clock ratios.Leaves the clock mode of the device unchanged*/
+  CL_DEVICE_CLOCK_MODE_COUNT_AMD = 0x8, /*Maxmium count of device clock mode*/
+};
+
+typedef struct _cl_set_device_clock_mode_input_amd
+{
+  /* specify the clock mode for AMD GPU device*/
+  cl_DeviceClockMode_AMD clock_mode;
+} cl_set_device_clock_mode_input_amd;
+
+typedef struct _cl_set_device_clock_mode_output_amd
+{
+  /*Ratio of current mem clock to peak clock as obtained from DeviceProperties::maxGpuClock*/
+  cl_float memory_clock_ratio_to_peak;
+  /*Ratio of current gpu core clock to peak clock as obtained from DeviceProperties::maxGpuClock*/
+  cl_float engine_clock_ratio_to_peak;
+} cl_set_device_clock_mode_output_amd;
+
 /*! \brief Creates a new HW performance counter
  *   for the specified OpenCL context.
  *
@@ -129,12 +157,9 @@
  *
  *  \return the created perfcounter object
  */
-extern CL_API_ENTRY cl_perfcounter_amd CL_API_CALL
-clCreatePerfCounterAMD(
-    cl_device_id                /* device */,
-    cl_perfcounter_property*    /* properties */,
-    cl_int*                     /* errcode_ret */
-) CL_API_SUFFIX__VERSION_1_0;
+extern CL_API_ENTRY cl_perfcounter_amd CL_API_CALL clCreatePerfCounterAMD(
+    cl_device_id /* device */, cl_perfcounter_property* /* properties */, cl_int* /* errcode_ret */
+    ) CL_API_SUFFIX__VERSION_1_0;
 
 /*! \brief Destroy a performance counter object.
  *
@@ -144,10 +169,8 @@
  *  - CL_SUCCESS if the function is executed successfully.
  *  - CL_INVALID_OPERATION if we failed to release the object
  */
-extern CL_API_ENTRY cl_int CL_API_CALL
-clReleasePerfCounterAMD(
-    cl_perfcounter_amd  /* perf_counter */
-) CL_API_SUFFIX__VERSION_1_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clReleasePerfCounterAMD(cl_perfcounter_amd /* perf_counter */
+                                                               ) CL_API_SUFFIX__VERSION_1_0;
 
 /*! \brief Increments the perfcounter object reference count.
  *
@@ -157,10 +180,8 @@
  *  - CL_SUCCESS if the function is executed successfully.
  *  - CL_INVALID_OPERATION if we failed to release the object
  */
-extern CL_API_ENTRY cl_int CL_API_CALL
-clRetainPerfCounterAMD(
-    cl_perfcounter_amd  /* perf_counter */
-) CL_API_SUFFIX__VERSION_1_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clRetainPerfCounterAMD(cl_perfcounter_amd /* perf_counter */
+                                                              ) CL_API_SUFFIX__VERSION_1_0;
 
 /*! \brief Enqueues the begin command for the specified counters.
  *
@@ -174,15 +195,11 @@
  *  - CL_SUCCESS if the function is executed successfully.
  *  - CL_INVALID_OPERATION if we failed to enqueue the begin operation
  */
-extern CL_API_ENTRY cl_int CL_API_CALL
-clEnqueueBeginPerfCounterAMD(
-    cl_command_queue    /* command_queue */,
-    cl_uint             /* num_perf_counters */,
-    cl_perfcounter_amd* /* perf_counters */,
-    cl_uint             /* num_events_in_wait_list */,
-    const cl_event*     /* event_wait_list */,
-    cl_event*           /* event */
-) CL_API_SUFFIX__VERSION_1_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueBeginPerfCounterAMD(
+    cl_command_queue /* command_queue */, cl_uint /* num_perf_counters */,
+    cl_perfcounter_amd* /* perf_counters */, cl_uint /* num_events_in_wait_list */,
+    const cl_event* /* event_wait_list */, cl_event* /* event */
+    ) CL_API_SUFFIX__VERSION_1_0;
 
 /*! \brief Enqueues the end command for the specified counters.
  *
@@ -198,15 +215,11 @@
  *  - CL_SUCCESS if the function is executed successfully.
  *  - CL_INVALID_OPERATION if we failed to enqueue the end operation
  */
-extern CL_API_ENTRY cl_int CL_API_CALL
-clEnqueueEndPerfCounterAMD(
-    cl_command_queue    /* command_queue */,
-    cl_uint             /* num_perf_counters */,
-    cl_perfcounter_amd* /* perf_counters */,
-    cl_uint             /* num_events_in_wait_list */,
-    const cl_event*     /* event_wait_list */,
-    cl_event*           /* event */
-) CL_API_SUFFIX__VERSION_1_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueEndPerfCounterAMD(
+    cl_command_queue /* command_queue */, cl_uint /* num_perf_counters */,
+    cl_perfcounter_amd* /* perf_counters */, cl_uint /* num_events_in_wait_list */,
+    const cl_event* /* event_wait_list */, cl_event* /* event */
+    ) CL_API_SUFFIX__VERSION_1_0;
 
 /*! \brief Retrieves the results from the counter objects.
  *
@@ -231,17 +244,18 @@
  *  - CL_PROFILING_INFO_NOT_AVAILABLE if event isn't finished.
  *  - CL_INVALID_OPERATION if we failed to get the data
  */
-extern CL_API_ENTRY cl_int CL_API_CALL
-clGetPerfCounterInfoAMD(
-    cl_perfcounter_amd  /* perf_counter */,
-    cl_perfcounter_info /* param_name */,
-    size_t              /* param_value_size */,
-    void*               /* param_value */,
-    size_t*             /* param_value_size_ret */
-) CL_API_SUFFIX__VERSION_1_0;
+extern CL_API_ENTRY cl_int CL_API_CALL clGetPerfCounterInfoAMD(
+    cl_perfcounter_amd /* perf_counter */, cl_perfcounter_info /* param_name */,
+    size_t /* param_value_size */, void* /* param_value */, size_t* /* param_value_size_ret */
+    ) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL clSetDeviceClockModeAMD(
+    cl_device_id /* device*/, cl_set_device_clock_mode_input_amd /* Clock_Mode_Input */,
+    cl_set_device_clock_mode_output_amd* /* Clock_Mode_Output */
+    ) CL_API_SUFFIX__VERSION_1_0;
 
 #ifdef __cplusplus
 } /*extern "C"*/
 #endif /*__cplusplus*/
 
-#endif  /*__CL_PROFILE_AMD_H*/
+#endif /*__CL_PROFILE_AMD_H*/
