diff --git a/src/sync/atomic/atomic_test.go b/src/sync/atomic/atomic_test.go
index 02d55fb..0cc9b06 100644
--- a/src/sync/atomic/atomic_test.go
+++ b/src/sync/atomic/atomic_test.go
@@ -32,16 +32,6 @@
 	magic64 = 0xdeddeadbeefbeef
 )
 
-// Do the 64-bit functions panic? If so, don't bother testing.
-var test64err = func() (err any) {
-	defer func() {
-		err = recover()
-	}()
-	var x int64
-	AddInt64(&x, 1)
-	return nil
-}()
-
 func TestSwapInt32(t *testing.T) {
 	var x struct {
 		before int32
@@ -127,9 +117,6 @@
 }
 
 func TestSwapInt64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before int64
 		i      int64
@@ -152,9 +139,6 @@
 }
 
 func TestSwapInt64Method(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before int64
 		i      Int64
@@ -177,9 +161,6 @@
 }
 
 func TestSwapUint64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      uint64
@@ -202,9 +183,6 @@
 }
 
 func TestSwapUint64Method(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      Uint64
@@ -420,9 +398,6 @@
 }
 
 func TestAddInt64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before int64
 		i      int64
@@ -445,9 +420,6 @@
 }
 
 func TestAddInt64Method(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before int64
 		i      Int64
@@ -470,9 +442,6 @@
 }
 
 func TestAddUint64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      uint64
@@ -495,9 +464,6 @@
 }
 
 func TestAddUint64Method(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      Uint64
@@ -682,9 +648,6 @@
 }
 
 func TestCompareAndSwapInt64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before int64
 		i      int64
@@ -715,9 +678,6 @@
 }
 
 func TestCompareAndSwapInt64Method(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before int64
 		i      Int64
@@ -748,9 +708,6 @@
 }
 
 func testCompareAndSwapUint64(t *testing.T, cas func(*uint64, uint64, uint64) bool) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      uint64
@@ -785,9 +742,6 @@
 }
 
 func TestCompareAndSwapUint64Method(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      Uint64
@@ -1027,9 +981,6 @@
 }
 
 func TestLoadInt64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before int64
 		i      int64
@@ -1051,9 +1002,6 @@
 }
 
 func TestLoadInt64Method(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before int64
 		i      Int64
@@ -1077,9 +1025,6 @@
 }
 
 func TestLoadUint64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      uint64
@@ -1101,9 +1046,6 @@
 }
 
 func TestLoadUint64Method(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      Uint64
@@ -1302,9 +1244,6 @@
 }
 
 func TestStoreInt64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before int64
 		i      int64
@@ -1349,9 +1288,6 @@
 }
 
 func TestStoreUint64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      uint64
@@ -1374,9 +1310,6 @@
 }
 
 func TestStoreUint64Method(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	var x struct {
 		before uint64
 		i      Uint64
@@ -1997,9 +1930,6 @@
 }
 
 func TestHammer64(t *testing.T) {
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	const p = 4
 	n := 100000
 	if testing.Short() {
@@ -2252,16 +2182,13 @@
 }
 
 func TestHammerStoreLoad(t *testing.T) {
-	var tests []func(*testing.T, unsafe.Pointer)
-	tests = append(tests, hammerStoreLoadInt32, hammerStoreLoadUint32,
+	tests := []func(*testing.T, unsafe.Pointer){
+		hammerStoreLoadInt32, hammerStoreLoadUint32,
 		hammerStoreLoadUintptr, hammerStoreLoadPointer,
 		hammerStoreLoadInt32Method, hammerStoreLoadUint32Method,
 		hammerStoreLoadUintptrMethod, hammerStoreLoadPointerMethod,
-	)
-	if test64err == nil {
-		tests = append(tests, hammerStoreLoadInt64, hammerStoreLoadUint64,
-			hammerStoreLoadInt64Method, hammerStoreLoadUint64Method,
-		)
+		hammerStoreLoadInt64, hammerStoreLoadUint64,
+		hammerStoreLoadInt64Method, hammerStoreLoadUint64Method,
 	}
 	n := int(1e6)
 	if testing.Short() {
@@ -2337,9 +2264,6 @@
 	if runtime.NumCPU() == 1 {
 		t.Skipf("Skipping test on %v processor machine", runtime.NumCPU())
 	}
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(4))
 	N := int64(1e3)
 	if testing.Short() {
@@ -2428,9 +2352,6 @@
 	if runtime.NumCPU() == 1 {
 		t.Skipf("Skipping test on %v processor machine", runtime.NumCPU())
 	}
-	if test64err != nil {
-		t.Skipf("Skipping 64-bit tests: %v", test64err)
-	}
 	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(4))
 	N := int64(1e3)
 	if testing.Short() {
