progs/max: loop unrolling (102->84)
[calu.git] / progs / sum.s
index c03df084ea3f8ce97ce947940f4c482c3de535c1..6c96a2647f935826804696ea8617416b79c376a8 100644 (file)
@@ -79,11 +79,13 @@ 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
+
        cmpi r1, 1
        addideq r3, r3, 3
        subideq r2, r2, 12
@@ -99,6 +101,7 @@ sum:
        subideq r2, r2, 4
        breq- loop3
 
+go_loop:
        addi r3, r3, 4
 loop:
        subi r3, r3, 4