Pristine Ack-5.5
[Ack-5.5.git] / util / opt / patterns
1 "$Id: patterns,v 2.54 1994/10/19 14:09:26 ceriel Exp $"
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
636 lol lol beq $1==$2 : bra $3
637 loe loe beq $1==$2 : bra $3
638 lil lil beq $1==$2 : bra $3
639
640 lol lol bne $1==$2 :
641 loe loe bne $1==$2 :
642 lil lil bne $1==$2 :
643
644 lol lol teq $1==$2 : loc 1
645 loe loe teq $1==$2 : loc 1
646 lil lil teq $1==$2 : loc 1
647
648 lol lol tne $1==$2 : loc 0
649 loe loe tne $1==$2 : loc 0
650 lil lil tne $1==$2 : loc 0
651
652 lol loc CBO stl $3==w && $1==$4 : loc $2 lol $1 CBO w stl $4
653 lol loe CBO stl $3==w && $1==$4 : loe $2 lol $1 CBO w stl $4
654 lol lol CBO stl $3==w && $1==$4 && $1!=$2 : lol $2 lol $1 CBO w stl $4
655 lol lil CBO stl $3==w && $1==$4 : lil $2 lol $1 CBO w stl $4
656
657 ldl ldc CBO sdl $3==2*w && $1==$4 : ldc $2 ldl $1 CBO $3 sdl $4
658 ldl lde CBO sdl $3==2*w && $1==$4 : lde $2 ldl $1 CBO $3 sdl $4
659 ldl ldl CBO sdl $3==2*w && $1==$4 &&$1!=$2 : ldl $2 ldl $1 CBO $3 sdl $4
660
661 loe loc CBO ste $3==w && $1==$4 : loc $2 loe $1 CBO w ste $4
662 loe loe CBO ste $3==w && $1==$4 && $1!=$2 : loe $2 loe $1 CBO w ste $4
663 loe lol CBO ste $3==w && $1==$4 : lol $2 loe $1 CBO w ste $4
664 loe lil CBO ste $3==w && $1==$4 : lil $2 loe $1 CBO w ste $4
665
666 lde ldc CBO sde $3==2*w && $1==$4 : ldc $2 lde $1 CBO $3 sde $4
667 lde lde CBO sde $3==2*w && $1==$4 && $1!=$2 : lde $2 lde $1 CBO $3 sde $4
668 lde ldl CBO sde $3==2*w && $1==$4 : ldl $2 lde $1 CBO $3 sde $4
669
670 lil loc CBO sil $3==w && $1==$4 : loc $2 lil $1 CBO w sil $4
671 lil lol CBO sil $3==w && $1==$4 : lol $2 lil $1 CBO w sil $4
672 lil loe CBO sil $3==w && $1==$4 : loe $2 lil $1 CBO w sil $4
673 lil lil CBO sil $3==w && $1==$4 && $1!=$2 : lil $2 lil $1 CBO w sil $4
674
675 LLP loi ldc CBO LLP sti $4==2*w && $2==$4 && $6==$4 && $1==$5 :
676         ldc $3 LLP $1 loi $2 CBO $4 LLP $5 sti $6
677 LLP loi ldl CBO LLP sti $4==2*w && $2==$4 && $6==$4 && $1==$5 :
678         ldl $3 LLP $1 loi $2 CBO $4 LLP $5 sti $6
679 LLP loi lde CBO LLP sti $4==2*w && $2==$4 && $6==$4 && $1==$5 :
680         lde $3 LLP $1 loi $2 CBO $4 LLP $5 sti $6
681
682 LLP ldf ldc CBO LLP sdf $4==2*w && $2==$6 && $1==$5 :
683         ldc $3 LLP $1 ldf $2 CBO $4 LLP $5 sdf $6
684 LLP ldf ldl CBO LLP sdf $4==2*w && $2==$6 && $1==$5 :
685         ldl $3 LLP $1 ldf $2 CBO $4 LLP $5 sdf $6
686 LLP ldf lde CBO LLP sdf $4==2*w && $2==$6 && $1==$5 :
687         lde $3 LLP $1 ldf $2 CBO $4 LLP $5 sdf $6
688
689 LLP lof loc CBO LLP stf $4==w && $2==$6 && $1==$5 :
690         loc $3 LLP $1 lof $2 CBO $4 LLP $5 stf $6
691 LLP lof lol CBO LLP stf $4==w && $2==$6 && $1==$5 :
692         lol $3 LLP $1 lof $2 CBO $4 LLP $5 stf $6
693 LLP lof loe CBO LLP stf $4==w && $2==$6 && $1==$5 :
694         loe $3 LLP $1 lof $2 CBO $4 LLP $5 stf $6
695 LLP lof lil CBO LLP stf $4==w && $2==$6 && $1==$5 :
696         lil $3 LLP $1 lof $2 CBO $4 LLP $5 stf $6
697
698 LEP loi ldc CBO LEP sti $4==2*w && $2==$4 && $6==$4 && $1==$5 :
699         ldc $3 LEP $1 loi $2 CBO $4 LEP $5 sti $6
700 LEP loi ldl CBO LEP sti $4==2*w && $2==$4 && $6==$4 && $1==$5 :
701         ldl $3 LEP $1 loi $2 CBO $4 LEP $5 sti $6
702 LEP loi lde CBO LEP sti $4==2*w && $2==$4 && $6==$4 && $1==$5 :
703         lde $3 LEP $1 loi $2 CBO $4 LEP $5 sti $6
704
705 LEP ldf ldc CBO LEP sdf $4==2*w && $2==$6 && $1==$5 :
706         ldc $3 LEP $1 ldf $2 CBO $4 LEP $5 sdf $6
707 LEP ldf ldl CBO LEP sdf $4==2*w && $2==$6 && $1==$5 :
708         ldl $3 LEP $1 ldf $2 CBO $4 LEP $5 sdf $6
709 LEP ldf lde CBO LEP sdf $4==2*w && $2==$6 && $1==$5 :
710         lde $3 LEP $1 ldf $2 CBO $4 LEP $5 sdf $6
711
712 LEP lof loc CBO LEP stf $4==w && $2==$6 && $1==$5 :
713         loc $3 LEP $1 lof $2 CBO $4 LEP $5 stf $6
714 LEP lof lol CBO LEP stf $4==w && $2==$6 && $1==$5 :
715         lol $3 LEP $1 lof $2 CBO $4 LEP $5 stf $6
716 LEP lof loe CBO LEP stf $4==w && $2==$6 && $1==$5 :
717         loe $3 LEP $1 lof $2 CBO $4 LEP $5 stf $6
718 LEP lof lil CBO LEP stf $4==w && $2==$6 && $1==$5 :
719         lil $3 LEP $1 lof $2 CBO $4 LEP $5 stf $6
720
721 ldl loe loc loc cii adi sdl $6==2*w && $1==$7 && $3==w && $4==2*w :
722         loe $2 loc $3 loc $4 cii ldl $1 adi 2*w sdl $1
723 ldl lol loc loc cii adi sdl $6==2*w && $1==$7 && $3==w && $4==2*w :
724         lol $2 loc $3 loc $4 cii ldl $1 adi 2*w sdl $1
725 lde loe loc loc cii adi sde $6==2*w && $1==$7 && $3==w && $4==2*w :
726         loe $2 loc $3 loc $4 cii lde $1 adi 2*w sde $1
727 lde lol loc loc cii adi sde $6==2*w && $1==$7 && $3==w && $4==2*w :
728         lol $2 loc $3 loc $4 cii lde $1 adi 2*w sde $1
729 ldl loe loc loc cii mli sdl $6==2*w && $1==$7 && $3==w && $4==2*w :
730         loe $2 loc $3 loc $4 cii ldl $1 mli 2*w sdl $1
731 ldl lol loc loc cii mli sdl $6==2*w && $1==$7 && $3==w && $4==2*w :
732         lol $2 loc $3 loc $4 cii ldl $1 mli 2*w sdl $1
733 lde loe loc loc cii mli sde $6==2*w && $1==$7 && $3==w && $4==2*w :
734         loe $2 loc $3 loc $4 cii lde $1 mli 2*w sde $1
735 lde lol loc loc cii mli sde $6==2*w && $1==$7 && $3==w && $4==2*w :
736         lol $2 loc $3 loc $4 cii lde $1 mli 2*w sde $1
737 loi asp $1==$2 : asp p
738 lal loi loc loc loc loc ior $2==4*w && $7==4*w && ($3==0)+($4==0)+($5==0)+($6==0)>2 :
739         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
740 loc dup stl loc dup stl $2==w && $5==w:
741         loc $1 stl $3 loc $4 stl $6 loc $1 loc $4
742 LLP LLP adp SLP sti $2==$4 && (!notreg($2) || $5!=p):
743         LLP $1 sti $5 LLP $2 adp $3 SLP $4
744 LEP LEP adp SEP sti $2==$4 && $5!=p:
745         LEP $1 sti $5 LEP $2 adp $3 SEP $4
746 #ifndef INT
747 stl lol notreg($1) && $1==$2 : dup w stl $1
748 ste loe $1==$2 : dup w ste $1
749 sil lil $1==$2 : dup w sil $1
750 sdl ldl notreg($1) && $1==$2 : dup 2*w sdl $1
751 sde lde $1==$2 : dup 2*w sde $1
752
753 lol lol notreg($1) && $1==$2 : lol $1 dup w
754 loe loe $1==$2 : loe $1 dup w
755 lil lil $1==$2 : lil $1 dup w
756 ldl ldl notreg($1) && $1==$2 : ldl $1 dup 2*w
757 lde lde $1==$2 : lde $1 dup 2*w
758 LLP lof LLP lof $1==$3 && $2==$4 : LLP $1 lof $2 dup w
759 LEP lof LEP lof $1==$3 && $2==$4 : LEP $1 lof $2 dup w
760 LEP loi LEP loi $1==$3 && $2==$4 && $2==w : LEP $1 loi $2 dup w
761
762 #endif
763 LLP dup adp SLP sti ! notreg($1) && $1==$4 && $2==p :
764         LLP $1 sti $5 LLP $1 adp $3 SLP $1
765 LLP LLP adp SLP sti ! notreg($1) && $1==$4 && $2==$4 :
766         LLP $1 sti $5 LLP $1 adp $3 SLP $1
767 adp SLP LLP adp $1+$4==0 && $2==$3 : dup p adp $1 SLP $2
768 adp SEP LEP adp $1+$4==0 && $2==$3 : dup p adp $1 SEP $2
769 adp sil lil adp $1+$4==0 && $2==$3 && w==p : dup p adp $1 sil $2
770 adp LLP sti LLP loi adp $1+$6==0 && $2==$4 && $3==p && $5==p :
771         dup p adp $1 LLP $2 sti p
772 adp LEP sti LEP loi adp $1+$6==0 && $2==$4 && $3==p && $5==p :
773         dup p adp $1 LEP $2 sti p
774 /* The next to patterns added on request of Kees Visser */
775 lol asp $2>=w:  asp $2-w
776 ldl asp $2>=2*w:        asp $2-2*w