xref: /netbsd-src/external/gpl3/gcc.old/dist/contrib/vim-gcc-dev/syntax/gcc-rtl.vim (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1*627f7eb2Smrg" Syntax highlighting rules for RTL dump files (for Vim).
2*627f7eb2Smrg"
3*627f7eb2Smrg" Copyright (C) 2018 Free Software Foundation, Inc.
4*627f7eb2Smrg"
5*627f7eb2Smrg" This script is free software; you can redistribute it and/or modify
6*627f7eb2Smrg" it under the terms of the GNU General Public License as published by
7*627f7eb2Smrg" the Free Software Foundation; either version 3, or (at your option)
8*627f7eb2Smrg" any later version
9*627f7eb2Smrg
10*627f7eb2Smrg
11*627f7eb2Smrg" Do not continue, if syntax is already enabled in current buffer.
12*627f7eb2Smrgif exists("b:current_syntax")
13*627f7eb2Smrg    finish
14*627f7eb2Smrgendif
15*627f7eb2Smrg
16*627f7eb2Smrg" General-purpose comments.
17*627f7eb2Smrgsyn match   rtlComment          ";;.*$"
18*627f7eb2Smrg
19*627f7eb2Smrgsyn keyword rtlInstruction      debug_expr insn_list int_list sequence
20*627f7eb2Smrg                                \ address debug_insn insn expr_list
21*627f7eb2Smrg                                \ jump_table_data barrier code_label
22*627f7eb2Smrg                                \ cond_exec parallel asm_input asm_operands
23*627f7eb2Smrg                                \ unspec unspec_volatile addr_vec
24*627f7eb2Smrg                                \ addr_diff_vec prefetch set use clobber
25*627f7eb2Smrg                                \ call return simple_return eh_return
26*627f7eb2Smrg                                \ trap_if scratch strict_low_part concat concatn
27*627f7eb2Smrg                                \ mem label_ref symbol_ref cc0 compare plus minus
28*627f7eb2Smrg                                \ neg mult ss_mult us_mult div ss_div us_div mod
29*627f7eb2Smrg                                \ udiv umod and ior xor not ashift rotate ashiftrt
30*627f7eb2Smrg                                \ lshiftrt rotatert smin smax umin umax pre_dec
31*627f7eb2Smrg                                \ pre_inc post_dec post_inc pre_modify post_modify
32*627f7eb2Smrg                                \ unordered ordered uneq unge ungt unle unlt ltgt sign_extend
33*627f7eb2Smrg                                \ zero_extend truncate float_extend float_truncate
34*627f7eb2Smrg                                \ float fix unsigned_float unsigned_fix fract_convert
35*627f7eb2Smrg                                \ unsigned_fract_convert sat_fract unsigned_sat_fract
36*627f7eb2Smrg                                \ abs sqrt bswap ffs clrsb clz ctz popcount parity
37*627f7eb2Smrg                                \ sign_extract zero_extract high lo_sum vec_merge
38*627f7eb2Smrg                                \ vec_select vec_concat vec_duplicate vec_series ss_plus
39*627f7eb2Smrg                                \ us_plus ss_minus ss_neg us_neg ss_abs ss_ashift
40*627f7eb2Smrg                                \ us_ashift us_minus ss_truncate us_truncate fma
41*627f7eb2Smrg                                \ entry_value exclusion_set presence_set final_presence_set
42*627f7eb2Smrg                                \ absence_set final_absence_set automata_option attr set_attr
43*627f7eb2Smrg                                \ set_attr_alternative eq_attr eq_attr_alt attr_flag cond
44*627f7eb2Smrgsyn keyword rtlConditional      call_insn jump_insn if_then_else
45*627f7eb2Smrg                                \ eq ne gt gtu lt ltu ge geu le leu
46*627f7eb2Smrgsyn keyword rtlNote             note barrier code_label
47*627f7eb2Smrgsyn keyword rtlVariableLoation  var_location
48*627f7eb2Smrgsyn keyword rtlPcRegister       pc
49*627f7eb2Smrg
50*627f7eb2Smrgsyn keyword rtlModes		        VOID BLK BI QI HI SI DI TI SF DF CC QQ HQ SQ
51*627f7eb2Smrg                                \ DQ TQ UQQ UHQ USQ UDQ UTQ HA SA DA TA UHA
52*627f7eb2Smrg                                \ USA UDA UTA SD DD TD
53*627f7eb2Smrg
54*627f7eb2Smrg" String literals
55*627f7eb2Smrgsyn region  rtlString           start=/\v"/ skip=/\v\\./ end=/\v"/
56*627f7eb2Smrg
57*627f7eb2Smrgsyn match   rtlNoteInsn         "NOTE_INSN_[A-Z_]*"
58*627f7eb2Smrgsyn match   rtlIntegerConstant  "\vconst_int -?\d+"
59*627f7eb2Smrgsyn match   rtlFloatConstant    "\vconst_double:[A-Z]+ -?\d*\.\d+(e\+\d+)?"
60*627f7eb2Smrgsyn match   rtlRegister         "\vreg(\/[a-z])?:[A-Z0-9]+ \d+ [a-z0-9]+"
61*627f7eb2Smrgsyn match   rtlLocation         /\v"[^"]*":\d+/
62*627f7eb2Smrg
63*627f7eb2Smrghi def link rtlInstruction      Statement
64*627f7eb2Smrghi def link rtlConditional      Conditional
65*627f7eb2Smrghi def link rtlNote             Debug
66*627f7eb2Smrghi def link rtlNoteInsn         Debug
67*627f7eb2Smrghi def link rtlIntegerConstant  Number
68*627f7eb2Smrghi def link rtlFloatConstant    Number
69*627f7eb2Smrghi def link rtlRegister         Type
70*627f7eb2Smrghi def link rtlPcRegister       Type
71*627f7eb2Smrghi def link rtlModes            Type
72*627f7eb2Smrghi def link rtlVariableLoation  Debug
73*627f7eb2Smrghi def link rtlComment          Comment
74*627f7eb2Smrghi def link rtlLocation         Debug
75*627f7eb2Smrghi def link rtlString           String
76*627f7eb2Smrg
77*627f7eb2Smrglet b:current_syntax = "gcc-rtl"
78