blob: 6b674e0285b5d5f873c76b2fda2019a14caaea7a [file] [log] [blame]
" Syntax highlighting rules for RTL dump files (for Vim).
"
" Copyright (C) 2018 Free Software Foundation, Inc.
"
" This script is free software; you can redistribute it and/or modify
" it under the terms of the GNU General Public License as published by
" the Free Software Foundation; either version 3, or (at your option)
" any later version
" Do not continue, if syntax is already enabled in current buffer.
if exists("b:current_syntax")
finish
endif
" General-purpose comments.
syn match rtlComment ";;.*$"
syn keyword rtlInstruction debug_expr insn_list int_list sequence
\ address debug_insn insn expr_list
\ jump_table_data barrier code_label
\ cond_exec parallel asm_input asm_operands
\ unspec unspec_volatile addr_vec
\ addr_diff_vec prefetch set use clobber
\ call return simple_return eh_return
\ trap_if scratch strict_low_part concat concatn
\ mem label_ref symbol_ref cc0 compare plus minus
\ neg mult ss_mult us_mult div ss_div us_div mod
\ udiv umod and ior xor not ashift rotate ashiftrt
\ lshiftrt rotatert smin smax umin umax pre_dec
\ pre_inc post_dec post_inc pre_modify post_modify
\ unordered ordered uneq unge ungt unle unlt ltgt sign_extend
\ zero_extend truncate float_extend float_truncate
\ float fix unsigned_float unsigned_fix fract_convert
\ unsigned_fract_convert sat_fract unsigned_sat_fract
\ abs sqrt bswap ffs clrsb clz ctz popcount parity
\ sign_extract zero_extract high lo_sum vec_merge
\ vec_select vec_concat vec_duplicate vec_series ss_plus
\ us_plus ss_minus ss_neg us_neg ss_abs ss_ashift
\ us_ashift us_minus ss_truncate us_truncate fma
\ entry_value exclusion_set presence_set final_presence_set
\ absence_set final_absence_set automata_option attr set_attr
\ set_attr_alternative eq_attr eq_attr_alt attr_flag cond
syn keyword rtlConditional call_insn jump_insn if_then_else
\ eq ne gt gtu lt ltu ge geu le leu
syn keyword rtlNote note barrier code_label
syn keyword rtlVariableLoation var_location
syn keyword rtlPcRegister pc
syn keyword rtlModes VOID BLK BI QI HI SI DI TI SF DF CC QQ HQ SQ
\ DQ TQ UQQ UHQ USQ UDQ UTQ HA SA DA TA UHA
\ USA UDA UTA SD DD TD
" String literals
syn region rtlString start=/\v"/ skip=/\v\\./ end=/\v"/
syn match rtlNoteInsn "NOTE_INSN_[A-Z_]*"
syn match rtlIntegerConstant "\vconst_int -?\d+"
syn match rtlFloatConstant "\vconst_double:[A-Z]+ -?\d*\.\d+(e\+\d+)?"
syn match rtlRegister "\vreg(\/[a-z])?:[A-Z0-9]+ \d+ [a-z0-9]+"
syn match rtlLocation /\v"[^"]*":\d+/
hi def link rtlInstruction Statement
hi def link rtlConditional Conditional
hi def link rtlNote Debug
hi def link rtlNoteInsn Debug
hi def link rtlIntegerConstant Number
hi def link rtlFloatConstant Number
hi def link rtlRegister Type
hi def link rtlPcRegister Type
hi def link rtlModes Type
hi def link rtlVariableLoation Debug
hi def link rtlComment Comment
hi def link rtlLocation Debug
hi def link rtlString String
let b:current_syntax = "gcc-rtl"