diff options
author | Keith Randall <khr@google.com> | 2018-03-01 16:38:41 -0800 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2018-03-02 22:46:15 +0000 |
commit | 403ab0f2214f583db84a2dae275389be92072a35 (patch) | |
tree | 9ff2fc82235a27acd95595f2152f03eec83fa71e /src/runtime/asm_mipsx.s | |
parent | dcedcaa5fb15748cc2e5cb9461fc6b4f4fc942cb (diff) | |
download | go-403ab0f2214f583db84a2dae275389be92072a35.tar.gz go-403ab0f2214f583db84a2dae275389be92072a35.zip |
internal/bytealg: move IndexByte asssembly to the new bytealg package
Move the IndexByte function from the runtime to a new bytealg package.
The new package will eventually hold all the optimized assembly for
groveling through byte slices and strings. It seems a better home for
this code than randomly keeping it in runtime.
Once this is in, the next step is to move the other functions
(Compare, Equal, ...).
Update #19792
This change seems complicated enough that we might just declare
"not worth it" and abandon. Opinions welcome.
The core assembly is all unchanged, except minor modifications where
the code reads cpu feature bits.
The wrapper functions have been cleaned up as they are now actually
checked by vet.
Change-Id: I9fa75bee5d85db3a65b3fd3b7997e60367523796
Reviewed-on: https://go-review.googlesource.com/98016
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/runtime/asm_mipsx.s')
-rw-r--r-- | src/runtime/asm_mipsx.s | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/src/runtime/asm_mipsx.s b/src/runtime/asm_mipsx.s index 47367f1703..ba80361a80 100644 --- a/src/runtime/asm_mipsx.s +++ b/src/runtime/asm_mipsx.s @@ -712,50 +712,6 @@ equal: MOVB R1, ret+24(FP) RET -TEXT bytes·IndexByte(SB),NOSPLIT,$0-20 - MOVW s+0(FP), R1 - MOVW s_len+4(FP), R2 - MOVBU c+12(FP), R3 // byte to find - ADDU $1, R1, R4 // store base+1 for later - ADDU R1, R2 // end - -loop: - BEQ R1, R2, notfound - MOVBU (R1), R5 - ADDU $1, R1 - BNE R3, R5, loop - - SUBU R4, R1 // R1 will be one beyond the position we want so remove (base+1) - MOVW R1, ret+16(FP) - RET - -notfound: - MOVW $-1, R1 - MOVW R1, ret+16(FP) - RET - -TEXT strings·IndexByte(SB),NOSPLIT,$0-16 - MOVW s_base+0(FP), R1 - MOVW s_len+4(FP), R2 - MOVBU c+8(FP), R3 // byte to find - ADDU $1, R1, R4 // store base+1 for later - ADDU R1, R2 // end - -loop: - BEQ R1, R2, notfound - MOVBU (R1), R5 - ADDU $1, R1 - BNE R3, R5, loop - - SUBU R4, R1 // remove (base+1) - MOVW R1, ret+12(FP) - RET - -notfound: - MOVW $-1, R1 - MOVW R1, ret+12(FP) - RET - TEXT runtime·cmpstring(SB),NOSPLIT,$0-20 MOVW s1_base+0(FP), R3 MOVW s1_len+4(FP), R1 |