Don't keep primes in registers if we don't reuse them
diff --git a/xxhash_amd64.s b/xxhash_amd64.s
index fd3e50f..c49483d 100644
--- a/xxhash_amd64.s
+++ b/xxhash_amd64.s
@@ -10,8 +10,8 @@
 // DX	n
 // BX	loop end
 // R8	v1, k1
-// R9	v2, prime3
-// R10	v3, prime5
+// R9	v2
+// R10	v3
 // R11	v4
 // R12	tmp
 // R13	prime1
@@ -28,6 +28,8 @@
 	ROLQ  $31, r    \
 	IMULQ R13, r
 
+// mergeRound applies a merge round on the two registers acc and val.
+// It assumes that R13 has prime1, R14 has prime2, and R15 has prime4.
 #define mergeRound(acc, val) \
 	IMULQ R14, val \
 	ROLQ  $31, val \
@@ -98,9 +100,6 @@
 afterBlocks:
 	ADDQ DX, AX
 
-	MOVQ ·prime3(SB), R9
-	MOVQ ·prime5(SB), R10
-
 	// Right now BX has len(b)-32, and we want to loop until CX > len(b)-8.
 	ADDQ $24, BX
 
@@ -135,7 +134,7 @@
 
 	ROLQ  $23, AX
 	IMULQ R14, AX
-	ADDQ  R9, AX
+	ADDQ  ·prime3(SB), AX
 
 singles:
 	ADDQ $4, BX
@@ -145,7 +144,7 @@
 singlesLoop:
 	MOVBQZX (CX), R12
 	ADDQ    $1, CX
-	IMULQ   R10, R12
+	IMULQ   ·prime5(SB), R12
 	XORQ    R12, AX
 
 	ROLQ  $11, AX
@@ -162,7 +161,7 @@
 	MOVQ  AX, R12
 	SHRQ  $29, R12
 	XORQ  R12, AX
-	IMULQ R9, AX
+	IMULQ ·prime3(SB), AX
 	MOVQ  AX, R12
 	SHRQ  $32, R12
 	XORQ  R12, AX
@@ -175,7 +174,7 @@
 
 // func writeBlocks(x *xxh, b []byte) []byte
 TEXT ·writeBlocks(SB), NOSPLIT, $0-56
-	// Load fixed primes.
+	// Load fixed primes needed for round.
 	MOVQ ·prime1(SB), R13
 	MOVQ ·prime2(SB), R14