]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/hlsl.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / hlsl.xml
1 <?xml version="1.0"?>
2
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4
5 <MODE>
6 <!--
7 DirectX FX Files Syntax Highlighting (Edit Mode) for jEdit
8 Including: Preprocessor, HLSL and Shader Assembler up to shader version 3.0
9
10 Author: Adam Sawicki
11 - Homepage: http://regedit.gamedev.pl/
12 - E-mail: sawickiap@poczta.onet.pl
13 - IRC: #warsztat @ PolNet
14 - Gadu-Gadu: 2272474
15
16 -->
17
18         <PROPS>
19                 <PROPERTY NAME="commentStart" VALUE="/*" />
20                 <PROPERTY NAME="commentEnd" VALUE="*/" />
21                 <PROPERTY NAME="lineComment" VALUE="//" />
22                 <PROPERTY NAME="wordBreakChars" VALUE=".,+-*/=&lt;&gt;?^&amp;[]{}" />
23
24                 <!-- Auto indent -->
25                 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
26                 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
27                 <PROPERTY NAME="indentNextLine" VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" />
28                 <PROPERTY NAME="doubleBracketIndent" VALUE="false" />
29                 <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
30         </PROPS>
31
32         <RULES
33                 IGNORE_CASE="FALSE"
34                 HIGHLIGHT_DIGITS="TRUE"
35                 DIGIT_RE="((0[xX][0-9a-fA-F]+|\d+)[uUIL]?|\d+([eE]\d*)?[hHfF]?)">
36
37                 <!-- C style comment -->
38                 <SPAN TYPE="COMMENT1">
39                         <BEGIN>/*</BEGIN>
40                         <END>*/</END>
41                 </SPAN>
42
43                 <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
44                         <BEGIN>"</BEGIN>
45                         <END>"</END>
46                 </SPAN>
47                 <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
48                         <BEGIN>'</BEGIN>
49                         <END>'</END>
50                 </SPAN>
51
52                 <!-- preprocessor statements -->
53                 <SEQ TYPE="KEYWORD2">##</SEQ>
54                 <SEQ TYPE="KEYWORD2">#@</SEQ>
55                 <EOL_SPAN TYPE="KEYWORD2" DELEGATE="Preprocessor">#</EOL_SPAN>
56
57                 <!-- asm -->
58                 <SPAN AT_WORD_START="TRUE" EXCLUDE_MATCH="FALSE" TYPE="KEYWORD1" DELEGATE="Asm">
59                         <BEGIN>asm</BEGIN>
60                         <END>}</END>
61                 </SPAN>
62                 <SPAN AT_WORD_START="TRUE" EXCLUDE_MATCH="FALSE" TYPE="KEYWORD1" DELEGATE="Asm">
63                         <BEGIN>ASM</BEGIN>
64                         <END>}</END>
65                 </SPAN>
66                 <SPAN AT_WORD_START="TRUE" EXCLUDE_MATCH="FALSE" TYPE="KEYWORD1" DELEGATE="Asm">
67                         <BEGIN>Asm</BEGIN>
68                         <END>}</END>
69                 </SPAN>
70                 <SPAN AT_WORD_START="TRUE" EXCLUDE_MATCH="FALSE" TYPE="KEYWORD1" DELEGATE="Asm">
71                         <BEGIN>asm_fragment</BEGIN>
72                         <END>}</END>
73                 </SPAN>
74
75                 <!-- C style comment -->
76                 <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
77
78                 <!-- Operators - multi character -->
79                 <SEQ TYPE="OPERATOR">++</SEQ>
80                 <SEQ TYPE="OPERATOR">--</SEQ>
81                 <SEQ TYPE="OPERATOR">&amp;&amp;</SEQ>
82                 <SEQ TYPE="OPERATOR">||</SEQ>
83                 <SEQ TYPE="OPERATOR">==</SEQ>
84                 <SEQ TYPE="OPERATOR">::</SEQ>
85                 <SEQ TYPE="OPERATOR">&lt;&lt;</SEQ>
86                 <SEQ TYPE="OPERATOR">&lt;&lt;=</SEQ>
87                 <SEQ TYPE="OPERATOR">&gt;&gt;</SEQ>
88                 <SEQ TYPE="OPERATOR">&gt;&gt;=</SEQ>
89                 <SEQ TYPE="OPERATOR">...</SEQ>
90                 <SEQ TYPE="OPERATOR">&lt;=</SEQ>
91                 <SEQ TYPE="OPERATOR">&gt;=</SEQ>
92                 <SEQ TYPE="OPERATOR">!=</SEQ>
93                 <SEQ TYPE="OPERATOR">*=</SEQ>
94                 <SEQ TYPE="OPERATOR">/=</SEQ>
95                 <SEQ TYPE="OPERATOR">+=</SEQ>
96                 <SEQ TYPE="OPERATOR">-=</SEQ>
97                 <SEQ TYPE="OPERATOR">%=</SEQ>
98                 <SEQ TYPE="OPERATOR">&amp;=</SEQ>
99                 <SEQ TYPE="OPERATOR">|=</SEQ>
100                 <SEQ TYPE="OPERATOR">^=</SEQ>
101                 <SEQ TYPE="OPERATOR">-&gt;</SEQ>
102
103                 <!-- Operators - single characters -->
104                 <SEQ TYPE="OPERATOR">}</SEQ>
105                 <SEQ TYPE="OPERATOR">{</SEQ>
106                 <SEQ TYPE="OPERATOR">+</SEQ>
107                 <SEQ TYPE="OPERATOR">-</SEQ>
108                 <SEQ TYPE="OPERATOR">*</SEQ>
109                 <SEQ TYPE="OPERATOR">/</SEQ>
110                 <SEQ TYPE="OPERATOR">%</SEQ>
111                 <SEQ TYPE="OPERATOR">=</SEQ>
112                 <SEQ TYPE="OPERATOR">&lt;</SEQ>
113                 <SEQ TYPE="OPERATOR">&gt;</SEQ>
114                 <SEQ TYPE="OPERATOR">!</SEQ>
115
116                 <!-- Function calls -->
117                 <MARK_PREVIOUS TYPE="FUNCTION" EXCLUDE_MATCH="TRUE">(</MARK_PREVIOUS>
118
119                 <!-- Swizzle operator for vectors/scalars (a.xyzw OR b.rgba), matrices (c._m00_m01 OR d._11_12) indexing -->
120                 <SEQ_REGEXP TYPE="OPERATOR" HASH_CHAR=".">.(([xyzw]{1,4})|([rgba]{1,4})|((_m[0123][0123])+)|((_[1234][1234])+))(?!\p{Alnum})</SEQ_REGEXP>
121
122                 <!-- Atomic, but complex types -->
123                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="bool">bool[1234](x[1234])?\b</SEQ_REGEXP>
124                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="int">int[1234](x[1234])?\b</SEQ_REGEXP>
125                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="half">half[1234](x[1234])?\b</SEQ_REGEXP>
126                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="float">float[1234](x[1234])?\b</SEQ_REGEXP>
127                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="double">double[1234](x[1234])?\b</SEQ_REGEXP>
128
129                 <!-- Semantics -->
130                 <SEQ_REGEXP TYPE="KEYWORD1" HASH_CHAR=":">:\s*(register\s*\(\w+(\s*\,\s*\w+\s*)?\)|\w+)</SEQ_REGEXP>
131
132                 <KEYWORDS>
133                         <!-- Control flow keywords -->
134                         <KEYWORD1>discard</KEYWORD1>
135                         <KEYWORD1>do</KEYWORD1>
136                         <KEYWORD1>else</KEYWORD1>
137                         <KEYWORD1>for</KEYWORD1>
138                         <KEYWORD1>if</KEYWORD1>
139                         <KEYWORD1>return</KEYWORD1>
140                         <KEYWORD1>typedef</KEYWORD1>
141                         <KEYWORD1>while</KEYWORD1>
142
143                         <!-- Other keywords -->
144                         <KEYWORD1>compile</KEYWORD1>
145                         <KEYWORD1>compile_fragment</KEYWORD1>
146                         <KEYWORD1>register</KEYWORD1>
147                         <KEYWORD1>sampler_state</KEYWORD1>
148                         <KEYWORD1>stateblock_state</KEYWORD1>
149                         <KEYWORD1>technique</KEYWORD1>
150                         <KEYWORD1>Technique</KEYWORD1>
151                         <KEYWORD1>TECHNIQUE</KEYWORD1>
152                         <KEYWORD1>pass</KEYWORD1>
153                         <KEYWORD1>Pass</KEYWORD1>
154                         <KEYWORD1>PASS</KEYWORD1>
155                         <KEYWORD1>decl</KEYWORD1>
156                         <KEYWORD1>Decl</KEYWORD1>
157                         <KEYWORD1>DECL</KEYWORD1>
158
159                         <!-- Atomic type keywords -->
160                         <KEYWORD2>void</KEYWORD2>
161                         <KEYWORD2>bool</KEYWORD2>
162                         <KEYWORD2>int</KEYWORD2>
163                         <KEYWORD2>half</KEYWORD2>
164                         <KEYWORD2>float</KEYWORD2>
165                         <KEYWORD2>double</KEYWORD2>
166                         <KEYWORD2>vector</KEYWORD2>
167                         <KEYWORD2>matrix</KEYWORD2>
168
169                         <!-- Object type keywords -->
170                         <KEYWORD3>string</KEYWORD3>
171                         <KEYWORD3>texture</KEYWORD3>
172                         <KEYWORD3>texture1D</KEYWORD3>
173                         <KEYWORD3>texture2D</KEYWORD3>
174                         <KEYWORD3>texture3D</KEYWORD3>
175                         <KEYWORD3>textureCUBE</KEYWORD3>
176                         <KEYWORD3>sampler</KEYWORD3>
177                         <KEYWORD3>sampler1D</KEYWORD3>
178                         <KEYWORD3>sampler2D</KEYWORD3>
179                         <KEYWORD3>sampler3D</KEYWORD3>
180                         <KEYWORD3>samplerCUBE</KEYWORD3>
181                         <KEYWORD3>pixelfragment</KEYWORD3>
182                         <KEYWORD3>vertexfragment</KEYWORD3>
183                         <KEYWORD3>pixelshader</KEYWORD3>
184                         <KEYWORD3>vertexshader</KEYWORD3>
185                         <KEYWORD3>stateblock</KEYWORD3>
186                         <KEYWORD3>struct</KEYWORD3>
187
188                         <!-- Usage keywords -->
189                         <KEYWORD4>static</KEYWORD4>
190                         <KEYWORD4>uniform</KEYWORD4>
191                         <KEYWORD4>extern</KEYWORD4>
192                         <KEYWORD4>volatile</KEYWORD4>
193                         <KEYWORD4>inline</KEYWORD4>
194                         <KEYWORD4>shared</KEYWORD4>
195                         <KEYWORD4>const</KEYWORD4>
196                         <KEYWORD4>row_major</KEYWORD4>
197                         <KEYWORD4>column_major</KEYWORD4>
198                         <KEYWORD4>in</KEYWORD4>
199                         <KEYWORD4>inout</KEYWORD4>
200                         <KEYWORD4>out</KEYWORD4>
201
202                         <!-- Literals -->
203                         <LITERAL1>false</LITERAL1>
204                         <LITERAL1>true</LITERAL1>
205                         <LITERAL1>NULL</LITERAL1>
206
207                         <!-- Intrinsic functions -->
208                         <LITERAL2>abs</LITERAL2>
209                         <LITERAL2>acos</LITERAL2>
210                         <LITERAL2>all</LITERAL2>
211                         <LITERAL2>any</LITERAL2>
212                         <LITERAL2>asin</LITERAL2>
213                         <LITERAL2>atan</LITERAL2>
214                         <LITERAL2>atan2</LITERAL2>
215                         <LITERAL2>ceil</LITERAL2>
216                         <LITERAL2>clamp</LITERAL2>
217                         <LITERAL2>clip</LITERAL2>
218                         <LITERAL2>cos</LITERAL2>
219                         <LITERAL2>cosh</LITERAL2>
220                         <LITERAL2>cross</LITERAL2>
221                         <LITERAL2>D3DCOLORtoUBYTE4</LITERAL2>
222                         <LITERAL2>ddx</LITERAL2>
223                         <LITERAL2>ddy</LITERAL2>
224                         <LITERAL2>degrees</LITERAL2>
225                         <LITERAL2>determinant</LITERAL2>
226                         <LITERAL2>distance</LITERAL2>
227                         <LITERAL2>dot</LITERAL2>
228                         <LITERAL2>exp</LITERAL2>
229                         <LITERAL2>exp2</LITERAL2>
230                         <LITERAL2>faceforward</LITERAL2>
231                         <LITERAL2>floor</LITERAL2>
232                         <LITERAL2>fmod</LITERAL2>
233                         <LITERAL2>frac</LITERAL2>
234                         <LITERAL2>frexp</LITERAL2>
235                         <LITERAL2>fwidth</LITERAL2>
236                         <LITERAL2>isfinite</LITERAL2>
237                         <LITERAL2>isinf</LITERAL2>
238                         <LITERAL2>isnan</LITERAL2>
239                         <LITERAL2>ldexp</LITERAL2>
240                         <LITERAL2>length</LITERAL2>
241                         <LITERAL2>lerp</LITERAL2>
242                         <LITERAL2>lit</LITERAL2>
243                         <LITERAL2>log</LITERAL2>
244                         <LITERAL2>log10</LITERAL2>
245                         <LITERAL2>log2</LITERAL2>
246                         <LITERAL2>max</LITERAL2>
247                         <LITERAL2>min</LITERAL2>
248                         <LITERAL2>modf</LITERAL2>
249                         <LITERAL2>mul</LITERAL2>
250                         <LITERAL2>noise</LITERAL2>
251                         <LITERAL2>normalize</LITERAL2>
252                         <LITERAL2>pow</LITERAL2>
253                         <LITERAL2>radians</LITERAL2>
254                         <LITERAL2>reflect</LITERAL2>
255                         <LITERAL2>refract</LITERAL2>
256                         <LITERAL2>round</LITERAL2>
257                         <LITERAL2>rsqrt</LITERAL2>
258                         <LITERAL2>saturate</LITERAL2>
259                         <LITERAL2>sign</LITERAL2>
260                         <LITERAL2>sin</LITERAL2>
261                         <LITERAL2>sincos</LITERAL2>
262                         <LITERAL2>sinh</LITERAL2>
263                         <LITERAL2>smoothstep</LITERAL2>
264                         <LITERAL2>sqrt</LITERAL2>
265                         <LITERAL2>step</LITERAL2>
266                         <LITERAL2>tan</LITERAL2>
267                         <LITERAL2>tanh</LITERAL2>
268                         <LITERAL2>transpose</LITERAL2>
269
270                         <!-- Intrinsic functions - sampling -->
271                         <LITERAL3>tex1D</LITERAL3>
272                         <LITERAL3>tex1Dgrad</LITERAL3>
273                         <LITERAL3>tex1Dbias</LITERAL3>
274                         <LITERAL3>tex1Dgrad</LITERAL3>
275                         <LITERAL3>tex1Dlod</LITERAL3>
276                         <LITERAL3>tex1Dproj</LITERAL3>
277                         <LITERAL3>tex2D</LITERAL3>
278                         <LITERAL3>tex2D</LITERAL3>
279                         <LITERAL3>tex2Dbias</LITERAL3>
280                         <LITERAL3>tex2Dgrad</LITERAL3>
281                         <LITERAL3>tex2Dlod</LITERAL3>
282                         <LITERAL3>tex2Dproj</LITERAL3>
283                         <LITERAL3>tex3D</LITERAL3>
284                         <LITERAL3>tex3D</LITERAL3>
285                         <LITERAL3>tex3Dbias</LITERAL3>
286                         <LITERAL3>tex3Dgrad</LITERAL3>
287                         <LITERAL3>tex3Dlod</LITERAL3>
288                         <LITERAL3>tex3Dproj</LITERAL3>
289                         <LITERAL3>texCUBE</LITERAL3>
290                         <LITERAL3>texCUBE</LITERAL3>
291                         <LITERAL3>texCUBEbias</LITERAL3>
292                         <LITERAL3>texCUBEgrad</LITERAL3>
293                         <LITERAL3>texCUBElod</LITERAL3>
294                         <LITERAL3>texCUBEproj</LITERAL3>
295
296                         <!-- Reserved but unused words -->
297                         <INVALID>auto</INVALID>
298                         <INVALID>break</INVALID>
299                         <INVALID>case</INVALID>
300                         <INVALID>catch</INVALID>
301                         <INVALID>char</INVALID>
302                         <INVALID>class</INVALID>
303                         <INVALID>const_cast</INVALID>
304                         <INVALID>continue</INVALID>
305                         <INVALID>default</INVALID>
306                         <INVALID>delete</INVALID>
307                         <INVALID>dynamic_cast</INVALID>
308                         <INVALID>enum</INVALID>
309                         <INVALID>explicit</INVALID>
310                         <INVALID>friend</INVALID>
311                         <INVALID>goto</INVALID>
312                         <INVALID>long</INVALID>
313                         <INVALID>mutable</INVALID>
314                         <INVALID>namespace</INVALID>
315                         <INVALID>new</INVALID>
316                         <INVALID>operator</INVALID>
317                         <INVALID>private</INVALID>
318                         <INVALID>protected</INVALID>
319                         <INVALID>public</INVALID>
320                         <INVALID>reinterpret_cast</INVALID>
321                         <INVALID>short</INVALID>
322                         <INVALID>signed</INVALID>
323                         <INVALID>sizeof</INVALID>
324                         <INVALID>static_cast</INVALID>
325                         <INVALID>switch</INVALID>
326                         <INVALID>template</INVALID>
327                         <INVALID>this</INVALID>
328                         <INVALID>throw</INVALID>
329                         <INVALID>try</INVALID>
330                         <INVALID>typename</INVALID>
331                         <INVALID>union</INVALID>
332                         <INVALID>unsigned</INVALID>
333                         <INVALID>using</INVALID>
334                         <INVALID>virtual</INVALID>
335                 </KEYWORDS>
336         </RULES>
337
338         <RULES SET="Include" DEFAULT="KEYWORD2" />
339
340         <RULES
341                 SET="Preprocessor"
342                 DEFAULT="KEYWORD2"
343                 IGNORE_CASE="FALSE"
344                 HIGHLIGHT_DIGITS="TRUE"
345                 DIGIT_RE="((0x[[:xdigit:]]+|[[:digit:]]+)[uUIL]?|[[:digit:]]+([eE][[:digit:]]*)?[hHfF]?)">
346
347                 <!-- C style comment -->
348                 <SPAN TYPE="COMMENT1">
349                         <BEGIN>/*</BEGIN>
350                         <END>*/</END>
351                 </SPAN>
352
353                 <!-- this is a hack so that #include <net/if.h> does not get the if highlighted -->
354                 <EOL_SPAN TYPE="MARKUP" DELEGATE="Include">include</EOL_SPAN>
355
356                 <KEYWORDS>
357                         <!-- Directives -->
358                         <MARKUP>define</MARKUP>
359                         <MARKUP>elif</MARKUP>
360                         <MARKUP>else</MARKUP>
361                         <MARKUP>endif</MARKUP>
362                         <MARKUP>error</MARKUP>
363                         <MARKUP>if</MARKUP>
364                         <MARKUP>ifdef</MARKUP>
365                         <MARKUP>ifndef</MARKUP>
366                         <MARKUP>line</MARKUP>
367                         <MARKUP>pragma</MARKUP>
368                         <MARKUP>undef</MARKUP>
369
370                         <!-- Other -->
371                         <LITERAL1>pack_matrix</LITERAL1>
372                         <LITERAL1>warning</LITERAL1>
373                         <LITERAL1>def</LITERAL1>
374                         <LITERAL1>defined</LITERAL1>
375                         <LITERAL1>D3DX</LITERAL1>
376                         <LITERAL1>D3DX_VERSION</LITERAL1>
377                         <LITERAL1>DIRECT3D</LITERAL1>
378                         <LITERAL1>DIRECT3D_VERSION</LITERAL1>
379                         <LITERAL1>__FILE__</LITERAL1>
380                         <LITERAL1>__LINE__</LITERAL1>
381                 </KEYWORDS>
382         </RULES>
383
384         <RULES SET="Asm"
385                 DEFAULT="NULL"
386                 IGNORE_CASE="FALSE"
387                 HIGHLIGHT_DIGITS="TRUE"
388                 DIGIT_RE="((0x[[:xdigit:]]+|[[:digit:]]+)[uUIL]?|[[:digit:]]+([eE][[:digit:]]*)?[hHfF]?)">
389
390                 <!-- Starting... -->
391                 <SEQ TYPE="OPERATOR">{</SEQ>
392
393                 <!-- Comments -->
394                 <SPAN TYPE="COMMENT1">
395                         <BEGIN>/*</BEGIN>
396                         <END>*/</END>
397                 </SPAN>
398                 <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
399                 <EOL_SPAN TYPE="COMMENT2">;</EOL_SPAN>
400
401                 <!-- Operators -->
402                 <SEQ TYPE="OPERATOR">+</SEQ>
403                 <SEQ TYPE="OPERATOR">-</SEQ>
404                 <SEQ TYPE="OPERATOR">,</SEQ>
405
406                 <!-- Swizzle operator -->
407                 <SEQ_REGEXP TYPE="OPERATOR" HASH_CHAR=".">.(([xyzw]{1,4}))</SEQ_REGEXP>
408
409                 <!-- Instruction -->
410                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="abs">abs(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
411                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="add">add(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
412                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="bem">bem(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
413                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="break_comp">break_comp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
414                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="breakp">breakp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
415                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="callnz">callnz(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
416                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="cmp">cmp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
417                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="cnd">cnd(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
418                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="crs">crs(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
419                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dp2add">dp2add(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
420                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dp3">dp3(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
421                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dp4">dp4(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
422                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dst">dst(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
423                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dsx">dsx(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
424                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dsy">dsy(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
425                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="else">else(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
426                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="endif">endif(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
427                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="endloop">endloop(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
428                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="endrep">endrep(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
429                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="exp">exp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
430                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="frc">frc(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
431                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="if">if(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
432                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="label">label(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
433                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="lit">lit(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
434                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="logp">logp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
435                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="loop">loop(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
436                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="lrp">lrp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
437                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m3x2">m3x2(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
438                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m3x3">m3x3(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
439                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m3x4">m3x4(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
440                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m4x3">m4x3(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
441                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m4x4">m4x4(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
442                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="mad">mad(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
443                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="mov">mov(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
444                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="max">max(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
445                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="min">min(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
446                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="mova">mova(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
447                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="mul">mul(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
448                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="nop">nop(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
449                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="nrm">nrm(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
450                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="phase">phase(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
451                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="pow">pow(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
452                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="rcp">rcp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
453                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="rep">rep(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
454                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="ret">ret(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
455                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="rsq">rsq(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
456                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="setp_comp">setp_comp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
457                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="sge">sge(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
458                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="sgn">sgn(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
459                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="sincos">sincos(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
460                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="slt">slt(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
461                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="sub">sub(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
462                 <!-- (seen in preshader -->
463                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="neg">neg(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>
464
465                 <!-- Texturing instruction -->
466                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD2" HASH_CHAR="tex">tex\w*</SEQ_REGEXP>
467
468                 <!-- Main instruction -->
469                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD1" HASH_CHAR="ps">ps\w*</SEQ_REGEXP>
470                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD1" HASH_CHAR="vs">vs\w*</SEQ_REGEXP>
471                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD1" HASH_CHAR="def">def\w*</SEQ_REGEXP>
472                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD1" HASH_CHAR="dcl">dcl\w*</SEQ_REGEXP>
473
474                 <KEYWORDS>
475                 </KEYWORDS>
476         </RULES>
477 </MODE>
478