Lines Matching refs:MVT

205   std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty);  in getArithmeticInstrCost()
211 LT.second.getScalarType() == MVT::i32) { in getArithmeticInstrCost()
236 MVT::getVectorVT(MVT::i16, 2 * LT.second.getVectorNumElements()); in getArithmeticInstrCost()
295 { ISD::FDIV, MVT::f32, 18 }, // divss in getArithmeticInstrCost()
296 { ISD::FDIV, MVT::v4f32, 35 }, // divps in getArithmeticInstrCost()
297 { ISD::FDIV, MVT::f64, 33 }, // divsd in getArithmeticInstrCost()
298 { ISD::FDIV, MVT::v2f64, 65 }, // divpd in getArithmeticInstrCost()
307 { ISD::MUL, MVT::v4i32, 11 }, // pmulld in getArithmeticInstrCost()
308 { ISD::MUL, MVT::v8i16, 2 }, // pmullw in getArithmeticInstrCost()
309 { ISD::FMUL, MVT::f64, 2 }, // mulsd in getArithmeticInstrCost()
310 { ISD::FMUL, MVT::v2f64, 4 }, // mulpd in getArithmeticInstrCost()
311 { ISD::FMUL, MVT::v4f32, 2 }, // mulps in getArithmeticInstrCost()
312 { ISD::FDIV, MVT::f32, 17 }, // divss in getArithmeticInstrCost()
313 { ISD::FDIV, MVT::v4f32, 39 }, // divps in getArithmeticInstrCost()
314 { ISD::FDIV, MVT::f64, 32 }, // divsd in getArithmeticInstrCost()
315 { ISD::FDIV, MVT::v2f64, 69 }, // divpd in getArithmeticInstrCost()
316 { ISD::FADD, MVT::v2f64, 2 }, // addpd in getArithmeticInstrCost()
317 { ISD::FSUB, MVT::v2f64, 2 }, // subpd in getArithmeticInstrCost()
323 { ISD::MUL, MVT::v2i64, 17 }, in getArithmeticInstrCost()
325 { ISD::ADD, MVT::v2i64, 4 }, in getArithmeticInstrCost()
326 { ISD::SUB, MVT::v2i64, 4 }, in getArithmeticInstrCost()
330 if (Args.size() == 2 && ISD == ISD::MUL && LT.second == MVT::v4i32) { in getArithmeticInstrCost()
358 { ISD::SHL, MVT::v64i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
359 { ISD::SRL, MVT::v64i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
360 { ISD::SRA, MVT::v64i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
371 { ISD::SRA, MVT::v2i64, 1 }, in getArithmeticInstrCost()
372 { ISD::SRA, MVT::v4i64, 1 }, in getArithmeticInstrCost()
373 { ISD::SRA, MVT::v8i64, 1 }, in getArithmeticInstrCost()
375 { ISD::SHL, MVT::v64i8, 4 }, // psllw + pand. in getArithmeticInstrCost()
376 { ISD::SRL, MVT::v64i8, 4 }, // psrlw + pand. in getArithmeticInstrCost()
377 { ISD::SRA, MVT::v64i8, 8 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
379 { ISD::SDIV, MVT::v16i32, 6 }, // pmuludq sequence in getArithmeticInstrCost()
380 { ISD::SREM, MVT::v16i32, 8 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
381 { ISD::UDIV, MVT::v16i32, 5 }, // pmuludq sequence in getArithmeticInstrCost()
382 { ISD::UREM, MVT::v16i32, 7 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
393 { ISD::SHL, MVT::v32i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
394 { ISD::SRL, MVT::v32i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
395 { ISD::SRA, MVT::v32i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
397 { ISD::SRA, MVT::v4i64, 4 }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
399 { ISD::SDIV, MVT::v8i32, 6 }, // pmuludq sequence in getArithmeticInstrCost()
400 { ISD::SREM, MVT::v8i32, 8 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
401 { ISD::UDIV, MVT::v8i32, 5 }, // pmuludq sequence in getArithmeticInstrCost()
402 { ISD::UREM, MVT::v8i32, 7 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
413 { ISD::SHL, MVT::v16i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
414 { ISD::SRL, MVT::v16i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
415 { ISD::SRA, MVT::v16i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
417 { ISD::SHL, MVT::v32i8, 4+2 }, // 2*(psllw + pand) + split. in getArithmeticInstrCost()
418 { ISD::SRL, MVT::v32i8, 4+2 }, // 2*(psrlw + pand) + split. in getArithmeticInstrCost()
419 { ISD::SRA, MVT::v32i8, 8+2 }, // 2*(psrlw, pand, pxor, psubb) + split. in getArithmeticInstrCost()
421 { ISD::SDIV, MVT::v8i32, 12+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
422 { ISD::SREM, MVT::v8i32, 16+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
423 { ISD::SDIV, MVT::v4i32, 6 }, // pmuludq sequence in getArithmeticInstrCost()
424 { ISD::SREM, MVT::v4i32, 8 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
425 { ISD::UDIV, MVT::v8i32, 10+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
426 { ISD::UREM, MVT::v8i32, 14+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
427 { ISD::UDIV, MVT::v4i32, 5 }, // pmuludq sequence in getArithmeticInstrCost()
428 { ISD::UREM, MVT::v4i32, 7 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
440 { ISD::SDIV, MVT::v64i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
441 { ISD::SREM, MVT::v64i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
442 { ISD::UDIV, MVT::v64i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
443 { ISD::UREM, MVT::v64i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
444 { ISD::SDIV, MVT::v32i16, 6 }, // vpmulhw sequence in getArithmeticInstrCost()
445 { ISD::SREM, MVT::v32i16, 8 }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
446 { ISD::UDIV, MVT::v32i16, 6 }, // vpmulhuw sequence in getArithmeticInstrCost()
447 { ISD::UREM, MVT::v32i16, 8 }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
459 { ISD::SDIV, MVT::v16i32, 15 }, // vpmuldq sequence in getArithmeticInstrCost()
460 { ISD::SREM, MVT::v16i32, 17 }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
461 { ISD::UDIV, MVT::v16i32, 15 }, // vpmuludq sequence in getArithmeticInstrCost()
462 { ISD::UREM, MVT::v16i32, 17 }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
463 { ISD::SDIV, MVT::v64i8, 28 }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
464 { ISD::SREM, MVT::v64i8, 32 }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
465 { ISD::UDIV, MVT::v64i8, 28 }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
466 { ISD::UREM, MVT::v64i8, 32 }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
467 { ISD::SDIV, MVT::v32i16, 12 }, // 2*vpmulhw sequence in getArithmeticInstrCost()
468 { ISD::SREM, MVT::v32i16, 16 }, // 2*vpmulhw+mul+sub sequence in getArithmeticInstrCost()
469 { ISD::UDIV, MVT::v32i16, 12 }, // 2*vpmulhuw sequence in getArithmeticInstrCost()
470 { ISD::UREM, MVT::v32i16, 16 }, // 2*vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
482 { ISD::SDIV, MVT::v32i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
483 { ISD::SREM, MVT::v32i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
484 { ISD::UDIV, MVT::v32i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
485 { ISD::UREM, MVT::v32i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
486 { ISD::SDIV, MVT::v16i16, 6 }, // vpmulhw sequence in getArithmeticInstrCost()
487 { ISD::SREM, MVT::v16i16, 8 }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
488 { ISD::UDIV, MVT::v16i16, 6 }, // vpmulhuw sequence in getArithmeticInstrCost()
489 { ISD::UREM, MVT::v16i16, 8 }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
490 { ISD::SDIV, MVT::v8i32, 15 }, // vpmuldq sequence in getArithmeticInstrCost()
491 { ISD::SREM, MVT::v8i32, 19 }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
492 { ISD::UDIV, MVT::v8i32, 15 }, // vpmuludq sequence in getArithmeticInstrCost()
493 { ISD::UREM, MVT::v8i32, 19 }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
504 { ISD::SDIV, MVT::v32i8, 28+2 }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
505 { ISD::SREM, MVT::v32i8, 32+2 }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
506 { ISD::SDIV, MVT::v16i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
507 { ISD::SREM, MVT::v16i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
508 { ISD::UDIV, MVT::v32i8, 28+2 }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
509 { ISD::UREM, MVT::v32i8, 32+2 }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
510 { ISD::UDIV, MVT::v16i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
511 { ISD::UREM, MVT::v16i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
512 { ISD::SDIV, MVT::v16i16, 12+2 }, // 2*pmulhw sequence + split. in getArithmeticInstrCost()
513 { ISD::SREM, MVT::v16i16, 16+2 }, // 2*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
514 { ISD::SDIV, MVT::v8i16, 6 }, // pmulhw sequence in getArithmeticInstrCost()
515 { ISD::SREM, MVT::v8i16, 8 }, // pmulhw+mul+sub sequence in getArithmeticInstrCost()
516 { ISD::UDIV, MVT::v16i16, 12+2 }, // 2*pmulhuw sequence + split. in getArithmeticInstrCost()
517 { ISD::UREM, MVT::v16i16, 16+2 }, // 2*pmulhuw+mul+sub sequence + split. in getArithmeticInstrCost()
518 { ISD::UDIV, MVT::v8i16, 6 }, // pmulhuw sequence in getArithmeticInstrCost()
519 { ISD::UREM, MVT::v8i16, 8 }, // pmulhuw+mul+sub sequence in getArithmeticInstrCost()
520 { ISD::SDIV, MVT::v8i32, 38+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
521 { ISD::SREM, MVT::v8i32, 48+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
522 { ISD::SDIV, MVT::v4i32, 19 }, // pmuludq sequence in getArithmeticInstrCost()
523 { ISD::SREM, MVT::v4i32, 24 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
524 { ISD::UDIV, MVT::v8i32, 30+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
525 { ISD::UREM, MVT::v8i32, 40+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
526 { ISD::UDIV, MVT::v4i32, 15 }, // pmuludq sequence in getArithmeticInstrCost()
527 { ISD::UREM, MVT::v4i32, 20 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
534 if (ISD == ISD::SDIV && LT.second == MVT::v8i32 && ST->hasAVX()) in getArithmeticInstrCost()
536 if (ISD == ISD::SREM && LT.second == MVT::v8i32 && ST->hasAVX()) in getArithmeticInstrCost()
538 if (ISD == ISD::SDIV && LT.second == MVT::v4i32 && ST->hasSSE41()) in getArithmeticInstrCost()
540 if (ISD == ISD::SREM && LT.second == MVT::v4i32 && ST->hasSSE41()) in getArithmeticInstrCost()
548 { ISD::SHL, MVT::v16i8, 4 }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
549 { ISD::SRL, MVT::v16i8, 4 }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
550 { ISD::SRA, MVT::v16i8, 4 }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
551 { ISD::SHL, MVT::v32i8, 4 }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
552 { ISD::SRL, MVT::v32i8, 4 }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
553 { ISD::SRA, MVT::v32i8, 6 }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
554 { ISD::SHL, MVT::v64i8, 6 }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
555 { ISD::SRL, MVT::v64i8, 7 }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
556 { ISD::SRA, MVT::v64i8, 15 }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
558 { ISD::SHL, MVT::v8i16, 1 }, // vpsllvw in getArithmeticInstrCost()
559 { ISD::SRL, MVT::v8i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
560 { ISD::SRA, MVT::v8i16, 1 }, // vpsravw in getArithmeticInstrCost()
561 { ISD::SHL, MVT::v16i16, 1 }, // vpsllvw in getArithmeticInstrCost()
562 { ISD::SRL, MVT::v16i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
563 { ISD::SRA, MVT::v16i16, 1 }, // vpsravw in getArithmeticInstrCost()
564 { ISD::SHL, MVT::v32i16, 1 }, // vpsllvw in getArithmeticInstrCost()
565 { ISD::SRL, MVT::v32i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
566 { ISD::SRA, MVT::v32i16, 1 }, // vpsravw in getArithmeticInstrCost()
575 { ISD::SHL, MVT::v16i16, 1 }, // psllw. in getArithmeticInstrCost()
576 { ISD::SRL, MVT::v16i16, 1 }, // psrlw. in getArithmeticInstrCost()
577 { ISD::SRA, MVT::v16i16, 1 }, // psraw. in getArithmeticInstrCost()
578 { ISD::SHL, MVT::v32i16, 2 }, // 2*psllw. in getArithmeticInstrCost()
579 { ISD::SRL, MVT::v32i16, 2 }, // 2*psrlw. in getArithmeticInstrCost()
580 { ISD::SRA, MVT::v32i16, 2 }, // 2*psraw. in getArithmeticInstrCost()
582 { ISD::SHL, MVT::v8i32, 1 }, // pslld in getArithmeticInstrCost()
583 { ISD::SRL, MVT::v8i32, 1 }, // psrld in getArithmeticInstrCost()
584 { ISD::SRA, MVT::v8i32, 1 }, // psrad in getArithmeticInstrCost()
585 { ISD::SHL, MVT::v4i64, 1 }, // psllq in getArithmeticInstrCost()
586 { ISD::SRL, MVT::v4i64, 1 }, // psrlq in getArithmeticInstrCost()
599 { ISD::SHL, MVT::v8i16, 1 }, // psllw. in getArithmeticInstrCost()
600 { ISD::SHL, MVT::v4i32, 1 }, // pslld in getArithmeticInstrCost()
601 { ISD::SHL, MVT::v2i64, 1 }, // psllq. in getArithmeticInstrCost()
603 { ISD::SRL, MVT::v8i16, 1 }, // psrlw. in getArithmeticInstrCost()
604 { ISD::SRL, MVT::v4i32, 1 }, // psrld. in getArithmeticInstrCost()
605 { ISD::SRL, MVT::v2i64, 1 }, // psrlq. in getArithmeticInstrCost()
607 { ISD::SRA, MVT::v8i16, 1 }, // psraw. in getArithmeticInstrCost()
608 { ISD::SRA, MVT::v4i32, 1 }, // psrad. in getArithmeticInstrCost()
620 { ISD::MUL, MVT::v2i64, 2 }, // pmullq in getArithmeticInstrCost()
621 { ISD::MUL, MVT::v4i64, 2 }, // pmullq in getArithmeticInstrCost()
622 { ISD::MUL, MVT::v8i64, 2 } // pmullq in getArithmeticInstrCost()
631 { ISD::SHL, MVT::v64i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
632 { ISD::SRL, MVT::v64i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
633 { ISD::SRA, MVT::v64i8, 24 }, // vpblendvb sequence. in getArithmeticInstrCost()
642 { ISD::SHL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
643 { ISD::SRL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
644 { ISD::SRA, MVT::v4i32, 1 }, in getArithmeticInstrCost()
645 { ISD::SHL, MVT::v8i32, 1 }, in getArithmeticInstrCost()
646 { ISD::SRL, MVT::v8i32, 1 }, in getArithmeticInstrCost()
647 { ISD::SRA, MVT::v8i32, 1 }, in getArithmeticInstrCost()
648 { ISD::SHL, MVT::v16i32, 1 }, in getArithmeticInstrCost()
649 { ISD::SRL, MVT::v16i32, 1 }, in getArithmeticInstrCost()
650 { ISD::SRA, MVT::v16i32, 1 }, in getArithmeticInstrCost()
652 { ISD::SHL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
653 { ISD::SRL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
654 { ISD::SHL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
655 { ISD::SRL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
656 { ISD::SHL, MVT::v8i64, 1 }, in getArithmeticInstrCost()
657 { ISD::SRL, MVT::v8i64, 1 }, in getArithmeticInstrCost()
659 { ISD::SRA, MVT::v2i64, 1 }, in getArithmeticInstrCost()
660 { ISD::SRA, MVT::v4i64, 1 }, in getArithmeticInstrCost()
661 { ISD::SRA, MVT::v8i64, 1 }, in getArithmeticInstrCost()
663 { ISD::MUL, MVT::v16i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
664 { ISD::MUL, MVT::v8i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
665 { ISD::MUL, MVT::v4i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
666 { ISD::MUL, MVT::v8i64, 6 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
667 { ISD::MUL, MVT::i64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
669 { ISD::FNEG, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
670 { ISD::FADD, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
671 { ISD::FSUB, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
672 { ISD::FMUL, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
673 { ISD::FDIV, MVT::f64, 4 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
674 { ISD::FDIV, MVT::v2f64, 4 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
675 { ISD::FDIV, MVT::v4f64, 8 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
676 { ISD::FDIV, MVT::v8f64, 16 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
678 { ISD::FNEG, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
679 { ISD::FADD, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
680 { ISD::FSUB, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
681 { ISD::FMUL, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
682 { ISD::FDIV, MVT::f32, 3 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
683 { ISD::FDIV, MVT::v4f32, 3 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
684 { ISD::FDIV, MVT::v8f32, 5 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
685 { ISD::FDIV, MVT::v16f32, 10 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
695 { ISD::SHL, MVT::v4i32, 2 }, // vpsllvd (Haswell from agner.org) in getArithmeticInstrCost()
696 { ISD::SRL, MVT::v4i32, 2 }, // vpsrlvd (Haswell from agner.org) in getArithmeticInstrCost()
697 { ISD::SRA, MVT::v4i32, 2 }, // vpsravd (Haswell from agner.org) in getArithmeticInstrCost()
698 { ISD::SHL, MVT::v8i32, 2 }, // vpsllvd (Haswell from agner.org) in getArithmeticInstrCost()
699 { ISD::SRL, MVT::v8i32, 2 }, // vpsrlvd (Haswell from agner.org) in getArithmeticInstrCost()
700 { ISD::SRA, MVT::v8i32, 2 }, // vpsravd (Haswell from agner.org) in getArithmeticInstrCost()
701 { ISD::SHL, MVT::v2i64, 1 }, // vpsllvq (Haswell from agner.org) in getArithmeticInstrCost()
702 { ISD::SRL, MVT::v2i64, 1 }, // vpsrlvq (Haswell from agner.org) in getArithmeticInstrCost()
703 { ISD::SHL, MVT::v4i64, 1 }, // vpsllvq (Haswell from agner.org) in getArithmeticInstrCost()
704 { ISD::SRL, MVT::v4i64, 1 }, // vpsrlvq (Haswell from agner.org) in getArithmeticInstrCost()
708 if (ISD == ISD::SHL && LT.second == MVT::v32i16 && in getArithmeticInstrCost()
720 if (ST->hasAVX2() && !(ST->hasXOP() && LT.second == MVT::v4i32)) { in getArithmeticInstrCost()
721 if (ISD == ISD::SHL && LT.second == MVT::v16i16 && in getArithmeticInstrCost()
737 { ISD::SHL, MVT::v16i8, 1 }, in getArithmeticInstrCost()
738 { ISD::SRL, MVT::v16i8, 2 }, in getArithmeticInstrCost()
739 { ISD::SRA, MVT::v16i8, 2 }, in getArithmeticInstrCost()
740 { ISD::SHL, MVT::v8i16, 1 }, in getArithmeticInstrCost()
741 { ISD::SRL, MVT::v8i16, 2 }, in getArithmeticInstrCost()
742 { ISD::SRA, MVT::v8i16, 2 }, in getArithmeticInstrCost()
743 { ISD::SHL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
744 { ISD::SRL, MVT::v4i32, 2 }, in getArithmeticInstrCost()
745 { ISD::SRA, MVT::v4i32, 2 }, in getArithmeticInstrCost()
746 { ISD::SHL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
747 { ISD::SRL, MVT::v2i64, 2 }, in getArithmeticInstrCost()
748 { ISD::SRA, MVT::v2i64, 2 }, in getArithmeticInstrCost()
750 { ISD::SHL, MVT::v32i8, 2+2 }, in getArithmeticInstrCost()
751 { ISD::SRL, MVT::v32i8, 4+2 }, in getArithmeticInstrCost()
752 { ISD::SRA, MVT::v32i8, 4+2 }, in getArithmeticInstrCost()
753 { ISD::SHL, MVT::v16i16, 2+2 }, in getArithmeticInstrCost()
754 { ISD::SRL, MVT::v16i16, 4+2 }, in getArithmeticInstrCost()
755 { ISD::SRA, MVT::v16i16, 4+2 }, in getArithmeticInstrCost()
756 { ISD::SHL, MVT::v8i32, 2+2 }, in getArithmeticInstrCost()
757 { ISD::SRL, MVT::v8i32, 4+2 }, in getArithmeticInstrCost()
758 { ISD::SRA, MVT::v8i32, 4+2 }, in getArithmeticInstrCost()
759 { ISD::SHL, MVT::v4i64, 2+2 }, in getArithmeticInstrCost()
760 { ISD::SRL, MVT::v4i64, 4+2 }, in getArithmeticInstrCost()
761 { ISD::SRA, MVT::v4i64, 4+2 }, in getArithmeticInstrCost()
780 { ISD::SHL, MVT::v16i16, 2+2 }, // 2*psllw + split. in getArithmeticInstrCost()
781 { ISD::SHL, MVT::v8i32, 2+2 }, // 2*pslld + split. in getArithmeticInstrCost()
782 { ISD::SHL, MVT::v4i64, 2+2 }, // 2*psllq + split. in getArithmeticInstrCost()
784 { ISD::SRL, MVT::v16i16, 2+2 }, // 2*psrlw + split. in getArithmeticInstrCost()
785 { ISD::SRL, MVT::v8i32, 2+2 }, // 2*psrld + split. in getArithmeticInstrCost()
786 { ISD::SRL, MVT::v4i64, 2+2 }, // 2*psrlq + split. in getArithmeticInstrCost()
788 { ISD::SRA, MVT::v16i16, 2+2 }, // 2*psraw + split. in getArithmeticInstrCost()
789 { ISD::SRA, MVT::v8i32, 2+2 }, // 2*psrad + split. in getArithmeticInstrCost()
790 { ISD::SRA, MVT::v2i64, 4 }, // 2*psrad + shuffle. in getArithmeticInstrCost()
791 { ISD::SRA, MVT::v4i64, 8+2 }, // 2*(2*psrad + shuffle) + split. in getArithmeticInstrCost()
799 if (ISD == ISD::SRA && LT.second == MVT::v4i64 && ST->hasAVX2()) in getArithmeticInstrCost()
809 MVT VT = LT.second; in getArithmeticInstrCost()
812 if (((VT == MVT::v8i16 || VT == MVT::v4i32) && ST->hasSSE2()) || in getArithmeticInstrCost()
813 ((VT == MVT::v16i16 || VT == MVT::v8i32) && ST->hasAVX())) in getArithmeticInstrCost()
818 { ISD::SHL, MVT::v16i8, 6 }, // vpblendvb sequence. in getArithmeticInstrCost()
819 { ISD::SHL, MVT::v32i8, 6 }, // vpblendvb sequence. in getArithmeticInstrCost()
820 { ISD::SHL, MVT::v64i8, 12 }, // 2*vpblendvb sequence. in getArithmeticInstrCost()
821 { ISD::SHL, MVT::v8i16, 5 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
822 { ISD::SHL, MVT::v16i16, 7 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
823 { ISD::SHL, MVT::v32i16, 14 }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
825 { ISD::SRL, MVT::v16i8, 6 }, // vpblendvb sequence. in getArithmeticInstrCost()
826 { ISD::SRL, MVT::v32i8, 6 }, // vpblendvb sequence. in getArithmeticInstrCost()
827 { ISD::SRL, MVT::v64i8, 12 }, // 2*vpblendvb sequence. in getArithmeticInstrCost()
828 { ISD::SRL, MVT::v8i16, 5 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
829 { ISD::SRL, MVT::v16i16, 7 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
830 { ISD::SRL, MVT::v32i16, 14 }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
832 { ISD::SRA, MVT::v16i8, 17 }, // vpblendvb sequence. in getArithmeticInstrCost()
833 { ISD::SRA, MVT::v32i8, 17 }, // vpblendvb sequence. in getArithmeticInstrCost()
834 { ISD::SRA, MVT::v64i8, 34 }, // 2*vpblendvb sequence. in getArithmeticInstrCost()
835 { ISD::SRA, MVT::v8i16, 5 }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
836 { ISD::SRA, MVT::v16i16, 7 }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
837 { ISD::SRA, MVT::v32i16, 14 }, // 2*extend/vpsravd/pack sequence. in getArithmeticInstrCost()
838 { ISD::SRA, MVT::v2i64, 2 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
839 { ISD::SRA, MVT::v4i64, 2 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
841 { ISD::SUB, MVT::v32i8, 1 }, // psubb in getArithmeticInstrCost()
842 { ISD::ADD, MVT::v32i8, 1 }, // paddb in getArithmeticInstrCost()
843 { ISD::SUB, MVT::v16i16, 1 }, // psubw in getArithmeticInstrCost()
844 { ISD::ADD, MVT::v16i16, 1 }, // paddw in getArithmeticInstrCost()
845 { ISD::SUB, MVT::v8i32, 1 }, // psubd in getArithmeticInstrCost()
846 { ISD::ADD, MVT::v8i32, 1 }, // paddd in getArithmeticInstrCost()
847 { ISD::SUB, MVT::v4i64, 1 }, // psubq in getArithmeticInstrCost()
848 { ISD::ADD, MVT::v4i64, 1 }, // paddq in getArithmeticInstrCost()
850 { ISD::MUL, MVT::v16i16, 1 }, // pmullw in getArithmeticInstrCost()
851 { ISD::MUL, MVT::v8i32, 2 }, // pmulld (Haswell from agner.org) in getArithmeticInstrCost()
852 { ISD::MUL, MVT::v4i64, 6 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
854 { ISD::FNEG, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
855 { ISD::FNEG, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
856 { ISD::FADD, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
857 { ISD::FADD, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
858 { ISD::FSUB, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
859 { ISD::FSUB, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
860 { ISD::FMUL, MVT::f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
861 { ISD::FMUL, MVT::v2f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
862 { ISD::FMUL, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
863 { ISD::FMUL, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
865 { ISD::FDIV, MVT::f32, 7 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
866 { ISD::FDIV, MVT::v4f32, 7 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
867 { ISD::FDIV, MVT::v8f32, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
868 { ISD::FDIV, MVT::f64, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
869 { ISD::FDIV, MVT::v2f64, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
870 { ISD::FDIV, MVT::v4f64, 28 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
882 { ISD::MUL, MVT::v16i16, 4 }, in getArithmeticInstrCost()
883 { ISD::MUL, MVT::v8i32, 5 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
884 { ISD::MUL, MVT::v4i64, 12 }, in getArithmeticInstrCost()
886 { ISD::SUB, MVT::v32i8, 4 }, in getArithmeticInstrCost()
887 { ISD::ADD, MVT::v32i8, 4 }, in getArithmeticInstrCost()
888 { ISD::SUB, MVT::v16i16, 4 }, in getArithmeticInstrCost()
889 { ISD::ADD, MVT::v16i16, 4 }, in getArithmeticInstrCost()
890 { ISD::SUB, MVT::v8i32, 4 }, in getArithmeticInstrCost()
891 { ISD::ADD, MVT::v8i32, 4 }, in getArithmeticInstrCost()
892 { ISD::SUB, MVT::v4i64, 4 }, in getArithmeticInstrCost()
893 { ISD::ADD, MVT::v4i64, 4 }, in getArithmeticInstrCost()
895 { ISD::SHL, MVT::v32i8, 22 }, // pblendvb sequence + split. in getArithmeticInstrCost()
896 { ISD::SHL, MVT::v8i16, 6 }, // pblendvb sequence. in getArithmeticInstrCost()
897 { ISD::SHL, MVT::v16i16, 13 }, // pblendvb sequence + split. in getArithmeticInstrCost()
898 { ISD::SHL, MVT::v4i32, 3 }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
899 { ISD::SHL, MVT::v8i32, 9 }, // pslld/paddd/cvttps2dq/pmulld + split in getArithmeticInstrCost()
900 { ISD::SHL, MVT::v2i64, 2 }, // Shift each lane + blend. in getArithmeticInstrCost()
901 { ISD::SHL, MVT::v4i64, 6 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
903 { ISD::SRL, MVT::v32i8, 23 }, // pblendvb sequence + split. in getArithmeticInstrCost()
904 { ISD::SRL, MVT::v16i16, 28 }, // pblendvb sequence + split. in getArithmeticInstrCost()
905 { ISD::SRL, MVT::v4i32, 6 }, // Shift each lane + blend. in getArithmeticInstrCost()
906 { ISD::SRL, MVT::v8i32, 14 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
907 { ISD::SRL, MVT::v2i64, 2 }, // Shift each lane + blend. in getArithmeticInstrCost()
908 { ISD::SRL, MVT::v4i64, 6 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
910 { ISD::SRA, MVT::v32i8, 44 }, // pblendvb sequence + split. in getArithmeticInstrCost()
911 { ISD::SRA, MVT::v16i16, 28 }, // pblendvb sequence + split. in getArithmeticInstrCost()
912 { ISD::SRA, MVT::v4i32, 6 }, // Shift each lane + blend. in getArithmeticInstrCost()
913 { ISD::SRA, MVT::v8i32, 14 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
914 { ISD::SRA, MVT::v2i64, 5 }, // Shift each lane + blend. in getArithmeticInstrCost()
915 { ISD::SRA, MVT::v4i64, 12 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
917 { ISD::FNEG, MVT::v4f64, 2 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
918 { ISD::FNEG, MVT::v8f32, 2 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
920 { ISD::FMUL, MVT::f64, 2 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
921 { ISD::FMUL, MVT::v2f64, 2 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
922 { ISD::FMUL, MVT::v4f64, 4 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
924 { ISD::FDIV, MVT::f32, 14 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
925 { ISD::FDIV, MVT::v4f32, 14 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
926 { ISD::FDIV, MVT::v8f32, 28 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
927 { ISD::FDIV, MVT::f64, 22 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
928 { ISD::FDIV, MVT::v2f64, 22 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
929 { ISD::FDIV, MVT::v4f64, 44 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
937 { ISD::FADD, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
938 { ISD::FADD, MVT::f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
939 { ISD::FADD, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
940 { ISD::FADD, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
942 { ISD::FSUB, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
943 { ISD::FSUB, MVT::f32 , 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
944 { ISD::FSUB, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
945 { ISD::FSUB, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
947 { ISD::FMUL, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
948 { ISD::FMUL, MVT::f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
949 { ISD::FMUL, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
950 { ISD::FMUL, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
952 { ISD::FDIV, MVT::f32, 14 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
953 { ISD::FDIV, MVT::v4f32, 14 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
954 { ISD::FDIV, MVT::f64, 22 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
955 { ISD::FDIV, MVT::v2f64, 22 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
957 { ISD::MUL, MVT::v2i64, 6 } // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
965 { ISD::SHL, MVT::v16i8, 10 }, // pblendvb sequence. in getArithmeticInstrCost()
966 { ISD::SHL, MVT::v8i16, 11 }, // pblendvb sequence. in getArithmeticInstrCost()
967 { ISD::SHL, MVT::v4i32, 4 }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
969 { ISD::SRL, MVT::v16i8, 11 }, // pblendvb sequence. in getArithmeticInstrCost()
970 { ISD::SRL, MVT::v8i16, 13 }, // pblendvb sequence. in getArithmeticInstrCost()
971 { ISD::SRL, MVT::v4i32, 16 }, // Shift each lane + blend. in getArithmeticInstrCost()
973 { ISD::SRA, MVT::v16i8, 21 }, // pblendvb sequence. in getArithmeticInstrCost()
974 { ISD::SRA, MVT::v8i16, 13 }, // pblendvb sequence. in getArithmeticInstrCost()
976 { ISD::MUL, MVT::v4i32, 2 } // pmulld (Nehalem from agner.org) in getArithmeticInstrCost()
986 { ISD::SHL, MVT::v16i8, 13 }, // cmpgtb sequence. in getArithmeticInstrCost()
987 { ISD::SHL, MVT::v8i16, 25 }, // cmpgtw sequence. in getArithmeticInstrCost()
988 { ISD::SHL, MVT::v4i32, 16 }, // pslld/paddd/cvttps2dq/pmuludq. in getArithmeticInstrCost()
989 { ISD::SHL, MVT::v2i64, 4 }, // splat+shuffle sequence. in getArithmeticInstrCost()
991 { ISD::SRL, MVT::v16i8, 14 }, // cmpgtb sequence. in getArithmeticInstrCost()
992 { ISD::SRL, MVT::v8i16, 16 }, // cmpgtw sequence. in getArithmeticInstrCost()
993 { ISD::SRL, MVT::v4i32, 12 }, // Shift each lane + blend. in getArithmeticInstrCost()
994 { ISD::SRL, MVT::v2i64, 4 }, // splat+shuffle sequence. in getArithmeticInstrCost()
996 { ISD::SRA, MVT::v16i8, 27 }, // unpacked cmpgtb sequence. in getArithmeticInstrCost()
997 { ISD::SRA, MVT::v8i16, 16 }, // cmpgtw sequence. in getArithmeticInstrCost()
998 { ISD::SRA, MVT::v4i32, 12 }, // Shift each lane + blend. in getArithmeticInstrCost()
999 { ISD::SRA, MVT::v2i64, 8 }, // srl/xor/sub splat+shuffle sequence. in getArithmeticInstrCost()
1001 { ISD::MUL, MVT::v8i16, 1 }, // pmullw in getArithmeticInstrCost()
1002 { ISD::MUL, MVT::v4i32, 6 }, // 3*pmuludq/4*shuffle in getArithmeticInstrCost()
1003 { ISD::MUL, MVT::v2i64, 8 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
1005 { ISD::FDIV, MVT::f32, 23 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1006 { ISD::FDIV, MVT::v4f32, 39 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1007 { ISD::FDIV, MVT::f64, 38 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1008 { ISD::FDIV, MVT::v2f64, 69 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1010 { ISD::FNEG, MVT::f32, 1 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1011 { ISD::FNEG, MVT::f64, 1 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1012 { ISD::FNEG, MVT::v4f32, 1 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1013 { ISD::FNEG, MVT::v2f64, 1 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1015 { ISD::FADD, MVT::f32, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1016 { ISD::FADD, MVT::f64, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1018 { ISD::FSUB, MVT::f32, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1019 { ISD::FSUB, MVT::f64, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1027 { ISD::FDIV, MVT::f32, 17 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1028 { ISD::FDIV, MVT::v4f32, 34 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1030 { ISD::FNEG, MVT::f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1031 { ISD::FNEG, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1033 { ISD::FADD, MVT::f32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1034 { ISD::FADD, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1036 { ISD::FSUB, MVT::f32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1037 { ISD::FSUB, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1045 { ISD::ADD, MVT::i64, 1 }, // Core (Merom) from http://www.agner.org/ in getArithmeticInstrCost()
1046 { ISD::SUB, MVT::i64, 1 }, // Core (Merom) from http://www.agner.org/ in getArithmeticInstrCost()
1047 { ISD::MUL, MVT::i64, 2 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1055 { ISD::ADD, MVT::i8, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1056 { ISD::ADD, MVT::i16, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1057 { ISD::ADD, MVT::i32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1059 { ISD::SUB, MVT::i8, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1060 { ISD::SUB, MVT::i16, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1061 { ISD::SUB, MVT::i32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1092 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, BaseTp); in getShuffleCost()
1111 std::pair<InstructionCost, MVT> SubLT = in getShuffleCost()
1158 std::pair<InstructionCost, MVT> SubLT = in getShuffleCost()
1176 {TTI::SK_Broadcast, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1177 {TTI::SK_Broadcast, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1178 {TTI::SK_Broadcast, MVT::v8i8, 2}, // punpck/pshuflw in getShuffleCost()
1179 {TTI::SK_Broadcast, MVT::v4i8, 2}, // punpck/pshuflw in getShuffleCost()
1180 {TTI::SK_Broadcast, MVT::v2i8, 1}, // punpck in getShuffleCost()
1182 {TTI::SK_Reverse, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1183 {TTI::SK_Reverse, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1184 {TTI::SK_Reverse, MVT::v4i8, 3}, // punpck/pshuflw/packus in getShuffleCost()
1185 {TTI::SK_Reverse, MVT::v2i8, 1}, // punpck in getShuffleCost()
1187 {TTI::SK_PermuteTwoSrc, MVT::v4i16, 2}, // punpck/pshuflw in getShuffleCost()
1188 {TTI::SK_PermuteTwoSrc, MVT::v2i16, 2}, // punpck/pshuflw in getShuffleCost()
1189 {TTI::SK_PermuteTwoSrc, MVT::v8i8, 7}, // punpck/pshuflw in getShuffleCost()
1190 {TTI::SK_PermuteTwoSrc, MVT::v4i8, 4}, // punpck/pshuflw in getShuffleCost()
1191 {TTI::SK_PermuteTwoSrc, MVT::v2i8, 2}, // punpck in getShuffleCost()
1193 {TTI::SK_PermuteSingleSrc, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1194 {TTI::SK_PermuteSingleSrc, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1195 {TTI::SK_PermuteSingleSrc, MVT::v8i8, 5}, // punpck/pshuflw in getShuffleCost()
1196 {TTI::SK_PermuteSingleSrc, MVT::v4i8, 3}, // punpck/pshuflw in getShuffleCost()
1197 {TTI::SK_PermuteSingleSrc, MVT::v2i8, 1}, // punpck in getShuffleCost()
1210 MVT LegalVT = LT.second; in getShuffleCost()
1301 {TTI::SK_Reverse, MVT::v64i8, 1}, // vpermb in getShuffleCost()
1302 {TTI::SK_Reverse, MVT::v32i8, 1}, // vpermb in getShuffleCost()
1304 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 1}, // vpermb in getShuffleCost()
1305 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 1}, // vpermb in getShuffleCost()
1307 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 2}, // vpermt2b in getShuffleCost()
1308 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 2}, // vpermt2b in getShuffleCost()
1309 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 2} // vpermt2b in getShuffleCost()
1318 {TTI::SK_Broadcast, MVT::v32i16, 1}, // vpbroadcastw in getShuffleCost()
1319 {TTI::SK_Broadcast, MVT::v32f16, 1}, // vpbroadcastw in getShuffleCost()
1320 {TTI::SK_Broadcast, MVT::v64i8, 1}, // vpbroadcastb in getShuffleCost()
1322 {TTI::SK_Reverse, MVT::v32i16, 2}, // vpermw in getShuffleCost()
1323 {TTI::SK_Reverse, MVT::v32f16, 2}, // vpermw in getShuffleCost()
1324 {TTI::SK_Reverse, MVT::v16i16, 2}, // vpermw in getShuffleCost()
1325 {TTI::SK_Reverse, MVT::v64i8, 2}, // pshufb + vshufi64x2 in getShuffleCost()
1327 {TTI::SK_PermuteSingleSrc, MVT::v32i16, 2}, // vpermw in getShuffleCost()
1328 {TTI::SK_PermuteSingleSrc, MVT::v32f16, 2}, // vpermw in getShuffleCost()
1329 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 2}, // vpermw in getShuffleCost()
1330 {TTI::SK_PermuteSingleSrc, MVT::v16f16, 2}, // vpermw in getShuffleCost()
1331 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 8}, // extend to v32i16 in getShuffleCost()
1333 {TTI::SK_PermuteTwoSrc, MVT::v32i16, 2}, // vpermt2w in getShuffleCost()
1334 {TTI::SK_PermuteTwoSrc, MVT::v32f16, 2}, // vpermt2w in getShuffleCost()
1335 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 2}, // vpermt2w in getShuffleCost()
1336 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 2}, // vpermt2w in getShuffleCost()
1337 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 19}, // 6 * v32i8 + 1 in getShuffleCost()
1339 {TTI::SK_Select, MVT::v32i16, 1}, // vblendmw in getShuffleCost()
1340 {TTI::SK_Select, MVT::v64i8, 1}, // vblendmb in getShuffleCost()
1349 {TTI::SK_Broadcast, MVT::v8f64, 1}, // vbroadcastpd in getShuffleCost()
1350 {TTI::SK_Broadcast, MVT::v16f32, 1}, // vbroadcastps in getShuffleCost()
1351 {TTI::SK_Broadcast, MVT::v8i64, 1}, // vpbroadcastq in getShuffleCost()
1352 {TTI::SK_Broadcast, MVT::v16i32, 1}, // vpbroadcastd in getShuffleCost()
1353 {TTI::SK_Broadcast, MVT::v32i16, 1}, // vpbroadcastw in getShuffleCost()
1354 {TTI::SK_Broadcast, MVT::v32f16, 1}, // vpbroadcastw in getShuffleCost()
1355 {TTI::SK_Broadcast, MVT::v64i8, 1}, // vpbroadcastb in getShuffleCost()
1357 {TTI::SK_Reverse, MVT::v8f64, 1}, // vpermpd in getShuffleCost()
1358 {TTI::SK_Reverse, MVT::v16f32, 1}, // vpermps in getShuffleCost()
1359 {TTI::SK_Reverse, MVT::v8i64, 1}, // vpermq in getShuffleCost()
1360 {TTI::SK_Reverse, MVT::v16i32, 1}, // vpermd in getShuffleCost()
1361 {TTI::SK_Reverse, MVT::v32i16, 7}, // per mca in getShuffleCost()
1362 {TTI::SK_Reverse, MVT::v32f16, 7}, // per mca in getShuffleCost()
1363 {TTI::SK_Reverse, MVT::v64i8, 7}, // per mca in getShuffleCost()
1365 {TTI::SK_PermuteSingleSrc, MVT::v8f64, 1}, // vpermpd in getShuffleCost()
1366 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1367 {TTI::SK_PermuteSingleSrc, MVT::v2f64, 1}, // vpermpd in getShuffleCost()
1368 {TTI::SK_PermuteSingleSrc, MVT::v16f32, 1}, // vpermps in getShuffleCost()
1369 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1370 {TTI::SK_PermuteSingleSrc, MVT::v4f32, 1}, // vpermps in getShuffleCost()
1371 {TTI::SK_PermuteSingleSrc, MVT::v8i64, 1}, // vpermq in getShuffleCost()
1372 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1373 {TTI::SK_PermuteSingleSrc, MVT::v2i64, 1}, // vpermq in getShuffleCost()
1374 {TTI::SK_PermuteSingleSrc, MVT::v16i32, 1}, // vpermd in getShuffleCost()
1375 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1376 {TTI::SK_PermuteSingleSrc, MVT::v4i32, 1}, // vpermd in getShuffleCost()
1377 {TTI::SK_PermuteSingleSrc, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1379 {TTI::SK_PermuteTwoSrc, MVT::v8f64, 1}, // vpermt2pd in getShuffleCost()
1380 {TTI::SK_PermuteTwoSrc, MVT::v16f32, 1}, // vpermt2ps in getShuffleCost()
1381 {TTI::SK_PermuteTwoSrc, MVT::v8i64, 1}, // vpermt2q in getShuffleCost()
1382 {TTI::SK_PermuteTwoSrc, MVT::v16i32, 1}, // vpermt2d in getShuffleCost()
1383 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 1}, // vpermt2pd in getShuffleCost()
1384 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 1}, // vpermt2ps in getShuffleCost()
1385 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 1}, // vpermt2q in getShuffleCost()
1386 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 1}, // vpermt2d in getShuffleCost()
1387 {TTI::SK_PermuteTwoSrc, MVT::v2f64, 1}, // vpermt2pd in getShuffleCost()
1388 {TTI::SK_PermuteTwoSrc, MVT::v4f32, 1}, // vpermt2ps in getShuffleCost()
1389 {TTI::SK_PermuteTwoSrc, MVT::v2i64, 1}, // vpermt2q in getShuffleCost()
1390 {TTI::SK_PermuteTwoSrc, MVT::v4i32, 1}, // vpermt2d in getShuffleCost()
1394 {TTI::SK_PermuteSingleSrc, MVT::v32i16, 14}, in getShuffleCost()
1395 {TTI::SK_PermuteSingleSrc, MVT::v32f16, 14}, in getShuffleCost()
1396 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 14}, in getShuffleCost()
1397 {TTI::SK_PermuteTwoSrc, MVT::v32i16, 42}, in getShuffleCost()
1398 {TTI::SK_PermuteTwoSrc, MVT::v32f16, 42}, in getShuffleCost()
1399 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 42}, in getShuffleCost()
1401 {TTI::SK_Select, MVT::v32i16, 1}, // vpternlogq in getShuffleCost()
1402 {TTI::SK_Select, MVT::v32f16, 1}, // vpternlogq in getShuffleCost()
1403 {TTI::SK_Select, MVT::v64i8, 1}, // vpternlogq in getShuffleCost()
1404 {TTI::SK_Select, MVT::v8f64, 1}, // vblendmpd in getShuffleCost()
1405 {TTI::SK_Select, MVT::v16f32, 1}, // vblendmps in getShuffleCost()
1406 {TTI::SK_Select, MVT::v8i64, 1}, // vblendmq in getShuffleCost()
1407 {TTI::SK_Select, MVT::v16i32, 1}, // vblendmd in getShuffleCost()
1415 {TTI::SK_Broadcast, MVT::v4f64, 1}, // vbroadcastpd in getShuffleCost()
1416 {TTI::SK_Broadcast, MVT::v8f32, 1}, // vbroadcastps in getShuffleCost()
1417 {TTI::SK_Broadcast, MVT::v4i64, 1}, // vpbroadcastq in getShuffleCost()
1418 {TTI::SK_Broadcast, MVT::v8i32, 1}, // vpbroadcastd in getShuffleCost()
1419 {TTI::SK_Broadcast, MVT::v16i16, 1}, // vpbroadcastw in getShuffleCost()
1420 {TTI::SK_Broadcast, MVT::v16f16, 1}, // vpbroadcastw in getShuffleCost()
1421 {TTI::SK_Broadcast, MVT::v32i8, 1}, // vpbroadcastb in getShuffleCost()
1423 {TTI::SK_Reverse, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1424 {TTI::SK_Reverse, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1425 {TTI::SK_Reverse, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1426 {TTI::SK_Reverse, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1427 {TTI::SK_Reverse, MVT::v16i16, 2}, // vperm2i128 + pshufb in getShuffleCost()
1428 {TTI::SK_Reverse, MVT::v16f16, 2}, // vperm2i128 + pshufb in getShuffleCost()
1429 {TTI::SK_Reverse, MVT::v32i8, 2}, // vperm2i128 + pshufb in getShuffleCost()
1431 {TTI::SK_Select, MVT::v16i16, 1}, // vpblendvb in getShuffleCost()
1432 {TTI::SK_Select, MVT::v16f16, 1}, // vpblendvb in getShuffleCost()
1433 {TTI::SK_Select, MVT::v32i8, 1}, // vpblendvb in getShuffleCost()
1435 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1436 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1437 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1438 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1439 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1441 {TTI::SK_PermuteSingleSrc, MVT::v16f16, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1443 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1446 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vpermpd + vblendpd in getShuffleCost()
1447 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 3}, // 2*vpermps + vblendps in getShuffleCost()
1448 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vpermq + vpblendd in getShuffleCost()
1449 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 3}, // 2*vpermd + vpblendd in getShuffleCost()
1450 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1452 {TTI::SK_PermuteTwoSrc, MVT::v16f16, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1454 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1463 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1464 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1465 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1466 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1467 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1469 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1472 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1474 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 1}, // vpperm in getShuffleCost()
1475 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1477 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 1}, // vpperm in getShuffleCost()
1485 {TTI::SK_Broadcast, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1486 {TTI::SK_Broadcast, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1487 {TTI::SK_Broadcast, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1488 {TTI::SK_Broadcast, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1489 {TTI::SK_Broadcast, MVT::v16i16, 3}, // vpshuflw + vpshufd + vinsertf128 in getShuffleCost()
1490 {TTI::SK_Broadcast, MVT::v16f16, 3}, // vpshuflw + vpshufd + vinsertf128 in getShuffleCost()
1491 {TTI::SK_Broadcast, MVT::v32i8, 2}, // vpshufb + vinsertf128 in getShuffleCost()
1493 {TTI::SK_Reverse, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1494 {TTI::SK_Reverse, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1495 {TTI::SK_Reverse, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1496 {TTI::SK_Reverse, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1497 {TTI::SK_Reverse, MVT::v16i16, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1499 {TTI::SK_Reverse, MVT::v16f16, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1501 {TTI::SK_Reverse, MVT::v32i8, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1504 {TTI::SK_Select, MVT::v4i64, 1}, // vblendpd in getShuffleCost()
1505 {TTI::SK_Select, MVT::v4f64, 1}, // vblendpd in getShuffleCost()
1506 {TTI::SK_Select, MVT::v8i32, 1}, // vblendps in getShuffleCost()
1507 {TTI::SK_Select, MVT::v8f32, 1}, // vblendps in getShuffleCost()
1508 {TTI::SK_Select, MVT::v16i16, 3}, // vpand + vpandn + vpor in getShuffleCost()
1509 {TTI::SK_Select, MVT::v16f16, 3}, // vpand + vpandn + vpor in getShuffleCost()
1510 {TTI::SK_Select, MVT::v32i8, 3}, // vpand + vpandn + vpor in getShuffleCost()
1512 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1513 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1514 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1515 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1516 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1518 {TTI::SK_PermuteSingleSrc, MVT::v16f16, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1520 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1523 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1524 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1525 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1526 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1527 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1529 {TTI::SK_PermuteTwoSrc, MVT::v16f16, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1531 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1540 {TTI::SK_Select, MVT::v2i64, 1}, // pblendw in getShuffleCost()
1541 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
1542 {TTI::SK_Select, MVT::v4i32, 1}, // pblendw in getShuffleCost()
1543 {TTI::SK_Select, MVT::v4f32, 1}, // blendps in getShuffleCost()
1544 {TTI::SK_Select, MVT::v8i16, 1}, // pblendw in getShuffleCost()
1545 {TTI::SK_Select, MVT::v8f16, 1}, // pblendw in getShuffleCost()
1546 {TTI::SK_Select, MVT::v16i8, 1} // pblendvb in getShuffleCost()
1554 {TTI::SK_Broadcast, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1555 {TTI::SK_Broadcast, MVT::v8f16, 1}, // pshufb in getShuffleCost()
1556 {TTI::SK_Broadcast, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1558 {TTI::SK_Reverse, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1559 {TTI::SK_Reverse, MVT::v8f16, 1}, // pshufb in getShuffleCost()
1560 {TTI::SK_Reverse, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1562 {TTI::SK_Select, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
1563 {TTI::SK_Select, MVT::v8f16, 3}, // 2*pshufb + por in getShuffleCost()
1564 {TTI::SK_Select, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
1566 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1567 {TTI::SK_PermuteSingleSrc, MVT::v8f16, 1}, // pshufb in getShuffleCost()
1568 {TTI::SK_PermuteSingleSrc, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1570 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
1571 {TTI::SK_PermuteTwoSrc, MVT::v8f16, 3}, // 2*pshufb + por in getShuffleCost()
1572 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
1580 {TTI::SK_Broadcast, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1581 {TTI::SK_Broadcast, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1582 {TTI::SK_Broadcast, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1583 {TTI::SK_Broadcast, MVT::v8i16, 2}, // pshuflw + pshufd in getShuffleCost()
1584 {TTI::SK_Broadcast, MVT::v8f16, 2}, // pshuflw + pshufd in getShuffleCost()
1585 {TTI::SK_Broadcast, MVT::v16i8, 3}, // unpck + pshuflw + pshufd in getShuffleCost()
1587 {TTI::SK_Reverse, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1588 {TTI::SK_Reverse, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1589 {TTI::SK_Reverse, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1590 {TTI::SK_Reverse, MVT::v8i16, 3}, // pshuflw + pshufhw + pshufd in getShuffleCost()
1591 {TTI::SK_Reverse, MVT::v8f16, 3}, // pshuflw + pshufhw + pshufd in getShuffleCost()
1592 {TTI::SK_Reverse, MVT::v16i8, 9}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1595 {TTI::SK_Select, MVT::v2i64, 1}, // movsd in getShuffleCost()
1596 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
1597 {TTI::SK_Select, MVT::v4i32, 2}, // 2*shufps in getShuffleCost()
1598 {TTI::SK_Select, MVT::v8i16, 3}, // pand + pandn + por in getShuffleCost()
1599 {TTI::SK_Select, MVT::v8f16, 3}, // pand + pandn + por in getShuffleCost()
1600 {TTI::SK_Select, MVT::v16i8, 3}, // pand + pandn + por in getShuffleCost()
1602 {TTI::SK_PermuteSingleSrc, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1603 {TTI::SK_PermuteSingleSrc, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1604 {TTI::SK_PermuteSingleSrc, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1605 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 5}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1607 {TTI::SK_PermuteSingleSrc, MVT::v8f16, 5}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1609 { TTI::SK_PermuteSingleSrc, MVT::v16i8, 10 }, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1612 { TTI::SK_PermuteTwoSrc, MVT::v2f64, 1 }, // shufpd in getShuffleCost()
1613 { TTI::SK_PermuteTwoSrc, MVT::v2i64, 1 }, // shufpd in getShuffleCost()
1614 { TTI::SK_PermuteTwoSrc, MVT::v4i32, 2 }, // 2*{unpck,movsd,pshufd} in getShuffleCost()
1615 { TTI::SK_PermuteTwoSrc, MVT::v8i16, 8 }, // blend+permute in getShuffleCost()
1616 { TTI::SK_PermuteTwoSrc, MVT::v8f16, 8 }, // blend+permute in getShuffleCost()
1617 { TTI::SK_PermuteTwoSrc, MVT::v16i8, 13 }, // blend+permute in getShuffleCost()
1621 {TTI::SK_Broadcast, MVT::v2f64, 0}, // broadcast handled by movddup in getShuffleCost()
1641 { TTI::SK_Broadcast, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1642 { TTI::SK_Reverse, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1643 { TTI::SK_Select, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
1644 { TTI::SK_PermuteSingleSrc, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1645 { TTI::SK_PermuteTwoSrc, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
1676 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
1677 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
1680 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 1 }, in getCastInstrCost()
1681 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v2i1, 1 }, in getCastInstrCost()
1682 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 1 }, in getCastInstrCost()
1683 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v2i1, 1 }, in getCastInstrCost()
1684 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 1 }, in getCastInstrCost()
1685 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v4i1, 1 }, in getCastInstrCost()
1686 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 1 }, in getCastInstrCost()
1687 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v4i1, 1 }, in getCastInstrCost()
1688 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 1 }, in getCastInstrCost()
1689 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v8i1, 1 }, in getCastInstrCost()
1690 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 1 }, in getCastInstrCost()
1691 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 1 }, in getCastInstrCost()
1692 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1693 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, 1 }, in getCastInstrCost()
1694 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i1, 1 }, in getCastInstrCost()
1695 { ISD::SIGN_EXTEND, MVT::v64i8, MVT::v64i1, 1 }, in getCastInstrCost()
1696 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v64i1, 1 }, in getCastInstrCost()
1699 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 2 }, in getCastInstrCost()
1700 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v2i1, 2 }, in getCastInstrCost()
1701 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 2 }, in getCastInstrCost()
1702 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v2i1, 2 }, in getCastInstrCost()
1703 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 2 }, in getCastInstrCost()
1704 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v4i1, 2 }, in getCastInstrCost()
1705 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 2 }, in getCastInstrCost()
1706 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v4i1, 2 }, in getCastInstrCost()
1707 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 2 }, in getCastInstrCost()
1708 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v8i1, 2 }, in getCastInstrCost()
1709 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 2 }, in getCastInstrCost()
1710 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 2 }, in getCastInstrCost()
1711 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 2 }, in getCastInstrCost()
1712 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, 2 }, in getCastInstrCost()
1713 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i1, 2 }, in getCastInstrCost()
1714 { ISD::ZERO_EXTEND, MVT::v64i8, MVT::v64i1, 2 }, in getCastInstrCost()
1715 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v64i1, 2 }, in getCastInstrCost()
1717 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 2 }, in getCastInstrCost()
1718 { ISD::TRUNCATE, MVT::v2i1, MVT::v16i8, 2 }, in getCastInstrCost()
1719 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, in getCastInstrCost()
1720 { ISD::TRUNCATE, MVT::v2i1, MVT::v8i16, 2 }, in getCastInstrCost()
1721 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, in getCastInstrCost()
1722 { ISD::TRUNCATE, MVT::v4i1, MVT::v16i8, 2 }, in getCastInstrCost()
1723 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 2 }, in getCastInstrCost()
1724 { ISD::TRUNCATE, MVT::v4i1, MVT::v8i16, 2 }, in getCastInstrCost()
1725 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 2 }, in getCastInstrCost()
1726 { ISD::TRUNCATE, MVT::v8i1, MVT::v16i8, 2 }, in getCastInstrCost()
1727 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 2 }, in getCastInstrCost()
1728 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 2 }, in getCastInstrCost()
1729 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 2 }, in getCastInstrCost()
1730 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, 2 }, in getCastInstrCost()
1731 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i16, 2 }, in getCastInstrCost()
1732 { ISD::TRUNCATE, MVT::v64i1, MVT::v64i8, 2 }, in getCastInstrCost()
1733 { ISD::TRUNCATE, MVT::v64i1, MVT::v32i16, 2 }, in getCastInstrCost()
1735 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, 2 }, in getCastInstrCost()
1736 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, // widen to zmm in getCastInstrCost()
1737 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i16, 2 }, // vpmovwb in getCastInstrCost()
1738 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i16, 2 }, // vpmovwb in getCastInstrCost()
1739 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i16, 2 }, // vpmovwb in getCastInstrCost()
1744 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, in getCastInstrCost()
1745 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v2i1, 1 }, in getCastInstrCost()
1746 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, in getCastInstrCost()
1747 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, in getCastInstrCost()
1748 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, in getCastInstrCost()
1749 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v16i1, 1 }, in getCastInstrCost()
1750 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i1, 1 }, in getCastInstrCost()
1751 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i1, 1 }, in getCastInstrCost()
1754 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, in getCastInstrCost()
1755 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v2i1, 2 }, in getCastInstrCost()
1756 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, in getCastInstrCost()
1757 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, in getCastInstrCost()
1758 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, in getCastInstrCost()
1759 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v16i1, 2 }, in getCastInstrCost()
1760 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i1, 2 }, in getCastInstrCost()
1761 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i1, 2 }, in getCastInstrCost()
1763 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, in getCastInstrCost()
1764 { ISD::TRUNCATE, MVT::v2i1, MVT::v4i32, 2 }, in getCastInstrCost()
1765 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, in getCastInstrCost()
1766 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, in getCastInstrCost()
1767 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, in getCastInstrCost()
1768 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 2 }, in getCastInstrCost()
1769 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i32, 2 }, in getCastInstrCost()
1770 { ISD::TRUNCATE, MVT::v16i1, MVT::v8i64, 2 }, in getCastInstrCost()
1772 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
1773 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
1775 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
1776 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
1778 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
1779 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
1781 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
1782 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
1789 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 1 }, in getCastInstrCost()
1790 { ISD::FP_EXTEND, MVT::v8f64, MVT::v16f32, 3 }, in getCastInstrCost()
1791 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 1 }, in getCastInstrCost()
1793 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1794 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1795 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1796 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1797 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1798 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1799 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1800 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1801 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
1802 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
1803 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
1804 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
1805 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, // zmm vpsllq+vptestmq in getCastInstrCost()
1806 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, // zmm vpsllq+vptestmq in getCastInstrCost()
1807 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
1808 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i32, 2 }, // vpmovdb in getCastInstrCost()
1809 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i32, 2 }, // vpmovdb in getCastInstrCost()
1810 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 2 }, // vpmovdb in getCastInstrCost()
1811 { ISD::TRUNCATE, MVT::v32i8, MVT::v16i32, 2 }, // vpmovdb in getCastInstrCost()
1812 { ISD::TRUNCATE, MVT::v64i8, MVT::v16i32, 2 }, // vpmovdb in getCastInstrCost()
1813 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 2 }, // vpmovdw in getCastInstrCost()
1814 { ISD::TRUNCATE, MVT::v32i16, MVT::v16i32, 2 }, // vpmovdw in getCastInstrCost()
1815 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i64, 2 }, // vpmovqb in getCastInstrCost()
1816 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i64, 1 }, // vpshufb in getCastInstrCost()
1817 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i64, 2 }, // vpmovqb in getCastInstrCost()
1818 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i64, 2 }, // vpmovqb in getCastInstrCost()
1819 { ISD::TRUNCATE, MVT::v32i8, MVT::v8i64, 2 }, // vpmovqb in getCastInstrCost()
1820 { ISD::TRUNCATE, MVT::v64i8, MVT::v8i64, 2 }, // vpmovqb in getCastInstrCost()
1821 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i64, 2 }, // vpmovqw in getCastInstrCost()
1822 { ISD::TRUNCATE, MVT::v16i16, MVT::v8i64, 2 }, // vpmovqw in getCastInstrCost()
1823 { ISD::TRUNCATE, MVT::v32i16, MVT::v8i64, 2 }, // vpmovqw in getCastInstrCost()
1824 { ISD::TRUNCATE, MVT::v8i32, MVT::v8i64, 1 }, // vpmovqd in getCastInstrCost()
1825 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, // zmm vpmovqd in getCastInstrCost()
1826 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i64, 5 },// 2*vpmovqd+concat+vpmovdb in getCastInstrCost()
1828 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, // extend to v16i32 in getCastInstrCost()
1829 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, 8 }, in getCastInstrCost()
1830 { ISD::TRUNCATE, MVT::v64i8, MVT::v32i16, 8 }, in getCastInstrCost()
1834 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 3 }, in getCastInstrCost()
1835 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 4 }, in getCastInstrCost()
1836 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 3 }, in getCastInstrCost()
1837 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 4 }, in getCastInstrCost()
1838 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 3 }, in getCastInstrCost()
1839 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 4 }, in getCastInstrCost()
1840 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 3 }, in getCastInstrCost()
1841 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 4 }, in getCastInstrCost()
1845 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 3 }, in getCastInstrCost()
1846 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 4 }, in getCastInstrCost()
1847 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 3 }, in getCastInstrCost()
1848 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 4 }, in getCastInstrCost()
1849 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 3 }, in getCastInstrCost()
1850 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 4 }, in getCastInstrCost()
1851 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 3 }, in getCastInstrCost()
1852 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
1854 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, 1 }, // zmm vpternlogd in getCastInstrCost()
1855 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
1856 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, // zmm vpternlogd in getCastInstrCost()
1857 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
1858 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, // zmm vpternlogd in getCastInstrCost()
1859 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
1860 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, // zmm vpternlogq in getCastInstrCost()
1861 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, // zmm vpternlogq+psrlq in getCastInstrCost()
1862 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, // zmm vpternlogq in getCastInstrCost()
1863 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, // zmm vpternlogq+psrlq in getCastInstrCost()
1865 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i1, 1 }, // vpternlogd in getCastInstrCost()
1866 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
1867 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i1, 1 }, // vpternlogq in getCastInstrCost()
1868 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
1870 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
1871 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
1872 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
1873 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
1874 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i8, 1 }, in getCastInstrCost()
1875 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i8, 1 }, in getCastInstrCost()
1876 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
1877 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
1878 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
1879 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
1881 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, 3 }, // FIXME: May not be right in getCastInstrCost()
1882 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, 3 }, // FIXME: May not be right in getCastInstrCost()
1884 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
1885 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
1886 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v16i8, 2 }, in getCastInstrCost()
1887 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i8, 1 }, in getCastInstrCost()
1888 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
1889 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i16, 1 }, in getCastInstrCost()
1890 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
1891 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
1893 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
1894 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
1895 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v16i8, 2 }, in getCastInstrCost()
1896 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i8, 1 }, in getCastInstrCost()
1897 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
1898 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i16, 1 }, in getCastInstrCost()
1899 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
1900 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
1901 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 26 }, in getCastInstrCost()
1902 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 5 }, in getCastInstrCost()
1904 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f32, 2 }, in getCastInstrCost()
1905 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f64, 7 }, in getCastInstrCost()
1906 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v32f64,15 }, in getCastInstrCost()
1907 { ISD::FP_TO_SINT, MVT::v64i8, MVT::v64f32,11 }, in getCastInstrCost()
1908 { ISD::FP_TO_SINT, MVT::v64i8, MVT::v64f64,31 }, in getCastInstrCost()
1909 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f64, 3 }, in getCastInstrCost()
1910 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v16f64, 7 }, in getCastInstrCost()
1911 { ISD::FP_TO_SINT, MVT::v32i16, MVT::v32f32, 5 }, in getCastInstrCost()
1912 { ISD::FP_TO_SINT, MVT::v32i16, MVT::v32f64,15 }, in getCastInstrCost()
1913 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
1914 { ISD::FP_TO_SINT, MVT::v16i32, MVT::v16f64, 3 }, in getCastInstrCost()
1916 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
1917 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f64, 3 }, in getCastInstrCost()
1918 { ISD::FP_TO_UINT, MVT::v8i8, MVT::v8f64, 3 }, in getCastInstrCost()
1919 { ISD::FP_TO_UINT, MVT::v16i32, MVT::v16f32, 1 }, in getCastInstrCost()
1920 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v16f32, 3 }, in getCastInstrCost()
1921 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v16f32, 3 }, in getCastInstrCost()
1926 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 1 }, in getCastInstrCost()
1927 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v2i1, 1 }, in getCastInstrCost()
1928 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 1 }, in getCastInstrCost()
1929 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v2i1, 1 }, in getCastInstrCost()
1930 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 1 }, in getCastInstrCost()
1931 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v4i1, 1 }, in getCastInstrCost()
1932 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 1 }, in getCastInstrCost()
1933 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v4i1, 1 }, in getCastInstrCost()
1934 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 1 }, in getCastInstrCost()
1935 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v8i1, 1 }, in getCastInstrCost()
1936 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 1 }, in getCastInstrCost()
1937 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 1 }, in getCastInstrCost()
1938 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1939 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, 1 }, in getCastInstrCost()
1940 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v32i1, 1 }, in getCastInstrCost()
1941 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v64i1, 1 }, in getCastInstrCost()
1942 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v64i1, 1 }, in getCastInstrCost()
1945 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 2 }, in getCastInstrCost()
1946 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v2i1, 2 }, in getCastInstrCost()
1947 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 2 }, in getCastInstrCost()
1948 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v2i1, 2 }, in getCastInstrCost()
1949 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 2 }, in getCastInstrCost()
1950 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v4i1, 2 }, in getCastInstrCost()
1951 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 2 }, in getCastInstrCost()
1952 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v4i1, 2 }, in getCastInstrCost()
1953 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 2 }, in getCastInstrCost()
1954 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v8i1, 2 }, in getCastInstrCost()
1955 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 2 }, in getCastInstrCost()
1956 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 2 }, in getCastInstrCost()
1957 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 2 }, in getCastInstrCost()
1958 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, 2 }, in getCastInstrCost()
1959 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v32i1, 2 }, in getCastInstrCost()
1960 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v64i1, 2 }, in getCastInstrCost()
1961 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v64i1, 2 }, in getCastInstrCost()
1963 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 2 }, in getCastInstrCost()
1964 { ISD::TRUNCATE, MVT::v2i1, MVT::v16i8, 2 }, in getCastInstrCost()
1965 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, in getCastInstrCost()
1966 { ISD::TRUNCATE, MVT::v2i1, MVT::v8i16, 2 }, in getCastInstrCost()
1967 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, in getCastInstrCost()
1968 { ISD::TRUNCATE, MVT::v4i1, MVT::v16i8, 2 }, in getCastInstrCost()
1969 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 2 }, in getCastInstrCost()
1970 { ISD::TRUNCATE, MVT::v4i1, MVT::v8i16, 2 }, in getCastInstrCost()
1971 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 2 }, in getCastInstrCost()
1972 { ISD::TRUNCATE, MVT::v8i1, MVT::v16i8, 2 }, in getCastInstrCost()
1973 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 2 }, in getCastInstrCost()
1974 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 2 }, in getCastInstrCost()
1975 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 2 }, in getCastInstrCost()
1976 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, 2 }, in getCastInstrCost()
1977 { ISD::TRUNCATE, MVT::v32i1, MVT::v16i16, 2 }, in getCastInstrCost()
1978 { ISD::TRUNCATE, MVT::v64i1, MVT::v32i8, 2 }, in getCastInstrCost()
1979 { ISD::TRUNCATE, MVT::v64i1, MVT::v16i16, 2 }, in getCastInstrCost()
1981 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, in getCastInstrCost()
1986 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, in getCastInstrCost()
1987 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v2i1, 1 }, in getCastInstrCost()
1988 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, in getCastInstrCost()
1989 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i1, 1 }, in getCastInstrCost()
1990 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, in getCastInstrCost()
1991 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i1, 1 }, in getCastInstrCost()
1992 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i1, 1 }, in getCastInstrCost()
1993 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, in getCastInstrCost()
1996 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, in getCastInstrCost()
1997 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v2i1, 2 }, in getCastInstrCost()
1998 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, in getCastInstrCost()
1999 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i1, 2 }, in getCastInstrCost()
2000 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, in getCastInstrCost()
2001 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i1, 2 }, in getCastInstrCost()
2002 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i1, 2 }, in getCastInstrCost()
2003 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, in getCastInstrCost()
2005 { ISD::TRUNCATE, MVT::v16i1, MVT::v4i64, 2 }, in getCastInstrCost()
2006 { ISD::TRUNCATE, MVT::v16i1, MVT::v8i32, 2 }, in getCastInstrCost()
2007 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, in getCastInstrCost()
2008 { ISD::TRUNCATE, MVT::v2i1, MVT::v4i32, 2 }, in getCastInstrCost()
2009 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, in getCastInstrCost()
2010 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, in getCastInstrCost()
2011 { ISD::TRUNCATE, MVT::v8i1, MVT::v4i64, 2 }, in getCastInstrCost()
2012 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, in getCastInstrCost()
2014 { ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
2015 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
2016 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
2017 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
2019 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
2020 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
2021 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
2022 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
2024 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v4f32, 1 }, in getCastInstrCost()
2025 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
2026 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
2027 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
2029 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v4f32, 1 }, in getCastInstrCost()
2030 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
2031 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
2032 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
2036 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2037 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2038 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2039 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 8 }, // split+2*v8i8 in getCastInstrCost()
2040 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
2041 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
2042 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
2043 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 8 }, // split+2*v8i16 in getCastInstrCost()
2044 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
2045 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
2046 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
2047 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
2048 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
2049 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, // vpmovqd in getCastInstrCost()
2050 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i64, 2 }, // vpmovqb in getCastInstrCost()
2051 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i64, 2 }, // vpmovqw in getCastInstrCost()
2052 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 2 }, // vpmovwb in getCastInstrCost()
2056 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 5 }, in getCastInstrCost()
2057 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 6 }, in getCastInstrCost()
2058 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 5 }, in getCastInstrCost()
2059 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 6 }, in getCastInstrCost()
2060 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 5 }, in getCastInstrCost()
2061 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 6 }, in getCastInstrCost()
2062 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 10 }, in getCastInstrCost()
2063 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 12 }, in getCastInstrCost()
2067 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 4 }, in getCastInstrCost()
2068 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 5 }, in getCastInstrCost()
2069 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 4 }, in getCastInstrCost()
2070 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 5 }, in getCastInstrCost()
2071 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 4 }, in getCastInstrCost()
2072 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 5 }, in getCastInstrCost()
2073 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 10 }, in getCastInstrCost()
2074 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 12 }, in getCastInstrCost()
2076 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, 1 }, // vpternlogd in getCastInstrCost()
2077 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
2078 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, // vpternlogd in getCastInstrCost()
2079 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
2080 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, // vpternlogd in getCastInstrCost()
2081 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
2082 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, // vpternlogq in getCastInstrCost()
2083 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
2084 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, // vpternlogq in getCastInstrCost()
2085 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
2087 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, 1 }, in getCastInstrCost()
2088 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, 1 }, in getCastInstrCost()
2089 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, 1 }, in getCastInstrCost()
2090 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, 1 }, in getCastInstrCost()
2091 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
2092 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
2093 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, 1 }, in getCastInstrCost()
2094 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, 1 }, in getCastInstrCost()
2095 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
2096 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
2097 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
2098 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
2100 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2101 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, 1 }, in getCastInstrCost()
2102 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2103 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 1 }, in getCastInstrCost()
2105 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 1 }, in getCastInstrCost()
2106 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 1 }, in getCastInstrCost()
2107 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2108 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, 1 }, in getCastInstrCost()
2109 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2110 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 1 }, in getCastInstrCost()
2111 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 1 }, in getCastInstrCost()
2112 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
2113 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
2114 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
2115 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 5 }, in getCastInstrCost()
2116 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
2117 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 5 }, in getCastInstrCost()
2119 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v8f32, 2 }, in getCastInstrCost()
2120 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f32, 2 }, in getCastInstrCost()
2121 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v32f32, 5 }, in getCastInstrCost()
2123 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 1 }, in getCastInstrCost()
2124 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 1 }, in getCastInstrCost()
2125 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 1 }, in getCastInstrCost()
2126 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 1 }, in getCastInstrCost()
2127 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 1 }, in getCastInstrCost()
2128 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 1 }, in getCastInstrCost()
2129 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
2133 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
2134 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
2135 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
2136 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
2137 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
2138 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
2140 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, 2 }, in getCastInstrCost()
2141 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, 2 }, in getCastInstrCost()
2142 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, 2 }, in getCastInstrCost()
2143 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, 2 }, in getCastInstrCost()
2144 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
2145 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
2146 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, 2 }, in getCastInstrCost()
2147 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, 2 }, in getCastInstrCost()
2148 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
2149 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
2150 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 3 }, in getCastInstrCost()
2151 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 3 }, in getCastInstrCost()
2152 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
2153 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
2155 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, in getCastInstrCost()
2157 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 4 }, in getCastInstrCost()
2158 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 4 }, in getCastInstrCost()
2159 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i16, 1 }, in getCastInstrCost()
2160 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, 1 }, in getCastInstrCost()
2161 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, 1 }, in getCastInstrCost()
2162 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i32, 4 }, in getCastInstrCost()
2163 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i64, 4 }, in getCastInstrCost()
2164 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, 1 }, in getCastInstrCost()
2165 { ISD::TRUNCATE, MVT::v8i16, MVT::v2i64, 1 }, in getCastInstrCost()
2166 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i64, 5 }, in getCastInstrCost()
2167 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, in getCastInstrCost()
2168 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 2 }, in getCastInstrCost()
2170 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 3 }, in getCastInstrCost()
2171 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 3 }, in getCastInstrCost()
2173 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v8f32, 1 }, in getCastInstrCost()
2174 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f64, 1 }, in getCastInstrCost()
2175 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f32, 1 }, in getCastInstrCost()
2176 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, 3 }, in getCastInstrCost()
2178 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 3 }, in getCastInstrCost()
2179 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 3 }, in getCastInstrCost()
2180 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v8f32, 1 }, in getCastInstrCost()
2181 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 3 }, in getCastInstrCost()
2182 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2183 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 4 }, in getCastInstrCost()
2184 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 3 }, in getCastInstrCost()
2185 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v4f64, 4 }, in getCastInstrCost()
2187 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 2 }, in getCastInstrCost()
2188 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, 2 }, in getCastInstrCost()
2189 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 2 }, in getCastInstrCost()
2190 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 2 }, in getCastInstrCost()
2191 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
2192 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
2193 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 3 }, in getCastInstrCost()
2195 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 2 }, in getCastInstrCost()
2196 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, 2 }, in getCastInstrCost()
2197 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 2 }, in getCastInstrCost()
2198 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 2 }, in getCastInstrCost()
2199 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 2 }, in getCastInstrCost()
2200 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 1 }, in getCastInstrCost()
2201 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 2 }, in getCastInstrCost()
2202 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 2 }, in getCastInstrCost()
2203 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 2 }, in getCastInstrCost()
2204 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 4 }, in getCastInstrCost()
2208 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 6 }, in getCastInstrCost()
2209 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 4 }, in getCastInstrCost()
2210 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 7 }, in getCastInstrCost()
2211 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 4 }, in getCastInstrCost()
2212 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
2213 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
2215 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, 3 }, in getCastInstrCost()
2216 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, 3 }, in getCastInstrCost()
2217 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, 3 }, in getCastInstrCost()
2218 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, 3 }, in getCastInstrCost()
2219 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 3 }, in getCastInstrCost()
2220 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 3 }, in getCastInstrCost()
2221 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, 3 }, in getCastInstrCost()
2222 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, 3 }, in getCastInstrCost()
2223 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 3 }, in getCastInstrCost()
2224 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 3 }, in getCastInstrCost()
2225 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 3 }, in getCastInstrCost()
2226 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 3 }, in getCastInstrCost()
2228 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 4 }, in getCastInstrCost()
2229 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 5 }, in getCastInstrCost()
2230 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 4 }, in getCastInstrCost()
2231 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 9 }, in getCastInstrCost()
2232 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i64, 11 }, in getCastInstrCost()
2234 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 6 }, in getCastInstrCost()
2235 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 6 }, in getCastInstrCost()
2236 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, // and+extract+packuswb in getCastInstrCost()
2237 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i32, 5 }, in getCastInstrCost()
2238 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
2239 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i64, 5 }, in getCastInstrCost()
2240 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i64, 3 }, // and+extract+2*packusdw in getCastInstrCost()
2241 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 2 }, in getCastInstrCost()
2243 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i1, 3 }, in getCastInstrCost()
2244 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i1, 3 }, in getCastInstrCost()
2245 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i1, 8 }, in getCastInstrCost()
2246 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, 4 }, in getCastInstrCost()
2247 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v16i8, 2 }, in getCastInstrCost()
2248 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 4 }, in getCastInstrCost()
2249 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v8i16, 2 }, in getCastInstrCost()
2250 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 2 }, in getCastInstrCost()
2251 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, 2 }, in getCastInstrCost()
2252 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 4 }, in getCastInstrCost()
2253 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, 5 }, in getCastInstrCost()
2254 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, 8 }, in getCastInstrCost()
2256 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i1, 7 }, in getCastInstrCost()
2257 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i1, 7 }, in getCastInstrCost()
2258 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i1, 6 }, in getCastInstrCost()
2259 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, 4 }, in getCastInstrCost()
2260 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v16i8, 2 }, in getCastInstrCost()
2261 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 4 }, in getCastInstrCost()
2262 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v8i16, 2 }, in getCastInstrCost()
2263 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 4 }, in getCastInstrCost()
2264 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 4 }, in getCastInstrCost()
2265 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 5 }, in getCastInstrCost()
2266 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 6 }, in getCastInstrCost()
2267 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 8 }, in getCastInstrCost()
2268 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 10 }, in getCastInstrCost()
2269 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 10 }, in getCastInstrCost()
2270 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 18 }, in getCastInstrCost()
2271 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
2272 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 10 }, in getCastInstrCost()
2274 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v8f32, 2 }, in getCastInstrCost()
2275 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f64, 2 }, in getCastInstrCost()
2276 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v8f32, 2 }, in getCastInstrCost()
2277 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v4f64, 2 }, in getCastInstrCost()
2278 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f32, 2 }, in getCastInstrCost()
2279 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f64, 2 }, in getCastInstrCost()
2280 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v8f32, 2 }, in getCastInstrCost()
2281 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v4f64, 2 }, in getCastInstrCost()
2282 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f64, 2 }, in getCastInstrCost()
2283 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f32, 2 }, in getCastInstrCost()
2284 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, 5 }, in getCastInstrCost()
2286 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v8f32, 2 }, in getCastInstrCost()
2287 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f64, 2 }, in getCastInstrCost()
2288 { ISD::FP_TO_UINT, MVT::v32i8, MVT::v8f32, 2 }, in getCastInstrCost()
2289 { ISD::FP_TO_UINT, MVT::v32i8, MVT::v4f64, 2 }, in getCastInstrCost()
2290 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f32, 2 }, in getCastInstrCost()
2291 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f64, 2 }, in getCastInstrCost()
2292 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v8f32, 2 }, in getCastInstrCost()
2293 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v4f64, 2 }, in getCastInstrCost()
2294 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 3 }, in getCastInstrCost()
2295 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2296 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 6 }, in getCastInstrCost()
2297 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 7 }, in getCastInstrCost()
2298 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v4f64, 7 }, in getCastInstrCost()
2300 { ISD::FP_EXTEND, MVT::v4f64, MVT::v4f32, 1 }, in getCastInstrCost()
2301 { ISD::FP_ROUND, MVT::v4f32, MVT::v4f64, 1 }, in getCastInstrCost()
2305 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v16i8, 1 }, in getCastInstrCost()
2306 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v16i8, 1 }, in getCastInstrCost()
2307 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v16i8, 1 }, in getCastInstrCost()
2308 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v16i8, 1 }, in getCastInstrCost()
2309 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v16i8, 1 }, in getCastInstrCost()
2310 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v16i8, 1 }, in getCastInstrCost()
2311 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v8i16, 1 }, in getCastInstrCost()
2312 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v8i16, 1 }, in getCastInstrCost()
2313 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v8i16, 1 }, in getCastInstrCost()
2314 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v8i16, 1 }, in getCastInstrCost()
2315 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v4i32, 1 }, in getCastInstrCost()
2316 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v4i32, 1 }, in getCastInstrCost()
2319 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 1 }, // PMOVXZBQ in getCastInstrCost()
2320 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 1 }, // PMOVXZWQ in getCastInstrCost()
2321 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 1 }, // PMOVXZBD in getCastInstrCost()
2323 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, 2 }, in getCastInstrCost()
2324 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, 2 }, in getCastInstrCost()
2325 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, 2 }, in getCastInstrCost()
2327 { ISD::SINT_TO_FP, MVT::f32, MVT::i32, 1 }, in getCastInstrCost()
2328 { ISD::SINT_TO_FP, MVT::f64, MVT::i32, 1 }, in getCastInstrCost()
2329 { ISD::SINT_TO_FP, MVT::f32, MVT::i64, 1 }, in getCastInstrCost()
2330 { ISD::SINT_TO_FP, MVT::f64, MVT::i64, 1 }, in getCastInstrCost()
2331 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, 1 }, in getCastInstrCost()
2332 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2333 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, 1 }, in getCastInstrCost()
2334 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2335 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
2336 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, 1 }, in getCastInstrCost()
2337 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 2 }, in getCastInstrCost()
2339 { ISD::UINT_TO_FP, MVT::f32, MVT::i32, 1 }, in getCastInstrCost()
2340 { ISD::UINT_TO_FP, MVT::f64, MVT::i32, 1 }, in getCastInstrCost()
2341 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 4 }, in getCastInstrCost()
2342 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 4 }, in getCastInstrCost()
2343 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, 1 }, in getCastInstrCost()
2344 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2345 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, 1 }, in getCastInstrCost()
2346 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2347 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 3 }, in getCastInstrCost()
2348 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 3 }, in getCastInstrCost()
2349 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, 2 }, in getCastInstrCost()
2350 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, 12 }, in getCastInstrCost()
2351 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 22 }, in getCastInstrCost()
2352 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 4 }, in getCastInstrCost()
2354 { ISD::FP_TO_SINT, MVT::i32, MVT::f32, 1 }, in getCastInstrCost()
2355 { ISD::FP_TO_SINT, MVT::i64, MVT::f32, 1 }, in getCastInstrCost()
2356 { ISD::FP_TO_SINT, MVT::i32, MVT::f64, 1 }, in getCastInstrCost()
2357 { ISD::FP_TO_SINT, MVT::i64, MVT::f64, 1 }, in getCastInstrCost()
2358 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f32, 2 }, in getCastInstrCost()
2359 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v2f64, 2 }, in getCastInstrCost()
2360 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f32, 1 }, in getCastInstrCost()
2361 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v2f64, 1 }, in getCastInstrCost()
2362 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, 1 }, in getCastInstrCost()
2363 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v2f64, 1 }, in getCastInstrCost()
2365 { ISD::FP_TO_UINT, MVT::i32, MVT::f32, 1 }, in getCastInstrCost()
2366 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
2367 { ISD::FP_TO_UINT, MVT::i32, MVT::f64, 1 }, in getCastInstrCost()
2368 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 4 }, in getCastInstrCost()
2369 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f32, 2 }, in getCastInstrCost()
2370 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v2f64, 2 }, in getCastInstrCost()
2371 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f32, 1 }, in getCastInstrCost()
2372 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v2f64, 1 }, in getCastInstrCost()
2373 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 4 }, in getCastInstrCost()
2374 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2381 { ISD::SINT_TO_FP, MVT::f32, MVT::i32, 3 }, in getCastInstrCost()
2382 { ISD::SINT_TO_FP, MVT::f64, MVT::i32, 3 }, in getCastInstrCost()
2383 { ISD::SINT_TO_FP, MVT::f32, MVT::i64, 3 }, in getCastInstrCost()
2384 { ISD::SINT_TO_FP, MVT::f64, MVT::i64, 3 }, in getCastInstrCost()
2385 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, 3 }, in getCastInstrCost()
2386 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 4 }, in getCastInstrCost()
2387 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, 3 }, in getCastInstrCost()
2388 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 4 }, in getCastInstrCost()
2389 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 3 }, in getCastInstrCost()
2390 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, 4 }, in getCastInstrCost()
2391 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, 8 }, in getCastInstrCost()
2392 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 8 }, in getCastInstrCost()
2394 { ISD::UINT_TO_FP, MVT::f32, MVT::i32, 3 }, in getCastInstrCost()
2395 { ISD::UINT_TO_FP, MVT::f64, MVT::i32, 3 }, in getCastInstrCost()
2396 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 8 }, in getCastInstrCost()
2397 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 9 }, in getCastInstrCost()
2398 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 4 }, in getCastInstrCost()
2399 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, 4 }, in getCastInstrCost()
2400 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, 4 }, in getCastInstrCost()
2401 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 4 }, in getCastInstrCost()
2402 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 7 }, in getCastInstrCost()
2403 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, 7 }, in getCastInstrCost()
2404 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 5 }, in getCastInstrCost()
2405 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 15 }, in getCastInstrCost()
2406 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, 18 }, in getCastInstrCost()
2408 { ISD::FP_TO_SINT, MVT::i32, MVT::f32, 4 }, in getCastInstrCost()
2409 { ISD::FP_TO_SINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
2410 { ISD::FP_TO_SINT, MVT::i32, MVT::f64, 4 }, in getCastInstrCost()
2411 { ISD::FP_TO_SINT, MVT::i64, MVT::f64, 4 }, in getCastInstrCost()
2412 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f32, 6 }, in getCastInstrCost()
2413 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v2f64, 6 }, in getCastInstrCost()
2414 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f32, 5 }, in getCastInstrCost()
2415 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v2f64, 5 }, in getCastInstrCost()
2416 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, 4 }, in getCastInstrCost()
2417 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2419 { ISD::FP_TO_UINT, MVT::i32, MVT::f32, 4 }, in getCastInstrCost()
2420 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
2421 { ISD::FP_TO_UINT, MVT::i32, MVT::f64, 4 }, in getCastInstrCost()
2422 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 15 }, in getCastInstrCost()
2423 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f32, 6 }, in getCastInstrCost()
2424 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v2f64, 6 }, in getCastInstrCost()
2425 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f32, 5 }, in getCastInstrCost()
2426 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v2f64, 5 }, in getCastInstrCost()
2427 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 8 }, in getCastInstrCost()
2428 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 8 }, in getCastInstrCost()
2430 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v16i8, 4 }, in getCastInstrCost()
2431 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v16i8, 4 }, in getCastInstrCost()
2432 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v16i8, 2 }, in getCastInstrCost()
2433 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v16i8, 3 }, in getCastInstrCost()
2434 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v16i8, 1 }, in getCastInstrCost()
2435 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v16i8, 2 }, in getCastInstrCost()
2436 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v8i16, 2 }, in getCastInstrCost()
2437 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v8i16, 3 }, in getCastInstrCost()
2438 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v8i16, 1 }, in getCastInstrCost()
2439 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v8i16, 2 }, in getCastInstrCost()
2440 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v4i32, 1 }, in getCastInstrCost()
2441 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v4i32, 2 }, in getCastInstrCost()
2444 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 1 }, // PSHUFD in getCastInstrCost()
2445 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, // PUNPCKLWD+DQ in getCastInstrCost()
2446 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // PUNPCKLBW+WD+PSHUFD in getCastInstrCost()
2447 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 1 }, // PUNPCKLWD in getCastInstrCost()
2448 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, // PUNPCKLBW+WD in getCastInstrCost()
2449 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 1 }, // PUNPCKLBW in getCastInstrCost()
2451 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i16, 2 }, // PAND+PACKUSWB in getCastInstrCost()
2452 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, in getCastInstrCost()
2453 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, 3 }, // PAND+2*PACKUSWB in getCastInstrCost()
2454 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 7 }, in getCastInstrCost()
2455 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i32, 1 }, in getCastInstrCost()
2456 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, 3 }, in getCastInstrCost()
2457 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
2458 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32,10 }, in getCastInstrCost()
2459 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, 4 }, // PAND+3*PACKUSWB in getCastInstrCost()
2460 { ISD::TRUNCATE, MVT::v8i16, MVT::v2i64, 2 }, // PSHUFD+PSHUFLW in getCastInstrCost()
2461 { ISD::TRUNCATE, MVT::v4i32, MVT::v2i64, 1 }, // PSHUFD in getCastInstrCost()
2470 MVT SimpleSrcTy = SrcTy.getSimpleVT(); in getCastInstrCost()
2471 MVT SimpleDstTy = DstTy.getSimpleVT(); in getCastInstrCost()
2531 std::pair<InstructionCost, MVT> LTSrc = TLI->getTypeLegalizationCost(DL, Src); in getCastInstrCost()
2532 std::pair<InstructionCost, MVT> LTDest = in getCastInstrCost()
2633 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getCmpSelInstrCost()
2635 MVT MTy = LT.second; in getCmpSelInstrCost()
2696 { ISD::SETCC, MVT::v2i64, 2 }, in getCmpSelInstrCost()
2700 { ISD::SETCC, MVT::v32i16, 1 }, in getCmpSelInstrCost()
2701 { ISD::SETCC, MVT::v64i8, 1 }, in getCmpSelInstrCost()
2703 { ISD::SELECT, MVT::v32i16, 1 }, in getCmpSelInstrCost()
2704 { ISD::SELECT, MVT::v64i8, 1 }, in getCmpSelInstrCost()
2708 { ISD::SETCC, MVT::v8i64, 1 }, in getCmpSelInstrCost()
2709 { ISD::SETCC, MVT::v16i32, 1 }, in getCmpSelInstrCost()
2710 { ISD::SETCC, MVT::v8f64, 1 }, in getCmpSelInstrCost()
2711 { ISD::SETCC, MVT::v16f32, 1 }, in getCmpSelInstrCost()
2713 { ISD::SELECT, MVT::v8i64, 1 }, in getCmpSelInstrCost()
2714 { ISD::SELECT, MVT::v4i64, 1 }, in getCmpSelInstrCost()
2715 { ISD::SELECT, MVT::v2i64, 1 }, in getCmpSelInstrCost()
2716 { ISD::SELECT, MVT::v16i32, 1 }, in getCmpSelInstrCost()
2717 { ISD::SELECT, MVT::v8i32, 1 }, in getCmpSelInstrCost()
2718 { ISD::SELECT, MVT::v4i32, 1 }, in getCmpSelInstrCost()
2719 { ISD::SELECT, MVT::v8f64, 1 }, in getCmpSelInstrCost()
2720 { ISD::SELECT, MVT::v4f64, 1 }, in getCmpSelInstrCost()
2721 { ISD::SELECT, MVT::v2f64, 1 }, in getCmpSelInstrCost()
2722 { ISD::SELECT, MVT::f64, 1 }, in getCmpSelInstrCost()
2723 { ISD::SELECT, MVT::v16f32, 1 }, in getCmpSelInstrCost()
2724 { ISD::SELECT, MVT::v8f32 , 1 }, in getCmpSelInstrCost()
2725 { ISD::SELECT, MVT::v4f32, 1 }, in getCmpSelInstrCost()
2726 { ISD::SELECT, MVT::f32 , 1 }, in getCmpSelInstrCost()
2728 { ISD::SETCC, MVT::v32i16, 2 }, // FIXME: should probably be 4 in getCmpSelInstrCost()
2729 { ISD::SETCC, MVT::v64i8, 2 }, // FIXME: should probably be 4 in getCmpSelInstrCost()
2731 { ISD::SELECT, MVT::v32i16, 2 }, in getCmpSelInstrCost()
2732 { ISD::SELECT, MVT::v16i16, 1 }, in getCmpSelInstrCost()
2733 { ISD::SELECT, MVT::v8i16, 1 }, in getCmpSelInstrCost()
2734 { ISD::SELECT, MVT::v64i8, 2 }, in getCmpSelInstrCost()
2735 { ISD::SELECT, MVT::v32i8, 1 }, in getCmpSelInstrCost()
2736 { ISD::SELECT, MVT::v16i8, 1 }, in getCmpSelInstrCost()
2740 { ISD::SETCC, MVT::v4i64, 1 }, in getCmpSelInstrCost()
2741 { ISD::SETCC, MVT::v8i32, 1 }, in getCmpSelInstrCost()
2742 { ISD::SETCC, MVT::v16i16, 1 }, in getCmpSelInstrCost()
2743 { ISD::SETCC, MVT::v32i8, 1 }, in getCmpSelInstrCost()
2745 { ISD::SELECT, MVT::v4f64, 2 }, // vblendvpd in getCmpSelInstrCost()
2746 { ISD::SELECT, MVT::v8f32, 2 }, // vblendvps in getCmpSelInstrCost()
2747 { ISD::SELECT, MVT::v4i64, 2 }, // pblendvb in getCmpSelInstrCost()
2748 { ISD::SELECT, MVT::v8i32, 2 }, // pblendvb in getCmpSelInstrCost()
2749 { ISD::SELECT, MVT::v16i16, 2 }, // pblendvb in getCmpSelInstrCost()
2750 { ISD::SELECT, MVT::v32i8, 2 }, // pblendvb in getCmpSelInstrCost()
2754 { ISD::SETCC, MVT::v4f64, 1 }, in getCmpSelInstrCost()
2755 { ISD::SETCC, MVT::v8f32, 1 }, in getCmpSelInstrCost()
2757 { ISD::SETCC, MVT::v4i64, 4 }, in getCmpSelInstrCost()
2758 { ISD::SETCC, MVT::v8i32, 4 }, in getCmpSelInstrCost()
2759 { ISD::SETCC, MVT::v16i16, 4 }, in getCmpSelInstrCost()
2760 { ISD::SETCC, MVT::v32i8, 4 }, in getCmpSelInstrCost()
2762 { ISD::SELECT, MVT::v4f64, 3 }, // vblendvpd in getCmpSelInstrCost()
2763 { ISD::SELECT, MVT::v8f32, 3 }, // vblendvps in getCmpSelInstrCost()
2764 { ISD::SELECT, MVT::v4i64, 3 }, // vblendvpd in getCmpSelInstrCost()
2765 { ISD::SELECT, MVT::v8i32, 3 }, // vblendvps in getCmpSelInstrCost()
2766 { ISD::SELECT, MVT::v16i16, 3 }, // vandps + vandnps + vorps in getCmpSelInstrCost()
2767 { ISD::SELECT, MVT::v32i8, 3 }, // vandps + vandnps + vorps in getCmpSelInstrCost()
2771 { ISD::SETCC, MVT::v2i64, 1 }, in getCmpSelInstrCost()
2775 { ISD::SETCC, MVT::v2f64, 1 }, in getCmpSelInstrCost()
2776 { ISD::SETCC, MVT::v4f32, 1 }, in getCmpSelInstrCost()
2778 { ISD::SELECT, MVT::v2f64, 2 }, // blendvpd in getCmpSelInstrCost()
2779 { ISD::SELECT, MVT::f64, 2 }, // blendvpd in getCmpSelInstrCost()
2780 { ISD::SELECT, MVT::v4f32, 2 }, // blendvps in getCmpSelInstrCost()
2781 { ISD::SELECT, MVT::f32 , 2 }, // blendvps in getCmpSelInstrCost()
2782 { ISD::SELECT, MVT::v2i64, 2 }, // pblendvb in getCmpSelInstrCost()
2783 { ISD::SELECT, MVT::v4i32, 2 }, // pblendvb in getCmpSelInstrCost()
2784 { ISD::SELECT, MVT::v8i16, 2 }, // pblendvb in getCmpSelInstrCost()
2785 { ISD::SELECT, MVT::v16i8, 2 }, // pblendvb in getCmpSelInstrCost()
2789 { ISD::SETCC, MVT::v2f64, 2 }, in getCmpSelInstrCost()
2790 { ISD::SETCC, MVT::f64, 1 }, in getCmpSelInstrCost()
2791 { ISD::SETCC, MVT::v2i64, 5 }, // pcmpeqd/pcmpgtd expansion in getCmpSelInstrCost()
2792 { ISD::SETCC, MVT::v4i32, 1 }, in getCmpSelInstrCost()
2793 { ISD::SETCC, MVT::v8i16, 1 }, in getCmpSelInstrCost()
2794 { ISD::SETCC, MVT::v16i8, 1 }, in getCmpSelInstrCost()
2796 { ISD::SELECT, MVT::v2f64, 2 }, // andpd + andnpd + orpd in getCmpSelInstrCost()
2797 { ISD::SELECT, MVT::f64, 2 }, // andpd + andnpd + orpd in getCmpSelInstrCost()
2798 { ISD::SELECT, MVT::v2i64, 2 }, // pand + pandn + por in getCmpSelInstrCost()
2799 { ISD::SELECT, MVT::v4i32, 2 }, // pand + pandn + por in getCmpSelInstrCost()
2800 { ISD::SELECT, MVT::v8i16, 2 }, // pand + pandn + por in getCmpSelInstrCost()
2801 { ISD::SELECT, MVT::v16i8, 2 }, // pand + pandn + por in getCmpSelInstrCost()
2805 { ISD::SETCC, MVT::v4f32, 2 }, in getCmpSelInstrCost()
2806 { ISD::SETCC, MVT::f32, 1 }, in getCmpSelInstrCost()
2808 { ISD::SELECT, MVT::v4f32, 2 }, // andps + andnps + orps in getCmpSelInstrCost()
2809 { ISD::SELECT, MVT::f32, 2 }, // andps + andnps + orps in getCmpSelInstrCost()
2867 { ISD::CTPOP, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2868 { ISD::CTPOP, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2869 { ISD::CTPOP, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2870 { ISD::CTPOP, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2871 { ISD::CTPOP, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2872 { ISD::CTPOP, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2875 { ISD::CTPOP, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2876 { ISD::CTPOP, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2877 { ISD::CTPOP, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2878 { ISD::CTPOP, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2879 { ISD::CTPOP, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2880 { ISD::CTPOP, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2883 { ISD::CTLZ, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2884 { ISD::CTLZ, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2885 { ISD::CTLZ, MVT::v32i16, 8 }, in getTypeBasedIntrinsicInstrCost()
2886 { ISD::CTLZ, MVT::v64i8, 20 }, in getTypeBasedIntrinsicInstrCost()
2887 { ISD::CTLZ, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2888 { ISD::CTLZ, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2889 { ISD::CTLZ, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2890 { ISD::CTLZ, MVT::v32i8, 10 }, in getTypeBasedIntrinsicInstrCost()
2891 { ISD::CTLZ, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2892 { ISD::CTLZ, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2893 { ISD::CTLZ, MVT::v8i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2894 { ISD::CTLZ, MVT::v16i8, 4 }, in getTypeBasedIntrinsicInstrCost()
2897 { ISD::ABS, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2898 { ISD::ABS, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2899 { ISD::BITREVERSE, MVT::v8i64, 3 }, in getTypeBasedIntrinsicInstrCost()
2900 { ISD::BITREVERSE, MVT::v16i32, 3 }, in getTypeBasedIntrinsicInstrCost()
2901 { ISD::BITREVERSE, MVT::v32i16, 3 }, in getTypeBasedIntrinsicInstrCost()
2902 { ISD::BITREVERSE, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2903 { ISD::BSWAP, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2904 { ISD::BSWAP, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2905 { ISD::BSWAP, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2906 { ISD::CTLZ, MVT::v8i64, 23 }, in getTypeBasedIntrinsicInstrCost()
2907 { ISD::CTLZ, MVT::v16i32, 22 }, in getTypeBasedIntrinsicInstrCost()
2908 { ISD::CTLZ, MVT::v32i16, 18 }, in getTypeBasedIntrinsicInstrCost()
2909 { ISD::CTLZ, MVT::v64i8, 17 }, in getTypeBasedIntrinsicInstrCost()
2910 { ISD::CTPOP, MVT::v8i64, 7 }, in getTypeBasedIntrinsicInstrCost()
2911 { ISD::CTPOP, MVT::v16i32, 11 }, in getTypeBasedIntrinsicInstrCost()
2912 { ISD::CTPOP, MVT::v32i16, 9 }, in getTypeBasedIntrinsicInstrCost()
2913 { ISD::CTPOP, MVT::v64i8, 6 }, in getTypeBasedIntrinsicInstrCost()
2914 { ISD::CTTZ, MVT::v8i64, 10 }, in getTypeBasedIntrinsicInstrCost()
2915 { ISD::CTTZ, MVT::v16i32, 14 }, in getTypeBasedIntrinsicInstrCost()
2916 { ISD::CTTZ, MVT::v32i16, 12 }, in getTypeBasedIntrinsicInstrCost()
2917 { ISD::CTTZ, MVT::v64i8, 9 }, in getTypeBasedIntrinsicInstrCost()
2918 { ISD::SADDSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2919 { ISD::SADDSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2920 { ISD::SMAX, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2921 { ISD::SMAX, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2922 { ISD::SMIN, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2923 { ISD::SMIN, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2924 { ISD::SSUBSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2925 { ISD::SSUBSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2926 { ISD::UADDSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2927 { ISD::UADDSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2928 { ISD::UMAX, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2929 { ISD::UMAX, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2930 { ISD::UMIN, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2931 { ISD::UMIN, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2932 { ISD::USUBSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2933 { ISD::USUBSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2936 { ISD::ABS, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2937 { ISD::ABS, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2938 { ISD::ABS, MVT::v32i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2939 { ISD::ABS, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2940 { ISD::ABS, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2941 { ISD::ABS, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2942 { ISD::BITREVERSE, MVT::v8i64, 36 }, in getTypeBasedIntrinsicInstrCost()
2943 { ISD::BITREVERSE, MVT::v16i32, 24 }, in getTypeBasedIntrinsicInstrCost()
2944 { ISD::BITREVERSE, MVT::v32i16, 10 }, in getTypeBasedIntrinsicInstrCost()
2945 { ISD::BITREVERSE, MVT::v64i8, 10 }, in getTypeBasedIntrinsicInstrCost()
2946 { ISD::BSWAP, MVT::v8i64, 4 }, in getTypeBasedIntrinsicInstrCost()
2947 { ISD::BSWAP, MVT::v16i32, 4 }, in getTypeBasedIntrinsicInstrCost()
2948 { ISD::BSWAP, MVT::v32i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2949 { ISD::CTLZ, MVT::v8i64, 29 }, in getTypeBasedIntrinsicInstrCost()
2950 { ISD::CTLZ, MVT::v16i32, 35 }, in getTypeBasedIntrinsicInstrCost()
2951 { ISD::CTLZ, MVT::v32i16, 28 }, in getTypeBasedIntrinsicInstrCost()
2952 { ISD::CTLZ, MVT::v64i8, 18 }, in getTypeBasedIntrinsicInstrCost()
2953 { ISD::CTPOP, MVT::v8i64, 16 }, in getTypeBasedIntrinsicInstrCost()
2954 { ISD::CTPOP, MVT::v16i32, 24 }, in getTypeBasedIntrinsicInstrCost()
2955 { ISD::CTPOP, MVT::v32i16, 18 }, in getTypeBasedIntrinsicInstrCost()
2956 { ISD::CTPOP, MVT::v64i8, 12 }, in getTypeBasedIntrinsicInstrCost()
2957 { ISD::CTTZ, MVT::v8i64, 20 }, in getTypeBasedIntrinsicInstrCost()
2958 { ISD::CTTZ, MVT::v16i32, 28 }, in getTypeBasedIntrinsicInstrCost()
2959 { ISD::CTTZ, MVT::v32i16, 24 }, in getTypeBasedIntrinsicInstrCost()
2960 { ISD::CTTZ, MVT::v64i8, 18 }, in getTypeBasedIntrinsicInstrCost()
2961 { ISD::SMAX, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2962 { ISD::SMAX, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2963 { ISD::SMAX, MVT::v32i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2964 { ISD::SMAX, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2965 { ISD::SMAX, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2966 { ISD::SMAX, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2967 { ISD::SMIN, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2968 { ISD::SMIN, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2969 { ISD::SMIN, MVT::v32i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2970 { ISD::SMIN, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2971 { ISD::SMIN, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2972 { ISD::SMIN, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2973 { ISD::UMAX, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2974 { ISD::UMAX, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2975 { ISD::UMAX, MVT::v32i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2976 { ISD::UMAX, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2977 { ISD::UMAX, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2978 { ISD::UMAX, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2979 { ISD::UMIN, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2980 { ISD::UMIN, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2981 { ISD::UMIN, MVT::v32i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2982 { ISD::UMIN, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2983 { ISD::UMIN, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2984 { ISD::UMIN, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2985 { ISD::USUBSAT, MVT::v16i32, 2 }, // pmaxud + psubd in getTypeBasedIntrinsicInstrCost()
2986 { ISD::USUBSAT, MVT::v2i64, 2 }, // pmaxuq + psubq in getTypeBasedIntrinsicInstrCost()
2987 { ISD::USUBSAT, MVT::v4i64, 2 }, // pmaxuq + psubq in getTypeBasedIntrinsicInstrCost()
2988 { ISD::USUBSAT, MVT::v8i64, 2 }, // pmaxuq + psubq in getTypeBasedIntrinsicInstrCost()
2989 { ISD::UADDSAT, MVT::v16i32, 3 }, // not + pminud + paddd in getTypeBasedIntrinsicInstrCost()
2990 { ISD::UADDSAT, MVT::v2i64, 3 }, // not + pminuq + paddq in getTypeBasedIntrinsicInstrCost()
2991 { ISD::UADDSAT, MVT::v4i64, 3 }, // not + pminuq + paddq in getTypeBasedIntrinsicInstrCost()
2992 { ISD::UADDSAT, MVT::v8i64, 3 }, // not + pminuq + paddq in getTypeBasedIntrinsicInstrCost()
2993 { ISD::SADDSAT, MVT::v32i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2994 { ISD::SADDSAT, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2995 { ISD::SSUBSAT, MVT::v32i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2996 { ISD::SSUBSAT, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2997 { ISD::UADDSAT, MVT::v32i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2998 { ISD::UADDSAT, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2999 { ISD::USUBSAT, MVT::v32i16, 2 }, in getTypeBasedIntrinsicInstrCost()
3000 { ISD::USUBSAT, MVT::v64i8, 2 }, in getTypeBasedIntrinsicInstrCost()
3001 { ISD::FMAXNUM, MVT::f32, 2 }, in getTypeBasedIntrinsicInstrCost()
3002 { ISD::FMAXNUM, MVT::v4f32, 2 }, in getTypeBasedIntrinsicInstrCost()
3003 { ISD::FMAXNUM, MVT::v8f32, 2 }, in getTypeBasedIntrinsicInstrCost()
3004 { ISD::FMAXNUM, MVT::v16f32, 2 }, in getTypeBasedIntrinsicInstrCost()
3005 { ISD::FMAXNUM, MVT::f64, 2 }, in getTypeBasedIntrinsicInstrCost()
3006 { ISD::FMAXNUM, MVT::v2f64, 2 }, in getTypeBasedIntrinsicInstrCost()
3007 { ISD::FMAXNUM, MVT::v4f64, 2 }, in getTypeBasedIntrinsicInstrCost()
3008 { ISD::FMAXNUM, MVT::v8f64, 2 }, in getTypeBasedIntrinsicInstrCost()
3011 { ISD::BITREVERSE, MVT::v4i64, 4 }, in getTypeBasedIntrinsicInstrCost()
3012 { ISD::BITREVERSE, MVT::v8i32, 4 }, in getTypeBasedIntrinsicInstrCost()
3013 { ISD::BITREVERSE, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
3014 { ISD::BITREVERSE, MVT::v32i8, 4 }, in getTypeBasedIntrinsicInstrCost()
3015 { ISD::BITREVERSE, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
3016 { ISD::BITREVERSE, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3017 { ISD::BITREVERSE, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3018 { ISD::BITREVERSE, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3019 { ISD::BITREVERSE, MVT::i64, 3 }, in getTypeBasedIntrinsicInstrCost()
3020 { ISD::BITREVERSE, MVT::i32, 3 }, in getTypeBasedIntrinsicInstrCost()
3021 { ISD::BITREVERSE, MVT::i16, 3 }, in getTypeBasedIntrinsicInstrCost()
3022 { ISD::BITREVERSE, MVT::i8, 3 } in getTypeBasedIntrinsicInstrCost()
3025 { ISD::ABS, MVT::v4i64, 2 }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getTypeBasedIntrinsicInstrCost()
3026 { ISD::ABS, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3027 { ISD::ABS, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3028 { ISD::ABS, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3029 { ISD::BITREVERSE, MVT::v2i64, 3 }, in getTypeBasedIntrinsicInstrCost()
3030 { ISD::BITREVERSE, MVT::v4i64, 3 }, in getTypeBasedIntrinsicInstrCost()
3031 { ISD::BITREVERSE, MVT::v4i32, 3 }, in getTypeBasedIntrinsicInstrCost()
3032 { ISD::BITREVERSE, MVT::v8i32, 3 }, in getTypeBasedIntrinsicInstrCost()
3033 { ISD::BITREVERSE, MVT::v8i16, 3 }, in getTypeBasedIntrinsicInstrCost()
3034 { ISD::BITREVERSE, MVT::v16i16, 3 }, in getTypeBasedIntrinsicInstrCost()
3035 { ISD::BITREVERSE, MVT::v16i8, 3 }, in getTypeBasedIntrinsicInstrCost()
3036 { ISD::BITREVERSE, MVT::v32i8, 3 }, in getTypeBasedIntrinsicInstrCost()
3037 { ISD::BSWAP, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
3038 { ISD::BSWAP, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3039 { ISD::BSWAP, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3040 { ISD::CTLZ, MVT::v2i64, 7 }, in getTypeBasedIntrinsicInstrCost()
3041 { ISD::CTLZ, MVT::v4i64, 7 }, in getTypeBasedIntrinsicInstrCost()
3042 { ISD::CTLZ, MVT::v4i32, 5 }, in getTypeBasedIntrinsicInstrCost()
3043 { ISD::CTLZ, MVT::v8i32, 5 }, in getTypeBasedIntrinsicInstrCost()
3044 { ISD::CTLZ, MVT::v8i16, 4 }, in getTypeBasedIntrinsicInstrCost()
3045 { ISD::CTLZ, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
3046 { ISD::CTLZ, MVT::v16i8, 3 }, in getTypeBasedIntrinsicInstrCost()
3047 { ISD::CTLZ, MVT::v32i8, 3 }, in getTypeBasedIntrinsicInstrCost()
3048 { ISD::CTPOP, MVT::v2i64, 3 }, in getTypeBasedIntrinsicInstrCost()
3049 { ISD::CTPOP, MVT::v4i64, 3 }, in getTypeBasedIntrinsicInstrCost()
3050 { ISD::CTPOP, MVT::v4i32, 7 }, in getTypeBasedIntrinsicInstrCost()
3051 { ISD::CTPOP, MVT::v8i32, 7 }, in getTypeBasedIntrinsicInstrCost()
3052 { ISD::CTPOP, MVT::v8i16, 3 }, in getTypeBasedIntrinsicInstrCost()
3053 { ISD::CTPOP, MVT::v16i16, 3 }, in getTypeBasedIntrinsicInstrCost()
3054 { ISD::CTPOP, MVT::v16i8, 2 }, in getTypeBasedIntrinsicInstrCost()
3055 { ISD::CTPOP, MVT::v32i8, 2 }, in getTypeBasedIntrinsicInstrCost()
3056 { ISD::CTTZ, MVT::v2i64, 4 }, in getTypeBasedIntrinsicInstrCost()
3057 { ISD::CTTZ, MVT::v4i64, 4 }, in getTypeBasedIntrinsicInstrCost()
3058 { ISD::CTTZ, MVT::v4i32, 7 }, in getTypeBasedIntrinsicInstrCost()
3059 { ISD::CTTZ, MVT::v8i32, 7 }, in getTypeBasedIntrinsicInstrCost()
3060 { ISD::CTTZ, MVT::v8i16, 4 }, in getTypeBasedIntrinsicInstrCost()
3061 { ISD::CTTZ, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
3062 { ISD::CTTZ, MVT::v16i8, 3 }, in getTypeBasedIntrinsicInstrCost()
3063 { ISD::CTTZ, MVT::v32i8, 3 }, in getTypeBasedIntrinsicInstrCost()
3064 { ISD::SADDSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3065 { ISD::SADDSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3066 { ISD::SMAX, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3067 { ISD::SMAX, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3068 { ISD::SMAX, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3069 { ISD::SMIN, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3070 { ISD::SMIN, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3071 { ISD::SMIN, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3072 { ISD::SSUBSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3073 { ISD::SSUBSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3074 { ISD::UADDSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3075 { ISD::UADDSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3076 { ISD::UADDSAT, MVT::v8i32, 3 }, // not + pminud + paddd in getTypeBasedIntrinsicInstrCost()
3077 { ISD::UMAX, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3078 { ISD::UMAX, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3079 { ISD::UMAX, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3080 { ISD::UMIN, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3081 { ISD::UMIN, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3082 { ISD::UMIN, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3083 { ISD::USUBSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3084 { ISD::USUBSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3085 { ISD::USUBSAT, MVT::v8i32, 2 }, // pmaxud + psubd in getTypeBasedIntrinsicInstrCost()
3086 { ISD::FMAXNUM, MVT::v8f32, 3 }, // MAXPS + CMPUNORDPS + BLENDVPS in getTypeBasedIntrinsicInstrCost()
3087 { ISD::FMAXNUM, MVT::v4f64, 3 }, // MAXPD + CMPUNORDPD + BLENDVPD in getTypeBasedIntrinsicInstrCost()
3088 { ISD::FSQRT, MVT::f32, 7 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3089 { ISD::FSQRT, MVT::v4f32, 7 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3090 { ISD::FSQRT, MVT::v8f32, 14 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3091 { ISD::FSQRT, MVT::f64, 14 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3092 { ISD::FSQRT, MVT::v2f64, 14 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3093 { ISD::FSQRT, MVT::v4f64, 28 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3096 { ISD::ABS, MVT::v4i64, 5 }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getTypeBasedIntrinsicInstrCost()
3097 { ISD::ABS, MVT::v8i32, 3 }, in getTypeBasedIntrinsicInstrCost()
3098 { ISD::ABS, MVT::v16i16, 3 }, in getTypeBasedIntrinsicInstrCost()
3099 { ISD::ABS, MVT::v32i8, 3 }, in getTypeBasedIntrinsicInstrCost()
3100 { ISD::BITREVERSE, MVT::v4i64, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3101 { ISD::BITREVERSE, MVT::v8i32, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3102 { ISD::BITREVERSE, MVT::v16i16, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3103 { ISD::BITREVERSE, MVT::v32i8, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3104 { ISD::BSWAP, MVT::v4i64, 4 }, in getTypeBasedIntrinsicInstrCost()
3105 { ISD::BSWAP, MVT::v8i32, 4 }, in getTypeBasedIntrinsicInstrCost()
3106 { ISD::BSWAP, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
3107 { ISD::CTLZ, MVT::v4i64, 48 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3108 { ISD::CTLZ, MVT::v8i32, 38 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3109 { ISD::CTLZ, MVT::v16i16, 30 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3110 { ISD::CTLZ, MVT::v32i8, 20 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3111 { ISD::CTPOP, MVT::v4i64, 16 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3112 { ISD::CTPOP, MVT::v8i32, 24 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3113 { ISD::CTPOP, MVT::v16i16, 20 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3114 { ISD::CTPOP, MVT::v32i8, 14 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3115 { ISD::CTTZ, MVT::v4i64, 22 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3116 { ISD::CTTZ, MVT::v8i32, 30 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3117 { ISD::CTTZ, MVT::v16i16, 26 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3118 { ISD::CTTZ, MVT::v32i8, 20 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3119 { ISD::SADDSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3120 { ISD::SADDSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3121 { ISD::SMAX, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3122 { ISD::SMAX, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3123 { ISD::SMAX, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3124 { ISD::SMIN, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3125 { ISD::SMIN, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3126 { ISD::SMIN, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3127 { ISD::SSUBSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3128 { ISD::SSUBSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3129 { ISD::UADDSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3130 { ISD::UADDSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3131 { ISD::UADDSAT, MVT::v8i32, 8 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3132 { ISD::UMAX, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3133 { ISD::UMAX, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3134 { ISD::UMAX, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3135 { ISD::UMIN, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3136 { ISD::UMIN, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3137 { ISD::UMIN, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3138 { ISD::USUBSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3139 { ISD::USUBSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3140 { ISD::USUBSAT, MVT::v8i32, 6 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
3141 { ISD::FMAXNUM, MVT::f32, 3 }, // MAXSS + CMPUNORDSS + BLENDVPS in getTypeBasedIntrinsicInstrCost()
3142 { ISD::FMAXNUM, MVT::v4f32, 3 }, // MAXPS + CMPUNORDPS + BLENDVPS in getTypeBasedIntrinsicInstrCost()
3143 { ISD::FMAXNUM, MVT::v8f32, 5 }, // MAXPS + CMPUNORDPS + BLENDVPS + ? in getTypeBasedIntrinsicInstrCost()
3144 { ISD::FMAXNUM, MVT::f64, 3 }, // MAXSD + CMPUNORDSD + BLENDVPD in getTypeBasedIntrinsicInstrCost()
3145 { ISD::FMAXNUM, MVT::v2f64, 3 }, // MAXPD + CMPUNORDPD + BLENDVPD in getTypeBasedIntrinsicInstrCost()
3146 { ISD::FMAXNUM, MVT::v4f64, 5 }, // MAXPD + CMPUNORDPD + BLENDVPD + ? in getTypeBasedIntrinsicInstrCost()
3147 { ISD::FSQRT, MVT::f32, 14 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3148 { ISD::FSQRT, MVT::v4f32, 14 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3149 { ISD::FSQRT, MVT::v8f32, 28 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3150 { ISD::FSQRT, MVT::f64, 21 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3151 { ISD::FSQRT, MVT::v2f64, 21 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3152 { ISD::FSQRT, MVT::v4f64, 43 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3155 { ISD::FSQRT, MVT::f32, 19 }, // sqrtss in getTypeBasedIntrinsicInstrCost()
3156 { ISD::FSQRT, MVT::v4f32, 37 }, // sqrtps in getTypeBasedIntrinsicInstrCost()
3157 { ISD::FSQRT, MVT::f64, 34 }, // sqrtsd in getTypeBasedIntrinsicInstrCost()
3158 { ISD::FSQRT, MVT::v2f64, 67 }, // sqrtpd in getTypeBasedIntrinsicInstrCost()
3161 { ISD::FSQRT, MVT::f32, 20 }, // sqrtss in getTypeBasedIntrinsicInstrCost()
3162 { ISD::FSQRT, MVT::v4f32, 40 }, // sqrtps in getTypeBasedIntrinsicInstrCost()
3163 { ISD::FSQRT, MVT::f64, 35 }, // sqrtsd in getTypeBasedIntrinsicInstrCost()
3164 { ISD::FSQRT, MVT::v2f64, 70 }, // sqrtpd in getTypeBasedIntrinsicInstrCost()
3167 { ISD::USUBSAT, MVT::v4i32, 2 }, // pmaxud + psubd in getTypeBasedIntrinsicInstrCost()
3168 { ISD::UADDSAT, MVT::v4i32, 3 }, // not + pminud + paddd in getTypeBasedIntrinsicInstrCost()
3169 { ISD::FSQRT, MVT::f32, 18 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3170 { ISD::FSQRT, MVT::v4f32, 18 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3173 { ISD::ABS, MVT::v2i64, 2 }, // BLENDVPD(X,PSUBQ(0,X),X) in getTypeBasedIntrinsicInstrCost()
3174 { ISD::SMAX, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3175 { ISD::SMAX, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3176 { ISD::SMIN, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3177 { ISD::SMIN, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3178 { ISD::UMAX, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3179 { ISD::UMAX, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3180 { ISD::UMIN, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3181 { ISD::UMIN, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3184 { ISD::ABS, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3185 { ISD::ABS, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3186 { ISD::ABS, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3187 { ISD::BITREVERSE, MVT::v2i64, 5 }, in getTypeBasedIntrinsicInstrCost()
3188 { ISD::BITREVERSE, MVT::v4i32, 5 }, in getTypeBasedIntrinsicInstrCost()
3189 { ISD::BITREVERSE, MVT::v8i16, 5 }, in getTypeBasedIntrinsicInstrCost()
3190 { ISD::BITREVERSE, MVT::v16i8, 5 }, in getTypeBasedIntrinsicInstrCost()
3191 { ISD::BSWAP, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
3192 { ISD::BSWAP, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3193 { ISD::BSWAP, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3194 { ISD::CTLZ, MVT::v2i64, 23 }, in getTypeBasedIntrinsicInstrCost()
3195 { ISD::CTLZ, MVT::v4i32, 18 }, in getTypeBasedIntrinsicInstrCost()
3196 { ISD::CTLZ, MVT::v8i16, 14 }, in getTypeBasedIntrinsicInstrCost()
3197 { ISD::CTLZ, MVT::v16i8, 9 }, in getTypeBasedIntrinsicInstrCost()
3198 { ISD::CTPOP, MVT::v2i64, 7 }, in getTypeBasedIntrinsicInstrCost()
3199 { ISD::CTPOP, MVT::v4i32, 11 }, in getTypeBasedIntrinsicInstrCost()
3200 { ISD::CTPOP, MVT::v8i16, 9 }, in getTypeBasedIntrinsicInstrCost()
3201 { ISD::CTPOP, MVT::v16i8, 6 }, in getTypeBasedIntrinsicInstrCost()
3202 { ISD::CTTZ, MVT::v2i64, 10 }, in getTypeBasedIntrinsicInstrCost()
3203 { ISD::CTTZ, MVT::v4i32, 14 }, in getTypeBasedIntrinsicInstrCost()
3204 { ISD::CTTZ, MVT::v8i16, 12 }, in getTypeBasedIntrinsicInstrCost()
3205 { ISD::CTTZ, MVT::v16i8, 9 } in getTypeBasedIntrinsicInstrCost()
3208 { ISD::ABS, MVT::v2i64, 4 }, in getTypeBasedIntrinsicInstrCost()
3209 { ISD::ABS, MVT::v4i32, 3 }, in getTypeBasedIntrinsicInstrCost()
3210 { ISD::ABS, MVT::v8i16, 2 }, in getTypeBasedIntrinsicInstrCost()
3211 { ISD::ABS, MVT::v16i8, 2 }, in getTypeBasedIntrinsicInstrCost()
3212 { ISD::BITREVERSE, MVT::v2i64, 29 }, in getTypeBasedIntrinsicInstrCost()
3213 { ISD::BITREVERSE, MVT::v4i32, 27 }, in getTypeBasedIntrinsicInstrCost()
3214 { ISD::BITREVERSE, MVT::v8i16, 27 }, in getTypeBasedIntrinsicInstrCost()
3215 { ISD::BITREVERSE, MVT::v16i8, 20 }, in getTypeBasedIntrinsicInstrCost()
3216 { ISD::BSWAP, MVT::v2i64, 7 }, in getTypeBasedIntrinsicInstrCost()
3217 { ISD::BSWAP, MVT::v4i32, 7 }, in getTypeBasedIntrinsicInstrCost()
3218 { ISD::BSWAP, MVT::v8i16, 7 }, in getTypeBasedIntrinsicInstrCost()
3219 { ISD::CTLZ, MVT::v2i64, 25 }, in getTypeBasedIntrinsicInstrCost()
3220 { ISD::CTLZ, MVT::v4i32, 26 }, in getTypeBasedIntrinsicInstrCost()
3221 { ISD::CTLZ, MVT::v8i16, 20 }, in getTypeBasedIntrinsicInstrCost()
3222 { ISD::CTLZ, MVT::v16i8, 17 }, in getTypeBasedIntrinsicInstrCost()
3223 { ISD::CTPOP, MVT::v2i64, 12 }, in getTypeBasedIntrinsicInstrCost()
3224 { ISD::CTPOP, MVT::v4i32, 15 }, in getTypeBasedIntrinsicInstrCost()
3225 { ISD::CTPOP, MVT::v8i16, 13 }, in getTypeBasedIntrinsicInstrCost()
3226 { ISD::CTPOP, MVT::v16i8, 10 }, in getTypeBasedIntrinsicInstrCost()
3227 { ISD::CTTZ, MVT::v2i64, 14 }, in getTypeBasedIntrinsicInstrCost()
3228 { ISD::CTTZ, MVT::v4i32, 18 }, in getTypeBasedIntrinsicInstrCost()
3229 { ISD::CTTZ, MVT::v8i16, 16 }, in getTypeBasedIntrinsicInstrCost()
3230 { ISD::CTTZ, MVT::v16i8, 13 }, in getTypeBasedIntrinsicInstrCost()
3231 { ISD::SADDSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3232 { ISD::SADDSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3233 { ISD::SMAX, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3234 { ISD::SMIN, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3235 { ISD::SSUBSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3236 { ISD::SSUBSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3237 { ISD::UADDSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3238 { ISD::UADDSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3239 { ISD::UMAX, MVT::v8i16, 2 }, in getTypeBasedIntrinsicInstrCost()
3240 { ISD::UMAX, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3241 { ISD::UMIN, MVT::v8i16, 2 }, in getTypeBasedIntrinsicInstrCost()
3242 { ISD::UMIN, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3243 { ISD::USUBSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3244 { ISD::USUBSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3245 { ISD::FMAXNUM, MVT::f64, 4 }, in getTypeBasedIntrinsicInstrCost()
3246 { ISD::FMAXNUM, MVT::v2f64, 4 }, in getTypeBasedIntrinsicInstrCost()
3247 { ISD::FSQRT, MVT::f64, 32 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3248 { ISD::FSQRT, MVT::v2f64, 32 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3251 { ISD::FMAXNUM, MVT::f32, 4 }, in getTypeBasedIntrinsicInstrCost()
3252 { ISD::FMAXNUM, MVT::v4f32, 4 }, in getTypeBasedIntrinsicInstrCost()
3253 { ISD::FSQRT, MVT::f32, 28 }, // Pentium III from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3254 { ISD::FSQRT, MVT::v4f32, 56 }, // Pentium III from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
3257 { ISD::CTTZ, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
3260 { ISD::CTTZ, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3261 { ISD::CTTZ, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3262 { ISD::CTTZ, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3265 { ISD::CTLZ, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
3268 { ISD::CTLZ, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3269 { ISD::CTLZ, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3270 { ISD::CTLZ, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3273 { ISD::CTPOP, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
3276 { ISD::CTPOP, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3277 { ISD::CTPOP, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3278 { ISD::CTPOP, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3281 { ISD::ABS, MVT::i64, 2 }, // SUB+CMOV in getTypeBasedIntrinsicInstrCost()
3282 { ISD::BITREVERSE, MVT::i64, 14 }, in getTypeBasedIntrinsicInstrCost()
3283 { ISD::BSWAP, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
3284 { ISD::CTLZ, MVT::i64, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
3285 { ISD::CTTZ, MVT::i64, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
3286 { ISD::CTPOP, MVT::i64, 10 }, in getTypeBasedIntrinsicInstrCost()
3287 { ISD::SADDO, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
3288 { ISD::UADDO, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
3289 { ISD::UMULO, MVT::i64, 2 }, // mulq + seto in getTypeBasedIntrinsicInstrCost()
3292 { ISD::ABS, MVT::i32, 2 }, // SUB+CMOV in getTypeBasedIntrinsicInstrCost()
3293 { ISD::ABS, MVT::i16, 2 }, // SUB+CMOV in getTypeBasedIntrinsicInstrCost()
3294 { ISD::BITREVERSE, MVT::i32, 14 }, in getTypeBasedIntrinsicInstrCost()
3295 { ISD::BITREVERSE, MVT::i16, 14 }, in getTypeBasedIntrinsicInstrCost()
3296 { ISD::BITREVERSE, MVT::i8, 11 }, in getTypeBasedIntrinsicInstrCost()
3297 { ISD::BSWAP, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3298 { ISD::BSWAP, MVT::i16, 1 }, // ROL in getTypeBasedIntrinsicInstrCost()
3299 { ISD::CTLZ, MVT::i32, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
3300 { ISD::CTLZ, MVT::i16, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
3301 { ISD::CTLZ, MVT::i8, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
3302 { ISD::CTTZ, MVT::i32, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
3303 { ISD::CTTZ, MVT::i16, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
3304 { ISD::CTTZ, MVT::i8, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
3305 { ISD::CTPOP, MVT::i32, 8 }, in getTypeBasedIntrinsicInstrCost()
3306 { ISD::CTPOP, MVT::i16, 9 }, in getTypeBasedIntrinsicInstrCost()
3307 { ISD::CTPOP, MVT::i8, 7 }, in getTypeBasedIntrinsicInstrCost()
3308 { ISD::SADDO, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3309 { ISD::SADDO, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3310 { ISD::SADDO, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3311 { ISD::UADDO, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
3312 { ISD::UADDO, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
3313 { ISD::UADDO, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
3314 { ISD::UMULO, MVT::i32, 2 }, // mul + seto in getTypeBasedIntrinsicInstrCost()
3315 { ISD::UMULO, MVT::i16, 2 }, in getTypeBasedIntrinsicInstrCost()
3316 { ISD::UMULO, MVT::i8, 2 }, in getTypeBasedIntrinsicInstrCost()
3398 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, OpTy); in getTypeBasedIntrinsicInstrCost()
3399 MVT MTy = LT.second; in getTypeBasedIntrinsicInstrCost()
3407 unsigned Cost = MTy.getVectorElementType() == MVT::i8 ? 1 : 2; in getTypeBasedIntrinsicInstrCost()
3547 { ISD::ROTL, MVT::v32i16, 2 }, in getIntrinsicInstrCost()
3548 { ISD::ROTL, MVT::v16i16, 2 }, in getIntrinsicInstrCost()
3549 { ISD::ROTL, MVT::v8i16, 2 }, in getIntrinsicInstrCost()
3550 { ISD::ROTL, MVT::v64i8, 5 }, in getIntrinsicInstrCost()
3551 { ISD::ROTL, MVT::v32i8, 5 }, in getIntrinsicInstrCost()
3552 { ISD::ROTL, MVT::v16i8, 5 }, in getIntrinsicInstrCost()
3553 { ISD::ROTR, MVT::v32i16, 2 }, in getIntrinsicInstrCost()
3554 { ISD::ROTR, MVT::v16i16, 2 }, in getIntrinsicInstrCost()
3555 { ISD::ROTR, MVT::v8i16, 2 }, in getIntrinsicInstrCost()
3556 { ISD::ROTR, MVT::v64i8, 5 }, in getIntrinsicInstrCost()
3557 { ISD::ROTR, MVT::v32i8, 5 }, in getIntrinsicInstrCost()
3558 { ISD::ROTR, MVT::v16i8, 5 } in getIntrinsicInstrCost()
3561 { ISD::ROTL, MVT::v8i64, 1 }, in getIntrinsicInstrCost()
3562 { ISD::ROTL, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
3563 { ISD::ROTL, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
3564 { ISD::ROTL, MVT::v16i32, 1 }, in getIntrinsicInstrCost()
3565 { ISD::ROTL, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
3566 { ISD::ROTL, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
3567 { ISD::ROTR, MVT::v8i64, 1 }, in getIntrinsicInstrCost()
3568 { ISD::ROTR, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
3569 { ISD::ROTR, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
3570 { ISD::ROTR, MVT::v16i32, 1 }, in getIntrinsicInstrCost()
3571 { ISD::ROTR, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
3572 { ISD::ROTR, MVT::v4i32, 1 } in getIntrinsicInstrCost()
3576 { ISD::ROTL, MVT::v4i64, 4 }, in getIntrinsicInstrCost()
3577 { ISD::ROTL, MVT::v8i32, 4 }, in getIntrinsicInstrCost()
3578 { ISD::ROTL, MVT::v16i16, 4 }, in getIntrinsicInstrCost()
3579 { ISD::ROTL, MVT::v32i8, 4 }, in getIntrinsicInstrCost()
3580 { ISD::ROTL, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
3581 { ISD::ROTL, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
3582 { ISD::ROTL, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
3583 { ISD::ROTL, MVT::v16i8, 1 }, in getIntrinsicInstrCost()
3584 { ISD::ROTR, MVT::v4i64, 6 }, in getIntrinsicInstrCost()
3585 { ISD::ROTR, MVT::v8i32, 6 }, in getIntrinsicInstrCost()
3586 { ISD::ROTR, MVT::v16i16, 6 }, in getIntrinsicInstrCost()
3587 { ISD::ROTR, MVT::v32i8, 6 }, in getIntrinsicInstrCost()
3588 { ISD::ROTR, MVT::v2i64, 2 }, in getIntrinsicInstrCost()
3589 { ISD::ROTR, MVT::v4i32, 2 }, in getIntrinsicInstrCost()
3590 { ISD::ROTR, MVT::v8i16, 2 }, in getIntrinsicInstrCost()
3591 { ISD::ROTR, MVT::v16i8, 2 } in getIntrinsicInstrCost()
3594 { ISD::ROTL, MVT::i64, 1 }, in getIntrinsicInstrCost()
3595 { ISD::ROTR, MVT::i64, 1 }, in getIntrinsicInstrCost()
3596 { ISD::FSHL, MVT::i64, 4 } in getIntrinsicInstrCost()
3599 { ISD::ROTL, MVT::i32, 1 }, in getIntrinsicInstrCost()
3600 { ISD::ROTL, MVT::i16, 1 }, in getIntrinsicInstrCost()
3601 { ISD::ROTL, MVT::i8, 1 }, in getIntrinsicInstrCost()
3602 { ISD::ROTR, MVT::i32, 1 }, in getIntrinsicInstrCost()
3603 { ISD::ROTR, MVT::i16, 1 }, in getIntrinsicInstrCost()
3604 { ISD::ROTR, MVT::i8, 1 }, in getIntrinsicInstrCost()
3605 { ISD::FSHL, MVT::i32, 4 }, in getIntrinsicInstrCost()
3606 { ISD::FSHL, MVT::i16, 4 }, in getIntrinsicInstrCost()
3607 { ISD::FSHL, MVT::i8, 4 } in getIntrinsicInstrCost()
3632 std::pair<InstructionCost, MVT> LT = in getIntrinsicInstrCost()
3634 MVT MTy = LT.second; in getIntrinsicInstrCost()
3663 { ISD::EXTRACT_VECTOR_ELT, MVT::i8, 4 }, in getVectorInstrCost()
3664 { ISD::EXTRACT_VECTOR_ELT, MVT::i16, 4 }, in getVectorInstrCost()
3665 { ISD::EXTRACT_VECTOR_ELT, MVT::i32, 4 }, in getVectorInstrCost()
3666 { ISD::EXTRACT_VECTOR_ELT, MVT::i64, 7 } in getVectorInstrCost()
3712 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Val); in getVectorInstrCost()
3750 MVT MScalarTy = LT.second.getScalarType(); in getVectorInstrCost()
3756 if ((MScalarTy == MVT::i16 && ST->hasSSE2()) || in getVectorInstrCost()
3761 if (MScalarTy == MVT::f32 && ST->hasSSE41() && in getVectorInstrCost()
3800 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty); in getScalarizationOverhead()
3801 MVT MScalarTy = LT.second.getScalarType(); in getScalarizationOverhead()
3809 if ((MScalarTy == MVT::i16 && ST->hasSSE2()) || in getScalarizationOverhead()
3811 (MScalarTy == MVT::f32 && ST->hasSSE41())) { in getScalarizationOverhead()
3851 if (MScalarTy == MVT::f32) in getScalarizationOverhead()
3990 MVT LegalSrcVecTy = TLI->getTypeLegalizationCost(DL, SrcVecTy).second; in getReplicationShuffleCost()
3991 MVT LegalPromSrcVecTy = TLI->getTypeLegalizationCost(DL, PromSrcVecTy).second; in getReplicationShuffleCost()
3992 MVT LegalPromDstVecTy = TLI->getTypeLegalizationCost(DL, PromDstVecTy).second; in getReplicationShuffleCost()
3993 MVT LegalDstVecTy = TLI->getTypeLegalizationCost(DL, DstVecTy).second; in getReplicationShuffleCost()
4062 if (TLI->getValueType(DL, Src, true) == MVT::Other) in getMemoryOpCost()
4067 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Src); in getMemoryOpCost()
4230 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, SrcVTy); in getMaskedMemoryOpCost()
4293 { ISD::FADD, MVT::v2f64, 3 }, in getArithmeticReductionCost()
4294 { ISD::ADD, MVT::v2i64, 5 }, in getArithmeticReductionCost()
4298 { ISD::FADD, MVT::v2f64, 2 }, in getArithmeticReductionCost()
4299 { ISD::FADD, MVT::v2f32, 2 }, in getArithmeticReductionCost()
4300 { ISD::FADD, MVT::v4f32, 4 }, in getArithmeticReductionCost()
4301 { ISD::ADD, MVT::v2i64, 2 }, // The data reported by the IACA tool is "1.6". in getArithmeticReductionCost()
4302 { ISD::ADD, MVT::v2i32, 2 }, // FIXME: chosen to be less than v4i32 in getArithmeticReductionCost()
4303 { ISD::ADD, MVT::v4i32, 3 }, // The data reported by the IACA tool is "3.3". in getArithmeticReductionCost()
4304 { ISD::ADD, MVT::v2i16, 2 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
4305 { ISD::ADD, MVT::v4i16, 3 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
4306 { ISD::ADD, MVT::v8i16, 4 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
4307 { ISD::ADD, MVT::v2i8, 2 }, in getArithmeticReductionCost()
4308 { ISD::ADD, MVT::v4i8, 2 }, in getArithmeticReductionCost()
4309 { ISD::ADD, MVT::v8i8, 2 }, in getArithmeticReductionCost()
4310 { ISD::ADD, MVT::v16i8, 3 }, in getArithmeticReductionCost()
4314 { ISD::FADD, MVT::v4f64, 3 }, in getArithmeticReductionCost()
4315 { ISD::FADD, MVT::v4f32, 3 }, in getArithmeticReductionCost()
4316 { ISD::FADD, MVT::v8f32, 4 }, in getArithmeticReductionCost()
4317 { ISD::ADD, MVT::v2i64, 1 }, // The data reported by the IACA tool is "1.5". in getArithmeticReductionCost()
4318 { ISD::ADD, MVT::v4i64, 3 }, in getArithmeticReductionCost()
4319 { ISD::ADD, MVT::v8i32, 5 }, in getArithmeticReductionCost()
4320 { ISD::ADD, MVT::v16i16, 5 }, in getArithmeticReductionCost()
4321 { ISD::ADD, MVT::v32i8, 4 }, in getArithmeticReductionCost()
4332 MVT MTy = VT.getSimpleVT(); in getArithmeticReductionCost()
4346 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getArithmeticReductionCost()
4348 MVT MTy = LT.second; in getArithmeticReductionCost()
4353 if (ISD == ISD::MUL && MTy.getScalarType() == MVT::i8) { in getArithmeticReductionCost()
4387 { ISD::AND, MVT::v2i1, 3 }, in getArithmeticReductionCost()
4388 { ISD::AND, MVT::v4i1, 5 }, in getArithmeticReductionCost()
4389 { ISD::AND, MVT::v8i1, 7 }, in getArithmeticReductionCost()
4390 { ISD::AND, MVT::v16i1, 9 }, in getArithmeticReductionCost()
4391 { ISD::AND, MVT::v32i1, 11 }, in getArithmeticReductionCost()
4392 { ISD::AND, MVT::v64i1, 13 }, in getArithmeticReductionCost()
4393 { ISD::OR, MVT::v2i1, 3 }, in getArithmeticReductionCost()
4394 { ISD::OR, MVT::v4i1, 5 }, in getArithmeticReductionCost()
4395 { ISD::OR, MVT::v8i1, 7 }, in getArithmeticReductionCost()
4396 { ISD::OR, MVT::v16i1, 9 }, in getArithmeticReductionCost()
4397 { ISD::OR, MVT::v32i1, 11 }, in getArithmeticReductionCost()
4398 { ISD::OR, MVT::v64i1, 13 }, in getArithmeticReductionCost()
4402 { ISD::AND, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
4403 { ISD::AND, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
4404 { ISD::OR, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
4405 { ISD::OR, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
4409 { ISD::AND, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
4410 { ISD::AND, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
4411 { ISD::AND, MVT::v16i16, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
4412 { ISD::AND, MVT::v32i8, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
4413 { ISD::OR, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
4414 { ISD::OR, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
4415 { ISD::OR, MVT::v16i16, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
4416 { ISD::OR, MVT::v32i8, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
4420 { ISD::AND, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
4421 { ISD::AND, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
4422 { ISD::AND, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
4423 { ISD::AND, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
4424 { ISD::OR, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
4425 { ISD::OR, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
4426 { ISD::OR, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
4427 { ISD::OR, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
4534 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty); in getMinMaxCost()
4536 MVT MTy = LT.second; in getMinMaxCost()
4548 {ISD::FMINNUM, MVT::v4f32, 1}, in getMinMaxCost()
4552 {ISD::FMINNUM, MVT::v2f64, 1}, in getMinMaxCost()
4553 {ISD::SMIN, MVT::v8i16, 1}, in getMinMaxCost()
4554 {ISD::UMIN, MVT::v16i8, 1}, in getMinMaxCost()
4558 {ISD::SMIN, MVT::v4i32, 1}, in getMinMaxCost()
4559 {ISD::UMIN, MVT::v4i32, 1}, in getMinMaxCost()
4560 {ISD::UMIN, MVT::v8i16, 1}, in getMinMaxCost()
4561 {ISD::SMIN, MVT::v16i8, 1}, in getMinMaxCost()
4565 {ISD::UMIN, MVT::v2i64, 3}, // xor+pcmpgtq+blendvpd in getMinMaxCost()
4569 {ISD::FMINNUM, MVT::v8f32, 1}, in getMinMaxCost()
4570 {ISD::FMINNUM, MVT::v4f64, 1}, in getMinMaxCost()
4571 {ISD::SMIN, MVT::v8i32, 3}, in getMinMaxCost()
4572 {ISD::UMIN, MVT::v8i32, 3}, in getMinMaxCost()
4573 {ISD::SMIN, MVT::v16i16, 3}, in getMinMaxCost()
4574 {ISD::UMIN, MVT::v16i16, 3}, in getMinMaxCost()
4575 {ISD::SMIN, MVT::v32i8, 3}, in getMinMaxCost()
4576 {ISD::UMIN, MVT::v32i8, 3}, in getMinMaxCost()
4580 {ISD::SMIN, MVT::v8i32, 1}, in getMinMaxCost()
4581 {ISD::UMIN, MVT::v8i32, 1}, in getMinMaxCost()
4582 {ISD::SMIN, MVT::v16i16, 1}, in getMinMaxCost()
4583 {ISD::UMIN, MVT::v16i16, 1}, in getMinMaxCost()
4584 {ISD::SMIN, MVT::v32i8, 1}, in getMinMaxCost()
4585 {ISD::UMIN, MVT::v32i8, 1}, in getMinMaxCost()
4589 {ISD::FMINNUM, MVT::v16f32, 1}, in getMinMaxCost()
4590 {ISD::FMINNUM, MVT::v8f64, 1}, in getMinMaxCost()
4591 {ISD::SMIN, MVT::v2i64, 1}, in getMinMaxCost()
4592 {ISD::UMIN, MVT::v2i64, 1}, in getMinMaxCost()
4593 {ISD::SMIN, MVT::v4i64, 1}, in getMinMaxCost()
4594 {ISD::UMIN, MVT::v4i64, 1}, in getMinMaxCost()
4595 {ISD::SMIN, MVT::v8i64, 1}, in getMinMaxCost()
4596 {ISD::UMIN, MVT::v8i64, 1}, in getMinMaxCost()
4597 {ISD::SMIN, MVT::v16i32, 1}, in getMinMaxCost()
4598 {ISD::UMIN, MVT::v16i32, 1}, in getMinMaxCost()
4602 {ISD::SMIN, MVT::v32i16, 1}, in getMinMaxCost()
4603 {ISD::UMIN, MVT::v32i16, 1}, in getMinMaxCost()
4604 {ISD::SMIN, MVT::v64i8, 1}, in getMinMaxCost()
4605 {ISD::UMIN, MVT::v64i8, 1}, in getMinMaxCost()
4664 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getMinMaxReductionCost()
4666 MVT MTy = LT.second; in getMinMaxReductionCost()
4681 {ISD::UMIN, MVT::v2i16, 5}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
4682 {ISD::UMIN, MVT::v4i16, 7}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
4683 {ISD::UMIN, MVT::v8i16, 9}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
4687 {ISD::SMIN, MVT::v2i16, 3}, // same as sse2 in getMinMaxReductionCost()
4688 {ISD::SMIN, MVT::v4i16, 5}, // same as sse2 in getMinMaxReductionCost()
4689 {ISD::UMIN, MVT::v2i16, 5}, // same as sse2 in getMinMaxReductionCost()
4690 {ISD::UMIN, MVT::v4i16, 7}, // same as sse2 in getMinMaxReductionCost()
4691 {ISD::SMIN, MVT::v8i16, 4}, // phminposuw+xor in getMinMaxReductionCost()
4692 {ISD::UMIN, MVT::v8i16, 4}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
4693 {ISD::SMIN, MVT::v2i8, 3}, // pminsb in getMinMaxReductionCost()
4694 {ISD::SMIN, MVT::v4i8, 5}, // pminsb in getMinMaxReductionCost()
4695 {ISD::SMIN, MVT::v8i8, 7}, // pminsb in getMinMaxReductionCost()
4696 {ISD::SMIN, MVT::v16i8, 6}, in getMinMaxReductionCost()
4697 {ISD::UMIN, MVT::v2i8, 3}, // same as sse2 in getMinMaxReductionCost()
4698 {ISD::UMIN, MVT::v4i8, 5}, // same as sse2 in getMinMaxReductionCost()
4699 {ISD::UMIN, MVT::v8i8, 7}, // same as sse2 in getMinMaxReductionCost()
4700 {ISD::UMIN, MVT::v16i8, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
4704 {ISD::SMIN, MVT::v16i16, 6}, in getMinMaxReductionCost()
4705 {ISD::UMIN, MVT::v16i16, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
4706 {ISD::SMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
4707 {ISD::UMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
4711 {ISD::SMIN, MVT::v32i16, 8}, in getMinMaxReductionCost()
4712 {ISD::UMIN, MVT::v32i16, 8}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
4713 {ISD::SMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
4714 {ISD::UMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
4722 MVT MTy = VT.getSimpleVT(); in getMinMaxReductionCost()
5091 std::pair<InstructionCost, MVT> IdxsLT = in getGSVectorCost()
5093 std::pair<InstructionCost, MVT> SrcLT = in getGSVectorCost()
5536 MVT LegalVT = getTLI()->getTypeLegalizationCost(DL, VecTy).second; in getInterleavedMemoryOpCostAVX512()
5554 MVT VT = MVT::getVectorVT(MVT::getVT(VecTy->getScalarType()), VF); in getInterleavedMemoryOpCostAVX512()
5592 {3, MVT::v16i8, 12}, //(load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCostAVX512()
5593 {3, MVT::v32i8, 14}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
5594 {3, MVT::v64i8, 22}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
5648 {3, MVT::v16i8, 12}, // interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCostAVX512()
5649 {3, MVT::v32i8, 14}, // interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
5650 {3, MVT::v64i8, 26}, // interleave 3 x 64i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
5652 {4, MVT::v8i8, 10}, // interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCostAVX512()
5653 {4, MVT::v16i8, 11}, // interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCostAVX512()
5654 {4, MVT::v32i8, 14}, // interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCostAVX512()
5655 {4, MVT::v64i8, 24} // interleave 4 x 32i8 into 256i8 (and store) in getInterleavedMemoryOpCostAVX512()
5714 MVT LegalVT = getTLI()->getTypeLegalizationCost(DL, VecTy).second; in getInterleavedMemoryOpCost()
5749 {2, MVT::v2i8, 2}, // (load 4i8 and) deinterleave into 2 x 2i8 in getInterleavedMemoryOpCost()
5750 {2, MVT::v4i8, 2}, // (load 8i8 and) deinterleave into 2 x 4i8 in getInterleavedMemoryOpCost()
5751 {2, MVT::v8i8, 2}, // (load 16i8 and) deinterleave into 2 x 8i8 in getInterleavedMemoryOpCost()
5752 {2, MVT::v16i8, 4}, // (load 32i8 and) deinterleave into 2 x 16i8 in getInterleavedMemoryOpCost()
5753 {2, MVT::v32i8, 6}, // (load 64i8 and) deinterleave into 2 x 32i8 in getInterleavedMemoryOpCost()
5755 {2, MVT::v8i16, 6}, // (load 16i16 and) deinterleave into 2 x 8i16 in getInterleavedMemoryOpCost()
5756 {2, MVT::v16i16, 9}, // (load 32i16 and) deinterleave into 2 x 16i16 in getInterleavedMemoryOpCost()
5757 {2, MVT::v32i16, 18}, // (load 64i16 and) deinterleave into 2 x 32i16 in getInterleavedMemoryOpCost()
5759 {2, MVT::v8i32, 4}, // (load 16i32 and) deinterleave into 2 x 8i32 in getInterleavedMemoryOpCost()
5760 {2, MVT::v16i32, 8}, // (load 32i32 and) deinterleave into 2 x 16i32 in getInterleavedMemoryOpCost()
5761 {2, MVT::v32i32, 16}, // (load 64i32 and) deinterleave into 2 x 32i32 in getInterleavedMemoryOpCost()
5763 {2, MVT::v4i64, 4}, // (load 8i64 and) deinterleave into 2 x 4i64 in getInterleavedMemoryOpCost()
5764 {2, MVT::v8i64, 8}, // (load 16i64 and) deinterleave into 2 x 8i64 in getInterleavedMemoryOpCost()
5765 {2, MVT::v16i64, 16}, // (load 32i64 and) deinterleave into 2 x 16i64 in getInterleavedMemoryOpCost()
5766 {2, MVT::v32i64, 32}, // (load 64i64 and) deinterleave into 2 x 32i64 in getInterleavedMemoryOpCost()
5768 {3, MVT::v2i8, 3}, // (load 6i8 and) deinterleave into 3 x 2i8 in getInterleavedMemoryOpCost()
5769 {3, MVT::v4i8, 3}, // (load 12i8 and) deinterleave into 3 x 4i8 in getInterleavedMemoryOpCost()
5770 {3, MVT::v8i8, 6}, // (load 24i8 and) deinterleave into 3 x 8i8 in getInterleavedMemoryOpCost()
5771 {3, MVT::v16i8, 11}, // (load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCost()
5772 {3, MVT::v32i8, 14}, // (load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCost()
5774 {3, MVT::v2i16, 5}, // (load 6i16 and) deinterleave into 3 x 2i16 in getInterleavedMemoryOpCost()
5775 {3, MVT::v4i16, 7}, // (load 12i16 and) deinterleave into 3 x 4i16 in getInterleavedMemoryOpCost()
5776 {3, MVT::v8i16, 9}, // (load 24i16 and) deinterleave into 3 x 8i16 in getInterleavedMemoryOpCost()
5777 {3, MVT::v16i16, 28}, // (load 48i16 and) deinterleave into 3 x 16i16 in getInterleavedMemoryOpCost()
5778 {3, MVT::v32i16, 56}, // (load 96i16 and) deinterleave into 3 x 32i16 in getInterleavedMemoryOpCost()
5780 {3, MVT::v2i32, 3}, // (load 6i32 and) deinterleave into 3 x 2i32 in getInterleavedMemoryOpCost()
5781 {3, MVT::v4i32, 3}, // (load 12i32 and) deinterleave into 3 x 4i32 in getInterleavedMemoryOpCost()
5782 {3, MVT::v8i32, 7}, // (load 24i32 and) deinterleave into 3 x 8i32 in getInterleavedMemoryOpCost()
5783 {3, MVT::v16i32, 14}, // (load 48i32 and) deinterleave into 3 x 16i32 in getInterleavedMemoryOpCost()
5784 {3, MVT::v32i32, 32}, // (load 96i32 and) deinterleave into 3 x 32i32 in getInterleavedMemoryOpCost()
5786 {3, MVT::v2i64, 1}, // (load 6i64 and) deinterleave into 3 x 2i64 in getInterleavedMemoryOpCost()
5787 {3, MVT::v4i64, 5}, // (load 12i64 and) deinterleave into 3 x 4i64 in getInterleavedMemoryOpCost()
5788 {3, MVT::v8i64, 10}, // (load 24i64 and) deinterleave into 3 x 8i64 in getInterleavedMemoryOpCost()
5789 {3, MVT::v16i64, 20}, // (load 48i64 and) deinterleave into 3 x 16i64 in getInterleavedMemoryOpCost()
5791 {4, MVT::v2i8, 4}, // (load 8i8 and) deinterleave into 4 x 2i8 in getInterleavedMemoryOpCost()
5792 {4, MVT::v4i8, 4}, // (load 16i8 and) deinterleave into 4 x 4i8 in getInterleavedMemoryOpCost()
5793 {4, MVT::v8i8, 12}, // (load 32i8 and) deinterleave into 4 x 8i8 in getInterleavedMemoryOpCost()
5794 {4, MVT::v16i8, 24}, // (load 64i8 and) deinterleave into 4 x 16i8 in getInterleavedMemoryOpCost()
5795 {4, MVT::v32i8, 56}, // (load 128i8 and) deinterleave into 4 x 32i8 in getInterleavedMemoryOpCost()
5797 {4, MVT::v2i16, 6}, // (load 8i16 and) deinterleave into 4 x 2i16 in getInterleavedMemoryOpCost()
5798 {4, MVT::v4i16, 17}, // (load 16i16 and) deinterleave into 4 x 4i16 in getInterleavedMemoryOpCost()
5799 {4, MVT::v8i16, 33}, // (load 32i16 and) deinterleave into 4 x 8i16 in getInterleavedMemoryOpCost()
5800 {4, MVT::v16i16, 75}, // (load 64i16 and) deinterleave into 4 x 16i16 in getInterleavedMemoryOpCost()
5801 {4, MVT::v32i16, 150}, // (load 128i16 and) deinterleave into 4 x 32i16 in getInterleavedMemoryOpCost()
5803 {4, MVT::v2i32, 4}, // (load 8i32 and) deinterleave into 4 x 2i32 in getInterleavedMemoryOpCost()
5804 {4, MVT::v4i32, 8}, // (load 16i32 and) deinterleave into 4 x 4i32 in getInterleavedMemoryOpCost()
5805 {4, MVT::v8i32, 16}, // (load 32i32 and) deinterleave into 4 x 8i32 in getInterleavedMemoryOpCost()
5806 {4, MVT::v16i32, 32}, // (load 64i32 and) deinterleave into 4 x 16i32 in getInterleavedMemoryOpCost()
5807 {4, MVT::v32i32, 68}, // (load 128i32 and) deinterleave into 4 x 32i32 in getInterleavedMemoryOpCost()
5809 {4, MVT::v2i64, 6}, // (load 8i64 and) deinterleave into 4 x 2i64 in getInterleavedMemoryOpCost()
5810 {4, MVT::v4i64, 8}, // (load 16i64 and) deinterleave into 4 x 4i64 in getInterleavedMemoryOpCost()
5811 {4, MVT::v8i64, 20}, // (load 32i64 and) deinterleave into 4 x 8i64 in getInterleavedMemoryOpCost()
5812 {4, MVT::v16i64, 40}, // (load 64i64 and) deinterleave into 4 x 16i64 in getInterleavedMemoryOpCost()
5814 {6, MVT::v2i8, 6}, // (load 12i8 and) deinterleave into 6 x 2i8 in getInterleavedMemoryOpCost()
5815 {6, MVT::v4i8, 14}, // (load 24i8 and) deinterleave into 6 x 4i8 in getInterleavedMemoryOpCost()
5816 {6, MVT::v8i8, 18}, // (load 48i8 and) deinterleave into 6 x 8i8 in getInterleavedMemoryOpCost()
5817 {6, MVT::v16i8, 43}, // (load 96i8 and) deinterleave into 6 x 16i8 in getInterleavedMemoryOpCost()
5818 {6, MVT::v32i8, 82}, // (load 192i8 and) deinterleave into 6 x 32i8 in getInterleavedMemoryOpCost()
5820 {6, MVT::v2i16, 13}, // (load 12i16 and) deinterleave into 6 x 2i16 in getInterleavedMemoryOpCost()
5821 {6, MVT::v4i16, 9}, // (load 24i16 and) deinterleave into 6 x 4i16 in getInterleavedMemoryOpCost()
5822 {6, MVT::v8i16, 39}, // (load 48i16 and) deinterleave into 6 x 8i16 in getInterleavedMemoryOpCost()
5823 {6, MVT::v16i16, 106}, // (load 96i16 and) deinterleave into 6 x 16i16 in getInterleavedMemoryOpCost()
5824 {6, MVT::v32i16, 212}, // (load 192i16 and) deinterleave into 6 x 32i16 in getInterleavedMemoryOpCost()
5826 {6, MVT::v2i32, 6}, // (load 12i32 and) deinterleave into 6 x 2i32 in getInterleavedMemoryOpCost()
5827 {6, MVT::v4i32, 15}, // (load 24i32 and) deinterleave into 6 x 4i32 in getInterleavedMemoryOpCost()
5828 {6, MVT::v8i32, 31}, // (load 48i32 and) deinterleave into 6 x 8i32 in getInterleavedMemoryOpCost()
5829 {6, MVT::v16i32, 64}, // (load 96i32 and) deinterleave into 6 x 16i32 in getInterleavedMemoryOpCost()
5831 {6, MVT::v2i64, 6}, // (load 12i64 and) deinterleave into 6 x 2i64 in getInterleavedMemoryOpCost()
5832 {6, MVT::v4i64, 18}, // (load 24i64 and) deinterleave into 6 x 4i64 in getInterleavedMemoryOpCost()
5833 {6, MVT::v8i64, 36}, // (load 48i64 and) deinterleave into 6 x 8i64 in getInterleavedMemoryOpCost()
5835 {8, MVT::v8i32, 40} // (load 64i32 and) deinterleave into 8 x 8i32 in getInterleavedMemoryOpCost()
5839 {2, MVT::v4i16, 2}, // (load 8i16 and) deinterleave into 2 x 4i16 in getInterleavedMemoryOpCost()
5843 {2, MVT::v2i16, 2}, // (load 4i16 and) deinterleave into 2 x 2i16 in getInterleavedMemoryOpCost()
5844 {2, MVT::v4i16, 7}, // (load 8i16 and) deinterleave into 2 x 4i16 in getInterleavedMemoryOpCost()
5846 {2, MVT::v2i32, 2}, // (load 4i32 and) deinterleave into 2 x 2i32 in getInterleavedMemoryOpCost()
5847 {2, MVT::v4i32, 2}, // (load 8i32 and) deinterleave into 2 x 4i32 in getInterleavedMemoryOpCost()
5849 {2, MVT::v2i64, 2}, // (load 4i64 and) deinterleave into 2 x 2i64 in getInterleavedMemoryOpCost()
5853 {2, MVT::v16i8, 3}, // interleave 2 x 16i8 into 32i8 (and store) in getInterleavedMemoryOpCost()
5854 {2, MVT::v32i8, 4}, // interleave 2 x 32i8 into 64i8 (and store) in getInterleavedMemoryOpCost()
5856 {2, MVT::v8i16, 3}, // interleave 2 x 8i16 into 16i16 (and store) in getInterleavedMemoryOpCost()
5857 {2, MVT::v16i16, 4}, // interleave 2 x 16i16 into 32i16 (and store) in getInterleavedMemoryOpCost()
5858 {2, MVT::v32i16, 8}, // interleave 2 x 32i16 into 64i16 (and store) in getInterleavedMemoryOpCost()
5860 {2, MVT::v4i32, 2}, // interleave 2 x 4i32 into 8i32 (and store) in getInterleavedMemoryOpCost()
5861 {2, MVT::v8i32, 4}, // interleave 2 x 8i32 into 16i32 (and store) in getInterleavedMemoryOpCost()
5862 {2, MVT::v16i32, 8}, // interleave 2 x 16i32 into 32i32 (and store) in getInterleavedMemoryOpCost()
5863 {2, MVT::v32i32, 16}, // interleave 2 x 32i32 into 64i32 (and store) in getInterleavedMemoryOpCost()
5865 {2, MVT::v2i64, 2}, // interleave 2 x 2i64 into 4i64 (and store) in getInterleavedMemoryOpCost()
5866 {2, MVT::v4i64, 4}, // interleave 2 x 4i64 into 8i64 (and store) in getInterleavedMemoryOpCost()
5867 {2, MVT::v8i64, 8}, // interleave 2 x 8i64 into 16i64 (and store) in getInterleavedMemoryOpCost()
5868 {2, MVT::v16i64, 16}, // interleave 2 x 16i64 into 32i64 (and store) in getInterleavedMemoryOpCost()
5869 {2, MVT::v32i64, 32}, // interleave 2 x 32i64 into 64i64 (and store) in getInterleavedMemoryOpCost()
5871 {3, MVT::v2i8, 4}, // interleave 3 x 2i8 into 6i8 (and store) in getInterleavedMemoryOpCost()
5872 {3, MVT::v4i8, 4}, // interleave 3 x 4i8 into 12i8 (and store) in getInterleavedMemoryOpCost()
5873 {3, MVT::v8i8, 6}, // interleave 3 x 8i8 into 24i8 (and store) in getInterleavedMemoryOpCost()
5874 {3, MVT::v16i8, 11}, // interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCost()
5875 {3, MVT::v32i8, 13}, // interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCost()
5877 {3, MVT::v2i16, 4}, // interleave 3 x 2i16 into 6i16 (and store) in getInterleavedMemoryOpCost()
5878 {3, MVT::v4i16, 6}, // interleave 3 x 4i16 into 12i16 (and store) in getInterleavedMemoryOpCost()
5879 {3, MVT::v8i16, 12}, // interleave 3 x 8i16 into 24i16 (and store) in getInterleavedMemoryOpCost()
5880 {3, MVT::v16i16, 27}, // interleave 3 x 16i16 into 48i16 (and store) in getInterleavedMemoryOpCost()
5881 {3, MVT::v32i16, 54}, // interleave 3 x 32i16 into 96i16 (and store) in getInterleavedMemoryOpCost()
5883 {3, MVT::v2i32, 4}, // interleave 3 x 2i32 into 6i32 (and store) in getInterleavedMemoryOpCost()
5884 {3, MVT::v4i32, 5}, // interleave 3 x 4i32 into 12i32 (and store) in getInterleavedMemoryOpCost()
5885 {3, MVT::v8i32, 11}, // interleave 3 x 8i32 into 24i32 (and store) in getInterleavedMemoryOpCost()
5886 {3, MVT::v16i32, 22}, // interleave 3 x 16i32 into 48i32 (and store) in getInterleavedMemoryOpCost()
5887 {3, MVT::v32i32, 48}, // interleave 3 x 32i32 into 96i32 (and store) in getInterleavedMemoryOpCost()
5889 {3, MVT::v2i64, 4}, // interleave 3 x 2i64 into 6i64 (and store) in getInterleavedMemoryOpCost()
5890 {3, MVT::v4i64, 6}, // interleave 3 x 4i64 into 12i64 (and store) in getInterleavedMemoryOpCost()
5891 {3, MVT::v8i64, 12}, // interleave 3 x 8i64 into 24i64 (and store) in getInterleavedMemoryOpCost()
5892 {3, MVT::v16i64, 24}, // interleave 3 x 16i64 into 48i64 (and store) in getInterleavedMemoryOpCost()
5894 {4, MVT::v2i8, 4}, // interleave 4 x 2i8 into 8i8 (and store) in getInterleavedMemoryOpCost()
5895 {4, MVT::v4i8, 4}, // interleave 4 x 4i8 into 16i8 (and store) in getInterleavedMemoryOpCost()
5896 {4, MVT::v8i8, 4}, // interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCost()
5897 {4, MVT::v16i8, 8}, // interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCost()
5898 {4, MVT::v32i8, 12}, // interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCost()
5900 {4, MVT::v2i16, 2}, // interleave 4 x 2i16 into 8i16 (and store) in getInterleavedMemoryOpCost()
5901 {4, MVT::v4i16, 6}, // interleave 4 x 4i16 into 16i16 (and store) in getInterleavedMemoryOpCost()
5902 {4, MVT::v8i16, 10}, // interleave 4 x 8i16 into 32i16 (and store) in getInterleavedMemoryOpCost()
5903 {4, MVT::v16i16, 32}, // interleave 4 x 16i16 into 64i16 (and store) in getInterleavedMemoryOpCost()
5904 {4, MVT::v32i16, 64}, // interleave 4 x 32i16 into 128i16 (and store) in getInterleavedMemoryOpCost()
5906 {4, MVT::v2i32, 5}, // interleave 4 x 2i32 into 8i32 (and store) in getInterleavedMemoryOpCost()
5907 {4, MVT::v4i32, 6}, // interleave 4 x 4i32 into 16i32 (and store) in getInterleavedMemoryOpCost()
5908 {4, MVT::v8i32, 16}, // interleave 4 x 8i32 into 32i32 (and store) in getInterleavedMemoryOpCost()
5909 {4, MVT::v16i32, 32}, // interleave 4 x 16i32 into 64i32 (and store) in getInterleavedMemoryOpCost()
5910 {4, MVT::v32i32, 64}, // interleave 4 x 32i32 into 128i32 (and store) in getInterleavedMemoryOpCost()
5912 {4, MVT::v2i64, 6}, // interleave 4 x 2i64 into 8i64 (and store) in getInterleavedMemoryOpCost()
5913 {4, MVT::v4i64, 8}, // interleave 4 x 4i64 into 16i64 (and store) in getInterleavedMemoryOpCost()
5914 {4, MVT::v8i64, 20}, // interleave 4 x 8i64 into 32i64 (and store) in getInterleavedMemoryOpCost()
5915 {4, MVT::v16i64, 40}, // interleave 4 x 16i64 into 64i64 (and store) in getInterleavedMemoryOpCost()
5917 {6, MVT::v2i8, 7}, // interleave 6 x 2i8 into 12i8 (and store) in getInterleavedMemoryOpCost()
5918 {6, MVT::v4i8, 9}, // interleave 6 x 4i8 into 24i8 (and store) in getInterleavedMemoryOpCost()
5919 {6, MVT::v8i8, 16}, // interleave 6 x 8i8 into 48i8 (and store) in getInterleavedMemoryOpCost()
5920 {6, MVT::v16i8, 27}, // interleave 6 x 16i8 into 96i8 (and store) in getInterleavedMemoryOpCost()
5921 {6, MVT::v32i8, 90}, // interleave 6 x 32i8 into 192i8 (and store) in getInterleavedMemoryOpCost()
5923 {6, MVT::v2i16, 10}, // interleave 6 x 2i16 into 12i16 (and store) in getInterleavedMemoryOpCost()
5924 {6, MVT::v4i16, 15}, // interleave 6 x 4i16 into 24i16 (and store) in getInterleavedMemoryOpCost()
5925 {6, MVT::v8i16, 21}, // interleave 6 x 8i16 into 48i16 (and store) in getInterleavedMemoryOpCost()
5926 {6, MVT::v16i16, 58}, // interleave 6 x 16i16 into 96i16 (and store) in getInterleavedMemoryOpCost()
5927 {6, MVT::v32i16, 90}, // interleave 6 x 32i16 into 192i16 (and store) in getInterleavedMemoryOpCost()
5929 {6, MVT::v2i32, 9}, // interleave 6 x 2i32 into 12i32 (and store) in getInterleavedMemoryOpCost()
5930 {6, MVT::v4i32, 12}, // interleave 6 x 4i32 into 24i32 (and store) in getInterleavedMemoryOpCost()
5931 {6, MVT::v8i32, 33}, // interleave 6 x 8i32 into 48i32 (and store) in getInterleavedMemoryOpCost()
5932 {6, MVT::v16i32, 66}, // interleave 6 x 16i32 into 96i32 (and store) in getInterleavedMemoryOpCost()
5934 {6, MVT::v2i64, 8}, // interleave 6 x 2i64 into 12i64 (and store) in getInterleavedMemoryOpCost()
5935 {6, MVT::v4i64, 15}, // interleave 6 x 4i64 into 24i64 (and store) in getInterleavedMemoryOpCost()
5936 {6, MVT::v8i64, 30}, // interleave 6 x 8i64 into 48i64 (and store) in getInterleavedMemoryOpCost()
5940 {2, MVT::v2i8, 1}, // interleave 2 x 2i8 into 4i8 (and store) in getInterleavedMemoryOpCost()
5941 {2, MVT::v4i8, 1}, // interleave 2 x 4i8 into 8i8 (and store) in getInterleavedMemoryOpCost()
5942 {2, MVT::v8i8, 1}, // interleave 2 x 8i8 into 16i8 (and store) in getInterleavedMemoryOpCost()
5944 {2, MVT::v2i16, 1}, // interleave 2 x 2i16 into 4i16 (and store) in getInterleavedMemoryOpCost()
5945 {2, MVT::v4i16, 1}, // interleave 2 x 4i16 into 8i16 (and store) in getInterleavedMemoryOpCost()
5947 {2, MVT::v2i32, 1}, // interleave 2 x 2i32 into 4i32 (and store) in getInterleavedMemoryOpCost()