<?xml version="1.0" encoding="UTF-8"?>
<!--

 This file is part of GtkSourceView

 Author: Aditya Atluri <aditya.atluri@amd.com>

 GtkSourceView is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.

 GtkSourceView is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

-->
<language id="hip" _name="HIP" version="2.0" _section="Sources">
    <metadata>
      <property name="globs">*.cpp;*.c;*.cu</property>
      <property name="line-comment-start">//</property>
      <property name="block-comment-start">/*</property>
      <property name="block-comment-end">*/</property>
    </metadata>


    <styles>
      <style id="keyword"       _name="Keyword"           map-to="def:keyword"/>
      <style id="data-type"     _name="Data Type"         map-to="def:type"/>
      <style id="hip-global"   _name="Global Functions"  map-to="def:function"/>
      <style id="hip-device"   _name="Device Functions"  map-to="def:function"/>
      <style id="global-var"    _name="Global Variables"  map-to="def:identifier"/>
    </styles>

    <definitions>
      <context id="hip">
      <include>  
        <context ref="def:c-like-comment"/>

        <context ref="c:string"/>

        <context ref="c:escaped-character"/>

        <context ref="c:storage-class"/> 

        <context ref="def:c-like-comment-multiline"/>
        <context ref="def:c-like-close-comment-outside-comment"/>

        <context ref="c:char"/>

        <context ref="def:decimal"/>

        <context ref="def:float"/>

        <context ref="c:hexadecimal"/> 

        <context ref="c:octal"/>		

        <context ref="c:keywords"/>			

        <context id="hip-keywords" style-ref="keyword">
          <keyword>__global__</keyword>	
          <keyword>__host__</keyword>
          <keyword>__device__</keyword>
          <keyword>__constant__</keyword>
          <keyword>__shared__</keyword>			
					<keyword>__kernel__</keyword>
        </context>

        <context ref="c:types" />

        <context id="hip-types" style-ref="data-type">
          <keyword>uint</keyword>
          <keyword>int1 </keyword>
          <keyword>uint1</keyword>
          <keyword>int2</keyword>
          <keyword>uint2</keyword>
          <keyword>int3</keyword>
          <keyword>uint3</keyword>
          <keyword>int4</keyword>
          <keyword>uint4</keyword>
          <keyword>float1</keyword>
          <keyword>float2</keyword>
          <keyword>float3</keyword>
          <keyword>float4</keyword>
          <keyword>char1</keyword>
          <keyword>char2</keyword>
          <keyword>char3</keyword>
          <keyword>char4</keyword>
          <keyword>uchar1</keyword>
          <keyword>uchar2</keyword>
          <keyword>uchar3</keyword>
          <keyword>uchar4</keyword>
          <keyword>short1</keyword>
          <keyword>short2</keyword>
          <keyword>short3</keyword>
          <keyword>short4</keyword>
          <keyword>dim1</keyword>
          <keyword>dim2</keyword>
          <keyword>dim3</keyword>
          <keyword>dim4</keyword>
          </context>

        <context id="hipglobal" style-ref="global-var">
          <keyword>hipThreadIdx_x</keyword>
          <keyword>hipThreadIdx_y</keyword>
          <keyword>hipThreadIdx_z</keyword>
          <keyword>hipBlockDim_x</keyword>
          <keyword>hipBlockDim_y</keyword>
          <keyword>hipBlockDim_z</keyword>
          <keyword>hipBlockIdx_x</keyword>
          <keyword>hipBlockIdx_y</keyword>
          <keyword>hipBlockIdx_z</keyword>
          <keyword>hipGridIdx_x</keyword>
          <keyword>hipGridIdx_y</keyword>
          <keyword>hipGridIdx_z</keyword>
        </context>

        <context id="hipatom" style-ref="hip-device">
          <keyword>atomicAdd</keyword>
          <keyword>atomicAnd</keyword>
          <keyword>atomicCAS</keyword>
          <keyword>atomicDec</keyword>
          <keyword>atomicExch</keyword>
          <keyword>atomicInc</keyword>
          <keyword>atomicMax</keyword>
          <keyword>atomicMin</keyword>
          <keyword>atomicOr</keyword>
          <keyword>atomicSub</keyword>
          <keyword>atomicXor</keyword>
        </context>

        <context id="hipdev" style-ref="hip-device">
          <keyword>tex1D</keyword>
          <keyword>tex1Dfetch</keyword>
          <keyword>tex2D</keyword>
          <keyword>__float_as_int</keyword>
          <keyword>__int_as_float</keyword>
          <keyword>__float2int_rn</keyword>
          <keyword>__float2int_rz</keyword>
          <keyword>__float2int_ru</keyword>
          <keyword>__float2int_rd</keyword>
          <keyword>__float2uint_rn</keyword>
          <keyword>__float2uint_rz</keyword>
          <keyword>__float2uint_ru</keyword>
          <keyword>__float2uint_rd</keyword>
          <keyword>__int2float_rn</keyword>
          <keyword>__int2float_rz</keyword>
          <keyword>__int2float_ru</keyword>
          <keyword>__int2float_rd</keyword>
          <keyword>__uint2float_rn</keyword>
          <keyword>__uint2float_rz</keyword>
          <keyword>__uint2float_ru</keyword>
          <keyword>__uint2float_rd</keyword>
          <keyword>__fadd_rz</keyword>
          <keyword>__fmul_rz</keyword>
          <keyword>__fdividef</keyword>
          <keyword>__mul24</keyword>
          <keyword>__umul24</keyword>
          <keyword>__mulhi</keyword>
          <keyword>__umulhi</keyword>
          <keyword>__mul64hi</keyword>
          <keyword>__umul64hi</keyword>
          <keyword>min</keyword>
          <keyword>umin</keyword>
          <keyword>fminf</keyword>
          <keyword>fmin</keyword>
          <keyword>max</keyword>
          <keyword>umax</keyword>
          <keyword>fmaxf</keyword>
          <keyword>fmax</keyword>
          <keyword>abs</keyword>
          <keyword>fabsf</keyword>
          <keyword>fabs</keyword>
          <keyword>sqrtf</keyword>
          <keyword>sqrt</keyword>
          <keyword>sinf</keyword>
          <keyword>__sinf</keyword>
          <keyword>sin</keyword>
          <keyword>cosf</keyword>
          <keyword>__cosf</keyword>
          <keyword>cos</keyword>
          <keyword>sincosf</keyword>
          <keyword>__sincosf</keyword>
          <keyword>expf</keyword>
          <keyword>__expf</keyword>
          <keyword>exp</keyword>
          <keyword>logf</keyword>
          <keyword>__logf</keyword>
          <keyword>log</keyword>
        </context>

        <context id="hip-runtime" style-ref="hip-global">
          <keyword>hipBindTexture</keyword>
          <keyword>hipBindTextureToArray</keyword>
          <keyword>hipChooseDevice</keyword>
          <keyword>hipConfigureCall</keyword>
          <keyword>hipCreateChannelDesc</keyword>
          <keyword>hipD3D10GetDevice</keyword>
          <keyword>hipD3D10MapResources</keyword>
          <keyword>hipD3D10RegisterResource</keyword>
          <keyword>hipD3D10ResourceGetMappedArray</keyword>
          <keyword>hipD3D10ResourceGetMappedPitch</keyword>
          <keyword>hipD3D10ResourceGetMappedPointer</keyword>
          <keyword>hipD3D10ResourceGetMappedSize</keyword>
          <keyword>hipD3D10ResourceGetSurfaceDimensions</keyword>
          <keyword>hipD3D10ResourceSetMapFlags</keyword>
          <keyword>hipD3D10SetDirect3DDevice</keyword>
          <keyword>hipD3D10UnmapResources</keyword>
          <keyword>hipD3D10UnregisterResource</keyword>
          <keyword>hipD3D9GetDevice</keyword>
          <keyword>hipD3D9GetDirect3DDevice</keyword>
          <keyword>hipD3D9MapResources</keyword>
          <keyword>hipD3D9RegisterResource</keyword>
          <keyword>hipD3D9ResourceGetMappedArray</keyword>
          <keyword>hipD3D9ResourceGetMappedPitch</keyword>
          <keyword>hipD3D9ResourceGetMappedPointer</keyword>
          <keyword>hipD3D9ResourceGetMappedSize</keyword>
          <keyword>hipD3D9ResourceGetSurfaceDimensions</keyword>
          <keyword>hipD3D9ResourceSetMapFlags</keyword>
          <keyword>hipD3D9SetDirect3DDevice</keyword>
          <keyword>hipD3D9UnmapResources</keyword>
          <keyword>hipD3D9UnregisterResource</keyword>
          <keyword>hipGetDeviceProperties</keyword>
		  <keyword>hipDeviceSynchronize</keyword>
          <keyword>hipEventCreate</keyword>
          <keyword>hipEventDestroy</keyword>
          <keyword>hipEventElapsedTime</keyword>
          <keyword>hipEventQuery</keyword>
          <keyword>hipEventRecord</keyword>
          <keyword>hipEventSynchronize</keyword>
          <keyword>hipFree</keyword>
          <keyword>hipFreeArray</keyword>
          <keyword>hipFreeHost </keyword>
          <keyword>hipGetChannelDesc</keyword>
          <keyword>hipGetDevice</keyword>
          <keyword>hipGetDeviceCount</keyword>
          <keyword>hipGetDeviceProperties</keyword>
          <keyword>hipGetErrorString</keyword>
          <keyword>hipGetLastError</keyword>
          <keyword>hipGetSymbolAddress</keyword>
          <keyword>hipGetSymbolSize</keyword>
          <keyword>hipGetTextureAlignmentOffset</keyword>
          <keyword>hipGetTextureReference</keyword>
          <keyword>hipGLMapBufferObject</keyword>
          <keyword>hipGLRegisterBufferObject</keyword>
          <keyword>hipGLSetGLDevice</keyword>
          <keyword>hipGLUnmapBufferObject</keyword>
          <keyword>hipGLUnregisterBufferObject</keyword>
          <keyword>hipLaunch</keyword>
					<keyword>hipLaunchKernel</keyword>
          <keyword>hipMalloc</keyword>
          <keyword>hipMalloc3D</keyword>
          <keyword>hipMalloc3DArray</keyword>
          <keyword>hipMallocArray</keyword>
          <keyword>hipMallocHost</keyword>
          <keyword>hipMallocPitch</keyword>
          <keyword>hipMemcpy</keyword>
          <keyword>hipMemcpy2D</keyword>
          <keyword>hipMemcpy2DArrayToArray</keyword>
          <keyword>hipMemcpy2DFromArray</keyword>
          <keyword>hipMemcpy2DToArray</keyword>
          <keyword>hipMemcpy3D</keyword>
          <keyword>hipMemcpyArrayToArray</keyword>
          <keyword>hipMemcpyFromArray</keyword>
          <keyword>hipMemcpyFromSymbol</keyword>
          <keyword>hipMemcpyToArray</keyword>
          <keyword>hipMemcpyToSymbol</keyword>
          <keyword>hipMemset</keyword>
          <keyword>hipMemset2D</keyword>
          <keyword>hipMemset3D</keyword>
          <keyword>hipSetDevice</keyword>
          <keyword>hipSetupArgument</keyword>
          <keyword>hipStreamCreate</keyword>
          <keyword>hipStreamDestroy</keyword>
          <keyword>hipStreamQuery</keyword>
          <keyword>hipStreamSynchronize</keyword>
          <keyword>hipThreadExit</keyword>
          <keyword>hipThreadSynchronize</keyword>
          <keyword>hipUnbindTexture</keyword>
        </context>

        <context id="hip-runtime-type" style-ref="keyword">
        	<keyword>hipDeviceProp_t</keyword>
        	<keyword>hipError_t</keyword>
					<keyword>hipFilterModePoint</keyword>
					<keyword>hipMemcpyHostToDevice</keyword>
					<keyword>hipMemcpyDeviceToHost</keyword>
					<keyword>hipReadModeElementType</keyword>
					<keyword>hipSuccess</keyword>
        	<keyword>hipTextureType1D</keyword>
				</context>

        <context ref="c:preprocessor"/>

        <context ref="c:include"/>

        <context ref="c:if0-comment"/>
        </include>
      </context>
    </definitions>
</language>


