Applied z80 i/o port patch from Peter Townson and fixed some operators
[fw/sdcc] / src / z80 / peeph.def
1 replace {
2         ld (hl),(hl)
3 } by {
4         ERROR - peephole - caught (hl),(hl)
5 }
6 replace restart {
7         ld %1,%1
8 } by {
9         ; Removed redundent load
10 }
11 replace restart {
12         xor a,a
13         or a,%1
14         or a,a
15         jp %2,%3
16 } by {
17         xor     a,a
18         or      a,%1
19         jp      %2,%3
20 }
21 replace restart {
22         cp a,#0x00
23         jp nz,%1
24 } by {
25         or      a,a
26         jp      nz,%1
27 }
28 replace restart {
29         jp nz,%1
30         jp      %2
31 %1:
32         jp      %3
33 %2:
34 } by {
35         jp      z,%2
36 %1:
37         jp      %3
38 %2:
39 }
40 replace restart {
41         jp      nz,%1
42         jp      %2
43 %1:
44 } by {
45         jp      z,%2
46 %1:
47 }
48 replace restart {
49         jp      z,%1
50         jp      %2
51 %1:
52 } by {
53         jp      nz,%2
54 %1:
55 }
56 replace restart {
57         or      a,%1
58         or      a,a
59 } by {
60         or      a,%1
61 }
62 replace restart {
63         or      a,%1)
64         or      a,a
65 } by {
66         or      a,%1)
67 }
68 replace restart {
69         xor     a,a
70         or      a,%1
71         jp      nz,%2
72         xor     a,a
73         or      a,%3
74         jp      z,%2
75 } by {
76         xor     a,a
77         or      a,%1
78         jp      nz,%2
79         or      a,%3
80         jp      z,%2
81 }
82 replace restart {
83         jp      nz,%1
84         inc     %3)
85 %1:
86         jp      %2
87 } by {
88         jp      nz,%2
89         inc     %3)
90 %1:
91         jp      %2
92 }
93 replace restart {
94         xor     a,a
95         ld      a,#0x00
96 } by {
97         xor     a,a
98 }
99 replace {
100         ld      e,#0x00
101         ld      d,#0x00
102 } by {
103         ld      de,#0x0000
104 }
105 replace {
106         ld      l,#0x00
107         ld      h,#0x00
108 } by {
109         ld      hl,#0x0000
110 }
111 replace {
112         ld      c,#0x00
113         ld      b,#0x00
114 } by {
115         ld      bc,#0x0000
116 }
117 replace restart {
118         ld      %1,a
119         ld      a,%1
120 } by {
121         ld      %1,a
122 } if notVolatile %1
123 replace restart {
124         jp      %1,%2
125         jr      %3
126 %2:
127         jp      %4
128 } by {
129         jp      %1,%4
130         jr      %3
131 %2:
132         jp      %4
133 }
134 replace {
135         ld      l,e
136         ld      h,d
137         push    hl
138         ld      l,c
139         ld      h,b
140         push    hl
141 } by {
142         push    de
143         push    bc
144 }
145 replace {
146         and     a,#%1
147         or      a,a
148 } by {
149         and     a,#%1
150 }
151 replace {
152         ld      b,l
153         ld      a,b
154         pop     bc
155         ld      b,a
156 } by {
157         ld      a,l
158         pop     bc
159         ld      b,a
160 }
161 replace {
162         ld      d,l
163         ld      a,d
164         pop     de
165         ld      d,a
166 } by {
167         ld      a,l
168         pop     de
169         ld      d,a
170 }
171 replace {
172         ld      a,b
173         push    af
174         inc     sp
175 } by {
176         push    bc
177         inc     sp
178 }
179 replace {
180         ld      a,d
181         push    af
182         inc     sp
183 } by {
184         push    de
185         inc     sp
186 }
187 replace {
188         ld      a,%1
189         sub     a,#%2
190         jp      m,%3
191         ld      a,%1
192         sub     a,#%4
193         jp      p,%5
194 } by {
195         ld      a,%1
196         cp      a,#%2
197         jp      m,%3
198         cp      a,#%4
199         jp      p,%5
200 }
201 replace {
202         ld      e,l
203         ld      d,h
204         ld      l,e
205         ld      h,d
206 } by {
207         ld      e,l
208         ld      d,h
209 }
210 replace {
211         ld      %1,%2
212         ld      %3,%4
213         ld      %2,%1
214         ld      %4,%3
215 } by {
216         ld      %1,%2
217         ld      %3,%4
218 }
219