diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2021-03-10 17:22:05 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2021-03-10 17:22:05 +0100 |
commit | eda351ca897ca0270ed8b01798af3679914683a1 (patch) | |
tree | 5340822acd25ecd12063f08b1e6d0bed4a891a82 /syntax/mlir.vim | |
parent | cc63193ce82c1e7b9ee2ad7d0ddd14e8394211ef (diff) | |
download | vim-polyglot-eda351ca897ca0270ed8b01798af3679914683a1.tar.gz vim-polyglot-eda351ca897ca0270ed8b01798af3679914683a1.zip |
Update
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" |