diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-05-09 11:40:54 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-05-09 11:40:54 +0200 |
commit | 57e07865953412c7cf8ae579d7a748c1540d629e (patch) | |
tree | 7cba031d13c7852d853c012676ea0e2fdbef75d0 | |
parent | 9d790238f28647de47d7dadebe48a1f567729dc2 (diff) | |
download | plan9front-57e07865953412c7cf8ae579d7a748c1540d629e.tar.xz |
libc: use MOVP instruction for arm64 memmove() and memset()
-rw-r--r-- | sys/src/ape/lib/ap/arm64/memmove.s | 20 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/arm64/memset.s | 8 | ||||
-rw-r--r-- | sys/src/libc/arm64/memmove.s | 20 | ||||
-rw-r--r-- | sys/src/libc/arm64/memset.s | 8 |
4 files changed, 28 insertions, 28 deletions
diff --git a/sys/src/ape/lib/ap/arm64/memmove.s b/sys/src/ape/lib/ap/arm64/memmove.s index 712ddfd1f..0def257e9 100644 --- a/sys/src/ape/lib/ap/arm64/memmove.s +++ b/sys/src/ape/lib/ap/arm64/memmove.s @@ -9,15 +9,15 @@ TEXT memmove(SB), $-4 _forward: ADD R0, R2, R3 - BIC $7, R2, R4 + BIC $15, R2, R4 CBZ R4, _floop1 ADD R0, R4, R4 -_floop8: - MOV (R1)8!, R5 - MOV R5, (R0)8! +_floop16: + MOVP (R1)16!, R5, R6 + MOVP R5, R6, (R0)16! CMP R4, R0 - BNE _floop8 + BNE _floop16 _floop1: CMP R3, R0 @@ -32,15 +32,15 @@ _done: _backward: ADD R2, R1, R1 ADD R2, R0, R3 - BIC $7, R2, R4 + BIC $15, R2, R4 CBZ R4, _bloop1 SUB R4, R3, R4 -_bloop8: - MOV -8(R1)!, R5 - MOV R5, -8(R3)! +_bloop16: + MOVP -16(R1)!, R5, R6 + MOVP R5, R6, -16(R3)! CMP R4, R3 - BNE _bloop8 + BNE _bloop16 _bloop1: CMP R0, R3 diff --git a/sys/src/ape/lib/ap/arm64/memset.s b/sys/src/ape/lib/ap/arm64/memset.s index ba478614a..0a7e1761f 100644 --- a/sys/src/ape/lib/ap/arm64/memset.s +++ b/sys/src/ape/lib/ap/arm64/memset.s @@ -3,7 +3,7 @@ TEXT memset(SB), $-4 MOVWU n+16(FP), R2 ADD R0, R2, R3 - BIC $7, R2, R4 + BIC $15, R2, R4 CBZ R4, _loop1 ADD R0, R4, R4 @@ -11,10 +11,10 @@ TEXT memset(SB), $-4 ORR R1<<16, R1 ORR R1<<32, R1 -_loop8: - MOV R1, (R0)8! +_loop16: + MOVP R1, R1, (R0)16! CMP R4, R0 - BNE _loop8 + BNE _loop16 _loop1: CMP R3, R0 diff --git a/sys/src/libc/arm64/memmove.s b/sys/src/libc/arm64/memmove.s index 712ddfd1f..0def257e9 100644 --- a/sys/src/libc/arm64/memmove.s +++ b/sys/src/libc/arm64/memmove.s @@ -9,15 +9,15 @@ TEXT memmove(SB), $-4 _forward: ADD R0, R2, R3 - BIC $7, R2, R4 + BIC $15, R2, R4 CBZ R4, _floop1 ADD R0, R4, R4 -_floop8: - MOV (R1)8!, R5 - MOV R5, (R0)8! +_floop16: + MOVP (R1)16!, R5, R6 + MOVP R5, R6, (R0)16! CMP R4, R0 - BNE _floop8 + BNE _floop16 _floop1: CMP R3, R0 @@ -32,15 +32,15 @@ _done: _backward: ADD R2, R1, R1 ADD R2, R0, R3 - BIC $7, R2, R4 + BIC $15, R2, R4 CBZ R4, _bloop1 SUB R4, R3, R4 -_bloop8: - MOV -8(R1)!, R5 - MOV R5, -8(R3)! +_bloop16: + MOVP -16(R1)!, R5, R6 + MOVP R5, R6, -16(R3)! CMP R4, R3 - BNE _bloop8 + BNE _bloop16 _bloop1: CMP R0, R3 diff --git a/sys/src/libc/arm64/memset.s b/sys/src/libc/arm64/memset.s index ba478614a..0a7e1761f 100644 --- a/sys/src/libc/arm64/memset.s +++ b/sys/src/libc/arm64/memset.s @@ -3,7 +3,7 @@ TEXT memset(SB), $-4 MOVWU n+16(FP), R2 ADD R0, R2, R3 - BIC $7, R2, R4 + BIC $15, R2, R4 CBZ R4, _loop1 ADD R0, R4, R4 @@ -11,10 +11,10 @@ TEXT memset(SB), $-4 ORR R1<<16, R1 ORR R1<<32, R1 -_loop8: - MOV R1, (R0)8! +_loop16: + MOVP R1, R1, (R0)16! CMP R4, R0 - BNE _loop8 + BNE _loop16 _loop1: CMP R3, R0 |