]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.simd] simd, cmd/compile, go build, go/doc: test tweaks
authorDavid Chase <drchase@google.com>
Thu, 29 May 2025 18:55:01 +0000 (14:55 -0400)
committerJunyang Shao <shaojunyang@google.com>
Fri, 30 May 2025 02:19:18 +0000 (19:19 -0700)
these are for CL 675618
simd package exists and imports internal/cpu
tweak tests to deal with goexperiment/not

Change-Id: I2de99d048f0a228d5f3cd750c39ee5925107556e
Reviewed-on: https://go-review.googlesource.com/c/go/+/677260
Reviewed-by: Junyang Shao <shaojunyang@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Junyang Shao <shaojunyang@google.com>

src/cmd/compile/internal/ssagen/intrinsics_test.go
src/go/build/deps_test.go
src/go/doc/comment/std.go
src/go/doc/comment/std_test.go
src/simd/cpu.go [new file with mode: 0644]

index 0623c5f2098c4ebe5a09b2e0571f9e5ec821caa7..bd9dd616fd8c684125b783675141e9ce4f4463ff 100644 (file)
@@ -7,6 +7,7 @@ package ssagen
 import (
        "flag"
        "fmt"
+       "internal/buildcfg"
        "slices"
        "strings"
        "testing"
@@ -15,6 +16,7 @@ import (
 )
 
 var updateIntrinsics = flag.Bool("update", false, "Print an updated intrinsics table")
+var simd = flag.Bool("simd", buildcfg.Experiment.SIMD, "Also check SIMD intrinsics; defaults to GOEXPERIMENT==simd")
 
 type testIntrinsicKey struct {
        archName string
@@ -1375,13 +1377,13 @@ func TestIntrinsics(t *testing.T) {
                gotIntrinsics[testIntrinsicKey{ik.arch.Name, ik.pkg, ik.fn}] = struct{}{}
        }
        for ik, _ := range gotIntrinsics {
-               if _, found := wantIntrinsics[ik]; !found {
+               if _, found := wantIntrinsics[ik]; !found && (ik.pkg != "simd" || *simd) {
                        t.Errorf("Got unwanted intrinsic %v %v.%v", ik.archName, ik.pkg, ik.fn)
                }
        }
 
        for ik, _ := range wantIntrinsics {
-               if _, found := gotIntrinsics[ik]; !found {
+               if _, found := gotIntrinsics[ik]; !found && (ik.pkg != "simd" || *simd) {
                        t.Errorf("Want missing intrinsic %v %v.%v", ik.archName, ik.pkg, ik.fn)
                }
        }
index b2668a3d7d4fbe87ec8e8554d20f23d5fbebad58..cc00000734a73d1510e7ec26aecc6cce73022f9e 100644 (file)
@@ -70,6 +70,8 @@ var depsRules = `
        internal/goarch < internal/abi;
        internal/byteorder, internal/cpu, internal/goarch < internal/chacha8rand;
 
+       internal/cpu < simd;
+
        # RUNTIME is the core runtime group of packages, all of them very light-weight.
        internal/abi,
        internal/chacha8rand,
index 191e1f129107decfc9824d33fae17b275d9aa17a..73cf9627a02b58404cba7cffe1912d2bd448d3b6 100644 (file)
@@ -35,6 +35,7 @@ var stdPkgs = []string{
        "reflect",
        "regexp",
        "runtime",
+       "simd",
        "slices",
        "sort",
        "strconv",
index bd0379856a4d8cde3f92ca2dbde9f117da62a0bd..9a40d1d09a73b4a6a90f421f31d6e450e9474eac 100644 (file)
@@ -5,6 +5,7 @@
 package comment
 
 import (
+       "internal/buildcfg"
        "internal/diff"
        "internal/testenv"
        "slices"
@@ -24,6 +25,10 @@ func TestStd(t *testing.T) {
                        list = append(list, pkg)
                }
        }
+       // TODO remove this when simd is the default, for now fake its existence
+       if !buildcfg.Experiment.SIMD {
+               list = append(list, "simd")
+       }
        slices.Sort(list)
 
        have := strings.Join(stdPkgs, "\n") + "\n"
diff --git a/src/simd/cpu.go b/src/simd/cpu.go
new file mode 100644 (file)
index 0000000..84bf03c
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright 2025 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.
+
+//go:build goexperiment.simd
+
+// the build condition == if the experiment is not on, cmd/api TestCheck will see this and complain
+// see also go/doc/comment, where "simd" is inserted to the package list of the experiment is not on.
+
+package simd
+
+import "internal/cpu"
+
+func HasAVX512BW() bool {
+       return cpu.X86.HasAVX512BW
+}
+
+func HasAVX512VL() bool {
+       return cpu.X86.HasAVX512VL
+}