iup-stack/iup/etc/lexlua/cuda.lua

72 lines
3.4 KiB
Lua
Executable File

-- Copyright 2006-2019 Mitchell mitchell.att.foicica.com. See License.txt.
-- CUDA LPeg lexer.
local lexer = require('lexer')
local token, word_match = lexer.token, lexer.word_match
local P, R, S = lpeg.P, lpeg.R, lpeg.S
local lex = lexer.new('cuda', {inherit = lexer.load('cpp')})
-- Whitespace
lex:modify_rule('whitespace', token(lexer.WHITESPACE, lexer.space^1))
-- Keywords.
lex:modify_rule('keyword', token(lexer.KEYWORD, word_match[[
__global__ __host__ __device__ __constant__ __shared__
]]) + lex:get_rule('keyword'))
-- Types.
lex:modify_rule('type', token(lexer.TYPE, word_match[[
uint int1 uint1 int2 uint2 int3 uint3 int4 uint4 float1 float2 float3 float4
char1 char2 char3 char4 uchar1 uchar2 uchar3 uchar4 short1 short2 short3
short4 dim1 dim2 dim3 dim4
]]) + lex:get_rule('type') +
-- Functions.
token(lexer.FUNCTION, word_match[[
-- Atom.
atomicAdd atomicAnd atomicCAS atomicDec atomicExch atomicInc atomicMax
atomicMin atomicOr atomicSub atomicXor
-- Dev.
tex1D tex1Dfetch tex2D __float_as_int __int_as_float __float2int_rn
__float2int_rz __float2int_ru __float2int_rd __float2uint_rn __float2uint_rz
__float2uint_ru __float2uint_rd __int2float_rn __int2float_rz __int2float_ru
__int2float_rd __uint2float_rn __uint2float_rz __uint2float_ru __uint2float_rd
__fadd_rz __fmul_rz __fdividef __mul24 __umul24 __mulhi __umulhi __mul64hi
__umul64hi min umin fminf fmin max umax fmaxf fmax abs fabsf fabs sqrtf sqrt
sinf __sinf sin cosf __cosf cos sincosf __sincosf expf __expf exp logf __logf
log
-- Runtime.
cudaBindTexture cudaBindTextureToArray cudaChooseDevice cudaConfigureCall
cudaCreateChannelDesc cudaD3D10GetDevice cudaD3D10MapResources
cudaD3D10RegisterResource cudaD3D10ResourceGetMappedArray
cudaD3D10ResourceGetMappedPitch cudaD3D10ResourceGetMappedPointer
cudaD3D10ResourceGetMappedSize cudaD3D10ResourceGetSurfaceDimensions
cudaD3D10ResourceSetMapFlags cudaD3D10SetDirect3DDevice
cudaD3D10UnmapResources cudaD3D10UnregisterResource cudaD3D9GetDevice
cudaD3D9GetDirect3DDevice cudaD3D9MapResources cudaD3D9RegisterResource
cudaD3D9ResourceGetMappedArray cudaD3D9ResourceGetMappedPitch
cudaD3D9ResourceGetMappedPointer cudaD3D9ResourceGetMappedSize
cudaD3D9ResourceGetSurfaceDimensions cudaD3D9ResourceSetMapFlags
cudaD3D9SetDirect3DDevice cudaD3D9UnmapResources cudaD3D9UnregisterResource
cudaEventCreate cudaEventDestroy cudaEventElapsedTime cudaEventQuery
cudaEventRecord cudaEventSynchronize cudaFree cudaFreeArray cudaFreeHost
cudaGetChannelDesc cudaGetDevice cudaGetDeviceCount cudaGetDeviceProperties
cudaGetErrorString cudaGetLastError cudaGetSymbolAddress cudaGetSymbolSize
cudaGetTextureAlignmentOffset cudaGetTextureReference cudaGLMapBufferObject
cudaGLRegisterBufferObject cudaGLSetGLDevice cudaGLUnmapBufferObject
cudaGLUnregisterBufferObject cudaLaunch cudaMalloc cudaMalloc3D
cudaMalloc3DArray cudaMallocArray cudaMallocHost cudaMallocPitch cudaMemcpy
cudaMemcpy2D cudaMemcpy2DArrayToArray cudaMemcpy2DFromArray
cudaMemcpy2DToArray cudaMemcpy3D cudaMemcpyArrayToArray cudaMemcpyFromArray
cudaMemcpyFromSymbol cudaMemcpyToArray cudaMemcpyToSymbol cudaMemset
cudaMemset2D cudaMemset3D cudaSetDevice cudaSetupArgument cudaStreamCreate
cudaStreamDestroy cudaStreamQuery cudaStreamSynchronize cudaThreadExit
cudaThreadSynchronize cudaUnbindTexture
]]) +
-- Variables.
token(lexer.VARIABLE, word_match[[gridDim blockIdx blockDim threadIdx]]))
return lex