xref: /netbsd-src/external/gpl3/gcc.old/dist/contrib/vim-gcc-dev/syntax/gcc-match.vim (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1*627f7eb2Smrg" Vim syntax highlighting rules for GCC match-and-simplify language.
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*627f7eb2Smrgif exists("b:current_syntax")
11*627f7eb2Smrg    finish
12*627f7eb2Smrgendif
13*627f7eb2Smrg
14*627f7eb2Smrg" Some keywords have a question mark, e.g. 'convert?'
15*627f7eb2Smrgsetl isk=@,48-57,_,?
16*627f7eb2Smrg
17*627f7eb2Smrgsyn keyword pdTodo contained TODO FIXME XXX
18*627f7eb2Smrg
19*627f7eb2Smrgsyn keyword pdCtrl match simplify
20*627f7eb2Smrgsyn keyword pdCtrl define_predicates define_operator_list
21*627f7eb2Smrgsyn keyword pdCtrl if switch for with
22*627f7eb2Smrg
23*627f7eb2Smrgsyn keyword pdType type
24*627f7eb2Smrg
25*627f7eb2Smrgsyn keyword pdOp view_convert view_convert?
26*627f7eb2Smrg               \ convert convert? convert1 convert2 convert1? convert2?
27*627f7eb2Smrg               \ realpart imagpart
28*627f7eb2Smrg               \ cond vec_cond vec_perm
29*627f7eb2Smrg               \ pointer_plus pointer_diff
30*627f7eb2Smrg               \ plus minus mult mult_highpart
31*627f7eb2Smrg               \ trunc_div ceil_div floor_div round_div
32*627f7eb2Smrg               \ trunc_mod ceil_mod floor_mod round_mod
33*627f7eb2Smrg               \ rdiv exact_div
34*627f7eb2Smrg               \ fix_trunc float negate min max abs absu
35*627f7eb2Smrg               \ lshift rshift lrotate rrotate
36*627f7eb2Smrg               \ bit_ior bit_xor bit_and bit_not
37*627f7eb2Smrg               \ truth_andif truth_orif truth_and
38*627f7eb2Smrg               \ truth_or truth_xor truth_not
39*627f7eb2Smrg               \ lt le gt ge eq ne unordered ordered
40*627f7eb2Smrg               \ unlt unle ungt unge uneq ltgt
41*627f7eb2Smrg               \ addr_space_convert fixed_convert
42*627f7eb2Smrg               \ bit_insert complex conj
43*627f7eb2Smrg               \ reduc_max reduc_min reduc_plus
44*627f7eb2Smrg               \ dot_prod widen_sum sad fma
45*627f7eb2Smrg               \ widen_mult widen_mult_plus widen_mult_minus widen_lshift
46*627f7eb2Smrg               \ vec_widen_mult_hi vec_widen_mult_lo
47*627f7eb2Smrg               \ vec_widen_mult_even vec_widen_mult_odd
48*627f7eb2Smrg               \ vec_unpack_hi vec_unpack_lo
49*627f7eb2Smrg               \ vec_unpack_float_hi vec_unpack_float_lo
50*627f7eb2Smrg               \ vec_pack_trunc vec_pack_sat vec_pack_fix_trunc
51*627f7eb2Smrg               \ vec_widen_lshift_hi vec_widen_lshift_lo
52*627f7eb2Smrg
53*627f7eb2Smrg" Match commutative/single-use specifiers: :C, :c, :s, :cs, etc.
54*627f7eb2Smrgsyn match pdOpSpec  ":[CcSs]\+\>"
55*627f7eb2Smrg
56*627f7eb2Smrgsyn match pdCapture "@@\?[a-zA-Z0-9_]\+"
57*627f7eb2Smrg
58*627f7eb2Smrgsyn region pdComment start="/\*" end="\*/" contains=pdTodo
59*627f7eb2Smrg
60*627f7eb2Smrgsyn region pdPreProc start="^\s*#" skip="\\$" end="$" keepend
61*627f7eb2Smrg
62*627f7eb2Smrghi def link pdCtrl    Statement
63*627f7eb2Smrghi def link pdType    Identifier
64*627f7eb2Smrghi def link pdOp      Constant
65*627f7eb2Smrghi def link pdOpSpec  Operator
66*627f7eb2Smrghi def link pdCapture Special
67*627f7eb2Smrghi def link pdComment Comment
68*627f7eb2Smrghi def link pdTodo    Todo
69*627f7eb2Smrghi def link pdPreProc PreProc
70*627f7eb2Smrg
71*627f7eb2Smrglet b:current_syntax = "gcc-match"
72