Lines Matching refs:MVT

204   std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty);  in getArithmeticInstrCost()
210 { ISD::FDIV, MVT::f32, 18 }, // divss in getArithmeticInstrCost()
211 { ISD::FDIV, MVT::v4f32, 35 }, // divps in getArithmeticInstrCost()
212 { ISD::FDIV, MVT::f64, 33 }, // divsd in getArithmeticInstrCost()
213 { ISD::FDIV, MVT::v2f64, 65 }, // divpd in getArithmeticInstrCost()
222 { ISD::MUL, MVT::v4i32, 11 }, // pmulld in getArithmeticInstrCost()
223 { ISD::MUL, MVT::v8i16, 2 }, // pmullw in getArithmeticInstrCost()
224 { ISD::FMUL, MVT::f64, 2 }, // mulsd in getArithmeticInstrCost()
225 { ISD::FMUL, MVT::v2f64, 4 }, // mulpd in getArithmeticInstrCost()
226 { ISD::FMUL, MVT::v4f32, 2 }, // mulps in getArithmeticInstrCost()
227 { ISD::FDIV, MVT::f32, 17 }, // divss in getArithmeticInstrCost()
228 { ISD::FDIV, MVT::v4f32, 39 }, // divps in getArithmeticInstrCost()
229 { ISD::FDIV, MVT::f64, 32 }, // divsd in getArithmeticInstrCost()
230 { ISD::FDIV, MVT::v2f64, 69 }, // divpd in getArithmeticInstrCost()
231 { ISD::FADD, MVT::v2f64, 2 }, // addpd in getArithmeticInstrCost()
232 { ISD::FSUB, MVT::v2f64, 2 }, // subpd in getArithmeticInstrCost()
238 { ISD::MUL, MVT::v2i64, 17 }, in getArithmeticInstrCost()
240 { ISD::ADD, MVT::v2i64, 4 }, in getArithmeticInstrCost()
241 { ISD::SUB, MVT::v2i64, 4 }, in getArithmeticInstrCost()
245 if (Args.size() == 2 && ISD == ISD::MUL && LT.second == MVT::v4i32) { in getArithmeticInstrCost()
320 { ISD::SHL, MVT::v64i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
321 { ISD::SRL, MVT::v64i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
322 { ISD::SRA, MVT::v64i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
333 { ISD::SRA, MVT::v2i64, 1 }, in getArithmeticInstrCost()
334 { ISD::SRA, MVT::v4i64, 1 }, in getArithmeticInstrCost()
335 { ISD::SRA, MVT::v8i64, 1 }, in getArithmeticInstrCost()
337 { ISD::SHL, MVT::v64i8, 4 }, // psllw + pand. in getArithmeticInstrCost()
338 { ISD::SRL, MVT::v64i8, 4 }, // psrlw + pand. in getArithmeticInstrCost()
339 { ISD::SRA, MVT::v64i8, 8 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
341 { ISD::SDIV, MVT::v16i32, 6 }, // pmuludq sequence in getArithmeticInstrCost()
342 { ISD::SREM, MVT::v16i32, 8 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
343 { ISD::UDIV, MVT::v16i32, 5 }, // pmuludq sequence in getArithmeticInstrCost()
344 { ISD::UREM, MVT::v16i32, 7 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
355 { ISD::SHL, MVT::v32i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
356 { ISD::SRL, MVT::v32i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
357 { ISD::SRA, MVT::v32i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
359 { ISD::SRA, MVT::v4i64, 4 }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
361 { ISD::SDIV, MVT::v8i32, 6 }, // pmuludq sequence in getArithmeticInstrCost()
362 { ISD::SREM, MVT::v8i32, 8 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
363 { ISD::UDIV, MVT::v8i32, 5 }, // pmuludq sequence in getArithmeticInstrCost()
364 { ISD::UREM, MVT::v8i32, 7 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
375 { ISD::SHL, MVT::v16i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
376 { ISD::SRL, MVT::v16i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
377 { ISD::SRA, MVT::v16i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
379 { ISD::SHL, MVT::v32i8, 4+2 }, // 2*(psllw + pand) + split. in getArithmeticInstrCost()
380 { ISD::SRL, MVT::v32i8, 4+2 }, // 2*(psrlw + pand) + split. in getArithmeticInstrCost()
381 { ISD::SRA, MVT::v32i8, 8+2 }, // 2*(psrlw, pand, pxor, psubb) + split. in getArithmeticInstrCost()
383 { ISD::SDIV, MVT::v8i32, 12+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
384 { ISD::SREM, MVT::v8i32, 16+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
385 { ISD::SDIV, MVT::v4i32, 6 }, // pmuludq sequence in getArithmeticInstrCost()
386 { ISD::SREM, MVT::v4i32, 8 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
387 { ISD::UDIV, MVT::v8i32, 10+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
388 { ISD::UREM, MVT::v8i32, 14+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
389 { ISD::UDIV, MVT::v4i32, 5 }, // pmuludq sequence in getArithmeticInstrCost()
390 { ISD::UREM, MVT::v4i32, 7 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
402 { ISD::SDIV, MVT::v64i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
403 { ISD::SREM, MVT::v64i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
404 { ISD::UDIV, MVT::v64i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
405 { ISD::UREM, MVT::v64i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
406 { ISD::SDIV, MVT::v32i16, 6 }, // vpmulhw sequence in getArithmeticInstrCost()
407 { ISD::SREM, MVT::v32i16, 8 }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
408 { ISD::UDIV, MVT::v32i16, 6 }, // vpmulhuw sequence in getArithmeticInstrCost()
409 { ISD::UREM, MVT::v32i16, 8 }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
421 { ISD::SDIV, MVT::v16i32, 15 }, // vpmuldq sequence in getArithmeticInstrCost()
422 { ISD::SREM, MVT::v16i32, 17 }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
423 { ISD::UDIV, MVT::v16i32, 15 }, // vpmuludq sequence in getArithmeticInstrCost()
424 { ISD::UREM, MVT::v16i32, 17 }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
425 { ISD::SDIV, MVT::v64i8, 28 }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
426 { ISD::SREM, MVT::v64i8, 32 }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
427 { ISD::UDIV, MVT::v64i8, 28 }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
428 { ISD::UREM, MVT::v64i8, 32 }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
429 { ISD::SDIV, MVT::v32i16, 12 }, // 2*vpmulhw sequence in getArithmeticInstrCost()
430 { ISD::SREM, MVT::v32i16, 16 }, // 2*vpmulhw+mul+sub sequence in getArithmeticInstrCost()
431 { ISD::UDIV, MVT::v32i16, 12 }, // 2*vpmulhuw sequence in getArithmeticInstrCost()
432 { ISD::UREM, MVT::v32i16, 16 }, // 2*vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
444 { ISD::SDIV, MVT::v32i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
445 { ISD::SREM, MVT::v32i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
446 { ISD::UDIV, MVT::v32i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
447 { ISD::UREM, MVT::v32i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
448 { ISD::SDIV, MVT::v16i16, 6 }, // vpmulhw sequence in getArithmeticInstrCost()
449 { ISD::SREM, MVT::v16i16, 8 }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
450 { ISD::UDIV, MVT::v16i16, 6 }, // vpmulhuw sequence in getArithmeticInstrCost()
451 { ISD::UREM, MVT::v16i16, 8 }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
452 { ISD::SDIV, MVT::v8i32, 15 }, // vpmuldq sequence in getArithmeticInstrCost()
453 { ISD::SREM, MVT::v8i32, 19 }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
454 { ISD::UDIV, MVT::v8i32, 15 }, // vpmuludq sequence in getArithmeticInstrCost()
455 { ISD::UREM, MVT::v8i32, 19 }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
466 { ISD::SDIV, MVT::v32i8, 28+2 }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
467 { ISD::SREM, MVT::v32i8, 32+2 }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
468 { ISD::SDIV, MVT::v16i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
469 { ISD::SREM, MVT::v16i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
470 { ISD::UDIV, MVT::v32i8, 28+2 }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
471 { ISD::UREM, MVT::v32i8, 32+2 }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
472 { ISD::UDIV, MVT::v16i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
473 { ISD::UREM, MVT::v16i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
474 { ISD::SDIV, MVT::v16i16, 12+2 }, // 2*pmulhw sequence + split. in getArithmeticInstrCost()
475 { ISD::SREM, MVT::v16i16, 16+2 }, // 2*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
476 { ISD::SDIV, MVT::v8i16, 6 }, // pmulhw sequence in getArithmeticInstrCost()
477 { ISD::SREM, MVT::v8i16, 8 }, // pmulhw+mul+sub sequence in getArithmeticInstrCost()
478 { ISD::UDIV, MVT::v16i16, 12+2 }, // 2*pmulhuw sequence + split. in getArithmeticInstrCost()
479 { ISD::UREM, MVT::v16i16, 16+2 }, // 2*pmulhuw+mul+sub sequence + split. in getArithmeticInstrCost()
480 { ISD::UDIV, MVT::v8i16, 6 }, // pmulhuw sequence in getArithmeticInstrCost()
481 { ISD::UREM, MVT::v8i16, 8 }, // pmulhuw+mul+sub sequence in getArithmeticInstrCost()
482 { ISD::SDIV, MVT::v8i32, 38+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
483 { ISD::SREM, MVT::v8i32, 48+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
484 { ISD::SDIV, MVT::v4i32, 19 }, // pmuludq sequence in getArithmeticInstrCost()
485 { ISD::SREM, MVT::v4i32, 24 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
486 { ISD::UDIV, MVT::v8i32, 30+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
487 { ISD::UREM, MVT::v8i32, 40+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
488 { ISD::UDIV, MVT::v4i32, 15 }, // pmuludq sequence in getArithmeticInstrCost()
489 { ISD::UREM, MVT::v4i32, 20 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
496 if (ISD == ISD::SDIV && LT.second == MVT::v8i32 && ST->hasAVX()) in getArithmeticInstrCost()
498 if (ISD == ISD::SREM && LT.second == MVT::v8i32 && ST->hasAVX()) in getArithmeticInstrCost()
500 if (ISD == ISD::SDIV && LT.second == MVT::v4i32 && ST->hasSSE41()) in getArithmeticInstrCost()
502 if (ISD == ISD::SREM && LT.second == MVT::v4i32 && ST->hasSSE41()) in getArithmeticInstrCost()
510 { ISD::SHL, MVT::v16i8, 4 }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
511 { ISD::SRL, MVT::v16i8, 4 }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
512 { ISD::SRA, MVT::v16i8, 4 }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
513 { ISD::SHL, MVT::v32i8, 4 }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
514 { ISD::SRL, MVT::v32i8, 4 }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
515 { ISD::SRA, MVT::v32i8, 6 }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
516 { ISD::SHL, MVT::v64i8, 6 }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
517 { ISD::SRL, MVT::v64i8, 7 }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
518 { ISD::SRA, MVT::v64i8, 15 }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
520 { ISD::SHL, MVT::v8i16, 1 }, // vpsllvw in getArithmeticInstrCost()
521 { ISD::SRL, MVT::v8i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
522 { ISD::SRA, MVT::v8i16, 1 }, // vpsravw in getArithmeticInstrCost()
523 { ISD::SHL, MVT::v16i16, 1 }, // vpsllvw in getArithmeticInstrCost()
524 { ISD::SRL, MVT::v16i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
525 { ISD::SRA, MVT::v16i16, 1 }, // vpsravw in getArithmeticInstrCost()
526 { ISD::SHL, MVT::v32i16, 1 }, // vpsllvw in getArithmeticInstrCost()
527 { ISD::SRL, MVT::v32i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
528 { ISD::SRA, MVT::v32i16, 1 }, // vpsravw in getArithmeticInstrCost()
537 { ISD::SHL, MVT::v16i16, 1 }, // psllw. in getArithmeticInstrCost()
538 { ISD::SRL, MVT::v16i16, 1 }, // psrlw. in getArithmeticInstrCost()
539 { ISD::SRA, MVT::v16i16, 1 }, // psraw. in getArithmeticInstrCost()
540 { ISD::SHL, MVT::v32i16, 2 }, // 2*psllw. in getArithmeticInstrCost()
541 { ISD::SRL, MVT::v32i16, 2 }, // 2*psrlw. in getArithmeticInstrCost()
542 { ISD::SRA, MVT::v32i16, 2 }, // 2*psraw. in getArithmeticInstrCost()
544 { ISD::SHL, MVT::v8i32, 1 }, // pslld in getArithmeticInstrCost()
545 { ISD::SRL, MVT::v8i32, 1 }, // psrld in getArithmeticInstrCost()
546 { ISD::SRA, MVT::v8i32, 1 }, // psrad in getArithmeticInstrCost()
547 { ISD::SHL, MVT::v4i64, 1 }, // psllq in getArithmeticInstrCost()
548 { ISD::SRL, MVT::v4i64, 1 }, // psrlq in getArithmeticInstrCost()
561 { ISD::SHL, MVT::v8i16, 1 }, // psllw. in getArithmeticInstrCost()
562 { ISD::SHL, MVT::v4i32, 1 }, // pslld in getArithmeticInstrCost()
563 { ISD::SHL, MVT::v2i64, 1 }, // psllq. in getArithmeticInstrCost()
565 { ISD::SRL, MVT::v8i16, 1 }, // psrlw. in getArithmeticInstrCost()
566 { ISD::SRL, MVT::v4i32, 1 }, // psrld. in getArithmeticInstrCost()
567 { ISD::SRL, MVT::v2i64, 1 }, // psrlq. in getArithmeticInstrCost()
569 { ISD::SRA, MVT::v8i16, 1 }, // psraw. in getArithmeticInstrCost()
570 { ISD::SRA, MVT::v4i32, 1 }, // psrad. in getArithmeticInstrCost()
582 { ISD::MUL, MVT::v2i64, 2 }, // pmullq in getArithmeticInstrCost()
583 { ISD::MUL, MVT::v4i64, 2 }, // pmullq in getArithmeticInstrCost()
584 { ISD::MUL, MVT::v8i64, 2 } // pmullq in getArithmeticInstrCost()
593 { ISD::SHL, MVT::v64i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
594 { ISD::SRL, MVT::v64i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
595 { ISD::SRA, MVT::v64i8, 24 }, // vpblendvb sequence. in getArithmeticInstrCost()
604 { ISD::SHL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
605 { ISD::SRL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
606 { ISD::SRA, MVT::v4i32, 1 }, in getArithmeticInstrCost()
607 { ISD::SHL, MVT::v8i32, 1 }, in getArithmeticInstrCost()
608 { ISD::SRL, MVT::v8i32, 1 }, in getArithmeticInstrCost()
609 { ISD::SRA, MVT::v8i32, 1 }, in getArithmeticInstrCost()
610 { ISD::SHL, MVT::v16i32, 1 }, in getArithmeticInstrCost()
611 { ISD::SRL, MVT::v16i32, 1 }, in getArithmeticInstrCost()
612 { ISD::SRA, MVT::v16i32, 1 }, in getArithmeticInstrCost()
614 { ISD::SHL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
615 { ISD::SRL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
616 { ISD::SHL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
617 { ISD::SRL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
618 { ISD::SHL, MVT::v8i64, 1 }, in getArithmeticInstrCost()
619 { ISD::SRL, MVT::v8i64, 1 }, in getArithmeticInstrCost()
621 { ISD::SRA, MVT::v2i64, 1 }, in getArithmeticInstrCost()
622 { ISD::SRA, MVT::v4i64, 1 }, in getArithmeticInstrCost()
623 { ISD::SRA, MVT::v8i64, 1 }, in getArithmeticInstrCost()
625 { ISD::MUL, MVT::v16i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
626 { ISD::MUL, MVT::v8i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
627 { ISD::MUL, MVT::v4i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
628 { ISD::MUL, MVT::v8i64, 6 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
630 { ISD::FNEG, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
631 { ISD::FADD, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
632 { ISD::FSUB, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
633 { ISD::FMUL, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
634 { ISD::FDIV, MVT::f64, 4 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
635 { ISD::FDIV, MVT::v2f64, 4 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
636 { ISD::FDIV, MVT::v4f64, 8 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
637 { ISD::FDIV, MVT::v8f64, 16 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
639 { ISD::FNEG, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
640 { ISD::FADD, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
641 { ISD::FSUB, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
642 { ISD::FMUL, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
643 { ISD::FDIV, MVT::f32, 3 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
644 { ISD::FDIV, MVT::v4f32, 3 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
645 { ISD::FDIV, MVT::v8f32, 5 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
646 { ISD::FDIV, MVT::v16f32, 10 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
656 { ISD::SHL, MVT::v4i32, 2 }, // vpsllvd (Haswell from agner.org) in getArithmeticInstrCost()
657 { ISD::SRL, MVT::v4i32, 2 }, // vpsrlvd (Haswell from agner.org) in getArithmeticInstrCost()
658 { ISD::SRA, MVT::v4i32, 2 }, // vpsravd (Haswell from agner.org) in getArithmeticInstrCost()
659 { ISD::SHL, MVT::v8i32, 2 }, // vpsllvd (Haswell from agner.org) in getArithmeticInstrCost()
660 { ISD::SRL, MVT::v8i32, 2 }, // vpsrlvd (Haswell from agner.org) in getArithmeticInstrCost()
661 { ISD::SRA, MVT::v8i32, 2 }, // vpsravd (Haswell from agner.org) in getArithmeticInstrCost()
662 { ISD::SHL, MVT::v2i64, 1 }, // vpsllvq (Haswell from agner.org) in getArithmeticInstrCost()
663 { ISD::SRL, MVT::v2i64, 1 }, // vpsrlvq (Haswell from agner.org) in getArithmeticInstrCost()
664 { ISD::SHL, MVT::v4i64, 1 }, // vpsllvq (Haswell from agner.org) in getArithmeticInstrCost()
665 { ISD::SRL, MVT::v4i64, 1 }, // vpsrlvq (Haswell from agner.org) in getArithmeticInstrCost()
669 if (ISD == ISD::SHL && LT.second == MVT::v32i16 && in getArithmeticInstrCost()
681 if (ST->hasAVX2() && !(ST->hasXOP() && LT.second == MVT::v4i32)) { in getArithmeticInstrCost()
682 if (ISD == ISD::SHL && LT.second == MVT::v16i16 && in getArithmeticInstrCost()
698 { ISD::SHL, MVT::v16i8, 1 }, in getArithmeticInstrCost()
699 { ISD::SRL, MVT::v16i8, 2 }, in getArithmeticInstrCost()
700 { ISD::SRA, MVT::v16i8, 2 }, in getArithmeticInstrCost()
701 { ISD::SHL, MVT::v8i16, 1 }, in getArithmeticInstrCost()
702 { ISD::SRL, MVT::v8i16, 2 }, in getArithmeticInstrCost()
703 { ISD::SRA, MVT::v8i16, 2 }, in getArithmeticInstrCost()
704 { ISD::SHL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
705 { ISD::SRL, MVT::v4i32, 2 }, in getArithmeticInstrCost()
706 { ISD::SRA, MVT::v4i32, 2 }, in getArithmeticInstrCost()
707 { ISD::SHL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
708 { ISD::SRL, MVT::v2i64, 2 }, in getArithmeticInstrCost()
709 { ISD::SRA, MVT::v2i64, 2 }, in getArithmeticInstrCost()
711 { ISD::SHL, MVT::v32i8, 2+2 }, in getArithmeticInstrCost()
712 { ISD::SRL, MVT::v32i8, 4+2 }, in getArithmeticInstrCost()
713 { ISD::SRA, MVT::v32i8, 4+2 }, in getArithmeticInstrCost()
714 { ISD::SHL, MVT::v16i16, 2+2 }, in getArithmeticInstrCost()
715 { ISD::SRL, MVT::v16i16, 4+2 }, in getArithmeticInstrCost()
716 { ISD::SRA, MVT::v16i16, 4+2 }, in getArithmeticInstrCost()
717 { ISD::SHL, MVT::v8i32, 2+2 }, in getArithmeticInstrCost()
718 { ISD::SRL, MVT::v8i32, 4+2 }, in getArithmeticInstrCost()
719 { ISD::SRA, MVT::v8i32, 4+2 }, in getArithmeticInstrCost()
720 { ISD::SHL, MVT::v4i64, 2+2 }, in getArithmeticInstrCost()
721 { ISD::SRL, MVT::v4i64, 4+2 }, in getArithmeticInstrCost()
722 { ISD::SRA, MVT::v4i64, 4+2 }, in getArithmeticInstrCost()
741 { ISD::SHL, MVT::v16i16, 2+2 }, // 2*psllw + split. in getArithmeticInstrCost()
742 { ISD::SHL, MVT::v8i32, 2+2 }, // 2*pslld + split. in getArithmeticInstrCost()
743 { ISD::SHL, MVT::v4i64, 2+2 }, // 2*psllq + split. in getArithmeticInstrCost()
745 { ISD::SRL, MVT::v16i16, 2+2 }, // 2*psrlw + split. in getArithmeticInstrCost()
746 { ISD::SRL, MVT::v8i32, 2+2 }, // 2*psrld + split. in getArithmeticInstrCost()
747 { ISD::SRL, MVT::v4i64, 2+2 }, // 2*psrlq + split. in getArithmeticInstrCost()
749 { ISD::SRA, MVT::v16i16, 2+2 }, // 2*psraw + split. in getArithmeticInstrCost()
750 { ISD::SRA, MVT::v8i32, 2+2 }, // 2*psrad + split. in getArithmeticInstrCost()
751 { ISD::SRA, MVT::v2i64, 4 }, // 2*psrad + shuffle. in getArithmeticInstrCost()
752 { ISD::SRA, MVT::v4i64, 8+2 }, // 2*(2*psrad + shuffle) + split. in getArithmeticInstrCost()
760 if (ISD == ISD::SRA && LT.second == MVT::v4i64 && ST->hasAVX2()) in getArithmeticInstrCost()
770 MVT VT = LT.second; in getArithmeticInstrCost()
773 if (((VT == MVT::v8i16 || VT == MVT::v4i32) && ST->hasSSE2()) || in getArithmeticInstrCost()
774 ((VT == MVT::v16i16 || VT == MVT::v8i32) && ST->hasAVX())) in getArithmeticInstrCost()
779 { ISD::SHL, MVT::v16i8, 6 }, // vpblendvb sequence. in getArithmeticInstrCost()
780 { ISD::SHL, MVT::v32i8, 6 }, // vpblendvb sequence. in getArithmeticInstrCost()
781 { ISD::SHL, MVT::v64i8, 12 }, // 2*vpblendvb sequence. in getArithmeticInstrCost()
782 { ISD::SHL, MVT::v8i16, 5 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
783 { ISD::SHL, MVT::v16i16, 7 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
784 { ISD::SHL, MVT::v32i16, 14 }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
786 { ISD::SRL, MVT::v16i8, 6 }, // vpblendvb sequence. in getArithmeticInstrCost()
787 { ISD::SRL, MVT::v32i8, 6 }, // vpblendvb sequence. in getArithmeticInstrCost()
788 { ISD::SRL, MVT::v64i8, 12 }, // 2*vpblendvb sequence. in getArithmeticInstrCost()
789 { ISD::SRL, MVT::v8i16, 5 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
790 { ISD::SRL, MVT::v16i16, 7 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
791 { ISD::SRL, MVT::v32i16, 14 }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
793 { ISD::SRA, MVT::v16i8, 17 }, // vpblendvb sequence. in getArithmeticInstrCost()
794 { ISD::SRA, MVT::v32i8, 17 }, // vpblendvb sequence. in getArithmeticInstrCost()
795 { ISD::SRA, MVT::v64i8, 34 }, // 2*vpblendvb sequence. in getArithmeticInstrCost()
796 { ISD::SRA, MVT::v8i16, 5 }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
797 { ISD::SRA, MVT::v16i16, 7 }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
798 { ISD::SRA, MVT::v32i16, 14 }, // 2*extend/vpsravd/pack sequence. in getArithmeticInstrCost()
799 { ISD::SRA, MVT::v2i64, 2 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
800 { ISD::SRA, MVT::v4i64, 2 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
802 { ISD::SUB, MVT::v32i8, 1 }, // psubb in getArithmeticInstrCost()
803 { ISD::ADD, MVT::v32i8, 1 }, // paddb in getArithmeticInstrCost()
804 { ISD::SUB, MVT::v16i16, 1 }, // psubw in getArithmeticInstrCost()
805 { ISD::ADD, MVT::v16i16, 1 }, // paddw in getArithmeticInstrCost()
806 { ISD::SUB, MVT::v8i32, 1 }, // psubd in getArithmeticInstrCost()
807 { ISD::ADD, MVT::v8i32, 1 }, // paddd in getArithmeticInstrCost()
808 { ISD::SUB, MVT::v4i64, 1 }, // psubq in getArithmeticInstrCost()
809 { ISD::ADD, MVT::v4i64, 1 }, // paddq in getArithmeticInstrCost()
811 { ISD::MUL, MVT::v16i16, 1 }, // pmullw in getArithmeticInstrCost()
812 { ISD::MUL, MVT::v8i32, 2 }, // pmulld (Haswell from agner.org) in getArithmeticInstrCost()
813 { ISD::MUL, MVT::v4i64, 6 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
815 { ISD::FNEG, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
816 { ISD::FNEG, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
817 { ISD::FADD, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
818 { ISD::FADD, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
819 { ISD::FSUB, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
820 { ISD::FSUB, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
821 { ISD::FMUL, MVT::f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
822 { ISD::FMUL, MVT::v2f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
823 { ISD::FMUL, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
824 { ISD::FMUL, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
826 { ISD::FDIV, MVT::f32, 7 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
827 { ISD::FDIV, MVT::v4f32, 7 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
828 { ISD::FDIV, MVT::v8f32, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
829 { ISD::FDIV, MVT::f64, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
830 { ISD::FDIV, MVT::v2f64, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
831 { ISD::FDIV, MVT::v4f64, 28 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
843 { ISD::MUL, MVT::v16i16, 4 }, in getArithmeticInstrCost()
844 { ISD::MUL, MVT::v8i32, 5 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
845 { ISD::MUL, MVT::v4i64, 12 }, in getArithmeticInstrCost()
847 { ISD::SUB, MVT::v32i8, 4 }, in getArithmeticInstrCost()
848 { ISD::ADD, MVT::v32i8, 4 }, in getArithmeticInstrCost()
849 { ISD::SUB, MVT::v16i16, 4 }, in getArithmeticInstrCost()
850 { ISD::ADD, MVT::v16i16, 4 }, in getArithmeticInstrCost()
851 { ISD::SUB, MVT::v8i32, 4 }, in getArithmeticInstrCost()
852 { ISD::ADD, MVT::v8i32, 4 }, in getArithmeticInstrCost()
853 { ISD::SUB, MVT::v4i64, 4 }, in getArithmeticInstrCost()
854 { ISD::ADD, MVT::v4i64, 4 }, in getArithmeticInstrCost()
856 { ISD::SHL, MVT::v32i8, 22 }, // pblendvb sequence + split. in getArithmeticInstrCost()
857 { ISD::SHL, MVT::v8i16, 6 }, // pblendvb sequence. in getArithmeticInstrCost()
858 { ISD::SHL, MVT::v16i16, 13 }, // pblendvb sequence + split. in getArithmeticInstrCost()
859 { ISD::SHL, MVT::v4i32, 3 }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
860 { ISD::SHL, MVT::v8i32, 9 }, // pslld/paddd/cvttps2dq/pmulld + split in getArithmeticInstrCost()
861 { ISD::SHL, MVT::v2i64, 2 }, // Shift each lane + blend. in getArithmeticInstrCost()
862 { ISD::SHL, MVT::v4i64, 6 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
864 { ISD::SRL, MVT::v32i8, 23 }, // pblendvb sequence + split. in getArithmeticInstrCost()
865 { ISD::SRL, MVT::v16i16, 28 }, // pblendvb sequence + split. in getArithmeticInstrCost()
866 { ISD::SRL, MVT::v4i32, 6 }, // Shift each lane + blend. in getArithmeticInstrCost()
867 { ISD::SRL, MVT::v8i32, 14 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
868 { ISD::SRL, MVT::v2i64, 2 }, // Shift each lane + blend. in getArithmeticInstrCost()
869 { ISD::SRL, MVT::v4i64, 6 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
871 { ISD::SRA, MVT::v32i8, 44 }, // pblendvb sequence + split. in getArithmeticInstrCost()
872 { ISD::SRA, MVT::v16i16, 28 }, // pblendvb sequence + split. in getArithmeticInstrCost()
873 { ISD::SRA, MVT::v4i32, 6 }, // Shift each lane + blend. in getArithmeticInstrCost()
874 { ISD::SRA, MVT::v8i32, 14 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
875 { ISD::SRA, MVT::v2i64, 5 }, // Shift each lane + blend. in getArithmeticInstrCost()
876 { ISD::SRA, MVT::v4i64, 12 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
878 { ISD::FNEG, MVT::v4f64, 2 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
879 { ISD::FNEG, MVT::v8f32, 2 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
881 { ISD::FMUL, MVT::f64, 2 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
882 { ISD::FMUL, MVT::v2f64, 2 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
883 { ISD::FMUL, MVT::v4f64, 4 }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
885 { ISD::FDIV, MVT::f32, 14 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
886 { ISD::FDIV, MVT::v4f32, 14 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
887 { ISD::FDIV, MVT::v8f32, 28 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
888 { ISD::FDIV, MVT::f64, 22 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
889 { ISD::FDIV, MVT::v2f64, 22 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
890 { ISD::FDIV, MVT::v4f64, 44 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
898 { ISD::FADD, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
899 { ISD::FADD, MVT::f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
900 { ISD::FADD, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
901 { ISD::FADD, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
903 { ISD::FSUB, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
904 { ISD::FSUB, MVT::f32 , 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
905 { ISD::FSUB, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
906 { ISD::FSUB, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
908 { ISD::FMUL, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
909 { ISD::FMUL, MVT::f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
910 { ISD::FMUL, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
911 { ISD::FMUL, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
913 { ISD::FDIV, MVT::f32, 14 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
914 { ISD::FDIV, MVT::v4f32, 14 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
915 { ISD::FDIV, MVT::f64, 22 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
916 { ISD::FDIV, MVT::v2f64, 22 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
918 { ISD::MUL, MVT::v2i64, 6 } // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
926 { ISD::SHL, MVT::v16i8, 10 }, // pblendvb sequence. in getArithmeticInstrCost()
927 { ISD::SHL, MVT::v8i16, 11 }, // pblendvb sequence. in getArithmeticInstrCost()
928 { ISD::SHL, MVT::v4i32, 4 }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
930 { ISD::SRL, MVT::v16i8, 11 }, // pblendvb sequence. in getArithmeticInstrCost()
931 { ISD::SRL, MVT::v8i16, 13 }, // pblendvb sequence. in getArithmeticInstrCost()
932 { ISD::SRL, MVT::v4i32, 16 }, // Shift each lane + blend. in getArithmeticInstrCost()
934 { ISD::SRA, MVT::v16i8, 21 }, // pblendvb sequence. in getArithmeticInstrCost()
935 { ISD::SRA, MVT::v8i16, 13 }, // pblendvb sequence. in getArithmeticInstrCost()
937 { ISD::MUL, MVT::v4i32, 2 } // pmulld (Nehalem from agner.org) in getArithmeticInstrCost()
947 { ISD::SHL, MVT::v16i8, 13 }, // cmpgtb sequence. in getArithmeticInstrCost()
948 { ISD::SHL, MVT::v8i16, 25 }, // cmpgtw sequence. in getArithmeticInstrCost()
949 { ISD::SHL, MVT::v4i32, 16 }, // pslld/paddd/cvttps2dq/pmuludq. in getArithmeticInstrCost()
950 { ISD::SHL, MVT::v2i64, 4 }, // splat+shuffle sequence. in getArithmeticInstrCost()
952 { ISD::SRL, MVT::v16i8, 14 }, // cmpgtb sequence. in getArithmeticInstrCost()
953 { ISD::SRL, MVT::v8i16, 16 }, // cmpgtw sequence. in getArithmeticInstrCost()
954 { ISD::SRL, MVT::v4i32, 12 }, // Shift each lane + blend. in getArithmeticInstrCost()
955 { ISD::SRL, MVT::v2i64, 4 }, // splat+shuffle sequence. in getArithmeticInstrCost()
957 { ISD::SRA, MVT::v16i8, 27 }, // unpacked cmpgtb sequence. in getArithmeticInstrCost()
958 { ISD::SRA, MVT::v8i16, 16 }, // cmpgtw sequence. in getArithmeticInstrCost()
959 { ISD::SRA, MVT::v4i32, 12 }, // Shift each lane + blend. in getArithmeticInstrCost()
960 { ISD::SRA, MVT::v2i64, 8 }, // srl/xor/sub splat+shuffle sequence. in getArithmeticInstrCost()
962 { ISD::MUL, MVT::v8i16, 1 }, // pmullw in getArithmeticInstrCost()
963 { ISD::MUL, MVT::v4i32, 6 }, // 3*pmuludq/4*shuffle in getArithmeticInstrCost()
964 { ISD::MUL, MVT::v2i64, 8 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
966 { ISD::FDIV, MVT::f32, 23 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
967 { ISD::FDIV, MVT::v4f32, 39 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
968 { ISD::FDIV, MVT::f64, 38 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
969 { ISD::FDIV, MVT::v2f64, 69 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
971 { ISD::FNEG, MVT::f32, 1 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
972 { ISD::FNEG, MVT::f64, 1 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
973 { ISD::FNEG, MVT::v4f32, 1 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
974 { ISD::FNEG, MVT::v2f64, 1 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
976 { ISD::FADD, MVT::f32, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
977 { ISD::FADD, MVT::f64, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
979 { ISD::FSUB, MVT::f32, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
980 { ISD::FSUB, MVT::f64, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
988 { ISD::FDIV, MVT::f32, 17 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
989 { ISD::FDIV, MVT::v4f32, 34 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
991 { ISD::FNEG, MVT::f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
992 { ISD::FNEG, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
994 { ISD::FADD, MVT::f32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
995 { ISD::FADD, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
997 { ISD::FSUB, MVT::f32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
998 { ISD::FSUB, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1006 { ISD::ADD, MVT::i64, 1 }, // Core (Merom) from http://www.agner.org/ in getArithmeticInstrCost()
1007 { ISD::SUB, MVT::i64, 1 }, // Core (Merom) from http://www.agner.org/ in getArithmeticInstrCost()
1015 { ISD::ADD, MVT::i8, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1016 { ISD::ADD, MVT::i16, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1017 { ISD::ADD, MVT::i32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1019 { ISD::SUB, MVT::i8, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1020 { ISD::SUB, MVT::i16, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1021 { ISD::SUB, MVT::i32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1051 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, BaseTp); in getShuffleCost()
1070 std::pair<InstructionCost, MVT> SubLT = in getShuffleCost()
1117 std::pair<InstructionCost, MVT> SubLT = in getShuffleCost()
1132 {TTI::SK_Broadcast, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1133 {TTI::SK_Broadcast, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1134 {TTI::SK_Broadcast, MVT::v8i8, 2}, // punpck/pshuflw in getShuffleCost()
1135 {TTI::SK_Broadcast, MVT::v4i8, 2}, // punpck/pshuflw in getShuffleCost()
1136 {TTI::SK_Broadcast, MVT::v2i8, 1}, // punpck in getShuffleCost()
1138 {TTI::SK_Reverse, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1139 {TTI::SK_Reverse, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1140 {TTI::SK_Reverse, MVT::v4i8, 3}, // punpck/pshuflw/packus in getShuffleCost()
1141 {TTI::SK_Reverse, MVT::v2i8, 1}, // punpck in getShuffleCost()
1143 {TTI::SK_PermuteTwoSrc, MVT::v4i16, 2}, // punpck/pshuflw in getShuffleCost()
1144 {TTI::SK_PermuteTwoSrc, MVT::v2i16, 2}, // punpck/pshuflw in getShuffleCost()
1145 {TTI::SK_PermuteTwoSrc, MVT::v8i8, 7}, // punpck/pshuflw in getShuffleCost()
1146 {TTI::SK_PermuteTwoSrc, MVT::v4i8, 4}, // punpck/pshuflw in getShuffleCost()
1147 {TTI::SK_PermuteTwoSrc, MVT::v2i8, 2}, // punpck in getShuffleCost()
1149 {TTI::SK_PermuteSingleSrc, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1150 {TTI::SK_PermuteSingleSrc, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1151 {TTI::SK_PermuteSingleSrc, MVT::v8i8, 5}, // punpck/pshuflw in getShuffleCost()
1152 {TTI::SK_PermuteSingleSrc, MVT::v4i8, 3}, // punpck/pshuflw in getShuffleCost()
1153 {TTI::SK_PermuteSingleSrc, MVT::v2i8, 1}, // punpck in getShuffleCost()
1166 MVT LegalVT = LT.second; in getShuffleCost()
1200 {TTI::SK_Reverse, MVT::v64i8, 1}, // vpermb in getShuffleCost()
1201 {TTI::SK_Reverse, MVT::v32i8, 1}, // vpermb in getShuffleCost()
1203 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 1}, // vpermb in getShuffleCost()
1204 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 1}, // vpermb in getShuffleCost()
1206 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 2}, // vpermt2b in getShuffleCost()
1207 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 2}, // vpermt2b in getShuffleCost()
1208 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 2} // vpermt2b in getShuffleCost()
1217 {TTI::SK_Broadcast, MVT::v32i16, 1}, // vpbroadcastw in getShuffleCost()
1218 {TTI::SK_Broadcast, MVT::v64i8, 1}, // vpbroadcastb in getShuffleCost()
1220 {TTI::SK_Reverse, MVT::v32i16, 2}, // vpermw in getShuffleCost()
1221 {TTI::SK_Reverse, MVT::v16i16, 2}, // vpermw in getShuffleCost()
1222 {TTI::SK_Reverse, MVT::v64i8, 2}, // pshufb + vshufi64x2 in getShuffleCost()
1224 {TTI::SK_PermuteSingleSrc, MVT::v32i16, 2}, // vpermw in getShuffleCost()
1225 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 2}, // vpermw in getShuffleCost()
1226 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 8}, // extend to v32i16 in getShuffleCost()
1228 {TTI::SK_PermuteTwoSrc, MVT::v32i16, 2}, // vpermt2w in getShuffleCost()
1229 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 2}, // vpermt2w in getShuffleCost()
1230 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 2}, // vpermt2w in getShuffleCost()
1231 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 19}, // 6 * v32i8 + 1 in getShuffleCost()
1233 {TTI::SK_Select, MVT::v32i16, 1}, // vblendmw in getShuffleCost()
1234 {TTI::SK_Select, MVT::v64i8, 1}, // vblendmb in getShuffleCost()
1243 {TTI::SK_Broadcast, MVT::v8f64, 1}, // vbroadcastpd in getShuffleCost()
1244 {TTI::SK_Broadcast, MVT::v16f32, 1}, // vbroadcastps in getShuffleCost()
1245 {TTI::SK_Broadcast, MVT::v8i64, 1}, // vpbroadcastq in getShuffleCost()
1246 {TTI::SK_Broadcast, MVT::v16i32, 1}, // vpbroadcastd in getShuffleCost()
1247 {TTI::SK_Broadcast, MVT::v32i16, 1}, // vpbroadcastw in getShuffleCost()
1248 {TTI::SK_Broadcast, MVT::v64i8, 1}, // vpbroadcastb in getShuffleCost()
1250 {TTI::SK_Reverse, MVT::v8f64, 1}, // vpermpd in getShuffleCost()
1251 {TTI::SK_Reverse, MVT::v16f32, 1}, // vpermps in getShuffleCost()
1252 {TTI::SK_Reverse, MVT::v8i64, 1}, // vpermq in getShuffleCost()
1253 {TTI::SK_Reverse, MVT::v16i32, 1}, // vpermd in getShuffleCost()
1254 {TTI::SK_Reverse, MVT::v32i16, 7}, // per mca in getShuffleCost()
1255 {TTI::SK_Reverse, MVT::v64i8, 7}, // per mca in getShuffleCost()
1257 {TTI::SK_PermuteSingleSrc, MVT::v8f64, 1}, // vpermpd in getShuffleCost()
1258 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1259 {TTI::SK_PermuteSingleSrc, MVT::v2f64, 1}, // vpermpd in getShuffleCost()
1260 {TTI::SK_PermuteSingleSrc, MVT::v16f32, 1}, // vpermps in getShuffleCost()
1261 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1262 {TTI::SK_PermuteSingleSrc, MVT::v4f32, 1}, // vpermps in getShuffleCost()
1263 {TTI::SK_PermuteSingleSrc, MVT::v8i64, 1}, // vpermq in getShuffleCost()
1264 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1265 {TTI::SK_PermuteSingleSrc, MVT::v2i64, 1}, // vpermq in getShuffleCost()
1266 {TTI::SK_PermuteSingleSrc, MVT::v16i32, 1}, // vpermd in getShuffleCost()
1267 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1268 {TTI::SK_PermuteSingleSrc, MVT::v4i32, 1}, // vpermd in getShuffleCost()
1269 {TTI::SK_PermuteSingleSrc, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1271 {TTI::SK_PermuteTwoSrc, MVT::v8f64, 1}, // vpermt2pd in getShuffleCost()
1272 {TTI::SK_PermuteTwoSrc, MVT::v16f32, 1}, // vpermt2ps in getShuffleCost()
1273 {TTI::SK_PermuteTwoSrc, MVT::v8i64, 1}, // vpermt2q in getShuffleCost()
1274 {TTI::SK_PermuteTwoSrc, MVT::v16i32, 1}, // vpermt2d in getShuffleCost()
1275 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 1}, // vpermt2pd in getShuffleCost()
1276 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 1}, // vpermt2ps in getShuffleCost()
1277 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 1}, // vpermt2q in getShuffleCost()
1278 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 1}, // vpermt2d in getShuffleCost()
1279 {TTI::SK_PermuteTwoSrc, MVT::v2f64, 1}, // vpermt2pd in getShuffleCost()
1280 {TTI::SK_PermuteTwoSrc, MVT::v4f32, 1}, // vpermt2ps in getShuffleCost()
1281 {TTI::SK_PermuteTwoSrc, MVT::v2i64, 1}, // vpermt2q in getShuffleCost()
1282 {TTI::SK_PermuteTwoSrc, MVT::v4i32, 1}, // vpermt2d in getShuffleCost()
1286 {TTI::SK_PermuteSingleSrc, MVT::v32i16, 14}, in getShuffleCost()
1287 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 14}, in getShuffleCost()
1288 {TTI::SK_PermuteTwoSrc, MVT::v32i16, 42}, in getShuffleCost()
1289 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 42}, in getShuffleCost()
1291 {TTI::SK_Select, MVT::v32i16, 1}, // vpternlogq in getShuffleCost()
1292 {TTI::SK_Select, MVT::v64i8, 1}, // vpternlogq in getShuffleCost()
1293 {TTI::SK_Select, MVT::v8f64, 1}, // vblendmpd in getShuffleCost()
1294 {TTI::SK_Select, MVT::v16f32, 1}, // vblendmps in getShuffleCost()
1295 {TTI::SK_Select, MVT::v8i64, 1}, // vblendmq in getShuffleCost()
1296 {TTI::SK_Select, MVT::v16i32, 1}, // vblendmd in getShuffleCost()
1304 {TTI::SK_Broadcast, MVT::v4f64, 1}, // vbroadcastpd in getShuffleCost()
1305 {TTI::SK_Broadcast, MVT::v8f32, 1}, // vbroadcastps in getShuffleCost()
1306 {TTI::SK_Broadcast, MVT::v4i64, 1}, // vpbroadcastq in getShuffleCost()
1307 {TTI::SK_Broadcast, MVT::v8i32, 1}, // vpbroadcastd in getShuffleCost()
1308 {TTI::SK_Broadcast, MVT::v16i16, 1}, // vpbroadcastw in getShuffleCost()
1309 {TTI::SK_Broadcast, MVT::v32i8, 1}, // vpbroadcastb in getShuffleCost()
1311 {TTI::SK_Reverse, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1312 {TTI::SK_Reverse, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1313 {TTI::SK_Reverse, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1314 {TTI::SK_Reverse, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1315 {TTI::SK_Reverse, MVT::v16i16, 2}, // vperm2i128 + pshufb in getShuffleCost()
1316 {TTI::SK_Reverse, MVT::v32i8, 2}, // vperm2i128 + pshufb in getShuffleCost()
1318 {TTI::SK_Select, MVT::v16i16, 1}, // vpblendvb in getShuffleCost()
1319 {TTI::SK_Select, MVT::v32i8, 1}, // vpblendvb in getShuffleCost()
1321 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1322 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1323 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1324 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1325 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1327 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1330 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vpermpd + vblendpd in getShuffleCost()
1331 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 3}, // 2*vpermps + vblendps in getShuffleCost()
1332 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vpermq + vpblendd in getShuffleCost()
1333 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 3}, // 2*vpermd + vpblendd in getShuffleCost()
1334 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1336 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1345 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1346 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1347 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1348 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1349 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1351 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1354 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1356 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 1}, // vpperm in getShuffleCost()
1357 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1359 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 1}, // vpperm in getShuffleCost()
1367 {TTI::SK_Broadcast, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1368 {TTI::SK_Broadcast, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1369 {TTI::SK_Broadcast, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1370 {TTI::SK_Broadcast, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1371 {TTI::SK_Broadcast, MVT::v16i16, 3}, // vpshuflw + vpshufd + vinsertf128 in getShuffleCost()
1372 {TTI::SK_Broadcast, MVT::v32i8, 2}, // vpshufb + vinsertf128 in getShuffleCost()
1374 {TTI::SK_Reverse, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1375 {TTI::SK_Reverse, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1376 {TTI::SK_Reverse, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1377 {TTI::SK_Reverse, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1378 {TTI::SK_Reverse, MVT::v16i16, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1380 {TTI::SK_Reverse, MVT::v32i8, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1383 {TTI::SK_Select, MVT::v4i64, 1}, // vblendpd in getShuffleCost()
1384 {TTI::SK_Select, MVT::v4f64, 1}, // vblendpd in getShuffleCost()
1385 {TTI::SK_Select, MVT::v8i32, 1}, // vblendps in getShuffleCost()
1386 {TTI::SK_Select, MVT::v8f32, 1}, // vblendps in getShuffleCost()
1387 {TTI::SK_Select, MVT::v16i16, 3}, // vpand + vpandn + vpor in getShuffleCost()
1388 {TTI::SK_Select, MVT::v32i8, 3}, // vpand + vpandn + vpor in getShuffleCost()
1390 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1391 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1392 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1393 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1394 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1396 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1399 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1400 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1401 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1402 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1403 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1405 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1414 {TTI::SK_Select, MVT::v2i64, 1}, // pblendw in getShuffleCost()
1415 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
1416 {TTI::SK_Select, MVT::v4i32, 1}, // pblendw in getShuffleCost()
1417 {TTI::SK_Select, MVT::v4f32, 1}, // blendps in getShuffleCost()
1418 {TTI::SK_Select, MVT::v8i16, 1}, // pblendw in getShuffleCost()
1419 {TTI::SK_Select, MVT::v16i8, 1} // pblendvb in getShuffleCost()
1427 {TTI::SK_Broadcast, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1428 {TTI::SK_Broadcast, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1430 {TTI::SK_Reverse, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1431 {TTI::SK_Reverse, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1433 {TTI::SK_Select, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
1434 {TTI::SK_Select, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
1436 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1437 {TTI::SK_PermuteSingleSrc, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1439 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
1440 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
1448 {TTI::SK_Broadcast, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1449 {TTI::SK_Broadcast, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1450 {TTI::SK_Broadcast, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1451 {TTI::SK_Broadcast, MVT::v8i16, 2}, // pshuflw + pshufd in getShuffleCost()
1452 {TTI::SK_Broadcast, MVT::v16i8, 3}, // unpck + pshuflw + pshufd in getShuffleCost()
1454 {TTI::SK_Reverse, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1455 {TTI::SK_Reverse, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1456 {TTI::SK_Reverse, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1457 {TTI::SK_Reverse, MVT::v8i16, 3}, // pshuflw + pshufhw + pshufd in getShuffleCost()
1458 {TTI::SK_Reverse, MVT::v16i8, 9}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1461 {TTI::SK_Select, MVT::v2i64, 1}, // movsd in getShuffleCost()
1462 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
1463 {TTI::SK_Select, MVT::v4i32, 2}, // 2*shufps in getShuffleCost()
1464 {TTI::SK_Select, MVT::v8i16, 3}, // pand + pandn + por in getShuffleCost()
1465 {TTI::SK_Select, MVT::v16i8, 3}, // pand + pandn + por in getShuffleCost()
1467 {TTI::SK_PermuteSingleSrc, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1468 {TTI::SK_PermuteSingleSrc, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1469 {TTI::SK_PermuteSingleSrc, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1470 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 5}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1472 { TTI::SK_PermuteSingleSrc, MVT::v16i8, 10 }, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1475 { TTI::SK_PermuteTwoSrc, MVT::v2f64, 1 }, // shufpd in getShuffleCost()
1476 { TTI::SK_PermuteTwoSrc, MVT::v2i64, 1 }, // shufpd in getShuffleCost()
1477 { TTI::SK_PermuteTwoSrc, MVT::v4i32, 2 }, // 2*{unpck,movsd,pshufd} in getShuffleCost()
1478 { TTI::SK_PermuteTwoSrc, MVT::v8i16, 8 }, // blend+permute in getShuffleCost()
1479 { TTI::SK_PermuteTwoSrc, MVT::v16i8, 13 }, // blend+permute in getShuffleCost()
1487 { TTI::SK_Broadcast, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1488 { TTI::SK_Reverse, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1489 { TTI::SK_Select, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
1490 { TTI::SK_PermuteSingleSrc, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1491 { TTI::SK_PermuteTwoSrc, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
1522 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
1523 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
1526 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 1 }, in getCastInstrCost()
1527 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 1 }, in getCastInstrCost()
1528 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 1 }, in getCastInstrCost()
1529 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 1 }, in getCastInstrCost()
1530 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 1 }, in getCastInstrCost()
1531 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 1 }, in getCastInstrCost()
1532 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 1 }, in getCastInstrCost()
1533 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1534 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, 1 }, in getCastInstrCost()
1535 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i1, 1 }, in getCastInstrCost()
1536 { ISD::SIGN_EXTEND, MVT::v64i8, MVT::v64i1, 1 }, in getCastInstrCost()
1539 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 2 }, in getCastInstrCost()
1540 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 2 }, in getCastInstrCost()
1541 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 2 }, in getCastInstrCost()
1542 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 2 }, in getCastInstrCost()
1543 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 2 }, in getCastInstrCost()
1544 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 2 }, in getCastInstrCost()
1545 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 2 }, in getCastInstrCost()
1546 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 2 }, in getCastInstrCost()
1547 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, 2 }, in getCastInstrCost()
1548 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i1, 2 }, in getCastInstrCost()
1549 { ISD::ZERO_EXTEND, MVT::v64i8, MVT::v64i1, 2 }, in getCastInstrCost()
1551 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, 2 }, in getCastInstrCost()
1552 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, // widen to zmm in getCastInstrCost()
1553 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 2 }, // widen to zmm in getCastInstrCost()
1554 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, // widen to zmm in getCastInstrCost()
1555 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i16, 2 }, // vpmovwb in getCastInstrCost()
1556 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, // widen to zmm in getCastInstrCost()
1557 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 2 }, // widen to zmm in getCastInstrCost()
1558 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i16, 2 }, // vpmovwb in getCastInstrCost()
1559 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 2 }, // widen to zmm in getCastInstrCost()
1560 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 2 }, // widen to zmm in getCastInstrCost()
1561 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i16, 2 }, // vpmovwb in getCastInstrCost()
1562 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 2 }, // widen to zmm in getCastInstrCost()
1563 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 2 }, // widen to zmm in getCastInstrCost()
1564 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, 2 }, // widen to zmm in getCastInstrCost()
1565 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i16, 2 }, in getCastInstrCost()
1566 { ISD::TRUNCATE, MVT::v64i1, MVT::v64i8, 2 }, in getCastInstrCost()
1570 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
1571 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
1573 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
1574 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
1576 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
1577 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
1579 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
1580 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
1587 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 1 }, in getCastInstrCost()
1588 { ISD::FP_EXTEND, MVT::v8f64, MVT::v16f32, 3 }, in getCastInstrCost()
1589 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 1 }, in getCastInstrCost()
1591 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1592 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1593 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1594 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1595 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1596 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1597 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1598 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1599 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
1600 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
1601 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
1602 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
1603 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, // zmm vpsllq+vptestmq in getCastInstrCost()
1604 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, // zmm vpsllq+vptestmq in getCastInstrCost()
1605 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
1606 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i32, 2 }, // vpmovdb in getCastInstrCost()
1607 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i32, 2 }, // vpmovdb in getCastInstrCost()
1608 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 2 }, // vpmovdb in getCastInstrCost()
1609 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 2 }, // vpmovdb in getCastInstrCost()
1610 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i64, 2 }, // vpmovqb in getCastInstrCost()
1611 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i64, 1 }, // vpshufb in getCastInstrCost()
1612 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i64, 2 }, // vpmovqb in getCastInstrCost()
1613 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i64, 2 }, // vpmovqw in getCastInstrCost()
1614 { ISD::TRUNCATE, MVT::v8i32, MVT::v8i64, 1 }, // vpmovqd in getCastInstrCost()
1615 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, // zmm vpmovqd in getCastInstrCost()
1616 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i64, 5 },// 2*vpmovqd+concat+vpmovdb in getCastInstrCost()
1618 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, // extend to v16i32 in getCastInstrCost()
1619 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, 8 }, in getCastInstrCost()
1623 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 3 }, in getCastInstrCost()
1624 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 4 }, in getCastInstrCost()
1625 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 3 }, in getCastInstrCost()
1626 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 4 }, in getCastInstrCost()
1627 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 3 }, in getCastInstrCost()
1628 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 4 }, in getCastInstrCost()
1629 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 3 }, in getCastInstrCost()
1630 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 4 }, in getCastInstrCost()
1634 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 3 }, in getCastInstrCost()
1635 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 4 }, in getCastInstrCost()
1636 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 3 }, in getCastInstrCost()
1637 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 4 }, in getCastInstrCost()
1638 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 3 }, in getCastInstrCost()
1639 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 4 }, in getCastInstrCost()
1640 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 3 }, in getCastInstrCost()
1641 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
1643 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, 1 }, // zmm vpternlogd in getCastInstrCost()
1644 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
1645 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, // zmm vpternlogd in getCastInstrCost()
1646 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
1647 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, // zmm vpternlogd in getCastInstrCost()
1648 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
1649 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, // zmm vpternlogq in getCastInstrCost()
1650 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, // zmm vpternlogq+psrlq in getCastInstrCost()
1651 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, // zmm vpternlogq in getCastInstrCost()
1652 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, // zmm vpternlogq+psrlq in getCastInstrCost()
1654 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i1, 1 }, // vpternlogd in getCastInstrCost()
1655 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
1656 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i1, 1 }, // vpternlogq in getCastInstrCost()
1657 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
1659 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
1660 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
1661 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
1662 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
1663 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i8, 1 }, in getCastInstrCost()
1664 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i8, 1 }, in getCastInstrCost()
1665 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
1666 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
1667 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
1668 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
1670 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, 3 }, // FIXME: May not be right in getCastInstrCost()
1671 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, 3 }, // FIXME: May not be right in getCastInstrCost()
1673 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
1674 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
1675 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v16i8, 2 }, in getCastInstrCost()
1676 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i8, 1 }, in getCastInstrCost()
1677 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
1678 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i16, 1 }, in getCastInstrCost()
1679 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
1680 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
1682 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
1683 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
1684 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v16i8, 2 }, in getCastInstrCost()
1685 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i8, 1 }, in getCastInstrCost()
1686 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
1687 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i16, 1 }, in getCastInstrCost()
1688 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
1689 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
1690 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 26 }, in getCastInstrCost()
1691 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 5 }, in getCastInstrCost()
1693 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f32, 2 }, in getCastInstrCost()
1694 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f64, 7 }, in getCastInstrCost()
1695 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v32f64,15 }, in getCastInstrCost()
1696 { ISD::FP_TO_SINT, MVT::v64i8, MVT::v64f32,11 }, in getCastInstrCost()
1697 { ISD::FP_TO_SINT, MVT::v64i8, MVT::v64f64,31 }, in getCastInstrCost()
1698 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f64, 3 }, in getCastInstrCost()
1699 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v16f64, 7 }, in getCastInstrCost()
1700 { ISD::FP_TO_SINT, MVT::v32i16, MVT::v32f32, 5 }, in getCastInstrCost()
1701 { ISD::FP_TO_SINT, MVT::v32i16, MVT::v32f64,15 }, in getCastInstrCost()
1702 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
1703 { ISD::FP_TO_SINT, MVT::v16i32, MVT::v16f64, 3 }, in getCastInstrCost()
1705 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
1706 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f64, 3 }, in getCastInstrCost()
1707 { ISD::FP_TO_UINT, MVT::v8i8, MVT::v8f64, 3 }, in getCastInstrCost()
1708 { ISD::FP_TO_UINT, MVT::v16i32, MVT::v16f32, 1 }, in getCastInstrCost()
1709 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v16f32, 3 }, in getCastInstrCost()
1710 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v16f32, 3 }, in getCastInstrCost()
1715 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 1 }, in getCastInstrCost()
1716 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 1 }, in getCastInstrCost()
1717 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 1 }, in getCastInstrCost()
1718 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 1 }, in getCastInstrCost()
1719 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 1 }, in getCastInstrCost()
1720 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 1 }, in getCastInstrCost()
1721 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 1 }, in getCastInstrCost()
1722 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1723 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, 1 }, in getCastInstrCost()
1726 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 2 }, in getCastInstrCost()
1727 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 2 }, in getCastInstrCost()
1728 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 2 }, in getCastInstrCost()
1729 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 2 }, in getCastInstrCost()
1730 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 2 }, in getCastInstrCost()
1731 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 2 }, in getCastInstrCost()
1732 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 2 }, in getCastInstrCost()
1733 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 2 }, in getCastInstrCost()
1734 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, 2 }, in getCastInstrCost()
1736 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, in getCastInstrCost()
1737 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1738 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, // vpsllw+vptestmw in getCastInstrCost()
1739 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1740 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 2 }, // vpsllw+vptestmw in getCastInstrCost()
1741 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1742 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 2 }, // vpsllw+vptestmw in getCastInstrCost()
1743 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1744 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 2 }, // vpsllw+vptestmw in getCastInstrCost()
1745 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1749 { ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
1750 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
1751 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
1752 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
1754 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
1755 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
1756 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
1757 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
1759 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v4f32, 1 }, in getCastInstrCost()
1760 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
1761 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
1762 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
1764 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v4f32, 1 }, in getCastInstrCost()
1765 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
1766 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
1767 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
1771 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1772 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1773 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1774 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 8 }, // split+2*v8i8 in getCastInstrCost()
1775 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1776 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1777 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1778 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 8 }, // split+2*v8i16 in getCastInstrCost()
1779 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
1780 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
1781 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
1782 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
1783 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
1784 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, // vpmovqd in getCastInstrCost()
1785 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i64, 2 }, // vpmovqb in getCastInstrCost()
1786 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i64, 2 }, // vpmovqw in getCastInstrCost()
1787 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 2 }, // vpmovwb in getCastInstrCost()
1791 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 5 }, in getCastInstrCost()
1792 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 6 }, in getCastInstrCost()
1793 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 5 }, in getCastInstrCost()
1794 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 6 }, in getCastInstrCost()
1795 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 5 }, in getCastInstrCost()
1796 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 6 }, in getCastInstrCost()
1797 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 10 }, in getCastInstrCost()
1798 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 12 }, in getCastInstrCost()
1802 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 4 }, in getCastInstrCost()
1803 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 5 }, in getCastInstrCost()
1804 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 4 }, in getCastInstrCost()
1805 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 5 }, in getCastInstrCost()
1806 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 4 }, in getCastInstrCost()
1807 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 5 }, in getCastInstrCost()
1808 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 10 }, in getCastInstrCost()
1809 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 12 }, in getCastInstrCost()
1811 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, 1 }, // vpternlogd in getCastInstrCost()
1812 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
1813 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, // vpternlogd in getCastInstrCost()
1814 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
1815 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, // vpternlogd in getCastInstrCost()
1816 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
1817 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, // vpternlogq in getCastInstrCost()
1818 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
1819 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, // vpternlogq in getCastInstrCost()
1820 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
1822 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, 1 }, in getCastInstrCost()
1823 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, 1 }, in getCastInstrCost()
1824 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, 1 }, in getCastInstrCost()
1825 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, 1 }, in getCastInstrCost()
1826 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
1827 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
1828 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, 1 }, in getCastInstrCost()
1829 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, 1 }, in getCastInstrCost()
1830 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
1831 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
1832 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
1833 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
1835 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
1836 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, 1 }, in getCastInstrCost()
1837 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
1838 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 1 }, in getCastInstrCost()
1840 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 1 }, in getCastInstrCost()
1841 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 1 }, in getCastInstrCost()
1842 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
1843 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, 1 }, in getCastInstrCost()
1844 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
1845 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 1 }, in getCastInstrCost()
1846 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 1 }, in getCastInstrCost()
1847 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
1848 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
1849 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
1850 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 5 }, in getCastInstrCost()
1851 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
1852 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 5 }, in getCastInstrCost()
1854 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v8f32, 2 }, in getCastInstrCost()
1855 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f32, 2 }, in getCastInstrCost()
1856 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v32f32, 5 }, in getCastInstrCost()
1858 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 1 }, in getCastInstrCost()
1859 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 1 }, in getCastInstrCost()
1860 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 1 }, in getCastInstrCost()
1861 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 1 }, in getCastInstrCost()
1862 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 1 }, in getCastInstrCost()
1863 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 1 }, in getCastInstrCost()
1864 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
1868 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
1869 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
1870 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
1871 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
1872 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1873 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1875 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, 2 }, in getCastInstrCost()
1876 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, 2 }, in getCastInstrCost()
1877 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, 2 }, in getCastInstrCost()
1878 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, 2 }, in getCastInstrCost()
1879 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
1880 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
1881 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, 2 }, in getCastInstrCost()
1882 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, 2 }, in getCastInstrCost()
1883 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
1884 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
1885 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 3 }, in getCastInstrCost()
1886 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 3 }, in getCastInstrCost()
1887 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
1888 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
1890 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, in getCastInstrCost()
1892 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i16, 1 }, in getCastInstrCost()
1893 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, 1 }, in getCastInstrCost()
1894 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, 1 }, in getCastInstrCost()
1895 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i32, 4 }, in getCastInstrCost()
1896 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i64, 4 }, in getCastInstrCost()
1897 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, 1 }, in getCastInstrCost()
1898 { ISD::TRUNCATE, MVT::v8i16, MVT::v2i64, 1 }, in getCastInstrCost()
1899 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i64, 5 }, in getCastInstrCost()
1900 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, in getCastInstrCost()
1901 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 2 }, in getCastInstrCost()
1903 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 3 }, in getCastInstrCost()
1904 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 3 }, in getCastInstrCost()
1906 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v8f32, 1 }, in getCastInstrCost()
1907 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f64, 1 }, in getCastInstrCost()
1908 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f32, 1 }, in getCastInstrCost()
1909 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, 3 }, in getCastInstrCost()
1911 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 3 }, in getCastInstrCost()
1912 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 3 }, in getCastInstrCost()
1913 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v8f32, 1 }, in getCastInstrCost()
1914 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 3 }, in getCastInstrCost()
1915 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
1916 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 4 }, in getCastInstrCost()
1917 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 3 }, in getCastInstrCost()
1918 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v4f64, 4 }, in getCastInstrCost()
1920 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 2 }, in getCastInstrCost()
1921 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, 2 }, in getCastInstrCost()
1922 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 2 }, in getCastInstrCost()
1923 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 2 }, in getCastInstrCost()
1924 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
1925 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
1926 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 3 }, in getCastInstrCost()
1928 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 2 }, in getCastInstrCost()
1929 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, 2 }, in getCastInstrCost()
1930 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 2 }, in getCastInstrCost()
1931 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 2 }, in getCastInstrCost()
1932 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 2 }, in getCastInstrCost()
1933 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 1 }, in getCastInstrCost()
1934 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 2 }, in getCastInstrCost()
1935 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 2 }, in getCastInstrCost()
1936 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 2 }, in getCastInstrCost()
1937 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 4 }, in getCastInstrCost()
1941 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 6 }, in getCastInstrCost()
1942 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 4 }, in getCastInstrCost()
1943 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 7 }, in getCastInstrCost()
1944 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 4 }, in getCastInstrCost()
1945 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
1946 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
1948 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, 3 }, in getCastInstrCost()
1949 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, 3 }, in getCastInstrCost()
1950 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, 3 }, in getCastInstrCost()
1951 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, 3 }, in getCastInstrCost()
1952 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 3 }, in getCastInstrCost()
1953 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 3 }, in getCastInstrCost()
1954 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, 3 }, in getCastInstrCost()
1955 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, 3 }, in getCastInstrCost()
1956 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 3 }, in getCastInstrCost()
1957 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 3 }, in getCastInstrCost()
1958 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 3 }, in getCastInstrCost()
1959 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 3 }, in getCastInstrCost()
1961 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 4 }, in getCastInstrCost()
1962 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 5 }, in getCastInstrCost()
1963 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 4 }, in getCastInstrCost()
1964 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 9 }, in getCastInstrCost()
1965 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i64, 11 }, in getCastInstrCost()
1967 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, // and+extract+packuswb in getCastInstrCost()
1968 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i32, 5 }, in getCastInstrCost()
1969 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
1970 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i64, 5 }, in getCastInstrCost()
1971 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i64, 3 }, // and+extract+2*packusdw in getCastInstrCost()
1972 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 2 }, in getCastInstrCost()
1974 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i1, 3 }, in getCastInstrCost()
1975 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i1, 3 }, in getCastInstrCost()
1976 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i1, 8 }, in getCastInstrCost()
1977 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, 4 }, in getCastInstrCost()
1978 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v16i8, 2 }, in getCastInstrCost()
1979 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 4 }, in getCastInstrCost()
1980 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v8i16, 2 }, in getCastInstrCost()
1981 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 2 }, in getCastInstrCost()
1982 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, 2 }, in getCastInstrCost()
1983 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 4 }, in getCastInstrCost()
1984 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, 5 }, in getCastInstrCost()
1985 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, 8 }, in getCastInstrCost()
1987 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i1, 7 }, in getCastInstrCost()
1988 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i1, 7 }, in getCastInstrCost()
1989 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i1, 6 }, in getCastInstrCost()
1990 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, 4 }, in getCastInstrCost()
1991 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v16i8, 2 }, in getCastInstrCost()
1992 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 4 }, in getCastInstrCost()
1993 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v8i16, 2 }, in getCastInstrCost()
1994 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 4 }, in getCastInstrCost()
1995 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 4 }, in getCastInstrCost()
1996 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 5 }, in getCastInstrCost()
1997 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 6 }, in getCastInstrCost()
1998 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 8 }, in getCastInstrCost()
1999 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 10 }, in getCastInstrCost()
2000 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 10 }, in getCastInstrCost()
2001 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 18 }, in getCastInstrCost()
2002 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
2003 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 10 }, in getCastInstrCost()
2005 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v8f32, 2 }, in getCastInstrCost()
2006 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f64, 2 }, in getCastInstrCost()
2007 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v8f32, 2 }, in getCastInstrCost()
2008 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v4f64, 2 }, in getCastInstrCost()
2009 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f32, 2 }, in getCastInstrCost()
2010 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f64, 2 }, in getCastInstrCost()
2011 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v8f32, 2 }, in getCastInstrCost()
2012 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v4f64, 2 }, in getCastInstrCost()
2013 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f64, 2 }, in getCastInstrCost()
2014 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f32, 2 }, in getCastInstrCost()
2015 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, 5 }, in getCastInstrCost()
2017 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v8f32, 2 }, in getCastInstrCost()
2018 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f64, 2 }, in getCastInstrCost()
2019 { ISD::FP_TO_UINT, MVT::v32i8, MVT::v8f32, 2 }, in getCastInstrCost()
2020 { ISD::FP_TO_UINT, MVT::v32i8, MVT::v4f64, 2 }, in getCastInstrCost()
2021 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f32, 2 }, in getCastInstrCost()
2022 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f64, 2 }, in getCastInstrCost()
2023 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v8f32, 2 }, in getCastInstrCost()
2024 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v4f64, 2 }, in getCastInstrCost()
2025 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 3 }, in getCastInstrCost()
2026 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2027 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 6 }, in getCastInstrCost()
2028 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 7 }, in getCastInstrCost()
2029 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v4f64, 7 }, in getCastInstrCost()
2031 { ISD::FP_EXTEND, MVT::v4f64, MVT::v4f32, 1 }, in getCastInstrCost()
2032 { ISD::FP_ROUND, MVT::v4f32, MVT::v4f64, 1 }, in getCastInstrCost()
2036 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v16i8, 1 }, in getCastInstrCost()
2037 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v16i8, 1 }, in getCastInstrCost()
2038 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v16i8, 1 }, in getCastInstrCost()
2039 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v16i8, 1 }, in getCastInstrCost()
2040 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v16i8, 1 }, in getCastInstrCost()
2041 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v16i8, 1 }, in getCastInstrCost()
2042 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v8i16, 1 }, in getCastInstrCost()
2043 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v8i16, 1 }, in getCastInstrCost()
2044 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v8i16, 1 }, in getCastInstrCost()
2045 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v8i16, 1 }, in getCastInstrCost()
2046 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v4i32, 1 }, in getCastInstrCost()
2047 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v4i32, 1 }, in getCastInstrCost()
2050 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 1 }, // PMOVXZBQ in getCastInstrCost()
2051 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 1 }, // PMOVXZWQ in getCastInstrCost()
2052 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 1 }, // PMOVXZBD in getCastInstrCost()
2054 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, 2 }, in getCastInstrCost()
2055 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, 2 }, in getCastInstrCost()
2056 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, 2 }, in getCastInstrCost()
2058 { ISD::SINT_TO_FP, MVT::f32, MVT::i32, 1 }, in getCastInstrCost()
2059 { ISD::SINT_TO_FP, MVT::f64, MVT::i32, 1 }, in getCastInstrCost()
2060 { ISD::SINT_TO_FP, MVT::f32, MVT::i64, 1 }, in getCastInstrCost()
2061 { ISD::SINT_TO_FP, MVT::f64, MVT::i64, 1 }, in getCastInstrCost()
2062 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, 1 }, in getCastInstrCost()
2063 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2064 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, 1 }, in getCastInstrCost()
2065 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2066 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
2067 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, 1 }, in getCastInstrCost()
2068 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 2 }, in getCastInstrCost()
2070 { ISD::UINT_TO_FP, MVT::f32, MVT::i32, 1 }, in getCastInstrCost()
2071 { ISD::UINT_TO_FP, MVT::f64, MVT::i32, 1 }, in getCastInstrCost()
2072 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 4 }, in getCastInstrCost()
2073 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 4 }, in getCastInstrCost()
2074 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, 1 }, in getCastInstrCost()
2075 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2076 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, 1 }, in getCastInstrCost()
2077 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2078 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 3 }, in getCastInstrCost()
2079 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 3 }, in getCastInstrCost()
2080 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, 2 }, in getCastInstrCost()
2081 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, 12 }, in getCastInstrCost()
2082 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 22 }, in getCastInstrCost()
2083 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 4 }, in getCastInstrCost()
2085 { ISD::FP_TO_SINT, MVT::i32, MVT::f32, 1 }, in getCastInstrCost()
2086 { ISD::FP_TO_SINT, MVT::i64, MVT::f32, 1 }, in getCastInstrCost()
2087 { ISD::FP_TO_SINT, MVT::i32, MVT::f64, 1 }, in getCastInstrCost()
2088 { ISD::FP_TO_SINT, MVT::i64, MVT::f64, 1 }, in getCastInstrCost()
2089 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f32, 2 }, in getCastInstrCost()
2090 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v2f64, 2 }, in getCastInstrCost()
2091 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f32, 1 }, in getCastInstrCost()
2092 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v2f64, 1 }, in getCastInstrCost()
2093 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, 1 }, in getCastInstrCost()
2094 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v2f64, 1 }, in getCastInstrCost()
2096 { ISD::FP_TO_UINT, MVT::i32, MVT::f32, 1 }, in getCastInstrCost()
2097 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
2098 { ISD::FP_TO_UINT, MVT::i32, MVT::f64, 1 }, in getCastInstrCost()
2099 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 4 }, in getCastInstrCost()
2100 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f32, 2 }, in getCastInstrCost()
2101 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v2f64, 2 }, in getCastInstrCost()
2102 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f32, 1 }, in getCastInstrCost()
2103 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v2f64, 1 }, in getCastInstrCost()
2104 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 4 }, in getCastInstrCost()
2105 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2112 { ISD::SINT_TO_FP, MVT::f32, MVT::i32, 3 }, in getCastInstrCost()
2113 { ISD::SINT_TO_FP, MVT::f64, MVT::i32, 3 }, in getCastInstrCost()
2114 { ISD::SINT_TO_FP, MVT::f32, MVT::i64, 3 }, in getCastInstrCost()
2115 { ISD::SINT_TO_FP, MVT::f64, MVT::i64, 3 }, in getCastInstrCost()
2116 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, 3 }, in getCastInstrCost()
2117 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 4 }, in getCastInstrCost()
2118 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, 3 }, in getCastInstrCost()
2119 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 4 }, in getCastInstrCost()
2120 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 3 }, in getCastInstrCost()
2121 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, 4 }, in getCastInstrCost()
2122 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, 8 }, in getCastInstrCost()
2123 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 8 }, in getCastInstrCost()
2125 { ISD::UINT_TO_FP, MVT::f32, MVT::i32, 3 }, in getCastInstrCost()
2126 { ISD::UINT_TO_FP, MVT::f64, MVT::i32, 3 }, in getCastInstrCost()
2127 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 8 }, in getCastInstrCost()
2128 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 9 }, in getCastInstrCost()
2129 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 4 }, in getCastInstrCost()
2130 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, 4 }, in getCastInstrCost()
2131 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, 4 }, in getCastInstrCost()
2132 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 4 }, in getCastInstrCost()
2133 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 7 }, in getCastInstrCost()
2134 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, 7 }, in getCastInstrCost()
2135 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 5 }, in getCastInstrCost()
2136 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 15 }, in getCastInstrCost()
2137 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, 18 }, in getCastInstrCost()
2139 { ISD::FP_TO_SINT, MVT::i32, MVT::f32, 4 }, in getCastInstrCost()
2140 { ISD::FP_TO_SINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
2141 { ISD::FP_TO_SINT, MVT::i32, MVT::f64, 4 }, in getCastInstrCost()
2142 { ISD::FP_TO_SINT, MVT::i64, MVT::f64, 4 }, in getCastInstrCost()
2143 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f32, 6 }, in getCastInstrCost()
2144 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v2f64, 6 }, in getCastInstrCost()
2145 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f32, 5 }, in getCastInstrCost()
2146 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v2f64, 5 }, in getCastInstrCost()
2147 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, 4 }, in getCastInstrCost()
2148 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2150 { ISD::FP_TO_UINT, MVT::i32, MVT::f32, 4 }, in getCastInstrCost()
2151 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
2152 { ISD::FP_TO_UINT, MVT::i32, MVT::f64, 4 }, in getCastInstrCost()
2153 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 15 }, in getCastInstrCost()
2154 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f32, 6 }, in getCastInstrCost()
2155 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v2f64, 6 }, in getCastInstrCost()
2156 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f32, 5 }, in getCastInstrCost()
2157 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v2f64, 5 }, in getCastInstrCost()
2158 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 8 }, in getCastInstrCost()
2159 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 8 }, in getCastInstrCost()
2161 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v16i8, 4 }, in getCastInstrCost()
2162 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v16i8, 4 }, in getCastInstrCost()
2163 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v16i8, 2 }, in getCastInstrCost()
2164 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v16i8, 3 }, in getCastInstrCost()
2165 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v16i8, 1 }, in getCastInstrCost()
2166 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v16i8, 2 }, in getCastInstrCost()
2167 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v8i16, 2 }, in getCastInstrCost()
2168 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v8i16, 3 }, in getCastInstrCost()
2169 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v8i16, 1 }, in getCastInstrCost()
2170 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v8i16, 2 }, in getCastInstrCost()
2171 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v4i32, 1 }, in getCastInstrCost()
2172 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v4i32, 2 }, in getCastInstrCost()
2175 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 1 }, // PSHUFD in getCastInstrCost()
2176 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, // PUNPCKLWD+DQ in getCastInstrCost()
2177 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // PUNPCKLBW+WD+PSHUFD in getCastInstrCost()
2178 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 1 }, // PUNPCKLWD in getCastInstrCost()
2179 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, // PUNPCKLBW+WD in getCastInstrCost()
2180 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 1 }, // PUNPCKLBW in getCastInstrCost()
2182 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i16, 2 }, // PAND+PACKUSWB in getCastInstrCost()
2183 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, in getCastInstrCost()
2184 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, 3 }, // PAND+2*PACKUSWB in getCastInstrCost()
2185 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 7 }, in getCastInstrCost()
2186 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i32, 1 }, in getCastInstrCost()
2187 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, 3 }, in getCastInstrCost()
2188 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
2189 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32,10 }, in getCastInstrCost()
2190 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, 4 }, // PAND+3*PACKUSWB in getCastInstrCost()
2191 { ISD::TRUNCATE, MVT::v8i16, MVT::v2i64, 2 }, // PSHUFD+PSHUFLW in getCastInstrCost()
2192 { ISD::TRUNCATE, MVT::v4i32, MVT::v2i64, 1 }, // PSHUFD in getCastInstrCost()
2201 MVT SimpleSrcTy = SrcTy.getSimpleVT(); in getCastInstrCost()
2202 MVT SimpleDstTy = DstTy.getSimpleVT(); in getCastInstrCost()
2262 std::pair<InstructionCost, MVT> LTSrc = TLI->getTypeLegalizationCost(DL, Src); in getCastInstrCost()
2263 std::pair<InstructionCost, MVT> LTDest = in getCastInstrCost()
2360 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getCmpSelInstrCost()
2362 MVT MTy = LT.second; in getCmpSelInstrCost()
2410 { ISD::SETCC, MVT::v2i64, 2 }, in getCmpSelInstrCost()
2414 { ISD::SETCC, MVT::v32i16, 1 }, in getCmpSelInstrCost()
2415 { ISD::SETCC, MVT::v64i8, 1 }, in getCmpSelInstrCost()
2417 { ISD::SELECT, MVT::v32i16, 1 }, in getCmpSelInstrCost()
2418 { ISD::SELECT, MVT::v64i8, 1 }, in getCmpSelInstrCost()
2422 { ISD::SETCC, MVT::v8i64, 1 }, in getCmpSelInstrCost()
2423 { ISD::SETCC, MVT::v16i32, 1 }, in getCmpSelInstrCost()
2424 { ISD::SETCC, MVT::v8f64, 1 }, in getCmpSelInstrCost()
2425 { ISD::SETCC, MVT::v16f32, 1 }, in getCmpSelInstrCost()
2427 { ISD::SELECT, MVT::v8i64, 1 }, in getCmpSelInstrCost()
2428 { ISD::SELECT, MVT::v16i32, 1 }, in getCmpSelInstrCost()
2429 { ISD::SELECT, MVT::v8f64, 1 }, in getCmpSelInstrCost()
2430 { ISD::SELECT, MVT::v16f32, 1 }, in getCmpSelInstrCost()
2432 { ISD::SETCC, MVT::v32i16, 2 }, // FIXME: should probably be 4 in getCmpSelInstrCost()
2433 { ISD::SETCC, MVT::v64i8, 2 }, // FIXME: should probably be 4 in getCmpSelInstrCost()
2435 { ISD::SELECT, MVT::v32i16, 2 }, // FIXME: should be 3 in getCmpSelInstrCost()
2436 { ISD::SELECT, MVT::v64i8, 2 }, // FIXME: should be 3 in getCmpSelInstrCost()
2440 { ISD::SETCC, MVT::v4i64, 1 }, in getCmpSelInstrCost()
2441 { ISD::SETCC, MVT::v8i32, 1 }, in getCmpSelInstrCost()
2442 { ISD::SETCC, MVT::v16i16, 1 }, in getCmpSelInstrCost()
2443 { ISD::SETCC, MVT::v32i8, 1 }, in getCmpSelInstrCost()
2445 { ISD::SELECT, MVT::v4i64, 1 }, // pblendvb in getCmpSelInstrCost()
2446 { ISD::SELECT, MVT::v8i32, 1 }, // pblendvb in getCmpSelInstrCost()
2447 { ISD::SELECT, MVT::v16i16, 1 }, // pblendvb in getCmpSelInstrCost()
2448 { ISD::SELECT, MVT::v32i8, 1 }, // pblendvb in getCmpSelInstrCost()
2452 { ISD::SETCC, MVT::v4f64, 1 }, in getCmpSelInstrCost()
2453 { ISD::SETCC, MVT::v8f32, 1 }, in getCmpSelInstrCost()
2455 { ISD::SETCC, MVT::v4i64, 4 }, in getCmpSelInstrCost()
2456 { ISD::SETCC, MVT::v8i32, 4 }, in getCmpSelInstrCost()
2457 { ISD::SETCC, MVT::v16i16, 4 }, in getCmpSelInstrCost()
2458 { ISD::SETCC, MVT::v32i8, 4 }, in getCmpSelInstrCost()
2460 { ISD::SELECT, MVT::v4f64, 1 }, // vblendvpd in getCmpSelInstrCost()
2461 { ISD::SELECT, MVT::v8f32, 1 }, // vblendvps in getCmpSelInstrCost()
2462 { ISD::SELECT, MVT::v4i64, 1 }, // vblendvpd in getCmpSelInstrCost()
2463 { ISD::SELECT, MVT::v8i32, 1 }, // vblendvps in getCmpSelInstrCost()
2464 { ISD::SELECT, MVT::v16i16, 3 }, // vandps + vandnps + vorps in getCmpSelInstrCost()
2465 { ISD::SELECT, MVT::v32i8, 3 }, // vandps + vandnps + vorps in getCmpSelInstrCost()
2469 { ISD::SETCC, MVT::v2f64, 1 }, in getCmpSelInstrCost()
2470 { ISD::SETCC, MVT::v4f32, 1 }, in getCmpSelInstrCost()
2471 { ISD::SETCC, MVT::v2i64, 1 }, in getCmpSelInstrCost()
2475 { ISD::SELECT, MVT::v2f64, 1 }, // blendvpd in getCmpSelInstrCost()
2476 { ISD::SELECT, MVT::v4f32, 1 }, // blendvps in getCmpSelInstrCost()
2477 { ISD::SELECT, MVT::v2i64, 1 }, // pblendvb in getCmpSelInstrCost()
2478 { ISD::SELECT, MVT::v4i32, 1 }, // pblendvb in getCmpSelInstrCost()
2479 { ISD::SELECT, MVT::v8i16, 1 }, // pblendvb in getCmpSelInstrCost()
2480 { ISD::SELECT, MVT::v16i8, 1 }, // pblendvb in getCmpSelInstrCost()
2484 { ISD::SETCC, MVT::v2f64, 2 }, in getCmpSelInstrCost()
2485 { ISD::SETCC, MVT::f64, 1 }, in getCmpSelInstrCost()
2486 { ISD::SETCC, MVT::v2i64, 8 }, in getCmpSelInstrCost()
2487 { ISD::SETCC, MVT::v4i32, 1 }, in getCmpSelInstrCost()
2488 { ISD::SETCC, MVT::v8i16, 1 }, in getCmpSelInstrCost()
2489 { ISD::SETCC, MVT::v16i8, 1 }, in getCmpSelInstrCost()
2491 { ISD::SELECT, MVT::v2f64, 3 }, // andpd + andnpd + orpd in getCmpSelInstrCost()
2492 { ISD::SELECT, MVT::v2i64, 3 }, // pand + pandn + por in getCmpSelInstrCost()
2493 { ISD::SELECT, MVT::v4i32, 3 }, // pand + pandn + por in getCmpSelInstrCost()
2494 { ISD::SELECT, MVT::v8i16, 3 }, // pand + pandn + por in getCmpSelInstrCost()
2495 { ISD::SELECT, MVT::v16i8, 3 }, // pand + pandn + por in getCmpSelInstrCost()
2499 { ISD::SETCC, MVT::v4f32, 2 }, in getCmpSelInstrCost()
2500 { ISD::SETCC, MVT::f32, 1 }, in getCmpSelInstrCost()
2502 { ISD::SELECT, MVT::v4f32, 3 }, // andps + andnps + orps in getCmpSelInstrCost()
2560 { ISD::CTLZ, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2561 { ISD::CTLZ, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2562 { ISD::CTLZ, MVT::v32i16, 8 }, in getTypeBasedIntrinsicInstrCost()
2563 { ISD::CTLZ, MVT::v64i8, 20 }, in getTypeBasedIntrinsicInstrCost()
2564 { ISD::CTLZ, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2565 { ISD::CTLZ, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2566 { ISD::CTLZ, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2567 { ISD::CTLZ, MVT::v32i8, 10 }, in getTypeBasedIntrinsicInstrCost()
2568 { ISD::CTLZ, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2569 { ISD::CTLZ, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2570 { ISD::CTLZ, MVT::v8i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2571 { ISD::CTLZ, MVT::v16i8, 4 }, in getTypeBasedIntrinsicInstrCost()
2574 { ISD::ABS, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2575 { ISD::ABS, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2576 { ISD::BITREVERSE, MVT::v8i64, 5 }, in getTypeBasedIntrinsicInstrCost()
2577 { ISD::BITREVERSE, MVT::v16i32, 5 }, in getTypeBasedIntrinsicInstrCost()
2578 { ISD::BITREVERSE, MVT::v32i16, 5 }, in getTypeBasedIntrinsicInstrCost()
2579 { ISD::BITREVERSE, MVT::v64i8, 5 }, in getTypeBasedIntrinsicInstrCost()
2580 { ISD::BSWAP, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2581 { ISD::BSWAP, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2582 { ISD::BSWAP, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2583 { ISD::CTLZ, MVT::v8i64, 23 }, in getTypeBasedIntrinsicInstrCost()
2584 { ISD::CTLZ, MVT::v16i32, 22 }, in getTypeBasedIntrinsicInstrCost()
2585 { ISD::CTLZ, MVT::v32i16, 18 }, in getTypeBasedIntrinsicInstrCost()
2586 { ISD::CTLZ, MVT::v64i8, 17 }, in getTypeBasedIntrinsicInstrCost()
2587 { ISD::CTPOP, MVT::v8i64, 7 }, in getTypeBasedIntrinsicInstrCost()
2588 { ISD::CTPOP, MVT::v16i32, 11 }, in getTypeBasedIntrinsicInstrCost()
2589 { ISD::CTPOP, MVT::v32i16, 9 }, in getTypeBasedIntrinsicInstrCost()
2590 { ISD::CTPOP, MVT::v64i8, 6 }, in getTypeBasedIntrinsicInstrCost()
2591 { ISD::CTTZ, MVT::v8i64, 10 }, in getTypeBasedIntrinsicInstrCost()
2592 { ISD::CTTZ, MVT::v16i32, 14 }, in getTypeBasedIntrinsicInstrCost()
2593 { ISD::CTTZ, MVT::v32i16, 12 }, in getTypeBasedIntrinsicInstrCost()
2594 { ISD::CTTZ, MVT::v64i8, 9 }, in getTypeBasedIntrinsicInstrCost()
2595 { ISD::SADDSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2596 { ISD::SADDSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2597 { ISD::SMAX, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2598 { ISD::SMAX, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2599 { ISD::SMIN, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2600 { ISD::SMIN, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2601 { ISD::SSUBSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2602 { ISD::SSUBSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2603 { ISD::UADDSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2604 { ISD::UADDSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2605 { ISD::UMAX, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2606 { ISD::UMAX, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2607 { ISD::UMIN, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2608 { ISD::UMIN, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2609 { ISD::USUBSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2610 { ISD::USUBSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2613 { ISD::ABS, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2614 { ISD::ABS, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2615 { ISD::ABS, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2616 { ISD::ABS, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2617 { ISD::ABS, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2618 { ISD::ABS, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2619 { ISD::BITREVERSE, MVT::v8i64, 36 }, in getTypeBasedIntrinsicInstrCost()
2620 { ISD::BITREVERSE, MVT::v16i32, 24 }, in getTypeBasedIntrinsicInstrCost()
2621 { ISD::BITREVERSE, MVT::v32i16, 10 }, in getTypeBasedIntrinsicInstrCost()
2622 { ISD::BITREVERSE, MVT::v64i8, 10 }, in getTypeBasedIntrinsicInstrCost()
2623 { ISD::BSWAP, MVT::v8i64, 4 }, in getTypeBasedIntrinsicInstrCost()
2624 { ISD::BSWAP, MVT::v16i32, 4 }, in getTypeBasedIntrinsicInstrCost()
2625 { ISD::BSWAP, MVT::v32i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2626 { ISD::CTLZ, MVT::v8i64, 29 }, in getTypeBasedIntrinsicInstrCost()
2627 { ISD::CTLZ, MVT::v16i32, 35 }, in getTypeBasedIntrinsicInstrCost()
2628 { ISD::CTLZ, MVT::v32i16, 28 }, in getTypeBasedIntrinsicInstrCost()
2629 { ISD::CTLZ, MVT::v64i8, 18 }, in getTypeBasedIntrinsicInstrCost()
2630 { ISD::CTPOP, MVT::v8i64, 16 }, in getTypeBasedIntrinsicInstrCost()
2631 { ISD::CTPOP, MVT::v16i32, 24 }, in getTypeBasedIntrinsicInstrCost()
2632 { ISD::CTPOP, MVT::v32i16, 18 }, in getTypeBasedIntrinsicInstrCost()
2633 { ISD::CTPOP, MVT::v64i8, 12 }, in getTypeBasedIntrinsicInstrCost()
2634 { ISD::CTTZ, MVT::v8i64, 20 }, in getTypeBasedIntrinsicInstrCost()
2635 { ISD::CTTZ, MVT::v16i32, 28 }, in getTypeBasedIntrinsicInstrCost()
2636 { ISD::CTTZ, MVT::v32i16, 24 }, in getTypeBasedIntrinsicInstrCost()
2637 { ISD::CTTZ, MVT::v64i8, 18 }, in getTypeBasedIntrinsicInstrCost()
2638 { ISD::SMAX, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2639 { ISD::SMAX, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2640 { ISD::SMAX, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2641 { ISD::SMAX, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2642 { ISD::SMAX, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2643 { ISD::SMAX, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2644 { ISD::SMIN, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2645 { ISD::SMIN, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2646 { ISD::SMIN, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2647 { ISD::SMIN, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2648 { ISD::SMIN, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2649 { ISD::SMIN, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2650 { ISD::UMAX, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2651 { ISD::UMAX, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2652 { ISD::UMAX, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2653 { ISD::UMAX, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2654 { ISD::UMAX, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2655 { ISD::UMAX, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2656 { ISD::UMIN, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2657 { ISD::UMIN, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2658 { ISD::UMIN, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2659 { ISD::UMIN, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2660 { ISD::UMIN, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2661 { ISD::UMIN, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2662 { ISD::USUBSAT, MVT::v16i32, 2 }, // pmaxud + psubd in getTypeBasedIntrinsicInstrCost()
2663 { ISD::USUBSAT, MVT::v2i64, 2 }, // pmaxuq + psubq in getTypeBasedIntrinsicInstrCost()
2664 { ISD::USUBSAT, MVT::v4i64, 2 }, // pmaxuq + psubq in getTypeBasedIntrinsicInstrCost()
2665 { ISD::USUBSAT, MVT::v8i64, 2 }, // pmaxuq + psubq in getTypeBasedIntrinsicInstrCost()
2666 { ISD::UADDSAT, MVT::v16i32, 3 }, // not + pminud + paddd in getTypeBasedIntrinsicInstrCost()
2667 { ISD::UADDSAT, MVT::v2i64, 3 }, // not + pminuq + paddq in getTypeBasedIntrinsicInstrCost()
2668 { ISD::UADDSAT, MVT::v4i64, 3 }, // not + pminuq + paddq in getTypeBasedIntrinsicInstrCost()
2669 { ISD::UADDSAT, MVT::v8i64, 3 }, // not + pminuq + paddq in getTypeBasedIntrinsicInstrCost()
2670 { ISD::SADDSAT, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2671 { ISD::SADDSAT, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2672 { ISD::SSUBSAT, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2673 { ISD::SSUBSAT, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2674 { ISD::UADDSAT, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2675 { ISD::UADDSAT, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2676 { ISD::USUBSAT, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2677 { ISD::USUBSAT, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2678 { ISD::FMAXNUM, MVT::f32, 2 }, in getTypeBasedIntrinsicInstrCost()
2679 { ISD::FMAXNUM, MVT::v4f32, 2 }, in getTypeBasedIntrinsicInstrCost()
2680 { ISD::FMAXNUM, MVT::v8f32, 2 }, in getTypeBasedIntrinsicInstrCost()
2681 { ISD::FMAXNUM, MVT::v16f32, 2 }, in getTypeBasedIntrinsicInstrCost()
2682 { ISD::FMAXNUM, MVT::f64, 2 }, in getTypeBasedIntrinsicInstrCost()
2683 { ISD::FMAXNUM, MVT::v2f64, 2 }, in getTypeBasedIntrinsicInstrCost()
2684 { ISD::FMAXNUM, MVT::v4f64, 2 }, in getTypeBasedIntrinsicInstrCost()
2685 { ISD::FMAXNUM, MVT::v8f64, 2 }, in getTypeBasedIntrinsicInstrCost()
2688 { ISD::BITREVERSE, MVT::v4i64, 4 }, in getTypeBasedIntrinsicInstrCost()
2689 { ISD::BITREVERSE, MVT::v8i32, 4 }, in getTypeBasedIntrinsicInstrCost()
2690 { ISD::BITREVERSE, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2691 { ISD::BITREVERSE, MVT::v32i8, 4 }, in getTypeBasedIntrinsicInstrCost()
2692 { ISD::BITREVERSE, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2693 { ISD::BITREVERSE, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2694 { ISD::BITREVERSE, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2695 { ISD::BITREVERSE, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2696 { ISD::BITREVERSE, MVT::i64, 3 }, in getTypeBasedIntrinsicInstrCost()
2697 { ISD::BITREVERSE, MVT::i32, 3 }, in getTypeBasedIntrinsicInstrCost()
2698 { ISD::BITREVERSE, MVT::i16, 3 }, in getTypeBasedIntrinsicInstrCost()
2699 { ISD::BITREVERSE, MVT::i8, 3 } in getTypeBasedIntrinsicInstrCost()
2702 { ISD::ABS, MVT::v4i64, 2 }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getTypeBasedIntrinsicInstrCost()
2703 { ISD::ABS, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2704 { ISD::ABS, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2705 { ISD::ABS, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2706 { ISD::BITREVERSE, MVT::v4i64, 5 }, in getTypeBasedIntrinsicInstrCost()
2707 { ISD::BITREVERSE, MVT::v8i32, 5 }, in getTypeBasedIntrinsicInstrCost()
2708 { ISD::BITREVERSE, MVT::v16i16, 5 }, in getTypeBasedIntrinsicInstrCost()
2709 { ISD::BITREVERSE, MVT::v32i8, 5 }, in getTypeBasedIntrinsicInstrCost()
2710 { ISD::BSWAP, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2711 { ISD::BSWAP, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2712 { ISD::BSWAP, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2713 { ISD::CTLZ, MVT::v4i64, 23 }, in getTypeBasedIntrinsicInstrCost()
2714 { ISD::CTLZ, MVT::v8i32, 18 }, in getTypeBasedIntrinsicInstrCost()
2715 { ISD::CTLZ, MVT::v16i16, 14 }, in getTypeBasedIntrinsicInstrCost()
2716 { ISD::CTLZ, MVT::v32i8, 9 }, in getTypeBasedIntrinsicInstrCost()
2717 { ISD::CTPOP, MVT::v4i64, 7 }, in getTypeBasedIntrinsicInstrCost()
2718 { ISD::CTPOP, MVT::v8i32, 11 }, in getTypeBasedIntrinsicInstrCost()
2719 { ISD::CTPOP, MVT::v16i16, 9 }, in getTypeBasedIntrinsicInstrCost()
2720 { ISD::CTPOP, MVT::v32i8, 6 }, in getTypeBasedIntrinsicInstrCost()
2721 { ISD::CTTZ, MVT::v4i64, 10 }, in getTypeBasedIntrinsicInstrCost()
2722 { ISD::CTTZ, MVT::v8i32, 14 }, in getTypeBasedIntrinsicInstrCost()
2723 { ISD::CTTZ, MVT::v16i16, 12 }, in getTypeBasedIntrinsicInstrCost()
2724 { ISD::CTTZ, MVT::v32i8, 9 }, in getTypeBasedIntrinsicInstrCost()
2725 { ISD::SADDSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2726 { ISD::SADDSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2727 { ISD::SMAX, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2728 { ISD::SMAX, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2729 { ISD::SMAX, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2730 { ISD::SMIN, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2731 { ISD::SMIN, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2732 { ISD::SMIN, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2733 { ISD::SSUBSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2734 { ISD::SSUBSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2735 { ISD::UADDSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2736 { ISD::UADDSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2737 { ISD::UADDSAT, MVT::v8i32, 3 }, // not + pminud + paddd in getTypeBasedIntrinsicInstrCost()
2738 { ISD::UMAX, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2739 { ISD::UMAX, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2740 { ISD::UMAX, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2741 { ISD::UMIN, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2742 { ISD::UMIN, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2743 { ISD::UMIN, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2744 { ISD::USUBSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2745 { ISD::USUBSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2746 { ISD::USUBSAT, MVT::v8i32, 2 }, // pmaxud + psubd in getTypeBasedIntrinsicInstrCost()
2747 { ISD::FMAXNUM, MVT::v8f32, 3 }, // MAXPS + CMPUNORDPS + BLENDVPS in getTypeBasedIntrinsicInstrCost()
2748 { ISD::FMAXNUM, MVT::v4f64, 3 }, // MAXPD + CMPUNORDPD + BLENDVPD in getTypeBasedIntrinsicInstrCost()
2749 { ISD::FSQRT, MVT::f32, 7 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2750 { ISD::FSQRT, MVT::v4f32, 7 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2751 { ISD::FSQRT, MVT::v8f32, 14 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2752 { ISD::FSQRT, MVT::f64, 14 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2753 { ISD::FSQRT, MVT::v2f64, 14 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2754 { ISD::FSQRT, MVT::v4f64, 28 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2757 { ISD::ABS, MVT::v4i64, 5 }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getTypeBasedIntrinsicInstrCost()
2758 { ISD::ABS, MVT::v8i32, 3 }, in getTypeBasedIntrinsicInstrCost()
2759 { ISD::ABS, MVT::v16i16, 3 }, in getTypeBasedIntrinsicInstrCost()
2760 { ISD::ABS, MVT::v32i8, 3 }, in getTypeBasedIntrinsicInstrCost()
2761 { ISD::BITREVERSE, MVT::v4i64, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2762 { ISD::BITREVERSE, MVT::v8i32, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2763 { ISD::BITREVERSE, MVT::v16i16, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2764 { ISD::BITREVERSE, MVT::v32i8, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2765 { ISD::BSWAP, MVT::v4i64, 4 }, in getTypeBasedIntrinsicInstrCost()
2766 { ISD::BSWAP, MVT::v8i32, 4 }, in getTypeBasedIntrinsicInstrCost()
2767 { ISD::BSWAP, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2768 { ISD::CTLZ, MVT::v4i64, 48 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2769 { ISD::CTLZ, MVT::v8i32, 38 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2770 { ISD::CTLZ, MVT::v16i16, 30 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2771 { ISD::CTLZ, MVT::v32i8, 20 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2772 { ISD::CTPOP, MVT::v4i64, 16 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2773 { ISD::CTPOP, MVT::v8i32, 24 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2774 { ISD::CTPOP, MVT::v16i16, 20 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2775 { ISD::CTPOP, MVT::v32i8, 14 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2776 { ISD::CTTZ, MVT::v4i64, 22 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2777 { ISD::CTTZ, MVT::v8i32, 30 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2778 { ISD::CTTZ, MVT::v16i16, 26 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2779 { ISD::CTTZ, MVT::v32i8, 20 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2780 { ISD::SADDSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2781 { ISD::SADDSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2782 { ISD::SMAX, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2783 { ISD::SMAX, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2784 { ISD::SMAX, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2785 { ISD::SMIN, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2786 { ISD::SMIN, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2787 { ISD::SMIN, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2788 { ISD::SSUBSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2789 { ISD::SSUBSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2790 { ISD::UADDSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2791 { ISD::UADDSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2792 { ISD::UADDSAT, MVT::v8i32, 8 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2793 { ISD::UMAX, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2794 { ISD::UMAX, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2795 { ISD::UMAX, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2796 { ISD::UMIN, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2797 { ISD::UMIN, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2798 { ISD::UMIN, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2799 { ISD::USUBSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2800 { ISD::USUBSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2801 { ISD::USUBSAT, MVT::v8i32, 6 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2802 { ISD::FMAXNUM, MVT::f32, 3 }, // MAXSS + CMPUNORDSS + BLENDVPS in getTypeBasedIntrinsicInstrCost()
2803 { ISD::FMAXNUM, MVT::v4f32, 3 }, // MAXPS + CMPUNORDPS + BLENDVPS in getTypeBasedIntrinsicInstrCost()
2804 { ISD::FMAXNUM, MVT::v8f32, 5 }, // MAXPS + CMPUNORDPS + BLENDVPS + ? in getTypeBasedIntrinsicInstrCost()
2805 { ISD::FMAXNUM, MVT::f64, 3 }, // MAXSD + CMPUNORDSD + BLENDVPD in getTypeBasedIntrinsicInstrCost()
2806 { ISD::FMAXNUM, MVT::v2f64, 3 }, // MAXPD + CMPUNORDPD + BLENDVPD in getTypeBasedIntrinsicInstrCost()
2807 { ISD::FMAXNUM, MVT::v4f64, 5 }, // MAXPD + CMPUNORDPD + BLENDVPD + ? in getTypeBasedIntrinsicInstrCost()
2808 { ISD::FSQRT, MVT::f32, 14 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2809 { ISD::FSQRT, MVT::v4f32, 14 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2810 { ISD::FSQRT, MVT::v8f32, 28 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2811 { ISD::FSQRT, MVT::f64, 21 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2812 { ISD::FSQRT, MVT::v2f64, 21 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2813 { ISD::FSQRT, MVT::v4f64, 43 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2816 { ISD::FSQRT, MVT::f32, 19 }, // sqrtss in getTypeBasedIntrinsicInstrCost()
2817 { ISD::FSQRT, MVT::v4f32, 37 }, // sqrtps in getTypeBasedIntrinsicInstrCost()
2818 { ISD::FSQRT, MVT::f64, 34 }, // sqrtsd in getTypeBasedIntrinsicInstrCost()
2819 { ISD::FSQRT, MVT::v2f64, 67 }, // sqrtpd in getTypeBasedIntrinsicInstrCost()
2822 { ISD::FSQRT, MVT::f32, 20 }, // sqrtss in getTypeBasedIntrinsicInstrCost()
2823 { ISD::FSQRT, MVT::v4f32, 40 }, // sqrtps in getTypeBasedIntrinsicInstrCost()
2824 { ISD::FSQRT, MVT::f64, 35 }, // sqrtsd in getTypeBasedIntrinsicInstrCost()
2825 { ISD::FSQRT, MVT::v2f64, 70 }, // sqrtpd in getTypeBasedIntrinsicInstrCost()
2828 { ISD::USUBSAT, MVT::v4i32, 2 }, // pmaxud + psubd in getTypeBasedIntrinsicInstrCost()
2829 { ISD::UADDSAT, MVT::v4i32, 3 }, // not + pminud + paddd in getTypeBasedIntrinsicInstrCost()
2830 { ISD::FSQRT, MVT::f32, 18 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2831 { ISD::FSQRT, MVT::v4f32, 18 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2834 { ISD::ABS, MVT::v2i64, 2 }, // BLENDVPD(X,PSUBQ(0,X),X) in getTypeBasedIntrinsicInstrCost()
2835 { ISD::SMAX, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2836 { ISD::SMAX, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2837 { ISD::SMIN, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2838 { ISD::SMIN, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2839 { ISD::UMAX, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2840 { ISD::UMAX, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2841 { ISD::UMIN, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2842 { ISD::UMIN, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2845 { ISD::ABS, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2846 { ISD::ABS, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2847 { ISD::ABS, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2848 { ISD::BITREVERSE, MVT::v2i64, 5 }, in getTypeBasedIntrinsicInstrCost()
2849 { ISD::BITREVERSE, MVT::v4i32, 5 }, in getTypeBasedIntrinsicInstrCost()
2850 { ISD::BITREVERSE, MVT::v8i16, 5 }, in getTypeBasedIntrinsicInstrCost()
2851 { ISD::BITREVERSE, MVT::v16i8, 5 }, in getTypeBasedIntrinsicInstrCost()
2852 { ISD::BSWAP, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2853 { ISD::BSWAP, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2854 { ISD::BSWAP, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2855 { ISD::CTLZ, MVT::v2i64, 23 }, in getTypeBasedIntrinsicInstrCost()
2856 { ISD::CTLZ, MVT::v4i32, 18 }, in getTypeBasedIntrinsicInstrCost()
2857 { ISD::CTLZ, MVT::v8i16, 14 }, in getTypeBasedIntrinsicInstrCost()
2858 { ISD::CTLZ, MVT::v16i8, 9 }, in getTypeBasedIntrinsicInstrCost()
2859 { ISD::CTPOP, MVT::v2i64, 7 }, in getTypeBasedIntrinsicInstrCost()
2860 { ISD::CTPOP, MVT::v4i32, 11 }, in getTypeBasedIntrinsicInstrCost()
2861 { ISD::CTPOP, MVT::v8i16, 9 }, in getTypeBasedIntrinsicInstrCost()
2862 { ISD::CTPOP, MVT::v16i8, 6 }, in getTypeBasedIntrinsicInstrCost()
2863 { ISD::CTTZ, MVT::v2i64, 10 }, in getTypeBasedIntrinsicInstrCost()
2864 { ISD::CTTZ, MVT::v4i32, 14 }, in getTypeBasedIntrinsicInstrCost()
2865 { ISD::CTTZ, MVT::v8i16, 12 }, in getTypeBasedIntrinsicInstrCost()
2866 { ISD::CTTZ, MVT::v16i8, 9 } in getTypeBasedIntrinsicInstrCost()
2869 { ISD::ABS, MVT::v2i64, 4 }, in getTypeBasedIntrinsicInstrCost()
2870 { ISD::ABS, MVT::v4i32, 3 }, in getTypeBasedIntrinsicInstrCost()
2871 { ISD::ABS, MVT::v8i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2872 { ISD::ABS, MVT::v16i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2873 { ISD::BITREVERSE, MVT::v2i64, 29 }, in getTypeBasedIntrinsicInstrCost()
2874 { ISD::BITREVERSE, MVT::v4i32, 27 }, in getTypeBasedIntrinsicInstrCost()
2875 { ISD::BITREVERSE, MVT::v8i16, 27 }, in getTypeBasedIntrinsicInstrCost()
2876 { ISD::BITREVERSE, MVT::v16i8, 20 }, in getTypeBasedIntrinsicInstrCost()
2877 { ISD::BSWAP, MVT::v2i64, 7 }, in getTypeBasedIntrinsicInstrCost()
2878 { ISD::BSWAP, MVT::v4i32, 7 }, in getTypeBasedIntrinsicInstrCost()
2879 { ISD::BSWAP, MVT::v8i16, 7 }, in getTypeBasedIntrinsicInstrCost()
2880 { ISD::CTLZ, MVT::v2i64, 25 }, in getTypeBasedIntrinsicInstrCost()
2881 { ISD::CTLZ, MVT::v4i32, 26 }, in getTypeBasedIntrinsicInstrCost()
2882 { ISD::CTLZ, MVT::v8i16, 20 }, in getTypeBasedIntrinsicInstrCost()
2883 { ISD::CTLZ, MVT::v16i8, 17 }, in getTypeBasedIntrinsicInstrCost()
2884 { ISD::CTPOP, MVT::v2i64, 12 }, in getTypeBasedIntrinsicInstrCost()
2885 { ISD::CTPOP, MVT::v4i32, 15 }, in getTypeBasedIntrinsicInstrCost()
2886 { ISD::CTPOP, MVT::v8i16, 13 }, in getTypeBasedIntrinsicInstrCost()
2887 { ISD::CTPOP, MVT::v16i8, 10 }, in getTypeBasedIntrinsicInstrCost()
2888 { ISD::CTTZ, MVT::v2i64, 14 }, in getTypeBasedIntrinsicInstrCost()
2889 { ISD::CTTZ, MVT::v4i32, 18 }, in getTypeBasedIntrinsicInstrCost()
2890 { ISD::CTTZ, MVT::v8i16, 16 }, in getTypeBasedIntrinsicInstrCost()
2891 { ISD::CTTZ, MVT::v16i8, 13 }, in getTypeBasedIntrinsicInstrCost()
2892 { ISD::SADDSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2893 { ISD::SADDSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2894 { ISD::SMAX, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2895 { ISD::SMIN, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2896 { ISD::SSUBSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2897 { ISD::SSUBSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2898 { ISD::UADDSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2899 { ISD::UADDSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2900 { ISD::UMAX, MVT::v8i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2901 { ISD::UMAX, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2902 { ISD::UMIN, MVT::v8i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2903 { ISD::UMIN, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2904 { ISD::USUBSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2905 { ISD::USUBSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2906 { ISD::FMAXNUM, MVT::f64, 4 }, in getTypeBasedIntrinsicInstrCost()
2907 { ISD::FMAXNUM, MVT::v2f64, 4 }, in getTypeBasedIntrinsicInstrCost()
2908 { ISD::FSQRT, MVT::f64, 32 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2909 { ISD::FSQRT, MVT::v2f64, 32 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2912 { ISD::FMAXNUM, MVT::f32, 4 }, in getTypeBasedIntrinsicInstrCost()
2913 { ISD::FMAXNUM, MVT::v4f32, 4 }, in getTypeBasedIntrinsicInstrCost()
2914 { ISD::FSQRT, MVT::f32, 28 }, // Pentium III from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2915 { ISD::FSQRT, MVT::v4f32, 56 }, // Pentium III from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2918 { ISD::CTTZ, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2921 { ISD::CTTZ, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2922 { ISD::CTTZ, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2923 { ISD::CTTZ, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2926 { ISD::CTLZ, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2929 { ISD::CTLZ, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2930 { ISD::CTLZ, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2931 { ISD::CTLZ, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2934 { ISD::CTPOP, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2937 { ISD::CTPOP, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2938 { ISD::CTPOP, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2939 { ISD::CTPOP, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2942 { ISD::ABS, MVT::i64, 2 }, // SUB+CMOV in getTypeBasedIntrinsicInstrCost()
2943 { ISD::BITREVERSE, MVT::i64, 14 }, in getTypeBasedIntrinsicInstrCost()
2944 { ISD::BSWAP, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2945 { ISD::CTLZ, MVT::i64, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
2946 { ISD::CTTZ, MVT::i64, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
2947 { ISD::CTPOP, MVT::i64, 10 }, in getTypeBasedIntrinsicInstrCost()
2948 { ISD::SADDO, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2949 { ISD::UADDO, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2950 { ISD::UMULO, MVT::i64, 2 }, // mulq + seto in getTypeBasedIntrinsicInstrCost()
2953 { ISD::ABS, MVT::i32, 2 }, // SUB+CMOV in getTypeBasedIntrinsicInstrCost()
2954 { ISD::ABS, MVT::i16, 2 }, // SUB+CMOV in getTypeBasedIntrinsicInstrCost()
2955 { ISD::BITREVERSE, MVT::i32, 14 }, in getTypeBasedIntrinsicInstrCost()
2956 { ISD::BITREVERSE, MVT::i16, 14 }, in getTypeBasedIntrinsicInstrCost()
2957 { ISD::BITREVERSE, MVT::i8, 11 }, in getTypeBasedIntrinsicInstrCost()
2958 { ISD::BSWAP, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2959 { ISD::BSWAP, MVT::i16, 1 }, // ROL in getTypeBasedIntrinsicInstrCost()
2960 { ISD::CTLZ, MVT::i32, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
2961 { ISD::CTLZ, MVT::i16, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
2962 { ISD::CTLZ, MVT::i8, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
2963 { ISD::CTTZ, MVT::i32, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
2964 { ISD::CTTZ, MVT::i16, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
2965 { ISD::CTTZ, MVT::i8, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
2966 { ISD::CTPOP, MVT::i32, 8 }, in getTypeBasedIntrinsicInstrCost()
2967 { ISD::CTPOP, MVT::i16, 9 }, in getTypeBasedIntrinsicInstrCost()
2968 { ISD::CTPOP, MVT::i8, 7 }, in getTypeBasedIntrinsicInstrCost()
2969 { ISD::SADDO, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2970 { ISD::SADDO, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2971 { ISD::SADDO, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2972 { ISD::UADDO, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2973 { ISD::UADDO, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2974 { ISD::UADDO, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2975 { ISD::UMULO, MVT::i32, 2 }, // mul + seto in getTypeBasedIntrinsicInstrCost()
2976 { ISD::UMULO, MVT::i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2977 { ISD::UMULO, MVT::i8, 2 }, in getTypeBasedIntrinsicInstrCost()
3059 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, OpTy); in getTypeBasedIntrinsicInstrCost()
3060 MVT MTy = LT.second; in getTypeBasedIntrinsicInstrCost()
3068 unsigned Cost = MTy.getVectorElementType() == MVT::i8 ? 1 : 2; in getTypeBasedIntrinsicInstrCost()
3202 { ISD::ROTL, MVT::v8i64, 1 }, in getIntrinsicInstrCost()
3203 { ISD::ROTL, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
3204 { ISD::ROTL, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
3205 { ISD::ROTL, MVT::v16i32, 1 }, in getIntrinsicInstrCost()
3206 { ISD::ROTL, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
3207 { ISD::ROTL, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
3208 { ISD::ROTR, MVT::v8i64, 1 }, in getIntrinsicInstrCost()
3209 { ISD::ROTR, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
3210 { ISD::ROTR, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
3211 { ISD::ROTR, MVT::v16i32, 1 }, in getIntrinsicInstrCost()
3212 { ISD::ROTR, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
3213 { ISD::ROTR, MVT::v4i32, 1 } in getIntrinsicInstrCost()
3217 { ISD::ROTL, MVT::v4i64, 4 }, in getIntrinsicInstrCost()
3218 { ISD::ROTL, MVT::v8i32, 4 }, in getIntrinsicInstrCost()
3219 { ISD::ROTL, MVT::v16i16, 4 }, in getIntrinsicInstrCost()
3220 { ISD::ROTL, MVT::v32i8, 4 }, in getIntrinsicInstrCost()
3221 { ISD::ROTL, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
3222 { ISD::ROTL, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
3223 { ISD::ROTL, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
3224 { ISD::ROTL, MVT::v16i8, 1 }, in getIntrinsicInstrCost()
3225 { ISD::ROTR, MVT::v4i64, 6 }, in getIntrinsicInstrCost()
3226 { ISD::ROTR, MVT::v8i32, 6 }, in getIntrinsicInstrCost()
3227 { ISD::ROTR, MVT::v16i16, 6 }, in getIntrinsicInstrCost()
3228 { ISD::ROTR, MVT::v32i8, 6 }, in getIntrinsicInstrCost()
3229 { ISD::ROTR, MVT::v2i64, 2 }, in getIntrinsicInstrCost()
3230 { ISD::ROTR, MVT::v4i32, 2 }, in getIntrinsicInstrCost()
3231 { ISD::ROTR, MVT::v8i16, 2 }, in getIntrinsicInstrCost()
3232 { ISD::ROTR, MVT::v16i8, 2 } in getIntrinsicInstrCost()
3235 { ISD::ROTL, MVT::i64, 1 }, in getIntrinsicInstrCost()
3236 { ISD::ROTR, MVT::i64, 1 }, in getIntrinsicInstrCost()
3237 { ISD::FSHL, MVT::i64, 4 } in getIntrinsicInstrCost()
3240 { ISD::ROTL, MVT::i32, 1 }, in getIntrinsicInstrCost()
3241 { ISD::ROTL, MVT::i16, 1 }, in getIntrinsicInstrCost()
3242 { ISD::ROTL, MVT::i8, 1 }, in getIntrinsicInstrCost()
3243 { ISD::ROTR, MVT::i32, 1 }, in getIntrinsicInstrCost()
3244 { ISD::ROTR, MVT::i16, 1 }, in getIntrinsicInstrCost()
3245 { ISD::ROTR, MVT::i8, 1 }, in getIntrinsicInstrCost()
3246 { ISD::FSHL, MVT::i32, 4 }, in getIntrinsicInstrCost()
3247 { ISD::FSHL, MVT::i16, 4 }, in getIntrinsicInstrCost()
3248 { ISD::FSHL, MVT::i8, 4 } in getIntrinsicInstrCost()
3273 std::pair<InstructionCost, MVT> LT = in getIntrinsicInstrCost()
3275 MVT MTy = LT.second; in getIntrinsicInstrCost()
3300 { ISD::EXTRACT_VECTOR_ELT, MVT::i8, 4 }, in getVectorInstrCost()
3301 { ISD::EXTRACT_VECTOR_ELT, MVT::i16, 4 }, in getVectorInstrCost()
3302 { ISD::EXTRACT_VECTOR_ELT, MVT::i32, 4 }, in getVectorInstrCost()
3303 { ISD::EXTRACT_VECTOR_ELT, MVT::i64, 7 } in getVectorInstrCost()
3343 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Val); in getVectorInstrCost()
3380 MVT MScalarTy = LT.second.getScalarType(); in getVectorInstrCost()
3386 if ((MScalarTy == MVT::i16 && ST->hasSSE2()) || in getVectorInstrCost()
3391 if (MScalarTy == MVT::f32 && ST->hasSSE41() && in getVectorInstrCost()
3431 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty); in getScalarizationOverhead()
3432 MVT MScalarTy = LT.second.getScalarType(); in getScalarizationOverhead()
3434 if ((MScalarTy == MVT::i16 && ST->hasSSE2()) || in getScalarizationOverhead()
3436 (MScalarTy == MVT::f32 && ST->hasSSE41())) { in getScalarizationOverhead()
3476 if (MScalarTy == MVT::f32) in getScalarizationOverhead()
3529 if (TLI->getValueType(DL, Src, true) == MVT::Other) in getMemoryOpCost()
3534 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Src); in getMemoryOpCost()
3697 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, SrcVTy); in getMaskedMemoryOpCost()
3758 { ISD::FADD, MVT::v2f64, 3 }, in getArithmeticReductionCost()
3759 { ISD::ADD, MVT::v2i64, 5 }, in getArithmeticReductionCost()
3763 { ISD::FADD, MVT::v2f64, 2 }, in getArithmeticReductionCost()
3764 { ISD::FADD, MVT::v2f32, 2 }, in getArithmeticReductionCost()
3765 { ISD::FADD, MVT::v4f32, 4 }, in getArithmeticReductionCost()
3766 { ISD::ADD, MVT::v2i64, 2 }, // The data reported by the IACA tool is "1.6". in getArithmeticReductionCost()
3767 { ISD::ADD, MVT::v2i32, 2 }, // FIXME: chosen to be less than v4i32 in getArithmeticReductionCost()
3768 { ISD::ADD, MVT::v4i32, 3 }, // The data reported by the IACA tool is "3.3". in getArithmeticReductionCost()
3769 { ISD::ADD, MVT::v2i16, 2 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
3770 { ISD::ADD, MVT::v4i16, 3 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
3771 { ISD::ADD, MVT::v8i16, 4 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
3772 { ISD::ADD, MVT::v2i8, 2 }, in getArithmeticReductionCost()
3773 { ISD::ADD, MVT::v4i8, 2 }, in getArithmeticReductionCost()
3774 { ISD::ADD, MVT::v8i8, 2 }, in getArithmeticReductionCost()
3775 { ISD::ADD, MVT::v16i8, 3 }, in getArithmeticReductionCost()
3779 { ISD::FADD, MVT::v4f64, 3 }, in getArithmeticReductionCost()
3780 { ISD::FADD, MVT::v4f32, 3 }, in getArithmeticReductionCost()
3781 { ISD::FADD, MVT::v8f32, 4 }, in getArithmeticReductionCost()
3782 { ISD::ADD, MVT::v2i64, 1 }, // The data reported by the IACA tool is "1.5". in getArithmeticReductionCost()
3783 { ISD::ADD, MVT::v4i64, 3 }, in getArithmeticReductionCost()
3784 { ISD::ADD, MVT::v8i32, 5 }, in getArithmeticReductionCost()
3785 { ISD::ADD, MVT::v16i16, 5 }, in getArithmeticReductionCost()
3786 { ISD::ADD, MVT::v32i8, 4 }, in getArithmeticReductionCost()
3797 MVT MTy = VT.getSimpleVT(); in getArithmeticReductionCost()
3811 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getArithmeticReductionCost()
3813 MVT MTy = LT.second; in getArithmeticReductionCost()
3818 if (ISD == ISD::MUL && MTy.getScalarType() == MVT::i8) { in getArithmeticReductionCost()
3852 { ISD::AND, MVT::v2i1, 3 }, in getArithmeticReductionCost()
3853 { ISD::AND, MVT::v4i1, 5 }, in getArithmeticReductionCost()
3854 { ISD::AND, MVT::v8i1, 7 }, in getArithmeticReductionCost()
3855 { ISD::AND, MVT::v16i1, 9 }, in getArithmeticReductionCost()
3856 { ISD::AND, MVT::v32i1, 11 }, in getArithmeticReductionCost()
3857 { ISD::AND, MVT::v64i1, 13 }, in getArithmeticReductionCost()
3858 { ISD::OR, MVT::v2i1, 3 }, in getArithmeticReductionCost()
3859 { ISD::OR, MVT::v4i1, 5 }, in getArithmeticReductionCost()
3860 { ISD::OR, MVT::v8i1, 7 }, in getArithmeticReductionCost()
3861 { ISD::OR, MVT::v16i1, 9 }, in getArithmeticReductionCost()
3862 { ISD::OR, MVT::v32i1, 11 }, in getArithmeticReductionCost()
3863 { ISD::OR, MVT::v64i1, 13 }, in getArithmeticReductionCost()
3867 { ISD::AND, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
3868 { ISD::AND, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
3869 { ISD::OR, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
3870 { ISD::OR, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
3874 { ISD::AND, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
3875 { ISD::AND, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
3876 { ISD::AND, MVT::v16i16, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
3877 { ISD::AND, MVT::v32i8, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
3878 { ISD::OR, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
3879 { ISD::OR, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
3880 { ISD::OR, MVT::v16i16, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
3881 { ISD::OR, MVT::v32i8, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
3885 { ISD::AND, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
3886 { ISD::AND, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
3887 { ISD::AND, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
3888 { ISD::AND, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
3889 { ISD::OR, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
3890 { ISD::OR, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
3891 { ISD::OR, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
3892 { ISD::OR, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
3999 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty); in getMinMaxCost()
4001 MVT MTy = LT.second; in getMinMaxCost()
4013 {ISD::FMINNUM, MVT::v4f32, 1}, in getMinMaxCost()
4017 {ISD::FMINNUM, MVT::v2f64, 1}, in getMinMaxCost()
4018 {ISD::SMIN, MVT::v8i16, 1}, in getMinMaxCost()
4019 {ISD::UMIN, MVT::v16i8, 1}, in getMinMaxCost()
4023 {ISD::SMIN, MVT::v4i32, 1}, in getMinMaxCost()
4024 {ISD::UMIN, MVT::v4i32, 1}, in getMinMaxCost()
4025 {ISD::UMIN, MVT::v8i16, 1}, in getMinMaxCost()
4026 {ISD::SMIN, MVT::v16i8, 1}, in getMinMaxCost()
4030 {ISD::UMIN, MVT::v2i64, 3}, // xor+pcmpgtq+blendvpd in getMinMaxCost()
4034 {ISD::FMINNUM, MVT::v8f32, 1}, in getMinMaxCost()
4035 {ISD::FMINNUM, MVT::v4f64, 1}, in getMinMaxCost()
4036 {ISD::SMIN, MVT::v8i32, 3}, in getMinMaxCost()
4037 {ISD::UMIN, MVT::v8i32, 3}, in getMinMaxCost()
4038 {ISD::SMIN, MVT::v16i16, 3}, in getMinMaxCost()
4039 {ISD::UMIN, MVT::v16i16, 3}, in getMinMaxCost()
4040 {ISD::SMIN, MVT::v32i8, 3}, in getMinMaxCost()
4041 {ISD::UMIN, MVT::v32i8, 3}, in getMinMaxCost()
4045 {ISD::SMIN, MVT::v8i32, 1}, in getMinMaxCost()
4046 {ISD::UMIN, MVT::v8i32, 1}, in getMinMaxCost()
4047 {ISD::SMIN, MVT::v16i16, 1}, in getMinMaxCost()
4048 {ISD::UMIN, MVT::v16i16, 1}, in getMinMaxCost()
4049 {ISD::SMIN, MVT::v32i8, 1}, in getMinMaxCost()
4050 {ISD::UMIN, MVT::v32i8, 1}, in getMinMaxCost()
4054 {ISD::FMINNUM, MVT::v16f32, 1}, in getMinMaxCost()
4055 {ISD::FMINNUM, MVT::v8f64, 1}, in getMinMaxCost()
4056 {ISD::SMIN, MVT::v2i64, 1}, in getMinMaxCost()
4057 {ISD::UMIN, MVT::v2i64, 1}, in getMinMaxCost()
4058 {ISD::SMIN, MVT::v4i64, 1}, in getMinMaxCost()
4059 {ISD::UMIN, MVT::v4i64, 1}, in getMinMaxCost()
4060 {ISD::SMIN, MVT::v8i64, 1}, in getMinMaxCost()
4061 {ISD::UMIN, MVT::v8i64, 1}, in getMinMaxCost()
4062 {ISD::SMIN, MVT::v16i32, 1}, in getMinMaxCost()
4063 {ISD::UMIN, MVT::v16i32, 1}, in getMinMaxCost()
4067 {ISD::SMIN, MVT::v32i16, 1}, in getMinMaxCost()
4068 {ISD::UMIN, MVT::v32i16, 1}, in getMinMaxCost()
4069 {ISD::SMIN, MVT::v64i8, 1}, in getMinMaxCost()
4070 {ISD::UMIN, MVT::v64i8, 1}, in getMinMaxCost()
4129 std::pair<InstructionCost, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getMinMaxReductionCost()
4131 MVT MTy = LT.second; in getMinMaxReductionCost()
4146 {ISD::UMIN, MVT::v2i16, 5}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
4147 {ISD::UMIN, MVT::v4i16, 7}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
4148 {ISD::UMIN, MVT::v8i16, 9}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
4152 {ISD::SMIN, MVT::v2i16, 3}, // same as sse2 in getMinMaxReductionCost()
4153 {ISD::SMIN, MVT::v4i16, 5}, // same as sse2 in getMinMaxReductionCost()
4154 {ISD::UMIN, MVT::v2i16, 5}, // same as sse2 in getMinMaxReductionCost()
4155 {ISD::UMIN, MVT::v4i16, 7}, // same as sse2 in getMinMaxReductionCost()
4156 {ISD::SMIN, MVT::v8i16, 4}, // phminposuw+xor in getMinMaxReductionCost()
4157 {ISD::UMIN, MVT::v8i16, 4}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
4158 {ISD::SMIN, MVT::v2i8, 3}, // pminsb in getMinMaxReductionCost()
4159 {ISD::SMIN, MVT::v4i8, 5}, // pminsb in getMinMaxReductionCost()
4160 {ISD::SMIN, MVT::v8i8, 7}, // pminsb in getMinMaxReductionCost()
4161 {ISD::SMIN, MVT::v16i8, 6}, in getMinMaxReductionCost()
4162 {ISD::UMIN, MVT::v2i8, 3}, // same as sse2 in getMinMaxReductionCost()
4163 {ISD::UMIN, MVT::v4i8, 5}, // same as sse2 in getMinMaxReductionCost()
4164 {ISD::UMIN, MVT::v8i8, 7}, // same as sse2 in getMinMaxReductionCost()
4165 {ISD::UMIN, MVT::v16i8, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
4169 {ISD::SMIN, MVT::v16i16, 6}, in getMinMaxReductionCost()
4170 {ISD::UMIN, MVT::v16i16, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
4171 {ISD::SMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
4172 {ISD::UMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
4176 {ISD::SMIN, MVT::v32i16, 8}, in getMinMaxReductionCost()
4177 {ISD::UMIN, MVT::v32i16, 8}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
4178 {ISD::SMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
4179 {ISD::UMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
4187 MVT MTy = VT.getSimpleVT(); in getMinMaxReductionCost()
4556 std::pair<InstructionCost, MVT> IdxsLT = in getGSVectorCost()
4558 std::pair<InstructionCost, MVT> SrcLT = in getGSVectorCost()
4934 MVT LegalVT = getTLI()->getTypeLegalizationCost(DL, VecTy).second; in getInterleavedMemoryOpCostAVX2()
4968 {2, MVT::v4i64, 6}, // (load 8i64 and) deinterleave into 2 x 4i64 in getInterleavedMemoryOpCostAVX2()
4970 {3, MVT::v2i8, 10}, // (load 6i8 and) deinterleave into 3 x 2i8 in getInterleavedMemoryOpCostAVX2()
4971 {3, MVT::v4i8, 4}, // (load 12i8 and) deinterleave into 3 x 4i8 in getInterleavedMemoryOpCostAVX2()
4972 {3, MVT::v8i8, 9}, // (load 24i8 and) deinterleave into 3 x 8i8 in getInterleavedMemoryOpCostAVX2()
4973 {3, MVT::v16i8, 11}, // (load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCostAVX2()
4974 {3, MVT::v32i8, 13}, // (load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX2()
4976 {3, MVT::v8i32, 17}, // (load 24i32 and) deinterleave into 3 x 8i32 in getInterleavedMemoryOpCostAVX2()
4978 {4, MVT::v2i8, 12}, // (load 8i8 and) deinterleave into 4 x 2i8 in getInterleavedMemoryOpCostAVX2()
4979 {4, MVT::v4i8, 4}, // (load 16i8 and) deinterleave into 4 x 4i8 in getInterleavedMemoryOpCostAVX2()
4980 {4, MVT::v8i8, 20}, // (load 32i8 and) deinterleave into 4 x 8i8 in getInterleavedMemoryOpCostAVX2()
4981 {4, MVT::v16i8, 39}, // (load 64i8 and) deinterleave into 4 x 16i8 in getInterleavedMemoryOpCostAVX2()
4982 {4, MVT::v32i8, 80}, // (load 128i8 and) deinterleave into 4 x 32i8 in getInterleavedMemoryOpCostAVX2()
4984 {8, MVT::v8i32, 40} // (load 64i32 and) deinterleave into 8 x 8i32 in getInterleavedMemoryOpCostAVX2()
4988 {2, MVT::v4i64, 6}, // interleave 2 x 4i64 into 8i64 (and store) in getInterleavedMemoryOpCostAVX2()
4990 {3, MVT::v2i8, 7}, // interleave 3 x 2i8 into 6i8 (and store) in getInterleavedMemoryOpCostAVX2()
4991 {3, MVT::v4i8, 8}, // interleave 3 x 4i8 into 12i8 (and store) in getInterleavedMemoryOpCostAVX2()
4992 {3, MVT::v8i8, 11}, // interleave 3 x 8i8 into 24i8 (and store) in getInterleavedMemoryOpCostAVX2()
4993 {3, MVT::v16i8, 11}, // interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCostAVX2()
4994 {3, MVT::v32i8, 13}, // interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX2()
4996 {4, MVT::v2i8, 12}, // interleave 4 x 2i8 into 8i8 (and store) in getInterleavedMemoryOpCostAVX2()
4997 {4, MVT::v4i8, 9}, // interleave 4 x 4i8 into 16i8 (and store) in getInterleavedMemoryOpCostAVX2()
4998 {4, MVT::v8i8, 10}, // interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCostAVX2()
4999 {4, MVT::v16i8, 10}, // interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCostAVX2()
5000 {4, MVT::v32i8, 12} // interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCostAVX2()
5039 MVT LegalVT = getTLI()->getTypeLegalizationCost(DL, VecTy).second; in getInterleavedMemoryOpCostAVX512()
5051 MVT VT = MVT::getVectorVT(MVT::getVT(VecTy->getScalarType()), VF); in getInterleavedMemoryOpCostAVX512()
5061 {3, MVT::v16i8, 12}, //(load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCostAVX512()
5062 {3, MVT::v32i8, 14}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
5063 {3, MVT::v64i8, 22}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
5115 {3, MVT::v16i8, 12}, // interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCostAVX512()
5116 {3, MVT::v32i8, 14}, // interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
5117 {3, MVT::v64i8, 26}, // interleave 3 x 64i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
5119 {4, MVT::v8i8, 10}, // interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCostAVX512()
5120 {4, MVT::v16i8, 11}, // interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCostAVX512()
5121 {4, MVT::v32i8, 14}, // interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCostAVX512()
5122 {4, MVT::v64i8, 24} // interleave 4 x 32i8 into 256i8 (and store) in getInterleavedMemoryOpCostAVX512()