-
Notifications
You must be signed in to change notification settings - Fork 0
/
ptx.syn
503 lines (497 loc) · 5.68 KB
/
ptx.syn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
; For PTX assembly
C=1
[Syntax]
Namespace1 = 6
IgnoreCase = No
KeyWordLength =
BracketChars = {[()]}
OperatorChars = -+*/<>!~%^&|=
PreprocStart = #
SyntaxStart =
SyntaxEnd =
HexPrefix = 0x
CommentStart = /*
CommentEnd = */
CommentStartAlt =
CommentEndAlt =
SingleComment = //
SingleCommentCol =
SingleCommentAlt =
SingleCommentColAlt =
SingleCommentEsc =
StringsSpanLines = Yes
StringStart = "
StringEnd = "
StringAlt =
StringEsc = \
CharStart = '
CharEnd = '
CharEsc = \
[Preprocessor keywords]
#define
#elif
#else
#endif
#error
#if
#ifdef
#ifndef
#include
#pragma
#undef
defined
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Some of this comes from:
; https://docs.nvidia.com/cuda/parallel-thread-execution/index.html
; Other parts come from codegen on examples.
[Keywords 1]
@kernel
abs
activemask
add
and
atom
bar
barrier
bfe
bfi
bfind
brev
bra
call
clz
cnot
copysign
cos
cvt
cvta
div
dp2a
dp4a
ex2
exit
fence
fma
fns
free
isspacep
ld
ldu
lop3
lg
mad
madc
mad24
malloc
match
max
membar
min
mov
mul
mul24
neg
not
or
popc
prefetch
prefetchu
prmt
rcp
red
rem
ret
rsqrt
selp
setp
shf
shfl
shl
shr
sin
slct
sqrt
st
sub
suld
sust
sured
suq
testp
tex
tld4
txq
vote
printf
wmma
xor
;
brkpt
nanosleep
pmevent
trap
;
; video instructions
vabsdiff
vabsdiff2
vabsdiff4
vadd
vadd2
vadd4
vsub
vsub2
vsub4
vmad
vavrg2
vavrg4
vmin
vmin2
vmin4
vmax
vmax2
vmax4
vshl
vshr
vset
vset2
vset4
;
applypriority
mbarrier
tensormap
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[Keywords 2]
; STUFF THAT FOLLOWS DOTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Types
b8
b16
b32
b64
;
s8
s16
s32
s64
;
u16
u32
u64
u8
;
f16
f16x2
f32
f64
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Comparison functions
; setp.* and set.*
; https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#comparison-and-selection-instructions-set
;; signed
eq
ge
gt
le
lt
ne
;; unsigned
; lower
lo
; lower or same
ls
; higher
hi
; higher or same
hs
;; floating
num
nan
; u means unordered (if either is NaN, then we evaluate *true*, not false)
equ
geu
gtu
leu
ltu
neu
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; test.*
finite
infinite
number
notanumber
normal
subnormal
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; atom.{global,shared}.*
; NOTE: some of these overlap the base ops
;add
;and
cas
dec
exch
inc
;max
;min
;or
;xor
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Rounding modes and saturation
; i means integer (lack thereof means float)
; n => nearest even
rn
rni
; z => towards zero
rz
rzi
; m => minus infinity
rm
rmi
; p => positive inifnity
rp
rpi
;
ftz
sat
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Division modifiers
approx
full
; or can be one of the rounding modes
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Data Movement Options
; https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#data-movement-and-conversion-instructions
;; LOADS
; cache at (a)ll levels
ca
; cache at global (L2 and below)
cg
; cache streaming (likely to be accessed once only)
cs
; last use (spill restore) invalidates after read
lu
; cache (v)olatile: don't cache and fetch again (forces a line reload)
cv
;; STORES
; cache writeback all coherent levels
wb
; cache write through
wt
; cg
; cs
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
const
global
local
param
shared
;
relaxed
release
acquire
weak
volatile
;
cta
gpu
sys
;
v2
v4
;
; non coherent load ld.global{|.ca|.cg|.cs}.nc
nc
;
; e.g. prefetchu.L1 or prefetch.global.{L1,L2}
L1
L2
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; shuffle options:
; shfl and prmt
up
down
bfly
idx
;
; https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#data-movement-and-conversion-instructions-prmt
; forward/backward for extract
f4e
b4e
; replicate 8/16
rc8
rc16
; edge clamp left/right
ecl
ecr
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; tex and txq
1d
2d
2dms
3d
a1d
a2d
a2dms
cube
acube
;
width
height
depth
;
geom
level
grad
base
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; surface operations
; suld.*, sust.*, sured.*
trap
clamp
zero
; v2
; v4
none
;
b
;
; sured ops
; add min max and or
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Branch Ops:
; bra.uni (uniform branch)
; bra.idx
; ret.uni
; ret
idx
uni
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; vote.*
all
any
; uni
ballot
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; WMMA
;
m16n16k16
m8n32k16
m32n8k16
m8n8k32
m8n8k128
col
row
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Video Op Options
;
b0
b1
b2
b3
h0
h1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Special Registers
;
tid
ntid
laneid
warpid
nwarpid
ctaid
smid
nsmid
gridid
lanemask_eq
lanemask_le
lanemask_lt
lanemask_ge
lanemask_gt
clock
clock_hi
clock64
pm0
pm1
pm2
pm3
pm4
pm5
pm6
pm7
pm0_64
pm1_64
pm2_64
pm3_64
pm4_64
pm5_64
pm6_64
pm7_64
envreg0
envreg1
envreg2
envreg3
envreg4
envreg5
envreg6
envreg7
envreg8
envreg9
envreg10
envreg11
envreg12
envreg13
envreg14
envreg15
envreg16
envreg17
envreg18
envreg19
envreg20
envreg21
envreg22
envreg23
envreg24
envreg25
envreg26
envreg27
envreg28
envreg29
envreg30
envreg31
total_smem_size
dynamic_smem_size
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; OTHER STUFF
address_size
align
aligned
c
cc
d
entry
extern
func
gl
level
;ld
load
param
pragma
pred
red
reg
sync
target
to
version
visible
warp
wide