Lines Matching refs:MVT

179   std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty);  in getArithmeticInstrCost()
185 { ISD::FDIV, MVT::f32, 18 }, // divss in getArithmeticInstrCost()
186 { ISD::FDIV, MVT::v4f32, 35 }, // divps in getArithmeticInstrCost()
187 { ISD::FDIV, MVT::f64, 33 }, // divsd in getArithmeticInstrCost()
188 { ISD::FDIV, MVT::v2f64, 65 }, // divpd in getArithmeticInstrCost()
197 { ISD::MUL, MVT::v4i32, 11 }, // pmulld in getArithmeticInstrCost()
198 { ISD::MUL, MVT::v8i16, 2 }, // pmullw in getArithmeticInstrCost()
199 { ISD::MUL, MVT::v16i8, 14 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
200 { ISD::FMUL, MVT::f64, 2 }, // mulsd in getArithmeticInstrCost()
201 { ISD::FMUL, MVT::v2f64, 4 }, // mulpd in getArithmeticInstrCost()
202 { ISD::FMUL, MVT::v4f32, 2 }, // mulps in getArithmeticInstrCost()
203 { ISD::FDIV, MVT::f32, 17 }, // divss in getArithmeticInstrCost()
204 { ISD::FDIV, MVT::v4f32, 39 }, // divps in getArithmeticInstrCost()
205 { ISD::FDIV, MVT::f64, 32 }, // divsd in getArithmeticInstrCost()
206 { ISD::FDIV, MVT::v2f64, 69 }, // divpd in getArithmeticInstrCost()
207 { ISD::FADD, MVT::v2f64, 2 }, // addpd in getArithmeticInstrCost()
208 { ISD::FSUB, MVT::v2f64, 2 }, // subpd in getArithmeticInstrCost()
214 { ISD::MUL, MVT::v2i64, 17 }, in getArithmeticInstrCost()
216 { ISD::ADD, MVT::v2i64, 4 }, in getArithmeticInstrCost()
217 { ISD::SUB, MVT::v2i64, 4 }, in getArithmeticInstrCost()
221 if (Args.size() == 2 && ISD == ISD::MUL && LT.second == MVT::v4i32) { in getArithmeticInstrCost()
290 { ISD::SHL, MVT::v64i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
291 { ISD::SRL, MVT::v64i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
292 { ISD::SRA, MVT::v64i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
303 { ISD::SRA, MVT::v2i64, 1 }, in getArithmeticInstrCost()
304 { ISD::SRA, MVT::v4i64, 1 }, in getArithmeticInstrCost()
305 { ISD::SRA, MVT::v8i64, 1 }, in getArithmeticInstrCost()
316 { ISD::SHL, MVT::v32i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
317 { ISD::SRL, MVT::v32i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
318 { ISD::SRA, MVT::v32i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
320 { ISD::SRA, MVT::v4i64, 4 }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
331 { ISD::SHL, MVT::v16i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
332 { ISD::SRL, MVT::v16i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
333 { ISD::SRA, MVT::v16i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
335 { ISD::SHL, MVT::v32i8, 4+2 }, // 2*(psllw + pand) + split. in getArithmeticInstrCost()
336 { ISD::SRL, MVT::v32i8, 4+2 }, // 2*(psrlw + pand) + split. in getArithmeticInstrCost()
337 { ISD::SRA, MVT::v32i8, 8+2 }, // 2*(psrlw, pand, pxor, psubb) + split. in getArithmeticInstrCost()
349 { ISD::SDIV, MVT::v64i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
350 { ISD::SREM, MVT::v64i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
351 { ISD::UDIV, MVT::v64i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
352 { ISD::UREM, MVT::v64i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
353 { ISD::SDIV, MVT::v32i16, 6 }, // vpmulhw sequence in getArithmeticInstrCost()
354 { ISD::SREM, MVT::v32i16, 8 }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
355 { ISD::UDIV, MVT::v32i16, 6 }, // vpmulhuw sequence in getArithmeticInstrCost()
356 { ISD::UREM, MVT::v32i16, 8 }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
368 { ISD::SDIV, MVT::v16i32, 15 }, // vpmuldq sequence in getArithmeticInstrCost()
369 { ISD::SREM, MVT::v16i32, 17 }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
370 { ISD::UDIV, MVT::v16i32, 15 }, // vpmuludq sequence in getArithmeticInstrCost()
371 { ISD::UREM, MVT::v16i32, 17 }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
383 { ISD::SDIV, MVT::v32i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
384 { ISD::SREM, MVT::v32i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
385 { ISD::UDIV, MVT::v32i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
386 { ISD::UREM, MVT::v32i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
387 { ISD::SDIV, MVT::v16i16, 6 }, // vpmulhw sequence in getArithmeticInstrCost()
388 { ISD::SREM, MVT::v16i16, 8 }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
389 { ISD::UDIV, MVT::v16i16, 6 }, // vpmulhuw sequence in getArithmeticInstrCost()
390 { ISD::UREM, MVT::v16i16, 8 }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
391 { ISD::SDIV, MVT::v8i32, 15 }, // vpmuldq sequence in getArithmeticInstrCost()
392 { ISD::SREM, MVT::v8i32, 19 }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
393 { ISD::UDIV, MVT::v8i32, 15 }, // vpmuludq sequence in getArithmeticInstrCost()
394 { ISD::UREM, MVT::v8i32, 19 }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
405 { ISD::SDIV, MVT::v32i8, 28+2 }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
406 { ISD::SREM, MVT::v32i8, 32+2 }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
407 { ISD::SDIV, MVT::v16i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
408 { ISD::SREM, MVT::v16i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
409 { ISD::UDIV, MVT::v32i8, 28+2 }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
410 { ISD::UREM, MVT::v32i8, 32+2 }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
411 { ISD::UDIV, MVT::v16i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
412 { ISD::UREM, MVT::v16i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
413 { ISD::SDIV, MVT::v16i16, 12+2 }, // 2*pmulhw sequence + split. in getArithmeticInstrCost()
414 { ISD::SREM, MVT::v16i16, 16+2 }, // 2*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
415 { ISD::SDIV, MVT::v8i16, 6 }, // pmulhw sequence in getArithmeticInstrCost()
416 { ISD::SREM, MVT::v8i16, 8 }, // pmulhw+mul+sub sequence in getArithmeticInstrCost()
417 { ISD::UDIV, MVT::v16i16, 12+2 }, // 2*pmulhuw sequence + split. in getArithmeticInstrCost()
418 { ISD::UREM, MVT::v16i16, 16+2 }, // 2*pmulhuw+mul+sub sequence + split. in getArithmeticInstrCost()
419 { ISD::UDIV, MVT::v8i16, 6 }, // pmulhuw sequence in getArithmeticInstrCost()
420 { ISD::UREM, MVT::v8i16, 8 }, // pmulhuw+mul+sub sequence in getArithmeticInstrCost()
421 { ISD::SDIV, MVT::v8i32, 38+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
422 { ISD::SREM, MVT::v8i32, 48+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
423 { ISD::SDIV, MVT::v4i32, 19 }, // pmuludq sequence in getArithmeticInstrCost()
424 { ISD::SREM, MVT::v4i32, 24 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
425 { ISD::UDIV, MVT::v8i32, 30+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
426 { ISD::UREM, MVT::v8i32, 40+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
427 { ISD::UDIV, MVT::v4i32, 15 }, // pmuludq sequence in getArithmeticInstrCost()
428 { ISD::UREM, MVT::v4i32, 20 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
435 if (ISD == ISD::SDIV && LT.second == MVT::v8i32 && ST->hasAVX()) in getArithmeticInstrCost()
437 if (ISD == ISD::SREM && LT.second == MVT::v8i32 && ST->hasAVX()) in getArithmeticInstrCost()
439 if (ISD == ISD::SDIV && LT.second == MVT::v4i32 && ST->hasSSE41()) in getArithmeticInstrCost()
441 if (ISD == ISD::SREM && LT.second == MVT::v4i32 && ST->hasSSE41()) in getArithmeticInstrCost()
450 { ISD::SHL, MVT::v16i16, 1 }, // psllw. in getArithmeticInstrCost()
451 { ISD::SRL, MVT::v16i16, 1 }, // psrlw. in getArithmeticInstrCost()
452 { ISD::SRA, MVT::v16i16, 1 }, // psraw. in getArithmeticInstrCost()
465 { ISD::SHL, MVT::v8i16, 1 }, // psllw. in getArithmeticInstrCost()
466 { ISD::SHL, MVT::v4i32, 1 }, // pslld in getArithmeticInstrCost()
467 { ISD::SHL, MVT::v2i64, 1 }, // psllq. in getArithmeticInstrCost()
469 { ISD::SRL, MVT::v8i16, 1 }, // psrlw. in getArithmeticInstrCost()
470 { ISD::SRL, MVT::v4i32, 1 }, // psrld. in getArithmeticInstrCost()
471 { ISD::SRL, MVT::v2i64, 1 }, // psrlq. in getArithmeticInstrCost()
473 { ISD::SRA, MVT::v8i16, 1 }, // psraw. in getArithmeticInstrCost()
474 { ISD::SRA, MVT::v4i32, 1 }, // psrad. in getArithmeticInstrCost()
486 { ISD::MUL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
487 { ISD::MUL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
488 { ISD::MUL, MVT::v8i64, 1 } in getArithmeticInstrCost()
497 { ISD::SHL, MVT::v8i16, 1 }, // vpsllvw in getArithmeticInstrCost()
498 { ISD::SRL, MVT::v8i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
499 { ISD::SRA, MVT::v8i16, 1 }, // vpsravw in getArithmeticInstrCost()
501 { ISD::SHL, MVT::v16i16, 1 }, // vpsllvw in getArithmeticInstrCost()
502 { ISD::SRL, MVT::v16i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
503 { ISD::SRA, MVT::v16i16, 1 }, // vpsravw in getArithmeticInstrCost()
505 { ISD::SHL, MVT::v32i16, 1 }, // vpsllvw in getArithmeticInstrCost()
506 { ISD::SRL, MVT::v32i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
507 { ISD::SRA, MVT::v32i16, 1 }, // vpsravw in getArithmeticInstrCost()
509 { ISD::SHL, MVT::v64i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
510 { ISD::SRL, MVT::v64i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
511 { ISD::SRA, MVT::v64i8, 24 }, // vpblendvb sequence. in getArithmeticInstrCost()
513 { ISD::MUL, MVT::v64i8, 11 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
514 { ISD::MUL, MVT::v32i8, 4 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
515 { ISD::MUL, MVT::v16i8, 4 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
524 { ISD::SHL, MVT::v16i32, 1 }, in getArithmeticInstrCost()
525 { ISD::SRL, MVT::v16i32, 1 }, in getArithmeticInstrCost()
526 { ISD::SRA, MVT::v16i32, 1 }, in getArithmeticInstrCost()
528 { ISD::SHL, MVT::v8i64, 1 }, in getArithmeticInstrCost()
529 { ISD::SRL, MVT::v8i64, 1 }, in getArithmeticInstrCost()
531 { ISD::SRA, MVT::v2i64, 1 }, in getArithmeticInstrCost()
532 { ISD::SRA, MVT::v4i64, 1 }, in getArithmeticInstrCost()
533 { ISD::SRA, MVT::v8i64, 1 }, in getArithmeticInstrCost()
535 { ISD::MUL, MVT::v32i8, 13 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
536 { ISD::MUL, MVT::v16i8, 5 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
537 { ISD::MUL, MVT::v16i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
538 { ISD::MUL, MVT::v8i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
539 { ISD::MUL, MVT::v4i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
540 { ISD::MUL, MVT::v8i64, 8 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
542 { ISD::FADD, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
543 { ISD::FSUB, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
544 { ISD::FMUL, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
546 { ISD::FADD, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
547 { ISD::FSUB, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
548 { ISD::FMUL, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
558 { ISD::SHL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
559 { ISD::SRL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
560 { ISD::SRA, MVT::v4i32, 1 }, in getArithmeticInstrCost()
561 { ISD::SHL, MVT::v8i32, 1 }, in getArithmeticInstrCost()
562 { ISD::SRL, MVT::v8i32, 1 }, in getArithmeticInstrCost()
563 { ISD::SRA, MVT::v8i32, 1 }, in getArithmeticInstrCost()
564 { ISD::SHL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
565 { ISD::SRL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
566 { ISD::SHL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
567 { ISD::SRL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
572 if (ISD == ISD::SHL && LT.second == MVT::v16i16 && in getArithmeticInstrCost()
587 { ISD::SHL, MVT::v16i8, 1 }, in getArithmeticInstrCost()
588 { ISD::SRL, MVT::v16i8, 2 }, in getArithmeticInstrCost()
589 { ISD::SRA, MVT::v16i8, 2 }, in getArithmeticInstrCost()
590 { ISD::SHL, MVT::v8i16, 1 }, in getArithmeticInstrCost()
591 { ISD::SRL, MVT::v8i16, 2 }, in getArithmeticInstrCost()
592 { ISD::SRA, MVT::v8i16, 2 }, in getArithmeticInstrCost()
593 { ISD::SHL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
594 { ISD::SRL, MVT::v4i32, 2 }, in getArithmeticInstrCost()
595 { ISD::SRA, MVT::v4i32, 2 }, in getArithmeticInstrCost()
596 { ISD::SHL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
597 { ISD::SRL, MVT::v2i64, 2 }, in getArithmeticInstrCost()
598 { ISD::SRA, MVT::v2i64, 2 }, in getArithmeticInstrCost()
600 { ISD::SHL, MVT::v32i8, 2+2 }, in getArithmeticInstrCost()
601 { ISD::SRL, MVT::v32i8, 4+2 }, in getArithmeticInstrCost()
602 { ISD::SRA, MVT::v32i8, 4+2 }, in getArithmeticInstrCost()
603 { ISD::SHL, MVT::v16i16, 2+2 }, in getArithmeticInstrCost()
604 { ISD::SRL, MVT::v16i16, 4+2 }, in getArithmeticInstrCost()
605 { ISD::SRA, MVT::v16i16, 4+2 }, in getArithmeticInstrCost()
606 { ISD::SHL, MVT::v8i32, 2+2 }, in getArithmeticInstrCost()
607 { ISD::SRL, MVT::v8i32, 4+2 }, in getArithmeticInstrCost()
608 { ISD::SRA, MVT::v8i32, 4+2 }, in getArithmeticInstrCost()
609 { ISD::SHL, MVT::v4i64, 2+2 }, in getArithmeticInstrCost()
610 { ISD::SRL, MVT::v4i64, 4+2 }, in getArithmeticInstrCost()
611 { ISD::SRA, MVT::v4i64, 4+2 }, in getArithmeticInstrCost()
630 { ISD::SHL, MVT::v16i16, 2+2 }, // 2*psllw + split. in getArithmeticInstrCost()
631 { ISD::SHL, MVT::v8i32, 2+2 }, // 2*pslld + split. in getArithmeticInstrCost()
632 { ISD::SHL, MVT::v4i64, 2+2 }, // 2*psllq + split. in getArithmeticInstrCost()
634 { ISD::SRL, MVT::v16i16, 2+2 }, // 2*psrlw + split. in getArithmeticInstrCost()
635 { ISD::SRL, MVT::v8i32, 2+2 }, // 2*psrld + split. in getArithmeticInstrCost()
636 { ISD::SRL, MVT::v4i64, 2+2 }, // 2*psrlq + split. in getArithmeticInstrCost()
638 { ISD::SRA, MVT::v16i16, 2+2 }, // 2*psraw + split. in getArithmeticInstrCost()
639 { ISD::SRA, MVT::v8i32, 2+2 }, // 2*psrad + split. in getArithmeticInstrCost()
640 { ISD::SRA, MVT::v2i64, 4 }, // 2*psrad + shuffle. in getArithmeticInstrCost()
641 { ISD::SRA, MVT::v4i64, 8+2 }, // 2*(2*psrad + shuffle) + split. in getArithmeticInstrCost()
649 if (ISD == ISD::SRA && LT.second == MVT::v4i64 && ST->hasAVX2()) in getArithmeticInstrCost()
659 MVT VT = LT.second; in getArithmeticInstrCost()
662 if (((VT == MVT::v8i16 || VT == MVT::v4i32) && ST->hasSSE2()) || in getArithmeticInstrCost()
663 ((VT == MVT::v16i16 || VT == MVT::v8i32) && ST->hasAVX())) in getArithmeticInstrCost()
668 { ISD::SHL, MVT::v32i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
669 { ISD::SHL, MVT::v16i16, 10 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
671 { ISD::SRL, MVT::v32i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
672 { ISD::SRL, MVT::v16i16, 10 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
674 { ISD::SRA, MVT::v32i8, 24 }, // vpblendvb sequence. in getArithmeticInstrCost()
675 { ISD::SRA, MVT::v16i16, 10 }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
676 { ISD::SRA, MVT::v2i64, 4 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
677 { ISD::SRA, MVT::v4i64, 4 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
679 { ISD::SUB, MVT::v32i8, 1 }, // psubb in getArithmeticInstrCost()
680 { ISD::ADD, MVT::v32i8, 1 }, // paddb in getArithmeticInstrCost()
681 { ISD::SUB, MVT::v16i16, 1 }, // psubw in getArithmeticInstrCost()
682 { ISD::ADD, MVT::v16i16, 1 }, // paddw in getArithmeticInstrCost()
683 { ISD::SUB, MVT::v8i32, 1 }, // psubd in getArithmeticInstrCost()
684 { ISD::ADD, MVT::v8i32, 1 }, // paddd in getArithmeticInstrCost()
685 { ISD::SUB, MVT::v4i64, 1 }, // psubq in getArithmeticInstrCost()
686 { ISD::ADD, MVT::v4i64, 1 }, // paddq in getArithmeticInstrCost()
688 { ISD::MUL, MVT::v32i8, 17 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
689 { ISD::MUL, MVT::v16i8, 7 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
690 { ISD::MUL, MVT::v16i16, 1 }, // pmullw in getArithmeticInstrCost()
691 { ISD::MUL, MVT::v8i32, 2 }, // pmulld (Haswell from agner.org) in getArithmeticInstrCost()
692 { ISD::MUL, MVT::v4i64, 8 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
694 { ISD::FADD, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
695 { ISD::FADD, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
696 { ISD::FSUB, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
697 { ISD::FSUB, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
698 { ISD::FMUL, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
699 { ISD::FMUL, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
701 { ISD::FDIV, MVT::f32, 7 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
702 { ISD::FDIV, MVT::v4f32, 7 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
703 { ISD::FDIV, MVT::v8f32, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
704 { ISD::FDIV, MVT::f64, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
705 { ISD::FDIV, MVT::v2f64, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
706 { ISD::FDIV, MVT::v4f64, 28 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
718 { ISD::MUL, MVT::v16i16, 4 }, in getArithmeticInstrCost()
719 { ISD::MUL, MVT::v8i32, 4 }, in getArithmeticInstrCost()
720 { ISD::SUB, MVT::v32i8, 4 }, in getArithmeticInstrCost()
721 { ISD::ADD, MVT::v32i8, 4 }, in getArithmeticInstrCost()
722 { ISD::SUB, MVT::v16i16, 4 }, in getArithmeticInstrCost()
723 { ISD::ADD, MVT::v16i16, 4 }, in getArithmeticInstrCost()
724 { ISD::SUB, MVT::v8i32, 4 }, in getArithmeticInstrCost()
725 { ISD::ADD, MVT::v8i32, 4 }, in getArithmeticInstrCost()
726 { ISD::SUB, MVT::v4i64, 4 }, in getArithmeticInstrCost()
727 { ISD::ADD, MVT::v4i64, 4 }, in getArithmeticInstrCost()
734 { ISD::MUL, MVT::v4i64, 18 }, in getArithmeticInstrCost()
736 { ISD::MUL, MVT::v32i8, 26 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
738 { ISD::FDIV, MVT::f32, 14 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
739 { ISD::FDIV, MVT::v4f32, 14 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
740 { ISD::FDIV, MVT::v8f32, 28 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
741 { ISD::FDIV, MVT::f64, 22 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
742 { ISD::FDIV, MVT::v2f64, 22 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
743 { ISD::FDIV, MVT::v4f64, 44 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
751 { ISD::FADD, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
752 { ISD::FADD, MVT::f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
753 { ISD::FADD, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
754 { ISD::FADD, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
756 { ISD::FSUB, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
757 { ISD::FSUB, MVT::f32 , 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
758 { ISD::FSUB, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
759 { ISD::FSUB, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
761 { ISD::FMUL, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
762 { ISD::FMUL, MVT::f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
763 { ISD::FMUL, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
764 { ISD::FMUL, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
766 { ISD::FDIV, MVT::f32, 14 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
767 { ISD::FDIV, MVT::v4f32, 14 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
768 { ISD::FDIV, MVT::f64, 22 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
769 { ISD::FDIV, MVT::v2f64, 22 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
777 { ISD::SHL, MVT::v16i8, 11 }, // pblendvb sequence. in getArithmeticInstrCost()
778 { ISD::SHL, MVT::v32i8, 2*11+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
779 { ISD::SHL, MVT::v8i16, 14 }, // pblendvb sequence. in getArithmeticInstrCost()
780 { ISD::SHL, MVT::v16i16, 2*14+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
781 { ISD::SHL, MVT::v4i32, 4 }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
782 { ISD::SHL, MVT::v8i32, 2*4+2 }, // pslld/paddd/cvttps2dq/pmulld + split in getArithmeticInstrCost()
784 { ISD::SRL, MVT::v16i8, 12 }, // pblendvb sequence. in getArithmeticInstrCost()
785 { ISD::SRL, MVT::v32i8, 2*12+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
786 { ISD::SRL, MVT::v8i16, 14 }, // pblendvb sequence. in getArithmeticInstrCost()
787 { ISD::SRL, MVT::v16i16, 2*14+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
788 { ISD::SRL, MVT::v4i32, 11 }, // Shift each lane + blend. in getArithmeticInstrCost()
789 { ISD::SRL, MVT::v8i32, 2*11+2 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
791 { ISD::SRA, MVT::v16i8, 24 }, // pblendvb sequence. in getArithmeticInstrCost()
792 { ISD::SRA, MVT::v32i8, 2*24+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
793 { ISD::SRA, MVT::v8i16, 14 }, // pblendvb sequence. in getArithmeticInstrCost()
794 { ISD::SRA, MVT::v16i16, 2*14+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
795 { ISD::SRA, MVT::v4i32, 12 }, // Shift each lane + blend. in getArithmeticInstrCost()
796 { ISD::SRA, MVT::v8i32, 2*12+2 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
798 { ISD::MUL, MVT::v4i32, 2 } // pmulld (Nehalem from agner.org) in getArithmeticInstrCost()
808 { ISD::SHL, MVT::v16i8, 26 }, // cmpgtb sequence. in getArithmeticInstrCost()
809 { ISD::SHL, MVT::v8i16, 32 }, // cmpgtb sequence. in getArithmeticInstrCost()
810 { ISD::SHL, MVT::v4i32, 2*5 }, // We optimized this using mul. in getArithmeticInstrCost()
811 { ISD::SHL, MVT::v2i64, 4 }, // splat+shuffle sequence. in getArithmeticInstrCost()
812 { ISD::SHL, MVT::v4i64, 2*4+2 }, // splat+shuffle sequence + split. in getArithmeticInstrCost()
814 { ISD::SRL, MVT::v16i8, 26 }, // cmpgtb sequence. in getArithmeticInstrCost()
815 { ISD::SRL, MVT::v8i16, 32 }, // cmpgtb sequence. in getArithmeticInstrCost()
816 { ISD::SRL, MVT::v4i32, 16 }, // Shift each lane + blend. in getArithmeticInstrCost()
817 { ISD::SRL, MVT::v2i64, 4 }, // splat+shuffle sequence. in getArithmeticInstrCost()
818 { ISD::SRL, MVT::v4i64, 2*4+2 }, // splat+shuffle sequence + split. in getArithmeticInstrCost()
820 { ISD::SRA, MVT::v16i8, 54 }, // unpacked cmpgtb sequence. in getArithmeticInstrCost()
821 { ISD::SRA, MVT::v8i16, 32 }, // cmpgtb sequence. in getArithmeticInstrCost()
822 { ISD::SRA, MVT::v4i32, 16 }, // Shift each lane + blend. in getArithmeticInstrCost()
823 { ISD::SRA, MVT::v2i64, 12 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
824 { ISD::SRA, MVT::v4i64, 2*12+2 }, // srl/xor/sub sequence+split. in getArithmeticInstrCost()
826 { ISD::MUL, MVT::v16i8, 12 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
827 { ISD::MUL, MVT::v8i16, 1 }, // pmullw in getArithmeticInstrCost()
828 { ISD::MUL, MVT::v4i32, 6 }, // 3*pmuludq/4*shuffle in getArithmeticInstrCost()
829 { ISD::MUL, MVT::v2i64, 8 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
831 { ISD::FDIV, MVT::f32, 23 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
832 { ISD::FDIV, MVT::v4f32, 39 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
833 { ISD::FDIV, MVT::f64, 38 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
834 { ISD::FDIV, MVT::v2f64, 69 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
836 { ISD::FADD, MVT::f32, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
837 { ISD::FADD, MVT::f64, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
839 { ISD::FSUB, MVT::f32, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
840 { ISD::FSUB, MVT::f64, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
848 { ISD::FDIV, MVT::f32, 17 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
849 { ISD::FDIV, MVT::v4f32, 34 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
851 { ISD::FADD, MVT::f32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
852 { ISD::FADD, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
854 { ISD::FSUB, MVT::f32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
855 { ISD::FSUB, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
857 { ISD::ADD, MVT::i8, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
858 { ISD::ADD, MVT::i16, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
859 { ISD::ADD, MVT::i32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
861 { ISD::SUB, MVT::i8, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
862 { ISD::SUB, MVT::i16, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
863 { ISD::SUB, MVT::i32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
892 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Tp); in getShuffleCost()
910 std::pair<int, MVT> SubLT = TLI->getTypeLegalizationCost(DL, SubTp); in getShuffleCost()
922 MVT LegalVT = LT.second; in getShuffleCost()
955 {TTI::SK_Reverse, MVT::v64i8, 1}, // vpermb in getShuffleCost()
956 {TTI::SK_Reverse, MVT::v32i8, 1}, // vpermb in getShuffleCost()
958 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 1}, // vpermb in getShuffleCost()
959 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 1}, // vpermb in getShuffleCost()
961 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 1}, // vpermt2b in getShuffleCost()
962 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 1}, // vpermt2b in getShuffleCost()
963 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 1} // vpermt2b in getShuffleCost()
972 {TTI::SK_Broadcast, MVT::v32i16, 1}, // vpbroadcastw in getShuffleCost()
973 {TTI::SK_Broadcast, MVT::v64i8, 1}, // vpbroadcastb in getShuffleCost()
975 {TTI::SK_Reverse, MVT::v32i16, 1}, // vpermw in getShuffleCost()
976 {TTI::SK_Reverse, MVT::v16i16, 1}, // vpermw in getShuffleCost()
977 {TTI::SK_Reverse, MVT::v64i8, 2}, // pshufb + vshufi64x2 in getShuffleCost()
979 {TTI::SK_PermuteSingleSrc, MVT::v32i16, 1}, // vpermw in getShuffleCost()
980 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 1}, // vpermw in getShuffleCost()
981 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 1}, // vpermw in getShuffleCost()
982 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 8}, // extend to v32i16 in getShuffleCost()
983 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 3}, // vpermw + zext/trunc in getShuffleCost()
985 {TTI::SK_PermuteTwoSrc, MVT::v32i16, 1}, // vpermt2w in getShuffleCost()
986 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 1}, // vpermt2w in getShuffleCost()
987 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 1}, // vpermt2w in getShuffleCost()
988 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 3}, // zext + vpermt2w + trunc in getShuffleCost()
989 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 19}, // 6 * v32i8 + 1 in getShuffleCost()
990 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 3} // zext + vpermt2w + trunc in getShuffleCost()
999 {TTI::SK_Broadcast, MVT::v8f64, 1}, // vbroadcastpd in getShuffleCost()
1000 {TTI::SK_Broadcast, MVT::v16f32, 1}, // vbroadcastps in getShuffleCost()
1001 {TTI::SK_Broadcast, MVT::v8i64, 1}, // vpbroadcastq in getShuffleCost()
1002 {TTI::SK_Broadcast, MVT::v16i32, 1}, // vpbroadcastd in getShuffleCost()
1004 {TTI::SK_Reverse, MVT::v8f64, 1}, // vpermpd in getShuffleCost()
1005 {TTI::SK_Reverse, MVT::v16f32, 1}, // vpermps in getShuffleCost()
1006 {TTI::SK_Reverse, MVT::v8i64, 1}, // vpermq in getShuffleCost()
1007 {TTI::SK_Reverse, MVT::v16i32, 1}, // vpermd in getShuffleCost()
1009 {TTI::SK_PermuteSingleSrc, MVT::v8f64, 1}, // vpermpd in getShuffleCost()
1010 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1011 {TTI::SK_PermuteSingleSrc, MVT::v2f64, 1}, // vpermpd in getShuffleCost()
1012 {TTI::SK_PermuteSingleSrc, MVT::v16f32, 1}, // vpermps in getShuffleCost()
1013 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1014 {TTI::SK_PermuteSingleSrc, MVT::v4f32, 1}, // vpermps in getShuffleCost()
1015 {TTI::SK_PermuteSingleSrc, MVT::v8i64, 1}, // vpermq in getShuffleCost()
1016 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1017 {TTI::SK_PermuteSingleSrc, MVT::v2i64, 1}, // vpermq in getShuffleCost()
1018 {TTI::SK_PermuteSingleSrc, MVT::v16i32, 1}, // vpermd in getShuffleCost()
1019 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1020 {TTI::SK_PermuteSingleSrc, MVT::v4i32, 1}, // vpermd in getShuffleCost()
1021 {TTI::SK_PermuteSingleSrc, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1023 {TTI::SK_PermuteTwoSrc, MVT::v8f64, 1}, // vpermt2pd in getShuffleCost()
1024 {TTI::SK_PermuteTwoSrc, MVT::v16f32, 1}, // vpermt2ps in getShuffleCost()
1025 {TTI::SK_PermuteTwoSrc, MVT::v8i64, 1}, // vpermt2q in getShuffleCost()
1026 {TTI::SK_PermuteTwoSrc, MVT::v16i32, 1}, // vpermt2d in getShuffleCost()
1027 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 1}, // vpermt2pd in getShuffleCost()
1028 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 1}, // vpermt2ps in getShuffleCost()
1029 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 1}, // vpermt2q in getShuffleCost()
1030 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 1}, // vpermt2d in getShuffleCost()
1031 {TTI::SK_PermuteTwoSrc, MVT::v2f64, 1}, // vpermt2pd in getShuffleCost()
1032 {TTI::SK_PermuteTwoSrc, MVT::v4f32, 1}, // vpermt2ps in getShuffleCost()
1033 {TTI::SK_PermuteTwoSrc, MVT::v2i64, 1}, // vpermt2q in getShuffleCost()
1034 {TTI::SK_PermuteTwoSrc, MVT::v4i32, 1} // vpermt2d in getShuffleCost()
1042 {TTI::SK_Broadcast, MVT::v4f64, 1}, // vbroadcastpd in getShuffleCost()
1043 {TTI::SK_Broadcast, MVT::v8f32, 1}, // vbroadcastps in getShuffleCost()
1044 {TTI::SK_Broadcast, MVT::v4i64, 1}, // vpbroadcastq in getShuffleCost()
1045 {TTI::SK_Broadcast, MVT::v8i32, 1}, // vpbroadcastd in getShuffleCost()
1046 {TTI::SK_Broadcast, MVT::v16i16, 1}, // vpbroadcastw in getShuffleCost()
1047 {TTI::SK_Broadcast, MVT::v32i8, 1}, // vpbroadcastb in getShuffleCost()
1049 {TTI::SK_Reverse, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1050 {TTI::SK_Reverse, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1051 {TTI::SK_Reverse, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1052 {TTI::SK_Reverse, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1053 {TTI::SK_Reverse, MVT::v16i16, 2}, // vperm2i128 + pshufb in getShuffleCost()
1054 {TTI::SK_Reverse, MVT::v32i8, 2}, // vperm2i128 + pshufb in getShuffleCost()
1056 {TTI::SK_Select, MVT::v16i16, 1}, // vpblendvb in getShuffleCost()
1057 {TTI::SK_Select, MVT::v32i8, 1}, // vpblendvb in getShuffleCost()
1059 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1060 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1061 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1062 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1063 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1065 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1068 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vpermpd + vblendpd in getShuffleCost()
1069 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 3}, // 2*vpermps + vblendps in getShuffleCost()
1070 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vpermq + vpblendd in getShuffleCost()
1071 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 3}, // 2*vpermd + vpblendd in getShuffleCost()
1072 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1074 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1083 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1084 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1085 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1086 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1087 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1089 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1092 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1094 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 1}, // vpperm in getShuffleCost()
1095 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1097 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 1}, // vpperm in getShuffleCost()
1105 {TTI::SK_Broadcast, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1106 {TTI::SK_Broadcast, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1107 {TTI::SK_Broadcast, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1108 {TTI::SK_Broadcast, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1109 {TTI::SK_Broadcast, MVT::v16i16, 3}, // vpshuflw + vpshufd + vinsertf128 in getShuffleCost()
1110 {TTI::SK_Broadcast, MVT::v32i8, 2}, // vpshufb + vinsertf128 in getShuffleCost()
1112 {TTI::SK_Reverse, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1113 {TTI::SK_Reverse, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1114 {TTI::SK_Reverse, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1115 {TTI::SK_Reverse, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1116 {TTI::SK_Reverse, MVT::v16i16, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1118 {TTI::SK_Reverse, MVT::v32i8, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1121 {TTI::SK_Select, MVT::v4i64, 1}, // vblendpd in getShuffleCost()
1122 {TTI::SK_Select, MVT::v4f64, 1}, // vblendpd in getShuffleCost()
1123 {TTI::SK_Select, MVT::v8i32, 1}, // vblendps in getShuffleCost()
1124 {TTI::SK_Select, MVT::v8f32, 1}, // vblendps in getShuffleCost()
1125 {TTI::SK_Select, MVT::v16i16, 3}, // vpand + vpandn + vpor in getShuffleCost()
1126 {TTI::SK_Select, MVT::v32i8, 3}, // vpand + vpandn + vpor in getShuffleCost()
1128 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1129 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1130 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1131 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1132 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1134 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1137 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1138 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1139 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1140 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1141 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1143 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1152 {TTI::SK_Select, MVT::v2i64, 1}, // pblendw in getShuffleCost()
1153 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
1154 {TTI::SK_Select, MVT::v4i32, 1}, // pblendw in getShuffleCost()
1155 {TTI::SK_Select, MVT::v4f32, 1}, // blendps in getShuffleCost()
1156 {TTI::SK_Select, MVT::v8i16, 1}, // pblendw in getShuffleCost()
1157 {TTI::SK_Select, MVT::v16i8, 1} // pblendvb in getShuffleCost()
1165 {TTI::SK_Broadcast, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1166 {TTI::SK_Broadcast, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1168 {TTI::SK_Reverse, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1169 {TTI::SK_Reverse, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1171 {TTI::SK_Select, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
1172 {TTI::SK_Select, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
1174 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1175 {TTI::SK_PermuteSingleSrc, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1177 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
1178 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
1186 {TTI::SK_Broadcast, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1187 {TTI::SK_Broadcast, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1188 {TTI::SK_Broadcast, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1189 {TTI::SK_Broadcast, MVT::v8i16, 2}, // pshuflw + pshufd in getShuffleCost()
1190 {TTI::SK_Broadcast, MVT::v16i8, 3}, // unpck + pshuflw + pshufd in getShuffleCost()
1192 {TTI::SK_Reverse, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1193 {TTI::SK_Reverse, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1194 {TTI::SK_Reverse, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1195 {TTI::SK_Reverse, MVT::v8i16, 3}, // pshuflw + pshufhw + pshufd in getShuffleCost()
1196 {TTI::SK_Reverse, MVT::v16i8, 9}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1199 {TTI::SK_Select, MVT::v2i64, 1}, // movsd in getShuffleCost()
1200 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
1201 {TTI::SK_Select, MVT::v4i32, 2}, // 2*shufps in getShuffleCost()
1202 {TTI::SK_Select, MVT::v8i16, 3}, // pand + pandn + por in getShuffleCost()
1203 {TTI::SK_Select, MVT::v16i8, 3}, // pand + pandn + por in getShuffleCost()
1205 {TTI::SK_PermuteSingleSrc, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1206 {TTI::SK_PermuteSingleSrc, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1207 {TTI::SK_PermuteSingleSrc, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1208 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 5}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1210 { TTI::SK_PermuteSingleSrc, MVT::v16i8, 10 }, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1213 { TTI::SK_PermuteTwoSrc, MVT::v2f64, 1 }, // shufpd in getShuffleCost()
1214 { TTI::SK_PermuteTwoSrc, MVT::v2i64, 1 }, // shufpd in getShuffleCost()
1215 { TTI::SK_PermuteTwoSrc, MVT::v4i32, 2 }, // 2*{unpck,movsd,pshufd} in getShuffleCost()
1216 { TTI::SK_PermuteTwoSrc, MVT::v8i16, 8 }, // blend+permute in getShuffleCost()
1217 { TTI::SK_PermuteTwoSrc, MVT::v16i8, 13 }, // blend+permute in getShuffleCost()
1225 { TTI::SK_Broadcast, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1226 { TTI::SK_Reverse, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1227 { TTI::SK_Select, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
1228 { TTI::SK_PermuteSingleSrc, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1229 { TTI::SK_PermuteTwoSrc, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
1248 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
1249 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
1252 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 1 }, in getCastInstrCost()
1253 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 1 }, in getCastInstrCost()
1254 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1255 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, 1 }, in getCastInstrCost()
1256 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i1, 1 }, in getCastInstrCost()
1257 { ISD::SIGN_EXTEND, MVT::v64i8, MVT::v64i1, 1 }, in getCastInstrCost()
1260 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 2 }, in getCastInstrCost()
1261 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 2 }, in getCastInstrCost()
1262 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 2 }, in getCastInstrCost()
1263 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, 2 }, in getCastInstrCost()
1264 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i1, 2 }, in getCastInstrCost()
1265 { ISD::ZERO_EXTEND, MVT::v64i8, MVT::v64i1, 2 }, in getCastInstrCost()
1269 { ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
1270 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
1271 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
1272 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
1273 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
1274 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
1276 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
1277 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
1278 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
1279 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
1280 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
1281 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
1283 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v2f32, 1 }, in getCastInstrCost()
1284 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
1285 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
1286 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
1287 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
1288 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
1290 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v2f32, 1 }, in getCastInstrCost()
1291 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
1292 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
1293 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
1294 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
1295 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
1302 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 1 }, in getCastInstrCost()
1303 { ISD::FP_EXTEND, MVT::v8f64, MVT::v16f32, 3 }, in getCastInstrCost()
1304 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 1 }, in getCastInstrCost()
1306 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 1 }, in getCastInstrCost()
1307 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 1 }, in getCastInstrCost()
1308 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i64, 1 }, in getCastInstrCost()
1309 { ISD::TRUNCATE, MVT::v8i32, MVT::v8i64, 1 }, in getCastInstrCost()
1312 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i1, 2 }, in getCastInstrCost()
1313 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i1, 2 }, in getCastInstrCost()
1314 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
1315 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
1316 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
1317 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
1318 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
1319 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
1320 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
1321 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
1323 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
1324 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
1325 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i8, 2 }, in getCastInstrCost()
1326 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i8, 2 }, in getCastInstrCost()
1327 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
1328 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i16, 2 }, in getCastInstrCost()
1329 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
1330 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
1332 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
1333 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
1334 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i8, 2 }, in getCastInstrCost()
1335 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i8, 2 }, in getCastInstrCost()
1336 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i8, 2 }, in getCastInstrCost()
1337 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i8, 2 }, in getCastInstrCost()
1338 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i8, 2 }, in getCastInstrCost()
1339 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i16, 5 }, in getCastInstrCost()
1340 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i16, 2 }, in getCastInstrCost()
1341 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 2 }, in getCastInstrCost()
1342 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
1343 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i16, 2 }, in getCastInstrCost()
1344 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 2 }, in getCastInstrCost()
1345 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 1 }, in getCastInstrCost()
1346 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
1347 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
1348 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
1349 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
1350 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
1351 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 5 }, in getCastInstrCost()
1352 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 26 }, in getCastInstrCost()
1353 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
1354 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 5 }, in getCastInstrCost()
1355 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 5 }, in getCastInstrCost()
1357 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 1 }, in getCastInstrCost()
1359 { ISD::FP_TO_UINT, MVT::v2i32, MVT::v2f32, 1 }, in getCastInstrCost()
1360 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 1 }, in getCastInstrCost()
1361 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 1 }, in getCastInstrCost()
1362 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 1 }, in getCastInstrCost()
1363 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f64, 2 }, in getCastInstrCost()
1364 { ISD::FP_TO_UINT, MVT::v8i8, MVT::v8f64, 2 }, in getCastInstrCost()
1365 { ISD::FP_TO_UINT, MVT::v16i32, MVT::v16f32, 1 }, in getCastInstrCost()
1366 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v16f32, 2 }, in getCastInstrCost()
1367 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v16f32, 2 }, in getCastInstrCost()
1371 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
1372 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
1373 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
1374 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
1375 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i8, 3 }, in getCastInstrCost()
1376 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i8, 3 }, in getCastInstrCost()
1377 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 3 }, in getCastInstrCost()
1378 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 3 }, in getCastInstrCost()
1379 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
1380 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
1381 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 3 }, in getCastInstrCost()
1382 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 3 }, in getCastInstrCost()
1383 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
1384 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
1385 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
1386 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
1388 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i64, 2 }, in getCastInstrCost()
1389 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i64, 2 }, in getCastInstrCost()
1390 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 2 }, in getCastInstrCost()
1391 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 2 }, in getCastInstrCost()
1392 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 2 }, in getCastInstrCost()
1393 { ISD::TRUNCATE, MVT::v8i32, MVT::v8i64, 4 }, in getCastInstrCost()
1395 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 3 }, in getCastInstrCost()
1396 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 3 }, in getCastInstrCost()
1398 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 8 }, in getCastInstrCost()
1402 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 6 }, in getCastInstrCost()
1403 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 4 }, in getCastInstrCost()
1404 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 7 }, in getCastInstrCost()
1405 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 4 }, in getCastInstrCost()
1406 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i8, 6 }, in getCastInstrCost()
1407 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i8, 4 }, in getCastInstrCost()
1408 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 7 }, in getCastInstrCost()
1409 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 4 }, in getCastInstrCost()
1410 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 4 }, in getCastInstrCost()
1411 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 4 }, in getCastInstrCost()
1412 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 6 }, in getCastInstrCost()
1413 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 3 }, in getCastInstrCost()
1414 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 4 }, in getCastInstrCost()
1415 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 4 }, in getCastInstrCost()
1416 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 4 }, in getCastInstrCost()
1417 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 4 }, in getCastInstrCost()
1419 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 4 }, in getCastInstrCost()
1420 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 4 }, in getCastInstrCost()
1421 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
1422 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i64, 4 }, in getCastInstrCost()
1423 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i64, 4 }, in getCastInstrCost()
1424 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 4 }, in getCastInstrCost()
1425 { ISD::TRUNCATE, MVT::v8i32, MVT::v8i64, 9 }, in getCastInstrCost()
1427 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i1, 3 }, in getCastInstrCost()
1428 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i1, 3 }, in getCastInstrCost()
1429 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i1, 8 }, in getCastInstrCost()
1430 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i8, 3 }, in getCastInstrCost()
1431 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i8, 3 }, in getCastInstrCost()
1432 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i8, 8 }, in getCastInstrCost()
1433 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i16, 3 }, in getCastInstrCost()
1434 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i16, 3 }, in getCastInstrCost()
1435 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 5 }, in getCastInstrCost()
1436 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
1437 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
1438 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
1440 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i1, 7 }, in getCastInstrCost()
1441 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i1, 7 }, in getCastInstrCost()
1442 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i1, 6 }, in getCastInstrCost()
1443 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i8, 2 }, in getCastInstrCost()
1444 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i8, 2 }, in getCastInstrCost()
1445 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i8, 5 }, in getCastInstrCost()
1446 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i16, 2 }, in getCastInstrCost()
1447 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i16, 2 }, in getCastInstrCost()
1448 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 5 }, in getCastInstrCost()
1449 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 6 }, in getCastInstrCost()
1450 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 6 }, in getCastInstrCost()
1451 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 6 }, in getCastInstrCost()
1452 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 9 }, in getCastInstrCost()
1453 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
1454 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 6 }, in getCastInstrCost()
1460 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, 13 }, in getCastInstrCost()
1461 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, 13 }, in getCastInstrCost()
1463 { ISD::FP_TO_SINT, MVT::v4i8, MVT::v4f32, 1 }, in getCastInstrCost()
1464 { ISD::FP_TO_SINT, MVT::v8i8, MVT::v8f32, 7 }, in getCastInstrCost()
1470 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 8*4 }, in getCastInstrCost()
1471 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 4*4 }, in getCastInstrCost()
1473 { ISD::FP_EXTEND, MVT::v4f64, MVT::v4f32, 1 }, in getCastInstrCost()
1474 { ISD::FP_ROUND, MVT::v4f32, MVT::v4f64, 1 }, in getCastInstrCost()
1478 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i8, 2 }, in getCastInstrCost()
1479 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i8, 2 }, in getCastInstrCost()
1480 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 2 }, in getCastInstrCost()
1481 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 2 }, in getCastInstrCost()
1482 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
1483 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
1485 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i8, 1 }, in getCastInstrCost()
1486 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i8, 2 }, in getCastInstrCost()
1487 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i8, 1 }, in getCastInstrCost()
1488 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i8, 1 }, in getCastInstrCost()
1489 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i8, 1 }, in getCastInstrCost()
1490 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i8, 1 }, in getCastInstrCost()
1491 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 2 }, in getCastInstrCost()
1492 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 2 }, in getCastInstrCost()
1493 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
1494 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
1495 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 4 }, in getCastInstrCost()
1496 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 4 }, in getCastInstrCost()
1497 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i16, 1 }, in getCastInstrCost()
1498 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i16, 1 }, in getCastInstrCost()
1499 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
1500 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
1501 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 4 }, in getCastInstrCost()
1502 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 4 }, in getCastInstrCost()
1504 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i16, 2 }, in getCastInstrCost()
1505 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i16, 1 }, in getCastInstrCost()
1506 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i32, 1 }, in getCastInstrCost()
1507 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i32, 1 }, in getCastInstrCost()
1508 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 3 }, in getCastInstrCost()
1509 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 3 }, in getCastInstrCost()
1510 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 6 }, in getCastInstrCost()
1512 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 4 }, in getCastInstrCost()
1519 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, 8 }, in getCastInstrCost()
1520 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 16*10 }, in getCastInstrCost()
1521 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, 15 }, in getCastInstrCost()
1522 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 8*10 }, in getCastInstrCost()
1523 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 5 }, in getCastInstrCost()
1524 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, 4*10 }, in getCastInstrCost()
1525 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, 15 }, in getCastInstrCost()
1526 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 2*10 }, in getCastInstrCost()
1528 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 16*10 }, in getCastInstrCost()
1529 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, 8 }, in getCastInstrCost()
1530 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, 15 }, in getCastInstrCost()
1531 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 8*10 }, in getCastInstrCost()
1532 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, 4*10 }, in getCastInstrCost()
1533 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 8 }, in getCastInstrCost()
1534 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 6 }, in getCastInstrCost()
1535 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, 15 }, in getCastInstrCost()
1537 { ISD::FP_TO_SINT, MVT::v2i32, MVT::v2f64, 3 }, in getCastInstrCost()
1539 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 6 }, in getCastInstrCost()
1541 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i8, 1 }, in getCastInstrCost()
1542 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i8, 6 }, in getCastInstrCost()
1543 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i8, 2 }, in getCastInstrCost()
1544 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i8, 3 }, in getCastInstrCost()
1545 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i8, 4 }, in getCastInstrCost()
1546 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i8, 8 }, in getCastInstrCost()
1547 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i8, 1 }, in getCastInstrCost()
1548 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i8, 2 }, in getCastInstrCost()
1549 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 6 }, in getCastInstrCost()
1550 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 6 }, in getCastInstrCost()
1551 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 3 }, in getCastInstrCost()
1552 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 4 }, in getCastInstrCost()
1553 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 9 }, in getCastInstrCost()
1554 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 12 }, in getCastInstrCost()
1555 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i16, 1 }, in getCastInstrCost()
1556 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i16, 2 }, in getCastInstrCost()
1557 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 3 }, in getCastInstrCost()
1558 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 10 }, in getCastInstrCost()
1559 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 3 }, in getCastInstrCost()
1560 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 4 }, in getCastInstrCost()
1561 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 6 }, in getCastInstrCost()
1562 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 8 }, in getCastInstrCost()
1563 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 3 }, in getCastInstrCost()
1564 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 5 }, in getCastInstrCost()
1566 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i16, 4 }, in getCastInstrCost()
1567 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i16, 2 }, in getCastInstrCost()
1568 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, in getCastInstrCost()
1569 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i32, 3 }, in getCastInstrCost()
1570 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i32, 3 }, in getCastInstrCost()
1571 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 4 }, in getCastInstrCost()
1572 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 7 }, in getCastInstrCost()
1573 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
1574 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 10 }, in getCastInstrCost()
1577 std::pair<int, MVT> LTSrc = TLI->getTypeLegalizationCost(DL, Src); in getCastInstrCost()
1578 std::pair<int, MVT> LTDest = TLI->getTypeLegalizationCost(DL, Dst); in getCastInstrCost()
1593 MVT SimpleSrcTy = SrcTy.getSimpleVT(); in getCastInstrCost()
1594 MVT SimpleDstTy = DstTy.getSimpleVT(); in getCastInstrCost()
1647 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getCmpSelInstrCost()
1649 MVT MTy = LT.second; in getCmpSelInstrCost()
1655 { ISD::SETCC, MVT::v2i64, 8 }, in getCmpSelInstrCost()
1656 { ISD::SETCC, MVT::v4i32, 1 }, in getCmpSelInstrCost()
1657 { ISD::SETCC, MVT::v8i16, 1 }, in getCmpSelInstrCost()
1658 { ISD::SETCC, MVT::v16i8, 1 }, in getCmpSelInstrCost()
1662 { ISD::SETCC, MVT::v2f64, 1 }, in getCmpSelInstrCost()
1663 { ISD::SETCC, MVT::v4f32, 1 }, in getCmpSelInstrCost()
1664 { ISD::SETCC, MVT::v2i64, 1 }, in getCmpSelInstrCost()
1668 { ISD::SETCC, MVT::v4f64, 1 }, in getCmpSelInstrCost()
1669 { ISD::SETCC, MVT::v8f32, 1 }, in getCmpSelInstrCost()
1671 { ISD::SETCC, MVT::v4i64, 4 }, in getCmpSelInstrCost()
1672 { ISD::SETCC, MVT::v8i32, 4 }, in getCmpSelInstrCost()
1673 { ISD::SETCC, MVT::v16i16, 4 }, in getCmpSelInstrCost()
1674 { ISD::SETCC, MVT::v32i8, 4 }, in getCmpSelInstrCost()
1678 { ISD::SETCC, MVT::v4i64, 1 }, in getCmpSelInstrCost()
1679 { ISD::SETCC, MVT::v8i32, 1 }, in getCmpSelInstrCost()
1680 { ISD::SETCC, MVT::v16i16, 1 }, in getCmpSelInstrCost()
1681 { ISD::SETCC, MVT::v32i8, 1 }, in getCmpSelInstrCost()
1685 { ISD::SETCC, MVT::v8i64, 1 }, in getCmpSelInstrCost()
1686 { ISD::SETCC, MVT::v16i32, 1 }, in getCmpSelInstrCost()
1687 { ISD::SETCC, MVT::v8f64, 1 }, in getCmpSelInstrCost()
1688 { ISD::SETCC, MVT::v16f32, 1 }, in getCmpSelInstrCost()
1692 { ISD::SETCC, MVT::v32i16, 1 }, in getCmpSelInstrCost()
1693 { ISD::SETCC, MVT::v64i8, 1 }, in getCmpSelInstrCost()
1735 { ISD::CTLZ, MVT::v8i64, 1 }, in getIntrinsicInstrCost()
1736 { ISD::CTLZ, MVT::v16i32, 1 }, in getIntrinsicInstrCost()
1737 { ISD::CTLZ, MVT::v32i16, 8 }, in getIntrinsicInstrCost()
1738 { ISD::CTLZ, MVT::v64i8, 20 }, in getIntrinsicInstrCost()
1739 { ISD::CTLZ, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
1740 { ISD::CTLZ, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
1741 { ISD::CTLZ, MVT::v16i16, 4 }, in getIntrinsicInstrCost()
1742 { ISD::CTLZ, MVT::v32i8, 10 }, in getIntrinsicInstrCost()
1743 { ISD::CTLZ, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
1744 { ISD::CTLZ, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
1745 { ISD::CTLZ, MVT::v8i16, 4 }, in getIntrinsicInstrCost()
1746 { ISD::CTLZ, MVT::v16i8, 4 }, in getIntrinsicInstrCost()
1749 { ISD::BITREVERSE, MVT::v8i64, 5 }, in getIntrinsicInstrCost()
1750 { ISD::BITREVERSE, MVT::v16i32, 5 }, in getIntrinsicInstrCost()
1751 { ISD::BITREVERSE, MVT::v32i16, 5 }, in getIntrinsicInstrCost()
1752 { ISD::BITREVERSE, MVT::v64i8, 5 }, in getIntrinsicInstrCost()
1753 { ISD::CTLZ, MVT::v8i64, 23 }, in getIntrinsicInstrCost()
1754 { ISD::CTLZ, MVT::v16i32, 22 }, in getIntrinsicInstrCost()
1755 { ISD::CTLZ, MVT::v32i16, 18 }, in getIntrinsicInstrCost()
1756 { ISD::CTLZ, MVT::v64i8, 17 }, in getIntrinsicInstrCost()
1757 { ISD::CTPOP, MVT::v8i64, 7 }, in getIntrinsicInstrCost()
1758 { ISD::CTPOP, MVT::v16i32, 11 }, in getIntrinsicInstrCost()
1759 { ISD::CTPOP, MVT::v32i16, 9 }, in getIntrinsicInstrCost()
1760 { ISD::CTPOP, MVT::v64i8, 6 }, in getIntrinsicInstrCost()
1761 { ISD::CTTZ, MVT::v8i64, 10 }, in getIntrinsicInstrCost()
1762 { ISD::CTTZ, MVT::v16i32, 14 }, in getIntrinsicInstrCost()
1763 { ISD::CTTZ, MVT::v32i16, 12 }, in getIntrinsicInstrCost()
1764 { ISD::CTTZ, MVT::v64i8, 9 }, in getIntrinsicInstrCost()
1765 { ISD::SADDSAT, MVT::v32i16, 1 }, in getIntrinsicInstrCost()
1766 { ISD::SADDSAT, MVT::v64i8, 1 }, in getIntrinsicInstrCost()
1767 { ISD::SSUBSAT, MVT::v32i16, 1 }, in getIntrinsicInstrCost()
1768 { ISD::SSUBSAT, MVT::v64i8, 1 }, in getIntrinsicInstrCost()
1769 { ISD::UADDSAT, MVT::v32i16, 1 }, in getIntrinsicInstrCost()
1770 { ISD::UADDSAT, MVT::v64i8, 1 }, in getIntrinsicInstrCost()
1771 { ISD::USUBSAT, MVT::v32i16, 1 }, in getIntrinsicInstrCost()
1772 { ISD::USUBSAT, MVT::v64i8, 1 }, in getIntrinsicInstrCost()
1775 { ISD::BITREVERSE, MVT::v8i64, 36 }, in getIntrinsicInstrCost()
1776 { ISD::BITREVERSE, MVT::v16i32, 24 }, in getIntrinsicInstrCost()
1777 { ISD::CTLZ, MVT::v8i64, 29 }, in getIntrinsicInstrCost()
1778 { ISD::CTLZ, MVT::v16i32, 35 }, in getIntrinsicInstrCost()
1779 { ISD::CTPOP, MVT::v8i64, 16 }, in getIntrinsicInstrCost()
1780 { ISD::CTPOP, MVT::v16i32, 24 }, in getIntrinsicInstrCost()
1781 { ISD::CTTZ, MVT::v8i64, 20 }, in getIntrinsicInstrCost()
1782 { ISD::CTTZ, MVT::v16i32, 28 }, in getIntrinsicInstrCost()
1783 { ISD::USUBSAT, MVT::v16i32, 2 }, // pmaxud + psubd in getIntrinsicInstrCost()
1784 { ISD::USUBSAT, MVT::v2i64, 2 }, // pmaxuq + psubq in getIntrinsicInstrCost()
1785 { ISD::USUBSAT, MVT::v4i64, 2 }, // pmaxuq + psubq in getIntrinsicInstrCost()
1786 { ISD::USUBSAT, MVT::v8i64, 2 }, // pmaxuq + psubq in getIntrinsicInstrCost()
1789 { ISD::BITREVERSE, MVT::v4i64, 4 }, in getIntrinsicInstrCost()
1790 { ISD::BITREVERSE, MVT::v8i32, 4 }, in getIntrinsicInstrCost()
1791 { ISD::BITREVERSE, MVT::v16i16, 4 }, in getIntrinsicInstrCost()
1792 { ISD::BITREVERSE, MVT::v32i8, 4 }, in getIntrinsicInstrCost()
1793 { ISD::BITREVERSE, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
1794 { ISD::BITREVERSE, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
1795 { ISD::BITREVERSE, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
1796 { ISD::BITREVERSE, MVT::v16i8, 1 }, in getIntrinsicInstrCost()
1797 { ISD::BITREVERSE, MVT::i64, 3 }, in getIntrinsicInstrCost()
1798 { ISD::BITREVERSE, MVT::i32, 3 }, in getIntrinsicInstrCost()
1799 { ISD::BITREVERSE, MVT::i16, 3 }, in getIntrinsicInstrCost()
1800 { ISD::BITREVERSE, MVT::i8, 3 } in getIntrinsicInstrCost()
1803 { ISD::BITREVERSE, MVT::v4i64, 5 }, in getIntrinsicInstrCost()
1804 { ISD::BITREVERSE, MVT::v8i32, 5 }, in getIntrinsicInstrCost()
1805 { ISD::BITREVERSE, MVT::v16i16, 5 }, in getIntrinsicInstrCost()
1806 { ISD::BITREVERSE, MVT::v32i8, 5 }, in getIntrinsicInstrCost()
1807 { ISD::BSWAP, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
1808 { ISD::BSWAP, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
1809 { ISD::BSWAP, MVT::v16i16, 1 }, in getIntrinsicInstrCost()
1810 { ISD::CTLZ, MVT::v4i64, 23 }, in getIntrinsicInstrCost()
1811 { ISD::CTLZ, MVT::v8i32, 18 }, in getIntrinsicInstrCost()
1812 { ISD::CTLZ, MVT::v16i16, 14 }, in getIntrinsicInstrCost()
1813 { ISD::CTLZ, MVT::v32i8, 9 }, in getIntrinsicInstrCost()
1814 { ISD::CTPOP, MVT::v4i64, 7 }, in getIntrinsicInstrCost()
1815 { ISD::CTPOP, MVT::v8i32, 11 }, in getIntrinsicInstrCost()
1816 { ISD::CTPOP, MVT::v16i16, 9 }, in getIntrinsicInstrCost()
1817 { ISD::CTPOP, MVT::v32i8, 6 }, in getIntrinsicInstrCost()
1818 { ISD::CTTZ, MVT::v4i64, 10 }, in getIntrinsicInstrCost()
1819 { ISD::CTTZ, MVT::v8i32, 14 }, in getIntrinsicInstrCost()
1820 { ISD::CTTZ, MVT::v16i16, 12 }, in getIntrinsicInstrCost()
1821 { ISD::CTTZ, MVT::v32i8, 9 }, in getIntrinsicInstrCost()
1822 { ISD::SADDSAT, MVT::v16i16, 1 }, in getIntrinsicInstrCost()
1823 { ISD::SADDSAT, MVT::v32i8, 1 }, in getIntrinsicInstrCost()
1824 { ISD::SSUBSAT, MVT::v16i16, 1 }, in getIntrinsicInstrCost()
1825 { ISD::SSUBSAT, MVT::v32i8, 1 }, in getIntrinsicInstrCost()
1826 { ISD::UADDSAT, MVT::v16i16, 1 }, in getIntrinsicInstrCost()
1827 { ISD::UADDSAT, MVT::v32i8, 1 }, in getIntrinsicInstrCost()
1828 { ISD::USUBSAT, MVT::v16i16, 1 }, in getIntrinsicInstrCost()
1829 { ISD::USUBSAT, MVT::v32i8, 1 }, in getIntrinsicInstrCost()
1830 { ISD::USUBSAT, MVT::v8i32, 2 }, // pmaxud + psubd in getIntrinsicInstrCost()
1831 { ISD::FSQRT, MVT::f32, 7 }, // Haswell from http://www.agner.org/ in getIntrinsicInstrCost()
1832 { ISD::FSQRT, MVT::v4f32, 7 }, // Haswell from http://www.agner.org/ in getIntrinsicInstrCost()
1833 { ISD::FSQRT, MVT::v8f32, 14 }, // Haswell from http://www.agner.org/ in getIntrinsicInstrCost()
1834 { ISD::FSQRT, MVT::f64, 14 }, // Haswell from http://www.agner.org/ in getIntrinsicInstrCost()
1835 { ISD::FSQRT, MVT::v2f64, 14 }, // Haswell from http://www.agner.org/ in getIntrinsicInstrCost()
1836 { ISD::FSQRT, MVT::v4f64, 28 }, // Haswell from http://www.agner.org/ in getIntrinsicInstrCost()
1839 { ISD::BITREVERSE, MVT::v4i64, 12 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1840 { ISD::BITREVERSE, MVT::v8i32, 12 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1841 { ISD::BITREVERSE, MVT::v16i16, 12 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1842 { ISD::BITREVERSE, MVT::v32i8, 12 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1843 { ISD::BSWAP, MVT::v4i64, 4 }, in getIntrinsicInstrCost()
1844 { ISD::BSWAP, MVT::v8i32, 4 }, in getIntrinsicInstrCost()
1845 { ISD::BSWAP, MVT::v16i16, 4 }, in getIntrinsicInstrCost()
1846 { ISD::CTLZ, MVT::v4i64, 48 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1847 { ISD::CTLZ, MVT::v8i32, 38 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1848 { ISD::CTLZ, MVT::v16i16, 30 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1849 { ISD::CTLZ, MVT::v32i8, 20 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1850 { ISD::CTPOP, MVT::v4i64, 16 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1851 { ISD::CTPOP, MVT::v8i32, 24 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1852 { ISD::CTPOP, MVT::v16i16, 20 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1853 { ISD::CTPOP, MVT::v32i8, 14 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1854 { ISD::CTTZ, MVT::v4i64, 22 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1855 { ISD::CTTZ, MVT::v8i32, 30 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1856 { ISD::CTTZ, MVT::v16i16, 26 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1857 { ISD::CTTZ, MVT::v32i8, 20 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1858 { ISD::SADDSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1859 { ISD::SADDSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1860 { ISD::SSUBSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1861 { ISD::SSUBSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1862 { ISD::UADDSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1863 { ISD::UADDSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1864 { ISD::USUBSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1865 { ISD::USUBSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1866 { ISD::USUBSAT, MVT::v8i32, 6 }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
1867 { ISD::FSQRT, MVT::f32, 14 }, // SNB from http://www.agner.org/ in getIntrinsicInstrCost()
1868 { ISD::FSQRT, MVT::v4f32, 14 }, // SNB from http://www.agner.org/ in getIntrinsicInstrCost()
1869 { ISD::FSQRT, MVT::v8f32, 28 }, // SNB from http://www.agner.org/ in getIntrinsicInstrCost()
1870 { ISD::FSQRT, MVT::f64, 21 }, // SNB from http://www.agner.org/ in getIntrinsicInstrCost()
1871 { ISD::FSQRT, MVT::v2f64, 21 }, // SNB from http://www.agner.org/ in getIntrinsicInstrCost()
1872 { ISD::FSQRT, MVT::v4f64, 43 }, // SNB from http://www.agner.org/ in getIntrinsicInstrCost()
1875 { ISD::FSQRT, MVT::f32, 19 }, // sqrtss in getIntrinsicInstrCost()
1876 { ISD::FSQRT, MVT::v4f32, 37 }, // sqrtps in getIntrinsicInstrCost()
1877 { ISD::FSQRT, MVT::f64, 34 }, // sqrtsd in getIntrinsicInstrCost()
1878 { ISD::FSQRT, MVT::v2f64, 67 }, // sqrtpd in getIntrinsicInstrCost()
1881 { ISD::FSQRT, MVT::f32, 20 }, // sqrtss in getIntrinsicInstrCost()
1882 { ISD::FSQRT, MVT::v4f32, 40 }, // sqrtps in getIntrinsicInstrCost()
1883 { ISD::FSQRT, MVT::f64, 35 }, // sqrtsd in getIntrinsicInstrCost()
1884 { ISD::FSQRT, MVT::v2f64, 70 }, // sqrtpd in getIntrinsicInstrCost()
1887 { ISD::USUBSAT, MVT::v4i32, 2 }, // pmaxud + psubd in getIntrinsicInstrCost()
1888 { ISD::FSQRT, MVT::f32, 18 }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
1889 { ISD::FSQRT, MVT::v4f32, 18 }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
1892 { ISD::BITREVERSE, MVT::v2i64, 5 }, in getIntrinsicInstrCost()
1893 { ISD::BITREVERSE, MVT::v4i32, 5 }, in getIntrinsicInstrCost()
1894 { ISD::BITREVERSE, MVT::v8i16, 5 }, in getIntrinsicInstrCost()
1895 { ISD::BITREVERSE, MVT::v16i8, 5 }, in getIntrinsicInstrCost()
1896 { ISD::BSWAP, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
1897 { ISD::BSWAP, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
1898 { ISD::BSWAP, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
1899 { ISD::CTLZ, MVT::v2i64, 23 }, in getIntrinsicInstrCost()
1900 { ISD::CTLZ, MVT::v4i32, 18 }, in getIntrinsicInstrCost()
1901 { ISD::CTLZ, MVT::v8i16, 14 }, in getIntrinsicInstrCost()
1902 { ISD::CTLZ, MVT::v16i8, 9 }, in getIntrinsicInstrCost()
1903 { ISD::CTPOP, MVT::v2i64, 7 }, in getIntrinsicInstrCost()
1904 { ISD::CTPOP, MVT::v4i32, 11 }, in getIntrinsicInstrCost()
1905 { ISD::CTPOP, MVT::v8i16, 9 }, in getIntrinsicInstrCost()
1906 { ISD::CTPOP, MVT::v16i8, 6 }, in getIntrinsicInstrCost()
1907 { ISD::CTTZ, MVT::v2i64, 10 }, in getIntrinsicInstrCost()
1908 { ISD::CTTZ, MVT::v4i32, 14 }, in getIntrinsicInstrCost()
1909 { ISD::CTTZ, MVT::v8i16, 12 }, in getIntrinsicInstrCost()
1910 { ISD::CTTZ, MVT::v16i8, 9 } in getIntrinsicInstrCost()
1913 { ISD::BITREVERSE, MVT::v2i64, 29 }, in getIntrinsicInstrCost()
1914 { ISD::BITREVERSE, MVT::v4i32, 27 }, in getIntrinsicInstrCost()
1915 { ISD::BITREVERSE, MVT::v8i16, 27 }, in getIntrinsicInstrCost()
1916 { ISD::BITREVERSE, MVT::v16i8, 20 }, in getIntrinsicInstrCost()
1917 { ISD::BSWAP, MVT::v2i64, 7 }, in getIntrinsicInstrCost()
1918 { ISD::BSWAP, MVT::v4i32, 7 }, in getIntrinsicInstrCost()
1919 { ISD::BSWAP, MVT::v8i16, 7 }, in getIntrinsicInstrCost()
1920 { ISD::CTLZ, MVT::v2i64, 25 }, in getIntrinsicInstrCost()
1921 { ISD::CTLZ, MVT::v4i32, 26 }, in getIntrinsicInstrCost()
1922 { ISD::CTLZ, MVT::v8i16, 20 }, in getIntrinsicInstrCost()
1923 { ISD::CTLZ, MVT::v16i8, 17 }, in getIntrinsicInstrCost()
1924 { ISD::CTPOP, MVT::v2i64, 12 }, in getIntrinsicInstrCost()
1925 { ISD::CTPOP, MVT::v4i32, 15 }, in getIntrinsicInstrCost()
1926 { ISD::CTPOP, MVT::v8i16, 13 }, in getIntrinsicInstrCost()
1927 { ISD::CTPOP, MVT::v16i8, 10 }, in getIntrinsicInstrCost()
1928 { ISD::CTTZ, MVT::v2i64, 14 }, in getIntrinsicInstrCost()
1929 { ISD::CTTZ, MVT::v4i32, 18 }, in getIntrinsicInstrCost()
1930 { ISD::CTTZ, MVT::v8i16, 16 }, in getIntrinsicInstrCost()
1931 { ISD::CTTZ, MVT::v16i8, 13 }, in getIntrinsicInstrCost()
1932 { ISD::SADDSAT, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
1933 { ISD::SADDSAT, MVT::v16i8, 1 }, in getIntrinsicInstrCost()
1934 { ISD::SSUBSAT, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
1935 { ISD::SSUBSAT, MVT::v16i8, 1 }, in getIntrinsicInstrCost()
1936 { ISD::UADDSAT, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
1937 { ISD::UADDSAT, MVT::v16i8, 1 }, in getIntrinsicInstrCost()
1938 { ISD::USUBSAT, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
1939 { ISD::USUBSAT, MVT::v16i8, 1 }, in getIntrinsicInstrCost()
1940 { ISD::FSQRT, MVT::f64, 32 }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
1941 { ISD::FSQRT, MVT::v2f64, 32 }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
1944 { ISD::FSQRT, MVT::f32, 28 }, // Pentium III from http://www.agner.org/ in getIntrinsicInstrCost()
1945 { ISD::FSQRT, MVT::v4f32, 56 }, // Pentium III from http://www.agner.org/ in getIntrinsicInstrCost()
1948 { ISD::BITREVERSE, MVT::i64, 14 } in getIntrinsicInstrCost()
1951 { ISD::BITREVERSE, MVT::i32, 14 }, in getIntrinsicInstrCost()
1952 { ISD::BITREVERSE, MVT::i16, 14 }, in getIntrinsicInstrCost()
1953 { ISD::BITREVERSE, MVT::i8, 11 } in getIntrinsicInstrCost()
1994 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, RetTy); in getIntrinsicInstrCost()
1995 MVT MTy = LT.second; in getIntrinsicInstrCost()
2061 { ISD::ROTL, MVT::v8i64, 1 }, in getIntrinsicInstrCost()
2062 { ISD::ROTL, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
2063 { ISD::ROTL, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
2064 { ISD::ROTL, MVT::v16i32, 1 }, in getIntrinsicInstrCost()
2065 { ISD::ROTL, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
2066 { ISD::ROTL, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
2067 { ISD::ROTR, MVT::v8i64, 1 }, in getIntrinsicInstrCost()
2068 { ISD::ROTR, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
2069 { ISD::ROTR, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
2070 { ISD::ROTR, MVT::v16i32, 1 }, in getIntrinsicInstrCost()
2071 { ISD::ROTR, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
2072 { ISD::ROTR, MVT::v4i32, 1 } in getIntrinsicInstrCost()
2076 { ISD::ROTL, MVT::v4i64, 4 }, in getIntrinsicInstrCost()
2077 { ISD::ROTL, MVT::v8i32, 4 }, in getIntrinsicInstrCost()
2078 { ISD::ROTL, MVT::v16i16, 4 }, in getIntrinsicInstrCost()
2079 { ISD::ROTL, MVT::v32i8, 4 }, in getIntrinsicInstrCost()
2080 { ISD::ROTL, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
2081 { ISD::ROTL, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
2082 { ISD::ROTL, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
2083 { ISD::ROTL, MVT::v16i8, 1 }, in getIntrinsicInstrCost()
2084 { ISD::ROTR, MVT::v4i64, 6 }, in getIntrinsicInstrCost()
2085 { ISD::ROTR, MVT::v8i32, 6 }, in getIntrinsicInstrCost()
2086 { ISD::ROTR, MVT::v16i16, 6 }, in getIntrinsicInstrCost()
2087 { ISD::ROTR, MVT::v32i8, 6 }, in getIntrinsicInstrCost()
2088 { ISD::ROTR, MVT::v2i64, 2 }, in getIntrinsicInstrCost()
2089 { ISD::ROTR, MVT::v4i32, 2 }, in getIntrinsicInstrCost()
2090 { ISD::ROTR, MVT::v8i16, 2 }, in getIntrinsicInstrCost()
2091 { ISD::ROTR, MVT::v16i8, 2 } in getIntrinsicInstrCost()
2094 { ISD::ROTL, MVT::i64, 1 }, in getIntrinsicInstrCost()
2095 { ISD::ROTR, MVT::i64, 1 }, in getIntrinsicInstrCost()
2096 { ISD::FSHL, MVT::i64, 4 } in getIntrinsicInstrCost()
2099 { ISD::ROTL, MVT::i32, 1 }, in getIntrinsicInstrCost()
2100 { ISD::ROTL, MVT::i16, 1 }, in getIntrinsicInstrCost()
2101 { ISD::ROTL, MVT::i8, 1 }, in getIntrinsicInstrCost()
2102 { ISD::ROTR, MVT::i32, 1 }, in getIntrinsicInstrCost()
2103 { ISD::ROTR, MVT::i16, 1 }, in getIntrinsicInstrCost()
2104 { ISD::ROTR, MVT::i8, 1 }, in getIntrinsicInstrCost()
2105 { ISD::FSHL, MVT::i32, 4 }, in getIntrinsicInstrCost()
2106 { ISD::FSHL, MVT::i16, 4 }, in getIntrinsicInstrCost()
2107 { ISD::FSHL, MVT::i8, 4 } in getIntrinsicInstrCost()
2129 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, RetTy); in getIntrinsicInstrCost()
2130 MVT MTy = LT.second; in getIntrinsicInstrCost()
2159 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Val); in getVectorInstrCost()
2211 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Src); in getMemoryOpCost()
2256 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, SrcVTy); in getMaskedMemoryOpCost()
2306 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getArithmeticReductionCost()
2308 MVT MTy = LT.second; in getArithmeticReductionCost()
2317 { ISD::FADD, MVT::v2f64, 2 }, in getArithmeticReductionCost()
2318 { ISD::FADD, MVT::v4f32, 4 }, in getArithmeticReductionCost()
2319 { ISD::ADD, MVT::v2i64, 2 }, // The data reported by the IACA tool is "1.6". in getArithmeticReductionCost()
2320 { ISD::ADD, MVT::v4i32, 3 }, // The data reported by the IACA tool is "3.5". in getArithmeticReductionCost()
2321 { ISD::ADD, MVT::v8i16, 5 }, in getArithmeticReductionCost()
2325 { ISD::FADD, MVT::v4f32, 4 }, in getArithmeticReductionCost()
2326 { ISD::FADD, MVT::v4f64, 5 }, in getArithmeticReductionCost()
2327 { ISD::FADD, MVT::v8f32, 7 }, in getArithmeticReductionCost()
2328 { ISD::ADD, MVT::v2i64, 1 }, // The data reported by the IACA tool is "1.5". in getArithmeticReductionCost()
2329 { ISD::ADD, MVT::v4i32, 3 }, // The data reported by the IACA tool is "3.5". in getArithmeticReductionCost()
2330 { ISD::ADD, MVT::v4i64, 5 }, // The data reported by the IACA tool is "4.8". in getArithmeticReductionCost()
2331 { ISD::ADD, MVT::v8i16, 5 }, in getArithmeticReductionCost()
2332 { ISD::ADD, MVT::v8i32, 5 }, in getArithmeticReductionCost()
2336 { ISD::FADD, MVT::v2f64, 2 }, in getArithmeticReductionCost()
2337 { ISD::FADD, MVT::v4f32, 4 }, in getArithmeticReductionCost()
2338 { ISD::ADD, MVT::v2i64, 2 }, // The data reported by the IACA tool is "1.6". in getArithmeticReductionCost()
2339 { ISD::ADD, MVT::v4i32, 3 }, // The data reported by the IACA tool is "3.3". in getArithmeticReductionCost()
2340 { ISD::ADD, MVT::v8i16, 4 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
2344 { ISD::FADD, MVT::v4f32, 3 }, in getArithmeticReductionCost()
2345 { ISD::FADD, MVT::v4f64, 3 }, in getArithmeticReductionCost()
2346 { ISD::FADD, MVT::v8f32, 4 }, in getArithmeticReductionCost()
2347 { ISD::ADD, MVT::v2i64, 1 }, // The data reported by the IACA tool is "1.5". in getArithmeticReductionCost()
2348 { ISD::ADD, MVT::v4i32, 3 }, // The data reported by the IACA tool is "2.8". in getArithmeticReductionCost()
2349 { ISD::ADD, MVT::v4i64, 3 }, in getArithmeticReductionCost()
2350 { ISD::ADD, MVT::v8i16, 4 }, in getArithmeticReductionCost()
2351 { ISD::ADD, MVT::v8i32, 5 }, in getArithmeticReductionCost()
2377 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getMinMaxReductionCost()
2379 MVT MTy = LT.second; in getMinMaxReductionCost()
2394 {ISD::FMINNUM, MVT::v2f64, 3}, in getMinMaxReductionCost()
2395 {ISD::FMINNUM, MVT::v4f32, 2}, in getMinMaxReductionCost()
2396 {ISD::SMIN, MVT::v2i64, 7}, // The data reported by the IACA is "6.8" in getMinMaxReductionCost()
2397 {ISD::UMIN, MVT::v2i64, 8}, // The data reported by the IACA is "8.6" in getMinMaxReductionCost()
2398 {ISD::SMIN, MVT::v4i32, 1}, // The data reported by the IACA is "1.5" in getMinMaxReductionCost()
2399 {ISD::UMIN, MVT::v4i32, 2}, // The data reported by the IACA is "1.8" in getMinMaxReductionCost()
2400 {ISD::SMIN, MVT::v8i16, 2}, in getMinMaxReductionCost()
2401 {ISD::UMIN, MVT::v8i16, 2}, in getMinMaxReductionCost()
2405 {ISD::FMINNUM, MVT::v4f32, 1}, in getMinMaxReductionCost()
2406 {ISD::FMINNUM, MVT::v4f64, 1}, in getMinMaxReductionCost()
2407 {ISD::FMINNUM, MVT::v8f32, 2}, in getMinMaxReductionCost()
2408 {ISD::SMIN, MVT::v2i64, 3}, in getMinMaxReductionCost()
2409 {ISD::UMIN, MVT::v2i64, 3}, in getMinMaxReductionCost()
2410 {ISD::SMIN, MVT::v4i32, 1}, in getMinMaxReductionCost()
2411 {ISD::UMIN, MVT::v4i32, 1}, in getMinMaxReductionCost()
2412 {ISD::SMIN, MVT::v8i16, 1}, in getMinMaxReductionCost()
2413 {ISD::UMIN, MVT::v8i16, 1}, in getMinMaxReductionCost()
2414 {ISD::SMIN, MVT::v8i32, 3}, in getMinMaxReductionCost()
2415 {ISD::UMIN, MVT::v8i32, 3}, in getMinMaxReductionCost()
2419 {ISD::SMIN, MVT::v4i64, 2}, in getMinMaxReductionCost()
2420 {ISD::UMIN, MVT::v4i64, 2}, in getMinMaxReductionCost()
2421 {ISD::SMIN, MVT::v8i32, 1}, in getMinMaxReductionCost()
2422 {ISD::UMIN, MVT::v8i32, 1}, in getMinMaxReductionCost()
2423 {ISD::SMIN, MVT::v16i16, 1}, in getMinMaxReductionCost()
2424 {ISD::UMIN, MVT::v16i16, 1}, in getMinMaxReductionCost()
2425 {ISD::SMIN, MVT::v32i8, 2}, in getMinMaxReductionCost()
2426 {ISD::UMIN, MVT::v32i8, 2}, in getMinMaxReductionCost()
2430 {ISD::FMINNUM, MVT::v8f64, 1}, in getMinMaxReductionCost()
2431 {ISD::FMINNUM, MVT::v16f32, 2}, in getMinMaxReductionCost()
2432 {ISD::SMIN, MVT::v8i64, 2}, in getMinMaxReductionCost()
2433 {ISD::UMIN, MVT::v8i64, 2}, in getMinMaxReductionCost()
2434 {ISD::SMIN, MVT::v16i32, 1}, in getMinMaxReductionCost()
2435 {ISD::UMIN, MVT::v16i32, 1}, in getMinMaxReductionCost()
2439 {ISD::FMINNUM, MVT::v2f64, 3}, in getMinMaxReductionCost()
2440 {ISD::FMINNUM, MVT::v4f32, 3}, in getMinMaxReductionCost()
2441 {ISD::SMIN, MVT::v2i64, 7}, // The data reported by the IACA is "6.8" in getMinMaxReductionCost()
2442 {ISD::UMIN, MVT::v2i64, 9}, // The data reported by the IACA is "8.6" in getMinMaxReductionCost()
2443 {ISD::SMIN, MVT::v4i32, 1}, // The data reported by the IACA is "1.5" in getMinMaxReductionCost()
2444 {ISD::UMIN, MVT::v4i32, 2}, // The data reported by the IACA is "1.8" in getMinMaxReductionCost()
2445 {ISD::SMIN, MVT::v8i16, 1}, // The data reported by the IACA is "1.5" in getMinMaxReductionCost()
2446 {ISD::UMIN, MVT::v8i16, 2}, // The data reported by the IACA is "1.8" in getMinMaxReductionCost()
2450 {ISD::FMINNUM, MVT::v4f32, 1}, in getMinMaxReductionCost()
2451 {ISD::FMINNUM, MVT::v4f64, 1}, in getMinMaxReductionCost()
2452 {ISD::FMINNUM, MVT::v8f32, 1}, in getMinMaxReductionCost()
2453 {ISD::SMIN, MVT::v2i64, 3}, in getMinMaxReductionCost()
2454 {ISD::UMIN, MVT::v2i64, 3}, in getMinMaxReductionCost()
2455 {ISD::SMIN, MVT::v4i32, 1}, in getMinMaxReductionCost()
2456 {ISD::UMIN, MVT::v4i32, 1}, in getMinMaxReductionCost()
2457 {ISD::SMIN, MVT::v8i16, 1}, in getMinMaxReductionCost()
2458 {ISD::UMIN, MVT::v8i16, 1}, in getMinMaxReductionCost()
2459 {ISD::SMIN, MVT::v8i32, 2}, in getMinMaxReductionCost()
2460 {ISD::UMIN, MVT::v8i32, 2}, in getMinMaxReductionCost()
2464 {ISD::SMIN, MVT::v4i64, 1}, in getMinMaxReductionCost()
2465 {ISD::UMIN, MVT::v4i64, 1}, in getMinMaxReductionCost()
2466 {ISD::SMIN, MVT::v8i32, 1}, in getMinMaxReductionCost()
2467 {ISD::UMIN, MVT::v8i32, 1}, in getMinMaxReductionCost()
2468 {ISD::SMIN, MVT::v16i16, 1}, in getMinMaxReductionCost()
2469 {ISD::UMIN, MVT::v16i16, 1}, in getMinMaxReductionCost()
2470 {ISD::SMIN, MVT::v32i8, 1}, in getMinMaxReductionCost()
2471 {ISD::UMIN, MVT::v32i8, 1}, in getMinMaxReductionCost()
2475 {ISD::FMINNUM, MVT::v8f64, 1}, in getMinMaxReductionCost()
2476 {ISD::FMINNUM, MVT::v16f32, 2}, in getMinMaxReductionCost()
2477 {ISD::SMIN, MVT::v8i64, 1}, in getMinMaxReductionCost()
2478 {ISD::UMIN, MVT::v8i64, 1}, in getMinMaxReductionCost()
2479 {ISD::SMIN, MVT::v16i32, 1}, in getMinMaxReductionCost()
2480 {ISD::UMIN, MVT::v16i32, 1}, in getMinMaxReductionCost()
2760 std::pair<int, MVT> IdxsLT = TLI->getTypeLegalizationCost(DL, IndexVTy); in getGSVectorCost()
2761 std::pair<int, MVT> SrcLT = TLI->getTypeLegalizationCost(DL, SrcVTy); in getGSVectorCost()
3022 MVT LegalVT = getTLI()->getTypeLegalizationCost(DL, VecTy).second; in getInterleavedMemoryOpCostAVX2()
3060 { 2, MVT::v4i64, 6 }, //(load 8i64 and) deinterleave into 2 x 4i64 in getInterleavedMemoryOpCostAVX2()
3061 { 2, MVT::v4f64, 6 }, //(load 8f64 and) deinterleave into 2 x 4f64 in getInterleavedMemoryOpCostAVX2()
3063 { 3, MVT::v2i8, 10 }, //(load 6i8 and) deinterleave into 3 x 2i8 in getInterleavedMemoryOpCostAVX2()
3064 { 3, MVT::v4i8, 4 }, //(load 12i8 and) deinterleave into 3 x 4i8 in getInterleavedMemoryOpCostAVX2()
3065 { 3, MVT::v8i8, 9 }, //(load 24i8 and) deinterleave into 3 x 8i8 in getInterleavedMemoryOpCostAVX2()
3066 { 3, MVT::v16i8, 11}, //(load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCostAVX2()
3067 { 3, MVT::v32i8, 13}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX2()
3068 { 3, MVT::v8f32, 17 }, //(load 24f32 and)deinterleave into 3 x 8f32 in getInterleavedMemoryOpCostAVX2()
3070 { 4, MVT::v2i8, 12 }, //(load 8i8 and) deinterleave into 4 x 2i8 in getInterleavedMemoryOpCostAVX2()
3071 { 4, MVT::v4i8, 4 }, //(load 16i8 and) deinterleave into 4 x 4i8 in getInterleavedMemoryOpCostAVX2()
3072 { 4, MVT::v8i8, 20 }, //(load 32i8 and) deinterleave into 4 x 8i8 in getInterleavedMemoryOpCostAVX2()
3073 { 4, MVT::v16i8, 39 }, //(load 64i8 and) deinterleave into 4 x 16i8 in getInterleavedMemoryOpCostAVX2()
3074 { 4, MVT::v32i8, 80 }, //(load 128i8 and) deinterleave into 4 x 32i8 in getInterleavedMemoryOpCostAVX2()
3076 { 8, MVT::v8f32, 40 } //(load 64f32 and)deinterleave into 8 x 8f32 in getInterleavedMemoryOpCostAVX2()
3080 { 2, MVT::v4i64, 6 }, //interleave into 2 x 4i64 into 8i64 (and store) in getInterleavedMemoryOpCostAVX2()
3081 { 2, MVT::v4f64, 6 }, //interleave into 2 x 4f64 into 8f64 (and store) in getInterleavedMemoryOpCostAVX2()
3083 { 3, MVT::v2i8, 7 }, //interleave 3 x 2i8 into 6i8 (and store) in getInterleavedMemoryOpCostAVX2()
3084 { 3, MVT::v4i8, 8 }, //interleave 3 x 4i8 into 12i8 (and store) in getInterleavedMemoryOpCostAVX2()
3085 { 3, MVT::v8i8, 11 }, //interleave 3 x 8i8 into 24i8 (and store) in getInterleavedMemoryOpCostAVX2()
3086 { 3, MVT::v16i8, 11 }, //interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCostAVX2()
3087 { 3, MVT::v32i8, 13 }, //interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX2()
3089 { 4, MVT::v2i8, 12 }, //interleave 4 x 2i8 into 8i8 (and store) in getInterleavedMemoryOpCostAVX2()
3090 { 4, MVT::v4i8, 9 }, //interleave 4 x 4i8 into 16i8 (and store) in getInterleavedMemoryOpCostAVX2()
3091 { 4, MVT::v8i8, 10 }, //interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCostAVX2()
3092 { 4, MVT::v16i8, 10 }, //interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCostAVX2()
3093 { 4, MVT::v32i8, 12 } //interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCostAVX2()
3135 MVT LegalVT = getTLI()->getTypeLegalizationCost(DL, VecTy).second; in getInterleavedMemoryOpCostAVX512()
3147 MVT VT = MVT::getVectorVT(MVT::getVT(VecTy->getScalarType()), VF); in getInterleavedMemoryOpCostAVX512()
3157 {3, MVT::v16i8, 12}, //(load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCostAVX512()
3158 {3, MVT::v32i8, 14}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
3159 {3, MVT::v64i8, 22}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
3211 {3, MVT::v16i8, 12}, // interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCostAVX512()
3212 {3, MVT::v32i8, 14}, // interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
3213 {3, MVT::v64i8, 26}, // interleave 3 x 64i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
3215 {4, MVT::v8i8, 10}, // interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCostAVX512()
3216 {4, MVT::v16i8, 11}, // interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCostAVX512()
3217 {4, MVT::v32i8, 14}, // interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCostAVX512()
3218 {4, MVT::v64i8, 24} // interleave 4 x 32i8 into 256i8 (and store) in getInterleavedMemoryOpCostAVX512()