neovim/runtime/syntax/ptx.vim
Christian Clason 812d029702 vim-patch:9.1.0906: filetype: Nvidia PTX files are not recognized
Problem:  filetype: Nvidia PTX files are not recognized
Solution: detect '*.ptx' files as ptx filetype (Yinzuo Jiang)

Reference: https://docs.nvidia.com/cuda/parallel-thread-execution/

closes: vim/vim#16171

bdb5f85a51

Co-authored-by: Yinzuo Jiang <jiangyinzuo@foxmail.com>
2024-12-06 09:40:44 +01:00

53 lines
1.7 KiB
VimL

" Vim syntax file
" Language: Nvidia PTX (Parallel Thread Execution)
" Maintainer: Yinzuo Jiang <jiangyinzuo@foxmail.com>
" Latest Revision: 2024-12-05
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
syntax iskeyword .,_,a-z,48-57
" https://docs.nvidia.com/cuda/parallel-thread-execution/#directives
syntax keyword ptxFunction .entry .func
syntax keyword ptxDirective .branchtargets .file .loc .secion .maxnctapersm .maxnreg .minnctapersm .noreturn .pragma .reqntid .target .version .weak
syntax keyword ptxOperator .address_size .alias .align .callprototype .calltargets
syntax keyword ptxStorageClass .common .const .extern .global .local .param .reg .sreg .shared .tex .visible
syntax keyword ptxType .explicitcluster .maxclusterrank .reqnctapercluster
" https://docs.nvidia.com/cuda/parallel-thread-execution/#fundamental-types
" signed integer
syntax keyword ptxType .s8 .s16 .s32 .s64
" unsigned integer
syntax keyword ptxType .u8 .u16 .u32 .u64
" floating-point
syntax keyword ptxType .f16 .f16x2 .f32 .f64
" bits (untyped)
syntax keyword ptxType .b8 .b16 .b32 .b64 .b128
" predicate
syntax keyword ptxType .pred
" https://docs.nvidia.com/cuda/parallel-thread-execution/#instruction-statements
syntax keyword ptxStatement ret
syntax region ptxCommentL start="//" skip="\\$" end="$" keepend
syntax region ptxComment matchgroup=ptxCommentStart start="/\*" end="\*/" extend
hi def link ptxFunction Function
hi def link ptxDirective Keyword
hi def link ptxOperator Operator
hi def link ptxStorageClass StorageClass
hi def link ptxType Type
hi def link ptxStatement Statement
hi def link ptxCommentL ptxComment
hi def link ptxCommentStart ptxComment
hi def link ptxComment Comment
let &cpo = s:cpo_save
unlet s:cpo_save