diff options
Diffstat (limited to 'syntax/mlir.vim')
-rw-r--r-- | syntax/mlir.vim | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/syntax/mlir.vim b/syntax/mlir.vim new file mode 100644 index 00000000..9bfd7f35 --- /dev/null +++ b/syntax/mlir.vim @@ -0,0 +1,122 @@ +if polyglot#init#is_disabled(expand('<sfile>:p'), 'llvm', 'syntax/mlir.vim') + finish +endif + +" Vim syntax file +" Language: mlir +" Maintainer: The MLIR team, http://github.com/tensorflow/mlir/ +" Version: $Revision$ +" Some parts adapted from the LLVM vim syntax file. + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case match + +" Types. +syn keyword mlirType index f16 f32 f64 +" Integer type. +syn match mlirType /\<i\d\+\>/ + +" Elemental types inside memref, tensor, or vector types. +syn match mlirType /x\s*\zs\(f16\|f32\|f64\|i\d\+\)/ + +" Shaped types. +syn match mlirType /\<memref\ze\s*<.*>/ +syn match mlirType /\<tensor\ze\s*<.*>/ +syn match mlirType /\<vector\ze\s*<.*>/ + +" vector types inside memref or tensor. +syn match mlirType /x\s*\zsvector/ + +" Operations. +" Core ops (not exhaustive yet). +" TODO: the list is not exhaustive. +syn keyword mlirOps alloc alloca addf addi call call_indirect cmpf cmpi constant +syn keyword mlirOps dealloc divf dma_start dma_wait dim extract_element +syn keyword mlirOps getTensor index_cast load memref_cast memref_shape_cast +syn keyword mlirOps mulf muli negf prefetch sitofp splat store select subf subi +syn keyword mlirOps subview tensor_cast view + +" Affine ops. +syn match mlirOps /\<affine\.apply\>/ +syn match mlirOps /\<affine\.dma_start\>/ +syn match mlirOps /\<affine\.dma_wait\>/ +syn match mlirOps /\<affine\.for\>/ +syn match mlirOps /\<affine\.if\>/ +syn match mlirOps /\<affine\.load\>/ +syn match mlirOps /\<affine\.prefetch\>/ +syn match mlirOps /\<affine\.store\>/ +syn match mlirOps /\<loop\.for\>/ +syn match mlirOps /\<loop\.if\>/ + +" TODO: dialect name prefixed ops (llvm or std). + +" Keywords. +syn keyword mlirKeyword + \ affine_map + \ affine_set + \ dense + \ else + \ func + \ module + \ return + \ step + \ to + +" Misc syntax. + +syn match mlirNumber /-\?\<\d\+\>/ +" Match numbers even in shaped types. +syn match mlirNumber /-\?\<\d\+\ze\s*x/ +syn match mlirNumber /x\s*\zs-\?\d\+\ze\s*x/ + +syn match mlirFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/ +syn match mlirFloat /\<0x\x\+\>/ +syn keyword mlirBoolean true false +syn match mlirComment /\/\/.*$/ +syn region mlirString start=/"/ skip=/\\"/ end=/"/ +syn match mlirLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/ +syn match mlirIdentifier /[%@][a-zA-Z$._-][a-zA-Z0-9$._-]*/ +syn match mlirIdentifier /[%@!]\d\+\>/ +syn match mlirMapSetOutline "#.*$" + +" Syntax-highlight lit test commands and bug numbers. +syn match mlirSpecialComment /\/\/\s*RUN:.*$/ +syn match mlirSpecialComment /\/\/\s*CHECK:.*$/ +syn match mlirSpecialComment "\v\/\/\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$" +syn match mlirSpecialComment /\/\/\s*expected-error.*$/ +syn match mlirSpecialComment /\/\/\s*expected-remark.*$/ +syn match mlirSpecialComment /;\s*XFAIL:.*$/ +syn match mlirSpecialComment /\/\/\s*PR\d*\s*$/ +syn match mlirSpecialComment /\/\/\s*REQUIRES:.*$/ + +if version >= 508 || !exists("did_c_syn_inits") + if version < 508 + let did_c_syn_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + HiLink mlirType Type + HiLink mlirOps Statement + HiLink mlirMapSetOutline PreProc + HiLink mlirNumber Number + HiLink mlirComment Comment + HiLink mlirString String + HiLink mlirLabel Label + HiLink mlirKeyword Keyword + HiLink mlirBoolean Boolean + HiLink mlirFloat Float + HiLink mlirConstant Constant + HiLink mlirSpecialComment SpecialComment + HiLink mlirIdentifier Identifier + + delcommand HiLink +endif + +let b:current_syntax = "mlir" |