aboutsummaryrefslogtreecommitdiff
path: root/src/internal/bytealg/indexbyte_riscv64.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal/bytealg/indexbyte_riscv64.s')
-rw-r--r--src/internal/bytealg/indexbyte_riscv64.s79
1 files changed, 49 insertions, 30 deletions
diff --git a/src/internal/bytealg/indexbyte_riscv64.s b/src/internal/bytealg/indexbyte_riscv64.s
index 156c303699..e9d3e6be39 100644
--- a/src/internal/bytealg/indexbyte_riscv64.s
+++ b/src/internal/bytealg/indexbyte_riscv64.s
@@ -5,48 +5,67 @@
#include "go_asm.h"
#include "textflag.h"
-TEXT ·IndexByte(SB),NOSPLIT,$0-40
- MOV b_base+0(FP), A1
- MOV b_len+8(FP), A2
- MOVBU c+24(FP), A3 // byte to find
- MOV A1, A4 // store base for later
- ADD A1, A2 // end
- ADD $-1, A1
+TEXT ·IndexByte<ABIInternal>(SB),NOSPLIT,$0-40
+#ifndef GOEXPERIMENT_regabiargs
+ MOV b_base+0(FP), X10
+ MOV b_len+8(FP), X11
+ MOVBU c+24(FP), X13 // byte to find
+#endif
+ // X10 = b_base
+ // X11 = b_len
+ // X12 = b_cap (unused)
+ // X13 = byte to find
+ MOV X10, X12 // store base for later
+ ADD X10, X11 // end
+ ADD $-1, X10
loop:
- ADD $1, A1
- BEQ A1, A2, notfound
- MOVBU (A1), A5
- BNE A3, A5, loop
+ ADD $1, X10
+ BEQ X10, X11, notfound
+ MOVBU (X10), X14
+ BNE X13, X14, loop
- SUB A4, A1 // remove base
- MOV A1, ret+32(FP)
+ SUB X12, X10 // remove base
+#ifndef GOEXPERIMENT_regabiargs
+ MOV X10, ret+32(FP)
+#endif
RET
notfound:
- MOV $-1, A1
- MOV A1, ret+32(FP)
+ MOV $-1, X10
+#ifndef GOEXPERIMENT_regabiargs
+ MOV X10, ret+32(FP)
+#endif
RET
-TEXT ·IndexByteString(SB),NOSPLIT,$0-32
- MOV s_base+0(FP), A1
- MOV s_len+8(FP), A2
- MOVBU c+16(FP), A3 // byte to find
- MOV A1, A4 // store base for later
- ADD A1, A2 // end
- ADD $-1, A1
+TEXT ·IndexByteString<ABIInternal>(SB),NOSPLIT,$0-32
+#ifndef GOEXPERIMENT_regabiargs
+ MOV s_base+0(FP), X10
+ MOV s_len+8(FP), X11
+ MOVBU c+16(FP), X12 // byte to find
+#endif
+ // X10 = b_base
+ // X11 = b_len
+ // X12 = byte to find
+ MOV X10, X13 // store base for later
+ ADD X10, X11 // end
+ ADD $-1, X10
loop:
- ADD $1, A1
- BEQ A1, A2, notfound
- MOVBU (A1), A5
- BNE A3, A5, loop
+ ADD $1, X10
+ BEQ X10, X11, notfound
+ MOVBU (X10), X14
+ BNE X12, X14, loop
- SUB A4, A1 // remove base
- MOV A1, ret+24(FP)
+ SUB X13, X10 // remove base
+#ifndef GOEXPERIMENT_regabiargs
+ MOV X10, ret+24(FP)
+#endif
RET
notfound:
- MOV $-1, A1
- MOV A1, ret+24(FP)
+ MOV $-1, X10
+#ifndef GOEXPERIMENT_regabiargs
+ MOV X10, ret+24(FP)
+#endif
RET