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, i, i_, u, u_, f, v, v_, agg, p, void};
17 use IntrinsicDef::Named;
18 use rustc::middle::ty;
20 // The default inlining settings trigger a pathological behaviour in
21 // LLVM, which causes makes compilation very slow. See #28273.
23 pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
24 if !name.starts_with("x86_mm") { return None }
25 Some(match &name["x86_mm".len()..] {
26 "_movemask_ps" => Intrinsic {
27 inputs: vec![v(f(32), 4)],
29 definition: Named("llvm.x86.sse.movmsk.ps")
31 "_max_ps" => Intrinsic {
32 inputs: vec![v(f(32), 4), v(f(32), 4)],
34 definition: Named("llvm.x86.sse.max.ps")
36 "_min_ps" => Intrinsic {
37 inputs: vec![v(f(32), 4), v(f(32), 4)],
39 definition: Named("llvm.x86.sse.min.ps")
41 "_rsqrt_ps" => Intrinsic {
42 inputs: vec![v(f(32), 4)],
44 definition: Named("llvm.x86.sse.rsqrt.ps")
46 "_rcp_ps" => Intrinsic {
47 inputs: vec![v(f(32), 4)],
49 definition: Named("llvm.x86.sse.rcp.ps")
51 "_sqrt_ps" => Intrinsic {
52 inputs: vec![v(f(32), 4)],
54 definition: Named("llvm.sqrt.v4f32")
56 "_storeu_ps" => Intrinsic {
57 inputs: vec![p(false, f(32), Some(i(8))), v(f(32), 4)],
59 definition: Named("llvm.x86.sse.storeu.ps")
61 "_adds_epi8" => Intrinsic {
62 inputs: vec![v(i(8), 16), v(i(8), 16)],
64 definition: Named("llvm.x86.sse2.padds.b")
66 "_adds_epu8" => Intrinsic {
67 inputs: vec![v(u(8), 16), v(u(8), 16)],
69 definition: Named("llvm.x86.sse2.paddus.b")
71 "_adds_epi16" => Intrinsic {
72 inputs: vec![v(i(16), 8), v(i(16), 8)],
74 definition: Named("llvm.x86.sse2.padds.w")
76 "_adds_epu16" => Intrinsic {
77 inputs: vec![v(u(16), 8), v(u(16), 8)],
79 definition: Named("llvm.x86.sse2.paddus.w")
81 "_avg_epu8" => Intrinsic {
82 inputs: vec![v(u(8), 16), v(u(8), 16)],
84 definition: Named("llvm.x86.sse2.pavg.b")
86 "_avg_epu16" => Intrinsic {
87 inputs: vec![v(u(16), 8), v(u(16), 8)],
89 definition: Named("llvm.x86.sse2.pavg.w")
91 "_lfence" => Intrinsic {
94 definition: Named("llvm.x86.sse2.lfence")
96 "_madd_epi16" => Intrinsic {
97 inputs: vec![v(i(16), 8), v(i(16), 8)],
99 definition: Named("llvm.x86.sse2.pmadd.wd")
101 "_maskmoveu_si128" => Intrinsic {
102 inputs: vec![v(u(8), 16), v(u(8), 16), p(false, u(8), None)],
104 definition: Named("llvm.x86.sse2.maskmov.dqu")
106 "_max_epi16" => Intrinsic {
107 inputs: vec![v(i(16), 8), v(i(16), 8)],
109 definition: Named("llvm.x86.sse2.pmaxs.w")
111 "_max_epu8" => Intrinsic {
112 inputs: vec![v(u(8), 16), v(u(8), 16)],
114 definition: Named("llvm.x86.sse2.pmaxu.b")
116 "_max_pd" => Intrinsic {
117 inputs: vec![v(f(64), 2), v(f(64), 2)],
119 definition: Named("llvm.x86.sse2.max.pd")
121 "_mfence" => Intrinsic {
124 definition: Named("llvm.x86.sse2.fence")
126 "_min_epi16" => Intrinsic {
127 inputs: vec![v(i(16), 8), v(i(16), 8)],
129 definition: Named("llvm.x86.sse2.pmins.w")
131 "_min_epu8" => Intrinsic {
132 inputs: vec![v(u(8), 16), v(u(8), 16)],
134 definition: Named("llvm.x86.sse2.pminu.b")
136 "_min_pd" => Intrinsic {
137 inputs: vec![v(f(64), 2), v(f(64), 2)],
139 definition: Named("llvm.x86.sse2.min.pd")
141 "_movemask_pd" => Intrinsic {
142 inputs: vec![v(f(64), 2)],
144 definition: Named("llvm.x86.sse2.movmsk.pd")
146 "_movemask_epi8" => Intrinsic {
147 inputs: vec![v(i(8), 16)],
149 definition: Named("llvm.x86.sse2.pmovmskb.128")
151 "_mul_epu32" => Intrinsic {
152 inputs: vec![v(u(32), 4), v(u(32), 4)],
154 definition: Named("llvm.x86.sse2.pmulu.dq")
156 "_mulhi_epi16" => Intrinsic {
157 inputs: vec![v(i(16), 8), v(i(16), 8)],
159 definition: Named("llvm.x86.sse2.pmulh.w")
161 "_mulhi_epu16" => Intrinsic {
162 inputs: vec![v(u(16), 8), v(u(16), 8)],
164 definition: Named("llvm.x86.sse2.pmulhu.w")
166 "_packs_epi16" => Intrinsic {
167 inputs: vec![v(i(16), 8), v(i(16), 8)],
169 definition: Named("llvm.x86.sse2.packsswb.128")
171 "_packs_epi32" => Intrinsic {
172 inputs: vec![v(i(32), 4), v(i(32), 4)],
174 definition: Named("llvm.x86.sse2.packssdw.128")
176 "_packus_epi16" => Intrinsic {
177 inputs: vec![v(i(16), 8), v(i(16), 8)],
179 definition: Named("llvm.x86.sse2.packuswb.128")
181 "_sad_epu8" => Intrinsic {
182 inputs: vec![v(u(8), 16), v(u(8), 16)],
184 definition: Named("llvm.x86.sse2.psad.bw")
186 "_sfence" => Intrinsic {
189 definition: Named("llvm.x86.sse2.sfence")
191 "_sqrt_pd" => Intrinsic {
192 inputs: vec![v(f(64), 2)],
194 definition: Named("llvm.sqrt.v2f64")
196 "_storeu_pd" => Intrinsic {
197 inputs: vec![p(false, f(64), Some(u(8))), v(f(64), 2)],
199 definition: Named("llvm.x86.sse2.storeu.pd")
201 "_storeu_si128" => Intrinsic {
202 inputs: vec![p(false, v(u(8), 16), Some(u(8))), v(u(8), 16)],
204 definition: Named("llvm.x86.sse2.storeu.dq")
206 "_subs_epi8" => Intrinsic {
207 inputs: vec![v(i(8), 16), v(i(8), 16)],
209 definition: Named("llvm.x86.sse2.psubs.b")
211 "_subs_epu8" => Intrinsic {
212 inputs: vec![v(u(8), 16), v(u(8), 16)],
214 definition: Named("llvm.x86.sse2.psubus.b")
216 "_subs_epi16" => Intrinsic {
217 inputs: vec![v(i(16), 8), v(i(16), 8)],
219 definition: Named("llvm.x86.sse2.psubs.w")
221 "_subs_epu16" => Intrinsic {
222 inputs: vec![v(u(16), 8), v(u(16), 8)],
224 definition: Named("llvm.x86.sse2.psubus.w")
226 "_addsub_ps" => Intrinsic {
227 inputs: vec![v(f(32), 4), v(f(32), 4)],
229 definition: Named("llvm.x86.sse3.addsub.ps")
231 "_addsub_pd" => Intrinsic {
232 inputs: vec![v(f(64), 2), v(f(64), 2)],
234 definition: Named("llvm.x86.sse3.addsub.pd")
236 "_hadd_ps" => Intrinsic {
237 inputs: vec![v(f(32), 4), v(f(32), 4)],
239 definition: Named("llvm.x86.sse3.hadd.ps")
241 "_hadd_pd" => Intrinsic {
242 inputs: vec![v(f(64), 2), v(f(64), 2)],
244 definition: Named("llvm.x86.sse3.hadd.pd")
246 "_hsub_ps" => Intrinsic {
247 inputs: vec![v(f(32), 4), v(f(32), 4)],
249 definition: Named("llvm.x86.sse3.hsub.ps")
251 "_hsub_pd" => Intrinsic {
252 inputs: vec![v(f(64), 2), v(f(64), 2)],
254 definition: Named("llvm.x86.sse3.hsub.pd")
256 "_lddqu_si128" => Intrinsic {
257 inputs: vec![p(true, v(u(8), 16), Some(i(8)))],
259 definition: Named("llvm.x86.sse3.ldu.dq")
261 "_abs_epi8" => Intrinsic {
262 inputs: vec![v(i(8), 16)],
264 definition: Named("llvm.x86.ssse3.pabs.b.128")
266 "_abs_epi16" => Intrinsic {
267 inputs: vec![v(i(16), 8)],
269 definition: Named("llvm.x86.ssse3.pabs.w.128")
271 "_abs_epi32" => Intrinsic {
272 inputs: vec![v(i(32), 4)],
274 definition: Named("llvm.x86.ssse3.pabs.d.128")
276 "_hadd_epi16" => Intrinsic {
277 inputs: vec![v(i(16), 8), v(i(16), 8)],
279 definition: Named("llvm.x86.ssse3.phadd.w.128")
281 "_hadd_epi32" => Intrinsic {
282 inputs: vec![v(i(32), 4), v(i(32), 4)],
284 definition: Named("llvm.x86.ssse3.phadd.d.128")
286 "_hadds_epi16" => Intrinsic {
287 inputs: vec![v(i(16), 8), v(i(16), 8)],
289 definition: Named("llvm.x86.ssse3.phadd.sw.128")
291 "_hsub_epi16" => Intrinsic {
292 inputs: vec![v(i(16), 8), v(i(16), 8)],
294 definition: Named("llvm.x86.ssse3.phsub.w.128")
296 "_hsub_epi32" => Intrinsic {
297 inputs: vec![v(i(32), 4), v(i(32), 4)],
299 definition: Named("llvm.x86.ssse3.phsub.d.128")
301 "_hsubs_epi16" => Intrinsic {
302 inputs: vec![v(i(16), 8), v(i(16), 8)],
304 definition: Named("llvm.x86.ssse3.phsub.sw.128")
306 "_maddubs_epi16" => Intrinsic {
307 inputs: vec![v(u(8), 16), v(i(8), 16)],
309 definition: Named("llvm.x86.ssse3.pmadd.ub.sw.128")
311 "_mulhrs_epi16" => Intrinsic {
312 inputs: vec![v(i(16), 8), v(i(16), 8)],
314 definition: Named("llvm.x86.ssse3.pmul.hr.sw.128")
316 "_shuffle_epi8" => Intrinsic {
317 inputs: vec![v(i(8), 16), v(i(8), 16)],
319 definition: Named("llvm.x86.ssse3.pshuf.b.128")
321 "_sign_epi8" => Intrinsic {
322 inputs: vec![v(i(8), 16), v(i(8), 16)],
324 definition: Named("llvm.x86.ssse3.psign.b.128")
326 "_sign_epi16" => Intrinsic {
327 inputs: vec![v(i(16), 8), v(i(16), 8)],
329 definition: Named("llvm.x86.ssse3.psign.w.128")
331 "_sign_epi32" => Intrinsic {
332 inputs: vec![v(i(32), 4), v(i(32), 4)],
334 definition: Named("llvm.x86.ssse3.psign.d.128")
336 "_dp_ps" => Intrinsic {
337 inputs: vec![v(f(32), 4), v(f(32), 4), i_(32, 8)],
339 definition: Named("llvm.x86.sse41.dpps")
341 "_dp_pd" => Intrinsic {
342 inputs: vec![v(f(64), 2), v(f(64), 2), i_(32, 8)],
344 definition: Named("llvm.x86.sse41.dppd")
346 "_max_epi8" => Intrinsic {
347 inputs: vec![v(i(8), 16), v(i(8), 16)],
349 definition: Named("llvm.x86.sse41.pmaxsb")
351 "_max_epu16" => Intrinsic {
352 inputs: vec![v(u(16), 8), v(u(16), 8)],
354 definition: Named("llvm.x86.sse41.pmaxuw")
356 "_max_epi32" => Intrinsic {
357 inputs: vec![v(i(32), 4), v(i(32), 4)],
359 definition: Named("llvm.x86.sse41.pmaxsd")
361 "_max_epu32" => Intrinsic {
362 inputs: vec![v(u(32), 4), v(u(32), 4)],
364 definition: Named("llvm.x86.sse41.pmaxud")
366 "_min_epi8" => Intrinsic {
367 inputs: vec![v(i(8), 16), v(i(8), 16)],
369 definition: Named("llvm.x86.sse41.pminsb")
371 "_min_epu16" => Intrinsic {
372 inputs: vec![v(u(16), 8), v(u(16), 8)],
374 definition: Named("llvm.x86.sse41.pminuw")
376 "_min_epi32" => Intrinsic {
377 inputs: vec![v(i(32), 4), v(i(32), 4)],
379 definition: Named("llvm.x86.sse41.pminsd")
381 "_min_epu32" => Intrinsic {
382 inputs: vec![v(u(32), 4), v(u(32), 4)],
384 definition: Named("llvm.x86.sse41.pminud")
386 "_minpos_epu16" => Intrinsic {
387 inputs: vec![v(u(16), 8)],
389 definition: Named("llvm.x86.sse41.phminposuw")
391 "_mpsadbw_epu8" => Intrinsic {
392 inputs: vec![v(u(8), 16), v(u(8), 16), i_(32, 8)],
394 definition: Named("llvm.x86.sse41.mpsadbw")
396 "_mul_epi32" => Intrinsic {
397 inputs: vec![v(i(32), 4), v(i(32), 4)],
399 definition: Named("llvm.x86.sse41.pmuldq")
401 "_packus_epi32" => Intrinsic {
402 inputs: vec![v(i(32), 4), v(i(32), 4)],
404 definition: Named("llvm.x86.sse41.packusdw")
406 "_testc_si128" => Intrinsic {
407 inputs: vec![v(u(64), 2), v(u(64), 2)],
409 definition: Named("llvm.x86.sse41.ptestc")
411 "_testnzc_si128" => Intrinsic {
412 inputs: vec![v(u(64), 2), v(u(64), 2)],
414 definition: Named("llvm.x86.sse41.ptestnzc")
416 "_testz_si128" => Intrinsic {
417 inputs: vec![v(u(64), 2), v(u(64), 2)],
419 definition: Named("llvm.x86.sse41.ptestz")
421 "_cmpestra" => Intrinsic {
422 inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i_(32, 8)],
424 definition: Named("llvm.x86.sse42.pcmpestria128")
426 "_cmpestrc" => Intrinsic {
427 inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i_(32, 8)],
429 definition: Named("llvm.x86.sse42.pcmpestric128")
431 "_cmpestri" => Intrinsic {
432 inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i_(32, 8)],
434 definition: Named("llvm.x86.sse42.pcmpestri128")
436 "_cmpestrm" => Intrinsic {
437 inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i_(32, 8)],
439 definition: Named("llvm.x86.sse42.pcmpestrm128")
441 "_cmpestro" => Intrinsic {
442 inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i_(32, 8)],
444 definition: Named("llvm.x86.sse42.pcmpestrio128")
446 "_cmpestrs" => Intrinsic {
447 inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i_(32, 8)],
449 definition: Named("llvm.x86.sse42.pcmpestris128")
451 "_cmpestrz" => Intrinsic {
452 inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i_(32, 8)],
454 definition: Named("llvm.x86.sse42.pcmpestriz128")
456 "_cmpistra" => Intrinsic {
457 inputs: vec![v(i(8), 16), v(i(8), 16), i_(32, 8)],
459 definition: Named("llvm.x86.sse42.pcmpistria128")
461 "_cmpistrc" => Intrinsic {
462 inputs: vec![v(i(8), 16), v(i(8), 16), i_(32, 8)],
464 definition: Named("llvm.x86.sse42.pcmpistric128")
466 "_cmpistri" => Intrinsic {
467 inputs: vec![v(i(8), 16), v(i(8), 16), i_(32, 8)],
469 definition: Named("llvm.x86.sse42.pcmpistri128")
471 "_cmpistrm" => Intrinsic {
472 inputs: vec![v(i(8), 16), v(i(8), 16), i_(32, 8)],
474 definition: Named("llvm.x86.sse42.pcmpistrm128")
476 "_cmpistro" => Intrinsic {
477 inputs: vec![v(i(8), 16), v(i(8), 16), i_(32, 8)],
479 definition: Named("llvm.x86.sse42.pcmpistrio128")
481 "_cmpistrs" => Intrinsic {
482 inputs: vec![v(i(8), 16), v(i(8), 16), i_(32, 8)],
484 definition: Named("llvm.x86.sse42.pcmpistris128")
486 "_cmpistrz" => Intrinsic {
487 inputs: vec![v(i(8), 16), v(i(8), 16), i_(32, 8)],
489 definition: Named("llvm.x86.sse42.pcmpistriz128")
491 "256_addsub_ps" => Intrinsic {
492 inputs: vec![v(f(32), 8), v(f(32), 8)],
494 definition: Named("llvm.x86.avx.addsub.ps.256")
496 "256_addsub_pd" => Intrinsic {
497 inputs: vec![v(f(64), 4), v(f(64), 4)],
499 definition: Named("llvm.x86.avx.addsub.pd.256")
501 "256_dp_ps" => Intrinsic {
502 inputs: vec![v(f(32), 8), v(f(32), 8), i_(32, 8)],
504 definition: Named("llvm.x86.avx.dp.ps.256")
506 "256_hadd_ps" => Intrinsic {
507 inputs: vec![v(f(32), 8), v(f(32), 8)],
509 definition: Named("llvm.x86.avx.hadd.ps.256")
511 "256_hadd_pd" => Intrinsic {
512 inputs: vec![v(f(64), 4), v(f(64), 4)],
514 definition: Named("llvm.x86.avx.hadd.pd.256")
516 "256_hsub_ps" => Intrinsic {
517 inputs: vec![v(f(32), 8), v(f(32), 8)],
519 definition: Named("llvm.x86.avx.hsub.ps.256")
521 "256_hsub_pd" => Intrinsic {
522 inputs: vec![v(f(64), 4), v(f(64), 4)],
524 definition: Named("llvm.x86.avx.hsub.pd.256")
526 "256_max_ps" => Intrinsic {
527 inputs: vec![v(f(32), 8), v(f(32), 8)],
529 definition: Named("llvm.x86.avx.max.ps.256")
531 "256_max_pd" => Intrinsic {
532 inputs: vec![v(f(64), 4), v(f(64), 4)],
534 definition: Named("llvm.x86.avx.max.pd.256")
536 "_maskload_ps" => Intrinsic {
537 inputs: vec![p(true, f(32), Some(i(8))), v_(i(32), f(32), 4)],
539 definition: Named("llvm.x86.avx.maskload.ps")
541 "_maskload_pd" => Intrinsic {
542 inputs: vec![p(true, f(64), Some(i(8))), v_(i(64), f(64), 2)],
544 definition: Named("llvm.x86.avx.maskload.pd")
546 "256_maskload_ps" => Intrinsic {
547 inputs: vec![p(true, f(32), Some(i(8))), v_(i(32), f(32), 8)],
549 definition: Named("llvm.x86.avx.maskload.ps.256")
551 "256_maskload_pd" => Intrinsic {
552 inputs: vec![p(true, f(64), Some(i(8))), v_(i(64), f(64), 4)],
554 definition: Named("llvm.x86.avx.maskload.pd.256")
556 "_maskstore_ps" => Intrinsic {
557 inputs: vec![p(false, f(32), Some(i(8))), v_(i(32), f(32), 4), v(f(32), 4)],
559 definition: Named("llvm.x86.avx.maskstore.ps")
561 "_maskstore_pd" => Intrinsic {
562 inputs: vec![p(false, f(64), Some(i(8))), v_(i(64), f(64), 2), v(f(64), 2)],
564 definition: Named("llvm.x86.avx.maskstore.pd")
566 "256_maskstore_ps" => Intrinsic {
567 inputs: vec![p(false, f(32), Some(i(8))), v_(i(32), f(32), 8), v(f(32), 8)],
569 definition: Named("llvm.x86.avx.maskstore.ps.256")
571 "256_maskstore_pd" => Intrinsic {
572 inputs: vec![p(false, f(64), Some(i(8))), v_(i(64), f(64), 4), v(f(64), 4)],
574 definition: Named("llvm.x86.avx.maskstore.pd.256")
576 "256_min_ps" => Intrinsic {
577 inputs: vec![v(f(32), 8), v(f(32), 8)],
579 definition: Named("llvm.x86.avx.min.ps.256")
581 "256_min_pd" => Intrinsic {
582 inputs: vec![v(f(64), 4), v(f(64), 4)],
584 definition: Named("llvm.x86.avx.min.pd.256")
586 "256_movemask_ps" => Intrinsic {
587 inputs: vec![v(f(32), 8)],
589 definition: Named("llvm.x86.avx.movmsk.ps.256")
591 "256_movemask_pd" => Intrinsic {
592 inputs: vec![v(f(64), 4)],
594 definition: Named("llvm.x86.avx.movmsk.pd.256")
596 "_permutevar_ps" => Intrinsic {
597 inputs: vec![v(f(32), 4), v(i(32), 4)],
599 definition: Named("llvm.x86.avx.vpermilvar.ps")
601 "_permutevar_pd" => Intrinsic {
602 inputs: vec![v(f(64), 2), v(i(64), 2)],
604 definition: Named("llvm.x86.avx.vpermilvar.pd")
606 "256_permutevar_ps" => Intrinsic {
607 inputs: vec![v(f(32), 8), v(i(32), 8)],
609 definition: Named("llvm.x86.avx.vpermilvar.ps.256")
611 "256_permutevar_pd" => Intrinsic {
612 inputs: vec![v(f(64), 4), v(i(64), 4)],
614 definition: Named("llvm.x86.avx.vpermilvar.pd.256")
616 "256_rcp_ps" => Intrinsic {
617 inputs: vec![v(f(32), 8)],
619 definition: Named("llvm.x86.avx.rcp.ps.256")
621 "256_rsqrt_ps" => Intrinsic {
622 inputs: vec![v(f(32), 8)],
624 definition: Named("llvm.x86.avx.rsqrt.ps.256")
626 "256_storeu_ps" => Intrinsic {
627 inputs: vec![p(false, v(f(32), 8), Some(u(8))), v(f(32), 8)],
629 definition: Named("llvm.x86.avx.storeu.ps.256")
631 "256_storeu_pd" => Intrinsic {
632 inputs: vec![p(false, v(f(64), 4), Some(u(8))), v(f(64), 4)],
634 definition: Named("llvm.x86.avx.storeu.ps.256")
636 "256_storeu_si256" => Intrinsic {
637 inputs: vec![p(false, v(u(8), 32), Some(u(8))), v(u(8), 32)],
639 definition: Named("llvm.x86.avx.storeu.dq.256")
641 "256_sqrt_ps" => Intrinsic {
642 inputs: vec![v(f(32), 8)],
644 definition: Named("llvm.sqrt.v8f32")
646 "256_sqrt_pd" => Intrinsic {
647 inputs: vec![v(f(64), 4)],
649 definition: Named("llvm.sqrt.v4f64")
651 "_testc_ps" => Intrinsic {
652 inputs: vec![v(f(32), 4), v(f(32), 4)],
654 definition: Named("llvm.x86.avx.vtestc.ps")
656 "256_testc_ps" => Intrinsic {
657 inputs: vec![v(f(32), 8), v(f(32), 8)],
659 definition: Named("llvm.x86.avx.vtestc.ps.256")
661 "_testc_pd" => Intrinsic {
662 inputs: vec![v(f(64), 2), v(f(64), 2)],
664 definition: Named("llvm.x86.avx.vtestc.pd")
666 "256_testc_pd" => Intrinsic {
667 inputs: vec![v(f(64), 4), v(f(64), 4)],
669 definition: Named("llvm.x86.avx.vtestc.pd.256")
671 "256_testc_si256" => Intrinsic {
672 inputs: vec![v(u(64), 4), v(u(64), 4)],
674 definition: Named("llvm.x86.avx.ptestc.256")
676 "_testnzc_ps" => Intrinsic {
677 inputs: vec![v(f(32), 4), v(f(32), 4)],
679 definition: Named("llvm.x86.avx.vtestnzc.ps")
681 "256_testnzc_ps" => Intrinsic {
682 inputs: vec![v(f(32), 8), v(f(32), 8)],
684 definition: Named("llvm.x86.avx.vtestnzc.ps.256")
686 "_testnzc_pd" => Intrinsic {
687 inputs: vec![v(f(64), 2), v(f(64), 2)],
689 definition: Named("llvm.x86.avx.vtestnzc.pd")
691 "256_testnzc_pd" => Intrinsic {
692 inputs: vec![v(f(64), 4), v(f(64), 4)],
694 definition: Named("llvm.x86.avx.vtestnzc.pd.256")
696 "256_testnzc_si256" => Intrinsic {
697 inputs: vec![v(u(64), 4), v(u(64), 4)],
699 definition: Named("llvm.x86.avx.ptestnzc.256")
701 "_testz_ps" => Intrinsic {
702 inputs: vec![v(f(32), 4), v(f(32), 4)],
704 definition: Named("llvm.x86.avx.vtestz.ps")
706 "256_testz_ps" => Intrinsic {
707 inputs: vec![v(f(32), 8), v(f(32), 8)],
709 definition: Named("llvm.x86.avx.vtestz.ps.256")
711 "_testz_pd" => Intrinsic {
712 inputs: vec![v(f(64), 2), v(f(64), 2)],
714 definition: Named("llvm.x86.avx.vtestz.pd")
716 "256_testz_pd" => Intrinsic {
717 inputs: vec![v(f(64), 4), v(f(64), 4)],
719 definition: Named("llvm.x86.avx.vtestz.pd.256")
721 "256_testz_si256" => Intrinsic {
722 inputs: vec![v(u(64), 4), v(u(64), 4)],
724 definition: Named("llvm.x86.avx.ptestz.256")
726 "256_zeroall" => Intrinsic {
729 definition: Named("llvm.x86.avx.vzeroall")
731 "256_zeroupper" => Intrinsic {
734 definition: Named("llvm.x86.avx.vzeroupper")
736 "256_abs_epi8" => Intrinsic {
737 inputs: vec![v(i(8), 32)],
739 definition: Named("llvm.x86.avx2.pabs.b")
741 "256_abs_epi16" => Intrinsic {
742 inputs: vec![v(i(16), 16)],
743 output: v(i(16), 16),
744 definition: Named("llvm.x86.avx2.pabs.w")
746 "256_abs_epi32" => Intrinsic {
747 inputs: vec![v(i(32), 8)],
749 definition: Named("llvm.x86.avx2.pabs.d")
751 "256_adds_epi8" => Intrinsic {
752 inputs: vec![v(i(8), 32), v(i(8), 32)],
754 definition: Named("llvm.x86.avx2.padds.b")
756 "256_adds_epu8" => Intrinsic {
757 inputs: vec![v(u(8), 32), v(u(8), 32)],
759 definition: Named("llvm.x86.avx2.paddus.b")
761 "256_adds_epi16" => Intrinsic {
762 inputs: vec![v(i(16), 16), v(i(16), 16)],
763 output: v(i(16), 16),
764 definition: Named("llvm.x86.avx2.padds.w")
766 "256_adds_epu16" => Intrinsic {
767 inputs: vec![v(u(16), 16), v(u(16), 16)],
768 output: v(u(16), 16),
769 definition: Named("llvm.x86.avx2.paddus.w")
771 "256_avg_epu8" => Intrinsic {
772 inputs: vec![v(u(8), 32), v(u(8), 32)],
774 definition: Named("llvm.x86.avx2.pavg.b")
776 "256_avg_epu16" => Intrinsic {
777 inputs: vec![v(u(16), 16), v(u(16), 16)],
778 output: v(u(16), 16),
779 definition: Named("llvm.x86.avx2.pavg.w")
781 "256_hadd_epi16" => Intrinsic {
782 inputs: vec![v(i(16), 16), v(i(16), 16)],
783 output: v(i(16), 16),
784 definition: Named("llvm.x86.avx2.phadd.w")
786 "256_hadd_epi32" => Intrinsic {
787 inputs: vec![v(i(32), 8), v(i(32), 8)],
789 definition: Named("llvm.x86.avx2.phadd.d")
791 "256_hadds_epi16" => Intrinsic {
792 inputs: vec![v(i(16), 16), v(i(16), 16)],
793 output: v(i(16), 16),
794 definition: Named("llvm.x86.avx2.phadd.sw")
796 "256_hsub_epi16" => Intrinsic {
797 inputs: vec![v(i(16), 16), v(i(16), 16)],
798 output: v(i(16), 16),
799 definition: Named("llvm.x86.avx2.phsub.w")
801 "256_hsub_epi32" => Intrinsic {
802 inputs: vec![v(i(32), 8), v(i(32), 8)],
804 definition: Named("llvm.x86.avx2.phsub.d")
806 "256_hsubs_epi16" => Intrinsic {
807 inputs: vec![v(i(16), 16), v(i(16), 16)],
808 output: v(i(16), 16),
809 definition: Named("llvm.x86.avx2.phsub.sw")
811 "256_madd_epi16" => Intrinsic {
812 inputs: vec![v(i(16), 16), v(i(16), 16)],
814 definition: Named("llvm.x86.avx2.pmadd.wd")
816 "256_maddubs_epi16" => Intrinsic {
817 inputs: vec![v(i(8), 32), v(i(8), 32)],
818 output: v(i(16), 16),
819 definition: Named("llvm.x86.avx2.pmadd.ub.sw")
821 "_mask_i32gather_epi32" => Intrinsic {
822 inputs: vec![v(i(32), 4), p(true, i(32), Some(i(8))), v(i(32), 4), v(i(32), 4), i_(32, 8)],
824 definition: Named("llvm.x86.avx2.gather.d.d")
826 "_mask_i32gather_ps" => Intrinsic {
827 inputs: vec![v(f(32), 4), p(true, f(32), Some(i(8))), v(i(32), 4), v_(i(32), f(32), 4), i_(32, 8)],
829 definition: Named("llvm.x86.avx2.gather.d.ps")
831 "256_mask_i32gather_epi32" => Intrinsic {
832 inputs: vec![v(i(32), 8), p(true, i(32), Some(i(8))), v(i(32), 8), v(i(32), 8), i_(32, 8)],
834 definition: Named("llvm.x86.avx2.gather.d.d.256")
836 "256_mask_i32gather_ps" => Intrinsic {
837 inputs: vec![v(f(32), 8), p(true, f(32), Some(i(8))), v(i(32), 8), v_(i(32), f(32), 8), i_(32, 8)],
839 definition: Named("llvm.x86.avx2.gather.d.ps.256")
841 "_mask_i32gather_epi64" => Intrinsic {
842 inputs: vec![v(i(64), 2), p(true, i(64), Some(i(8))), v(i(32), 4), v(i(64), 2), i_(32, 8)],
844 definition: Named("llvm.x86.avx2.gather.d.q")
846 "_mask_i32gather_pd" => Intrinsic {
847 inputs: vec![v(f(64), 2), p(true, f(64), Some(i(8))), v(i(32), 4), v_(i(64), f(64), 2), i_(32, 8)],
849 definition: Named("llvm.x86.avx2.gather.d.pd")
851 "256_mask_i32gather_epi64" => Intrinsic {
852 inputs: vec![v(i(64), 4), p(true, i(64), Some(i(8))), v(i(32), 4), v(i(64), 4), i_(32, 8)],
854 definition: Named("llvm.x86.avx2.gather.d.q.256")
856 "256_mask_i32gather_pd" => Intrinsic {
857 inputs: vec![v(f(64), 4), p(true, f(64), Some(i(8))), v(i(32), 4), v_(i(64), f(64), 4), i_(32, 8)],
859 definition: Named("llvm.x86.avx2.gather.d.pd.256")
861 "_mask_i64gather_epi32" => Intrinsic {
862 inputs: vec![v(i(32), 4), p(true, i(32), Some(i(8))), v(i(64), 2), v(i(32), 4), i_(32, 8)],
864 definition: Named("llvm.x86.avx2.gather.q.d")
866 "_mask_i64gather_ps" => Intrinsic {
867 inputs: vec![v(f(32), 4), p(true, f(32), Some(i(8))), v(i(64), 2), v_(i(32), f(32), 4), i_(32, 8)],
869 definition: Named("llvm.x86.avx2.gather.q.ps")
871 "256_mask_i64gather_epi32" => Intrinsic {
872 inputs: vec![v(i(32), 4), p(true, i(32), Some(i(8))), v(i(64), 4), v(i(32), 4), i_(32, 8)],
874 definition: Named("llvm.x86.avx2.gather.q.d")
876 "256_mask_i64gather_ps" => Intrinsic {
877 inputs: vec![v(f(32), 4), p(true, f(32), Some(i(8))), v(i(64), 4), v_(i(32), f(32), 4), i_(32, 8)],
879 definition: Named("llvm.x86.avx2.gather.q.ps")
881 "_mask_i64gather_epi64" => Intrinsic {
882 inputs: vec![v(i(64), 2), p(true, i(64), Some(i(8))), v(i(64), 2), v(i(64), 2), i_(32, 8)],
884 definition: Named("llvm.x86.avx2.gather.q.q")
886 "_mask_i64gather_pd" => Intrinsic {
887 inputs: vec![v(f(64), 2), p(true, f(64), Some(i(8))), v(i(64), 2), v_(i(64), f(64), 2), i_(32, 8)],
889 definition: Named("llvm.x86.avx2.gather.q.pd")
891 "256_mask_i64gather_epi64" => Intrinsic {
892 inputs: vec![v(i(64), 4), p(true, i(64), Some(i(8))), v(i(64), 4), v(i(64), 4), i_(32, 8)],
894 definition: Named("llvm.x86.avx2.gather.q.q.256")
896 "256_mask_i64gather_pd" => Intrinsic {
897 inputs: vec![v(f(64), 4), p(true, f(64), Some(i(8))), v(i(64), 4), v_(i(64), f(64), 4), i_(32, 8)],
899 definition: Named("llvm.x86.avx2.gather.q.pd.256")
901 "_maskload_epi32" => Intrinsic {
902 inputs: vec![p(true, v(i(32), 4), Some(i(8))), v(i(32), 4)],
904 definition: Named("llvm.x86.avx2.maskload.d")
906 "_maskload_epi64" => Intrinsic {
907 inputs: vec![p(true, v(i(64), 2), Some(i(8))), v(i(64), 2)],
909 definition: Named("llvm.x86.avx2.maskload.q")
911 "256_maskload_epi32" => Intrinsic {
912 inputs: vec![p(true, v(i(32), 8), Some(i(8))), v(i(32), 8)],
914 definition: Named("llvm.x86.avx2.maskload.d.256")
916 "256_maskload_epi64" => Intrinsic {
917 inputs: vec![p(true, v(i(64), 4), Some(i(8))), v(i(64), 4)],
919 definition: Named("llvm.x86.avx2.maskload.q.256")
921 "_maskstore_epi32" => Intrinsic {
922 inputs: vec![p(false, i(32), Some(i(8))), v(i(32), 4), v(i(32), 4)],
924 definition: Named("llvm.x86.avx2.maskstore.d")
926 "_maskstore_epi64" => Intrinsic {
927 inputs: vec![p(false, i(64), Some(i(8))), v(i(64), 2), v(i(64), 2)],
929 definition: Named("llvm.x86.avx2.maskstore.q")
931 "256_maskstore_epi32" => Intrinsic {
932 inputs: vec![p(false, i(32), Some(i(8))), v(i(32), 8), v(i(32), 8)],
934 definition: Named("llvm.x86.avx2.maskstore.d.256")
936 "256_maskstore_epi64" => Intrinsic {
937 inputs: vec![p(false, i(64), Some(i(8))), v(i(64), 4), v(i(64), 4)],
939 definition: Named("llvm.x86.avx2.maskstore.q.256")
941 "256_max_epi8" => Intrinsic {
942 inputs: vec![v(i(8), 32), v(i(8), 32)],
944 definition: Named("llvm.x86.avx2.pmaxs.b")
946 "256_max_epu8" => Intrinsic {
947 inputs: vec![v(u(8), 32), v(u(8), 32)],
949 definition: Named("llvm.x86.avx2.pmaxu.b")
951 "256_max_epi16" => Intrinsic {
952 inputs: vec![v(i(16), 16), v(i(16), 16)],
953 output: v(i(16), 16),
954 definition: Named("llvm.x86.avx2.pmaxs.w")
956 "256_max_epu16" => Intrinsic {
957 inputs: vec![v(u(16), 16), v(u(16), 16)],
958 output: v(u(16), 16),
959 definition: Named("llvm.x86.avx2.pmaxu.w")
961 "256_max_epi32" => Intrinsic {
962 inputs: vec![v(i(32), 8), v(i(32), 8)],
964 definition: Named("llvm.x86.avx2.pmaxs.d")
966 "256_max_epu32" => Intrinsic {
967 inputs: vec![v(u(32), 8), v(u(32), 8)],
969 definition: Named("llvm.x86.avx2.pmaxu.d")
971 "256_min_epi8" => Intrinsic {
972 inputs: vec![v(i(8), 32), v(i(8), 32)],
974 definition: Named("llvm.x86.avx2.pmins.b")
976 "256_min_epu8" => Intrinsic {
977 inputs: vec![v(u(8), 32), v(u(8), 32)],
979 definition: Named("llvm.x86.avx2.pminu.b")
981 "256_min_epi16" => Intrinsic {
982 inputs: vec![v(i(16), 16), v(i(16), 16)],
983 output: v(i(16), 16),
984 definition: Named("llvm.x86.avx2.pmins.w")
986 "256_min_epu16" => Intrinsic {
987 inputs: vec![v(u(16), 16), v(u(16), 16)],
988 output: v(u(16), 16),
989 definition: Named("llvm.x86.avx2.pminu.w")
991 "256_min_epi32" => Intrinsic {
992 inputs: vec![v(i(32), 8), v(i(32), 8)],
994 definition: Named("llvm.x86.avx2.pmins.d")
996 "256_min_epu32" => Intrinsic {
997 inputs: vec![v(u(32), 8), v(u(32), 8)],
999 definition: Named("llvm.x86.avx2.pminu.d")
1001 "256_movemask_epi8" => Intrinsic {
1002 inputs: vec![v(i(8), 32)],
1004 definition: Named("llvm.x86.avx2.pmovmskb")
1006 "256_mpsadbw_epu8" => Intrinsic {
1007 inputs: vec![v(u(8), 32), v(u(8), 32), i_(32, 8)],
1008 output: v(u(16), 16),
1009 definition: Named("llvm.x86.avx2.mpsadbw")
1011 "256_mul_epi64" => Intrinsic {
1012 inputs: vec![v(i(32), 8), v(i(32), 8)],
1013 output: v(i(64), 4),
1014 definition: Named("llvm.x86.avx2.pmulq.dq")
1016 "256_mul_epu64" => Intrinsic {
1017 inputs: vec![v(u(32), 8), v(u(32), 8)],
1018 output: v(u(64), 4),
1019 definition: Named("llvm.x86.avx2.pmulq.dq")
1021 "256_mulhi_epi16" => Intrinsic {
1022 inputs: vec![v(i(16), 16), v(i(16), 16)],
1023 output: v(i(16), 16),
1024 definition: Named("llvm.x86.avx2.pmulhw.w")
1026 "256_mulhi_epu16" => Intrinsic {
1027 inputs: vec![v(u(16), 16), v(u(16), 16)],
1028 output: v(u(16), 16),
1029 definition: Named("llvm.x86.avx2.pmulhw.w")
1031 "256_mulhrs_epi16" => Intrinsic {
1032 inputs: vec![v(i(16), 16), v(i(16), 16)],
1033 output: v(i(16), 16),
1034 definition: Named("llvm.x86.avx2.pmul.hr.sw")
1036 "256_packs_epi16" => Intrinsic {
1037 inputs: vec![v(i(16), 16), v(i(16), 16)],
1038 output: v(i(8), 32),
1039 definition: Named("llvm.x86.avx2.packsswb")
1041 "256_packus_epi16" => Intrinsic {
1042 inputs: vec![v(i(16), 16), v(i(16), 16)],
1043 output: v(u(8), 32),
1044 definition: Named("llvm.x86.avx2.packuswb")
1046 "256_packs_epi32" => Intrinsic {
1047 inputs: vec![v(i(32), 8), v(i(32), 8)],
1048 output: v(i(16), 16),
1049 definition: Named("llvm.x86.avx2.packssdw")
1051 "256_packus_epi32" => Intrinsic {
1052 inputs: vec![v(i(32), 8), v(i(32), 8)],
1053 output: v(u(16), 16),
1054 definition: Named("llvm.x86.avx2.packusdw")
1056 "256_permutevar8x32_epi32" => Intrinsic {
1057 inputs: vec![v(i(32), 8), v(i(32), 8)],
1058 output: v(i(32), 8),
1059 definition: Named("llvm.x86.avx2.permd")
1061 "256_permutevar8x32_ps" => Intrinsic {
1062 inputs: vec![v(f(32), 8), v(i(32), 8)],
1063 output: v(f(32), 8),
1064 definition: Named("llvm.x86.avx2.permps")
1066 "256_sad_epu8" => Intrinsic {
1067 inputs: vec![v(u(8), 32), v(u(8), 32)],
1068 output: v(u(8), 32),
1069 definition: Named("llvm.x86.avx2.psad.bw")
1071 "256_shuffle_epi8" => Intrinsic {
1072 inputs: vec![v(i(8), 32), v(i(8), 32)],
1073 output: v(i(8), 32),
1074 definition: Named("llvm.x86.avx2.pshuf.b")
1076 "256_sign_epi8" => Intrinsic {
1077 inputs: vec![v(i(8), 32), v(i(8), 32)],
1078 output: v(i(8), 32),
1079 definition: Named("llvm.x86.avx2.psign.b")
1081 "256_sign_epi16" => Intrinsic {
1082 inputs: vec![v(i(16), 16), v(i(16), 16)],
1083 output: v(i(16), 16),
1084 definition: Named("llvm.x86.avx2.psign.w")
1086 "256_sign_epi32" => Intrinsic {
1087 inputs: vec![v(i(32), 8), v(i(32), 8)],
1088 output: v(i(32), 8),
1089 definition: Named("llvm.x86.avx2.psign.d")
1091 "256_subs_epi8" => Intrinsic {
1092 inputs: vec![v(i(8), 32), v(i(8), 32)],
1093 output: v(i(8), 32),
1094 definition: Named("llvm.x86.avx2.psubs.b")
1096 "256_subs_epu8" => Intrinsic {
1097 inputs: vec![v(u(8), 32), v(u(8), 32)],
1098 output: v(u(8), 32),
1099 definition: Named("llvm.x86.avx2.psubus.b")
1101 "256_subs_epi16" => Intrinsic {
1102 inputs: vec![v(i(16), 16), v(i(16), 16)],
1103 output: v(i(16), 16),
1104 definition: Named("llvm.x86.avx2.psubs.w")
1106 "256_subs_epu16" => Intrinsic {
1107 inputs: vec![v(u(16), 16), v(u(16), 16)],
1108 output: v(u(16), 16),
1109 definition: Named("llvm.x86.avx2.psubus.w")