Files
defiQUG c052b07662
Some checks failed
Tests / test (3.10) (push) Has been cancelled
Tests / test (3.11) (push) Has been cancelled
Tests / test (3.12) (push) Has been cancelled
Tests / lint (push) Has been cancelled
Tests / docker (push) Has been cancelled
Initial commit: add .gitignore and README
2026-02-09 21:51:42 -08:00

120 lines
4.4 KiB
Python

"""
pygments.lexers.ptx
~~~~~~~~~~~~~~~~~~~
Lexer for other PTX language.
:copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
from pygments.lexer import RegexLexer, include, words
from pygments.token import Comment, Keyword, Name, String, Number, \
Punctuation, Whitespace, Operator
__all__ = ["PtxLexer"]
class PtxLexer(RegexLexer):
"""
For NVIDIA `PTX <https://docs.nvidia.com/cuda/parallel-thread-execution/>`_
source.
"""
name = 'PTX'
url = "https://docs.nvidia.com/cuda/parallel-thread-execution/"
filenames = ['*.ptx']
aliases = ['ptx']
mimetypes = ['text/x-ptx']
version_added = '2.16'
#: optional Comment or Whitespace
string = r'"[^"]*?"'
followsym = r'[a-zA-Z0-9_$]'
identifier = r'([-a-zA-Z$._][\w\-$.]*|' + string + ')'
block_label = r'(' + identifier + r'|(\d+))'
tokens = {
'root': [
include('whitespace'),
(block_label + r'\s*:', Name.Label),
include('keyword'),
(r'%' + identifier, Name.Variable),
(r'%\d+', Name.Variable.Anonymous),
(r'c?' + string, String),
(identifier, Name.Variable),
(r';', Punctuation),
(r'[*+-/]', Operator),
(r'0[xX][a-fA-F0-9]+', Number),
(r'-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?', Number),
(r'[=<>{}\[\]()*.,!]|x\b', Punctuation)
],
'whitespace': [
(r'(\n|\s+)+', Whitespace),
(r'//.*?\n', Comment)
],
'keyword': [
# Instruction keywords
(words((
'abs', 'discard', 'min', 'shf', 'vadd',
'activemask', 'div', 'mma', 'shfl', 'vadd2',
'add', 'dp2a', 'mov', 'shl', 'vadd4',
'addc', 'dp4a', 'movmatrix', 'shr', 'vavrg2',
'alloca', 'elect', 'mul', 'sin', 'vavrg4',
'and', 'ex2', 'mul24', 'slct', 'vmad',
'applypriority', 'exit', 'multimem', 'sqrt', 'vmax',
'atom', 'fence', 'nanosleep', 'st', 'vmax2',
'bar', 'fma', 'neg', 'stackrestore', 'vmax4',
'barrier', 'fns', 'not', 'stacksave', 'vmin',
'bfe', 'getctarank', 'or', 'stmatrix', 'vmin2',
'bfi', 'griddepcontrol', 'pmevent', 'sub', 'vmin4',
'bfind', 'isspacep', 'popc', 'subc', 'vote',
'bmsk', 'istypep', 'prefetch', 'suld', 'vset',
'bra', 'ld', 'prefetchu', 'suq', 'vset2',
'brev', 'ldmatrix', 'prmt', 'sured', 'vset4',
'brkpt', 'ldu', 'rcp', 'sust', 'vshl',
'brx', 'lg2', 'red', 'szext', 'vshr',
'call', 'lop3', 'redux', 'tanh', 'vsub',
'clz', 'mad', 'rem', 'testp', 'vsub2',
'cnot', 'mad24', 'ret', 'tex', 'vsub4',
'copysign', 'madc', 'rsqrt', 'tld4', 'wgmma',
'cos', 'mapa', 'sad', 'trap', 'wmma',
'cp', 'match', 'selp', 'txq', 'xor',
'createpolicy', 'max', 'set', 'vabsdiff', 'cvt',
'mbarrier', 'setmaxnreg', 'vabsdiff2', 'cvta',
'membar', 'setp', 'vabsdiff4')), Keyword),
# State Spaces and Suffixes
(words((
'reg', '.sreg', '.const', '.global',
'.local', '.param', '.shared', '.tex',
'.wide', '.loc'
)), Keyword.Pseudo),
# PTX Directives
(words((
'.address_size', '.explicitcluster', '.maxnreg', '.section',
'.alias', '.extern', '.maxntid', '.shared',
'.align', '.file', '.minnctapersm', '.sreg',
'.branchtargets', '.func', '.noreturn', '.target',
'.callprototype', '.global', '.param', '.tex',
'.calltargets', '.loc', '.pragma', '.version',
'.common', '.local', '.reg', '.visible',
'.const', '.maxclusterrank', '.reqnctapercluster', '.weak',
'.entry', '.maxnctapersm', '.reqntid')), Keyword.Reserved),
# Fundamental Types
(words((
'.s8', '.s16', '.s32', '.s64',
'.u8', '.u16', '.u32', '.u64',
'.f16', '.f16x2', '.f32', '.f64',
'.b8', '.b16', '.b32', '.b64',
'.pred'
)), Keyword.Type)
],
}