git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4387 4a8a32a2...
[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 } by {
21         ld      %1,a
22         or      a,a
23 }
24 replace {
25         rlca
26         ld      a,#0x00
27         rla
28 } by {
29         rlca
30         and     a,#0x01
31 }
32 replace {
33         ld      %3,a
34         ld      l,%1
35         ld      h,%2
36         ld      l,(hl)
37         ld      a,%3
38 } by {
39         ld      %3,a
40         ld      l,%1
41         ld      h,%2
42         ld      l,(hl)
43 } if notVolatile %3
44
45 ;
46 ;--------------------------
47 ;
48 replace restart {
49         pop     %1
50         push    %1
51         ld      %1,%2
52 } by {
53         ;       z80 removed redundant pop/push
54         ld      %1,%2
55 }
56
57 replace restart {
58         ld      l,a
59         ld      c,%1
60         ld      a,l
61 } by {
62         ld      l,a
63         ld      c,%1
64 }
65
66 replace restart {
67         ld      c,l
68         ld      a,c
69         and     a,#%1
70         ld      c,a
71         or      a,a
72 } by {
73         ;       z80 stream lining 'and' logic
74         ld      a,#%1
75         and     a,l
76         ld      c,a
77 }
78
79 replace restart {
80         ld      a,c
81         and     a,#%1
82         ld      c,a
83         or      a,a
84 } by {
85         ;       z80 stream lining 'and' logic
86         ld      a,#%1
87         and     a,c
88         ld      c,a
89 }
90
91 replace restart {
92         ld      a,c
93         or      a,#%1
94         ld      c,a
95 } by {
96         ;       z80 stream lining 'or' logic
97         ld      a,#%1
98         or      a,c
99         ld      c,a
100 }
101
102
103 replace {
104 %1:
105         in0     a,(%2)
106         and     a,#%3
107         jp      Z,%4
108 %5:
109         jp      %6
110 %4:
111         call    %7
112         jp      %1
113 %6:
114         ret
115 } by {
116 %1:
117         in0     a,(%2)
118         and     a,#%3
119         jp      NZ,%5
120 %4:
121         call    %7
122         jp      %1
123 %5:
124 %6:
125         ret
126 }