Source file src/simd/archsimd/testdata/wasmtest.go

     1  // Copyright 2025 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build goexperiment.simd && wasm
     6  
     7  package main
     8  
     9  import (
    10  	"fmt"
    11  	"simd/archsimd"
    12  )
    13  
    14  //go:noinline
    15  func id[T any](x T) T {
    16  	return x
    17  }
    18  
    19  func main() {
    20  	var x, _ = archsimd.LoadInt16x8Part([]int16{10, 21, 32, 43, 54, 65, 76})
    21  	var y, _ = archsimd.LoadInt16x8Part([]int16{200, 300, 400, 500, 600, 700, 800})
    22  	z := x.Add(y)
    23  	fmt.Println("z =", z.String())
    24  	m1 := z.Equal(z)
    25  	fmt.Println("m1 =", m1.ToInt16x8().String())
    26  	fmt.Println("m1.String() = ", m1.String())
    27  	i := m1.ToInt16x8().Neg()
    28  	fmt.Println("i =", i.String())
    29  	i0 := i.ShiftAllLeft(2)
    30  	fmt.Println("i0 =", i0.String())
    31  	i1 := i.ShiftAllLeft(id(uint64(2)))
    32  	fmt.Println("i1 =", i1.String())
    33  	i2 := i.ShiftAllLeft(id(uint64(15)))
    34  	fmt.Println("i2 =", i2.String())
    35  	i3 := i2.ShiftAllRight(id(uint64(16)))
    36  	fmt.Println("i3 =", i3.String())
    37  	m2 := z.And(i0).Equal(i1)
    38  	fmt.Println("m2 =", m2.ToInt16x8().String())
    39  	zz := z.IfElse(m2, y)
    40  	fmt.Printf("zz = %v\n", zz)
    41  	zl := zz.ExtendLo4ToInt32()
    42  	fmt.Printf("zl-extended = %v\n", zl)
    43  	zh := zz.ExtendHi4ToInt32()
    44  	fmt.Printf("zh-extended = %v\n", zh)
    45  
    46  	w := make([]int16, 7, 7)
    47  	zz.StorePart(w)
    48  	fmt.Printf("w = %v\n", w)
    49  
    50  	fmt.Println()
    51  
    52  	for j := uint64(0); j < 18; j++ {
    53  		fmt.Printf("%v.RAL(%d)=%v\n", i, j, i.RotateAllLeft(j))
    54  	}
    55  
    56  	fmt.Println()
    57  
    58  	for j := uint64(0); j < 18; j++ {
    59  		fmt.Printf("%v.RAr(%d)=%v\n", i, j, i.RotateAllRight(j))
    60  	}
    61  
    62  	{
    63  		var a = archsimd.LoadInt8x16([]int8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16})
    64  		// var b = archsimd.LoadInt8x16([]int8{17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 21, 32})
    65  		var i = archsimd.LoadInt8x16([]int8{0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30})
    66  		fmt.Println(a.LookupOrZero(i))
    67  		// fmt.Println(a.Shuffle(i, b))
    68  	}
    69  
    70  }
    71  

View as plain text