1 !sum
2 - go: SetElem
3 commutative: false
4 documentation: !string |-
5 // NAME sets a single constant-indexed element's value.
6 - go: GetElem
7 commutative: false
8 documentation: !string |-
9 // NAME retrieves a single constant-indexed element's value.
10 - go: SetLo
11 commutative: false
12 constImm: 0
13 documentation: !string |-
14 // NAME returns x with its lower half set to y.
15 - go: GetLo
16 commutative: false
17 constImm: 0
18 documentation: !string |-
19 // NAME returns the lower half of x.
20 - go: SetHi
21 commutative: false
22 constImm: 1
23 documentation: !string |-
24 // NAME returns x with its upper half set to y.
25 - go: GetHi
26 commutative: false
27 constImm: 1
28 documentation: !string |-
29 // NAME returns the upper half of x.
30 - go: PermuteOrZero
31 commutative: false
32 documentation: !string |-
33 // NAME performs a full permutation of vector x using indices:
34 //
35 // result = {x[indices[0]], x[indices[1]], ..., x[indices[n]]}
36 //
37 - go: Permute
38 commutative: false
39 documentation: !string |-
40 // NAME performs a full permutation of vector x using indices:
41 //
42 // result = {x[indices[0]], x[indices[1]], ..., x[indices[n]]}
43 //
44 - go: ConcatPermute # ConcatPermute is only available on or after AVX512
45 commutative: false
46 documentation: !string |-
47 // NAME performs a full permutation of vector x, y using indices:
48 //
49 // result = {xy[indices[0]], xy[indices[1]], ..., xy[indices[n]]}
50 //
51 // where xy is the concatenation of x (lower half) and y (upper half).
52 // Only the needed bits to represent xy's index are used in indices' elements.
53 - go: Compress
54 commutative: false
55 documentation: !string |-
56 // NAME performs a compression on vector x using mask by
57 // selecting elements as indicated by mask, and pack them to lower indexed elements.
58 - go: blend
59 commutative: false
60 documentation: !string |-
61 // NAME blends two vectors based on mask values, choosing either
62 // the first or the second based on whether the third is false or true
63 - go: move
64 commutative: false
65 noTypes: "true"
66 noGenericOps: "true"
67 - go: Expand
68 commutative: false
69 documentation: !string |-
70 // NAME performs an expansion on a vector x whose elements are packed to lower parts.
71 // The expansion is to distribute elements as indexed by mask, from lower mask elements to upper in order.
72 - go: Broadcast1To2
73 commutative: false
74 documentation: !string |-
75 // NAME copies the lowest element of its input to all 2 elements of
76 // the output vector.
77 - go: Broadcast1To4
78 commutative: false
79 documentation: !string |-
80 // NAME copies the lowest element of its input to all 4 elements of
81 // the output vector.
82 - go: Broadcast1To8
83 commutative: false
84 documentation: !string |-
85 // NAME copies the lowest element of its input to all 8 elements of
86 // the output vector.
87 - go: Broadcast1To16
88 commutative: false
89 documentation: !string |-
90 // NAME copies the lowest element of its input to all 16 elements of
91 // the output vector.
92 - go: Broadcast1To32
93 commutative: false
94 documentation: !string |-
95 // NAME copies the lowest element of its input to all 32 elements of
96 // the output vector.
97 - go: Broadcast1To64
98 commutative: false
99 documentation: !string |-
100 // NAME copies the lowest element of its input to all 64 elements of
101 // the output vector.
102 - go: PermuteOrZeroGrouped
103 commutative: false
104 documentation: !string |- # Detailed documentation will rely on the specific ops.
105 // NAME performs a grouped permutation of vector x using indices:
106 - go: PermuteGrouped
107 commutative: false
108 documentation: !string |- # Detailed documentation will rely on the specific ops.
109 // NAME performs a grouped permutation of vector x using indices:
110 - go: permuteScalars
111 commutative: false
112 documentation: !string |- # Detailed documentation will rely on the specific ops.
113 // NAME performs a permutation of vector x using constant indices:
114 - go: permuteScalarsGrouped
115 commutative: false
116 documentation: !string |- # Detailed documentation will rely on the specific ops.
117 // NAME performs a grouped permutation of vector x using constant indices:
118 - go: permuteScalarsLo
119 commutative: false
120 documentation: !string |- # Detailed documentation will rely on the specific ops.
121 // NAME performs a permutation of vector x using constant indices:
122 - go: permuteScalarsLoGrouped
123 commutative: false
124 documentation: !string |- # Detailed documentation will rely on the specific ops.
125 // NAME performs a grouped permutation of vector x using constant indices:
126 - go: permuteScalarsHi
127 commutative: false
128 documentation: !string |- # Detailed documentation will rely on the specific ops.
129 // NAME performs a permutation of vector x using constant indices:
130 - go: permuteScalarsHiGrouped
131 commutative: false
132 documentation: !string |- # Detailed documentation will rely on the specific ops.
133 // NAME performs a grouped permutation of vector x using constant indices:
134 - go: InterleaveHi
135 commutative: false
136 documentation: !string |-
137 // NAME interleaves the elements of the high halves of x and y.
138 - go: InterleaveLo
139 commutative: false
140 documentation: !string |-
141 // NAME interleaves the elements of the low halves of x and y.
142 - go: InterleaveHiGrouped
143 commutative: false
144 documentation: !string |-
145 // NAME interleaves the elements of the high half of each 128-bit subvector of x and y.
146 - go: InterleaveLoGrouped
147 commutative: false
148 documentation: !string |-
149 // NAME interleaves the elements of the low half of each 128-bit subvector of x and y.
150
151 - go: concatSelectedConstant
152 commutative: false
153 out:
154 - elemBits: 32
155 documentation: !string |-
156 // NAME concatenates selected elements from x and y into the lower and upper
157 // halves of the output. The selection is chosen by the constant parameter h1h0l1l0
158 // where each {h,l}{1,0} is two bits specify which element from y or x to select.
159 // For example, {0,1,2,3}.NAME(0b_11_01_00_10, {4,5,6,7}) returns
160 // {2, 0, 5, 7} (don't forget that the binary constant is written big-endian).
161
162 - go: concatSelectedConstant
163 commutative: false
164 out:
165 - elemBits: 64
166 documentation: !string |-
167 // NAME concatenates selected elements from x and y into the lower and upper
168 // halves of the output. The selection is chosen by the constant parameter hilo
169 // where hi and lo are each one bit specifying which 64-bit element to select
170 // from y and x. For example {4,5}.NAME(0b10, {6,7})
171 // returns {4,7}; bit 0, selecting from x, is zero, and selects 4, and bit 1,
172 // selecting from y, is 1, and selects 7.
173
174 - go: concatSelectedConstantGrouped
175 commutative: false
176 out:
177 - elemBits: 32
178 bits: 256
179 documentation: !string |-
180 // NAME concatenates selected elements from 128-bit subvectors of x and y
181 // into the lower and upper halves of corresponding subvectors of the output.
182 // The selection is chosen by the constant parameter h1h0l1l0
183 // where each {h,l}{1,0} is two bits specifying which element from y or x to select.
184 // For example,
185 // {0,1,2,3,8,9,10,11}.NAME(0b_11_01_00_10, {4,5,6,7,12,13,14,15})
186 // returns {2,0,5,7,10,8,13,15}
187 // (don't forget that the binary constant is written big-endian).
188
189 - go: concatSelectedConstantGrouped
190 commutative: false
191 out:
192 - elemBits: 64
193 bits: 256
194 documentation: !string |-
195 // NAME concatenates selected elements from 128-bit subvectors of x and y
196 // into the lower and upper halves of corresponding subvectors of the output.
197 // The selections are specified by the constant parameter hilos where each
198 // hi and lo pair select 64-bit elements from the corresponding 128-bit
199 // subvectors of x and y.
200 //
201 // For example {4,5,8,9}.NAME(0b_11_10, {6,7,10,11})
202 // returns {4,7,9,11}; bit 0 is zero, selecting element 0 from x's least
203 // 128-bits (4), then 1, selects the element 1 from y's least 128-bits (7),
204 // then 1, selecting element 1 from x's upper 128 bits (9), then 1,
205 // selecting element 1 from y's upper 128 bits (11).
206 // This differs from the same method applied to a 32x8 vector, where
207 // the 8-bit constant performs the same selection on both subvectors.
208
209 - go: concatSelectedConstantGrouped
210 commutative: false
211 out:
212 - elemBits: 32
213 bits: 512
214 documentation: !string |-
215 // NAME concatenates selected elements from 128-bit subvectors of x and y
216 // into the lower and upper halves of corresponding subvectors of the output.
217 // The selection is chosen by the constant parameter h1h0l1l0
218 // where each {h,l}{1,0} is two bits specifying which element from y or x to select.
219 // For example,
220 //
221 // {0,1,2,3,8,9,10,11, 20,21,22,23,28,29,210,211}.NAME(
222 // 0b_11_01_00_10, {4,5,6,7,12,13,14,15, 24,25,26,27,212,213,214,215})
223 //
224 // returns {2,0,5,7,10,8,13,15, 22,20,25,27,210,28,213,215}
225 //
226 // (don't forget that the binary constant is written big-endian).
227
228 - go: concatSelectedConstantGrouped
229 commutative: false
230 out:
231 - elemBits: 64
232 bits: 512
233 documentation: !string |-
234 // NAME concatenates selected elements from 128-bit subvectors of x and y
235 // into the lower and upper halves of corresponding subvectors of the output.
236 // The selections are specified by the constant parameter hilos where each
237 // hi and lo pair select 64-bit elements from the corresponding 128-bit
238 // subvectors of x and y.
239 //
240 // For example {4,5,8,9,12,13,16,17}.NAME(0b11_00_11_10, {6,7,10,11,14,15,18,19})
241 // returns {4,7,9,11,12,14,17,19}; bit 0 is zero, selecting element 0 from x's
242 // least 128-bits (4), then 1, selects the element 1 from y's least 128-bits (7),
243 // then 1, selecting element 1 from x's next 128 bits (9), then 1,
244 // selecting element 1 from y's upper 128 bits (11). The next two 0 bits select
245 // the lower elements from x and y's 3rd 128 bit groups (12, 14), the last two
246 // 1 bits select the upper elements from x and y's last 128 bits (17, 19).
247 // This differs from the same method applied to a 32x8 or 32x16 vector, where
248 // the 8-bit constant performs the same selection on all the subvectors.
249
250 - go: Select128FromPair
251 commutative: false
252 documentation: !string |-
253 // NAME treats the 256-bit vectors x and y as a single vector of four
254 // 128-bit elements, and returns a 256-bit result formed by
255 // concatenating the two elements specified by lo and hi.
256
257 - go: ConcatShiftBytesRight
258 commutative: false
259 documentation: !string |-
260 // NAME concatenates x and y and shift it right by shift bytes.
261 // The result vector will be the lower half of the concatenated vector.
262
263 - go: ConcatShiftBytesRightGrouped
264 commutative: false
265 documentation: !string |-
266 // NAME concatenates x and y and shift it right by shift bytes.
267 // The result vector will be the lower half of the concatenated vector.
268 // This operation is performed grouped by each 16 byte.
269
View as plain text