1
2
3
4
5
6
7 package codegen
8
9 func andn64(x, y int64) int64 {
10
11 return x &^ y
12 }
13
14 func andn32(x, y int32) int32 {
15
16 return x &^ y
17 }
18
19 func blsi64(x int64) int64 {
20
21 return x & -x
22 }
23
24 func blsi32(x int32) int32 {
25
26 return x & -x
27 }
28
29 func blsmsk64(x int64) int64 {
30
31 return x ^ (x - 1)
32 }
33
34 func blsmsk32(x int32) int32 {
35
36 return x ^ (x - 1)
37 }
38
39 func blsr64(x int64) int64 {
40
41 return x & (x - 1)
42 }
43
44 func blsr32(x int32) int32 {
45
46 return x & (x - 1)
47 }
48
49 func sarx64(x, y int64) int64 {
50
51 return x >> y
52 }
53
54 func sarx32(x, y int32) int32 {
55
56 return x >> y
57 }
58
59 func sarx64_load(x []int64, i int) int64 {
60
61 s := x[i] >> (i & 63)
62
63 s = x[i+1] >> (s & 63)
64 return s
65 }
66
67 func sarx32_load(x []int32, i int) int32 {
68
69 s := x[i] >> (i & 63)
70
71 s = x[i+1] >> (s & 63)
72 return s
73 }
74
75 func shlrx64(x, y uint64) uint64 {
76
77 s := x >> y
78
79 s = s << y
80 return s
81 }
82
83 func shlrx32(x, y uint32) uint32 {
84
85 s := x >> y
86
87 s = s << y
88 return s
89 }
90
91 func shlrx64_load(x []uint64, i int, s uint64) uint64 {
92
93 s = x[i] >> i
94
95 s = x[i+1] << s
96 return s
97 }
98
99 func shlrx32_load(x []uint32, i int, s uint32) uint32 {
100
101 s = x[i] >> i
102
103 s = x[i+1] << s
104 return s
105 }
106
View as plain text