Lines Matching refs:MVT
186 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty); in getArithmeticInstrCost()
192 { ISD::FDIV, MVT::f32, 18 }, // divss in getArithmeticInstrCost()
193 { ISD::FDIV, MVT::v4f32, 35 }, // divps in getArithmeticInstrCost()
194 { ISD::FDIV, MVT::f64, 33 }, // divsd in getArithmeticInstrCost()
195 { ISD::FDIV, MVT::v2f64, 65 }, // divpd in getArithmeticInstrCost()
204 { ISD::MUL, MVT::v4i32, 11 }, // pmulld in getArithmeticInstrCost()
205 { ISD::MUL, MVT::v8i16, 2 }, // pmullw in getArithmeticInstrCost()
206 { ISD::MUL, MVT::v16i8, 14 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
207 { ISD::FMUL, MVT::f64, 2 }, // mulsd in getArithmeticInstrCost()
208 { ISD::FMUL, MVT::v2f64, 4 }, // mulpd in getArithmeticInstrCost()
209 { ISD::FMUL, MVT::v4f32, 2 }, // mulps in getArithmeticInstrCost()
210 { ISD::FDIV, MVT::f32, 17 }, // divss in getArithmeticInstrCost()
211 { ISD::FDIV, MVT::v4f32, 39 }, // divps in getArithmeticInstrCost()
212 { ISD::FDIV, MVT::f64, 32 }, // divsd in getArithmeticInstrCost()
213 { ISD::FDIV, MVT::v2f64, 69 }, // divpd in getArithmeticInstrCost()
214 { ISD::FADD, MVT::v2f64, 2 }, // addpd in getArithmeticInstrCost()
215 { ISD::FSUB, MVT::v2f64, 2 }, // subpd in getArithmeticInstrCost()
221 { ISD::MUL, MVT::v2i64, 17 }, in getArithmeticInstrCost()
223 { ISD::ADD, MVT::v2i64, 4 }, in getArithmeticInstrCost()
224 { ISD::SUB, MVT::v2i64, 4 }, in getArithmeticInstrCost()
228 if (Args.size() == 2 && ISD == ISD::MUL && LT.second == MVT::v4i32) { in getArithmeticInstrCost()
304 { ISD::SHL, MVT::v64i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
305 { ISD::SRL, MVT::v64i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
306 { ISD::SRA, MVT::v64i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
317 { ISD::SRA, MVT::v2i64, 1 }, in getArithmeticInstrCost()
318 { ISD::SRA, MVT::v4i64, 1 }, in getArithmeticInstrCost()
319 { ISD::SRA, MVT::v8i64, 1 }, in getArithmeticInstrCost()
321 { ISD::SHL, MVT::v64i8, 4 }, // psllw + pand. in getArithmeticInstrCost()
322 { ISD::SRL, MVT::v64i8, 4 }, // psrlw + pand. in getArithmeticInstrCost()
323 { ISD::SRA, MVT::v64i8, 8 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
325 { ISD::SDIV, MVT::v16i32, 6 }, // pmuludq sequence in getArithmeticInstrCost()
326 { ISD::SREM, MVT::v16i32, 8 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
327 { ISD::UDIV, MVT::v16i32, 5 }, // pmuludq sequence in getArithmeticInstrCost()
328 { ISD::UREM, MVT::v16i32, 7 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
339 { ISD::SHL, MVT::v32i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
340 { ISD::SRL, MVT::v32i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
341 { ISD::SRA, MVT::v32i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
343 { ISD::SRA, MVT::v4i64, 4 }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
345 { ISD::SDIV, MVT::v8i32, 6 }, // pmuludq sequence in getArithmeticInstrCost()
346 { ISD::SREM, MVT::v8i32, 8 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
347 { ISD::UDIV, MVT::v8i32, 5 }, // pmuludq sequence in getArithmeticInstrCost()
348 { ISD::UREM, MVT::v8i32, 7 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
359 { ISD::SHL, MVT::v16i8, 2 }, // psllw + pand. in getArithmeticInstrCost()
360 { ISD::SRL, MVT::v16i8, 2 }, // psrlw + pand. in getArithmeticInstrCost()
361 { ISD::SRA, MVT::v16i8, 4 }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
363 { ISD::SHL, MVT::v32i8, 4+2 }, // 2*(psllw + pand) + split. in getArithmeticInstrCost()
364 { ISD::SRL, MVT::v32i8, 4+2 }, // 2*(psrlw + pand) + split. in getArithmeticInstrCost()
365 { ISD::SRA, MVT::v32i8, 8+2 }, // 2*(psrlw, pand, pxor, psubb) + split. in getArithmeticInstrCost()
367 { ISD::SDIV, MVT::v8i32, 12+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
368 { ISD::SREM, MVT::v8i32, 16+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
369 { ISD::SDIV, MVT::v4i32, 6 }, // pmuludq sequence in getArithmeticInstrCost()
370 { ISD::SREM, MVT::v4i32, 8 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
371 { ISD::UDIV, MVT::v8i32, 10+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
372 { ISD::UREM, MVT::v8i32, 14+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
373 { ISD::UDIV, MVT::v4i32, 5 }, // pmuludq sequence in getArithmeticInstrCost()
374 { ISD::UREM, MVT::v4i32, 7 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
386 { ISD::SDIV, MVT::v64i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
387 { ISD::SREM, MVT::v64i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
388 { ISD::UDIV, MVT::v64i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
389 { ISD::UREM, MVT::v64i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
390 { ISD::SDIV, MVT::v32i16, 6 }, // vpmulhw sequence in getArithmeticInstrCost()
391 { ISD::SREM, MVT::v32i16, 8 }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
392 { ISD::UDIV, MVT::v32i16, 6 }, // vpmulhuw sequence in getArithmeticInstrCost()
393 { ISD::UREM, MVT::v32i16, 8 }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
405 { ISD::SDIV, MVT::v16i32, 15 }, // vpmuldq sequence in getArithmeticInstrCost()
406 { ISD::SREM, MVT::v16i32, 17 }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
407 { ISD::UDIV, MVT::v16i32, 15 }, // vpmuludq sequence in getArithmeticInstrCost()
408 { ISD::UREM, MVT::v16i32, 17 }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
409 { ISD::SDIV, MVT::v64i8, 28 }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
410 { ISD::SREM, MVT::v64i8, 32 }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
411 { ISD::UDIV, MVT::v64i8, 28 }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
412 { ISD::UREM, MVT::v64i8, 32 }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
413 { ISD::SDIV, MVT::v32i16, 12 }, // 2*vpmulhw sequence in getArithmeticInstrCost()
414 { ISD::SREM, MVT::v32i16, 16 }, // 2*vpmulhw+mul+sub sequence in getArithmeticInstrCost()
415 { ISD::UDIV, MVT::v32i16, 12 }, // 2*vpmulhuw sequence in getArithmeticInstrCost()
416 { ISD::UREM, MVT::v32i16, 16 }, // 2*vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
428 { ISD::SDIV, MVT::v32i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
429 { ISD::SREM, MVT::v32i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
430 { ISD::UDIV, MVT::v32i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
431 { ISD::UREM, MVT::v32i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
432 { ISD::SDIV, MVT::v16i16, 6 }, // vpmulhw sequence in getArithmeticInstrCost()
433 { ISD::SREM, MVT::v16i16, 8 }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
434 { ISD::UDIV, MVT::v16i16, 6 }, // vpmulhuw sequence in getArithmeticInstrCost()
435 { ISD::UREM, MVT::v16i16, 8 }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
436 { ISD::SDIV, MVT::v8i32, 15 }, // vpmuldq sequence in getArithmeticInstrCost()
437 { ISD::SREM, MVT::v8i32, 19 }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
438 { ISD::UDIV, MVT::v8i32, 15 }, // vpmuludq sequence in getArithmeticInstrCost()
439 { ISD::UREM, MVT::v8i32, 19 }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
450 { ISD::SDIV, MVT::v32i8, 28+2 }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
451 { ISD::SREM, MVT::v32i8, 32+2 }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
452 { ISD::SDIV, MVT::v16i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
453 { ISD::SREM, MVT::v16i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
454 { ISD::UDIV, MVT::v32i8, 28+2 }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
455 { ISD::UREM, MVT::v32i8, 32+2 }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
456 { ISD::UDIV, MVT::v16i8, 14 }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
457 { ISD::UREM, MVT::v16i8, 16 }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
458 { ISD::SDIV, MVT::v16i16, 12+2 }, // 2*pmulhw sequence + split. in getArithmeticInstrCost()
459 { ISD::SREM, MVT::v16i16, 16+2 }, // 2*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
460 { ISD::SDIV, MVT::v8i16, 6 }, // pmulhw sequence in getArithmeticInstrCost()
461 { ISD::SREM, MVT::v8i16, 8 }, // pmulhw+mul+sub sequence in getArithmeticInstrCost()
462 { ISD::UDIV, MVT::v16i16, 12+2 }, // 2*pmulhuw sequence + split. in getArithmeticInstrCost()
463 { ISD::UREM, MVT::v16i16, 16+2 }, // 2*pmulhuw+mul+sub sequence + split. in getArithmeticInstrCost()
464 { ISD::UDIV, MVT::v8i16, 6 }, // pmulhuw sequence in getArithmeticInstrCost()
465 { ISD::UREM, MVT::v8i16, 8 }, // pmulhuw+mul+sub sequence in getArithmeticInstrCost()
466 { ISD::SDIV, MVT::v8i32, 38+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
467 { ISD::SREM, MVT::v8i32, 48+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
468 { ISD::SDIV, MVT::v4i32, 19 }, // pmuludq sequence in getArithmeticInstrCost()
469 { ISD::SREM, MVT::v4i32, 24 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
470 { ISD::UDIV, MVT::v8i32, 30+2 }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
471 { ISD::UREM, MVT::v8i32, 40+2 }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
472 { ISD::UDIV, MVT::v4i32, 15 }, // pmuludq sequence in getArithmeticInstrCost()
473 { ISD::UREM, MVT::v4i32, 20 }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
480 if (ISD == ISD::SDIV && LT.second == MVT::v8i32 && ST->hasAVX()) in getArithmeticInstrCost()
482 if (ISD == ISD::SREM && LT.second == MVT::v8i32 && ST->hasAVX()) in getArithmeticInstrCost()
484 if (ISD == ISD::SDIV && LT.second == MVT::v4i32 && ST->hasSSE41()) in getArithmeticInstrCost()
486 if (ISD == ISD::SREM && LT.second == MVT::v4i32 && ST->hasSSE41()) in getArithmeticInstrCost()
494 { ISD::SHL, MVT::v8i16, 1 }, // vpsllvw in getArithmeticInstrCost()
495 { ISD::SRL, MVT::v8i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
496 { ISD::SRA, MVT::v8i16, 1 }, // vpsravw in getArithmeticInstrCost()
498 { ISD::SHL, MVT::v16i16, 1 }, // vpsllvw in getArithmeticInstrCost()
499 { ISD::SRL, MVT::v16i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
500 { ISD::SRA, MVT::v16i16, 1 }, // vpsravw in getArithmeticInstrCost()
502 { ISD::SHL, MVT::v32i16, 1 }, // vpsllvw in getArithmeticInstrCost()
503 { ISD::SRL, MVT::v32i16, 1 }, // vpsrlvw in getArithmeticInstrCost()
504 { ISD::SRA, MVT::v32i16, 1 }, // vpsravw in getArithmeticInstrCost()
513 { ISD::SHL, MVT::v16i16, 1 }, // psllw. in getArithmeticInstrCost()
514 { ISD::SRL, MVT::v16i16, 1 }, // psrlw. in getArithmeticInstrCost()
515 { ISD::SRA, MVT::v16i16, 1 }, // psraw. in getArithmeticInstrCost()
516 { ISD::SHL, MVT::v32i16, 2 }, // 2*psllw. in getArithmeticInstrCost()
517 { ISD::SRL, MVT::v32i16, 2 }, // 2*psrlw. in getArithmeticInstrCost()
518 { ISD::SRA, MVT::v32i16, 2 }, // 2*psraw. in getArithmeticInstrCost()
531 { ISD::SHL, MVT::v8i16, 1 }, // psllw. in getArithmeticInstrCost()
532 { ISD::SHL, MVT::v4i32, 1 }, // pslld in getArithmeticInstrCost()
533 { ISD::SHL, MVT::v2i64, 1 }, // psllq. in getArithmeticInstrCost()
535 { ISD::SRL, MVT::v8i16, 1 }, // psrlw. in getArithmeticInstrCost()
536 { ISD::SRL, MVT::v4i32, 1 }, // psrld. in getArithmeticInstrCost()
537 { ISD::SRL, MVT::v2i64, 1 }, // psrlq. in getArithmeticInstrCost()
539 { ISD::SRA, MVT::v8i16, 1 }, // psraw. in getArithmeticInstrCost()
540 { ISD::SRA, MVT::v4i32, 1 }, // psrad. in getArithmeticInstrCost()
552 { ISD::MUL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
553 { ISD::MUL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
554 { ISD::MUL, MVT::v8i64, 1 } in getArithmeticInstrCost()
563 { ISD::SHL, MVT::v64i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
564 { ISD::SRL, MVT::v64i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
565 { ISD::SRA, MVT::v64i8, 24 }, // vpblendvb sequence. in getArithmeticInstrCost()
567 { ISD::MUL, MVT::v64i8, 11 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
568 { ISD::MUL, MVT::v32i8, 4 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
569 { ISD::MUL, MVT::v16i8, 4 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
578 { ISD::SHL, MVT::v16i32, 1 }, in getArithmeticInstrCost()
579 { ISD::SRL, MVT::v16i32, 1 }, in getArithmeticInstrCost()
580 { ISD::SRA, MVT::v16i32, 1 }, in getArithmeticInstrCost()
582 { ISD::SHL, MVT::v8i64, 1 }, in getArithmeticInstrCost()
583 { ISD::SRL, MVT::v8i64, 1 }, in getArithmeticInstrCost()
585 { ISD::SRA, MVT::v2i64, 1 }, in getArithmeticInstrCost()
586 { ISD::SRA, MVT::v4i64, 1 }, in getArithmeticInstrCost()
587 { ISD::SRA, MVT::v8i64, 1 }, in getArithmeticInstrCost()
589 { ISD::MUL, MVT::v64i8, 26 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
590 { ISD::MUL, MVT::v32i8, 13 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
591 { ISD::MUL, MVT::v16i8, 5 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
592 { ISD::MUL, MVT::v16i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
593 { ISD::MUL, MVT::v8i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
594 { ISD::MUL, MVT::v4i32, 1 }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
595 { ISD::MUL, MVT::v8i64, 8 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
597 { ISD::FADD, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
598 { ISD::FSUB, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
599 { ISD::FMUL, MVT::v8f64, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
601 { ISD::FADD, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
602 { ISD::FSUB, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
603 { ISD::FMUL, MVT::v16f32, 1 }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
613 { ISD::SHL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
614 { ISD::SRL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
615 { ISD::SRA, MVT::v4i32, 1 }, in getArithmeticInstrCost()
616 { ISD::SHL, MVT::v8i32, 1 }, in getArithmeticInstrCost()
617 { ISD::SRL, MVT::v8i32, 1 }, in getArithmeticInstrCost()
618 { ISD::SRA, MVT::v8i32, 1 }, in getArithmeticInstrCost()
619 { ISD::SHL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
620 { ISD::SRL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
621 { ISD::SHL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
622 { ISD::SRL, MVT::v4i64, 1 }, in getArithmeticInstrCost()
626 if (ISD == ISD::SHL && LT.second == MVT::v32i16 && in getArithmeticInstrCost()
639 if (ISD == ISD::SHL && LT.second == MVT::v16i16 && in getArithmeticInstrCost()
655 { ISD::SHL, MVT::v16i8, 1 }, in getArithmeticInstrCost()
656 { ISD::SRL, MVT::v16i8, 2 }, in getArithmeticInstrCost()
657 { ISD::SRA, MVT::v16i8, 2 }, in getArithmeticInstrCost()
658 { ISD::SHL, MVT::v8i16, 1 }, in getArithmeticInstrCost()
659 { ISD::SRL, MVT::v8i16, 2 }, in getArithmeticInstrCost()
660 { ISD::SRA, MVT::v8i16, 2 }, in getArithmeticInstrCost()
661 { ISD::SHL, MVT::v4i32, 1 }, in getArithmeticInstrCost()
662 { ISD::SRL, MVT::v4i32, 2 }, in getArithmeticInstrCost()
663 { ISD::SRA, MVT::v4i32, 2 }, in getArithmeticInstrCost()
664 { ISD::SHL, MVT::v2i64, 1 }, in getArithmeticInstrCost()
665 { ISD::SRL, MVT::v2i64, 2 }, in getArithmeticInstrCost()
666 { ISD::SRA, MVT::v2i64, 2 }, in getArithmeticInstrCost()
668 { ISD::SHL, MVT::v32i8, 2+2 }, in getArithmeticInstrCost()
669 { ISD::SRL, MVT::v32i8, 4+2 }, in getArithmeticInstrCost()
670 { ISD::SRA, MVT::v32i8, 4+2 }, in getArithmeticInstrCost()
671 { ISD::SHL, MVT::v16i16, 2+2 }, in getArithmeticInstrCost()
672 { ISD::SRL, MVT::v16i16, 4+2 }, in getArithmeticInstrCost()
673 { ISD::SRA, MVT::v16i16, 4+2 }, in getArithmeticInstrCost()
674 { ISD::SHL, MVT::v8i32, 2+2 }, in getArithmeticInstrCost()
675 { ISD::SRL, MVT::v8i32, 4+2 }, in getArithmeticInstrCost()
676 { ISD::SRA, MVT::v8i32, 4+2 }, in getArithmeticInstrCost()
677 { ISD::SHL, MVT::v4i64, 2+2 }, in getArithmeticInstrCost()
678 { ISD::SRL, MVT::v4i64, 4+2 }, in getArithmeticInstrCost()
679 { ISD::SRA, MVT::v4i64, 4+2 }, in getArithmeticInstrCost()
698 { ISD::SHL, MVT::v16i16, 2+2 }, // 2*psllw + split. in getArithmeticInstrCost()
699 { ISD::SHL, MVT::v8i32, 2+2 }, // 2*pslld + split. in getArithmeticInstrCost()
700 { ISD::SHL, MVT::v4i64, 2+2 }, // 2*psllq + split. in getArithmeticInstrCost()
702 { ISD::SRL, MVT::v16i16, 2+2 }, // 2*psrlw + split. in getArithmeticInstrCost()
703 { ISD::SRL, MVT::v8i32, 2+2 }, // 2*psrld + split. in getArithmeticInstrCost()
704 { ISD::SRL, MVT::v4i64, 2+2 }, // 2*psrlq + split. in getArithmeticInstrCost()
706 { ISD::SRA, MVT::v16i16, 2+2 }, // 2*psraw + split. in getArithmeticInstrCost()
707 { ISD::SRA, MVT::v8i32, 2+2 }, // 2*psrad + split. in getArithmeticInstrCost()
708 { ISD::SRA, MVT::v2i64, 4 }, // 2*psrad + shuffle. in getArithmeticInstrCost()
709 { ISD::SRA, MVT::v4i64, 8+2 }, // 2*(2*psrad + shuffle) + split. in getArithmeticInstrCost()
717 if (ISD == ISD::SRA && LT.second == MVT::v4i64 && ST->hasAVX2()) in getArithmeticInstrCost()
727 MVT VT = LT.second; in getArithmeticInstrCost()
730 if (((VT == MVT::v8i16 || VT == MVT::v4i32) && ST->hasSSE2()) || in getArithmeticInstrCost()
731 ((VT == MVT::v16i16 || VT == MVT::v8i32) && ST->hasAVX())) in getArithmeticInstrCost()
736 { ISD::SHL, MVT::v32i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
737 { ISD::SHL, MVT::v64i8, 22 }, // 2*vpblendvb sequence. in getArithmeticInstrCost()
738 { ISD::SHL, MVT::v16i16, 10 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
739 { ISD::SHL, MVT::v32i16, 20 }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
741 { ISD::SRL, MVT::v32i8, 11 }, // vpblendvb sequence. in getArithmeticInstrCost()
742 { ISD::SRL, MVT::v64i8, 22 }, // 2*vpblendvb sequence. in getArithmeticInstrCost()
743 { ISD::SRL, MVT::v16i16, 10 }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
744 { ISD::SRL, MVT::v32i16, 20 }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
746 { ISD::SRA, MVT::v32i8, 24 }, // vpblendvb sequence. in getArithmeticInstrCost()
747 { ISD::SRA, MVT::v64i8, 48 }, // 2*vpblendvb sequence. in getArithmeticInstrCost()
748 { ISD::SRA, MVT::v16i16, 10 }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
749 { ISD::SRA, MVT::v32i16, 20 }, // 2*extend/vpsravd/pack sequence. in getArithmeticInstrCost()
750 { ISD::SRA, MVT::v2i64, 4 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
751 { ISD::SRA, MVT::v4i64, 4 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
753 { ISD::SUB, MVT::v32i8, 1 }, // psubb in getArithmeticInstrCost()
754 { ISD::ADD, MVT::v32i8, 1 }, // paddb in getArithmeticInstrCost()
755 { ISD::SUB, MVT::v16i16, 1 }, // psubw in getArithmeticInstrCost()
756 { ISD::ADD, MVT::v16i16, 1 }, // paddw in getArithmeticInstrCost()
757 { ISD::SUB, MVT::v8i32, 1 }, // psubd in getArithmeticInstrCost()
758 { ISD::ADD, MVT::v8i32, 1 }, // paddd in getArithmeticInstrCost()
759 { ISD::SUB, MVT::v4i64, 1 }, // psubq in getArithmeticInstrCost()
760 { ISD::ADD, MVT::v4i64, 1 }, // paddq in getArithmeticInstrCost()
762 { ISD::MUL, MVT::v32i8, 17 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
763 { ISD::MUL, MVT::v16i8, 7 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
764 { ISD::MUL, MVT::v16i16, 1 }, // pmullw in getArithmeticInstrCost()
765 { ISD::MUL, MVT::v8i32, 2 }, // pmulld (Haswell from agner.org) in getArithmeticInstrCost()
766 { ISD::MUL, MVT::v4i64, 8 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
768 { ISD::FADD, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
769 { ISD::FADD, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
770 { ISD::FSUB, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
771 { ISD::FSUB, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
772 { ISD::FMUL, MVT::v4f64, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
773 { ISD::FMUL, MVT::v8f32, 1 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
775 { ISD::FDIV, MVT::f32, 7 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
776 { ISD::FDIV, MVT::v4f32, 7 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
777 { ISD::FDIV, MVT::v8f32, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
778 { ISD::FDIV, MVT::f64, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
779 { ISD::FDIV, MVT::v2f64, 14 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
780 { ISD::FDIV, MVT::v4f64, 28 }, // Haswell from http://www.agner.org/ in getArithmeticInstrCost()
792 { ISD::MUL, MVT::v16i16, 4 }, in getArithmeticInstrCost()
793 { ISD::MUL, MVT::v8i32, 4 }, in getArithmeticInstrCost()
794 { ISD::SUB, MVT::v32i8, 4 }, in getArithmeticInstrCost()
795 { ISD::ADD, MVT::v32i8, 4 }, in getArithmeticInstrCost()
796 { ISD::SUB, MVT::v16i16, 4 }, in getArithmeticInstrCost()
797 { ISD::ADD, MVT::v16i16, 4 }, in getArithmeticInstrCost()
798 { ISD::SUB, MVT::v8i32, 4 }, in getArithmeticInstrCost()
799 { ISD::ADD, MVT::v8i32, 4 }, in getArithmeticInstrCost()
800 { ISD::SUB, MVT::v4i64, 4 }, in getArithmeticInstrCost()
801 { ISD::ADD, MVT::v4i64, 4 }, in getArithmeticInstrCost()
808 { ISD::MUL, MVT::v4i64, 18 }, in getArithmeticInstrCost()
810 { ISD::MUL, MVT::v32i8, 26 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
812 { ISD::FDIV, MVT::f32, 14 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
813 { ISD::FDIV, MVT::v4f32, 14 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
814 { ISD::FDIV, MVT::v8f32, 28 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
815 { ISD::FDIV, MVT::f64, 22 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
816 { ISD::FDIV, MVT::v2f64, 22 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
817 { ISD::FDIV, MVT::v4f64, 44 }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
825 { ISD::FADD, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
826 { ISD::FADD, MVT::f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
827 { ISD::FADD, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
828 { ISD::FADD, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
830 { ISD::FSUB, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
831 { ISD::FSUB, MVT::f32 , 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
832 { ISD::FSUB, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
833 { ISD::FSUB, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
835 { ISD::FMUL, MVT::f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
836 { ISD::FMUL, MVT::f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
837 { ISD::FMUL, MVT::v2f64, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
838 { ISD::FMUL, MVT::v4f32, 1 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
840 { ISD::FDIV, MVT::f32, 14 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
841 { ISD::FDIV, MVT::v4f32, 14 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
842 { ISD::FDIV, MVT::f64, 22 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
843 { ISD::FDIV, MVT::v2f64, 22 }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
851 { ISD::SHL, MVT::v16i8, 11 }, // pblendvb sequence. in getArithmeticInstrCost()
852 { ISD::SHL, MVT::v32i8, 2*11+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
853 { ISD::SHL, MVT::v8i16, 14 }, // pblendvb sequence. in getArithmeticInstrCost()
854 { ISD::SHL, MVT::v16i16, 2*14+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
855 { ISD::SHL, MVT::v4i32, 4 }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
856 { ISD::SHL, MVT::v8i32, 2*4+2 }, // pslld/paddd/cvttps2dq/pmulld + split in getArithmeticInstrCost()
858 { ISD::SRL, MVT::v16i8, 12 }, // pblendvb sequence. in getArithmeticInstrCost()
859 { ISD::SRL, MVT::v32i8, 2*12+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
860 { ISD::SRL, MVT::v8i16, 14 }, // pblendvb sequence. in getArithmeticInstrCost()
861 { ISD::SRL, MVT::v16i16, 2*14+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
862 { ISD::SRL, MVT::v4i32, 11 }, // Shift each lane + blend. in getArithmeticInstrCost()
863 { ISD::SRL, MVT::v8i32, 2*11+2 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
865 { ISD::SRA, MVT::v16i8, 24 }, // pblendvb sequence. in getArithmeticInstrCost()
866 { ISD::SRA, MVT::v32i8, 2*24+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
867 { ISD::SRA, MVT::v8i16, 14 }, // pblendvb sequence. in getArithmeticInstrCost()
868 { ISD::SRA, MVT::v16i16, 2*14+2 }, // pblendvb sequence + split. in getArithmeticInstrCost()
869 { ISD::SRA, MVT::v4i32, 12 }, // Shift each lane + blend. in getArithmeticInstrCost()
870 { ISD::SRA, MVT::v8i32, 2*12+2 }, // Shift each lane + blend + split. in getArithmeticInstrCost()
872 { ISD::MUL, MVT::v4i32, 2 } // pmulld (Nehalem from agner.org) in getArithmeticInstrCost()
882 { ISD::SHL, MVT::v16i8, 26 }, // cmpgtb sequence. in getArithmeticInstrCost()
883 { ISD::SHL, MVT::v8i16, 32 }, // cmpgtb sequence. in getArithmeticInstrCost()
884 { ISD::SHL, MVT::v4i32, 2*5 }, // We optimized this using mul. in getArithmeticInstrCost()
885 { ISD::SHL, MVT::v2i64, 4 }, // splat+shuffle sequence. in getArithmeticInstrCost()
886 { ISD::SHL, MVT::v4i64, 2*4+2 }, // splat+shuffle sequence + split. in getArithmeticInstrCost()
888 { ISD::SRL, MVT::v16i8, 26 }, // cmpgtb sequence. in getArithmeticInstrCost()
889 { ISD::SRL, MVT::v8i16, 32 }, // cmpgtb sequence. in getArithmeticInstrCost()
890 { ISD::SRL, MVT::v4i32, 16 }, // Shift each lane + blend. in getArithmeticInstrCost()
891 { ISD::SRL, MVT::v2i64, 4 }, // splat+shuffle sequence. in getArithmeticInstrCost()
892 { ISD::SRL, MVT::v4i64, 2*4+2 }, // splat+shuffle sequence + split. in getArithmeticInstrCost()
894 { ISD::SRA, MVT::v16i8, 54 }, // unpacked cmpgtb sequence. in getArithmeticInstrCost()
895 { ISD::SRA, MVT::v8i16, 32 }, // cmpgtb sequence. in getArithmeticInstrCost()
896 { ISD::SRA, MVT::v4i32, 16 }, // Shift each lane + blend. in getArithmeticInstrCost()
897 { ISD::SRA, MVT::v2i64, 12 }, // srl/xor/sub sequence. in getArithmeticInstrCost()
898 { ISD::SRA, MVT::v4i64, 2*12+2 }, // srl/xor/sub sequence+split. in getArithmeticInstrCost()
900 { ISD::MUL, MVT::v16i8, 12 }, // extend/pmullw/trunc sequence. in getArithmeticInstrCost()
901 { ISD::MUL, MVT::v8i16, 1 }, // pmullw in getArithmeticInstrCost()
902 { ISD::MUL, MVT::v4i32, 6 }, // 3*pmuludq/4*shuffle in getArithmeticInstrCost()
903 { ISD::MUL, MVT::v2i64, 8 }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
905 { ISD::FDIV, MVT::f32, 23 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
906 { ISD::FDIV, MVT::v4f32, 39 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
907 { ISD::FDIV, MVT::f64, 38 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
908 { ISD::FDIV, MVT::v2f64, 69 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
910 { ISD::FADD, MVT::f32, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
911 { ISD::FADD, MVT::f64, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
913 { ISD::FSUB, MVT::f32, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
914 { ISD::FSUB, MVT::f64, 2 }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
922 { ISD::FDIV, MVT::f32, 17 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
923 { ISD::FDIV, MVT::v4f32, 34 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
925 { ISD::FADD, MVT::f32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
926 { ISD::FADD, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
928 { ISD::FSUB, MVT::f32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
929 { ISD::FSUB, MVT::v4f32, 2 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
931 { ISD::ADD, MVT::i8, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
932 { ISD::ADD, MVT::i16, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
933 { ISD::ADD, MVT::i32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
935 { ISD::SUB, MVT::i8, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
936 { ISD::SUB, MVT::i16, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
937 { ISD::SUB, MVT::i32, 1 }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
966 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, BaseTp); in getShuffleCost()
984 std::pair<int, MVT> SubLT = TLI->getTypeLegalizationCost(DL, SubTp); in getShuffleCost()
1031 {TTI::SK_Broadcast, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1032 {TTI::SK_Broadcast, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1033 {TTI::SK_Broadcast, MVT::v8i8, 2}, // punpck/pshuflw in getShuffleCost()
1034 {TTI::SK_Broadcast, MVT::v4i8, 2}, // punpck/pshuflw in getShuffleCost()
1035 {TTI::SK_Broadcast, MVT::v2i8, 1}, // punpck in getShuffleCost()
1037 {TTI::SK_Reverse, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1038 {TTI::SK_Reverse, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1039 {TTI::SK_Reverse, MVT::v4i8, 3}, // punpck/pshuflw/packus in getShuffleCost()
1040 {TTI::SK_Reverse, MVT::v2i8, 1}, // punpck in getShuffleCost()
1042 {TTI::SK_PermuteTwoSrc, MVT::v4i16, 2}, // punpck/pshuflw in getShuffleCost()
1043 {TTI::SK_PermuteTwoSrc, MVT::v2i16, 2}, // punpck/pshuflw in getShuffleCost()
1044 {TTI::SK_PermuteTwoSrc, MVT::v8i8, 7}, // punpck/pshuflw in getShuffleCost()
1045 {TTI::SK_PermuteTwoSrc, MVT::v4i8, 4}, // punpck/pshuflw in getShuffleCost()
1046 {TTI::SK_PermuteTwoSrc, MVT::v2i8, 2}, // punpck in getShuffleCost()
1048 {TTI::SK_PermuteSingleSrc, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1049 {TTI::SK_PermuteSingleSrc, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1050 {TTI::SK_PermuteSingleSrc, MVT::v8i8, 5}, // punpck/pshuflw in getShuffleCost()
1051 {TTI::SK_PermuteSingleSrc, MVT::v4i8, 3}, // punpck/pshuflw in getShuffleCost()
1052 {TTI::SK_PermuteSingleSrc, MVT::v2i8, 1}, // punpck in getShuffleCost()
1065 MVT LegalVT = LT.second; in getShuffleCost()
1099 {TTI::SK_Reverse, MVT::v64i8, 1}, // vpermb in getShuffleCost()
1100 {TTI::SK_Reverse, MVT::v32i8, 1}, // vpermb in getShuffleCost()
1102 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 1}, // vpermb in getShuffleCost()
1103 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 1}, // vpermb in getShuffleCost()
1105 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 2}, // vpermt2b in getShuffleCost()
1106 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 2}, // vpermt2b in getShuffleCost()
1107 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 2} // vpermt2b in getShuffleCost()
1116 {TTI::SK_Broadcast, MVT::v32i16, 1}, // vpbroadcastw in getShuffleCost()
1117 {TTI::SK_Broadcast, MVT::v64i8, 1}, // vpbroadcastb in getShuffleCost()
1119 {TTI::SK_Reverse, MVT::v32i16, 2}, // vpermw in getShuffleCost()
1120 {TTI::SK_Reverse, MVT::v16i16, 2}, // vpermw in getShuffleCost()
1121 {TTI::SK_Reverse, MVT::v64i8, 2}, // pshufb + vshufi64x2 in getShuffleCost()
1123 {TTI::SK_PermuteSingleSrc, MVT::v32i16, 2}, // vpermw in getShuffleCost()
1124 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 2}, // vpermw in getShuffleCost()
1125 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 8}, // extend to v32i16 in getShuffleCost()
1127 {TTI::SK_PermuteTwoSrc, MVT::v32i16, 2}, // vpermt2w in getShuffleCost()
1128 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 2}, // vpermt2w in getShuffleCost()
1129 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 2}, // vpermt2w in getShuffleCost()
1130 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 19}, // 6 * v32i8 + 1 in getShuffleCost()
1132 {TTI::SK_Select, MVT::v32i16, 1}, // vblendmw in getShuffleCost()
1133 {TTI::SK_Select, MVT::v64i8, 1}, // vblendmb in getShuffleCost()
1142 {TTI::SK_Broadcast, MVT::v8f64, 1}, // vbroadcastpd in getShuffleCost()
1143 {TTI::SK_Broadcast, MVT::v16f32, 1}, // vbroadcastps in getShuffleCost()
1144 {TTI::SK_Broadcast, MVT::v8i64, 1}, // vpbroadcastq in getShuffleCost()
1145 {TTI::SK_Broadcast, MVT::v16i32, 1}, // vpbroadcastd in getShuffleCost()
1146 {TTI::SK_Broadcast, MVT::v32i16, 1}, // vpbroadcastw in getShuffleCost()
1147 {TTI::SK_Broadcast, MVT::v64i8, 1}, // vpbroadcastb in getShuffleCost()
1149 {TTI::SK_Reverse, MVT::v8f64, 1}, // vpermpd in getShuffleCost()
1150 {TTI::SK_Reverse, MVT::v16f32, 1}, // vpermps in getShuffleCost()
1151 {TTI::SK_Reverse, MVT::v8i64, 1}, // vpermq in getShuffleCost()
1152 {TTI::SK_Reverse, MVT::v16i32, 1}, // vpermd in getShuffleCost()
1154 {TTI::SK_PermuteSingleSrc, MVT::v8f64, 1}, // vpermpd in getShuffleCost()
1155 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1156 {TTI::SK_PermuteSingleSrc, MVT::v2f64, 1}, // vpermpd in getShuffleCost()
1157 {TTI::SK_PermuteSingleSrc, MVT::v16f32, 1}, // vpermps in getShuffleCost()
1158 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1159 {TTI::SK_PermuteSingleSrc, MVT::v4f32, 1}, // vpermps in getShuffleCost()
1160 {TTI::SK_PermuteSingleSrc, MVT::v8i64, 1}, // vpermq in getShuffleCost()
1161 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1162 {TTI::SK_PermuteSingleSrc, MVT::v2i64, 1}, // vpermq in getShuffleCost()
1163 {TTI::SK_PermuteSingleSrc, MVT::v16i32, 1}, // vpermd in getShuffleCost()
1164 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1165 {TTI::SK_PermuteSingleSrc, MVT::v4i32, 1}, // vpermd in getShuffleCost()
1166 {TTI::SK_PermuteSingleSrc, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1168 {TTI::SK_PermuteTwoSrc, MVT::v8f64, 1}, // vpermt2pd in getShuffleCost()
1169 {TTI::SK_PermuteTwoSrc, MVT::v16f32, 1}, // vpermt2ps in getShuffleCost()
1170 {TTI::SK_PermuteTwoSrc, MVT::v8i64, 1}, // vpermt2q in getShuffleCost()
1171 {TTI::SK_PermuteTwoSrc, MVT::v16i32, 1}, // vpermt2d in getShuffleCost()
1172 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 1}, // vpermt2pd in getShuffleCost()
1173 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 1}, // vpermt2ps in getShuffleCost()
1174 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 1}, // vpermt2q in getShuffleCost()
1175 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 1}, // vpermt2d in getShuffleCost()
1176 {TTI::SK_PermuteTwoSrc, MVT::v2f64, 1}, // vpermt2pd in getShuffleCost()
1177 {TTI::SK_PermuteTwoSrc, MVT::v4f32, 1}, // vpermt2ps in getShuffleCost()
1178 {TTI::SK_PermuteTwoSrc, MVT::v2i64, 1}, // vpermt2q in getShuffleCost()
1179 {TTI::SK_PermuteTwoSrc, MVT::v4i32, 1}, // vpermt2d in getShuffleCost()
1183 {TTI::SK_PermuteSingleSrc, MVT::v32i16, 14}, in getShuffleCost()
1184 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 14}, in getShuffleCost()
1185 {TTI::SK_PermuteTwoSrc, MVT::v32i16, 42}, in getShuffleCost()
1186 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 42}, in getShuffleCost()
1188 {TTI::SK_Select, MVT::v32i16, 1}, // vpternlogq in getShuffleCost()
1189 {TTI::SK_Select, MVT::v64i8, 1}, // vpternlogq in getShuffleCost()
1190 {TTI::SK_Select, MVT::v8f64, 1}, // vblendmpd in getShuffleCost()
1191 {TTI::SK_Select, MVT::v16f32, 1}, // vblendmps in getShuffleCost()
1192 {TTI::SK_Select, MVT::v8i64, 1}, // vblendmq in getShuffleCost()
1193 {TTI::SK_Select, MVT::v16i32, 1}, // vblendmd in getShuffleCost()
1201 {TTI::SK_Broadcast, MVT::v4f64, 1}, // vbroadcastpd in getShuffleCost()
1202 {TTI::SK_Broadcast, MVT::v8f32, 1}, // vbroadcastps in getShuffleCost()
1203 {TTI::SK_Broadcast, MVT::v4i64, 1}, // vpbroadcastq in getShuffleCost()
1204 {TTI::SK_Broadcast, MVT::v8i32, 1}, // vpbroadcastd in getShuffleCost()
1205 {TTI::SK_Broadcast, MVT::v16i16, 1}, // vpbroadcastw in getShuffleCost()
1206 {TTI::SK_Broadcast, MVT::v32i8, 1}, // vpbroadcastb in getShuffleCost()
1208 {TTI::SK_Reverse, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1209 {TTI::SK_Reverse, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1210 {TTI::SK_Reverse, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1211 {TTI::SK_Reverse, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1212 {TTI::SK_Reverse, MVT::v16i16, 2}, // vperm2i128 + pshufb in getShuffleCost()
1213 {TTI::SK_Reverse, MVT::v32i8, 2}, // vperm2i128 + pshufb in getShuffleCost()
1215 {TTI::SK_Select, MVT::v16i16, 1}, // vpblendvb in getShuffleCost()
1216 {TTI::SK_Select, MVT::v32i8, 1}, // vpblendvb in getShuffleCost()
1218 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1219 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1220 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1221 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1222 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1224 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1227 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vpermpd + vblendpd in getShuffleCost()
1228 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 3}, // 2*vpermps + vblendps in getShuffleCost()
1229 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vpermq + vpblendd in getShuffleCost()
1230 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 3}, // 2*vpermd + vpblendd in getShuffleCost()
1231 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1233 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1242 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1243 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1244 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1245 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1246 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1248 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1251 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1253 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 1}, // vpperm in getShuffleCost()
1254 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1256 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 1}, // vpperm in getShuffleCost()
1264 {TTI::SK_Broadcast, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1265 {TTI::SK_Broadcast, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1266 {TTI::SK_Broadcast, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1267 {TTI::SK_Broadcast, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1268 {TTI::SK_Broadcast, MVT::v16i16, 3}, // vpshuflw + vpshufd + vinsertf128 in getShuffleCost()
1269 {TTI::SK_Broadcast, MVT::v32i8, 2}, // vpshufb + vinsertf128 in getShuffleCost()
1271 {TTI::SK_Reverse, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1272 {TTI::SK_Reverse, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1273 {TTI::SK_Reverse, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1274 {TTI::SK_Reverse, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1275 {TTI::SK_Reverse, MVT::v16i16, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1277 {TTI::SK_Reverse, MVT::v32i8, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1280 {TTI::SK_Select, MVT::v4i64, 1}, // vblendpd in getShuffleCost()
1281 {TTI::SK_Select, MVT::v4f64, 1}, // vblendpd in getShuffleCost()
1282 {TTI::SK_Select, MVT::v8i32, 1}, // vblendps in getShuffleCost()
1283 {TTI::SK_Select, MVT::v8f32, 1}, // vblendps in getShuffleCost()
1284 {TTI::SK_Select, MVT::v16i16, 3}, // vpand + vpandn + vpor in getShuffleCost()
1285 {TTI::SK_Select, MVT::v32i8, 3}, // vpand + vpandn + vpor in getShuffleCost()
1287 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1288 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1289 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1290 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1291 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1293 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1296 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1297 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1298 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1299 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1300 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1302 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1311 {TTI::SK_Select, MVT::v2i64, 1}, // pblendw in getShuffleCost()
1312 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
1313 {TTI::SK_Select, MVT::v4i32, 1}, // pblendw in getShuffleCost()
1314 {TTI::SK_Select, MVT::v4f32, 1}, // blendps in getShuffleCost()
1315 {TTI::SK_Select, MVT::v8i16, 1}, // pblendw in getShuffleCost()
1316 {TTI::SK_Select, MVT::v16i8, 1} // pblendvb in getShuffleCost()
1324 {TTI::SK_Broadcast, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1325 {TTI::SK_Broadcast, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1327 {TTI::SK_Reverse, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1328 {TTI::SK_Reverse, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1330 {TTI::SK_Select, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
1331 {TTI::SK_Select, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
1333 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1334 {TTI::SK_PermuteSingleSrc, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1336 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
1337 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
1345 {TTI::SK_Broadcast, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1346 {TTI::SK_Broadcast, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1347 {TTI::SK_Broadcast, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1348 {TTI::SK_Broadcast, MVT::v8i16, 2}, // pshuflw + pshufd in getShuffleCost()
1349 {TTI::SK_Broadcast, MVT::v16i8, 3}, // unpck + pshuflw + pshufd in getShuffleCost()
1351 {TTI::SK_Reverse, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1352 {TTI::SK_Reverse, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1353 {TTI::SK_Reverse, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1354 {TTI::SK_Reverse, MVT::v8i16, 3}, // pshuflw + pshufhw + pshufd in getShuffleCost()
1355 {TTI::SK_Reverse, MVT::v16i8, 9}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1358 {TTI::SK_Select, MVT::v2i64, 1}, // movsd in getShuffleCost()
1359 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
1360 {TTI::SK_Select, MVT::v4i32, 2}, // 2*shufps in getShuffleCost()
1361 {TTI::SK_Select, MVT::v8i16, 3}, // pand + pandn + por in getShuffleCost()
1362 {TTI::SK_Select, MVT::v16i8, 3}, // pand + pandn + por in getShuffleCost()
1364 {TTI::SK_PermuteSingleSrc, MVT::v2f64, 1}, // shufpd in getShuffleCost()
1365 {TTI::SK_PermuteSingleSrc, MVT::v2i64, 1}, // pshufd in getShuffleCost()
1366 {TTI::SK_PermuteSingleSrc, MVT::v4i32, 1}, // pshufd in getShuffleCost()
1367 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 5}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1369 { TTI::SK_PermuteSingleSrc, MVT::v16i8, 10 }, // 2*pshuflw + 2*pshufhw in getShuffleCost()
1372 { TTI::SK_PermuteTwoSrc, MVT::v2f64, 1 }, // shufpd in getShuffleCost()
1373 { TTI::SK_PermuteTwoSrc, MVT::v2i64, 1 }, // shufpd in getShuffleCost()
1374 { TTI::SK_PermuteTwoSrc, MVT::v4i32, 2 }, // 2*{unpck,movsd,pshufd} in getShuffleCost()
1375 { TTI::SK_PermuteTwoSrc, MVT::v8i16, 8 }, // blend+permute in getShuffleCost()
1376 { TTI::SK_PermuteTwoSrc, MVT::v16i8, 13 }, // blend+permute in getShuffleCost()
1384 { TTI::SK_Broadcast, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1385 { TTI::SK_Reverse, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1386 { TTI::SK_Select, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
1387 { TTI::SK_PermuteSingleSrc, MVT::v4f32, 1 }, // shufps in getShuffleCost()
1388 { TTI::SK_PermuteTwoSrc, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
1416 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
1417 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
1420 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 1 }, in getCastInstrCost()
1421 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 1 }, in getCastInstrCost()
1422 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 1 }, in getCastInstrCost()
1423 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 1 }, in getCastInstrCost()
1424 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 1 }, in getCastInstrCost()
1425 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 1 }, in getCastInstrCost()
1426 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 1 }, in getCastInstrCost()
1427 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1428 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, 1 }, in getCastInstrCost()
1429 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i1, 1 }, in getCastInstrCost()
1430 { ISD::SIGN_EXTEND, MVT::v64i8, MVT::v64i1, 1 }, in getCastInstrCost()
1433 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 2 }, in getCastInstrCost()
1434 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 2 }, in getCastInstrCost()
1435 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 2 }, in getCastInstrCost()
1436 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 2 }, in getCastInstrCost()
1437 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 2 }, in getCastInstrCost()
1438 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 2 }, in getCastInstrCost()
1439 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 2 }, in getCastInstrCost()
1440 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 2 }, in getCastInstrCost()
1441 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, 2 }, in getCastInstrCost()
1442 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i1, 2 }, in getCastInstrCost()
1443 { ISD::ZERO_EXTEND, MVT::v64i8, MVT::v64i1, 2 }, in getCastInstrCost()
1445 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, 2 }, in getCastInstrCost()
1446 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, // widen to zmm in getCastInstrCost()
1447 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 2 }, // widen to zmm in getCastInstrCost()
1448 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, // widen to zmm in getCastInstrCost()
1449 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, // widen to zmm in getCastInstrCost()
1450 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 2 }, // widen to zmm in getCastInstrCost()
1451 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 2 }, // widen to zmm in getCastInstrCost()
1452 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 2 }, // widen to zmm in getCastInstrCost()
1453 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 2 }, // widen to zmm in getCastInstrCost()
1454 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 2 }, // widen to zmm in getCastInstrCost()
1455 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, 2 }, // widen to zmm in getCastInstrCost()
1456 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i16, 2 }, in getCastInstrCost()
1457 { ISD::TRUNCATE, MVT::v64i1, MVT::v64i8, 2 }, in getCastInstrCost()
1461 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
1462 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
1464 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
1465 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
1467 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
1468 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
1470 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
1471 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
1478 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 1 }, in getCastInstrCost()
1479 { ISD::FP_EXTEND, MVT::v8f64, MVT::v16f32, 3 }, in getCastInstrCost()
1480 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 1 }, in getCastInstrCost()
1482 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1483 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1484 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1485 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1486 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1487 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1488 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1489 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1490 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
1491 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
1492 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
1493 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
1494 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, // zmm vpsllq+vptestmq in getCastInstrCost()
1495 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, // zmm vpsllq+vptestmq in getCastInstrCost()
1496 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
1497 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 2 }, in getCastInstrCost()
1498 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 2 }, in getCastInstrCost()
1499 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i64, 2 }, in getCastInstrCost()
1500 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i64, 2 }, in getCastInstrCost()
1501 { ISD::TRUNCATE, MVT::v8i32, MVT::v8i64, 1 }, in getCastInstrCost()
1502 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, // zmm vpmovqd in getCastInstrCost()
1503 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i64, 5 },// 2*vpmovqd+concat+vpmovdb in getCastInstrCost()
1505 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, // extend to v16i32 in getCastInstrCost()
1506 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, 8 }, in getCastInstrCost()
1510 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 3 }, in getCastInstrCost()
1511 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 4 }, in getCastInstrCost()
1512 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 3 }, in getCastInstrCost()
1513 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 4 }, in getCastInstrCost()
1514 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 3 }, in getCastInstrCost()
1515 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 4 }, in getCastInstrCost()
1516 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 3 }, in getCastInstrCost()
1517 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 4 }, in getCastInstrCost()
1521 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 3 }, in getCastInstrCost()
1522 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 4 }, in getCastInstrCost()
1523 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 3 }, in getCastInstrCost()
1524 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 4 }, in getCastInstrCost()
1525 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 3 }, in getCastInstrCost()
1526 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 4 }, in getCastInstrCost()
1527 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 3 }, in getCastInstrCost()
1528 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
1530 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, 1 }, // zmm vpternlogd in getCastInstrCost()
1531 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
1532 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, // zmm vpternlogd in getCastInstrCost()
1533 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
1534 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, // zmm vpternlogd in getCastInstrCost()
1535 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
1536 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, // zmm vpternlogq in getCastInstrCost()
1537 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, // zmm vpternlogq+psrlq in getCastInstrCost()
1538 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, // zmm vpternlogq in getCastInstrCost()
1539 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, // zmm vpternlogq+psrlq in getCastInstrCost()
1541 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i1, 1 }, // vpternlogd in getCastInstrCost()
1542 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
1543 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i1, 1 }, // vpternlogq in getCastInstrCost()
1544 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
1546 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
1547 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
1548 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
1549 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
1550 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i8, 1 }, in getCastInstrCost()
1551 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i8, 1 }, in getCastInstrCost()
1552 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
1553 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
1554 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
1555 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
1557 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, 3 }, // FIXME: May not be right in getCastInstrCost()
1558 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, 3 }, // FIXME: May not be right in getCastInstrCost()
1560 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
1561 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
1562 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i8, 2 }, in getCastInstrCost()
1563 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i8, 2 }, in getCastInstrCost()
1564 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
1565 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i16, 2 }, in getCastInstrCost()
1566 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
1567 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
1569 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
1570 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
1571 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i8, 2 }, in getCastInstrCost()
1572 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i8, 2 }, in getCastInstrCost()
1573 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
1574 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i16, 2 }, in getCastInstrCost()
1575 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
1576 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
1577 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 26 }, in getCastInstrCost()
1578 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 5 }, in getCastInstrCost()
1580 { ISD::FP_TO_SINT, MVT::v8i8, MVT::v8f64, 3 }, in getCastInstrCost()
1581 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f64, 3 }, in getCastInstrCost()
1582 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f32, 3 }, in getCastInstrCost()
1583 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v16f32, 3 }, in getCastInstrCost()
1585 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
1586 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f64, 3 }, in getCastInstrCost()
1587 { ISD::FP_TO_UINT, MVT::v8i8, MVT::v8f64, 3 }, in getCastInstrCost()
1588 { ISD::FP_TO_UINT, MVT::v16i32, MVT::v16f32, 1 }, in getCastInstrCost()
1589 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v16f32, 3 }, in getCastInstrCost()
1590 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v16f32, 3 }, in getCastInstrCost()
1595 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 1 }, in getCastInstrCost()
1596 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 1 }, in getCastInstrCost()
1597 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 1 }, in getCastInstrCost()
1598 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 1 }, in getCastInstrCost()
1599 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 1 }, in getCastInstrCost()
1600 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 1 }, in getCastInstrCost()
1601 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 1 }, in getCastInstrCost()
1602 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1603 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, 1 }, in getCastInstrCost()
1606 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 2 }, in getCastInstrCost()
1607 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 2 }, in getCastInstrCost()
1608 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 2 }, in getCastInstrCost()
1609 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 2 }, in getCastInstrCost()
1610 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 2 }, in getCastInstrCost()
1611 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 2 }, in getCastInstrCost()
1612 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 2 }, in getCastInstrCost()
1613 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 2 }, in getCastInstrCost()
1614 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, 2 }, in getCastInstrCost()
1616 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, in getCastInstrCost()
1617 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1618 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, // vpsllw+vptestmw in getCastInstrCost()
1619 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1620 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 2 }, // vpsllw+vptestmw in getCastInstrCost()
1621 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1622 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 2 }, // vpsllw+vptestmw in getCastInstrCost()
1623 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1624 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 2 }, // vpsllw+vptestmw in getCastInstrCost()
1625 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, 2 }, // vpsllw+vptestmb in getCastInstrCost()
1629 { ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
1630 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
1631 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
1632 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
1634 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
1635 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
1636 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
1637 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
1639 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v2f32, 1 }, in getCastInstrCost()
1640 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
1641 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
1642 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
1644 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v2f32, 1 }, in getCastInstrCost()
1645 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
1646 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
1647 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
1651 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1652 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1653 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
1654 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 8 }, // split+2*v8i8 in getCastInstrCost()
1655 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1656 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1657 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
1658 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 8 }, // split+2*v8i16 in getCastInstrCost()
1659 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
1660 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
1661 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
1662 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
1663 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
1664 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, // vpmovqd in getCastInstrCost()
1668 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 5 }, in getCastInstrCost()
1669 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 6 }, in getCastInstrCost()
1670 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 5 }, in getCastInstrCost()
1671 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 6 }, in getCastInstrCost()
1672 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 5 }, in getCastInstrCost()
1673 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 6 }, in getCastInstrCost()
1674 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 10 }, in getCastInstrCost()
1675 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 12 }, in getCastInstrCost()
1679 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 4 }, in getCastInstrCost()
1680 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 5 }, in getCastInstrCost()
1681 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 4 }, in getCastInstrCost()
1682 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 5 }, in getCastInstrCost()
1683 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 4 }, in getCastInstrCost()
1684 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 5 }, in getCastInstrCost()
1685 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 10 }, in getCastInstrCost()
1686 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 12 }, in getCastInstrCost()
1688 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, 1 }, // vpternlogd in getCastInstrCost()
1689 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
1690 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, // vpternlogd in getCastInstrCost()
1691 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
1692 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, // vpternlogd in getCastInstrCost()
1693 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
1694 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, // vpternlogq in getCastInstrCost()
1695 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
1696 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, // vpternlogq in getCastInstrCost()
1697 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
1699 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i8, 2 }, in getCastInstrCost()
1700 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i8, 2 }, in getCastInstrCost()
1701 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i8, 2 }, in getCastInstrCost()
1702 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i16, 5 }, in getCastInstrCost()
1703 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i16, 2 }, in getCastInstrCost()
1704 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 2 }, in getCastInstrCost()
1705 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 2 }, in getCastInstrCost()
1706 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 1 }, in getCastInstrCost()
1707 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
1708 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
1709 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
1710 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 5 }, in getCastInstrCost()
1711 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
1712 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 5 }, in getCastInstrCost()
1714 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 1 }, in getCastInstrCost()
1715 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 1 }, in getCastInstrCost()
1717 { ISD::FP_TO_SINT, MVT::v8i8, MVT::v8f32, 3 }, in getCastInstrCost()
1718 { ISD::FP_TO_UINT, MVT::v8i8, MVT::v8f32, 3 }, in getCastInstrCost()
1720 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 1 }, in getCastInstrCost()
1721 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 1 }, in getCastInstrCost()
1723 { ISD::FP_TO_UINT, MVT::v2i32, MVT::v2f32, 1 }, in getCastInstrCost()
1724 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 1 }, in getCastInstrCost()
1725 { ISD::FP_TO_UINT, MVT::v2i32, MVT::v2f64, 1 }, in getCastInstrCost()
1726 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 1 }, in getCastInstrCost()
1727 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 1 }, in getCastInstrCost()
1731 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
1732 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
1733 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
1734 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
1735 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i8, 1 }, in getCastInstrCost()
1736 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i8, 1 }, in getCastInstrCost()
1737 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 1 }, in getCastInstrCost()
1738 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 1 }, in getCastInstrCost()
1739 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1740 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
1741 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
1742 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
1743 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 1 }, in getCastInstrCost()
1744 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 1 }, in getCastInstrCost()
1745 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
1746 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
1747 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
1748 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
1749 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 3 }, in getCastInstrCost()
1750 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 3 }, in getCastInstrCost()
1752 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 2 }, in getCastInstrCost()
1753 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, in getCastInstrCost()
1755 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i64, 2 }, in getCastInstrCost()
1756 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i64, 2 }, in getCastInstrCost()
1757 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 2 }, in getCastInstrCost()
1758 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 2 }, in getCastInstrCost()
1760 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 3 }, in getCastInstrCost()
1761 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 3 }, in getCastInstrCost()
1763 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 8 }, in getCastInstrCost()
1767 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 6 }, in getCastInstrCost()
1768 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 4 }, in getCastInstrCost()
1769 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 7 }, in getCastInstrCost()
1770 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 4 }, in getCastInstrCost()
1771 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i8, 4 }, in getCastInstrCost()
1772 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i8, 4 }, in getCastInstrCost()
1773 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 4 }, in getCastInstrCost()
1774 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 4 }, in getCastInstrCost()
1775 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
1776 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
1777 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 4 }, in getCastInstrCost()
1778 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 4 }, in getCastInstrCost()
1779 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 4 }, in getCastInstrCost()
1780 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 3 }, in getCastInstrCost()
1781 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 4 }, in getCastInstrCost()
1782 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 4 }, in getCastInstrCost()
1783 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 4 }, in getCastInstrCost()
1784 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 4 }, in getCastInstrCost()
1786 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 4 }, in getCastInstrCost()
1787 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 5 }, in getCastInstrCost()
1788 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 4 }, in getCastInstrCost()
1789 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 9 }, in getCastInstrCost()
1790 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i64, 11 }, in getCastInstrCost()
1792 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 4 }, in getCastInstrCost()
1793 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 4 }, in getCastInstrCost()
1794 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
1795 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i64, 4 }, in getCastInstrCost()
1796 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i64, 4 }, in getCastInstrCost()
1797 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 2 }, in getCastInstrCost()
1798 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i64, 11 }, in getCastInstrCost()
1799 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i64, 9 }, in getCastInstrCost()
1800 { ISD::TRUNCATE, MVT::v8i32, MVT::v8i64, 3 }, in getCastInstrCost()
1801 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i64, 11 }, in getCastInstrCost()
1803 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i1, 3 }, in getCastInstrCost()
1804 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i1, 3 }, in getCastInstrCost()
1805 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i1, 8 }, in getCastInstrCost()
1806 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i8, 3 }, in getCastInstrCost()
1807 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i8, 3 }, in getCastInstrCost()
1808 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i8, 8 }, in getCastInstrCost()
1809 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i16, 3 }, in getCastInstrCost()
1810 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i16, 3 }, in getCastInstrCost()
1811 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 5 }, in getCastInstrCost()
1812 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
1813 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
1814 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
1816 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i1, 7 }, in getCastInstrCost()
1817 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i1, 7 }, in getCastInstrCost()
1818 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i1, 6 }, in getCastInstrCost()
1819 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i8, 2 }, in getCastInstrCost()
1820 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i8, 2 }, in getCastInstrCost()
1821 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i8, 5 }, in getCastInstrCost()
1822 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i16, 2 }, in getCastInstrCost()
1823 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i16, 2 }, in getCastInstrCost()
1824 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 5 }, in getCastInstrCost()
1825 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 6 }, in getCastInstrCost()
1826 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 6 }, in getCastInstrCost()
1827 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 6 }, in getCastInstrCost()
1828 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 9 }, in getCastInstrCost()
1829 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
1830 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 6 }, in getCastInstrCost()
1836 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, 13 }, in getCastInstrCost()
1837 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, 13 }, in getCastInstrCost()
1839 { ISD::FP_TO_SINT, MVT::v8i8, MVT::v8f32, 4 }, in getCastInstrCost()
1840 { ISD::FP_TO_SINT, MVT::v4i8, MVT::v4f64, 3 }, in getCastInstrCost()
1841 { ISD::FP_TO_SINT, MVT::v4i16, MVT::v4f64, 2 }, in getCastInstrCost()
1842 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f32, 3 }, in getCastInstrCost()
1844 { ISD::FP_TO_UINT, MVT::v4i8, MVT::v4f64, 3 }, in getCastInstrCost()
1845 { ISD::FP_TO_UINT, MVT::v4i16, MVT::v4f64, 2 }, in getCastInstrCost()
1846 { ISD::FP_TO_UINT, MVT::v8i8, MVT::v8f32, 4 }, in getCastInstrCost()
1847 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f32, 3 }, in getCastInstrCost()
1853 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 8*4 }, in getCastInstrCost()
1854 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 4*4 }, in getCastInstrCost()
1856 { ISD::FP_EXTEND, MVT::v4f64, MVT::v4f32, 1 }, in getCastInstrCost()
1857 { ISD::FP_ROUND, MVT::v4f32, MVT::v4f64, 1 }, in getCastInstrCost()
1861 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i8, 2 }, in getCastInstrCost()
1862 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i8, 2 }, in getCastInstrCost()
1863 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 2 }, in getCastInstrCost()
1864 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 2 }, in getCastInstrCost()
1865 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
1866 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
1868 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i8, 1 }, in getCastInstrCost()
1869 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i8, 2 }, in getCastInstrCost()
1870 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i8, 1 }, in getCastInstrCost()
1871 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i8, 1 }, in getCastInstrCost()
1872 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i8, 1 }, in getCastInstrCost()
1873 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i8, 1 }, in getCastInstrCost()
1874 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 2 }, in getCastInstrCost()
1875 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 2 }, in getCastInstrCost()
1876 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
1877 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
1878 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 4 }, in getCastInstrCost()
1879 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 4 }, in getCastInstrCost()
1880 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i16, 1 }, in getCastInstrCost()
1881 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i16, 1 }, in getCastInstrCost()
1882 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
1883 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
1884 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 4 }, in getCastInstrCost()
1885 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 4 }, in getCastInstrCost()
1888 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 1 }, // PMOVXZBQ in getCastInstrCost()
1889 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 1 }, // PMOVXZWQ in getCastInstrCost()
1890 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 1 }, // PMOVXZBD in getCastInstrCost()
1892 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i16, 1 }, in getCastInstrCost()
1893 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i16, 1 }, in getCastInstrCost()
1894 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i16, 1 }, in getCastInstrCost()
1895 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i32, 1 }, in getCastInstrCost()
1896 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i32, 1 }, in getCastInstrCost()
1897 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 3 }, in getCastInstrCost()
1898 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 3 }, in getCastInstrCost()
1899 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 6 }, in getCastInstrCost()
1900 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i64, 1 }, // PSHUFB in getCastInstrCost()
1902 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 4 }, in getCastInstrCost()
1903 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 4 }, in getCastInstrCost()
1905 { ISD::FP_TO_SINT, MVT::v2i8, MVT::v2f32, 3 }, in getCastInstrCost()
1906 { ISD::FP_TO_SINT, MVT::v2i8, MVT::v2f64, 3 }, in getCastInstrCost()
1908 { ISD::FP_TO_UINT, MVT::v2i8, MVT::v2f32, 3 }, in getCastInstrCost()
1909 { ISD::FP_TO_UINT, MVT::v2i8, MVT::v2f64, 3 }, in getCastInstrCost()
1910 { ISD::FP_TO_UINT, MVT::v4i16, MVT::v4f32, 2 }, in getCastInstrCost()
1917 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, 8 }, in getCastInstrCost()
1918 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 16*10 }, in getCastInstrCost()
1919 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, 15 }, in getCastInstrCost()
1920 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 8*10 }, in getCastInstrCost()
1921 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 5 }, in getCastInstrCost()
1922 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, 2*10 }, in getCastInstrCost()
1923 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i32, 2*10 }, in getCastInstrCost()
1924 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, 15 }, in getCastInstrCost()
1925 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 2*10 }, in getCastInstrCost()
1927 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 16*10 }, in getCastInstrCost()
1928 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, 8 }, in getCastInstrCost()
1929 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, 15 }, in getCastInstrCost()
1930 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 8*10 }, in getCastInstrCost()
1931 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, 4*10 }, in getCastInstrCost()
1932 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 8 }, in getCastInstrCost()
1933 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 6 }, in getCastInstrCost()
1934 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, 15 }, in getCastInstrCost()
1936 { ISD::FP_TO_SINT, MVT::v2i8, MVT::v2f32, 4 }, in getCastInstrCost()
1937 { ISD::FP_TO_SINT, MVT::v2i16, MVT::v2f32, 2 }, in getCastInstrCost()
1938 { ISD::FP_TO_SINT, MVT::v4i8, MVT::v4f32, 3 }, in getCastInstrCost()
1939 { ISD::FP_TO_SINT, MVT::v4i16, MVT::v4f32, 2 }, in getCastInstrCost()
1940 { ISD::FP_TO_SINT, MVT::v2i16, MVT::v2f64, 2 }, in getCastInstrCost()
1941 { ISD::FP_TO_SINT, MVT::v2i8, MVT::v2f64, 4 }, in getCastInstrCost()
1943 { ISD::FP_TO_SINT, MVT::v2i32, MVT::v2f64, 1 }, in getCastInstrCost()
1945 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 6 }, in getCastInstrCost()
1946 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 6 }, in getCastInstrCost()
1948 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
1949 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 4 }, in getCastInstrCost()
1950 { ISD::FP_TO_UINT, MVT::v2i8, MVT::v2f32, 4 }, in getCastInstrCost()
1951 { ISD::FP_TO_UINT, MVT::v2i8, MVT::v2f64, 4 }, in getCastInstrCost()
1952 { ISD::FP_TO_UINT, MVT::v4i8, MVT::v4f32, 3 }, in getCastInstrCost()
1953 { ISD::FP_TO_UINT, MVT::v2i16, MVT::v2f32, 2 }, in getCastInstrCost()
1954 { ISD::FP_TO_UINT, MVT::v2i16, MVT::v2f64, 2 }, in getCastInstrCost()
1955 { ISD::FP_TO_UINT, MVT::v4i16, MVT::v4f32, 4 }, in getCastInstrCost()
1957 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i8, 1 }, in getCastInstrCost()
1958 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i8, 6 }, in getCastInstrCost()
1959 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i8, 2 }, in getCastInstrCost()
1960 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i8, 3 }, in getCastInstrCost()
1961 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i8, 4 }, in getCastInstrCost()
1962 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i8, 8 }, in getCastInstrCost()
1963 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i8, 1 }, in getCastInstrCost()
1964 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i8, 2 }, in getCastInstrCost()
1965 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 6 }, in getCastInstrCost()
1966 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 6 }, in getCastInstrCost()
1967 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 3 }, in getCastInstrCost()
1968 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 4 }, in getCastInstrCost()
1969 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 9 }, in getCastInstrCost()
1970 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 12 }, in getCastInstrCost()
1971 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i16, 1 }, in getCastInstrCost()
1972 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i16, 2 }, in getCastInstrCost()
1973 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 3 }, in getCastInstrCost()
1974 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 10 }, in getCastInstrCost()
1975 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 3 }, in getCastInstrCost()
1976 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 4 }, in getCastInstrCost()
1977 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 6 }, in getCastInstrCost()
1978 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 8 }, in getCastInstrCost()
1979 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 3 }, in getCastInstrCost()
1980 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 5 }, in getCastInstrCost()
1983 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 1 }, // PSHUFD in getCastInstrCost()
1984 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, // PUNPCKLWD+DQ in getCastInstrCost()
1985 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // PUNPCKLBW+WD+PSHUFD in getCastInstrCost()
1986 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 1 }, // PUNPCKLWD in getCastInstrCost()
1987 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, // PUNPCKLBW+WD in getCastInstrCost()
1988 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 1 }, // PUNPCKLBW in getCastInstrCost()
1990 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i16, 2 }, // PAND+PACKUSWB in getCastInstrCost()
1991 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i16, 2 }, // PAND+PACKUSWB in getCastInstrCost()
1992 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i16, 2 }, // PAND+PACKUSWB in getCastInstrCost()
1993 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, in getCastInstrCost()
1994 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i32, 3 }, // PAND+2*PACKUSWB in getCastInstrCost()
1995 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i32, 1 }, in getCastInstrCost()
1996 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i32, 3 }, in getCastInstrCost()
1997 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i32, 3 }, in getCastInstrCost()
1998 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 4 }, in getCastInstrCost()
1999 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 7 }, in getCastInstrCost()
2000 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
2001 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 10 }, in getCastInstrCost()
2002 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i64, 4 }, // PAND+3*PACKUSWB in getCastInstrCost()
2003 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i64, 2 }, // PSHUFD+PSHUFLW in getCastInstrCost()
2004 { ISD::TRUNCATE, MVT::v2i32, MVT::v2i64, 1 }, // PSHUFD in getCastInstrCost()
2007 std::pair<int, MVT> LTSrc = TLI->getTypeLegalizationCost(DL, Src); in getCastInstrCost()
2008 std::pair<int, MVT> LTDest = TLI->getTypeLegalizationCost(DL, Dst); in getCastInstrCost()
2023 MVT SimpleSrcTy = SrcTy.getSimpleVT(); in getCastInstrCost()
2024 MVT SimpleDstTy = DstTy.getSimpleVT(); in getCastInstrCost()
2096 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getCmpSelInstrCost()
2098 MVT MTy = LT.second; in getCmpSelInstrCost()
2146 { ISD::SETCC, MVT::v2i64, 2 }, in getCmpSelInstrCost()
2150 { ISD::SETCC, MVT::v32i16, 1 }, in getCmpSelInstrCost()
2151 { ISD::SETCC, MVT::v64i8, 1 }, in getCmpSelInstrCost()
2153 { ISD::SELECT, MVT::v32i16, 1 }, in getCmpSelInstrCost()
2154 { ISD::SELECT, MVT::v64i8, 1 }, in getCmpSelInstrCost()
2158 { ISD::SETCC, MVT::v8i64, 1 }, in getCmpSelInstrCost()
2159 { ISD::SETCC, MVT::v16i32, 1 }, in getCmpSelInstrCost()
2160 { ISD::SETCC, MVT::v8f64, 1 }, in getCmpSelInstrCost()
2161 { ISD::SETCC, MVT::v16f32, 1 }, in getCmpSelInstrCost()
2163 { ISD::SELECT, MVT::v8i64, 1 }, in getCmpSelInstrCost()
2164 { ISD::SELECT, MVT::v16i32, 1 }, in getCmpSelInstrCost()
2165 { ISD::SELECT, MVT::v8f64, 1 }, in getCmpSelInstrCost()
2166 { ISD::SELECT, MVT::v16f32, 1 }, in getCmpSelInstrCost()
2168 { ISD::SETCC, MVT::v32i16, 2 }, // FIXME: should probably be 4 in getCmpSelInstrCost()
2169 { ISD::SETCC, MVT::v64i8, 2 }, // FIXME: should probably be 4 in getCmpSelInstrCost()
2171 { ISD::SELECT, MVT::v32i16, 2 }, // FIXME: should be 3 in getCmpSelInstrCost()
2172 { ISD::SELECT, MVT::v64i8, 2 }, // FIXME: should be 3 in getCmpSelInstrCost()
2176 { ISD::SETCC, MVT::v4i64, 1 }, in getCmpSelInstrCost()
2177 { ISD::SETCC, MVT::v8i32, 1 }, in getCmpSelInstrCost()
2178 { ISD::SETCC, MVT::v16i16, 1 }, in getCmpSelInstrCost()
2179 { ISD::SETCC, MVT::v32i8, 1 }, in getCmpSelInstrCost()
2181 { ISD::SELECT, MVT::v4i64, 1 }, // pblendvb in getCmpSelInstrCost()
2182 { ISD::SELECT, MVT::v8i32, 1 }, // pblendvb in getCmpSelInstrCost()
2183 { ISD::SELECT, MVT::v16i16, 1 }, // pblendvb in getCmpSelInstrCost()
2184 { ISD::SELECT, MVT::v32i8, 1 }, // pblendvb in getCmpSelInstrCost()
2188 { ISD::SETCC, MVT::v4f64, 1 }, in getCmpSelInstrCost()
2189 { ISD::SETCC, MVT::v8f32, 1 }, in getCmpSelInstrCost()
2191 { ISD::SETCC, MVT::v4i64, 4 }, in getCmpSelInstrCost()
2192 { ISD::SETCC, MVT::v8i32, 4 }, in getCmpSelInstrCost()
2193 { ISD::SETCC, MVT::v16i16, 4 }, in getCmpSelInstrCost()
2194 { ISD::SETCC, MVT::v32i8, 4 }, in getCmpSelInstrCost()
2196 { ISD::SELECT, MVT::v4f64, 1 }, // vblendvpd in getCmpSelInstrCost()
2197 { ISD::SELECT, MVT::v8f32, 1 }, // vblendvps in getCmpSelInstrCost()
2198 { ISD::SELECT, MVT::v4i64, 1 }, // vblendvpd in getCmpSelInstrCost()
2199 { ISD::SELECT, MVT::v8i32, 1 }, // vblendvps in getCmpSelInstrCost()
2200 { ISD::SELECT, MVT::v16i16, 3 }, // vandps + vandnps + vorps in getCmpSelInstrCost()
2201 { ISD::SELECT, MVT::v32i8, 3 }, // vandps + vandnps + vorps in getCmpSelInstrCost()
2205 { ISD::SETCC, MVT::v2f64, 1 }, in getCmpSelInstrCost()
2206 { ISD::SETCC, MVT::v4f32, 1 }, in getCmpSelInstrCost()
2207 { ISD::SETCC, MVT::v2i64, 1 }, in getCmpSelInstrCost()
2211 { ISD::SELECT, MVT::v2f64, 1 }, // blendvpd in getCmpSelInstrCost()
2212 { ISD::SELECT, MVT::v4f32, 1 }, // blendvps in getCmpSelInstrCost()
2213 { ISD::SELECT, MVT::v2i64, 1 }, // pblendvb in getCmpSelInstrCost()
2214 { ISD::SELECT, MVT::v4i32, 1 }, // pblendvb in getCmpSelInstrCost()
2215 { ISD::SELECT, MVT::v8i16, 1 }, // pblendvb in getCmpSelInstrCost()
2216 { ISD::SELECT, MVT::v16i8, 1 }, // pblendvb in getCmpSelInstrCost()
2220 { ISD::SETCC, MVT::v2f64, 2 }, in getCmpSelInstrCost()
2221 { ISD::SETCC, MVT::f64, 1 }, in getCmpSelInstrCost()
2222 { ISD::SETCC, MVT::v2i64, 8 }, in getCmpSelInstrCost()
2223 { ISD::SETCC, MVT::v4i32, 1 }, in getCmpSelInstrCost()
2224 { ISD::SETCC, MVT::v8i16, 1 }, in getCmpSelInstrCost()
2225 { ISD::SETCC, MVT::v16i8, 1 }, in getCmpSelInstrCost()
2227 { ISD::SELECT, MVT::v2f64, 3 }, // andpd + andnpd + orpd in getCmpSelInstrCost()
2228 { ISD::SELECT, MVT::v2i64, 3 }, // pand + pandn + por in getCmpSelInstrCost()
2229 { ISD::SELECT, MVT::v4i32, 3 }, // pand + pandn + por in getCmpSelInstrCost()
2230 { ISD::SELECT, MVT::v8i16, 3 }, // pand + pandn + por in getCmpSelInstrCost()
2231 { ISD::SELECT, MVT::v16i8, 3 }, // pand + pandn + por in getCmpSelInstrCost()
2235 { ISD::SETCC, MVT::v4f32, 2 }, in getCmpSelInstrCost()
2236 { ISD::SETCC, MVT::f32, 1 }, in getCmpSelInstrCost()
2238 { ISD::SELECT, MVT::v4f32, 3 }, // andps + andnps + orps in getCmpSelInstrCost()
2295 { ISD::CTLZ, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2296 { ISD::CTLZ, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2297 { ISD::CTLZ, MVT::v32i16, 8 }, in getTypeBasedIntrinsicInstrCost()
2298 { ISD::CTLZ, MVT::v64i8, 20 }, in getTypeBasedIntrinsicInstrCost()
2299 { ISD::CTLZ, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2300 { ISD::CTLZ, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2301 { ISD::CTLZ, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2302 { ISD::CTLZ, MVT::v32i8, 10 }, in getTypeBasedIntrinsicInstrCost()
2303 { ISD::CTLZ, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2304 { ISD::CTLZ, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2305 { ISD::CTLZ, MVT::v8i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2306 { ISD::CTLZ, MVT::v16i8, 4 }, in getTypeBasedIntrinsicInstrCost()
2309 { ISD::ABS, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2310 { ISD::ABS, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2311 { ISD::BITREVERSE, MVT::v8i64, 5 }, in getTypeBasedIntrinsicInstrCost()
2312 { ISD::BITREVERSE, MVT::v16i32, 5 }, in getTypeBasedIntrinsicInstrCost()
2313 { ISD::BITREVERSE, MVT::v32i16, 5 }, in getTypeBasedIntrinsicInstrCost()
2314 { ISD::BITREVERSE, MVT::v64i8, 5 }, in getTypeBasedIntrinsicInstrCost()
2315 { ISD::CTLZ, MVT::v8i64, 23 }, in getTypeBasedIntrinsicInstrCost()
2316 { ISD::CTLZ, MVT::v16i32, 22 }, in getTypeBasedIntrinsicInstrCost()
2317 { ISD::CTLZ, MVT::v32i16, 18 }, in getTypeBasedIntrinsicInstrCost()
2318 { ISD::CTLZ, MVT::v64i8, 17 }, in getTypeBasedIntrinsicInstrCost()
2319 { ISD::CTPOP, MVT::v8i64, 7 }, in getTypeBasedIntrinsicInstrCost()
2320 { ISD::CTPOP, MVT::v16i32, 11 }, in getTypeBasedIntrinsicInstrCost()
2321 { ISD::CTPOP, MVT::v32i16, 9 }, in getTypeBasedIntrinsicInstrCost()
2322 { ISD::CTPOP, MVT::v64i8, 6 }, in getTypeBasedIntrinsicInstrCost()
2323 { ISD::CTTZ, MVT::v8i64, 10 }, in getTypeBasedIntrinsicInstrCost()
2324 { ISD::CTTZ, MVT::v16i32, 14 }, in getTypeBasedIntrinsicInstrCost()
2325 { ISD::CTTZ, MVT::v32i16, 12 }, in getTypeBasedIntrinsicInstrCost()
2326 { ISD::CTTZ, MVT::v64i8, 9 }, in getTypeBasedIntrinsicInstrCost()
2327 { ISD::SADDSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2328 { ISD::SADDSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2329 { ISD::SMAX, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2330 { ISD::SMAX, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2331 { ISD::SMIN, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2332 { ISD::SMIN, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2333 { ISD::SSUBSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2334 { ISD::SSUBSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2335 { ISD::UADDSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2336 { ISD::UADDSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2337 { ISD::UMAX, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2338 { ISD::UMAX, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2339 { ISD::UMIN, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2340 { ISD::UMIN, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2341 { ISD::USUBSAT, MVT::v32i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2342 { ISD::USUBSAT, MVT::v64i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2345 { ISD::ABS, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2346 { ISD::ABS, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2347 { ISD::ABS, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2348 { ISD::ABS, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2349 { ISD::ABS, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2350 { ISD::ABS, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2351 { ISD::BITREVERSE, MVT::v8i64, 36 }, in getTypeBasedIntrinsicInstrCost()
2352 { ISD::BITREVERSE, MVT::v16i32, 24 }, in getTypeBasedIntrinsicInstrCost()
2353 { ISD::BITREVERSE, MVT::v32i16, 10 }, in getTypeBasedIntrinsicInstrCost()
2354 { ISD::BITREVERSE, MVT::v64i8, 10 }, in getTypeBasedIntrinsicInstrCost()
2355 { ISD::CTLZ, MVT::v8i64, 29 }, in getTypeBasedIntrinsicInstrCost()
2356 { ISD::CTLZ, MVT::v16i32, 35 }, in getTypeBasedIntrinsicInstrCost()
2357 { ISD::CTLZ, MVT::v32i16, 28 }, in getTypeBasedIntrinsicInstrCost()
2358 { ISD::CTLZ, MVT::v64i8, 18 }, in getTypeBasedIntrinsicInstrCost()
2359 { ISD::CTPOP, MVT::v8i64, 16 }, in getTypeBasedIntrinsicInstrCost()
2360 { ISD::CTPOP, MVT::v16i32, 24 }, in getTypeBasedIntrinsicInstrCost()
2361 { ISD::CTPOP, MVT::v32i16, 18 }, in getTypeBasedIntrinsicInstrCost()
2362 { ISD::CTPOP, MVT::v64i8, 12 }, in getTypeBasedIntrinsicInstrCost()
2363 { ISD::CTTZ, MVT::v8i64, 20 }, in getTypeBasedIntrinsicInstrCost()
2364 { ISD::CTTZ, MVT::v16i32, 28 }, in getTypeBasedIntrinsicInstrCost()
2365 { ISD::CTTZ, MVT::v32i16, 24 }, in getTypeBasedIntrinsicInstrCost()
2366 { ISD::CTTZ, MVT::v64i8, 18 }, in getTypeBasedIntrinsicInstrCost()
2367 { ISD::SMAX, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2368 { ISD::SMAX, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2369 { ISD::SMAX, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2370 { ISD::SMAX, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2371 { ISD::SMAX, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2372 { ISD::SMAX, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2373 { ISD::SMIN, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2374 { ISD::SMIN, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2375 { ISD::SMIN, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2376 { ISD::SMIN, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2377 { ISD::SMIN, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2378 { ISD::SMIN, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2379 { ISD::UMAX, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2380 { ISD::UMAX, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2381 { ISD::UMAX, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2382 { ISD::UMAX, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2383 { ISD::UMAX, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2384 { ISD::UMAX, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2385 { ISD::UMIN, MVT::v8i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2386 { ISD::UMIN, MVT::v16i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2387 { ISD::UMIN, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2388 { ISD::UMIN, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2389 { ISD::UMIN, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2390 { ISD::UMIN, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2391 { ISD::USUBSAT, MVT::v16i32, 2 }, // pmaxud + psubd in getTypeBasedIntrinsicInstrCost()
2392 { ISD::USUBSAT, MVT::v2i64, 2 }, // pmaxuq + psubq in getTypeBasedIntrinsicInstrCost()
2393 { ISD::USUBSAT, MVT::v4i64, 2 }, // pmaxuq + psubq in getTypeBasedIntrinsicInstrCost()
2394 { ISD::USUBSAT, MVT::v8i64, 2 }, // pmaxuq + psubq in getTypeBasedIntrinsicInstrCost()
2395 { ISD::UADDSAT, MVT::v16i32, 3 }, // not + pminud + paddd in getTypeBasedIntrinsicInstrCost()
2396 { ISD::UADDSAT, MVT::v2i64, 3 }, // not + pminuq + paddq in getTypeBasedIntrinsicInstrCost()
2397 { ISD::UADDSAT, MVT::v4i64, 3 }, // not + pminuq + paddq in getTypeBasedIntrinsicInstrCost()
2398 { ISD::UADDSAT, MVT::v8i64, 3 }, // not + pminuq + paddq in getTypeBasedIntrinsicInstrCost()
2399 { ISD::SADDSAT, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2400 { ISD::SADDSAT, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2401 { ISD::SSUBSAT, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2402 { ISD::SSUBSAT, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2403 { ISD::UADDSAT, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2404 { ISD::UADDSAT, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2405 { ISD::USUBSAT, MVT::v32i16, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2406 { ISD::USUBSAT, MVT::v64i8, 2 }, // FIXME: include split in getTypeBasedIntrinsicInstrCost()
2407 { ISD::FMAXNUM, MVT::f32, 2 }, in getTypeBasedIntrinsicInstrCost()
2408 { ISD::FMAXNUM, MVT::v4f32, 2 }, in getTypeBasedIntrinsicInstrCost()
2409 { ISD::FMAXNUM, MVT::v8f32, 2 }, in getTypeBasedIntrinsicInstrCost()
2410 { ISD::FMAXNUM, MVT::v16f32, 2 }, in getTypeBasedIntrinsicInstrCost()
2411 { ISD::FMAXNUM, MVT::f64, 2 }, in getTypeBasedIntrinsicInstrCost()
2412 { ISD::FMAXNUM, MVT::v2f64, 2 }, in getTypeBasedIntrinsicInstrCost()
2413 { ISD::FMAXNUM, MVT::v4f64, 2 }, in getTypeBasedIntrinsicInstrCost()
2414 { ISD::FMAXNUM, MVT::v8f64, 2 }, in getTypeBasedIntrinsicInstrCost()
2417 { ISD::BITREVERSE, MVT::v4i64, 4 }, in getTypeBasedIntrinsicInstrCost()
2418 { ISD::BITREVERSE, MVT::v8i32, 4 }, in getTypeBasedIntrinsicInstrCost()
2419 { ISD::BITREVERSE, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2420 { ISD::BITREVERSE, MVT::v32i8, 4 }, in getTypeBasedIntrinsicInstrCost()
2421 { ISD::BITREVERSE, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2422 { ISD::BITREVERSE, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2423 { ISD::BITREVERSE, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2424 { ISD::BITREVERSE, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2425 { ISD::BITREVERSE, MVT::i64, 3 }, in getTypeBasedIntrinsicInstrCost()
2426 { ISD::BITREVERSE, MVT::i32, 3 }, in getTypeBasedIntrinsicInstrCost()
2427 { ISD::BITREVERSE, MVT::i16, 3 }, in getTypeBasedIntrinsicInstrCost()
2428 { ISD::BITREVERSE, MVT::i8, 3 } in getTypeBasedIntrinsicInstrCost()
2431 { ISD::ABS, MVT::v4i64, 2 }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getTypeBasedIntrinsicInstrCost()
2432 { ISD::ABS, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2433 { ISD::ABS, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2434 { ISD::ABS, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2435 { ISD::BITREVERSE, MVT::v4i64, 5 }, in getTypeBasedIntrinsicInstrCost()
2436 { ISD::BITREVERSE, MVT::v8i32, 5 }, in getTypeBasedIntrinsicInstrCost()
2437 { ISD::BITREVERSE, MVT::v16i16, 5 }, in getTypeBasedIntrinsicInstrCost()
2438 { ISD::BITREVERSE, MVT::v32i8, 5 }, in getTypeBasedIntrinsicInstrCost()
2439 { ISD::BSWAP, MVT::v4i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2440 { ISD::BSWAP, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2441 { ISD::BSWAP, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2442 { ISD::CTLZ, MVT::v4i64, 23 }, in getTypeBasedIntrinsicInstrCost()
2443 { ISD::CTLZ, MVT::v8i32, 18 }, in getTypeBasedIntrinsicInstrCost()
2444 { ISD::CTLZ, MVT::v16i16, 14 }, in getTypeBasedIntrinsicInstrCost()
2445 { ISD::CTLZ, MVT::v32i8, 9 }, in getTypeBasedIntrinsicInstrCost()
2446 { ISD::CTPOP, MVT::v4i64, 7 }, in getTypeBasedIntrinsicInstrCost()
2447 { ISD::CTPOP, MVT::v8i32, 11 }, in getTypeBasedIntrinsicInstrCost()
2448 { ISD::CTPOP, MVT::v16i16, 9 }, in getTypeBasedIntrinsicInstrCost()
2449 { ISD::CTPOP, MVT::v32i8, 6 }, in getTypeBasedIntrinsicInstrCost()
2450 { ISD::CTTZ, MVT::v4i64, 10 }, in getTypeBasedIntrinsicInstrCost()
2451 { ISD::CTTZ, MVT::v8i32, 14 }, in getTypeBasedIntrinsicInstrCost()
2452 { ISD::CTTZ, MVT::v16i16, 12 }, in getTypeBasedIntrinsicInstrCost()
2453 { ISD::CTTZ, MVT::v32i8, 9 }, in getTypeBasedIntrinsicInstrCost()
2454 { ISD::SADDSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2455 { ISD::SADDSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2456 { ISD::SMAX, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2457 { ISD::SMAX, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2458 { ISD::SMAX, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2459 { ISD::SMIN, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2460 { ISD::SMIN, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2461 { ISD::SMIN, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2462 { ISD::SSUBSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2463 { ISD::SSUBSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2464 { ISD::UADDSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2465 { ISD::UADDSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2466 { ISD::UADDSAT, MVT::v8i32, 3 }, // not + pminud + paddd in getTypeBasedIntrinsicInstrCost()
2467 { ISD::UMAX, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2468 { ISD::UMAX, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2469 { ISD::UMAX, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2470 { ISD::UMIN, MVT::v8i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2471 { ISD::UMIN, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2472 { ISD::UMIN, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2473 { ISD::USUBSAT, MVT::v16i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2474 { ISD::USUBSAT, MVT::v32i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2475 { ISD::USUBSAT, MVT::v8i32, 2 }, // pmaxud + psubd in getTypeBasedIntrinsicInstrCost()
2476 { ISD::FMAXNUM, MVT::v8f32, 3 }, // MAXPS + CMPUNORDPS + BLENDVPS in getTypeBasedIntrinsicInstrCost()
2477 { ISD::FMAXNUM, MVT::v4f64, 3 }, // MAXPD + CMPUNORDPD + BLENDVPD in getTypeBasedIntrinsicInstrCost()
2478 { ISD::FSQRT, MVT::f32, 7 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2479 { ISD::FSQRT, MVT::v4f32, 7 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2480 { ISD::FSQRT, MVT::v8f32, 14 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2481 { ISD::FSQRT, MVT::f64, 14 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2482 { ISD::FSQRT, MVT::v2f64, 14 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2483 { ISD::FSQRT, MVT::v4f64, 28 }, // Haswell from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2486 { ISD::ABS, MVT::v4i64, 5 }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getTypeBasedIntrinsicInstrCost()
2487 { ISD::ABS, MVT::v8i32, 3 }, in getTypeBasedIntrinsicInstrCost()
2488 { ISD::ABS, MVT::v16i16, 3 }, in getTypeBasedIntrinsicInstrCost()
2489 { ISD::ABS, MVT::v32i8, 3 }, in getTypeBasedIntrinsicInstrCost()
2490 { ISD::BITREVERSE, MVT::v4i64, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2491 { ISD::BITREVERSE, MVT::v8i32, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2492 { ISD::BITREVERSE, MVT::v16i16, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2493 { ISD::BITREVERSE, MVT::v32i8, 12 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2494 { ISD::BSWAP, MVT::v4i64, 4 }, in getTypeBasedIntrinsicInstrCost()
2495 { ISD::BSWAP, MVT::v8i32, 4 }, in getTypeBasedIntrinsicInstrCost()
2496 { ISD::BSWAP, MVT::v16i16, 4 }, in getTypeBasedIntrinsicInstrCost()
2497 { ISD::CTLZ, MVT::v4i64, 48 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2498 { ISD::CTLZ, MVT::v8i32, 38 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2499 { ISD::CTLZ, MVT::v16i16, 30 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2500 { ISD::CTLZ, MVT::v32i8, 20 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2501 { ISD::CTPOP, MVT::v4i64, 16 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2502 { ISD::CTPOP, MVT::v8i32, 24 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2503 { ISD::CTPOP, MVT::v16i16, 20 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2504 { ISD::CTPOP, MVT::v32i8, 14 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2505 { ISD::CTTZ, MVT::v4i64, 22 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2506 { ISD::CTTZ, MVT::v8i32, 30 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2507 { ISD::CTTZ, MVT::v16i16, 26 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2508 { ISD::CTTZ, MVT::v32i8, 20 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2509 { ISD::SADDSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2510 { ISD::SADDSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2511 { ISD::SMAX, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2512 { ISD::SMAX, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2513 { ISD::SMAX, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2514 { ISD::SMIN, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2515 { ISD::SMIN, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2516 { ISD::SMIN, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2517 { ISD::SSUBSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2518 { ISD::SSUBSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2519 { ISD::UADDSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2520 { ISD::UADDSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2521 { ISD::UADDSAT, MVT::v8i32, 8 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2522 { ISD::UMAX, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2523 { ISD::UMAX, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2524 { ISD::UMAX, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2525 { ISD::UMIN, MVT::v8i32, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2526 { ISD::UMIN, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2527 { ISD::UMIN, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2528 { ISD::USUBSAT, MVT::v16i16, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2529 { ISD::USUBSAT, MVT::v32i8, 4 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2530 { ISD::USUBSAT, MVT::v8i32, 6 }, // 2 x 128-bit Op + extract/insert in getTypeBasedIntrinsicInstrCost()
2531 { ISD::FMAXNUM, MVT::f32, 3 }, // MAXSS + CMPUNORDSS + BLENDVPS in getTypeBasedIntrinsicInstrCost()
2532 { ISD::FMAXNUM, MVT::v4f32, 3 }, // MAXPS + CMPUNORDPS + BLENDVPS in getTypeBasedIntrinsicInstrCost()
2533 { ISD::FMAXNUM, MVT::v8f32, 5 }, // MAXPS + CMPUNORDPS + BLENDVPS + ? in getTypeBasedIntrinsicInstrCost()
2534 { ISD::FMAXNUM, MVT::f64, 3 }, // MAXSD + CMPUNORDSD + BLENDVPD in getTypeBasedIntrinsicInstrCost()
2535 { ISD::FMAXNUM, MVT::v2f64, 3 }, // MAXPD + CMPUNORDPD + BLENDVPD in getTypeBasedIntrinsicInstrCost()
2536 { ISD::FMAXNUM, MVT::v4f64, 5 }, // MAXPD + CMPUNORDPD + BLENDVPD + ? in getTypeBasedIntrinsicInstrCost()
2537 { ISD::FSQRT, MVT::f32, 14 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2538 { ISD::FSQRT, MVT::v4f32, 14 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2539 { ISD::FSQRT, MVT::v8f32, 28 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2540 { ISD::FSQRT, MVT::f64, 21 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2541 { ISD::FSQRT, MVT::v2f64, 21 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2542 { ISD::FSQRT, MVT::v4f64, 43 }, // SNB from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2545 { ISD::FSQRT, MVT::f32, 19 }, // sqrtss in getTypeBasedIntrinsicInstrCost()
2546 { ISD::FSQRT, MVT::v4f32, 37 }, // sqrtps in getTypeBasedIntrinsicInstrCost()
2547 { ISD::FSQRT, MVT::f64, 34 }, // sqrtsd in getTypeBasedIntrinsicInstrCost()
2548 { ISD::FSQRT, MVT::v2f64, 67 }, // sqrtpd in getTypeBasedIntrinsicInstrCost()
2551 { ISD::FSQRT, MVT::f32, 20 }, // sqrtss in getTypeBasedIntrinsicInstrCost()
2552 { ISD::FSQRT, MVT::v4f32, 40 }, // sqrtps in getTypeBasedIntrinsicInstrCost()
2553 { ISD::FSQRT, MVT::f64, 35 }, // sqrtsd in getTypeBasedIntrinsicInstrCost()
2554 { ISD::FSQRT, MVT::v2f64, 70 }, // sqrtpd in getTypeBasedIntrinsicInstrCost()
2557 { ISD::USUBSAT, MVT::v4i32, 2 }, // pmaxud + psubd in getTypeBasedIntrinsicInstrCost()
2558 { ISD::UADDSAT, MVT::v4i32, 3 }, // not + pminud + paddd in getTypeBasedIntrinsicInstrCost()
2559 { ISD::FSQRT, MVT::f32, 18 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2560 { ISD::FSQRT, MVT::v4f32, 18 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2563 { ISD::ABS, MVT::v2i64, 2 }, // BLENDVPD(X,PSUBQ(0,X),X) in getTypeBasedIntrinsicInstrCost()
2564 { ISD::SMAX, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2565 { ISD::SMAX, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2566 { ISD::SMIN, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2567 { ISD::SMIN, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2568 { ISD::UMAX, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2569 { ISD::UMAX, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2570 { ISD::UMIN, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2571 { ISD::UMIN, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2574 { ISD::ABS, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2575 { ISD::ABS, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2576 { ISD::ABS, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2577 { ISD::BITREVERSE, MVT::v2i64, 5 }, in getTypeBasedIntrinsicInstrCost()
2578 { ISD::BITREVERSE, MVT::v4i32, 5 }, in getTypeBasedIntrinsicInstrCost()
2579 { ISD::BITREVERSE, MVT::v8i16, 5 }, in getTypeBasedIntrinsicInstrCost()
2580 { ISD::BITREVERSE, MVT::v16i8, 5 }, in getTypeBasedIntrinsicInstrCost()
2581 { ISD::BSWAP, MVT::v2i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2582 { ISD::BSWAP, MVT::v4i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2583 { ISD::BSWAP, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2584 { ISD::CTLZ, MVT::v2i64, 23 }, in getTypeBasedIntrinsicInstrCost()
2585 { ISD::CTLZ, MVT::v4i32, 18 }, in getTypeBasedIntrinsicInstrCost()
2586 { ISD::CTLZ, MVT::v8i16, 14 }, in getTypeBasedIntrinsicInstrCost()
2587 { ISD::CTLZ, MVT::v16i8, 9 }, in getTypeBasedIntrinsicInstrCost()
2588 { ISD::CTPOP, MVT::v2i64, 7 }, in getTypeBasedIntrinsicInstrCost()
2589 { ISD::CTPOP, MVT::v4i32, 11 }, in getTypeBasedIntrinsicInstrCost()
2590 { ISD::CTPOP, MVT::v8i16, 9 }, in getTypeBasedIntrinsicInstrCost()
2591 { ISD::CTPOP, MVT::v16i8, 6 }, in getTypeBasedIntrinsicInstrCost()
2592 { ISD::CTTZ, MVT::v2i64, 10 }, in getTypeBasedIntrinsicInstrCost()
2593 { ISD::CTTZ, MVT::v4i32, 14 }, in getTypeBasedIntrinsicInstrCost()
2594 { ISD::CTTZ, MVT::v8i16, 12 }, in getTypeBasedIntrinsicInstrCost()
2595 { ISD::CTTZ, MVT::v16i8, 9 } in getTypeBasedIntrinsicInstrCost()
2598 { ISD::ABS, MVT::v2i64, 4 }, in getTypeBasedIntrinsicInstrCost()
2599 { ISD::ABS, MVT::v4i32, 3 }, in getTypeBasedIntrinsicInstrCost()
2600 { ISD::ABS, MVT::v8i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2601 { ISD::ABS, MVT::v16i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2602 { ISD::BITREVERSE, MVT::v2i64, 29 }, in getTypeBasedIntrinsicInstrCost()
2603 { ISD::BITREVERSE, MVT::v4i32, 27 }, in getTypeBasedIntrinsicInstrCost()
2604 { ISD::BITREVERSE, MVT::v8i16, 27 }, in getTypeBasedIntrinsicInstrCost()
2605 { ISD::BITREVERSE, MVT::v16i8, 20 }, in getTypeBasedIntrinsicInstrCost()
2606 { ISD::BSWAP, MVT::v2i64, 7 }, in getTypeBasedIntrinsicInstrCost()
2607 { ISD::BSWAP, MVT::v4i32, 7 }, in getTypeBasedIntrinsicInstrCost()
2608 { ISD::BSWAP, MVT::v8i16, 7 }, in getTypeBasedIntrinsicInstrCost()
2609 { ISD::CTLZ, MVT::v2i64, 25 }, in getTypeBasedIntrinsicInstrCost()
2610 { ISD::CTLZ, MVT::v4i32, 26 }, in getTypeBasedIntrinsicInstrCost()
2611 { ISD::CTLZ, MVT::v8i16, 20 }, in getTypeBasedIntrinsicInstrCost()
2612 { ISD::CTLZ, MVT::v16i8, 17 }, in getTypeBasedIntrinsicInstrCost()
2613 { ISD::CTPOP, MVT::v2i64, 12 }, in getTypeBasedIntrinsicInstrCost()
2614 { ISD::CTPOP, MVT::v4i32, 15 }, in getTypeBasedIntrinsicInstrCost()
2615 { ISD::CTPOP, MVT::v8i16, 13 }, in getTypeBasedIntrinsicInstrCost()
2616 { ISD::CTPOP, MVT::v16i8, 10 }, in getTypeBasedIntrinsicInstrCost()
2617 { ISD::CTTZ, MVT::v2i64, 14 }, in getTypeBasedIntrinsicInstrCost()
2618 { ISD::CTTZ, MVT::v4i32, 18 }, in getTypeBasedIntrinsicInstrCost()
2619 { ISD::CTTZ, MVT::v8i16, 16 }, in getTypeBasedIntrinsicInstrCost()
2620 { ISD::CTTZ, MVT::v16i8, 13 }, in getTypeBasedIntrinsicInstrCost()
2621 { ISD::SADDSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2622 { ISD::SADDSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2623 { ISD::SMAX, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2624 { ISD::SMIN, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2625 { ISD::SSUBSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2626 { ISD::SSUBSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2627 { ISD::UADDSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2628 { ISD::UADDSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2629 { ISD::UMAX, MVT::v8i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2630 { ISD::UMAX, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2631 { ISD::UMIN, MVT::v8i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2632 { ISD::UMIN, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2633 { ISD::USUBSAT, MVT::v8i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2634 { ISD::USUBSAT, MVT::v16i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2635 { ISD::FMAXNUM, MVT::f64, 4 }, in getTypeBasedIntrinsicInstrCost()
2636 { ISD::FMAXNUM, MVT::v2f64, 4 }, in getTypeBasedIntrinsicInstrCost()
2637 { ISD::FSQRT, MVT::f64, 32 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2638 { ISD::FSQRT, MVT::v2f64, 32 }, // Nehalem from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2641 { ISD::FMAXNUM, MVT::f32, 4 }, in getTypeBasedIntrinsicInstrCost()
2642 { ISD::FMAXNUM, MVT::v4f32, 4 }, in getTypeBasedIntrinsicInstrCost()
2643 { ISD::FSQRT, MVT::f32, 28 }, // Pentium III from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2644 { ISD::FSQRT, MVT::v4f32, 56 }, // Pentium III from http://www.agner.org/ in getTypeBasedIntrinsicInstrCost()
2647 { ISD::CTTZ, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2650 { ISD::CTTZ, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2651 { ISD::CTTZ, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2652 { ISD::CTTZ, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2655 { ISD::CTLZ, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2658 { ISD::CTLZ, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2659 { ISD::CTLZ, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2660 { ISD::CTLZ, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2663 { ISD::CTPOP, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2666 { ISD::CTPOP, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2667 { ISD::CTPOP, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2668 { ISD::CTPOP, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2671 { ISD::ABS, MVT::i64, 2 }, // SUB+CMOV in getTypeBasedIntrinsicInstrCost()
2672 { ISD::BITREVERSE, MVT::i64, 14 }, in getTypeBasedIntrinsicInstrCost()
2673 { ISD::CTLZ, MVT::i64, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
2674 { ISD::CTTZ, MVT::i64, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
2675 { ISD::CTPOP, MVT::i64, 10 }, in getTypeBasedIntrinsicInstrCost()
2676 { ISD::SADDO, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2677 { ISD::UADDO, MVT::i64, 1 }, in getTypeBasedIntrinsicInstrCost()
2678 { ISD::UMULO, MVT::i64, 2 }, // mulq + seto in getTypeBasedIntrinsicInstrCost()
2681 { ISD::ABS, MVT::i32, 2 }, // SUB+CMOV in getTypeBasedIntrinsicInstrCost()
2682 { ISD::ABS, MVT::i16, 2 }, // SUB+CMOV in getTypeBasedIntrinsicInstrCost()
2683 { ISD::BITREVERSE, MVT::i32, 14 }, in getTypeBasedIntrinsicInstrCost()
2684 { ISD::BITREVERSE, MVT::i16, 14 }, in getTypeBasedIntrinsicInstrCost()
2685 { ISD::BITREVERSE, MVT::i8, 11 }, in getTypeBasedIntrinsicInstrCost()
2686 { ISD::CTLZ, MVT::i32, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
2687 { ISD::CTLZ, MVT::i16, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
2688 { ISD::CTLZ, MVT::i8, 4 }, // BSR+XOR or BSR+XOR+CMOV in getTypeBasedIntrinsicInstrCost()
2689 { ISD::CTTZ, MVT::i32, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
2690 { ISD::CTTZ, MVT::i16, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
2691 { ISD::CTTZ, MVT::i8, 3 }, // TEST+BSF+CMOV/BRANCH in getTypeBasedIntrinsicInstrCost()
2692 { ISD::CTPOP, MVT::i32, 8 }, in getTypeBasedIntrinsicInstrCost()
2693 { ISD::CTPOP, MVT::i16, 9 }, in getTypeBasedIntrinsicInstrCost()
2694 { ISD::CTPOP, MVT::i8, 7 }, in getTypeBasedIntrinsicInstrCost()
2695 { ISD::SADDO, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2696 { ISD::SADDO, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2697 { ISD::SADDO, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2698 { ISD::UADDO, MVT::i32, 1 }, in getTypeBasedIntrinsicInstrCost()
2699 { ISD::UADDO, MVT::i16, 1 }, in getTypeBasedIntrinsicInstrCost()
2700 { ISD::UADDO, MVT::i8, 1 }, in getTypeBasedIntrinsicInstrCost()
2701 { ISD::UMULO, MVT::i32, 2 }, // mul + seto in getTypeBasedIntrinsicInstrCost()
2702 { ISD::UMULO, MVT::i16, 2 }, in getTypeBasedIntrinsicInstrCost()
2703 { ISD::UMULO, MVT::i8, 2 }, in getTypeBasedIntrinsicInstrCost()
2785 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, OpTy); in getTypeBasedIntrinsicInstrCost()
2786 MVT MTy = LT.second; in getTypeBasedIntrinsicInstrCost()
2794 unsigned Cost = MTy.getVectorElementType() == MVT::i8 ? 1 : 2; in getTypeBasedIntrinsicInstrCost()
2915 { ISD::ROTL, MVT::v8i64, 1 }, in getIntrinsicInstrCost()
2916 { ISD::ROTL, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
2917 { ISD::ROTL, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
2918 { ISD::ROTL, MVT::v16i32, 1 }, in getIntrinsicInstrCost()
2919 { ISD::ROTL, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
2920 { ISD::ROTL, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
2921 { ISD::ROTR, MVT::v8i64, 1 }, in getIntrinsicInstrCost()
2922 { ISD::ROTR, MVT::v4i64, 1 }, in getIntrinsicInstrCost()
2923 { ISD::ROTR, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
2924 { ISD::ROTR, MVT::v16i32, 1 }, in getIntrinsicInstrCost()
2925 { ISD::ROTR, MVT::v8i32, 1 }, in getIntrinsicInstrCost()
2926 { ISD::ROTR, MVT::v4i32, 1 } in getIntrinsicInstrCost()
2930 { ISD::ROTL, MVT::v4i64, 4 }, in getIntrinsicInstrCost()
2931 { ISD::ROTL, MVT::v8i32, 4 }, in getIntrinsicInstrCost()
2932 { ISD::ROTL, MVT::v16i16, 4 }, in getIntrinsicInstrCost()
2933 { ISD::ROTL, MVT::v32i8, 4 }, in getIntrinsicInstrCost()
2934 { ISD::ROTL, MVT::v2i64, 1 }, in getIntrinsicInstrCost()
2935 { ISD::ROTL, MVT::v4i32, 1 }, in getIntrinsicInstrCost()
2936 { ISD::ROTL, MVT::v8i16, 1 }, in getIntrinsicInstrCost()
2937 { ISD::ROTL, MVT::v16i8, 1 }, in getIntrinsicInstrCost()
2938 { ISD::ROTR, MVT::v4i64, 6 }, in getIntrinsicInstrCost()
2939 { ISD::ROTR, MVT::v8i32, 6 }, in getIntrinsicInstrCost()
2940 { ISD::ROTR, MVT::v16i16, 6 }, in getIntrinsicInstrCost()
2941 { ISD::ROTR, MVT::v32i8, 6 }, in getIntrinsicInstrCost()
2942 { ISD::ROTR, MVT::v2i64, 2 }, in getIntrinsicInstrCost()
2943 { ISD::ROTR, MVT::v4i32, 2 }, in getIntrinsicInstrCost()
2944 { ISD::ROTR, MVT::v8i16, 2 }, in getIntrinsicInstrCost()
2945 { ISD::ROTR, MVT::v16i8, 2 } in getIntrinsicInstrCost()
2948 { ISD::ROTL, MVT::i64, 1 }, in getIntrinsicInstrCost()
2949 { ISD::ROTR, MVT::i64, 1 }, in getIntrinsicInstrCost()
2950 { ISD::FSHL, MVT::i64, 4 } in getIntrinsicInstrCost()
2953 { ISD::ROTL, MVT::i32, 1 }, in getIntrinsicInstrCost()
2954 { ISD::ROTL, MVT::i16, 1 }, in getIntrinsicInstrCost()
2955 { ISD::ROTL, MVT::i8, 1 }, in getIntrinsicInstrCost()
2956 { ISD::ROTR, MVT::i32, 1 }, in getIntrinsicInstrCost()
2957 { ISD::ROTR, MVT::i16, 1 }, in getIntrinsicInstrCost()
2958 { ISD::ROTR, MVT::i8, 1 }, in getIntrinsicInstrCost()
2959 { ISD::FSHL, MVT::i32, 4 }, in getIntrinsicInstrCost()
2960 { ISD::FSHL, MVT::i16, 4 }, in getIntrinsicInstrCost()
2961 { ISD::FSHL, MVT::i8, 4 } in getIntrinsicInstrCost()
2986 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, RetTy); in getIntrinsicInstrCost()
2987 MVT MTy = LT.second; in getIntrinsicInstrCost()
3011 { ISD::EXTRACT_VECTOR_ELT, MVT::i8, 4 }, in getVectorInstrCost()
3012 { ISD::EXTRACT_VECTOR_ELT, MVT::i16, 4 }, in getVectorInstrCost()
3013 { ISD::EXTRACT_VECTOR_ELT, MVT::i32, 4 }, in getVectorInstrCost()
3014 { ISD::EXTRACT_VECTOR_ELT, MVT::i64, 7 } in getVectorInstrCost()
3024 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Val); in getVectorInstrCost()
3061 MVT MScalarTy = LT.second.getScalarType(); in getVectorInstrCost()
3067 if ((MScalarTy == MVT::i16 && ST->hasSSE2()) || in getVectorInstrCost()
3072 if (MScalarTy == MVT::f32 && ST->hasSSE41() && in getVectorInstrCost()
3110 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty); in getScalarizationOverhead()
3111 MVT MScalarTy = LT.second.getScalarType(); in getScalarizationOverhead()
3113 if ((MScalarTy == MVT::i16 && ST->hasSSE2()) || in getScalarizationOverhead()
3115 (MScalarTy == MVT::f32 && ST->hasSSE41())) { in getScalarizationOverhead()
3153 if (MScalarTy == MVT::f32) in getScalarizationOverhead()
3231 if (TLI->getValueType(DL, Src, true) == MVT::Other) in getMemoryOpCost()
3236 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Src); in getMemoryOpCost()
3286 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, SrcVTy); in getMaskedMemoryOpCost()
3346 { ISD::FADD, MVT::v2f64, 3 }, in getArithmeticReductionCost()
3347 { ISD::ADD, MVT::v2i64, 5 }, in getArithmeticReductionCost()
3351 { ISD::FADD, MVT::v2f64, 2 }, in getArithmeticReductionCost()
3352 { ISD::FADD, MVT::v4f32, 4 }, in getArithmeticReductionCost()
3353 { ISD::ADD, MVT::v2i64, 2 }, // The data reported by the IACA tool is "1.6". in getArithmeticReductionCost()
3354 { ISD::ADD, MVT::v2i32, 2 }, // FIXME: chosen to be less than v4i32 in getArithmeticReductionCost()
3355 { ISD::ADD, MVT::v4i32, 3 }, // The data reported by the IACA tool is "3.3". in getArithmeticReductionCost()
3356 { ISD::ADD, MVT::v2i16, 2 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
3357 { ISD::ADD, MVT::v4i16, 3 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
3358 { ISD::ADD, MVT::v8i16, 4 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
3359 { ISD::ADD, MVT::v2i8, 2 }, in getArithmeticReductionCost()
3360 { ISD::ADD, MVT::v4i8, 2 }, in getArithmeticReductionCost()
3361 { ISD::ADD, MVT::v8i8, 2 }, in getArithmeticReductionCost()
3362 { ISD::ADD, MVT::v16i8, 3 }, in getArithmeticReductionCost()
3366 { ISD::FADD, MVT::v4f64, 3 }, in getArithmeticReductionCost()
3367 { ISD::FADD, MVT::v4f32, 3 }, in getArithmeticReductionCost()
3368 { ISD::FADD, MVT::v8f32, 4 }, in getArithmeticReductionCost()
3369 { ISD::ADD, MVT::v2i64, 1 }, // The data reported by the IACA tool is "1.5". in getArithmeticReductionCost()
3370 { ISD::ADD, MVT::v4i64, 3 }, in getArithmeticReductionCost()
3371 { ISD::ADD, MVT::v8i32, 5 }, in getArithmeticReductionCost()
3372 { ISD::ADD, MVT::v16i16, 5 }, in getArithmeticReductionCost()
3373 { ISD::ADD, MVT::v32i8, 4 }, in getArithmeticReductionCost()
3384 MVT MTy = VT.getSimpleVT(); in getArithmeticReductionCost()
3398 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getArithmeticReductionCost()
3400 MVT MTy = LT.second; in getArithmeticReductionCost()
3429 { ISD::AND, MVT::v2i1, 3 }, in getArithmeticReductionCost()
3430 { ISD::AND, MVT::v4i1, 5 }, in getArithmeticReductionCost()
3431 { ISD::AND, MVT::v8i1, 7 }, in getArithmeticReductionCost()
3432 { ISD::AND, MVT::v16i1, 9 }, in getArithmeticReductionCost()
3433 { ISD::AND, MVT::v32i1, 11 }, in getArithmeticReductionCost()
3434 { ISD::AND, MVT::v64i1, 13 }, in getArithmeticReductionCost()
3435 { ISD::OR, MVT::v2i1, 3 }, in getArithmeticReductionCost()
3436 { ISD::OR, MVT::v4i1, 5 }, in getArithmeticReductionCost()
3437 { ISD::OR, MVT::v8i1, 7 }, in getArithmeticReductionCost()
3438 { ISD::OR, MVT::v16i1, 9 }, in getArithmeticReductionCost()
3439 { ISD::OR, MVT::v32i1, 11 }, in getArithmeticReductionCost()
3440 { ISD::OR, MVT::v64i1, 13 }, in getArithmeticReductionCost()
3444 { ISD::AND, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
3445 { ISD::AND, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
3446 { ISD::OR, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
3447 { ISD::OR, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
3451 { ISD::AND, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
3452 { ISD::AND, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
3453 { ISD::AND, MVT::v16i16, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
3454 { ISD::AND, MVT::v32i8, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
3455 { ISD::OR, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
3456 { ISD::OR, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
3457 { ISD::OR, MVT::v16i16, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
3458 { ISD::OR, MVT::v32i8, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
3462 { ISD::AND, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
3463 { ISD::AND, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
3464 { ISD::AND, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
3465 { ISD::AND, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
3466 { ISD::OR, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
3467 { ISD::OR, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
3468 { ISD::OR, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
3469 { ISD::OR, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
3577 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty); in getMinMaxCost()
3579 MVT MTy = LT.second; in getMinMaxCost()
3591 {ISD::FMINNUM, MVT::v4f32, 1}, in getMinMaxCost()
3595 {ISD::FMINNUM, MVT::v2f64, 1}, in getMinMaxCost()
3596 {ISD::SMIN, MVT::v8i16, 1}, in getMinMaxCost()
3597 {ISD::UMIN, MVT::v16i8, 1}, in getMinMaxCost()
3601 {ISD::SMIN, MVT::v4i32, 1}, in getMinMaxCost()
3602 {ISD::UMIN, MVT::v4i32, 1}, in getMinMaxCost()
3603 {ISD::UMIN, MVT::v8i16, 1}, in getMinMaxCost()
3604 {ISD::SMIN, MVT::v16i8, 1}, in getMinMaxCost()
3608 {ISD::UMIN, MVT::v2i64, 3}, // xor+pcmpgtq+blendvpd in getMinMaxCost()
3612 {ISD::FMINNUM, MVT::v8f32, 1}, in getMinMaxCost()
3613 {ISD::FMINNUM, MVT::v4f64, 1}, in getMinMaxCost()
3614 {ISD::SMIN, MVT::v8i32, 3}, in getMinMaxCost()
3615 {ISD::UMIN, MVT::v8i32, 3}, in getMinMaxCost()
3616 {ISD::SMIN, MVT::v16i16, 3}, in getMinMaxCost()
3617 {ISD::UMIN, MVT::v16i16, 3}, in getMinMaxCost()
3618 {ISD::SMIN, MVT::v32i8, 3}, in getMinMaxCost()
3619 {ISD::UMIN, MVT::v32i8, 3}, in getMinMaxCost()
3623 {ISD::SMIN, MVT::v8i32, 1}, in getMinMaxCost()
3624 {ISD::UMIN, MVT::v8i32, 1}, in getMinMaxCost()
3625 {ISD::SMIN, MVT::v16i16, 1}, in getMinMaxCost()
3626 {ISD::UMIN, MVT::v16i16, 1}, in getMinMaxCost()
3627 {ISD::SMIN, MVT::v32i8, 1}, in getMinMaxCost()
3628 {ISD::UMIN, MVT::v32i8, 1}, in getMinMaxCost()
3632 {ISD::FMINNUM, MVT::v16f32, 1}, in getMinMaxCost()
3633 {ISD::FMINNUM, MVT::v8f64, 1}, in getMinMaxCost()
3634 {ISD::SMIN, MVT::v2i64, 1}, in getMinMaxCost()
3635 {ISD::UMIN, MVT::v2i64, 1}, in getMinMaxCost()
3636 {ISD::SMIN, MVT::v4i64, 1}, in getMinMaxCost()
3637 {ISD::UMIN, MVT::v4i64, 1}, in getMinMaxCost()
3638 {ISD::SMIN, MVT::v8i64, 1}, in getMinMaxCost()
3639 {ISD::UMIN, MVT::v8i64, 1}, in getMinMaxCost()
3640 {ISD::SMIN, MVT::v16i32, 1}, in getMinMaxCost()
3641 {ISD::UMIN, MVT::v16i32, 1}, in getMinMaxCost()
3645 {ISD::SMIN, MVT::v32i16, 1}, in getMinMaxCost()
3646 {ISD::UMIN, MVT::v32i16, 1}, in getMinMaxCost()
3647 {ISD::SMIN, MVT::v64i8, 1}, in getMinMaxCost()
3648 {ISD::UMIN, MVT::v64i8, 1}, in getMinMaxCost()
3709 std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy); in getMinMaxReductionCost()
3711 MVT MTy = LT.second; in getMinMaxReductionCost()
3726 {ISD::UMIN, MVT::v2i16, 5}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
3727 {ISD::UMIN, MVT::v4i16, 7}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
3728 {ISD::UMIN, MVT::v8i16, 9}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
3732 {ISD::SMIN, MVT::v2i16, 3}, // same as sse2 in getMinMaxReductionCost()
3733 {ISD::SMIN, MVT::v4i16, 5}, // same as sse2 in getMinMaxReductionCost()
3734 {ISD::UMIN, MVT::v2i16, 5}, // same as sse2 in getMinMaxReductionCost()
3735 {ISD::UMIN, MVT::v4i16, 7}, // same as sse2 in getMinMaxReductionCost()
3736 {ISD::SMIN, MVT::v8i16, 4}, // phminposuw+xor in getMinMaxReductionCost()
3737 {ISD::UMIN, MVT::v8i16, 4}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
3738 {ISD::SMIN, MVT::v2i8, 3}, // pminsb in getMinMaxReductionCost()
3739 {ISD::SMIN, MVT::v4i8, 5}, // pminsb in getMinMaxReductionCost()
3740 {ISD::SMIN, MVT::v8i8, 7}, // pminsb in getMinMaxReductionCost()
3741 {ISD::SMIN, MVT::v16i8, 6}, in getMinMaxReductionCost()
3742 {ISD::UMIN, MVT::v2i8, 3}, // same as sse2 in getMinMaxReductionCost()
3743 {ISD::UMIN, MVT::v4i8, 5}, // same as sse2 in getMinMaxReductionCost()
3744 {ISD::UMIN, MVT::v8i8, 7}, // same as sse2 in getMinMaxReductionCost()
3745 {ISD::UMIN, MVT::v16i8, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
3749 {ISD::SMIN, MVT::v16i16, 6}, in getMinMaxReductionCost()
3750 {ISD::UMIN, MVT::v16i16, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
3751 {ISD::SMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
3752 {ISD::UMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
3756 {ISD::SMIN, MVT::v32i16, 8}, in getMinMaxReductionCost()
3757 {ISD::UMIN, MVT::v32i16, 8}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
3758 {ISD::SMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
3759 {ISD::UMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
3767 MVT MTy = VT.getSimpleVT(); in getMinMaxReductionCost()
4135 std::pair<int, MVT> IdxsLT = TLI->getTypeLegalizationCost(DL, IndexVTy); in getGSVectorCost()
4136 std::pair<int, MVT> SrcLT = TLI->getTypeLegalizationCost(DL, SrcVTy); in getGSVectorCost()
4517 MVT LegalVT = getTLI()->getTypeLegalizationCost(DL, VecTy).second; in getInterleavedMemoryOpCostAVX2()
4558 { 2, MVT::v4i64, 6 }, //(load 8i64 and) deinterleave into 2 x 4i64 in getInterleavedMemoryOpCostAVX2()
4559 { 2, MVT::v4f64, 6 }, //(load 8f64 and) deinterleave into 2 x 4f64 in getInterleavedMemoryOpCostAVX2()
4561 { 3, MVT::v2i8, 10 }, //(load 6i8 and) deinterleave into 3 x 2i8 in getInterleavedMemoryOpCostAVX2()
4562 { 3, MVT::v4i8, 4 }, //(load 12i8 and) deinterleave into 3 x 4i8 in getInterleavedMemoryOpCostAVX2()
4563 { 3, MVT::v8i8, 9 }, //(load 24i8 and) deinterleave into 3 x 8i8 in getInterleavedMemoryOpCostAVX2()
4564 { 3, MVT::v16i8, 11}, //(load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCostAVX2()
4565 { 3, MVT::v32i8, 13}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX2()
4566 { 3, MVT::v8f32, 17 }, //(load 24f32 and)deinterleave into 3 x 8f32 in getInterleavedMemoryOpCostAVX2()
4568 { 4, MVT::v2i8, 12 }, //(load 8i8 and) deinterleave into 4 x 2i8 in getInterleavedMemoryOpCostAVX2()
4569 { 4, MVT::v4i8, 4 }, //(load 16i8 and) deinterleave into 4 x 4i8 in getInterleavedMemoryOpCostAVX2()
4570 { 4, MVT::v8i8, 20 }, //(load 32i8 and) deinterleave into 4 x 8i8 in getInterleavedMemoryOpCostAVX2()
4571 { 4, MVT::v16i8, 39 }, //(load 64i8 and) deinterleave into 4 x 16i8 in getInterleavedMemoryOpCostAVX2()
4572 { 4, MVT::v32i8, 80 }, //(load 128i8 and) deinterleave into 4 x 32i8 in getInterleavedMemoryOpCostAVX2()
4574 { 8, MVT::v8f32, 40 } //(load 64f32 and)deinterleave into 8 x 8f32 in getInterleavedMemoryOpCostAVX2()
4578 { 2, MVT::v4i64, 6 }, //interleave into 2 x 4i64 into 8i64 (and store) in getInterleavedMemoryOpCostAVX2()
4579 { 2, MVT::v4f64, 6 }, //interleave into 2 x 4f64 into 8f64 (and store) in getInterleavedMemoryOpCostAVX2()
4581 { 3, MVT::v2i8, 7 }, //interleave 3 x 2i8 into 6i8 (and store) in getInterleavedMemoryOpCostAVX2()
4582 { 3, MVT::v4i8, 8 }, //interleave 3 x 4i8 into 12i8 (and store) in getInterleavedMemoryOpCostAVX2()
4583 { 3, MVT::v8i8, 11 }, //interleave 3 x 8i8 into 24i8 (and store) in getInterleavedMemoryOpCostAVX2()
4584 { 3, MVT::v16i8, 11 }, //interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCostAVX2()
4585 { 3, MVT::v32i8, 13 }, //interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX2()
4587 { 4, MVT::v2i8, 12 }, //interleave 4 x 2i8 into 8i8 (and store) in getInterleavedMemoryOpCostAVX2()
4588 { 4, MVT::v4i8, 9 }, //interleave 4 x 4i8 into 16i8 (and store) in getInterleavedMemoryOpCostAVX2()
4589 { 4, MVT::v8i8, 10 }, //interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCostAVX2()
4590 { 4, MVT::v16i8, 10 }, //interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCostAVX2()
4591 { 4, MVT::v32i8, 12 } //interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCostAVX2()
4630 MVT LegalVT = getTLI()->getTypeLegalizationCost(DL, VecTy).second; in getInterleavedMemoryOpCostAVX512()
4643 MVT VT = MVT::getVectorVT(MVT::getVT(VecTy->getScalarType()), VF); in getInterleavedMemoryOpCostAVX512()
4653 {3, MVT::v16i8, 12}, //(load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCostAVX512()
4654 {3, MVT::v32i8, 14}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
4655 {3, MVT::v64i8, 22}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
4707 {3, MVT::v16i8, 12}, // interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCostAVX512()
4708 {3, MVT::v32i8, 14}, // interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
4709 {3, MVT::v64i8, 26}, // interleave 3 x 64i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
4711 {4, MVT::v8i8, 10}, // interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCostAVX512()
4712 {4, MVT::v16i8, 11}, // interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCostAVX512()
4713 {4, MVT::v32i8, 14}, // interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCostAVX512()
4714 {4, MVT::v64i8, 24} // interleave 4 x 32i8 into 256i8 (and store) in getInterleavedMemoryOpCostAVX512()