progs/sum: reducing code size
[calu.git] / progs / sum.s
index 1a433518c982b3ffc220f245704e69cc8191dfe6..c0daa3c6d8bbadb4d0da0fc617f392bb0247e258 100644 (file)
@@ -79,13 +79,14 @@ sum:
        ;r0 = sum
        ;r4 arr data
        ldis r0, 0
-       addi r3, r1, 0
-       retzs- ; check len != 0
 
+       addi r3, r1, 0
        andx r1, 0x3
 
        cmpi r1, 0
-       breq+ go_loop
+       addideq r3, r3, 4
+       ; subideq r2, r2, 0
+       breq+ loop
 
        cmpi r1, 1
        addideq r3, r3, 3
@@ -97,13 +98,11 @@ sum:
        subideq r2, r2, 8
        breq- loop2
 
-       cmpi r1, 3
-       addideq r3, r3, 1
-       subideq r2, r2, 4
-       breq- loop3
+       cmpi r1, 3
+       addi r3, r3, 1
+       subi r2, r2, 4
+       br+ loop3
 
-go_loop:
-       addi r3, r3, 4
 loop:
        subi r3, r3, 4
        retzs-