1
2
3
4
5
6
7 package main
8
9 import (
10 "fmt"
11 "simd/archsimd"
12 )
13
14
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
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
68 }
69
70 }
71
View as plain text