More peep to pCode parsing.
[fw/sdcc] / src / pic / peeph.def
index 79f176337a06896c21533fdc09b848a8362abadc..3a60c535ca6b49625bf14c8cb5c317efaa921ea4 100644 (file)
-//        ; Peephole 2     removed pop %1 push %1 (not push pop)
-//        mov  %2,%3 
-//}
+//bogus test for pcode
+replace restart {
+       movf    %1,w    ;comment at end
+%4:    movf    %1,w
+       RETURN
+       clrf    INDF
+       movlw   0xa5
+       movf    fsr,w
+       incf    indf,f
+       %2
+} by {
+       ; peep test remove redundant move
+%4:    movf    %1,w    ;another comment
+       %2
+} if AYBABTU %3
+
 
 // peep 1
 replace restart {
-        skpz
-        goto   %1
-       incf   %2,f
-%1:
+       movf    %1,w
+       movwf   %2
+       movf    %2,w
 } by {
-       ;peep 1
-       skpnz
-       incf   %2,f
-%1:
+       ; peep 1 - Removed redundant move
+       movf    %1,w
+       movwf   %2
 }
 
-// like peep1
+// peep 2
 replace restart {
-        skpz
-        goto   %1
-%2:
-       incf   %3,f
-%1:
+       decf    %1,f
+       movf    %1,w
+       btfss   status,z
+       goto    %2
 } by {
-       ;peep 2
-       skpnz
-%2:
-       incf   %3,f
-%1:
+       ; peep 2 - decf/mov/skpz to decfsz
+       decfsz  %1,f
+        goto   %2
 }
 
+// peep 3
 replace restart {
-        skpnz
-        goto   %1
-       incf   %2,f
-%1:
+       movwf   %1
+       movf    %1,w
+       xorlw   %2
 } by {
-       ;peep 3
-       skpz
-       incf   %2,f
-%1:
+       ; peep 3 - redundant move
+       movwf   %1
+       xorlw   %2
 }
 
+// peep 4
 replace restart {
-        skpnz
-        goto   %1
-%2:
-       incf   %3,f
-%1:
+        btfsc  %1,%2
+        goto   %3
+       incf    %4,f
+%3:
 } by {
-       ;peep 4
-       skpz
-%2:
-       incf   %3,f
-%1:
+       ;peep 4 - test/jump to test/skip
+       btfss   %1,%2
+       incf   %4,f
+%3:
 }
 
+
 // peep 5
 replace restart {
-        skpc
-        goto   %1
-       incf   %2,f
-%1:
+        btfss  %1,%2
+        goto   %3
+       incf    %4,f
+%3:
 } by {
-       ;peep 5
-       skpnc
-       incf   %2,f
-%1:
+       ;peep 5 - test/jump to test/skip
+       btfsc   %1,%2
+       incf   %4,f
+%3:
 }
 
 // peep 6
 replace restart {
-        skpnc
-        goto   %1
-       incf   %2,f
-%1:
+        btfss  %1,%2
+        goto   %3
+%4:
+       incf    %5,f
+%3:
 } by {
-       ;peep 6
-       skpc
-       incf   %2,f
-%1:
+       ;peep 6 - test/jump to test/skip
+       btfsc   %1,%2
+%4:
+       incf   %5,f
+%3:
 }
+
+// peep 7
+replace restart {
+        btfsc  %1,%2
+        goto   %3
+%4:
+       incf    %5,f
+%3:
+} by {
+       ;peep 6 - test/jump to test/skip
+       btfss   %1,%2
+%4:
+       incf   %5,f
+%3:
+}
+
+replace restart {
+       movf    %1,w
+       movf    %1,w
+} by {
+       ; peep 8 - Removed redundant move
+       movf    %1,w
+}
+
+replace restart {
+       movwf   %1
+       movf    %1,w
+} by {
+       ; peep 9 - Removed redundant move
+       movwf   %1
+}
+
+replace restart {
+       movlw   %1
+       movwf   %2
+       movlw   %1
+} by {
+       ; peep 10 - Removed redundant move
+       movlw   %1
+       movwf   %2
+}
+
+replace restart {
+       movwf   %1
+       movwf   %1
+} by {
+       ; peep 11 - Removed redundant move
+       movwf   %1
+}
+