diff --git a/rand/rng.go b/rand/rng.go
index f59fadb..f4b0e19 100644
--- a/rand/rng.go
+++ b/rand/rng.go
@@ -53,3 +53,17 @@
 	// XOR high and low 64 bits together and rotate right by high 6 bits of state.
 	return bits.RotateLeft64(pcg.high^pcg.low, -int(pcg.high>>58))
 }
+
+func (pcg *PCGSource) add() {
+	var carry uint64
+	pcg.low, carry = bits.Add64(pcg.low, incLow, 0)
+	pcg.high, _ = bits.Add64(pcg.high, incHigh, carry)
+}
+
+func (pcg *PCGSource) multiply() {
+	hi, lo := bits.Mul64(pcg.low, mulLow)
+	hi += pcg.high * mulLow
+	hi += pcg.low * mulHigh
+	pcg.low = lo
+	pcg.high = hi
+}
diff --git a/rand/uint64.go b/rand/uint64.go
deleted file mode 100644
index cc1fc01..0000000
--- a/rand/uint64.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2017 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.12
-
-package rand
-
-import "math/bits"
-
-func (pcg *PCGSource) add() {
-	var carry uint64
-	pcg.low, carry = bits.Add64(pcg.low, incLow, 0)
-	pcg.high, _ = bits.Add64(pcg.high, incHigh, carry)
-}
-
-func (pcg *PCGSource) multiply() {
-	hi, lo := bits.Mul64(pcg.low, mulLow)
-	hi += pcg.high * mulLow
-	hi += pcg.low * mulHigh
-	pcg.low = lo
-	pcg.high = hi
-}
diff --git a/rand/uint64_fallback.go b/rand/uint64_fallback.go
deleted file mode 100644
index 58f66cf..0000000
--- a/rand/uint64_fallback.go
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2017 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.12
-
-package rand
-
-func (pcg *PCGSource) add() {
-	old := pcg.low
-	pcg.low += incLow
-	if pcg.low < old {
-		// Carry occurred.
-		pcg.high++
-	}
-	pcg.high += incHigh
-}
-
-func (pcg *PCGSource) multiply() {
-	// Break each lower word into two separate 32-bit 'digits' each stored
-	// in a 64-bit word with 32 high zero bits.  This allows the overflow
-	// into the high word to be computed.
-	s0 := (pcg.low >> 00) & maxUint32
-	s1 := (pcg.low >> 32) & maxUint32
-
-	const (
-		m0    = (multiplier >> 00) & maxUint32
-		m1    = (multiplier >> 32) & maxUint32
-		mLow  = multiplier & (1<<64 - 1)
-		mHigh = multiplier >> 64 & (1<<64 - 1)
-	)
-
-	high := pcg.low*mHigh + pcg.high*mLow
-	s0m0 := s0 * m0
-	s0m1 := s0 * m1
-	s1m0 := s1 * m0
-	s1m1 := s1 * m1
-	high += (s0m1 >> 32) + (s1m0 >> 32)
-	carry := (s0m1 & maxUint32) + (s1m0 & maxUint32) + s0m0>>32
-	high += (carry >> 32)
-
-	pcg.low *= mLow
-	pcg.high = high + s1m1
-}
