Fix redeclaration of "end" in the asm.
Multiple "end" labels, in different functions, did not work with the Go
1.4 toolchain.
Fixes #30.
diff --git a/encode_amd64.s b/encode_amd64.s
index a91f4ba..93d99ea 100644
--- a/encode_amd64.s
+++ b/encode_amd64.s
@@ -41,14 +41,14 @@
MOVW BX, 1(DI)
ADDQ $3, DI
ADDQ $3, AX
- JMP end
+ JMP emitLiteralEnd
twoBytes:
MOVB $0xf0, 0(DI)
MOVB BX, 1(DI)
ADDQ $2, DI
ADDQ $2, AX
- JMP end
+ JMP emitLiteralEnd
oneByte:
SHLB $2, BX
@@ -56,7 +56,7 @@
ADDQ $1, DI
ADDQ $1, AX
-end:
+emitLiteralEnd:
MOVQ AX, ret+48(FP)
// copy(dst[i:], lit)
@@ -196,16 +196,16 @@
cmp1:
// In src's tail, compare 1 byte at a time.
CMPQ DI, DX
- JAE end
+ JAE extendMatchEnd
MOVB (SI), AX
MOVB (DI), BX
CMPB AX, BX
- JNE end
+ JNE extendMatchEnd
ADDQ $1, SI
ADDQ $1, DI
JMP cmp1
-end:
+extendMatchEnd:
// Convert from &src[ret] to ret.
SUBQ CX, DI
MOVQ DI, ret+40(FP)
@@ -540,7 +540,7 @@
MOVQ src_len+32(FP), AX
ADDQ DX, AX
CMPQ R10, AX
- JEQ end
+ JEQ encodeBlockEnd
// d += emitLiteral(dst[d:], src[nextEmit:])
//
@@ -561,7 +561,7 @@
// Finish the "d +=" part of "d += emitLiteral(etc)".
ADDQ 48(SP), DI
-end:
+encodeBlockEnd:
MOVQ dst_base+0(FP), AX
SUBQ AX, DI
MOVQ DI, d+48(FP)