* src/diff.1 (Index): Many, many optmisiations. Dhrystone up to 201.
[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 restart {
112         ld      %1,a
113         ld      a,%1
114 } by {
115         ld      %1,a
116 }
117 replace restart {
118         jp      %1,%2
119         jr      %3
120 %2:
121         jp      %4
122 } by {
123         jp      %1,%4
124         jr      %3
125 %2:
126         jp      %4
127 }
128 replace {
129         ld      l,e
130         ld      h,d
131         push    hl
132         ld      l,c
133         ld      h,b
134         push    hl
135 } by {
136         push    de
137         push    bc
138 }
139 replace {
140         and     a,#%1
141         or      a,a
142 } by {
143         and     a,#%1
144 }
145 replace {
146         ld      b,l
147         ld      a,b
148         pop     bc
149         ld      b,a
150 } by {
151         ld      a,l
152         pop     bc
153         ld      b,a
154 }
155 replace {
156         ld      d,l
157         ld      a,d
158         pop     de
159         ld      d,a
160 } by {
161         ld      a,l
162         pop     de
163         ld      d,a
164 }
165 replace {
166         ld      a,b
167         push    af
168         inc     sp
169 } by {
170         push    bc
171         inc     sp
172 }
173 replace {
174         ld      a,d
175         push    af
176         inc     sp
177 } by {
178         push    de
179         inc     sp
180 }
181 replace {
182         ld      a,%1
183         sub     a,#%2
184         jp      m,%3
185         ld      a,%1
186         sub     a,#%4
187         jp      p,%5
188 } by {
189         ld      a,%1
190         cp      a,#%2
191         jp      m,%3
192         cp      a,#%4
193         jp      p,%5
194 }
195 replace {
196         ld      e,l
197         ld      d,h
198         ld      l,e
199         ld      h,d
200 } by {
201         ld      e,l
202         ld      d,h
203 }