72 lines
3.4 KiB
Lua
72 lines
3.4 KiB
Lua
|
-- 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
|