* src/z80/peeph-z80.def: removed some peephole rules that don't
[fw/sdcc] / src / z80 / peeph-z80.def
1 replace restart {
2         ld      a,%1(%2)
3         bit     %3,a
4         jp      %4,%5
5 } by {
6         bit     %3,%1(%2)
7         jp      %4,%5
8 }
9 replace {
10         ld      %1,%2
11         ld      a,%2
12 } by {
13         ld      %1,%2
14         ld      a,%1
15 }
16 replace {
17         ld      %1,a
18         xor     a,a
19         or      a,%1
20         jp      z,%2
21 } by {
22         ld      %1,a
23         or      a,a
24         jp      z,%2
25 }
26 replace {
27         rlca
28         ld      a,#0x00
29         rla
30 } by {
31         rlca
32         and     a,#0x01
33 }
34 replace {
35         ld      %3,a
36         ld      l,%1
37         ld      h,%2
38         ld      l,(hl)
39         ld      a,%3
40 } by {
41         ld      %3,a
42         ld      l,%1
43         ld      h,%2
44         ld      l,(hl)
45 } if notVolatile %3
46
47 ;
48 ;--------------------------
49 ;
50 replace restart {
51         pop     %1
52         push    %1
53         ld      %1,%2
54 } by {
55         ;       z80 removed redundant pop/push
56         ld      %1,%2
57 }
58
59 replace restart {
60         ld      l,a
61         ld      c,%1
62         ld      a,l
63 } by {
64         ld      l,a
65         ld      c,%1
66 }
67
68 replace restart {
69         ld      c,l
70         ld      a,c
71         and     a,#%1
72         ld      c,a
73         or      a,a
74 } by {
75         ;       z80 stream lining 'and' logic
76         ld      a,#%1
77         and     a,l
78         ld      c,a
79 }
80
81 replace restart {
82         ld      a,c
83         and     a,#%1
84         ld      c,a
85         or      a,a
86 } by {
87         ;       z80 stream lining 'and' logic
88         ld      a,#%1
89         and     a,c
90         ld      c,a
91 }
92
93 replace restart {
94         ld      a,c
95         or      a,#%1
96         ld      c,a
97 } by {
98         ;       z80 stream lining 'or' logic
99         ld      a,#%1
100         or      a,c
101         ld      c,a
102 }
103
104
105 replace {
106 %1:
107         in0     a,(%2)
108         and     a,#%3
109         jp      z,%4
110 %5:
111         jp      %6
112 %4:
113         call    %7
114         jp      %1
115 %6:
116         ret
117 } by {
118 %1:
119         in0     a,(%2)
120         and     a,#%3
121         jp      nz,%5
122 %4:
123         call    %7
124         jp      %1
125 %5:
126 %6:
127         ret
128 }
129
130