1use super::*;
2
3impl Avx2 {
4 delegate!({
5 fn _mm256_abs_epi32(a: __m256i) -> __m256i;
6 fn _mm256_abs_epi16(a: __m256i) -> __m256i;
7 fn _mm256_abs_epi8(a: __m256i) -> __m256i;
8 fn _mm256_add_epi64(a: __m256i, b: __m256i) -> __m256i;
9 fn _mm256_add_epi32(a: __m256i, b: __m256i) -> __m256i;
10 fn _mm256_add_epi16(a: __m256i, b: __m256i) -> __m256i;
11 fn _mm256_add_epi8(a: __m256i, b: __m256i) -> __m256i;
12 fn _mm256_adds_epi8(a: __m256i, b: __m256i) -> __m256i;
13 fn _mm256_adds_epi16(a: __m256i, b: __m256i) -> __m256i;
14 fn _mm256_adds_epu8(a: __m256i, b: __m256i) -> __m256i;
15 fn _mm256_adds_epu16(a: __m256i, b: __m256i) -> __m256i;
16 fn _mm256_alignr_epi8<const IMM8: i32>(a: __m256i, b: __m256i) -> __m256i;
17 fn _mm256_and_si256(a: __m256i, b: __m256i) -> __m256i;
18 fn _mm256_andnot_si256(a: __m256i, b: __m256i) -> __m256i;
19 fn _mm256_avg_epu16(a: __m256i, b: __m256i) -> __m256i;
20 fn _mm256_avg_epu8(a: __m256i, b: __m256i) -> __m256i;
21 fn _mm_blend_epi32<const IMM4: i32>(a: __m128i, b: __m128i) -> __m128i;
22 fn _mm256_blend_epi32<const IMM8: i32>(a: __m256i, b: __m256i) -> __m256i;
23 fn _mm256_blend_epi16<const IMM8: i32>(a: __m256i, b: __m256i) -> __m256i;
24 fn _mm256_blendv_epi8(a: __m256i, b: __m256i, mask: __m256i) -> __m256i;
25 fn _mm_broadcastb_epi8(a: __m128i) -> __m128i;
26 fn _mm256_broadcastb_epi8(a: __m128i) -> __m256i;
27 fn _mm_broadcastd_epi32(a: __m128i) -> __m128i;
28 fn _mm256_broadcastd_epi32(a: __m128i) -> __m256i;
29 fn _mm_broadcastq_epi64(a: __m128i) -> __m128i;
30 fn _mm256_broadcastq_epi64(a: __m128i) -> __m256i;
31 fn _mm_broadcastsd_pd(a: __m128d) -> __m128d;
32 fn _mm256_broadcastsd_pd(a: __m128d) -> __m256d;
33 fn _mm256_broadcastsi128_si256(a: __m128i) -> __m256i;
34 fn _mm_broadcastss_ps(a: __m128) -> __m128;
35 fn _mm256_broadcastss_ps(a: __m128) -> __m256;
36 fn _mm_broadcastw_epi16(a: __m128i) -> __m128i;
37 fn _mm256_broadcastw_epi16(a: __m128i) -> __m256i;
38 fn _mm256_cmpeq_epi64(a: __m256i, b: __m256i) -> __m256i;
39 fn _mm256_cmpeq_epi32(a: __m256i, b: __m256i) -> __m256i;
40 fn _mm256_cmpeq_epi16(a: __m256i, b: __m256i) -> __m256i;
41 fn _mm256_cmpeq_epi8(a: __m256i, b: __m256i) -> __m256i;
42 fn _mm256_cmpgt_epi64(a: __m256i, b: __m256i) -> __m256i;
43 fn _mm256_cmpgt_epi32(a: __m256i, b: __m256i) -> __m256i;
44 fn _mm256_cmpgt_epi16(a: __m256i, b: __m256i) -> __m256i;
45 fn _mm256_cmpgt_epi8(a: __m256i, b: __m256i) -> __m256i;
46 fn _mm256_cvtepi16_epi32(a: __m128i) -> __m256i;
47 fn _mm256_cvtepi16_epi64(a: __m128i) -> __m256i;
48 fn _mm256_cvtepi32_epi64(a: __m128i) -> __m256i;
49 fn _mm256_cvtepi8_epi16(a: __m128i) -> __m256i;
50 fn _mm256_cvtepi8_epi32(a: __m128i) -> __m256i;
51 fn _mm256_cvtepi8_epi64(a: __m128i) -> __m256i;
52 fn _mm256_cvtepu16_epi32(a: __m128i) -> __m256i;
53 fn _mm256_cvtepu16_epi64(a: __m128i) -> __m256i;
54 fn _mm256_cvtepu32_epi64(a: __m128i) -> __m256i;
55 fn _mm256_cvtepu8_epi16(a: __m128i) -> __m256i;
56 fn _mm256_cvtepu8_epi32(a: __m128i) -> __m256i;
57 fn _mm256_cvtepu8_epi64(a: __m128i) -> __m256i;
58 fn _mm256_extracti128_si256<const IMM1: i32>(a: __m256i) -> __m128i;
59 fn _mm256_hadd_epi16(a: __m256i, b: __m256i) -> __m256i;
60 fn _mm256_hadd_epi32(a: __m256i, b: __m256i) -> __m256i;
61 fn _mm256_hadds_epi16(a: __m256i, b: __m256i) -> __m256i;
62 fn _mm256_hsub_epi16(a: __m256i, b: __m256i) -> __m256i;
63 fn _mm256_hsub_epi32(a: __m256i, b: __m256i) -> __m256i;
64 fn _mm256_hsubs_epi16(a: __m256i, b: __m256i) -> __m256i;
65 unsafe fn _mm_i32gather_epi32<const SCALE: i32>(
66 slice: *const i32,
67 offsets: __m128i,
68 ) -> __m128i;
69 unsafe fn _mm_mask_i32gather_epi32<const SCALE: i32>(
70 src: __m128i,
71 slice: *const i32,
72 offsets: __m128i,
73 mask: __m128i,
74 ) -> __m128i;
75 unsafe fn _mm256_i32gather_epi32<const SCALE: i32>(
76 slice: *const i32,
77 offsets: __m256i,
78 ) -> __m256i;
79 unsafe fn _mm256_mask_i32gather_epi32<const SCALE: i32>(
80 src: __m256i,
81 slice: *const i32,
82 offsets: __m256i,
83 mask: __m256i,
84 ) -> __m256i;
85 unsafe fn _mm_i32gather_ps<const SCALE: i32>(slice: *const f32, offsets: __m128i)
86 -> __m128;
87 unsafe fn _mm_mask_i32gather_ps<const SCALE: i32>(
88 src: __m128,
89 slice: *const f32,
90 offsets: __m128i,
91 mask: __m128,
92 ) -> __m128;
93 unsafe fn _mm256_i32gather_ps<const SCALE: i32>(
94 slice: *const f32,
95 offsets: __m256i,
96 ) -> __m256;
97 unsafe fn _mm256_mask_i32gather_ps<const SCALE: i32>(
98 src: __m256,
99 slice: *const f32,
100 offsets: __m256i,
101 mask: __m256,
102 ) -> __m256;
103 unsafe fn _mm_i32gather_epi64<const SCALE: i32>(
104 slice: *const i64,
105 offsets: __m128i,
106 ) -> __m128i;
107 unsafe fn _mm_mask_i32gather_epi64<const SCALE: i32>(
108 src: __m128i,
109 slice: *const i64,
110 offsets: __m128i,
111 mask: __m128i,
112 ) -> __m128i;
113 unsafe fn _mm256_i32gather_epi64<const SCALE: i32>(
114 slice: *const i64,
115 offsets: __m128i,
116 ) -> __m256i;
117 unsafe fn _mm256_mask_i32gather_epi64<const SCALE: i32>(
118 src: __m256i,
119 slice: *const i64,
120 offsets: __m128i,
121 mask: __m256i,
122 ) -> __m256i;
123 unsafe fn _mm_i32gather_pd<const SCALE: i32>(
124 slice: *const f64,
125 offsets: __m128i,
126 ) -> __m128d;
127 unsafe fn _mm_mask_i32gather_pd<const SCALE: i32>(
128 src: __m128d,
129 slice: *const f64,
130 offsets: __m128i,
131 mask: __m128d,
132 ) -> __m128d;
133 unsafe fn _mm256_i32gather_pd<const SCALE: i32>(
134 slice: *const f64,
135 offsets: __m128i,
136 ) -> __m256d;
137 unsafe fn _mm256_mask_i32gather_pd<const SCALE: i32>(
138 src: __m256d,
139 slice: *const f64,
140 offsets: __m128i,
141 mask: __m256d,
142 ) -> __m256d;
143 unsafe fn _mm_i64gather_epi32<const SCALE: i32>(
144 slice: *const i32,
145 offsets: __m128i,
146 ) -> __m128i;
147 unsafe fn _mm_mask_i64gather_epi32<const SCALE: i32>(
148 src: __m128i,
149 slice: *const i32,
150 offsets: __m128i,
151 mask: __m128i,
152 ) -> __m128i;
153 unsafe fn _mm256_i64gather_epi32<const SCALE: i32>(
154 slice: *const i32,
155 offsets: __m256i,
156 ) -> __m128i;
157 unsafe fn _mm256_mask_i64gather_epi32<const SCALE: i32>(
158 src: __m128i,
159 slice: *const i32,
160 offsets: __m256i,
161 mask: __m128i,
162 ) -> __m128i;
163 unsafe fn _mm_i64gather_ps<const SCALE: i32>(slice: *const f32, offsets: __m128i)
164 -> __m128;
165 unsafe fn _mm_mask_i64gather_ps<const SCALE: i32>(
166 src: __m128,
167 slice: *const f32,
168 offsets: __m128i,
169 mask: __m128,
170 ) -> __m128;
171 unsafe fn _mm256_i64gather_ps<const SCALE: i32>(
172 slice: *const f32,
173 offsets: __m256i,
174 ) -> __m128;
175 unsafe fn _mm256_mask_i64gather_ps<const SCALE: i32>(
176 src: __m128,
177 slice: *const f32,
178 offsets: __m256i,
179 mask: __m128,
180 ) -> __m128;
181 unsafe fn _mm_i64gather_epi64<const SCALE: i32>(
182 slice: *const i64,
183 offsets: __m128i,
184 ) -> __m128i;
185 unsafe fn _mm_mask_i64gather_epi64<const SCALE: i32>(
186 src: __m128i,
187 slice: *const i64,
188 offsets: __m128i,
189 mask: __m128i,
190 ) -> __m128i;
191 unsafe fn _mm256_i64gather_epi64<const SCALE: i32>(
192 slice: *const i64,
193 offsets: __m256i,
194 ) -> __m256i;
195 unsafe fn _mm256_mask_i64gather_epi64<const SCALE: i32>(
196 src: __m256i,
197 slice: *const i64,
198 offsets: __m256i,
199 mask: __m256i,
200 ) -> __m256i;
201 unsafe fn _mm_i64gather_pd<const SCALE: i32>(
202 slice: *const f64,
203 offsets: __m128i,
204 ) -> __m128d;
205 unsafe fn _mm_mask_i64gather_pd<const SCALE: i32>(
206 src: __m128d,
207 slice: *const f64,
208 offsets: __m128i,
209 mask: __m128d,
210 ) -> __m128d;
211 unsafe fn _mm256_i64gather_pd<const SCALE: i32>(
212 slice: *const f64,
213 offsets: __m256i,
214 ) -> __m256d;
215 unsafe fn _mm256_mask_i64gather_pd<const SCALE: i32>(
216 src: __m256d,
217 slice: *const f64,
218 offsets: __m256i,
219 mask: __m256d,
220 ) -> __m256d;
221 fn _mm256_inserti128_si256<const IMM1: i32>(a: __m256i, b: __m128i) -> __m256i;
222 fn _mm256_madd_epi16(a: __m256i, b: __m256i) -> __m256i;
223 fn _mm256_maddubs_epi16(a: __m256i, b: __m256i) -> __m256i;
224 unsafe fn _mm_maskload_epi32(mem_addr: *const i32, mask: __m128i) -> __m128i;
225 unsafe fn _mm256_maskload_epi32(mem_addr: *const i32, mask: __m256i) -> __m256i;
226 unsafe fn _mm_maskload_epi64(mem_addr: *const i64, mask: __m128i) -> __m128i;
227 unsafe fn _mm256_maskload_epi64(mem_addr: *const i64, mask: __m256i) -> __m256i;
228 unsafe fn _mm_maskstore_epi32(mem_addr: *mut i32, mask: __m128i, a: __m128i);
229 unsafe fn _mm256_maskstore_epi32(mem_addr: *mut i32, mask: __m256i, a: __m256i);
230 unsafe fn _mm_maskstore_epi64(mem_addr: *mut i64, mask: __m128i, a: __m128i);
231 unsafe fn _mm256_maskstore_epi64(mem_addr: *mut i64, mask: __m256i, a: __m256i);
232 fn _mm256_max_epi16(a: __m256i, b: __m256i) -> __m256i;
233 fn _mm256_max_epi32(a: __m256i, b: __m256i) -> __m256i;
234 fn _mm256_max_epi8(a: __m256i, b: __m256i) -> __m256i;
235 fn _mm256_max_epu16(a: __m256i, b: __m256i) -> __m256i;
236 fn _mm256_max_epu32(a: __m256i, b: __m256i) -> __m256i;
237 fn _mm256_max_epu8(a: __m256i, b: __m256i) -> __m256i;
238 fn _mm256_min_epi16(a: __m256i, b: __m256i) -> __m256i;
239 fn _mm256_min_epi32(a: __m256i, b: __m256i) -> __m256i;
240 fn _mm256_min_epi8(a: __m256i, b: __m256i) -> __m256i;
241 fn _mm256_min_epu16(a: __m256i, b: __m256i) -> __m256i;
242 fn _mm256_min_epu32(a: __m256i, b: __m256i) -> __m256i;
243 fn _mm256_min_epu8(a: __m256i, b: __m256i) -> __m256i;
244 fn _mm256_movemask_epi8(a: __m256i) -> i32;
245 fn _mm256_mpsadbw_epu8<const IMM8: i32>(a: __m256i, b: __m256i) -> __m256i;
246 fn _mm256_mul_epi32(a: __m256i, b: __m256i) -> __m256i;
247 fn _mm256_mul_epu32(a: __m256i, b: __m256i) -> __m256i;
248 fn _mm256_mulhi_epi16(a: __m256i, b: __m256i) -> __m256i;
249 fn _mm256_mulhi_epu16(a: __m256i, b: __m256i) -> __m256i;
250 fn _mm256_mullo_epi16(a: __m256i, b: __m256i) -> __m256i;
251 fn _mm256_mullo_epi32(a: __m256i, b: __m256i) -> __m256i;
252 fn _mm256_mulhrs_epi16(a: __m256i, b: __m256i) -> __m256i;
253 fn _mm256_or_si256(a: __m256i, b: __m256i) -> __m256i;
254 fn _mm256_packs_epi16(a: __m256i, b: __m256i) -> __m256i;
255 fn _mm256_packs_epi32(a: __m256i, b: __m256i) -> __m256i;
256 fn _mm256_packus_epi16(a: __m256i, b: __m256i) -> __m256i;
257 fn _mm256_packus_epi32(a: __m256i, b: __m256i) -> __m256i;
258 fn _mm256_permutevar8x32_epi32(a: __m256i, b: __m256i) -> __m256i;
259 fn _mm256_permute4x64_epi64<const IMM8: i32>(a: __m256i) -> __m256i;
260 fn _mm256_permute2x128_si256<const IMM8: i32>(a: __m256i, b: __m256i) -> __m256i;
261 fn _mm256_permute4x64_pd<const IMM8: i32>(a: __m256d) -> __m256d;
262 fn _mm256_permutevar8x32_ps(a: __m256, idx: __m256i) -> __m256;
263 fn _mm256_sad_epu8(a: __m256i, b: __m256i) -> __m256i;
264 fn _mm256_shuffle_epi8(a: __m256i, b: __m256i) -> __m256i;
265 fn _mm256_shuffle_epi32<const MASK: i32>(a: __m256i) -> __m256i;
266 fn _mm256_shufflehi_epi16<const IMM8: i32>(a: __m256i) -> __m256i;
267 fn _mm256_shufflelo_epi16<const IMM8: i32>(a: __m256i) -> __m256i;
268 fn _mm256_sign_epi16(a: __m256i, b: __m256i) -> __m256i;
269 fn _mm256_sign_epi32(a: __m256i, b: __m256i) -> __m256i;
270 fn _mm256_sign_epi8(a: __m256i, b: __m256i) -> __m256i;
271 fn _mm256_sll_epi16(a: __m256i, count: __m128i) -> __m256i;
272 fn _mm256_sll_epi32(a: __m256i, count: __m128i) -> __m256i;
273 fn _mm256_sll_epi64(a: __m256i, count: __m128i) -> __m256i;
274 fn _mm256_slli_epi16<const IMM8: i32>(a: __m256i) -> __m256i;
275 fn _mm256_slli_epi32<const IMM8: i32>(a: __m256i) -> __m256i;
276 fn _mm256_slli_epi64<const IMM8: i32>(a: __m256i) -> __m256i;
277 fn _mm256_slli_si256<const IMM8: i32>(a: __m256i) -> __m256i;
278 fn _mm256_bslli_epi128<const IMM8: i32>(a: __m256i) -> __m256i;
279 fn _mm_sllv_epi32(a: __m128i, count: __m128i) -> __m128i;
280 fn _mm256_sllv_epi32(a: __m256i, count: __m256i) -> __m256i;
281 fn _mm_sllv_epi64(a: __m128i, count: __m128i) -> __m128i;
282 fn _mm256_sllv_epi64(a: __m256i, count: __m256i) -> __m256i;
283 fn _mm256_sra_epi16(a: __m256i, count: __m128i) -> __m256i;
284 fn _mm256_sra_epi32(a: __m256i, count: __m128i) -> __m256i;
285 fn _mm256_srai_epi16<const IMM8: i32>(a: __m256i) -> __m256i;
286 fn _mm256_srai_epi32<const IMM8: i32>(a: __m256i) -> __m256i;
287 fn _mm_srav_epi32(a: __m128i, count: __m128i) -> __m128i;
288 fn _mm256_srav_epi32(a: __m256i, count: __m256i) -> __m256i;
289 fn _mm256_srli_si256<const IMM8: i32>(a: __m256i) -> __m256i;
290 fn _mm256_bsrli_epi128<const IMM8: i32>(a: __m256i) -> __m256i;
291 fn _mm256_srl_epi16(a: __m256i, count: __m128i) -> __m256i;
292 fn _mm256_srl_epi32(a: __m256i, count: __m128i) -> __m256i;
293 fn _mm256_srl_epi64(a: __m256i, count: __m128i) -> __m256i;
294 fn _mm256_srli_epi16<const IMM8: i32>(a: __m256i) -> __m256i;
295 fn _mm256_srli_epi32<const IMM8: i32>(a: __m256i) -> __m256i;
296 fn _mm256_srli_epi64<const IMM8: i32>(a: __m256i) -> __m256i;
297 fn _mm_srlv_epi32(a: __m128i, count: __m128i) -> __m128i;
298 fn _mm256_srlv_epi32(a: __m256i, count: __m256i) -> __m256i;
299 fn _mm_srlv_epi64(a: __m128i, count: __m128i) -> __m128i;
300 fn _mm256_srlv_epi64(a: __m256i, count: __m256i) -> __m256i;
301 fn _mm256_sub_epi16(a: __m256i, b: __m256i) -> __m256i;
302 fn _mm256_sub_epi32(a: __m256i, b: __m256i) -> __m256i;
303 fn _mm256_sub_epi64(a: __m256i, b: __m256i) -> __m256i;
304 fn _mm256_sub_epi8(a: __m256i, b: __m256i) -> __m256i;
305 fn _mm256_subs_epi16(a: __m256i, b: __m256i) -> __m256i;
306 fn _mm256_subs_epi8(a: __m256i, b: __m256i) -> __m256i;
307 fn _mm256_subs_epu16(a: __m256i, b: __m256i) -> __m256i;
308 fn _mm256_subs_epu8(a: __m256i, b: __m256i) -> __m256i;
309 fn _mm256_unpackhi_epi8(a: __m256i, b: __m256i) -> __m256i;
310 fn _mm256_unpacklo_epi8(a: __m256i, b: __m256i) -> __m256i;
311 fn _mm256_unpackhi_epi16(a: __m256i, b: __m256i) -> __m256i;
312 fn _mm256_unpacklo_epi16(a: __m256i, b: __m256i) -> __m256i;
313 fn _mm256_unpackhi_epi32(a: __m256i, b: __m256i) -> __m256i;
314 fn _mm256_unpacklo_epi32(a: __m256i, b: __m256i) -> __m256i;
315 fn _mm256_unpackhi_epi64(a: __m256i, b: __m256i) -> __m256i;
316 fn _mm256_unpacklo_epi64(a: __m256i, b: __m256i) -> __m256i;
317 fn _mm256_xor_si256(a: __m256i, b: __m256i) -> __m256i;
318 fn _mm256_extract_epi8<const INDEX: i32>(a: __m256i) -> i32;
319 fn _mm256_extract_epi16<const INDEX: i32>(a: __m256i) -> i32;
320 fn _mm256_extract_epi32<const INDEX: i32>(a: __m256i) -> i32;
321 fn _mm256_cvtsd_f64(a: __m256d) -> f64;
322 fn _mm256_cvtsi256_si32(a: __m256i) -> i32;
323 });
324}