Imported Upstream version 2.9.0
[debian/cc1111] / src / hc08 / peeph.def
1 replace {
2         pula
3         psha
4         lda     %1
5 } by {
6         ; Peephole 1a   - removed redundant pula/psha
7         lda     %1
8 }
9
10 replace {
11         pula
12         psha
13         lda     %1,s
14 } by {
15         ; Peephole 1b   - removed redundant pula/psha
16         lda     %1,s
17 }
18
19 replace {
20         pula
21         psha
22         clra
23 } by {
24         ; Peephole 1c   - removed redundant pula/psha
25         clra
26 }
27
28
29 replace {
30         bcs     %1
31         jmp     %5
32 %1:
33 } by {
34         ; Peephole 2a   - eliminated jmp
35         bcc     %5
36 %1:
37 } if labelInRange
38
39 replace {
40         bcc     %1
41         jmp     %5
42 %1:
43 } by {
44         ; Peephole 2b   - eliminated jmp
45         bcs     %5
46 %1:
47 } if labelInRange
48
49 replace {
50         beq     %1
51         jmp     %5
52 %1:
53 } by {
54         ; Peephole 2c   - eliminated jmp
55         bne     %5
56 %1:
57 } if labelInRange
58
59 replace {
60         bne     %1
61         jmp     %5
62 %1:
63 } by {
64         ; Peephole 2d   - eliminated jmp
65         beq     %5
66 %1:
67 } if labelInRange
68
69 replace {
70         brclr   %3,%2,%1
71         jmp     %5
72 %1:
73 } by {
74         ; Peephole 2e   - eliminated jmp
75         brset   %3,%2,%5
76 %1:
77 } if labelInRange
78
79 replace {
80         brset   %3,%2,%1
81         jmp     %5
82 %1:
83 } by {
84         ; Peephole 2f   - eliminated jmp
85         brclr   %3,%2,%5
86 %1:
87 } if labelInRange
88
89 replace {
90         bls     %1
91         jmp     %5
92 %1:
93 } by {
94         ; Peephole 2g   - eliminated bra
95         bhi     %5
96 %1:
97 } if labelInRange
98
99 replace {
100         bhi     %1
101         jmp     %5
102 %1:
103 } by {
104         ; Peephole 2h   - eliminated bra
105         bls     %5
106 %1:
107 } if labelInRange
108
109 replace {
110         ble     %1
111         jmp     %5
112 %1:
113 } by {
114         ; Peephole 2i   - eliminated bra
115         bgt     %5
116 %1:
117
118 } if labelInRange
119 replace {
120         bgt     %1
121         jmp     %5
122 %1:
123 } by {
124         ; Peephole 2j   - eliminated bra
125         ble     %5
126 %1:
127 } if labelInRange
128
129 replace {
130         bge     %1
131         jmp     %5
132 %1:
133 } by {
134         ; Peephole 2k   - eliminated bra
135         blt     %5
136 %1:
137 } if labelInRange
138
139 replace {
140         blt     %1
141         jmp     %5
142 %1:
143 } by {
144         ; Peephole 2l   - eliminated bra
145         bge     %5
146 %1:
147 } if labelInRange
148
149 replace {
150         jmp     %5
151 } by {
152         ; Peephole 3    - shortened jmp to bra
153         bra     %5
154 } if labelInRange
155
156 replace {
157         lda     %1
158         tsta
159 } by {
160         ; Peephole 4a   - eliminated redundant tsta
161         lda     %1
162 }
163
164 replace {
165         lda     %1,s
166         tsta
167 } by {
168         ; Peephole 4b   - eliminated redundant tsta
169         lda     %1,s
170 }
171
172 replace {
173         ldx     %1
174         tstx
175 } by {
176         ; Peephole 4c   - eliminated redundant tstx
177         ldx     %1
178 }
179
180 replace {
181         ldx     %1,s
182         tstx
183 } by {
184         ; Peephole 4d   - eliminated redundant tstx
185         ldx     %1,s
186 }
187
188 replace {
189         clra
190         sta     %1
191         clra
192         sta     %2
193         clra
194         sta     %3
195         clra
196         sta     %4
197 } by {
198         ; Peephole 5a   - eliminated redundant clra
199         clra
200         sta     %1
201         sta     %2
202         sta     %3
203         sta     %4
204 }
205
206 replace {
207         clra
208         sta     %1
209         clra
210         sta     %2
211         clra
212         sta     %3
213 } by {
214         ; Peephole 5b   - eliminated redundant clra
215         clra
216         sta     %1
217         sta     %2
218         sta     %3
219 }
220
221 replace {
222         clra
223         sta     %1
224         clra
225         sta     %2
226 } by {
227         ; Peephole 5c   - eliminated redundant clra
228         clra
229         sta     %1
230         sta     %2
231 }
232
233 replace {
234         lda     #%9
235         sta     %1
236         lda     #%9
237         sta     %2
238         lda     #%9
239         sta     %3
240         lda     #%9
241         sta     %4
242 } by {
243         ; Peephole 5d   - eliminated redundant lda
244         lda     #%9
245         sta     %1
246         sta     %2
247         sta     %3
248         sta     %4
249 }
250
251 replace {
252         lda     #%9
253         sta     %1
254         lda     #%9
255         sta     %2
256         lda     #%9
257         sta     %3
258 } by {
259         ; Peephole 5e   - eliminated redundant lda
260         lda     #%9
261         sta     %1
262         sta     %2
263         sta     %3
264 }
265
266 replace {
267         lda     #%9
268         sta     %1
269         lda     #%9
270         sta     %2
271 } by {
272         ; Peephole 5f   - eliminated redundant lda
273         lda     #%9
274         sta     %1
275         sta     %2
276 }
277
278 replace {
279         jmp     %5
280 } by {
281         ; Peephole 6a  - replaced jmp to rts with rts
282         rts
283 } if labelIsReturnOnly
284
285 replace {
286         bra     %5
287 } by {
288         ; Peephole 6b  - replaced jmp to rts with rts
289         rts
290 } if labelIsReturnOnly
291
292 replace restart {
293         psha
294         lda     %1
295         sta     1,s
296 } by {
297         ; Peephole 7  - optimized stack allocation
298         lda     %1
299         psha
300 }
301
302 replace restart {
303         lda     %1
304         sta     %1
305 } by {
306         ; Peephole 8a  - removed redundant sta
307         lda     %1
308 } if notVolatile %1
309
310 replace restart {
311         sta     %1
312         lda     %1
313 } by {
314         ; Peephole 8b  - removed redundant lda
315         sta     %1
316 } if notVolatile %1