]> git.lizzy.rs Git - plan9front.git/commitdiff
libc: use MOVP instruction for arm64 memmove() and memset()
authorcinap_lenrek <cinap_lenrek@felloff.net>
Thu, 9 May 2019 09:40:54 +0000 (11:40 +0200)
committercinap_lenrek <cinap_lenrek@felloff.net>
Thu, 9 May 2019 09:40:54 +0000 (11:40 +0200)
sys/src/ape/lib/ap/arm64/memmove.s
sys/src/ape/lib/ap/arm64/memset.s
sys/src/libc/arm64/memmove.s
sys/src/libc/arm64/memset.s

index 712ddfd1f9b2277de57de0f7f9a418f7baedd1d2..0def257e940884ed575343a318ceb7f850b555b2 100644 (file)
@@ -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
index ba478614a29a0b956bede8a76d076efd356b16ce..0a7e1761f85fc244d7f122595f47d4137a23a952 100644 (file)
@@ -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
index 712ddfd1f9b2277de57de0f7f9a418f7baedd1d2..0def257e940884ed575343a318ceb7f850b555b2 100644 (file)
@@ -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
index ba478614a29a0b956bede8a76d076efd356b16ce..0a7e1761f85fc244d7f122595f47d4137a23a952 100644 (file)
@@ -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