one last round sketch
combining copy and round
This commit is contained in:
parent
7ac0df0343
commit
7f70f14fc2
1 changed files with 58 additions and 1 deletions
59
mandel.s
59
mandel.s
|
@ -208,7 +208,7 @@ negative:
|
||||||
sta arg + 2 ; 3 cyc
|
sta arg + 2 ; 3 cyc
|
||||||
lda arg + 3 ; 3 cyc
|
lda arg + 3 ; 3 cyc
|
||||||
sbc #0 ; 2 cyc
|
sbc #0 ; 2 cyc
|
||||||
lda arg + 3 ; 3 cyc
|
sta arg + 3 ; 3 cyc
|
||||||
jmp next ; 3 cyc
|
jmp next ; 3 cyc
|
||||||
|
|
||||||
positive:
|
positive:
|
||||||
|
@ -225,6 +225,63 @@ next:
|
||||||
|
|
||||||
.endmacro
|
.endmacro
|
||||||
|
|
||||||
|
.macro round16_addsub_copy arg, dest
|
||||||
|
; Round top 16 bits of 32-bit fixed-point number and copy it
|
||||||
|
.local zero
|
||||||
|
.local one
|
||||||
|
.local positive
|
||||||
|
.local negative
|
||||||
|
.local neg2
|
||||||
|
.local next
|
||||||
|
|
||||||
|
; no round - 17 cycles
|
||||||
|
; round, positive - 31 cycles
|
||||||
|
; round, negative - 31 cycles
|
||||||
|
; average = 17 / 2 + (31 + 31) / 4
|
||||||
|
; = 17 / 2 + 62 / 4
|
||||||
|
; = 24 cycles average
|
||||||
|
;
|
||||||
|
; compare with 13.75 cyc in-place plus three copies at 12 cycles
|
||||||
|
; 13.75 + 36 = 49.75 (41 - 64)
|
||||||
|
; versus three rounds+copies: 72 (51 - 93)
|
||||||
|
|
||||||
|
lda arg + 1 ; 3 cyc
|
||||||
|
bpl zero ; 2 cyc
|
||||||
|
|
||||||
|
one:
|
||||||
|
; check sign bit
|
||||||
|
lda arg + 3 ; 3 cyc
|
||||||
|
bpl positive ; 2 cyc
|
||||||
|
|
||||||
|
negative:
|
||||||
|
sec ; 2 cyc
|
||||||
|
lda arg + 2 ; 3 cyc
|
||||||
|
sbc #1 ; 2 cyc
|
||||||
|
sta dest ; 3 cyc
|
||||||
|
lda arg + 3 ; 3 cyc
|
||||||
|
sbc #0 ; 2 cyc
|
||||||
|
jmp next ; 3 cyc
|
||||||
|
|
||||||
|
positive:
|
||||||
|
clc ; 2 cyc
|
||||||
|
lda arg + 2 ; 3 cyc
|
||||||
|
adc #1 ; 2 cyc
|
||||||
|
sta dest ; 3 cyc
|
||||||
|
lda arg + 3 ; 3 cyc
|
||||||
|
adc #0 ; 2 cyc
|
||||||
|
jmp next ; 3 cyc
|
||||||
|
|
||||||
|
zero:
|
||||||
|
lda arg + 2 ; 3 cyc
|
||||||
|
sta dest ; 3 cyc
|
||||||
|
lda arg + 3 ; 3 cyc
|
||||||
|
|
||||||
|
next:
|
||||||
|
sta dest + 2 ; 3 cyc
|
||||||
|
|
||||||
|
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
.proc iter
|
.proc iter
|
||||||
; (cx and cy should be pre-scaled to 6.26 fixed point)
|
; (cx and cy should be pre-scaled to 6.26 fixed point)
|
||||||
|
|
Loading…
Reference in a new issue