summaryrefslogtreecommitdiff
path: root/src/pdk/peeph.def
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
commit268a53de823a6750d6256ee1fb1e7707b4b45740 (patch)
tree42c1799a9a82b2f7d9790ee9fe181d72a7274751 /src/pdk/peeph.def
downloadsdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'src/pdk/peeph.def')
-rw-r--r--src/pdk/peeph.def56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/pdk/peeph.def b/src/pdk/peeph.def
new file mode 100644
index 0000000..bac385a
--- /dev/null
+++ b/src/pdk/peeph.def
@@ -0,0 +1,56 @@
+// peeph.def - PDK peephole rules
+
+replace restart {
+ mov %1, %2
+} by {
+ ; peephole 0 removed dead load into %1 from %2.
+} if notUsed(%1)
+
+replace restart {
+ mov %1, a
+ mov a, %1
+} by {
+ mov %1, a
+ ; peephole 1 removed redundant load from %1 into a.
+} if notVolatile(%1)
+
+
+replace restart {
+ mov a, #%1
+ ret
+} by {
+ ; peephole 2 moved load to ret.
+ ret #%1
+}
+
+replace restart {
+ xch a, %1
+ xch a, %1
+} by {
+ ; peephole 3 removed redundant double exchange between a and %1.
+} if notVolatile(%1)
+
+replace restart {
+ mov a, #0x00
+ slc a
+ and a, #0x01
+} by {
+ mov a, #0x00
+ slc a
+ ; peephole 4 removed redundant and.
+}
+
+replace restart {
+%1:
+} by {
+ ; peephole j0 removed unused label %1.
+} if labelRefCount(%1 0)
+
+replace restart {
+ ret %1
+ ret
+} by {
+ ret %1
+ ; peephole j1 removed redundant ret after ret k.
+}
+