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