Files
go/test/simd_inline.go
David Chase 144cf17d2c [dev.simd] simd, cmd/compile: move "simd" to "simd/archsimd"
Also removes a few leftover TODOs and scraps of commented-out code
from simd development.

Updated etetest.sh to make it behave whether amd64 implies the
experiment, or not.

Fixes #76473.

Change-Id: I6d9792214d7f514cb90c21b101dbf7d07c1d0e55
Reviewed-on: https://go-review.googlesource.com/c/go/+/728220
TryBot-Bypass: David Chase <drchase@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
2025-12-08 13:57:44 -08:00

43 lines
1.8 KiB
Go

// errorcheck -0 -m
//go:build goexperiment.simd && amd64
// 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.
package foo
import "simd/archsimd"
func hasClosure(a, b, c, d archsimd.Int64x4) (w, x, y, z archsimd.Int64x4) {
shuf := func() { // ERROR "can inline hasClosure.func1"
w = z.RotateAllLeft(1).Xor(a)
x = w.RotateAllLeft(3).Xor(b)
y = x.RotateAllLeft(5).Xor(c)
z = y.RotateAllLeft(7).Xor(d)
a, b, c, d = b.RotateAllLeft(1).Xor(a.RotateAllLeft(23)), c.RotateAllLeft(1).Xor(b.RotateAllLeft(23)), d.RotateAllLeft(1).Xor(c.RotateAllLeft(23)), a.RotateAllLeft(1).Xor(d.RotateAllLeft(23))
w = z.RotateAllLeft(1).Xor(a)
x = w.RotateAllLeft(3).Xor(b)
y = x.RotateAllLeft(5).Xor(c)
z = y.RotateAllLeft(7).Xor(d)
a, b, c, d = b.RotateAllLeft(1).Xor(a.RotateAllLeft(23)), c.RotateAllLeft(1).Xor(b.RotateAllLeft(23)), d.RotateAllLeft(1).Xor(c.RotateAllLeft(23)), a.RotateAllLeft(1).Xor(d.RotateAllLeft(23))
w = z.RotateAllLeft(1).Xor(a)
x = w.RotateAllLeft(3).Xor(b)
y = x.RotateAllLeft(5).Xor(c)
z = y.RotateAllLeft(7).Xor(d)
a, b, c, d = b.RotateAllLeft(1).Xor(a.RotateAllLeft(23)), c.RotateAllLeft(1).Xor(b.RotateAllLeft(23)), d.RotateAllLeft(1).Xor(c.RotateAllLeft(23)), a.RotateAllLeft(1).Xor(d.RotateAllLeft(23))
}
shuf() // ERROR "inlining call to hasClosure.func1"
shuf() // ERROR "inlining call to hasClosure.func1"
shuf() // ERROR "inlining call to hasClosure.func1"
shuf() // ERROR "inlining call to hasClosure.func1"
shuf() // ERROR "inlining call to hasClosure.func1"
shuf() // ERROR "inlining call to hasClosure.func1"
shuf() // ERROR "inlining call to hasClosure.func1"
shuf() // ERROR "inlining call to hasClosure.func1"
shuf() // ERROR "inlining call to hasClosure.func1"
return
}