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