1 // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
11 // DO NOT EDIT: autogenerated by etc/platform-intrinsics/generator.py
12 // ignore-tidy-linelength
14 #![allow(unused_imports)]
16 use {Intrinsic, Type};
17 use IntrinsicDef::Named;
19 // The default inlining settings trigger a pathological behaviour in
20 // LLVM, which causes makes compilation very slow. See #28273.
22 pub fn find(name: &str) -> Option<Intrinsic> {
23 if !name.starts_with("x86") { return None }
24 Some(match &name["x86".len()..] {
25 "_mm256_abs_epi8" => Intrinsic {
26 inputs: { static INPUTS: [&'static Type; 1] = [&::I8x32]; &INPUTS },
28 definition: Named("llvm.x86.avx2.pabs.b")
30 "_mm256_abs_epi16" => Intrinsic {
31 inputs: { static INPUTS: [&'static Type; 1] = [&::I16x16]; &INPUTS },
33 definition: Named("llvm.x86.avx2.pabs.w")
35 "_mm256_abs_epi32" => Intrinsic {
36 inputs: { static INPUTS: [&'static Type; 1] = [&::I32x8]; &INPUTS },
38 definition: Named("llvm.x86.avx2.pabs.d")
40 "_mm256_adds_epi8" => Intrinsic {
41 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x32, &::I8x32]; &INPUTS },
43 definition: Named("llvm.x86.avx2.padds.b")
45 "_mm256_adds_epu8" => Intrinsic {
46 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x32, &::U8x32]; &INPUTS },
48 definition: Named("llvm.x86.avx2.paddus.b")
50 "_mm256_adds_epi16" => Intrinsic {
51 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
53 definition: Named("llvm.x86.avx2.padds.w")
55 "_mm256_adds_epu16" => Intrinsic {
56 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x16, &::U16x16]; &INPUTS },
58 definition: Named("llvm.x86.avx2.paddus.w")
60 "_mm256_avg_epu8" => Intrinsic {
61 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x32, &::U8x32]; &INPUTS },
63 definition: Named("llvm.x86.avx2.pavg.b")
65 "_mm256_avg_epu16" => Intrinsic {
66 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x16, &::U16x16]; &INPUTS },
68 definition: Named("llvm.x86.avx2.pavg.w")
70 "_mm256_hadd_epi16" => Intrinsic {
71 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
73 definition: Named("llvm.x86.avx2.phadd.w")
75 "_mm256_hadd_epi32" => Intrinsic {
76 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x8, &::I32x8]; &INPUTS },
78 definition: Named("llvm.x86.avx2.phadd.d")
80 "_mm256_hadds_epi16" => Intrinsic {
81 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
83 definition: Named("llvm.x86.avx2.phadd.sw")
85 "_mm256_hsub_epi16" => Intrinsic {
86 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
88 definition: Named("llvm.x86.avx2.phsub.w")
90 "_mm256_hsub_epi32" => Intrinsic {
91 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x8, &::I32x8]; &INPUTS },
93 definition: Named("llvm.x86.avx2.phsub.d")
95 "_mm256_hsubs_epi16" => Intrinsic {
96 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
98 definition: Named("llvm.x86.avx2.phsub.sw")
100 "_mm256_madd_epi16" => Intrinsic {
101 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
103 definition: Named("llvm.x86.avx2.pmadd.wd")
105 "_mm256_maddubs_epi16" => Intrinsic {
106 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x32, &::I8x32]; &INPUTS },
108 definition: Named("llvm.x86.avx2.pmadd.ub.sw")
110 "_mm_mask_i32gather_epi32" => Intrinsic {
111 inputs: { static INPUTS: [&'static Type; 5] = [&::I32x4, { static PTR: Type = Type::Pointer(&::I32, Some(&::I8), true); &PTR }, &::I32x4, &::I32x4, &::I32_8]; &INPUTS },
113 definition: Named("llvm.x86.avx2.gather.d.d")
115 "_mm_mask_i32gather_ps" => Intrinsic {
116 inputs: { static INPUTS: [&'static Type; 5] = [&::F32x4, { static PTR: Type = Type::Pointer(&::F32, Some(&::I8), true); &PTR }, &::I32x4, &::I32x4_F32, &::I32_8]; &INPUTS },
118 definition: Named("llvm.x86.avx2.gather.d.ps")
120 "_mm256_mask_i32gather_epi32" => Intrinsic {
121 inputs: { static INPUTS: [&'static Type; 5] = [&::I32x8, { static PTR: Type = Type::Pointer(&::I32, Some(&::I8), true); &PTR }, &::I32x8, &::I32x8, &::I32_8]; &INPUTS },
123 definition: Named("llvm.x86.avx2.gather.d.d.256")
125 "_mm256_mask_i32gather_ps" => Intrinsic {
126 inputs: { static INPUTS: [&'static Type; 5] = [&::F32x8, { static PTR: Type = Type::Pointer(&::F32, Some(&::I8), true); &PTR }, &::I32x8, &::I32x8_F32, &::I32_8]; &INPUTS },
128 definition: Named("llvm.x86.avx2.gather.d.ps.256")
130 "_mm_mask_i32gather_epi64" => Intrinsic {
131 inputs: { static INPUTS: [&'static Type; 5] = [&::I64x2, { static PTR: Type = Type::Pointer(&::I64, Some(&::I8), true); &PTR }, &::I32x4, &::I64x2, &::I32_8]; &INPUTS },
133 definition: Named("llvm.x86.avx2.gather.d.q")
135 "_mm_mask_i32gather_pd" => Intrinsic {
136 inputs: { static INPUTS: [&'static Type; 5] = [&::F64x2, { static PTR: Type = Type::Pointer(&::F64, Some(&::I8), true); &PTR }, &::I32x4, &::I64x2_F64, &::I32_8]; &INPUTS },
138 definition: Named("llvm.x86.avx2.gather.d.pd")
140 "_mm256_mask_i32gather_epi64" => Intrinsic {
141 inputs: { static INPUTS: [&'static Type; 5] = [&::I64x4, { static PTR: Type = Type::Pointer(&::I64, Some(&::I8), true); &PTR }, &::I32x4, &::I64x4, &::I32_8]; &INPUTS },
143 definition: Named("llvm.x86.avx2.gather.d.q.256")
145 "_mm256_mask_i32gather_pd" => Intrinsic {
146 inputs: { static INPUTS: [&'static Type; 5] = [&::F64x4, { static PTR: Type = Type::Pointer(&::F64, Some(&::I8), true); &PTR }, &::I32x4, &::I64x4_F64, &::I32_8]; &INPUTS },
148 definition: Named("llvm.x86.avx2.gather.d.pd.256")
150 "_mm_mask_i64gather_epi32" => Intrinsic {
151 inputs: { static INPUTS: [&'static Type; 5] = [&::I32x4, { static PTR: Type = Type::Pointer(&::I32, Some(&::I8), true); &PTR }, &::I64x2, &::I32x4, &::I32_8]; &INPUTS },
153 definition: Named("llvm.x86.avx2.gather.q.d")
155 "_mm_mask_i64gather_ps" => Intrinsic {
156 inputs: { static INPUTS: [&'static Type; 5] = [&::F32x4, { static PTR: Type = Type::Pointer(&::F32, Some(&::I8), true); &PTR }, &::I64x2, &::I32x4_F32, &::I32_8]; &INPUTS },
158 definition: Named("llvm.x86.avx2.gather.q.ps")
160 "_mm256_mask_i64gather_epi32" => Intrinsic {
161 inputs: { static INPUTS: [&'static Type; 5] = [&::I32x4, { static PTR: Type = Type::Pointer(&::I32, Some(&::I8), true); &PTR }, &::I64x4, &::I32x4, &::I32_8]; &INPUTS },
163 definition: Named("llvm.x86.avx2.gather.q.d")
165 "_mm256_mask_i64gather_ps" => Intrinsic {
166 inputs: { static INPUTS: [&'static Type; 5] = [&::F32x4, { static PTR: Type = Type::Pointer(&::F32, Some(&::I8), true); &PTR }, &::I64x4, &::I32x4_F32, &::I32_8]; &INPUTS },
168 definition: Named("llvm.x86.avx2.gather.q.ps")
170 "_mm_mask_i64gather_epi64" => Intrinsic {
171 inputs: { static INPUTS: [&'static Type; 5] = [&::I64x2, { static PTR: Type = Type::Pointer(&::I64, Some(&::I8), true); &PTR }, &::I64x2, &::I64x2, &::I32_8]; &INPUTS },
173 definition: Named("llvm.x86.avx2.gather.q.q")
175 "_mm_mask_i64gather_pd" => Intrinsic {
176 inputs: { static INPUTS: [&'static Type; 5] = [&::F64x2, { static PTR: Type = Type::Pointer(&::F64, Some(&::I8), true); &PTR }, &::I64x2, &::I64x2_F64, &::I32_8]; &INPUTS },
178 definition: Named("llvm.x86.avx2.gather.q.pd")
180 "_mm256_mask_i64gather_epi64" => Intrinsic {
181 inputs: { static INPUTS: [&'static Type; 5] = [&::I64x4, { static PTR: Type = Type::Pointer(&::I64, Some(&::I8), true); &PTR }, &::I64x4, &::I64x4, &::I32_8]; &INPUTS },
183 definition: Named("llvm.x86.avx2.gather.q.q.256")
185 "_mm256_mask_i64gather_pd" => Intrinsic {
186 inputs: { static INPUTS: [&'static Type; 5] = [&::F64x4, { static PTR: Type = Type::Pointer(&::F64, Some(&::I8), true); &PTR }, &::I64x4, &::I64x4_F64, &::I32_8]; &INPUTS },
188 definition: Named("llvm.x86.avx2.gather.q.pd.256")
190 "_mm_maskload_epi32" => Intrinsic {
191 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::I32x4, Some(&::I8), true); &PTR }, &::I32x4]; &INPUTS },
193 definition: Named("llvm.x86.avx2.maskload.d")
195 "_mm_maskload_epi64" => Intrinsic {
196 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::I64x2, Some(&::I8), true); &PTR }, &::I64x2]; &INPUTS },
198 definition: Named("llvm.x86.avx2.maskload.q")
200 "_mm256_maskload_epi32" => Intrinsic {
201 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::I32x8, Some(&::I8), true); &PTR }, &::I32x8]; &INPUTS },
203 definition: Named("llvm.x86.avx2.maskload.d.256")
205 "_mm256_maskload_epi64" => Intrinsic {
206 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::I64x4, Some(&::I8), true); &PTR }, &::I64x4]; &INPUTS },
208 definition: Named("llvm.x86.avx2.maskload.q.256")
210 "_mm_maskstore_epi32" => Intrinsic {
211 inputs: { static INPUTS: [&'static Type; 3] = [{ static PTR: Type = Type::Pointer(&::I32, Some(&::I8), false); &PTR }, &::I32x4, &::I32x4]; &INPUTS },
213 definition: Named("llvm.x86.avx2.maskstore.d")
215 "_mm_maskstore_epi64" => Intrinsic {
216 inputs: { static INPUTS: [&'static Type; 3] = [{ static PTR: Type = Type::Pointer(&::I64, Some(&::I8), false); &PTR }, &::I64x2, &::I64x2]; &INPUTS },
218 definition: Named("llvm.x86.avx2.maskstore.q")
220 "_mm256_maskstore_epi32" => Intrinsic {
221 inputs: { static INPUTS: [&'static Type; 3] = [{ static PTR: Type = Type::Pointer(&::I32, Some(&::I8), false); &PTR }, &::I32x8, &::I32x8]; &INPUTS },
223 definition: Named("llvm.x86.avx2.maskstore.d.256")
225 "_mm256_maskstore_epi64" => Intrinsic {
226 inputs: { static INPUTS: [&'static Type; 3] = [{ static PTR: Type = Type::Pointer(&::I64, Some(&::I8), false); &PTR }, &::I64x4, &::I64x4]; &INPUTS },
228 definition: Named("llvm.x86.avx2.maskstore.q.256")
230 "_mm256_max_epi8" => Intrinsic {
231 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x32, &::I8x32]; &INPUTS },
233 definition: Named("llvm.x86.avx2.pmaxs.b")
235 "_mm256_max_epu8" => Intrinsic {
236 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x32, &::U8x32]; &INPUTS },
238 definition: Named("llvm.x86.avx2.pmaxu.b")
240 "_mm256_max_epi16" => Intrinsic {
241 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
243 definition: Named("llvm.x86.avx2.pmaxs.w")
245 "_mm256_max_epu16" => Intrinsic {
246 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x16, &::U16x16]; &INPUTS },
248 definition: Named("llvm.x86.avx2.pmaxu.w")
250 "_mm256_max_epi32" => Intrinsic {
251 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x8, &::I32x8]; &INPUTS },
253 definition: Named("llvm.x86.avx2.pmaxs.d")
255 "_mm256_max_epu32" => Intrinsic {
256 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x8, &::U32x8]; &INPUTS },
258 definition: Named("llvm.x86.avx2.pmaxu.d")
260 "_mm256_min_epi8" => Intrinsic {
261 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x32, &::I8x32]; &INPUTS },
263 definition: Named("llvm.x86.avx2.pmins.b")
265 "_mm256_min_epu8" => Intrinsic {
266 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x32, &::U8x32]; &INPUTS },
268 definition: Named("llvm.x86.avx2.pminu.b")
270 "_mm256_min_epi16" => Intrinsic {
271 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
273 definition: Named("llvm.x86.avx2.pmins.w")
275 "_mm256_min_epu16" => Intrinsic {
276 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x16, &::U16x16]; &INPUTS },
278 definition: Named("llvm.x86.avx2.pminu.w")
280 "_mm256_min_epi32" => Intrinsic {
281 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x8, &::I32x8]; &INPUTS },
283 definition: Named("llvm.x86.avx2.pmins.d")
285 "_mm256_min_epu32" => Intrinsic {
286 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x8, &::U32x8]; &INPUTS },
288 definition: Named("llvm.x86.avx2.pminu.d")
290 "_mm256_movemask_epi8" => Intrinsic {
291 inputs: { static INPUTS: [&'static Type; 1] = [&::I8x32]; &INPUTS },
293 definition: Named("llvm.x86.avx2.pmovmskb")
295 "_mm256_mpsadbw_epu8" => Intrinsic {
296 inputs: { static INPUTS: [&'static Type; 3] = [&::U8x32, &::U8x32, &::I32_8]; &INPUTS },
298 definition: Named("llvm.x86.avx2.mpsadbw")
300 "_mm256_mul_epi64" => Intrinsic {
301 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x8, &::I32x8]; &INPUTS },
303 definition: Named("llvm.x86.avx2.pmulq.dq")
305 "_mm256_mul_epu64" => Intrinsic {
306 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x8, &::U32x8]; &INPUTS },
308 definition: Named("llvm.x86.avx2.pmulq.dq")
310 "_mm256_mulhi_epi16" => Intrinsic {
311 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
313 definition: Named("llvm.x86.avx2.pmulhw.w")
315 "_mm256_mulhi_epu16" => Intrinsic {
316 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x16, &::U16x16]; &INPUTS },
318 definition: Named("llvm.x86.avx2.pmulhw.w")
320 "_mm256_mulhrs_epi16" => Intrinsic {
321 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
323 definition: Named("llvm.x86.avx2.pmul.hr.sw")
325 "_mm256_packs_epi16" => Intrinsic {
326 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
328 definition: Named("llvm.x86.avx2.packsswb")
330 "_mm256_packus_epi16" => Intrinsic {
331 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
333 definition: Named("llvm.x86.avx2.packuswb")
335 "_mm256_packs_epi32" => Intrinsic {
336 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x8, &::I32x8]; &INPUTS },
338 definition: Named("llvm.x86.avx2.packssdw")
340 "_mm256_packus_epi32" => Intrinsic {
341 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x8, &::I32x8]; &INPUTS },
343 definition: Named("llvm.x86.avx2.packusdw")
345 "_mm256_permutevar8x32_epi32" => Intrinsic {
346 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x8, &::I32x8]; &INPUTS },
348 definition: Named("llvm.x86.avx2.permd")
350 "_mm256_permutevar8x32_ps" => Intrinsic {
351 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::I32x8]; &INPUTS },
353 definition: Named("llvm.x86.avx2.permps")
355 "_mm256_sad_epu8" => Intrinsic {
356 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x32, &::U8x32]; &INPUTS },
358 definition: Named("llvm.x86.avx2.psad.bw")
360 "_mm256_shuffle_epi8" => Intrinsic {
361 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x32, &::I8x32]; &INPUTS },
363 definition: Named("llvm.x86.avx2.pshuf.b")
365 "_mm256_sign_epi8" => Intrinsic {
366 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x32, &::I8x32]; &INPUTS },
368 definition: Named("llvm.x86.avx2.psign.b")
370 "_mm256_sign_epi16" => Intrinsic {
371 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
373 definition: Named("llvm.x86.avx2.psign.w")
375 "_mm256_sign_epi32" => Intrinsic {
376 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x8, &::I32x8]; &INPUTS },
378 definition: Named("llvm.x86.avx2.psign.d")
380 "_mm256_subs_epi8" => Intrinsic {
381 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x32, &::I8x32]; &INPUTS },
383 definition: Named("llvm.x86.avx2.psubs.b")
385 "_mm256_subs_epu8" => Intrinsic {
386 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x32, &::U8x32]; &INPUTS },
388 definition: Named("llvm.x86.avx2.psubus.b")
390 "_mm256_subs_epi16" => Intrinsic {
391 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x16, &::I16x16]; &INPUTS },
393 definition: Named("llvm.x86.avx2.psubs.w")
395 "_mm256_subs_epu16" => Intrinsic {
396 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x16, &::U16x16]; &INPUTS },
398 definition: Named("llvm.x86.avx2.psubus.w")
400 "_mm256_addsub_ps" => Intrinsic {
401 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::F32x8]; &INPUTS },
403 definition: Named("llvm.x86.avx.addsub.ps.256")
405 "_mm256_addsub_pd" => Intrinsic {
406 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x4, &::F64x4]; &INPUTS },
408 definition: Named("llvm.x86.avx.addsub.pd.256")
410 "_mm256_blendv_ps" => Intrinsic {
411 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x8, &::F32x8, &::F32x8]; &INPUTS },
413 definition: Named("llvm.x86.avx.blendv.ps.256")
415 "_mm256_blendv_pd" => Intrinsic {
416 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x4, &::F64x4, &::F64x4]; &INPUTS },
418 definition: Named("llvm.x86.avx.blendv.pd.256")
420 "_mm256_broadcast_ps" => Intrinsic {
421 inputs: { static INPUTS: [&'static Type; 1] = [{ static PTR: Type = Type::Pointer(&::I8, None, true); &PTR }]; &INPUTS },
423 definition: Named("llvm.x86.avx.vbroadcastf128.ps.256")
425 "_mm256_broadcast_pd" => Intrinsic {
426 inputs: { static INPUTS: [&'static Type; 1] = [{ static PTR: Type = Type::Pointer(&::I8, None, true); &PTR }]; &INPUTS },
428 definition: Named("llvm.x86.avx.vbroadcastf128.pd.256")
430 "_mm256_cmp_ps" => Intrinsic {
431 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x8, &::F32x8, &::I8]; &INPUTS },
433 definition: Named("llvm.x86.avx.cmp.ps.256")
435 "_mm256_cmp_pd" => Intrinsic {
436 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x4, &::F64x4, &::I8]; &INPUTS },
438 definition: Named("llvm.x86.avx.cmp.pd.256")
440 "_mm256_cvtepi32_pd" => Intrinsic {
441 inputs: { static INPUTS: [&'static Type; 1] = [&::I32x4]; &INPUTS },
443 definition: Named("llvm.x86.avx.cvtdq2.pd.256")
445 "_mm256_cvtepi32_ps" => Intrinsic {
446 inputs: { static INPUTS: [&'static Type; 1] = [&::I32x8]; &INPUTS },
448 definition: Named("llvm.x86.avx.cvtdq2.ps.256")
450 "_mm256_cvtpd_epi32" => Intrinsic {
451 inputs: { static INPUTS: [&'static Type; 1] = [&::F64x4]; &INPUTS },
453 definition: Named("llvm.x86.avx.cvt.pd2dq.256")
455 "_mm256_cvtpd_ps" => Intrinsic {
456 inputs: { static INPUTS: [&'static Type; 1] = [&::F64x4]; &INPUTS },
458 definition: Named("llvm.x86.avx.cvt.pd2.ps.256")
460 "_mm256_cvtps_epi32" => Intrinsic {
461 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x8]; &INPUTS },
463 definition: Named("llvm.x86.avx.cvt.ps2dq.256")
465 "_mm256_cvtps_pd" => Intrinsic {
466 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
468 definition: Named("llvm.x86.avx.cvt.ps2.pd.256")
470 "_mm256_cvttpd_epi32" => Intrinsic {
471 inputs: { static INPUTS: [&'static Type; 1] = [&::F64x4]; &INPUTS },
473 definition: Named("llvm.x86.avx.cvtt.pd2dq.256")
475 "_mm256_cvttps_epi32" => Intrinsic {
476 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x8]; &INPUTS },
478 definition: Named("llvm.x86.avx.cvtt.ps2dq.256")
480 "_mm256_dp_ps" => Intrinsic {
481 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x8, &::F32x8, &::I32_8]; &INPUTS },
483 definition: Named("llvm.x86.avx.dp.ps.256")
485 "_mm256_hadd_ps" => Intrinsic {
486 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::F32x8]; &INPUTS },
488 definition: Named("llvm.x86.avx.hadd.ps.256")
490 "_mm256_hadd_pd" => Intrinsic {
491 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x4, &::F64x4]; &INPUTS },
493 definition: Named("llvm.x86.avx.hadd.pd.256")
495 "_mm256_hsub_ps" => Intrinsic {
496 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::F32x8]; &INPUTS },
498 definition: Named("llvm.x86.avx.hsub.ps.256")
500 "_mm256_hsub_pd" => Intrinsic {
501 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x4, &::F64x4]; &INPUTS },
503 definition: Named("llvm.x86.avx.hsub.pd.256")
505 "_mm256_max_ps" => Intrinsic {
506 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::F32x8]; &INPUTS },
508 definition: Named("llvm.x86.avx.max.ps.256")
510 "_mm256_max_pd" => Intrinsic {
511 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x4, &::F64x4]; &INPUTS },
513 definition: Named("llvm.x86.avx.max.pd.256")
515 "_mm_maskload_ps" => Intrinsic {
516 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::F32, Some(&::I8), true); &PTR }, &::I32x4_F32]; &INPUTS },
518 definition: Named("llvm.x86.avx.maskload.ps")
520 "_mm_maskload_pd" => Intrinsic {
521 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::F64, Some(&::I8), true); &PTR }, &::I64x2_F64]; &INPUTS },
523 definition: Named("llvm.x86.avx.maskload.pd")
525 "_mm256_maskload_ps" => Intrinsic {
526 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::F32, Some(&::I8), true); &PTR }, &::I32x8_F32]; &INPUTS },
528 definition: Named("llvm.x86.avx.maskload.ps.256")
530 "_mm256_maskload_pd" => Intrinsic {
531 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::F64, Some(&::I8), true); &PTR }, &::I64x4_F64]; &INPUTS },
533 definition: Named("llvm.x86.avx.maskload.pd.256")
535 "_mm_maskstore_ps" => Intrinsic {
536 inputs: { static INPUTS: [&'static Type; 3] = [{ static PTR: Type = Type::Pointer(&::F32, Some(&::I8), false); &PTR }, &::I32x4_F32, &::F32x4]; &INPUTS },
538 definition: Named("llvm.x86.avx.maskstore.ps")
540 "_mm_maskstore_pd" => Intrinsic {
541 inputs: { static INPUTS: [&'static Type; 3] = [{ static PTR: Type = Type::Pointer(&::F64, Some(&::I8), false); &PTR }, &::I64x2_F64, &::F64x2]; &INPUTS },
543 definition: Named("llvm.x86.avx.maskstore.pd")
545 "_mm256_maskstore_ps" => Intrinsic {
546 inputs: { static INPUTS: [&'static Type; 3] = [{ static PTR: Type = Type::Pointer(&::F32, Some(&::I8), false); &PTR }, &::I32x8_F32, &::F32x8]; &INPUTS },
548 definition: Named("llvm.x86.avx.maskstore.ps.256")
550 "_mm256_maskstore_pd" => Intrinsic {
551 inputs: { static INPUTS: [&'static Type; 3] = [{ static PTR: Type = Type::Pointer(&::F64, Some(&::I8), false); &PTR }, &::I64x4_F64, &::F64x4]; &INPUTS },
553 definition: Named("llvm.x86.avx.maskstore.pd.256")
555 "_mm256_min_ps" => Intrinsic {
556 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::F32x8]; &INPUTS },
558 definition: Named("llvm.x86.avx.min.ps.256")
560 "_mm256_min_pd" => Intrinsic {
561 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x4, &::F64x4]; &INPUTS },
563 definition: Named("llvm.x86.avx.min.pd.256")
565 "_mm256_movemask_ps" => Intrinsic {
566 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x8]; &INPUTS },
568 definition: Named("llvm.x86.avx.movmsk.ps.256")
570 "_mm256_movemask_pd" => Intrinsic {
571 inputs: { static INPUTS: [&'static Type; 1] = [&::F64x4]; &INPUTS },
573 definition: Named("llvm.x86.avx.movmsk.pd.256")
575 "_mm_permutevar_ps" => Intrinsic {
576 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::I32x4]; &INPUTS },
578 definition: Named("llvm.x86.avx.vpermilvar.ps")
580 "_mm_permutevar_pd" => Intrinsic {
581 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x2, &::I64x2]; &INPUTS },
583 definition: Named("llvm.x86.avx.vpermilvar.pd")
585 "_mm256_permutevar_ps" => Intrinsic {
586 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::I32x8]; &INPUTS },
588 definition: Named("llvm.x86.avx.vpermilvar.ps.256")
590 "_mm256_permutevar_pd" => Intrinsic {
591 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x4, &::I64x4]; &INPUTS },
593 definition: Named("llvm.x86.avx.vpermilvar.pd.256")
595 "_mm256_rcp_ps" => Intrinsic {
596 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x8]; &INPUTS },
598 definition: Named("llvm.x86.avx.rcp.ps.256")
600 "_mm256_rsqrt_ps" => Intrinsic {
601 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x8]; &INPUTS },
603 definition: Named("llvm.x86.avx.rsqrt.ps.256")
605 "_mm256_storeu_ps" => Intrinsic {
606 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::F32x8, Some(&::U8), false); &PTR }, &::F32x8]; &INPUTS },
608 definition: Named("llvm.x86.avx.storeu.ps.256")
610 "_mm256_storeu_pd" => Intrinsic {
611 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::F64x4, Some(&::U8), false); &PTR }, &::F64x4]; &INPUTS },
613 definition: Named("llvm.x86.avx.storeu.ps.256")
615 "_mm256_storeu_si256" => Intrinsic {
616 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::U8x32, Some(&::U8), false); &PTR }, &::U8x32]; &INPUTS },
618 definition: Named("llvm.x86.avx.storeu.dq.256")
620 "_mm256_sqrt_ps" => Intrinsic {
621 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x8]; &INPUTS },
623 definition: Named("llvm.sqrt.v8f32")
625 "_mm256_sqrt_pd" => Intrinsic {
626 inputs: { static INPUTS: [&'static Type; 1] = [&::F64x4]; &INPUTS },
628 definition: Named("llvm.sqrt.v4f64")
630 "_mm_testc_ps" => Intrinsic {
631 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS },
633 definition: Named("llvm.x86.avx.vtestc.ps")
635 "_mm256_testc_ps" => Intrinsic {
636 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::F32x8]; &INPUTS },
638 definition: Named("llvm.x86.avx.vtestc.ps.256")
640 "_mm_testc_pd" => Intrinsic {
641 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x2, &::F64x2]; &INPUTS },
643 definition: Named("llvm.x86.avx.vtestc.pd")
645 "_mm256_testc_pd" => Intrinsic {
646 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x4, &::F64x4]; &INPUTS },
648 definition: Named("llvm.x86.avx.vtestc.pd.256")
650 "_mm256_testc_si256" => Intrinsic {
651 inputs: { static INPUTS: [&'static Type; 2] = [&::U64x4, &::U64x4]; &INPUTS },
653 definition: Named("llvm.x86.avx.ptestc.256")
655 "_mm_testnzc_ps" => Intrinsic {
656 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS },
658 definition: Named("llvm.x86.avx.vtestnzc.ps")
660 "_mm256_testnzc_ps" => Intrinsic {
661 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::F32x8]; &INPUTS },
663 definition: Named("llvm.x86.avx.vtestnzc.ps.256")
665 "_mm_testnzc_pd" => Intrinsic {
666 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x2, &::F64x2]; &INPUTS },
668 definition: Named("llvm.x86.avx.vtestnzc.pd")
670 "_mm256_testnzc_pd" => Intrinsic {
671 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x4, &::F64x4]; &INPUTS },
673 definition: Named("llvm.x86.avx.vtestnzc.pd.256")
675 "_mm256_testnzc_si256" => Intrinsic {
676 inputs: { static INPUTS: [&'static Type; 2] = [&::U64x4, &::U64x4]; &INPUTS },
678 definition: Named("llvm.x86.avx.ptestnzc.256")
680 "_mm_testz_ps" => Intrinsic {
681 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS },
683 definition: Named("llvm.x86.avx.vtestz.ps")
685 "_mm256_testz_ps" => Intrinsic {
686 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x8, &::F32x8]; &INPUTS },
688 definition: Named("llvm.x86.avx.vtestz.ps.256")
690 "_mm_testz_pd" => Intrinsic {
691 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x2, &::F64x2]; &INPUTS },
693 definition: Named("llvm.x86.avx.vtestz.pd")
695 "_mm256_testz_pd" => Intrinsic {
696 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x4, &::F64x4]; &INPUTS },
698 definition: Named("llvm.x86.avx.vtestz.pd.256")
700 "_mm256_testz_si256" => Intrinsic {
701 inputs: { static INPUTS: [&'static Type; 2] = [&::U64x4, &::U64x4]; &INPUTS },
703 definition: Named("llvm.x86.avx.ptestz.256")
705 "_mm256_zeroall" => Intrinsic {
706 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
708 definition: Named("llvm.x86.avx.vzeroall")
710 "_mm256_zeroupper" => Intrinsic {
711 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
713 definition: Named("llvm.x86.avx.vzeroupper")
715 "_bmi2_bzhi_32" => Intrinsic {
716 inputs: { static INPUTS: [&'static Type; 2] = [&::U32, &::U32]; &INPUTS },
718 definition: Named("llvm.x86.bmi.bzhi.32")
720 "_bmi2_bzhi_64" => Intrinsic {
721 inputs: { static INPUTS: [&'static Type; 2] = [&::U64, &::U64]; &INPUTS },
723 definition: Named("llvm.x86.bmi.bzhi.64")
725 "_bmi2_pdep_32" => Intrinsic {
726 inputs: { static INPUTS: [&'static Type; 2] = [&::U32, &::U32]; &INPUTS },
728 definition: Named("llvm.x86.bmi.pdep.32")
730 "_bmi2_pdep_64" => Intrinsic {
731 inputs: { static INPUTS: [&'static Type; 2] = [&::U64, &::U64]; &INPUTS },
733 definition: Named("llvm.x86.bmi.pdep.64")
735 "_bmi2_pext_32" => Intrinsic {
736 inputs: { static INPUTS: [&'static Type; 2] = [&::U32, &::U32]; &INPUTS },
738 definition: Named("llvm.x86.bmi.pext.32")
740 "_bmi2_pext_64" => Intrinsic {
741 inputs: { static INPUTS: [&'static Type; 2] = [&::U64, &::U64]; &INPUTS },
743 definition: Named("llvm.x86.bmi.pext.64")
745 "_bmi_bextr_32" => Intrinsic {
746 inputs: { static INPUTS: [&'static Type; 2] = [&::U32, &::U32]; &INPUTS },
748 definition: Named("llvm.x86.bmi.bextr.32")
750 "_bmi_bextr_64" => Intrinsic {
751 inputs: { static INPUTS: [&'static Type; 2] = [&::U64, &::U64]; &INPUTS },
753 definition: Named("llvm.x86.bmi.bextr.64")
755 "_mm_fmadd_ps" => Intrinsic {
756 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS },
758 definition: Named("llvm.x86.fma.vfmadd.ps")
760 "_mm_fmadd_pd" => Intrinsic {
761 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x2, &::F64x2, &::F64x2]; &INPUTS },
763 definition: Named("llvm.x86.fma.vfmadd.pd")
765 "_mm256_fmadd_ps" => Intrinsic {
766 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x8, &::F32x8, &::F32x8]; &INPUTS },
768 definition: Named("llvm.x86.fma.vfmadd.ps.256")
770 "_mm256_fmadd_pd" => Intrinsic {
771 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x4, &::F64x4, &::F64x4]; &INPUTS },
773 definition: Named("llvm.x86.fma.vfmadd.pd.256")
775 "_mm_fmaddsub_ps" => Intrinsic {
776 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS },
778 definition: Named("llvm.x86.fma.vfmaddsub.ps")
780 "_mm_fmaddsub_pd" => Intrinsic {
781 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x2, &::F64x2, &::F64x2]; &INPUTS },
783 definition: Named("llvm.x86.fma.vfmaddsub.pd")
785 "_mm256_fmaddsub_ps" => Intrinsic {
786 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x8, &::F32x8, &::F32x8]; &INPUTS },
788 definition: Named("llvm.x86.fma.vfmaddsub.ps.256")
790 "_mm256_fmaddsub_pd" => Intrinsic {
791 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x4, &::F64x4, &::F64x4]; &INPUTS },
793 definition: Named("llvm.x86.fma.vfmaddsub.pd.256")
795 "_mm_fmsub_ps" => Intrinsic {
796 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS },
798 definition: Named("llvm.x86.fma.vfmsub.ps")
800 "_mm_fmsub_pd" => Intrinsic {
801 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x2, &::F64x2, &::F64x2]; &INPUTS },
803 definition: Named("llvm.x86.fma.vfmsub.pd")
805 "_mm256_fmsub_ps" => Intrinsic {
806 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x8, &::F32x8, &::F32x8]; &INPUTS },
808 definition: Named("llvm.x86.fma.vfmsub.ps.256")
810 "_mm256_fmsub_pd" => Intrinsic {
811 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x4, &::F64x4, &::F64x4]; &INPUTS },
813 definition: Named("llvm.x86.fma.vfmsub.pd.256")
815 "_mm_fmsubadd_ps" => Intrinsic {
816 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS },
818 definition: Named("llvm.x86.fma.vfmsubadd.ps")
820 "_mm_fmsubadd_pd" => Intrinsic {
821 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x2, &::F64x2, &::F64x2]; &INPUTS },
823 definition: Named("llvm.x86.fma.vfmsubadd.pd")
825 "_mm256_fmsubadd_ps" => Intrinsic {
826 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x8, &::F32x8, &::F32x8]; &INPUTS },
828 definition: Named("llvm.x86.fma.vfmsubadd.ps.256")
830 "_mm256_fmsubadd_pd" => Intrinsic {
831 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x4, &::F64x4, &::F64x4]; &INPUTS },
833 definition: Named("llvm.x86.fma.vfmsubadd.pd.256")
835 "_mm_fnmadd_ps" => Intrinsic {
836 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS },
838 definition: Named("llvm.x86.fma.vfnmadd.ps")
840 "_mm_fnmadd_pd" => Intrinsic {
841 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x2, &::F64x2, &::F64x2]; &INPUTS },
843 definition: Named("llvm.x86.fma.vfnmadd.pd")
845 "_mm256_fnmadd_ps" => Intrinsic {
846 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x8, &::F32x8, &::F32x8]; &INPUTS },
848 definition: Named("llvm.x86.fma.vfnmadd.ps.256")
850 "_mm256_fnmadd_pd" => Intrinsic {
851 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x4, &::F64x4, &::F64x4]; &INPUTS },
853 definition: Named("llvm.x86.fma.vfnmadd.pd.256")
855 "_mm_fnmsub_ps" => Intrinsic {
856 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS },
858 definition: Named("llvm.x86.fma.vfnmsub.ps")
860 "_mm_fnmsub_pd" => Intrinsic {
861 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x2, &::F64x2, &::F64x2]; &INPUTS },
863 definition: Named("llvm.x86.fma.vfnmsub.pd")
865 "_mm256_fnmsub_ps" => Intrinsic {
866 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x8, &::F32x8, &::F32x8]; &INPUTS },
868 definition: Named("llvm.x86.fma.vfnmsub.ps.256")
870 "_mm256_fnmsub_pd" => Intrinsic {
871 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x4, &::F64x4, &::F64x4]; &INPUTS },
873 definition: Named("llvm.x86.fma.vfnmsub.pd.256")
875 "_rdrand16_step" => Intrinsic {
876 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
877 output: { static AGG: Type = Type::Aggregate(false, { static PARTS: [&'static Type; 2] = [&::U16, &::I32]; &PARTS }); &AGG },
878 definition: Named("llvm.x86.rdrand.16")
880 "_rdrand32_step" => Intrinsic {
881 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
882 output: { static AGG: Type = Type::Aggregate(false, { static PARTS: [&'static Type; 2] = [&::U32, &::I32]; &PARTS }); &AGG },
883 definition: Named("llvm.x86.rdrand.32")
885 "_rdrand64_step" => Intrinsic {
886 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
887 output: { static AGG: Type = Type::Aggregate(false, { static PARTS: [&'static Type; 2] = [&::U64, &::I32]; &PARTS }); &AGG },
888 definition: Named("llvm.x86.rdrand.64")
890 "_rdseed16_step" => Intrinsic {
891 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
892 output: { static AGG: Type = Type::Aggregate(false, { static PARTS: [&'static Type; 2] = [&::U16, &::I32]; &PARTS }); &AGG },
893 definition: Named("llvm.x86.rdseed.16")
895 "_rdseed32_step" => Intrinsic {
896 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
897 output: { static AGG: Type = Type::Aggregate(false, { static PARTS: [&'static Type; 2] = [&::U32, &::I32]; &PARTS }); &AGG },
898 definition: Named("llvm.x86.rdseed.32")
900 "_rdseed64_step" => Intrinsic {
901 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
902 output: { static AGG: Type = Type::Aggregate(false, { static PARTS: [&'static Type; 2] = [&::U64, &::I32]; &PARTS }); &AGG },
903 definition: Named("llvm.x86.rdseed.64")
905 "_mm_adds_epi8" => Intrinsic {
906 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
908 definition: Named("llvm.x86.sse2.padds.b")
910 "_mm_adds_epu8" => Intrinsic {
911 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
913 definition: Named("llvm.x86.sse2.paddus.b")
915 "_mm_adds_epi16" => Intrinsic {
916 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
918 definition: Named("llvm.x86.sse2.padds.w")
920 "_mm_adds_epu16" => Intrinsic {
921 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
923 definition: Named("llvm.x86.sse2.paddus.w")
925 "_mm_avg_epu8" => Intrinsic {
926 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
928 definition: Named("llvm.x86.sse2.pavg.b")
930 "_mm_avg_epu16" => Intrinsic {
931 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
933 definition: Named("llvm.x86.sse2.pavg.w")
935 "_mm_lfence" => Intrinsic {
936 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
938 definition: Named("llvm.x86.sse2.lfence")
940 "_mm_madd_epi16" => Intrinsic {
941 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
943 definition: Named("llvm.x86.sse2.pmadd.wd")
945 "_mm_maskmoveu_si128" => Intrinsic {
946 inputs: { static INPUTS: [&'static Type; 3] = [&::U8x16, &::U8x16, { static PTR: Type = Type::Pointer(&::U8, None, false); &PTR }]; &INPUTS },
948 definition: Named("llvm.x86.sse2.maskmov.dqu")
950 "_mm_max_epi16" => Intrinsic {
951 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
953 definition: Named("llvm.x86.sse2.pmaxs.w")
955 "_mm_max_epu8" => Intrinsic {
956 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
958 definition: Named("llvm.x86.sse2.pmaxu.b")
960 "_mm_max_pd" => Intrinsic {
961 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x2, &::F64x2]; &INPUTS },
963 definition: Named("llvm.x86.sse2.max.pd")
965 "_mm_mfence" => Intrinsic {
966 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
968 definition: Named("llvm.x86.sse2.fence")
970 "_mm_min_epi16" => Intrinsic {
971 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
973 definition: Named("llvm.x86.sse2.pmins.w")
975 "_mm_min_epu8" => Intrinsic {
976 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
978 definition: Named("llvm.x86.sse2.pminu.b")
980 "_mm_min_pd" => Intrinsic {
981 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x2, &::F64x2]; &INPUTS },
983 definition: Named("llvm.x86.sse2.min.pd")
985 "_mm_movemask_pd" => Intrinsic {
986 inputs: { static INPUTS: [&'static Type; 1] = [&::F64x2]; &INPUTS },
988 definition: Named("llvm.x86.sse2.movmsk.pd")
990 "_mm_movemask_epi8" => Intrinsic {
991 inputs: { static INPUTS: [&'static Type; 1] = [&::I8x16]; &INPUTS },
993 definition: Named("llvm.x86.sse2.pmovmskb.128")
995 "_mm_mul_epu32" => Intrinsic {
996 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
998 definition: Named("llvm.x86.sse2.pmulu.dq")
1000 "_mm_mulhi_epi16" => Intrinsic {
1001 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1003 definition: Named("llvm.x86.sse2.pmulh.w")
1005 "_mm_mulhi_epu16" => Intrinsic {
1006 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
1008 definition: Named("llvm.x86.sse2.pmulhu.w")
1010 "_mm_packs_epi16" => Intrinsic {
1011 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1013 definition: Named("llvm.x86.sse2.packsswb.128")
1015 "_mm_packs_epi32" => Intrinsic {
1016 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
1018 definition: Named("llvm.x86.sse2.packssdw.128")
1020 "_mm_packus_epi16" => Intrinsic {
1021 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1023 definition: Named("llvm.x86.sse2.packuswb.128")
1025 "_mm_sad_epu8" => Intrinsic {
1026 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
1028 definition: Named("llvm.x86.sse2.psad.bw")
1030 "_mm_sfence" => Intrinsic {
1031 inputs: { static INPUTS: [&'static Type; 0] = []; &INPUTS },
1033 definition: Named("llvm.x86.sse2.sfence")
1035 "_mm_sqrt_pd" => Intrinsic {
1036 inputs: { static INPUTS: [&'static Type; 1] = [&::F64x2]; &INPUTS },
1038 definition: Named("llvm.sqrt.v2f64")
1040 "_mm_storeu_pd" => Intrinsic {
1041 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::F64, Some(&::U8), false); &PTR }, &::F64x2]; &INPUTS },
1043 definition: Named("llvm.x86.sse2.storeu.pd")
1045 "_mm_storeu_si128" => Intrinsic {
1046 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::U8x16, Some(&::U8), false); &PTR }, &::U8x16]; &INPUTS },
1048 definition: Named("llvm.x86.sse2.storeu.dq")
1050 "_mm_subs_epi8" => Intrinsic {
1051 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
1053 definition: Named("llvm.x86.sse2.psubs.b")
1055 "_mm_subs_epu8" => Intrinsic {
1056 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
1058 definition: Named("llvm.x86.sse2.psubus.b")
1060 "_mm_subs_epi16" => Intrinsic {
1061 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1063 definition: Named("llvm.x86.sse2.psubs.w")
1065 "_mm_subs_epu16" => Intrinsic {
1066 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
1068 definition: Named("llvm.x86.sse2.psubus.w")
1070 "_mm_addsub_ps" => Intrinsic {
1071 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS },
1073 definition: Named("llvm.x86.sse3.addsub.ps")
1075 "_mm_addsub_pd" => Intrinsic {
1076 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x2, &::F64x2]; &INPUTS },
1078 definition: Named("llvm.x86.sse3.addsub.pd")
1080 "_mm_hadd_ps" => Intrinsic {
1081 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS },
1083 definition: Named("llvm.x86.sse3.hadd.ps")
1085 "_mm_hadd_pd" => Intrinsic {
1086 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x2, &::F64x2]; &INPUTS },
1088 definition: Named("llvm.x86.sse3.hadd.pd")
1090 "_mm_hsub_ps" => Intrinsic {
1091 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS },
1093 definition: Named("llvm.x86.sse3.hsub.ps")
1095 "_mm_hsub_pd" => Intrinsic {
1096 inputs: { static INPUTS: [&'static Type; 2] = [&::F64x2, &::F64x2]; &INPUTS },
1098 definition: Named("llvm.x86.sse3.hsub.pd")
1100 "_mm_lddqu_si128" => Intrinsic {
1101 inputs: { static INPUTS: [&'static Type; 1] = [{ static PTR: Type = Type::Pointer(&::U8x16, Some(&::I8), true); &PTR }]; &INPUTS },
1103 definition: Named("llvm.x86.sse3.ldu.dq")
1105 "_mm_dp_ps" => Intrinsic {
1106 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::I32_8]; &INPUTS },
1108 definition: Named("llvm.x86.sse41.dpps")
1110 "_mm_dp_pd" => Intrinsic {
1111 inputs: { static INPUTS: [&'static Type; 3] = [&::F64x2, &::F64x2, &::I32_8]; &INPUTS },
1113 definition: Named("llvm.x86.sse41.dppd")
1115 "_mm_max_epi8" => Intrinsic {
1116 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
1118 definition: Named("llvm.x86.sse41.pmaxsb")
1120 "_mm_max_epu16" => Intrinsic {
1121 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
1123 definition: Named("llvm.x86.sse41.pmaxuw")
1125 "_mm_max_epi32" => Intrinsic {
1126 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
1128 definition: Named("llvm.x86.sse41.pmaxsd")
1130 "_mm_max_epu32" => Intrinsic {
1131 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
1133 definition: Named("llvm.x86.sse41.pmaxud")
1135 "_mm_min_epi8" => Intrinsic {
1136 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
1138 definition: Named("llvm.x86.sse41.pminsb")
1140 "_mm_min_epu16" => Intrinsic {
1141 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
1143 definition: Named("llvm.x86.sse41.pminuw")
1145 "_mm_min_epi32" => Intrinsic {
1146 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
1148 definition: Named("llvm.x86.sse41.pminsd")
1150 "_mm_min_epu32" => Intrinsic {
1151 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
1153 definition: Named("llvm.x86.sse41.pminud")
1155 "_mm_minpos_epu16" => Intrinsic {
1156 inputs: { static INPUTS: [&'static Type; 1] = [&::U16x8]; &INPUTS },
1158 definition: Named("llvm.x86.sse41.phminposuw")
1160 "_mm_mpsadbw_epu8" => Intrinsic {
1161 inputs: { static INPUTS: [&'static Type; 3] = [&::U8x16, &::U8x16, &::I32_8]; &INPUTS },
1163 definition: Named("llvm.x86.sse41.mpsadbw")
1165 "_mm_mul_epi32" => Intrinsic {
1166 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
1168 definition: Named("llvm.x86.sse41.pmuldq")
1170 "_mm_packus_epi32" => Intrinsic {
1171 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
1173 definition: Named("llvm.x86.sse41.packusdw")
1175 "_mm_testc_si128" => Intrinsic {
1176 inputs: { static INPUTS: [&'static Type; 2] = [&::U64x2, &::U64x2]; &INPUTS },
1178 definition: Named("llvm.x86.sse41.ptestc")
1180 "_mm_testnzc_si128" => Intrinsic {
1181 inputs: { static INPUTS: [&'static Type; 2] = [&::U64x2, &::U64x2]; &INPUTS },
1183 definition: Named("llvm.x86.sse41.ptestnzc")
1185 "_mm_testz_si128" => Intrinsic {
1186 inputs: { static INPUTS: [&'static Type; 2] = [&::U64x2, &::U64x2]; &INPUTS },
1188 definition: Named("llvm.x86.sse41.ptestz")
1190 "_mm_cmpestra" => Intrinsic {
1191 inputs: { static INPUTS: [&'static Type; 5] = [&::I8x16, &::I32, &::I8x16, &::I32, &::I32_8]; &INPUTS },
1193 definition: Named("llvm.x86.sse42.pcmpestria128")
1195 "_mm_cmpestrc" => Intrinsic {
1196 inputs: { static INPUTS: [&'static Type; 5] = [&::I8x16, &::I32, &::I8x16, &::I32, &::I32_8]; &INPUTS },
1198 definition: Named("llvm.x86.sse42.pcmpestric128")
1200 "_mm_cmpestri" => Intrinsic {
1201 inputs: { static INPUTS: [&'static Type; 5] = [&::I8x16, &::I32, &::I8x16, &::I32, &::I32_8]; &INPUTS },
1203 definition: Named("llvm.x86.sse42.pcmpestri128")
1205 "_mm_cmpestrm" => Intrinsic {
1206 inputs: { static INPUTS: [&'static Type; 5] = [&::I8x16, &::I32, &::I8x16, &::I32, &::I32_8]; &INPUTS },
1208 definition: Named("llvm.x86.sse42.pcmpestrm128")
1210 "_mm_cmpestro" => Intrinsic {
1211 inputs: { static INPUTS: [&'static Type; 5] = [&::I8x16, &::I32, &::I8x16, &::I32, &::I32_8]; &INPUTS },
1213 definition: Named("llvm.x86.sse42.pcmpestrio128")
1215 "_mm_cmpestrs" => Intrinsic {
1216 inputs: { static INPUTS: [&'static Type; 5] = [&::I8x16, &::I32, &::I8x16, &::I32, &::I32_8]; &INPUTS },
1218 definition: Named("llvm.x86.sse42.pcmpestris128")
1220 "_mm_cmpestrz" => Intrinsic {
1221 inputs: { static INPUTS: [&'static Type; 5] = [&::I8x16, &::I32, &::I8x16, &::I32, &::I32_8]; &INPUTS },
1223 definition: Named("llvm.x86.sse42.pcmpestriz128")
1225 "_mm_cmpistra" => Intrinsic {
1226 inputs: { static INPUTS: [&'static Type; 3] = [&::I8x16, &::I8x16, &::I32_8]; &INPUTS },
1228 definition: Named("llvm.x86.sse42.pcmpistria128")
1230 "_mm_cmpistrc" => Intrinsic {
1231 inputs: { static INPUTS: [&'static Type; 3] = [&::I8x16, &::I8x16, &::I32_8]; &INPUTS },
1233 definition: Named("llvm.x86.sse42.pcmpistric128")
1235 "_mm_cmpistri" => Intrinsic {
1236 inputs: { static INPUTS: [&'static Type; 3] = [&::I8x16, &::I8x16, &::I32_8]; &INPUTS },
1238 definition: Named("llvm.x86.sse42.pcmpistri128")
1240 "_mm_cmpistrm" => Intrinsic {
1241 inputs: { static INPUTS: [&'static Type; 3] = [&::I8x16, &::I8x16, &::I32_8]; &INPUTS },
1243 definition: Named("llvm.x86.sse42.pcmpistrm128")
1245 "_mm_cmpistro" => Intrinsic {
1246 inputs: { static INPUTS: [&'static Type; 3] = [&::I8x16, &::I8x16, &::I32_8]; &INPUTS },
1248 definition: Named("llvm.x86.sse42.pcmpistrio128")
1250 "_mm_cmpistrs" => Intrinsic {
1251 inputs: { static INPUTS: [&'static Type; 3] = [&::I8x16, &::I8x16, &::I32_8]; &INPUTS },
1253 definition: Named("llvm.x86.sse42.pcmpistris128")
1255 "_mm_cmpistrz" => Intrinsic {
1256 inputs: { static INPUTS: [&'static Type; 3] = [&::I8x16, &::I8x16, &::I32_8]; &INPUTS },
1258 definition: Named("llvm.x86.sse42.pcmpistriz128")
1260 "_mm_movemask_ps" => Intrinsic {
1261 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
1263 definition: Named("llvm.x86.sse.movmsk.ps")
1265 "_mm_max_ps" => Intrinsic {
1266 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS },
1268 definition: Named("llvm.x86.sse.max.ps")
1270 "_mm_min_ps" => Intrinsic {
1271 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS },
1273 definition: Named("llvm.x86.sse.min.ps")
1275 "_mm_rsqrt_ps" => Intrinsic {
1276 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
1278 definition: Named("llvm.x86.sse.rsqrt.ps")
1280 "_mm_rcp_ps" => Intrinsic {
1281 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
1283 definition: Named("llvm.x86.sse.rcp.ps")
1285 "_mm_sqrt_ps" => Intrinsic {
1286 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
1288 definition: Named("llvm.sqrt.v4f32")
1290 "_mm_storeu_ps" => Intrinsic {
1291 inputs: { static INPUTS: [&'static Type; 2] = [{ static PTR: Type = Type::Pointer(&::F32, Some(&::I8), false); &PTR }, &::F32x4]; &INPUTS },
1293 definition: Named("llvm.x86.sse.storeu.ps")
1295 "_mm_abs_epi8" => Intrinsic {
1296 inputs: { static INPUTS: [&'static Type; 1] = [&::I8x16]; &INPUTS },
1298 definition: Named("llvm.x86.ssse3.pabs.b.128")
1300 "_mm_abs_epi16" => Intrinsic {
1301 inputs: { static INPUTS: [&'static Type; 1] = [&::I16x8]; &INPUTS },
1303 definition: Named("llvm.x86.ssse3.pabs.w.128")
1305 "_mm_abs_epi32" => Intrinsic {
1306 inputs: { static INPUTS: [&'static Type; 1] = [&::I32x4]; &INPUTS },
1308 definition: Named("llvm.x86.ssse3.pabs.d.128")
1310 "_mm_hadd_epi16" => Intrinsic {
1311 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1313 definition: Named("llvm.x86.ssse3.phadd.w.128")
1315 "_mm_hadd_epi32" => Intrinsic {
1316 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
1318 definition: Named("llvm.x86.ssse3.phadd.d.128")
1320 "_mm_hadds_epi16" => Intrinsic {
1321 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1323 definition: Named("llvm.x86.ssse3.phadd.sw.128")
1325 "_mm_hsub_epi16" => Intrinsic {
1326 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1328 definition: Named("llvm.x86.ssse3.phsub.w.128")
1330 "_mm_hsub_epi32" => Intrinsic {
1331 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
1333 definition: Named("llvm.x86.ssse3.phsub.d.128")
1335 "_mm_hsubs_epi16" => Intrinsic {
1336 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1338 definition: Named("llvm.x86.ssse3.phsub.sw.128")
1340 "_mm_maddubs_epi16" => Intrinsic {
1341 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::I8x16]; &INPUTS },
1343 definition: Named("llvm.x86.ssse3.pmadd.ub.sw.128")
1345 "_mm_mulhrs_epi16" => Intrinsic {
1346 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1348 definition: Named("llvm.x86.ssse3.pmul.hr.sw.128")
1350 "_mm_shuffle_epi8" => Intrinsic {
1351 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
1353 definition: Named("llvm.x86.ssse3.pshuf.b.128")
1355 "_mm_sign_epi8" => Intrinsic {
1356 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
1358 definition: Named("llvm.x86.ssse3.psign.b.128")
1360 "_mm_sign_epi16" => Intrinsic {
1361 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
1363 definition: Named("llvm.x86.ssse3.psign.w.128")
1365 "_mm_sign_epi32" => Intrinsic {
1366 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
1368 definition: Named("llvm.x86.ssse3.psign.d.128")
1370 "_tbm_bextri_u32" => Intrinsic {
1371 inputs: { static INPUTS: [&'static Type; 2] = [&::U32, &::U32]; &INPUTS },
1373 definition: Named("llvm.x86.tbm.bextri.u32")
1375 "_tbm_bextri_u64" => Intrinsic {
1376 inputs: { static INPUTS: [&'static Type; 2] = [&::U64, &::U64]; &INPUTS },
1378 definition: Named("llvm.x86.tbm.bextri.u64")