aboutsummaryrefslogtreecommitdiff
path: root/driver.s
diff options
context:
space:
mode:
authorCamil Staps2023-03-05 19:48:04 +0100
committerCamil Staps2023-03-05 19:48:04 +0100
commit7fe99f641f44d297e70ef9269081e59e9a25b4a6 (patch)
tree2cfe558231ed5223bcc76902c871978b6e1b99e6 /driver.s
parentImplement ap (diff)
Minor performance improvements in eval
Diffstat (limited to 'driver.s')
-rw-r--r--driver.s16
1 files changed, 7 insertions, 9 deletions
diff --git a/driver.s b/driver.s
index bd9d901..62e1914 100644
--- a/driver.s
+++ b/driver.s
@@ -169,15 +169,14 @@ eval_arg_loop:
addi $t3,$t3,4
eval_arg_strict:
lw $t4,($t3)
- lw $t4,($t4)
- sltu $t4,$t4,$s7
- bne $t4,$0,eval_arg
+ lw $t5,($t4)
+ sltu $t5,$t5,$s7 # check if argument is already in hnf
+ bne $t5,$0,eval_arg
addi $t1,$t1,-1
j eval_arg_loop
addi $t3,$t3,4
eval_arg:
- lw $t4,($t3) # reverse pointers
- addi $s2,$s2,1
+ addi $s2,$s2,1 # reverse pointers
sw $s2,($t3)
addi $s2,$s3,0
addi $s3,$t4,0
@@ -191,15 +190,14 @@ eval_rewind:
la $t4,EVALROOT
beq $s2,$t4,eval_rewind_root
addi $t0,$s2,0
- addi $t1,$s2,0
+ addi $t1,$s2,4
eval_rewind_loop:
- addi $t1,$t1,4
lw $t2,($t1)
andi $t3,$t2,1
beq $t3,$0,eval_rewind_loop
- nop
+ addi $t1,$t1,4
xori $s2,$t2,1
- sw $s3,($t1)
+ sw $s3,-4($t1)
addi $s3,$t0,0
j eval
nop