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