summaryrefslogtreecommitdiffstats
path: root/syntax/machine-ir.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/machine-ir.vim')
-rw-r--r--syntax/machine-ir.vim42
1 files changed, 42 insertions, 0 deletions
diff --git a/syntax/machine-ir.vim b/syntax/machine-ir.vim
new file mode 100644
index 00000000..ad43a9f5
--- /dev/null
+++ b/syntax/machine-ir.vim
@@ -0,0 +1,42 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'llvm', 'syntax/machine-ir.vim')
+ finish
+endif
+
+" Vim syntax file
+" Language: mir
+" Maintainer: The LLVM team, http://llvm.org/
+" Version: $Revision$
+
+syn case match
+
+" FIXME: MIR doesn't actually match LLVM IR. Stop including it all as a
+" fallback once enough is implemented.
+" See the MIR LangRef: https://llvm.org/docs/MIRLangRef.html
+unlet b:current_syntax " Unlet so that the LLVM syntax will load
+runtime! syntax/llvm.vim
+unlet b:current_syntax
+
+syn match mirType /\<[sp]\d\+\>/
+
+" Opcodes. Matching instead of listing them because individual targets can add
+" these. FIXME: Maybe use some more context to make this more accurate?
+syn match mirStatement /\<[A-Z][A-Za-z0-9_]*\>/
+
+syn match mirPReg /$[-a-zA-Z$._][-a-zA-Z$._0-9]*/
+
+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 mirType Type
+ HiLink mirStatement Statement
+ HiLink mirPReg Identifier
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "mir"