Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pygments/lexers/ptx.py: 100%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2 pygments.lexers.ptx
3 ~~~~~~~~~~~~~~~~~~~
5 Lexer for other PTX language.
7 :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9"""
11from pygments.lexer import RegexLexer, include, words
12from pygments.token import Comment, Keyword, Name, String, Number, \
13 Punctuation, Whitespace, Operator
15__all__ = ["PtxLexer"]
18class PtxLexer(RegexLexer):
19 """
20 For NVIDIA `PTX <https://docs.nvidia.com/cuda/parallel-thread-execution/>`_
21 source.
22 """
23 name = 'PTX'
24 url = "https://docs.nvidia.com/cuda/parallel-thread-execution/"
25 filenames = ['*.ptx']
26 aliases = ['ptx']
27 mimetypes = ['text/x-ptx']
28 version_added = '2.16'
30 #: optional Comment or Whitespace
31 string = r'"[^"]*?"'
32 followsym = r'[a-zA-Z0-9_$]'
33 identifier = r'([-a-zA-Z$._][\w\-$.]*|' + string + ')'
34 block_label = r'(' + identifier + r'|(\d+))'
36 tokens = {
37 'root': [
38 include('whitespace'),
40 (block_label + r'\s*:', Name.Label),
42 include('keyword'),
44 (r'%' + identifier, Name.Variable),
45 (r'%\d+', Name.Variable.Anonymous),
46 (r'c?' + string, String),
47 (identifier, Name.Variable),
48 (r';', Punctuation),
49 (r'[*+-/]', Operator),
51 (r'0[xX][a-fA-F0-9]+', Number),
52 (r'-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?', Number),
54 (r'[=<>{}\[\]()*.,!]|x\b', Punctuation)
56 ],
57 'whitespace': [
58 (r'(\n|\s+)+', Whitespace),
59 (r'//.*?\n', Comment)
60 ],
62 'keyword': [
63 # Instruction keywords
64 (words((
65 'abs', 'discard', 'min', 'shf', 'vadd',
66 'activemask', 'div', 'mma', 'shfl', 'vadd2',
67 'add', 'dp2a', 'mov', 'shl', 'vadd4',
68 'addc', 'dp4a', 'movmatrix', 'shr', 'vavrg2',
69 'alloca', 'elect', 'mul', 'sin', 'vavrg4',
70 'and', 'ex2', 'mul24', 'slct', 'vmad',
71 'applypriority', 'exit', 'multimem', 'sqrt', 'vmax',
72 'atom', 'fence', 'nanosleep', 'st', 'vmax2',
73 'bar', 'fma', 'neg', 'stackrestore', 'vmax4',
74 'barrier', 'fns', 'not', 'stacksave', 'vmin',
75 'bfe', 'getctarank', 'or', 'stmatrix', 'vmin2',
76 'bfi', 'griddepcontrol', 'pmevent', 'sub', 'vmin4',
77 'bfind', 'isspacep', 'popc', 'subc', 'vote',
78 'bmsk', 'istypep', 'prefetch', 'suld', 'vset',
79 'bra', 'ld', 'prefetchu', 'suq', 'vset2',
80 'brev', 'ldmatrix', 'prmt', 'sured', 'vset4',
81 'brkpt', 'ldu', 'rcp', 'sust', 'vshl',
82 'brx', 'lg2', 'red', 'szext', 'vshr',
83 'call', 'lop3', 'redux', 'tanh', 'vsub',
84 'clz', 'mad', 'rem', 'testp', 'vsub2',
85 'cnot', 'mad24', 'ret', 'tex', 'vsub4',
86 'copysign', 'madc', 'rsqrt', 'tld4', 'wgmma',
87 'cos', 'mapa', 'sad', 'trap', 'wmma',
88 'cp', 'match', 'selp', 'txq', 'xor',
89 'createpolicy', 'max', 'set', 'vabsdiff', 'cvt',
90 'mbarrier', 'setmaxnreg', 'vabsdiff2', 'cvta',
91 'membar', 'setp', 'vabsdiff4')), Keyword),
92 # State Spaces and Suffixes
93 (words((
94 'reg', '.sreg', '.const', '.global',
95 '.local', '.param', '.shared', '.tex',
96 '.wide', '.loc'
97 )), Keyword.Pseudo),
98 # PTX Directives
99 (words((
100 '.address_size', '.explicitcluster', '.maxnreg', '.section',
101 '.alias', '.extern', '.maxntid', '.shared',
102 '.align', '.file', '.minnctapersm', '.sreg',
103 '.branchtargets', '.func', '.noreturn', '.target',
104 '.callprototype', '.global', '.param', '.tex',
105 '.calltargets', '.loc', '.pragma', '.version',
106 '.common', '.local', '.reg', '.visible',
107 '.const', '.maxclusterrank', '.reqnctapercluster', '.weak',
108 '.entry', '.maxnctapersm', '.reqntid')), Keyword.Reserved),
109 # Fundamental Types
110 (words((
111 '.s8', '.s16', '.s32', '.s64',
112 '.u8', '.u16', '.u32', '.u64',
113 '.f16', '.f16x2', '.f32', '.f64',
114 '.b8', '.b16', '.b32', '.b64',
115 '.pred'
116 )), Keyword.Type)
117 ],
119 }