runtime: use 64 bits of hash seed on arm64

This is the same issue as #33960, but on gofrontend.

Change-Id: I949c2283cd2c26acece6b2ce79f3a5a26bddfd4a
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/220297
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/libgo/runtime/aeshash.c b/libgo/runtime/aeshash.c
index 00658d7..93f28fd 100644
--- a/libgo/runtime/aeshash.c
+++ b/libgo/runtime/aeshash.c
@@ -596,7 +596,7 @@
 
 uintptr aeshashbody(void* p, uintptr seed, uintptr size, Slice aeskeysched) {
 	uint8x16_t *pseed;
-	uint32x4_t vinit32;
+	uint64x2_t vinit64;
 	uint8x16_t vinit;
 	uint8x16_t vseed, vseed2, vseed3, vseed4;
 	uint8x16_t vseed5, vseed6, vseed7, vseed8;
@@ -610,10 +610,10 @@
 	pseed = (uint8x16_t*)(aeskeysched.__values);
 
 	// Combined hash seed and length.
-	vinit32 = vdupq_n_u32(0);
-	vinit32[0] = (uint32)seed;
-	vinit32[1] = (uint32)size;
-	vinit = vreinterpretq_u8_u32(vinit32);
+	vinit64 = vdupq_n_u64(0);
+	vinit64[0] = (uint64)seed;
+	vinit64[1] = (uint64)size;
+	vinit = vreinterpretq_u8_u64(vinit64);
 
 	// Mix in per-process seed.
 	vseed = vaeseq_u8(*pseed, vinit);
@@ -626,7 +626,7 @@
 			// Return 64 bits of scrambled input seed.
 			return vreinterpretq_u64_u8(vseed)[0];
 		} else if (size < 16) {
-			vval = vreinterpretq_u8_u32(vdupq_n_u32(0));
+			vval = vreinterpretq_u8_u64(vdupq_n_u64(0));
 			if ((size & 8) != 0) {
 				vval = vreinterpretq_u8_u64(vld1q_lane_u64((uint64_t*)(p), vreinterpretq_u64_u8(vval), 0));
 				p = (void*)((uint64_t*)(p) + 1);