/jEdit/tags/jedit-4-4-pre1/modes/hlsl.xml

# · XML · 478 lines · 394 code · 41 blank · 43 comment · 0 complexity · 5d235b4f1e31c26f8bb41f33964fb4db MD5 · raw file

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