patterns 28 KB

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