xref: /llvm-project/mlir/utils/vim/syntax/mlir.vim (revision 444822d77a7fea28aa49edf24533c987efa1b2ee)
1e8d43cafSUday Bondhugula" Vim syntax file
2e8d43cafSUday Bondhugula" Language:   mlir
3e8d43cafSUday Bondhugula" Maintainer: The MLIR team, http://github.com/tensorflow/mlir/
4e8d43cafSUday Bondhugula" Version:      $Revision$
520d3e71cSUday Bondhugula" Some parts adapted from the LLVM vim syntax file.
6e8d43cafSUday Bondhugula
7e8d43cafSUday Bondhugulaif version < 600
8e8d43cafSUday Bondhugula  syntax clear
9e8d43cafSUday Bondhugulaelseif exists("b:current_syntax")
10e8d43cafSUday Bondhugula  finish
11e8d43cafSUday Bondhugulaendif
12e8d43cafSUday Bondhugula
13e8d43cafSUday Bondhugulasyn case match
14e8d43cafSUday Bondhugula
15e8d43cafSUday Bondhugula" Types.
16b8cc449bSUday Bondhugula"
17e8d43cafSUday Bondhugulasyn keyword mlirType index f16 f32 f64
18b8cc449bSUday Bondhugula" Signless integer types.
19e8d43cafSUday Bondhugulasyn match mlirType /\<i\d\+\>/
20b8cc449bSUday Bondhugula" Unsigned integer types.
21b8cc449bSUday Bondhugulasyn match mlirType /\<ui\d\+\>/
22b8cc449bSUday Bondhugula" Signed integer types.
23b8cc449bSUday Bondhugulasyn match mlirType /\<si\d\+\>/
2420d3e71cSUday Bondhugula
2520d3e71cSUday Bondhugula" Elemental types inside memref, tensor, or vector types.
26b8cc449bSUday Bondhugulasyn match mlirType /x\s*\zs\(f16\|f32\|f64\|i\d\+\|ui\d\+\|si\d\+\)/
2720d3e71cSUday Bondhugula
2820d3e71cSUday Bondhugula" Shaped types.
2920d3e71cSUday Bondhugulasyn match mlirType /\<memref\ze\s*<.*>/
3020d3e71cSUday Bondhugulasyn match mlirType /\<tensor\ze\s*<.*>/
3120d3e71cSUday Bondhugulasyn match mlirType /\<vector\ze\s*<.*>/
3220d3e71cSUday Bondhugula
3320d3e71cSUday Bondhugula" vector types inside memref or tensor.
3420d3e71cSUday Bondhugulasyn match mlirType /x\s*\zsvector/
35e8d43cafSUday Bondhugula
36e8d43cafSUday Bondhugula" Operations.
37b8cc449bSUday Bondhugula" Standard dialect ops.
38b8cc449bSUday Bondhugula" TODO: this list is not exhaustive.
39b8cc449bSUday Bondhugulasyn keyword mlirOps alloc alloca addf addi and call call_indirect cmpf cmpi
40b8cc449bSUday Bondhugulasyn keyword mlirOps constant dealloc divf dma_start dma_wait dim exp
41*444822d7SSean Silvasyn keyword mlirOps getTensor index_cast load log memref_cast
42b8cc449bSUday Bondhugulasyn keyword mlirOps memref_shape_cast mulf muli negf powf prefetch rsqrt sitofp
43b8cc449bSUday Bondhugulasyn keyword mlirOps splat store select sqrt subf subi subview tanh tensor_cast
44b8cc449bSUday Bondhugulasyn keyword mlirOps view
45e8d43cafSUday Bondhugula
46e8d43cafSUday Bondhugula" Affine ops.
47e8d43cafSUday Bondhugulasyn match mlirOps /\<affine\.apply\>/
48e8d43cafSUday Bondhugulasyn match mlirOps /\<affine\.dma_start\>/
49e8d43cafSUday Bondhugulasyn match mlirOps /\<affine\.dma_wait\>/
50e8d43cafSUday Bondhugulasyn match mlirOps /\<affine\.for\>/
51e8d43cafSUday Bondhugulasyn match mlirOps /\<affine\.if\>/
52e8d43cafSUday Bondhugulasyn match mlirOps /\<affine\.load\>/
53b8cc449bSUday Bondhugulasyn match mlirOps /\<affine\.parallel\>/
5447034c4bSUday Bondhugulasyn match mlirOps /\<affine\.prefetch\>/
55e8d43cafSUday Bondhugulasyn match mlirOps /\<affine\.store\>/
56ca23bd78SUday Bondhugulasyn match mlirOps /\<loop\.for\>/
57ca23bd78SUday Bondhugulasyn match mlirOps /\<loop\.if\>/
58e8d43cafSUday Bondhugula
5920d3e71cSUday Bondhugula" TODO: dialect name prefixed ops (llvm or std).
6020d3e71cSUday Bondhugula
61e8d43cafSUday Bondhugula" Keywords.
62e8d43cafSUday Bondhugulasyn keyword mlirKeyword
63136d78caSUday Bondhugula      \ affine_map
64136d78caSUday Bondhugula      \ affine_set
65ca23bd78SUday Bondhugula      \ dense
66e8d43cafSUday Bondhugula      \ else
67e8d43cafSUday Bondhugula      \ func
68ca23bd78SUday Bondhugula      \ module
69e8d43cafSUday Bondhugula      \ return
70e8d43cafSUday Bondhugula      \ step
71e8d43cafSUday Bondhugula      \ to
72e8d43cafSUday Bondhugula
73e8d43cafSUday Bondhugula" Misc syntax.
7420d3e71cSUday Bondhugula
75e8d43cafSUday Bondhugulasyn match   mlirNumber /-\?\<\d\+\>/
7620d3e71cSUday Bondhugula" Match numbers even in shaped types.
7720d3e71cSUday Bondhugulasyn match   mlirNumber /-\?\<\d\+\ze\s*x/
7820d3e71cSUday Bondhugulasyn match   mlirNumber /x\s*\zs-\?\d\+\ze\s*x/
7920d3e71cSUday Bondhugula
80e8d43cafSUday Bondhugulasyn match   mlirFloat  /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
81e8d43cafSUday Bondhugulasyn match   mlirFloat  /\<0x\x\+\>/
82e8d43cafSUday Bondhugulasyn keyword mlirBoolean true false
83e8d43cafSUday Bondhugulasyn match   mlirComment /\/\/.*$/
84e8d43cafSUday Bondhugulasyn region  mlirString start=/"/ skip=/\\"/ end=/"/
85e8d43cafSUday Bondhugulasyn match   mlirLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
8620d3e71cSUday Bondhugulasyn match   mlirIdentifier /[%@][a-zA-Z$._-][a-zA-Z0-9$._-]*/
8720d3e71cSUday Bondhugulasyn match   mlirIdentifier /[%@!]\d\+\>/
88e8d43cafSUday Bondhugulasyn match mlirMapSetOutline "#.*$"
89e8d43cafSUday Bondhugula
90e8d43cafSUday Bondhugula" Syntax-highlight lit test commands and bug numbers.
91e8d43cafSUday Bondhugulasyn match  mlirSpecialComment /\/\/\s*RUN:.*$/
92e8d43cafSUday Bondhugulasyn match  mlirSpecialComment /\/\/\s*CHECK:.*$/
93e8d43cafSUday Bondhugulasyn match  mlirSpecialComment "\v\/\/\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$"
94e8d43cafSUday Bondhugulasyn match  mlirSpecialComment /\/\/\s*expected-error.*$/
95e8d43cafSUday Bondhugulasyn match  mlirSpecialComment /\/\/\s*expected-remark.*$/
96e8d43cafSUday Bondhugulasyn match  mlirSpecialComment /;\s*XFAIL:.*$/
97e8d43cafSUday Bondhugulasyn match  mlirSpecialComment /\/\/\s*PR\d*\s*$/
98e8d43cafSUday Bondhugulasyn match  mlirSpecialComment /\/\/\s*REQUIRES:.*$/
99e8d43cafSUday Bondhugula
100e8d43cafSUday Bondhugulaif version >= 508 || !exists("did_c_syn_inits")
101e8d43cafSUday Bondhugula  if version < 508
102e8d43cafSUday Bondhugula    let did_c_syn_inits = 1
103e8d43cafSUday Bondhugula    command -nargs=+ HiLink hi link <args>
104e8d43cafSUday Bondhugula  else
105e8d43cafSUday Bondhugula    command -nargs=+ HiLink hi def link <args>
106e8d43cafSUday Bondhugula  endif
107e8d43cafSUday Bondhugula
108e8d43cafSUday Bondhugula  HiLink mlirType Type
109e8d43cafSUday Bondhugula  HiLink mlirOps Statement
110e8d43cafSUday Bondhugula  HiLink mlirMapSetOutline PreProc
111e8d43cafSUday Bondhugula  HiLink mlirNumber Number
112e8d43cafSUday Bondhugula  HiLink mlirComment Comment
113e8d43cafSUday Bondhugula  HiLink mlirString String
114e8d43cafSUday Bondhugula  HiLink mlirLabel Label
115e8d43cafSUday Bondhugula  HiLink mlirKeyword Keyword
116e8d43cafSUday Bondhugula  HiLink mlirBoolean Boolean
117e8d43cafSUday Bondhugula  HiLink mlirFloat Float
118e8d43cafSUday Bondhugula  HiLink mlirConstant Constant
119e8d43cafSUday Bondhugula  HiLink mlirSpecialComment SpecialComment
120e8d43cafSUday Bondhugula  HiLink mlirIdentifier Identifier
121e8d43cafSUday Bondhugula
122e8d43cafSUday Bondhugula  delcommand HiLink
123e8d43cafSUday Bondhugulaendif
124e8d43cafSUday Bondhugula
125e8d43cafSUday Bondhugulalet b:current_syntax = "mlir"
126