all: use path for go.mod module path

We have various small submodules in the repository, mostly used for code
generation tools with external dependencies.

Currently naming is fairly ad-hoc. Some name the module based on the
path of the directory, while others use a single name like _gen.

If a developer creates a go.work file creating a workspace containing
these submodules (go work use -r .) [1], then all module names must be
unique.

Since CL 772102, we have two modules named _gen, so any operation after
creating go.work immediately fails with a duplicate module error.

Resolve this by using module paths based on the path to the directory.
The load bearing changes here are modifying
cmd/compile/internal/ssa/_gen/go.mod and/or simd/archsimd/_gen/go.mod so
they no longer conflict, but I've changed all module paths to use the
same naming scheme for consistency.

Note that std and cmd get special treatment by cmd/go, so avoid those
prefixes. e.g., the cmd/vet modules seem to ignore the Go language
version when using a cmd/ prefix.

[1] I found this issue because the build process for cross-references on
https://cs.opensource.google/go does this and is currently broken.

Change-Id: I8b3a351c16bd6d52192fb7b45186c38f6a6a6964
Reviewed-on: https://go-review.googlesource.com/c/go/+/798560
Auto-Submit: Michael Pratt <mpratt@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
diff --git a/src/cmd/compile/internal/ssa/_gen/go.mod b/src/cmd/compile/internal/ssa/_gen/go.mod
index 6f750a5..b8e6449 100644
--- a/src/cmd/compile/internal/ssa/_gen/go.mod
+++ b/src/cmd/compile/internal/ssa/_gen/go.mod
@@ -1,4 +1,5 @@
-module _gen
+// N.B. cmd/... modules get special treatment, so avoid that prefix.
+module compile/internal/ssa/_gen
 
 go 1.24
 
diff --git a/src/cmd/vet/testdata/rangeloop/go.mod b/src/cmd/vet/testdata/rangeloop/go.mod
index 178eba2..87a1cd5 100644
--- a/src/cmd/vet/testdata/rangeloop/go.mod
+++ b/src/cmd/vet/testdata/rangeloop/go.mod
@@ -1,3 +1,4 @@
-module rangeloop
+// N.B. cmd/... modules get special treatment, so avoid that prefix.
+module vet/testdata/rangeloop
 
 go 1.21
diff --git a/src/cmd/vet/testdata/stdversion/go.mod b/src/cmd/vet/testdata/stdversion/go.mod
index 90ae83b..93b0f78 100644
--- a/src/cmd/vet/testdata/stdversion/go.mod
+++ b/src/cmd/vet/testdata/stdversion/go.mod
@@ -1,3 +1,4 @@
-module stdversion
+// N.B. cmd/... modules get special treatment, so avoid that prefix.
+module vet/testdata/stdversion
 
 go 1.21
diff --git a/src/crypto/internal/fips140/aes/_asm/ctr/go.mod b/src/crypto/internal/fips140/aes/_asm/ctr/go.mod
index 80aac15..c1206f4 100644
--- a/src/crypto/internal/fips140/aes/_asm/ctr/go.mod
+++ b/src/crypto/internal/fips140/aes/_asm/ctr/go.mod
@@ -1,4 +1,4 @@
-module crypto/aes/_asm/ctr
+module crypto/internal/fips140/aes/_asm/ctr
 
 go 1.25
 
diff --git a/src/crypto/internal/fips140/aes/_asm/standard/go.mod b/src/crypto/internal/fips140/aes/_asm/standard/go.mod
index f1329b7..e91f6ab 100644
--- a/src/crypto/internal/fips140/aes/_asm/standard/go.mod
+++ b/src/crypto/internal/fips140/aes/_asm/standard/go.mod
@@ -1,4 +1,4 @@
-module crypto/aes/_asm/standard
+module crypto/internal/fips140/aes/_asm/standard
 
 go 1.24
 
diff --git a/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod b/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod
index 3fd2094..67ef7fd 100644
--- a/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod
+++ b/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod
@@ -1,4 +1,4 @@
-module crypto/aes/_asm/gcm
+module crypto/internal/fips140/aes/gcm/_asm/gcm
 
 go 1.24
 
diff --git a/src/crypto/internal/fips140/sha256/_asm/go.mod b/src/crypto/internal/fips140/sha256/_asm/go.mod
index eb93418..4aca05a 100644
--- a/src/crypto/internal/fips140/sha256/_asm/go.mod
+++ b/src/crypto/internal/fips140/sha256/_asm/go.mod
@@ -1,4 +1,4 @@
-module crypto/sha256/_asm
+module crypto/internal/fips140/sha256/_asm
 
 go 1.24
 
diff --git a/src/crypto/internal/fips140/sha3/_asm/go.mod b/src/crypto/internal/fips140/sha3/_asm/go.mod
index 39e83ac..27df08c 100644
--- a/src/crypto/internal/fips140/sha3/_asm/go.mod
+++ b/src/crypto/internal/fips140/sha3/_asm/go.mod
@@ -1,4 +1,4 @@
-module sha3/_asm
+module crypto/internal/fips140/sha3/_asm
 
 go 1.22
 
diff --git a/src/crypto/internal/fips140/sha512/_asm/go.mod b/src/crypto/internal/fips140/sha512/_asm/go.mod
index 78b9532..75bfd78 100644
--- a/src/crypto/internal/fips140/sha512/_asm/go.mod
+++ b/src/crypto/internal/fips140/sha512/_asm/go.mod
@@ -1,4 +1,4 @@
-module crypto/sha512/_asm
+module crypto/internal/fips140/sha512/_asm
 
 go 1.24
 
diff --git a/src/runtime/_mkmalloc/go.mod b/src/runtime/_mkmalloc/go.mod
index f6bc431..45c10cf 100644
--- a/src/runtime/_mkmalloc/go.mod
+++ b/src/runtime/_mkmalloc/go.mod
@@ -1,4 +1,4 @@
-module _mkmalloc
+module runtime/_mkmalloc
 
 go 1.26
 
diff --git a/src/simd/archsimd/_gen/go.mod b/src/simd/archsimd/_gen/go.mod
index 32b075b..f297b79 100644
--- a/src/simd/archsimd/_gen/go.mod
+++ b/src/simd/archsimd/_gen/go.mod
@@ -1,4 +1,4 @@
-module _gen
+module simd/archsimd/_gen
 
 go 1.25.0
 
diff --git a/src/simd/archsimd/_gen/simdgen/arm64/emit.go b/src/simd/archsimd/_gen/simdgen/arm64/emit.go
index 1bf1281..09b9237 100644
--- a/src/simd/archsimd/_gen/simdgen/arm64/emit.go
+++ b/src/simd/archsimd/_gen/simdgen/arm64/emit.go
@@ -8,7 +8,7 @@
 	"fmt"
 	"strings"
 
-	"_gen/unify"
+	"simd/archsimd/_gen/unify"
 )
 
 // asComment formats text as a comment
diff --git a/src/simd/archsimd/_gen/simdgen/arm64/load.go b/src/simd/archsimd/_gen/simdgen/arm64/load.go
index 75b4c80..aaf2e40 100644
--- a/src/simd/archsimd/_gen/simdgen/arm64/load.go
+++ b/src/simd/archsimd/_gen/simdgen/arm64/load.go
@@ -9,7 +9,7 @@
 import (
 	"sort"
 
-	"_gen/unify"
+	"simd/archsimd/_gen/unify"
 
 	"golang.org/x/arch/arm64/instgen/xmlspec"
 )
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go b/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go
index b4da36d..4a8c350 100644
--- a/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go
+++ b/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go
@@ -5,8 +5,8 @@
 package main
 
 import (
-	"_gen/sgutil"
 	"bytes"
+	"simd/archsimd/_gen/sgutil"
 )
 
 // writeSIMDGenericOps generates the generic ops for the current architecture,
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go b/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go
index 4ecbf9f..0f53336 100644
--- a/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go
+++ b/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go
@@ -5,9 +5,9 @@
 package main
 
 import (
-	"_gen/sgutil"
 	"bytes"
 	"fmt"
+	"simd/archsimd/_gen/sgutil"
 	"slices"
 	"text/template"
 )
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go b/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go
index 4024b61..25d53ed 100644
--- a/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go
+++ b/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go
@@ -15,7 +15,7 @@
 	"text/template"
 	"unicode"
 
-	"_gen/sgutil"
+	"simd/archsimd/_gen/sgutil"
 )
 
 type simdType struct {
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdrules.go b/src/simd/archsimd/_gen/simdgen/gen_simdrules.go
index d6e933f..a09b208 100644
--- a/src/simd/archsimd/_gen/simdgen/gen_simdrules.go
+++ b/src/simd/archsimd/_gen/simdgen/gen_simdrules.go
@@ -12,7 +12,7 @@
 	"text/template"
 	"unicode"
 
-	"_gen/sgutil"
+	"simd/archsimd/_gen/sgutil"
 )
 
 type tplRuleData struct {
diff --git a/src/simd/archsimd/_gen/simdgen/godefs.go b/src/simd/archsimd/_gen/simdgen/godefs.go
index 59a2154..5d2764f 100644
--- a/src/simd/archsimd/_gen/simdgen/godefs.go
+++ b/src/simd/archsimd/_gen/simdgen/godefs.go
@@ -14,7 +14,7 @@
 	"strings"
 	"unicode"
 
-	"_gen/unify"
+	"simd/archsimd/_gen/unify"
 )
 
 type Operation struct {
diff --git a/src/simd/archsimd/_gen/simdgen/main.go b/src/simd/archsimd/_gen/simdgen/main.go
index 276d948..b1be09e 100644
--- a/src/simd/archsimd/_gen/simdgen/main.go
+++ b/src/simd/archsimd/_gen/simdgen/main.go
@@ -106,8 +106,8 @@
 	"slices"
 	"strings"
 
-	"_gen/simdgen/arm64"
-	"_gen/unify"
+	"simd/archsimd/_gen/simdgen/arm64"
+	"simd/archsimd/_gen/unify"
 
 	"gopkg.in/yaml.v3"
 )
diff --git a/src/simd/archsimd/_gen/simdgen/xed.go b/src/simd/archsimd/_gen/simdgen/xed.go
index 5ca8a4d..6e01b66 100644
--- a/src/simd/archsimd/_gen/simdgen/xed.go
+++ b/src/simd/archsimd/_gen/simdgen/xed.go
@@ -14,7 +14,7 @@
 	"strconv"
 	"strings"
 
-	"_gen/unify"
+	"simd/archsimd/_gen/unify"
 
 	"golang.org/x/arch/x86/xeddata"
 	"gopkg.in/yaml.v3"
diff --git a/src/simd/archsimd/_gen/tmplgen/main.go b/src/simd/archsimd/_gen/tmplgen/main.go
index de7352a..ddb667f 100644
--- a/src/simd/archsimd/_gen/tmplgen/main.go
+++ b/src/simd/archsimd/_gen/tmplgen/main.go
@@ -8,7 +8,6 @@
 // slice operations and tests
 
 import (
-	"_gen/sgutil"
 	"bufio"
 	"bytes"
 	"flag"
@@ -16,6 +15,7 @@
 	"go/format"
 	"io"
 	"os"
+	"simd/archsimd/_gen/sgutil"
 	"strings"
 	"text/template"
 )
diff --git a/src/simd/archsimd/_gen/wasmgen/main.go b/src/simd/archsimd/_gen/wasmgen/main.go
index b73cff8..0e39c56 100644
--- a/src/simd/archsimd/_gen/wasmgen/main.go
+++ b/src/simd/archsimd/_gen/wasmgen/main.go
@@ -16,7 +16,7 @@
 	"text/template"
 	"unicode"
 
-	"_gen/sgutil"
+	"simd/archsimd/_gen/sgutil"
 )
 
 var (
diff --git a/src/simd/testdata/ip/go.mod b/src/simd/testdata/ip/go.mod
index f82bc93..2c6447d 100644
--- a/src/simd/testdata/ip/go.mod
+++ b/src/simd/testdata/ip/go.mod
@@ -1,3 +1,3 @@
-module ip
+module simd/testdata/ip
 
 go 1.27