aboutsummaryrefslogtreecommitdiff
path: root/src/internal/bytealg
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal/bytealg')
-rw-r--r--src/internal/bytealg/compare_amd64.s32
-rw-r--r--src/internal/bytealg/equal_amd64.s51
2 files changed, 0 insertions, 83 deletions
diff --git a/src/internal/bytealg/compare_amd64.s b/src/internal/bytealg/compare_amd64.s
index 8295acb03a..4ccaca5e87 100644
--- a/src/internal/bytealg/compare_amd64.s
+++ b/src/internal/bytealg/compare_amd64.s
@@ -6,7 +6,6 @@
#include "textflag.h"
TEXT ·Compare<ABIInternal>(SB),NOSPLIT,$0-56
-#ifdef GOEXPERIMENT_regabiargs
// AX = a_base (want in SI)
// BX = a_len (want in BX)
// CX = a_cap (unused)
@@ -15,17 +14,9 @@ TEXT ·Compare<ABIInternal>(SB),NOSPLIT,$0-56
// R8 = b_cap (unused)
MOVQ SI, DX
MOVQ AX, SI
-#else
- MOVQ a_base+0(FP), SI
- MOVQ a_len+8(FP), BX
- MOVQ b_base+24(FP), DI
- MOVQ b_len+32(FP), DX
- LEAQ ret+48(FP), R9
-#endif
JMP cmpbody<>(SB)
TEXT runtime·cmpstring<ABIInternal>(SB),NOSPLIT,$0-40
-#ifdef GOEXPERIMENT_regabiargs
// AX = a_base (want in SI)
// BX = a_len (want in BX)
// CX = b_base (want in DI)
@@ -33,13 +24,6 @@ TEXT runtime·cmpstring<ABIInternal>(SB),NOSPLIT,$0-40
MOVQ AX, SI
MOVQ DI, DX
MOVQ CX, DI
-#else
- MOVQ a_base+0(FP), SI
- MOVQ a_len+8(FP), BX
- MOVQ b_base+16(FP), DI
- MOVQ b_len+24(FP), DX
- LEAQ ret+32(FP), R9
-#endif
JMP cmpbody<>(SB)
// input:
@@ -47,12 +31,8 @@ TEXT runtime·cmpstring<ABIInternal>(SB),NOSPLIT,$0-40
// DI = b
// BX = alen
// DX = blen
-#ifndef GOEXPERIMENT_regabiargs
-// R9 = address of output word (stores -1/0/1 here)
-#else
// output:
// AX = output (-1/0/1)
-#endif
TEXT cmpbody<>(SB),NOSPLIT,$0-0
CMPQ SI, DI
JEQ allsame
@@ -100,9 +80,6 @@ diff16:
CMPB CX, (DI)(BX*1)
SETHI AX
LEAQ -1(AX*2), AX // convert 1/0 to +1/-1
-#ifndef GOEXPERIMENT_regabiargs
- MOVQ AX, (R9)
-#endif
RET
// 0 through 16 bytes left, alen>=8, blen>=8
@@ -128,9 +105,6 @@ diff8:
SHRQ CX, AX // move a's bit to bottom
ANDQ $1, AX // mask bit
LEAQ -1(AX*2), AX // 1/0 => +1/-1
-#ifndef GOEXPERIMENT_regabiargs
- MOVQ AX, (R9)
-#endif
RET
// 0-7 bytes in common
@@ -169,9 +143,6 @@ di_finish:
SHRQ CX, SI // move a's bit to bottom
ANDQ $1, SI // mask bit
LEAQ -1(SI*2), AX // 1/0 => +1/-1
-#ifndef GOEXPERIMENT_regabiargs
- MOVQ AX, (R9)
-#endif
RET
allsame:
@@ -181,9 +152,6 @@ allsame:
SETGT AX // 1 if alen > blen
SETEQ CX // 1 if alen == blen
LEAQ -1(CX)(AX*2), AX // 1,0,-1 result
-#ifndef GOEXPERIMENT_regabiargs
- MOVQ AX, (R9)
-#endif
RET
// this works for >= 64 bytes of data.
diff --git a/src/internal/bytealg/equal_amd64.s b/src/internal/bytealg/equal_amd64.s
index 6f12d2a169..dd46e2e0fd 100644
--- a/src/internal/bytealg/equal_amd64.s
+++ b/src/internal/bytealg/equal_amd64.s
@@ -7,7 +7,6 @@
// memequal(a, b unsafe.Pointer, size uintptr) bool
TEXT runtime·memequal<ABIInternal>(SB),NOSPLIT,$0-25
-#ifdef GOEXPERIMENT_regabiargs
// AX = a (want in SI)
// BX = b (want in DI)
// CX = size (want in BX)
@@ -20,22 +19,9 @@ neq:
MOVQ BX, DI
MOVQ CX, BX
JMP memeqbody<>(SB)
-#else
- MOVQ a+0(FP), SI
- MOVQ b+8(FP), DI
- CMPQ SI, DI
- JEQ eq
- MOVQ size+16(FP), BX
- LEAQ ret+24(FP), AX
- JMP memeqbody<>(SB)
-eq:
- MOVB $1, ret+24(FP)
- RET
-#endif
// memequal_varlen(a, b unsafe.Pointer) bool
TEXT runtime·memequal_varlen<ABIInternal>(SB),NOSPLIT,$0-17
-#ifdef GOEXPERIMENT_regabiargs
// AX = a (want in SI)
// BX = b (want in DI)
// 8(DX) = size (want in BX)
@@ -48,29 +34,13 @@ neq:
MOVQ BX, DI
MOVQ 8(DX), BX // compiler stores size at offset 8 in the closure
JMP memeqbody<>(SB)
-#else
- MOVQ a+0(FP), SI
- MOVQ b+8(FP), DI
- CMPQ SI, DI
- JEQ eq
- MOVQ 8(DX), BX // compiler stores size at offset 8 in the closure
- LEAQ ret+16(FP), AX
- JMP memeqbody<>(SB)
-eq:
- MOVB $1, ret+16(FP)
- RET
-#endif
// Input:
// a in SI
// b in DI
// count in BX
-#ifndef GOEXPERIMENT_regabiargs
-// address of result byte in AX
-#else
// Output:
// result in AX
-#endif
TEXT memeqbody<>(SB),NOSPLIT,$0-0
CMPQ BX, $8
JB small
@@ -104,11 +74,7 @@ hugeloop:
SUBQ $64, BX
CMPL DX, $0xffff
JEQ hugeloop
-#ifdef GOEXPERIMENT_regabiargs
XORQ AX, AX // return 0
-#else
- MOVB $0, (AX)
-#endif
RET
// 64 bytes at a time using ymm registers
@@ -129,11 +95,7 @@ hugeloop_avx2:
CMPL DX, $0xffffffff
JEQ hugeloop_avx2
VZEROUPPER
-#ifdef GOEXPERIMENT_regabiargs
XORQ AX, AX // return 0
-#else
- MOVB $0, (AX)
-#endif
RET
bigloop_avx2:
@@ -150,11 +112,7 @@ bigloop:
SUBQ $8, BX
CMPQ CX, DX
JEQ bigloop
-#ifdef GOEXPERIMENT_regabiargs
XORQ AX, AX // return 0
-#else
- MOVB $0, (AX)
-#endif
RET
// remaining 0-8 bytes
@@ -162,11 +120,7 @@ leftover:
MOVQ -8(SI)(BX*1), CX
MOVQ -8(DI)(BX*1), DX
CMPQ CX, DX
-#ifdef GOEXPERIMENT_regabiargs
SETEQ AX
-#else
- SETEQ (AX)
-#endif
RET
small:
@@ -201,10 +155,5 @@ di_finish:
SUBQ SI, DI
SHLQ CX, DI
equal:
-#ifdef GOEXPERIMENT_regabiargs
SETEQ AX
-#else
- SETEQ (AX)
-#endif
RET
-