patterns 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  1. /* $Id$ */
  2. loc adi w loc sbi w : loc $1-$3 adi w
  3. inc dec:
  4. inc loc adi w : loc $2+1 adi w
  5. inc loc sbi w : loc $2-1 sbi w
  6. dec loc adi w : loc $2-1 adi w
  7. dec loc sbi w : loc $2+1 sbi w
  8. ldc adi w2 ldc sbi w2 : ldc $1-$3 adi w2
  9. loc adi w loc adi w : loc $1+$3 adi w
  10. ldc adi w2 ldc adi w2 : ldc $1+$3 adi w2
  11. loc adi w loc mli w : loc $3 mli w loc $1*$3 adi w
  12. loc adi w loc 1 sli w : loc $3 sli w loc 2*$1 adi w
  13. adp 0 :
  14. adp adp : adp $1+$2
  15. adp lof : lof $1+$2
  16. adp ldf : ldf $1+$2
  17. adp !=0 loi w : lof $1
  18. adp !=0 loi w2 : ldf $1
  19. adp stf : stf $1+$2
  20. adp sdf : sdf $1+$2
  21. adp !=0 sti w : stf $1
  22. adp !=0 sti w2 : sdf $1
  23. asp 0 :
  24. asp asp : asp $1+$2
  25. blm 0 : asp 2*p
  26. cmi w zeq : beq $2
  27. cmi w zge : bge $2
  28. cmi w zgt : bgt $2
  29. cmi w zle : ble $2
  30. cmi w zlt : blt $2
  31. cmi w zne : bne $2
  32. cmu w zeq : beq $2
  33. cmu w zne : bne $2
  34. dvi ngi $1 : ngi $1 dvi $1
  35. lae adp : lae $1+$2
  36. lae blm w : loi w ste $1
  37. lae blm w2 : loi w2 sde $1
  38. lae ldf : lde $1+$2
  39. lae lof : loe $1+$2
  40. lae loi w : loe $1
  41. lae loi w2 : lde $1
  42. #ifdef INT
  43. lae loi loe $1-w ? $2%w==0: lae $3 loi $2+w
  44. lae loi lde $1-w2 ? $2%w==0: lae $3 loi $2+w2
  45. lae $3+$4 loi lae loi ? $2%w==0 && $4%w==0: lae $3 loi $2+$4
  46. lae sti ste $1+$2 : lae $1 sti $2+w
  47. lae sti sde $1+$2 : lae $1 sti $2+w2
  48. lae sti loc ste $1-w : loc $3 lae $4 sti $2+w
  49. lae sti lol ste $1-w : lol $3 lae $4 sti $2+w
  50. #endif
  51. lae lae blm loe $1+$3 ste $2+$3 : lae $1 lae $2 blm $3+w
  52. lae lae blm lde $1+$3 sde $2+$3 : lae $1 lae $2 blm $3+w2
  53. lae lae blm lae $1+$3 lae $2+$3 blm : lae $1 lae $2 blm $3+$6
  54. lae lal blm lae $1+$3 lal $2+$3 blm ? samesign($2,$5):
  55. lae $1 lal $2 blm $3+$6
  56. lal lae blm lal $1+$3 lae $2+$3 blm ? samesign($1,$4):
  57. lal $1 lae $2 blm $3+$6
  58. lal lal blm lal $1+$3 lal $2+$3 blm ? samesign($1,$4) && samesign($2,$5):
  59. lal $1 lal $2 blm $3+$6
  60. lal lal sbs w ? samesign($1,$2): loc $1-$2
  61. lae sdf : sde $1+$2
  62. lae stf : ste $1+$2
  63. lae sti w : ste $1
  64. lae sti w2 : sde $1
  65. lal adp ? samesign($1,$1+$2): lal $1+$2
  66. lal blm w : loi w stl $1
  67. lal blm w2 : loi w2 sdl $1
  68. #ifdef INT
  69. /*lal sti loc stl $1-w ? notreg($4) && samesign($1,$4): */
  70. /* loc $3 lal $4 sti $2+w */
  71. /*lal sti loe stl $1-w ? notreg($4) && samesign($1,$4): */
  72. /* loe $3 lal $4 sti $2+w */
  73. #endif
  74. lal ldf ? samesign($1,$1+$2): ldl $1+$2
  75. lal lof ? samesign($1,$1+$2): lol $1+$2
  76. lal loi w : lol $1
  77. lal loi w2 : ldl $1
  78. #ifdef INT
  79. /*lal loi lol $1-w ? notreg($3) && samesign($1,$3) && $2%w==0: */
  80. /* lal $3 loi $2+w */
  81. /*lal loi ldl $1-w2 ? notreg($3) && samesign($1,$3) && $2%w==0: */
  82. /* lal $3 loi $2+w2 */
  83. lal loi lal loi $1-$3 ? samesign($1,$3) && $2%w==0 && $4%w==0:
  84. lal $3 loi $2+$4
  85. /*lal sti stl $1+$2 ? notreg($3) && samesign($1,$3): lal $1 sti $2+w */
  86. /*lal sti sdl $1+$2 ? notreg($3) && samesign($1,$3): lal $1 sti $2+w2*/
  87. #endif
  88. lal sdf ? samesign($1,$1+$2): sdl $1+$2
  89. lal stf ? samesign($1,$1+$2): stl $1+$2
  90. lal sti w : stl $1
  91. lal sti w2 : sdl $1
  92. #ifdef INT
  93. lde lde $1-w2 : lae $2 loi 4*w
  94. lde loe $1-w : lae $2 loi 3*w
  95. #endif
  96. lde sde $1 :
  97. lde sde lde $1+w2 sde $2+w2 : lae $1 lae $2 blm 4*w
  98. #ifdef INT
  99. /*ldl ldl $1-w2 ? notreg($1) && notreg($2) && samesign($1,$2):*/
  100. /* lal $2 loi 4*w */
  101. /*ldl lol $1-w ? notreg($1) && notreg($2) && samesign($1,$2): */
  102. /* lal $2 loi 3*w */
  103. #endif
  104. ldl sdl $1:
  105. lxa loi lxa $1 sti $2 :
  106. lxa lof lxa $1 stf $2 :
  107. lxa ldf lxa $1 sdf $2 :
  108. lxa >1 stf lxa $1 lof $2 : dup w lxa $1 stf $2
  109. lxa >1 sdf lxa $1 ldf $2 : dup w2 lxa $1 sdf $2
  110. lxl lof lxl $1 stf $2 :
  111. lxl ldf lxl $1 sdf $2 :
  112. lxl >1 stf lxl $1 lof $2 : dup w lxl $1 stf $2
  113. lxl >1 sdf lxl $1 ldf $2 : dup w2 lxl $1 sdf $2
  114. lxa >1 sti lxa $1 loi $2 ? $2%w==0: dup $2 lxa $1 sti $2
  115. loc -1 adi w : dec
  116. loc dec ? sfit($1-1,8*w) : loc $1-1
  117. loc -1 bgt : zge $2
  118. loc -1 ble : zlt $2
  119. loc -1 dvi w : ngi w
  120. ldc -1 dvi w2 : ngi w2
  121. loc -1 loe adi w : loe $2 dec
  122. loc -1 lol adi w : lol $2 dec
  123. loc -1 mli w : ngi w
  124. ldc -1 mli w2 : ngi w2
  125. loc -1 sbi w : inc
  126. loc inc ? sfit($1+1,8*w) : loc $1+1
  127. loc 0 adi w :
  128. ldc 0 adi w2 :
  129. loc 0 ads w :
  130. ldc 0 ads w2 :
  131. zer adi $1 :
  132. loc 0 beq : zeq $2
  133. loc 0 bge : zge $2
  134. loc 0 bgt : zgt $2
  135. loc 0 ble : zle $2
  136. loc 0 blt : zlt $2
  137. loc 0 bne : zne $2
  138. loc 0 cmi w teq : teq
  139. loc 0 cmi w tge : tge
  140. loc 0 cmi w tgt : tgt
  141. loc 0 cmi w tle : tle
  142. loc 0 cmi w tlt : tlt
  143. loc 0 cmi w tne : tne
  144. loc 0 cmu w teq : teq
  145. loc 0 cmu w tne : tne
  146. loc 0 cmu w zeq : zeq $3
  147. loc 0 cmu w zne : zne $3
  148. loc 0 ior w :
  149. ldc 0 ior w2 :
  150. zer ior $1 :
  151. loc 0 ste : zre $2
  152. loc 0 stl : zrl $2
  153. loc 0 sbi w :
  154. ldc 0 sbi w2 :
  155. zer sbi $1 :
  156. loc 0 xor w :
  157. ldc 0 xor w2 :
  158. zer xor $1 :
  159. loc 1 adi w : inc
  160. loc 1 bge : zgt $2
  161. loc 1 blt : zle $2
  162. loc 1 dvi w :
  163. ldc 1 dvi w2 :
  164. loc 1 dvu w :
  165. loc 1 dvu w2 :
  166. loc 1 loe adi w : loe $2 inc
  167. loc 1 lol adi w : lol $2 inc
  168. loc 0 mli w : asp w loc 0
  169. ldc 0 mli w2 : asp w2 ldc 0
  170. loc 0 mlu w : asp w loc 0
  171. ldc 0 mlu w2 : asp w2 ldc 0
  172. loc 1 mli w :
  173. ldc 1 mli w2 :
  174. loc 1 mlu w :
  175. ldc 1 mlu w2 :
  176. loc 1 sbi w : dec
  177. loc loe mli w : loe $2 loc $1 mli w
  178. loc loe mlu w : loe $2 loc $1 mlu w
  179. loc loe adi w loc : loe $2 loc $1 adi w loc $4
  180. loc loe adi w inc : loe $2 loc $1 adi w inc
  181. loc loe adi w dec : loe $2 loc $1 adi w dec
  182. loc lol mli w : lol $2 loc $1 mli w
  183. loc lol mlu w : lol $2 loc $1 mlu w
  184. loc lol adi w loc : lol $2 loc $1 adi w loc $4
  185. loc lol adi w inc : lol $2 loc $1 adi w dec
  186. loc lol adi w dec : lol $2 loc $1 adi w dec
  187. ldc lde mli w2 : lde $2 ldc $1 mli w2
  188. ldc lde mlu w2 : lde $2 ldc $1 mlu w2
  189. ldc lde adi w2 : lde $2 ldc $1 adi w2
  190. ldc ldl mli w2 : ldl $2 ldc $1 mli w2
  191. ldc ldl mlu w2 : ldl $2 ldc $1 mlu w2
  192. ldc ldl adi w2 : ldl $2 ldc $1 adi w2
  193. loc 2 mli w : loc 1 sli w
  194. loc 4 mli w : loc 2 sli w
  195. loc 8 mli w : loc 3 sli w
  196. loc 16 mli w : loc 4 sli w
  197. loc 32 mli w : loc 5 sli w
  198. loc 64 mli w : loc 6 sli w
  199. loc 128 mli w : loc 7 sli w
  200. loc 256 mli w : loc 8 sli w
  201. loc 2 mlu w : loc 1 slu w
  202. loc 4 mlu w : loc 2 slu w
  203. loc 8 mlu w : loc 3 slu w
  204. loc 16 mlu w : loc 4 slu w
  205. loc 32 mlu w : loc 5 slu w
  206. loc 64 mlu w : loc 6 slu w
  207. loc 128 mlu w : loc 7 slu w
  208. loc 256 mlu w : loc 8 slu w
  209. loc 2 dvu w : loc 1 sru w
  210. loc 4 dvu w : loc 2 sru w
  211. loc 8 dvu w : loc 3 sru w
  212. loc 16 dvu w : loc 4 sru w
  213. loc 32 dvu w : loc 5 sru w
  214. loc 64 dvu w : loc 6 sru w
  215. loc 128 dvu w : loc 7 sru w
  216. loc 256 dvu w : loc 8 sru w
  217. loc adi undefined : adi $1
  218. loc sbi undefined : sbi $1
  219. loc mli undefined : mli $1
  220. loc dvi undefined : dvi $1
  221. loc rmi undefined : rmi $1
  222. loc ngi undefined : ngi $1
  223. loc sli undefined : sli $1
  224. loc sri undefined : sri $1
  225. loc adu undefined : adu $1
  226. loc sbu undefined : sbu $1
  227. loc mlu undefined : mlu $1
  228. loc dvu undefined : dvu $1
  229. loc rmu undefined : rmu $1
  230. loc slu undefined : slu $1
  231. loc sru undefined : sru $1
  232. loc adf undefined : adf $1
  233. loc sbf undefined : sbf $1
  234. loc mlf undefined : mlf $1
  235. loc dvf undefined : dvf $1
  236. loc ngf undefined : ngf $1
  237. loc fif undefined : fif $1
  238. loc fef undefined : fef $1
  239. loc zer undefined : zer $1
  240. loc zrf undefined : zrf $1
  241. loc los w : loi $1
  242. loc sts w : sti $1
  243. loc ads w : adp $1
  244. ldc ads w2 ? sfit($1,8*w): adp $1
  245. loc ass w : asp $1
  246. loc bls w : blm $1
  247. loc dus w : dup $1
  248. loc loc $1 cii :
  249. loc loc $1 cuu :
  250. loc loc $1 cff :
  251. loc and undefined : and $1
  252. loc ior undefined : ior $1
  253. loc xor undefined : xor $1
  254. loc com undefined : com $1
  255. loc rol undefined : rol $1
  256. loc 0 rol :
  257. loc ror undefined : ror $1
  258. loc 0 ror :
  259. loc inn undefined : inn $1
  260. loc set undefined : set $1
  261. loc cmi undefined : cmi $1
  262. loc cmu undefined : cmu $1
  263. loc cmf undefined : cmf $1
  264. loe dec ste $1: dee $1
  265. loe inc ste $1: ine $1
  266. loe loc 0 mli w : loc 0
  267. #ifdef INT
  268. loe loe $1-w : lde $2
  269. loe loe $1+w beq : lde $1 beq $3
  270. loe loe $1+w bge : lde $1 ble $3
  271. loe loe $1+w bgt : lde $1 blt $3
  272. loe loe $1+w ble : lde $1 bge $3
  273. loe loe $1+w blt : lde $1 bgt $3
  274. loe loe $1+w bne : lde $1 bne $3
  275. loe loe $1+w cmi w : lde $1 cmi w ngi w
  276. #endif
  277. ngi w teq : teq
  278. ngi w tge : tle
  279. ngi w tgt : tlt
  280. ngi w tle : tge
  281. ngi w tlt : tgt
  282. ngi w tne : tne
  283. #ifdef INT
  284. loe loe $1+w mli w : lde $1 mli w
  285. loe loe $1+w adi w : lde $1 adi w
  286. loe loe $1 : loe $1 dup w
  287. #endif
  288. loe ste $1 :
  289. lol blm w ? p==w : loi w sil $1
  290. ldl blm w ? p==w2 : loi w sil $1
  291. lol dec stl $1 : del $1
  292. lol inc stl $1 : inl $1
  293. lol loc 0 mli w : loc 0
  294. lol loi w ? w==p : lil $1
  295. ldl loi w ? p==w2 : lil $1
  296. #ifdef INT
  297. /*lol lol $1-w ? notreg($1) && notreg($2) && samesign($1,$2): */
  298. /* ldl $2 */
  299. /*lol lol $1+w beq ? notreg($1) && notreg($2) && samesign($1,$2): */
  300. /* ldl $1 beq $3 */
  301. /*lol lol $1+w bge ? notreg($1) && notreg($2) && samesign($1,$2): */
  302. /* ldl $1 ble $3 */
  303. /*lol lol $1+w bgt ? notreg($1) && notreg($2) && samesign($1,$2): */
  304. /* ldl $1 blt $3 */
  305. /*lol lol $1+w ble ? notreg($1) && notreg($2) && samesign($1,$2): */
  306. /* ldl $1 bge $3 */
  307. /*lol lol $1+w blt ? notreg($1) && notreg($2) && samesign($1,$2): */
  308. /* ldl $1 bgt $3 */
  309. /*lol lol $1+w bne ? notreg($1) && notreg($2) && samesign($1,$2): */
  310. /* ldl $1 bne $3 */
  311. /*lol lol $1+w cmi w ? notreg($1) && notreg($2) && samesign($1,$2): */
  312. /* ldl $1 cmi w ngi w */
  313. /*lol lol $1+w mli w ? notreg($1) && notreg($2) && samesign($1,$2): */
  314. /* ldl $1 mli w */
  315. /*lol lol $1+w adi w ? notreg($1) && notreg($2) && samesign($1,$2): */
  316. /* ldl $1 adi w */
  317. lol lol $1 : lol $1 dup w
  318. #endif
  319. lol stl $1:
  320. lol sti w ? p==w : sil $1
  321. ldl sti w ? p==w2 : sil $1
  322. mli ngi $1: ngi $1 mli $1
  323. ngi adi $1: sbi $1
  324. ngf adf $1: sbf $1
  325. ngi sbi $1: adi $1
  326. ngf sbf $1: adf $1
  327. ngi ngi $1:
  328. ngf ngf $1:
  329. #ifdef INT
  330. sde sde $1+w2 : lae $1 sti 4*w
  331. sde ste $1+w2 : lae $1 sti 3*w
  332. sde loc ste $1-w : loc $2 lae $3 sti 3*w
  333. sde lol ste $1-w : lol $2 lae $3 sti 3*w
  334. sde lde $1 : dup w2 sde $1
  335. #endif
  336. sdf 0 : sti w2
  337. #ifdef INT
  338. /*sdl sdl $1+w2 ? notreg($1) && notreg($2) && samesign($1,$2): */
  339. /* lal $1 sti 4*w */
  340. /*sdl stl $1+w2 ? notreg($1) && notreg($2) && samesign($1,$2): */
  341. /* lal $1 sti 3*w */
  342. /*sdl loc stl $1-w ? notreg($1) && notreg($3) && samesign($1,$3): */
  343. /* loc $2 lal $3 sti 3*w */
  344. /*sdl loe stl $1-w ? notreg($1) && notreg($3) && samesign($1,$3): */
  345. /* loe $2 lal $3 sti 3*w */
  346. sdl ldl $1 : dup w2 sdl $1
  347. ste loe $1 : dup w ste $1
  348. ste ste $1-w : sde $2
  349. ste loc ste $1-w : loc $2 sde $3
  350. ste lol ste $1-w : lol $2 sde $3
  351. stl lol $1 : dup w stl $1
  352. #endif
  353. stf 0 : sti w
  354. sdl ldl $1 ret w2 : ret w2
  355. #ifdef INT
  356. /*stl stl $1+w ? notreg($1) && notreg($2) && samesign($1,$2): sdl $1 */
  357. /*stl loc stl $1-w ? notreg($1) && notreg($3) && samesign($1,$3): */
  358. /* loc $2 sdl $3 */
  359. /*stl loe stl $1-w ? notreg($1) && notreg($3) && samesign($1,$3): */
  360. /* loe $2 sdl $3 */
  361. #endif
  362. stl lol $1 ret w : ret w
  363. lal sti lal $1 loi $2 ret $2 : ret $2
  364. loc sbi w loc sbi w : loc $1+$3 sbi w
  365. ldc sbi w2 ldc sbi w2 : ldc $1+$3 sbi w2
  366. loc sbi w loc adi w : loc $1-$3 sbi w
  367. ldc sbi w2 ldc adi w2 : ldc $1-$3 sbi w2
  368. loc sbi w loc mli w : loc $3 mli w loc $1*$3 sbi w
  369. loc sbi w loc 1 sli w : loc $3 sli w loc 2*$1 sbi w
  370. teq teq : tne
  371. teq tne : teq
  372. teq zne : zeq $2
  373. teq zeq : zne $2
  374. tge teq : tlt
  375. tge tne : tge
  376. tge zeq : zlt $2
  377. tge zne : zge $2
  378. tgt teq : tle
  379. tgt tne : tgt
  380. tgt zeq : zle $2
  381. tgt zne : zgt $2
  382. tle teq : tgt
  383. tle tne : tle
  384. tle zeq : zgt $2
  385. tle zne : zle $2
  386. tlt teq : tge
  387. tlt tne : tlt
  388. tlt zeq : zge $2
  389. tlt zne : zlt $2
  390. tne teq : teq
  391. tne tne : tne
  392. tne zeq : zeq $2
  393. tne zne : zne $2
  394. #ifdef INT
  395. loc 0 loc 0 loc 0 : zer 3*w
  396. zer defined loc 0 : zer $1+w
  397. #endif
  398. loi 1 loc and w ? ($2&255)==255: loi 1
  399. loi <w loc w loc cii : loi $1 loc $2 loc $3 cui
  400. loi 1 loc 1 loc w cii loc 255 and w : loi 1
  401. loi 1 loc 1 loc w cii loc cmi w zeq ? $5>=0&&$5<128 : loi 1 loc $5 cmi w zeq $7
  402. loi 1 loc 1 loc w cii loc cmi w zne ? $5>=0&&$5<128 : loi 1 loc $5 cmi w zne $7
  403. loi 1 loc 1 loc w cii loc w loc w ciu loc 255 and w: loi 1
  404. cmp teq : cms p teq
  405. cmp tne : cms p tne
  406. cmp zeq : cms p zeq $2
  407. cmp zne : cms p zne $2
  408. cmu defined teq : cms $1 teq
  409. cmu defined tne : cms $1 tne
  410. cms w zeq : beq $2
  411. cms w zne : bne $2
  412. lol lae aar w adp : adp $4 lol $1 lae $2 aar w
  413. loe lae aar w adp : adp $4 loe $1 lae $2 aar w
  414. cmi defined zeq : cms $1 zeq $2
  415. cmi defined zne : cms $1 zne $2
  416. #ifdef INT
  417. loe $4 inc dup w ste : ine $1 loe $1
  418. loe $4 dec dup w ste : dee $1 loe $1
  419. lol $4 inc dup w stl : inl $1 lol $1
  420. lol $4 dec dup w stl : del $1 lol $1
  421. adp dup p ste adp -$1 ? p==w : dup p adp $1 ste $3
  422. adp dup p sde adp -$1 ? p==w2 : dup p adp $1 sde $3
  423. adp dup p stl adp -$1 ? p==w : dup p adp $1 stl $3
  424. adp dup p sdl adp -$1 ? p==w2 : dup p adp $1 sdl $3
  425. inc dup w ste dec : dup w inc ste $3
  426. inc dup w stl dec : dup w inc stl $3
  427. #endif
  428. bra lab $1 : lab $2
  429. zeq bra lab $1 : zne $2 lab $1
  430. zge bra lab $1: zlt $2 lab $1
  431. zgt bra lab $1 : zle $2 lab $1
  432. zlt bra lab $1 : zge $2 lab $1
  433. zle bra lab $1 : zgt $2 lab $1
  434. zne bra lab $1 : zeq $2 lab $1
  435. beq bra lab $1 : bne $2 lab $1
  436. bge bra lab $1 : blt $2 lab $1
  437. bgt bra lab $1 : ble $2 lab $1
  438. blt bra lab $1 : bge $2 lab $1
  439. ble bra lab $1 : bgt $2 lab $1
  440. bne bra lab $1 : beq $2 lab $1
  441. lin lin : lin $2
  442. lin lab lin : lab $2 lin $3
  443. lin ret : ret $2
  444. lin bra : bra $2
  445. #ifdef INT
  446. dup p stl loi w ? p==w : stl $2 lil $2
  447. dup p sdl loi w ? p==w2 : sdl $2 lil $2
  448. dup p stl sti w ? p==w : stl $2 sil $2
  449. dup p sdl sti w ? p==w2 : sdl $2 sil $2
  450. #endif
  451. loc 0 cms w : tne
  452. zer w : loc 0
  453. loc loc adi w ? sfit($1+$2,8*w) : loc $1+$2
  454. loc loc sbi w ? sfit($1-$2,8*w) : loc $1-$2
  455. loc loc mli w ? sfit($1*$2,8*w) : loc $1*$2
  456. loc loc !=0 dvi w : loc $1/$2
  457. loc loc and w : loc $1&$2
  458. loc loc ior w : loc $1|$2
  459. loc 0 loc 0 ior w2 :
  460. loc loc xor w : loc $1^$2
  461. loc 0 loc 0 xor w2 :
  462. loc loc rol w : loc rotate($1,$2)
  463. loc loc ror w : loc rotate($1,8*w-$2)
  464. loc ngi w ? sfit(-$1,8*w) : loc -$1
  465. loc com w : loc ~$1
  466. ldc ngi w2 : ldc -$1
  467. /*loc lae aar w ? $1>=rom(2,0) && $1 <= rom(2,0)+rom(2,1) : */
  468. /* adp ($1-rom(2,0))*rom(2,2) */
  469. /*loc lae lar w ? $1>=rom(2,0) && $1 <= rom(2,0)+rom(2,1) : */
  470. /* adp ($1-rom(2,0))*rom(2,2) loi rom(2,2) */
  471. /*loc lae sar w ? $1>=rom(2,0) && $1 <= rom(2,0)+rom(2,1) : */
  472. /* adp ($1-rom(2,0))*rom(2,2) sti rom(2,2) */
  473. loc teq : loc $1==0
  474. loc tne : loc $1!=0
  475. loc tge : loc $1>=0
  476. loc tle : loc $1<=0
  477. loc tgt : loc $1>0
  478. loc tlt : loc $1<0
  479. loc 0 zeq : bra $2
  480. loc zeq :
  481. loc !=0 zne : bra $2
  482. loc zne :
  483. loc >=0 zge : bra $2
  484. loc zge :
  485. loc <=0 zle : bra $2
  486. loc zle :
  487. loc >0 zgt : bra $2
  488. loc zgt :
  489. loc <0 zlt : bra $2
  490. loc zlt :
  491. loc loc $1 beq : bra $3
  492. loc loc beq :
  493. loc loc !=$1 bne : bra $3
  494. loc loc bne :
  495. loc loc bge ? $1>=$2 : bra $3
  496. loc loc bge :
  497. loc loc ble ? $1<=$2 : bra $3
  498. loc loc ble :
  499. loc loc bgt ? $1>$2 : bra $3
  500. loc loc bgt :
  501. loc loc blt ? $1<$2 : bra $3
  502. loc loc blt :
  503. lae loi >4*w lal sti $2 : lae $1 lal $3 blm $2
  504. lal loi >4*w lae sti $2 : lal $1 lae $3 blm $2
  505. lal loi >4*w lal sti $2 ? ( $3<=$1-$2 || $3>=$1+$2 ) :
  506. lal $1 lal $3 blm $2
  507. lae loi >4*w lae sti $2 ? ($3<=$1-$2 || $3>=$1+$2) :
  508. lae $1 lae $3 blm $2
  509. loc 0 loc w loc cif : zrf $3
  510. loc >=0 loc w loc w2 ciu : ldc $1
  511. loc loc w loc w2 cii : ldc $1
  512. loi loc >=0 inn $1 ? $2<$1*8 :
  513. lof ($2/(8*w))*w loc $2&(8*w-1) inn w
  514. ldl loc >=0 inn w2 ? $2<16*w :
  515. lol $1+($2/(8*w))*w loc $2&(8*w-1) inn w
  516. lde loc >=0 inn w2 ? $2<16*w :
  517. loe $1+($2/(8*w))*w loc $2&(8*w-1) inn w
  518. ldf loc >=0 inn w2 ? $2<16*w :
  519. lof $1+($2/(8*w))*w loc $2&(8*w-1) inn w
  520. loc inn ? $1<0 || $1>=8*$2 : asp $2 loc 0
  521. lol loc adi w stl $1 : loc $2 lol $1 adi w stl $4
  522. lol loe adi w stl $1 : loe $2 lol $1 adi w stl $4
  523. lol lol !=$1 adi w stl $1 : lol $2 lol $1 adi w stl $4
  524. loe loc adi w ste $1 : loc $2 loe $1 adi w ste $4
  525. loe loe !=$1 adi w ste $1 : loe $2 loe $1 adi w ste $4
  526. loe lol adi w ste $1 : lol $2 loe $1 adi w ste $4
  527. lol loc ior w stl $1 : loc $2 lol $1 ior w stl $4
  528. lol loe ior w stl $1 : loe $2 lol $1 ior w stl $4
  529. lol lol !=$1 ior w stl $1 : lol $2 lol $1 ior w stl $4
  530. loe loc ior w ste $1 : loc $2 loe $1 ior w ste $4
  531. loe loe !=$1 ior w ste $1 : loe $2 loe $1 ior w ste $4
  532. loe lol ior w ste $1 : lol $2 loe $1 ior w ste $4
  533. lol loc and w stl $1 : loc $2 lol $1 and w stl $4
  534. lol loe and w stl $1 : loe $2 lol $1 and w stl $4
  535. lol lol !=$1 and w stl $1 : lol $2 lol $1 and w stl $4
  536. loe loc and w ste $1 : loc $2 loe $1 and w ste $4
  537. loe loe !=$1 and w ste $1 : loe $2 loe $1 and w ste $4
  538. loe lol and w ste $1 : lol $2 loe $1 and w ste $4
  539. loi asp $1 : asp p
  540. lal loi 4*w loc loc loc loc ior 4*w ? ($3==0)+($4==0)+($5==0)+($6==0)>2 :
  541. lol $1+3*w loc $3 ior w lol $1+w2 loc $4 ior w lol $1+w loc $5 ior w lol $1 loc $6 ior w
  542. loc dup 2 stl loc dup 2 stl :
  543. loc $1 stl $3 loc $4 stl $6 loc $1 loc $4
  544. lol lol adp stl $2 sti != p ? p==w : lol $1 sti $5 lol $2 adp $3 stl $4
  545. ldl ldl adp sdl $2 sti != p ? p==w2 : ldl $1 sti $5 ldl $2 adp $3 sdl $4
  546. loe loe adp ste $2 sti !=p ? p==w : loe $1 sti $5 loe $2 adp $3 ste $4
  547. lde lde adp sde $2 sti !=p ? p==w2 : lde $1 sti $5 lde $2 adp $3 sde $4
  548. #ifndef INT
  549. dup w stl : stl $2 lol $2
  550. dup w ste : ste $2 loe $2
  551. dup w sil : sil $2 lil $2
  552. dup w loe sti w ? p==w : loe $2 sti w loe $2 loi w
  553. dup w lde sti w ? p==w2 : lde $2 sti w lde $2 loi w
  554. dup w lol stf ? p==w : lol $2 stf $3 lol $2 lof $3
  555. dup w ldl stf ? p==w2 : ldl $2 stf $3 ldl $2 lof $3
  556. dup w loe stf ? p==w : loe $2 stf $3 loe $2 lof $3
  557. dup w lde stf ? p==w2 : lde $2 stf $3 lde $2 lof $3
  558. dup w2 sdl : sdl $2 ldl $2
  559. dup w2 sde : sde $2 lde $2
  560. dup w2 lol sti w2 ? p==w : lol $2 sti w2 lol $2 loi w2
  561. dup w2 ldl sti w2 ? p==w2 : ldl $2 sti w2 ldl $2 loi w2
  562. dup w2 loe sti w2 ? p==w : loe $2 sti w2 loe $2 loi w2
  563. dup w2 lde sti w2 ? p==w2 : lde $2 sti w2 lde $2 loi w2
  564. dup w2 lol sdf ? p==w : lol $2 sdf $3 lol $2 ldf $3
  565. dup w2 ldl sdf ? p==w2 : ldl $2 sdf $3 ldl $2 ldf $3
  566. dup w2 loe sdf ? p==w : loe $2 sdf $3 loe $2 ldf $3
  567. dup w2 lde sdf ? p==w2 : lde $2 sdf $3 lde $2 ldf $3
  568. lol dup w : lol $1 lol $1
  569. loe dup w : loe $1 loe $1
  570. lil dup w : lil $1 lil $1
  571. loe loi w dup 2 ? p==w : loe $1 loi w loe $1 loi w
  572. lde loi w dup 2 ? p==w2 : lde $1 loi w lde $1 loi w
  573. ldl dup w2 : ldl $1 ldl $1
  574. lde dup w2 : lde $1 lde $1
  575. #endif
  576. adp stl lol $2 adp -$1 ? p==w : dup p adp $1 stl $2
  577. adp sdl ldl $2 adp -$1 ? p==w2 : dup p adp $1 sdl $2
  578. adp ste loe $2 adp -$1 ? p==w : dup p adp $1 ste $2
  579. adp sde lde $2 adp -$1 ? p==w2 : dup p adp $1 sde $2
  580. adp sil lil $2 adp -$1 ? p==w : dup p adp $1 sil $2
  581. adp lol sti p lol $2 loi p adp -$1 ? p==w : dup p adp $1 lol $2 sti p
  582. adp ldl sti p ldl $2 loi p adp -$1 ? p==w2 : dup p adp $1 ldl $2 sti p
  583. adp loe sti p loe $2 loi p adp -$1 ? p==w : dup p adp $1 loe $2 sti p
  584. adp lde sti p lde $2 loi p adp -$1 ? p==w2 : dup p adp $1 lde $2 sti p
  585. /* dead code patterns */
  586. bra aar : bra $1
  587. bra adf : bra $1
  588. bra adi : bra $1
  589. bra adp : bra $1
  590. bra ads : bra $1
  591. bra adu : bra $1
  592. bra and : bra $1
  593. bra asp : bra $1
  594. bra ass : bra $1
  595. bra beq : bra $1
  596. bra bge : bra $1
  597. bra bgt : bra $1
  598. bra ble : bra $1
  599. bra blm : bra $1
  600. bra bls : bra $1
  601. bra blt : bra $1
  602. bra bne : bra $1
  603. bra bra : bra $1
  604. bra cai : bra $1
  605. bra cal : bra $1
  606. bra cff : bra $1
  607. bra cfi : bra $1
  608. bra cfu : bra $1
  609. bra cif : bra $1
  610. bra cii : bra $1
  611. bra ciu : bra $1
  612. bra cmf : bra $1
  613. bra cmi : bra $1
  614. bra cmp : bra $1
  615. bra cms : bra $1
  616. bra cmu : bra $1
  617. bra com : bra $1
  618. bra csa : bra $1
  619. bra csb : bra $1
  620. bra cuf : bra $1
  621. bra cui : bra $1
  622. bra cuu : bra $1
  623. bra dch : bra $1
  624. bra dec : bra $1
  625. bra dee : bra $1
  626. bra del : bra $1
  627. bra dup : bra $1
  628. bra dus : bra $1
  629. bra dvf : bra $1
  630. bra dvi : bra $1
  631. bra dvu : bra $1
  632. bra exg : bra $1
  633. bra fef : bra $1
  634. bra fif : bra $1
  635. bra fil : bra $1
  636. bra gto : bra $1
  637. bra inc : bra $1
  638. bra ine : bra $1
  639. bra inl : bra $1
  640. bra inn : bra $1
  641. bra ior : bra $1
  642. bra lae : bra $1
  643. bra lal : bra $1
  644. bra lar : bra $1
  645. bra ldc : bra $1
  646. bra lde : bra $1
  647. bra ldf : bra $1
  648. bra ldl : bra $1
  649. bra lfr : bra $1
  650. bra lil : bra $1
  651. bra lim : bra $1
  652. bra lin : bra $1
  653. bra lni : bra $1
  654. bra loc : bra $1
  655. bra loe : bra $1
  656. bra lof : bra $1
  657. bra loi : bra $1
  658. bra lol : bra $1
  659. bra lor : bra $1
  660. bra los : bra $1
  661. bra lpb : bra $1
  662. bra lpi : bra $1
  663. bra lxa : bra $1
  664. bra lxl : bra $1
  665. bra mlf : bra $1
  666. bra mli : bra $1
  667. bra mlu : bra $1
  668. bra mon : bra $1
  669. bra ngf : bra $1
  670. bra ngi : bra $1
  671. bra nop : bra $1
  672. bra rck : bra $1
  673. bra ret : bra $1
  674. bra rmi : bra $1
  675. bra rmu : bra $1
  676. bra rol : bra $1
  677. bra ror : bra $1
  678. bra rtt : bra $1
  679. bra sar : bra $1
  680. bra sbf : bra $1
  681. bra sbi : bra $1
  682. bra sbs : bra $1
  683. bra sbu : bra $1
  684. bra sde : bra $1
  685. bra sdf : bra $1
  686. bra sdl : bra $1
  687. bra set : bra $1
  688. bra sig : bra $1
  689. bra sil : bra $1
  690. bra sim : bra $1
  691. bra sli : bra $1
  692. bra slu : bra $1
  693. bra sri : bra $1
  694. bra sru : bra $1
  695. bra ste : bra $1
  696. bra stf : bra $1
  697. bra sti : bra $1
  698. bra stl : bra $1
  699. bra str : bra $1
  700. bra sts : bra $1
  701. bra teq : bra $1
  702. bra tge : bra $1
  703. bra tgt : bra $1
  704. bra tle : bra $1
  705. bra tlt : bra $1
  706. bra tne : bra $1
  707. bra trp : bra $1
  708. bra xor : bra $1
  709. bra zeq : bra $1
  710. bra zer : bra $1
  711. bra zge : bra $1
  712. bra zgt : bra $1
  713. bra zle : bra $1
  714. bra zlt : bra $1
  715. bra zne : bra $1
  716. bra zre : bra $1
  717. bra zrf : bra $1
  718. bra zrl : bra $1