[dev.simd] cmd/compile, simd: (Set|Get)(Lo|Hi)

This CL is generated by CL 693335.

Change-Id: Ie9adda526573f979ec7e4f535033ba29236cc5cb
Reviewed-on: https://go-review.googlesource.com/c/go/+/693355
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
Junyang Shao 2025-08-05 19:07:51 +00:00
parent 7ca34599ec
commit d3cf582f8a
10 changed files with 2474 additions and 567 deletions

View file

@ -257,93 +257,6 @@ func TestSlicesInt8GetElem(t *testing.T) {
}
func TestSlicesInt8Set128(t *testing.T) {
a := []int8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}
v := simd.LoadInt8x16Slice(a) // 1-16
u := simd.LoadInt8x32Slice(a) // 1-32
w := u.Set128(1, v) // 1-16:1-16
b := make([]int8, 32, 32)
w.StoreSlice(b)
checkSlices(t, a, b[:16])
checkSlices(t, a, b[16:])
}
func TestSlicesInt8Get128(t *testing.T) {
a := []int8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}
u := simd.LoadInt8x32Slice(a) // 1-32
v := u.Get128(0) // 1-16
w := u.Get128(1) // 17-32
b := make([]int8, 32, 32)
v.StoreSlice(b[:16])
w.StoreSlice(b[16:])
checkSlices(t, a, b)
}
func TestSlicesFloat32Set128(t *testing.T) {
a := []float32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}
v := simd.LoadFloat32x4Slice(a) // 1-4
u := simd.LoadFloat32x8Slice(a) // 1-4
w := u.Set128(1, v) // 1-4:1-4
b := make([]float32, 8, 8)
w.StoreSlice(b)
checkSlices(t, a, b[:4])
checkSlices(t, a, b[4:])
}
func TestSlicesFloat32Get128(t *testing.T) {
a := []float32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}
u := simd.LoadFloat32x8Slice(a) // 1-8
v := u.Get128(0) // 1-4
w := u.Get128(1) // 5-8
b := make([]float32, 8, 8)
v.StoreSlice(b[:4])
w.StoreSlice(b[4:])
checkSlices(t, a, b)
}
func TestSlicesFloat64Set128(t *testing.T) {
a := []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}
v := simd.LoadFloat64x2Slice(a) // 1-2
u := simd.LoadFloat64x4Slice(a) // 1-2
w := u.Set128(1, v) // 1-2:1-2
b := make([]float64, 4, 4)
w.StoreSlice(b)
checkSlices(t, a, b[:2])
checkSlices(t, a, b[2:])
}
func TestSlicesFloat64Get128(t *testing.T) {
a := []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}
u := simd.LoadFloat64x4Slice(a) // 1-4
v := u.Get128(0) // 1-2
w := u.Get128(1) // 3-4
b := make([]float64, 4, 4)
v.StoreSlice(b[:2])
w.StoreSlice(b[2:])
checkSlices(t, a, b)
}
func TestSlicesInt8TooShortLoad(t *testing.T) {
defer func() {
if r := recover(); r != nil {