Lines Matching refs:ISD
270 int ISD = TLI->InstructionOpcodeToISD(Opcode); in getArithmeticInstrCost() local
271 assert(ISD && "Invalid opcode"); in getArithmeticInstrCost()
273 if (ISD == ISD::MUL && Args.size() == 2 && LT.second.isVector() && in getArithmeticInstrCost()
323 ISD = X86ISD::PMULUDQ; in getArithmeticInstrCost()
328 if (ISD == ISD::MUL && Op2Info.isConstant() && in getArithmeticInstrCost()
342 if ((ISD == ISD::SDIV || ISD == ISD::SREM) && in getArithmeticInstrCost()
352 if (ISD == ISD::SREM) { in getArithmeticInstrCost()
364 if ((ISD == ISD::UDIV || ISD == ISD::UREM) && in getArithmeticInstrCost()
366 if (ISD == ISD::UDIV) in getArithmeticInstrCost()
375 { ISD::SHL, MVT::v16i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getArithmeticInstrCost()
376 { ISD::SRL, MVT::v16i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getArithmeticInstrCost()
377 { ISD::SRA, MVT::v16i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getArithmeticInstrCost()
378 { ISD::SHL, MVT::v32i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getArithmeticInstrCost()
379 { ISD::SRL, MVT::v32i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getArithmeticInstrCost()
380 { ISD::SRA, MVT::v32i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getArithmeticInstrCost()
381 { ISD::SHL, MVT::v64i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getArithmeticInstrCost()
382 { ISD::SRL, MVT::v64i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getArithmeticInstrCost()
383 { ISD::SRA, MVT::v64i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getArithmeticInstrCost()
388 CostTableLookup(GFNIUniformConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
393 { ISD::SHL, MVT::v16i8, { 1, 7, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
394 { ISD::SRL, MVT::v16i8, { 1, 7, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
395 { ISD::SRA, MVT::v16i8, { 1, 8, 4, 5 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
396 { ISD::SHL, MVT::v32i8, { 1, 8, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
397 { ISD::SRL, MVT::v32i8, { 1, 8, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
398 { ISD::SRA, MVT::v32i8, { 1, 9, 4, 5 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
399 { ISD::SHL, MVT::v64i8, { 1, 8, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
400 { ISD::SRL, MVT::v64i8, { 1, 8, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
401 { ISD::SRA, MVT::v64i8, { 1, 9, 4, 6 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
403 { ISD::SHL, MVT::v16i16, { 1, 1, 1, 1 } }, // psllw in getArithmeticInstrCost()
404 { ISD::SRL, MVT::v16i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
405 { ISD::SRA, MVT::v16i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
406 { ISD::SHL, MVT::v32i16, { 1, 1, 1, 1 } }, // psllw in getArithmeticInstrCost()
407 { ISD::SRL, MVT::v32i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
408 { ISD::SRA, MVT::v32i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
413 CostTableLookup(AVX512BWUniformConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
418 { ISD::SHL, MVT::v64i8, { 2, 12, 5, 6 } }, // psllw + pand. in getArithmeticInstrCost()
419 { ISD::SRL, MVT::v64i8, { 2, 12, 5, 6 } }, // psrlw + pand. in getArithmeticInstrCost()
420 { ISD::SRA, MVT::v64i8, { 3, 10, 12, 12 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
422 { ISD::SHL, MVT::v16i16, { 2, 7, 4, 4 } }, // psllw + split. in getArithmeticInstrCost()
423 { ISD::SRL, MVT::v16i16, { 2, 7, 4, 4 } }, // psrlw + split. in getArithmeticInstrCost()
424 { ISD::SRA, MVT::v16i16, { 2, 7, 4, 4 } }, // psraw + split. in getArithmeticInstrCost()
426 { ISD::SHL, MVT::v8i32, { 1, 1, 1, 1 } }, // pslld in getArithmeticInstrCost()
427 { ISD::SRL, MVT::v8i32, { 1, 1, 1, 1 } }, // psrld in getArithmeticInstrCost()
428 { ISD::SRA, MVT::v8i32, { 1, 1, 1, 1 } }, // psrad in getArithmeticInstrCost()
429 { ISD::SHL, MVT::v16i32, { 1, 1, 1, 1 } }, // pslld in getArithmeticInstrCost()
430 { ISD::SRL, MVT::v16i32, { 1, 1, 1, 1 } }, // psrld in getArithmeticInstrCost()
431 { ISD::SRA, MVT::v16i32, { 1, 1, 1, 1 } }, // psrad in getArithmeticInstrCost()
433 { ISD::SRA, MVT::v2i64, { 1, 1, 1, 1 } }, // psraq in getArithmeticInstrCost()
434 { ISD::SHL, MVT::v4i64, { 1, 1, 1, 1 } }, // psllq in getArithmeticInstrCost()
435 { ISD::SRL, MVT::v4i64, { 1, 1, 1, 1 } }, // psrlq in getArithmeticInstrCost()
436 { ISD::SRA, MVT::v4i64, { 1, 1, 1, 1 } }, // psraq in getArithmeticInstrCost()
437 { ISD::SHL, MVT::v8i64, { 1, 1, 1, 1 } }, // psllq in getArithmeticInstrCost()
438 { ISD::SRL, MVT::v8i64, { 1, 1, 1, 1 } }, // psrlq in getArithmeticInstrCost()
439 { ISD::SRA, MVT::v8i64, { 1, 1, 1, 1 } }, // psraq in getArithmeticInstrCost()
441 { ISD::SDIV, MVT::v16i32, { 6 } }, // pmuludq sequence in getArithmeticInstrCost()
442 { ISD::SREM, MVT::v16i32, { 8 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
443 { ISD::UDIV, MVT::v16i32, { 5 } }, // pmuludq sequence in getArithmeticInstrCost()
444 { ISD::UREM, MVT::v16i32, { 7 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
449 CostTableLookup(AVX512UniformConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
454 { ISD::SHL, MVT::v16i8, { 1, 8, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
455 { ISD::SRL, MVT::v16i8, { 1, 8, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
456 { ISD::SRA, MVT::v16i8, { 2, 10, 5, 6 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
457 { ISD::SHL, MVT::v32i8, { 2, 8, 2, 4 } }, // psllw + pand. in getArithmeticInstrCost()
458 { ISD::SRL, MVT::v32i8, { 2, 8, 2, 4 } }, // psrlw + pand. in getArithmeticInstrCost()
459 { ISD::SRA, MVT::v32i8, { 3, 10, 5, 9 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
461 { ISD::SHL, MVT::v8i16, { 1, 1, 1, 1 } }, // psllw in getArithmeticInstrCost()
462 { ISD::SRL, MVT::v8i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
463 { ISD::SRA, MVT::v8i16, { 1, 1, 1, 1 } }, // psraw in getArithmeticInstrCost()
464 { ISD::SHL, MVT::v16i16,{ 2, 2, 1, 2 } }, // psllw in getArithmeticInstrCost()
465 { ISD::SRL, MVT::v16i16,{ 2, 2, 1, 2 } }, // psrlw in getArithmeticInstrCost()
466 { ISD::SRA, MVT::v16i16,{ 2, 2, 1, 2 } }, // psraw in getArithmeticInstrCost()
468 { ISD::SHL, MVT::v4i32, { 1, 1, 1, 1 } }, // pslld in getArithmeticInstrCost()
469 { ISD::SRL, MVT::v4i32, { 1, 1, 1, 1 } }, // psrld in getArithmeticInstrCost()
470 { ISD::SRA, MVT::v4i32, { 1, 1, 1, 1 } }, // psrad in getArithmeticInstrCost()
471 { ISD::SHL, MVT::v8i32, { 2, 2, 1, 2 } }, // pslld in getArithmeticInstrCost()
472 { ISD::SRL, MVT::v8i32, { 2, 2, 1, 2 } }, // psrld in getArithmeticInstrCost()
473 { ISD::SRA, MVT::v8i32, { 2, 2, 1, 2 } }, // psrad in getArithmeticInstrCost()
475 { ISD::SHL, MVT::v2i64, { 1, 1, 1, 1 } }, // psllq in getArithmeticInstrCost()
476 { ISD::SRL, MVT::v2i64, { 1, 1, 1, 1 } }, // psrlq in getArithmeticInstrCost()
477 { ISD::SRA, MVT::v2i64, { 2, 3, 3, 3 } }, // psrad + shuffle. in getArithmeticInstrCost()
478 { ISD::SHL, MVT::v4i64, { 2, 2, 1, 2 } }, // psllq in getArithmeticInstrCost()
479 { ISD::SRL, MVT::v4i64, { 2, 2, 1, 2 } }, // psrlq in getArithmeticInstrCost()
480 { ISD::SRA, MVT::v4i64, { 4, 4, 3, 6 } }, // psrad + shuffle + split. in getArithmeticInstrCost()
482 { ISD::SDIV, MVT::v8i32, { 6 } }, // pmuludq sequence in getArithmeticInstrCost()
483 { ISD::SREM, MVT::v8i32, { 8 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
484 { ISD::UDIV, MVT::v8i32, { 5 } }, // pmuludq sequence in getArithmeticInstrCost()
485 { ISD::UREM, MVT::v8i32, { 7 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
490 CostTableLookup(AVX2UniformConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
495 { ISD::SHL, MVT::v16i8, { 2, 7, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
496 { ISD::SRL, MVT::v16i8, { 2, 7, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
497 { ISD::SRA, MVT::v16i8, { 3, 9, 5, 6 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
498 { ISD::SHL, MVT::v32i8, { 4, 7, 7, 8 } }, // 2*(psllw + pand) + split. in getArithmeticInstrCost()
499 { ISD::SRL, MVT::v32i8, { 4, 7, 7, 8 } }, // 2*(psrlw + pand) + split. in getArithmeticInstrCost()
500 { ISD::SRA, MVT::v32i8, { 7, 7, 12, 13 } }, // 2*(psrlw, pand, pxor, psubb) + split. in getArithmeticInstrCost()
502 { ISD::SHL, MVT::v8i16, { 1, 2, 1, 1 } }, // psllw. in getArithmeticInstrCost()
503 { ISD::SRL, MVT::v8i16, { 1, 2, 1, 1 } }, // psrlw. in getArithmeticInstrCost()
504 { ISD::SRA, MVT::v8i16, { 1, 2, 1, 1 } }, // psraw. in getArithmeticInstrCost()
505 { ISD::SHL, MVT::v16i16,{ 3, 6, 4, 5 } }, // psllw + split. in getArithmeticInstrCost()
506 { ISD::SRL, MVT::v16i16,{ 3, 6, 4, 5 } }, // psrlw + split. in getArithmeticInstrCost()
507 { ISD::SRA, MVT::v16i16,{ 3, 6, 4, 5 } }, // psraw + split. in getArithmeticInstrCost()
509 { ISD::SHL, MVT::v4i32, { 1, 2, 1, 1 } }, // pslld. in getArithmeticInstrCost()
510 { ISD::SRL, MVT::v4i32, { 1, 2, 1, 1 } }, // psrld. in getArithmeticInstrCost()
511 { ISD::SRA, MVT::v4i32, { 1, 2, 1, 1 } }, // psrad. in getArithmeticInstrCost()
512 { ISD::SHL, MVT::v8i32, { 3, 6, 4, 5 } }, // pslld + split. in getArithmeticInstrCost()
513 { ISD::SRL, MVT::v8i32, { 3, 6, 4, 5 } }, // psrld + split. in getArithmeticInstrCost()
514 { ISD::SRA, MVT::v8i32, { 3, 6, 4, 5 } }, // psrad + split. in getArithmeticInstrCost()
516 { ISD::SHL, MVT::v2i64, { 1, 2, 1, 1 } }, // psllq. in getArithmeticInstrCost()
517 { ISD::SRL, MVT::v2i64, { 1, 2, 1, 1 } }, // psrlq. in getArithmeticInstrCost()
518 { ISD::SRA, MVT::v2i64, { 2, 3, 3, 3 } }, // psrad + shuffle. in getArithmeticInstrCost()
519 { ISD::SHL, MVT::v4i64, { 3, 6, 4, 5 } }, // 2 x psllq + split. in getArithmeticInstrCost()
520 { ISD::SRL, MVT::v4i64, { 3, 6, 4, 5 } }, // 2 x psllq + split. in getArithmeticInstrCost()
521 { ISD::SRA, MVT::v4i64, { 5, 7, 8, 9 } }, // 2 x psrad + shuffle + split. in getArithmeticInstrCost()
523 { ISD::SDIV, MVT::v8i32, { 14 } }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
524 { ISD::SREM, MVT::v8i32, { 18 } }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
525 { ISD::UDIV, MVT::v8i32, { 12 } }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
526 { ISD::UREM, MVT::v8i32, { 16 } }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
533 CostTableLookup(AVXUniformConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
538 { ISD::SHL, MVT::v16i8, { 1, 7, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
539 { ISD::SRL, MVT::v16i8, { 1, 7, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
540 { ISD::SRA, MVT::v16i8, { 3, 9, 5, 6 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
542 { ISD::SHL, MVT::v8i16, { 1, 1, 1, 1 } }, // psllw. in getArithmeticInstrCost()
543 { ISD::SRL, MVT::v8i16, { 1, 1, 1, 1 } }, // psrlw. in getArithmeticInstrCost()
544 { ISD::SRA, MVT::v8i16, { 1, 1, 1, 1 } }, // psraw. in getArithmeticInstrCost()
546 { ISD::SHL, MVT::v4i32, { 1, 1, 1, 1 } }, // pslld in getArithmeticInstrCost()
547 { ISD::SRL, MVT::v4i32, { 1, 1, 1, 1 } }, // psrld. in getArithmeticInstrCost()
548 { ISD::SRA, MVT::v4i32, { 1, 1, 1, 1 } }, // psrad. in getArithmeticInstrCost()
550 { ISD::SHL, MVT::v2i64, { 1, 1, 1, 1 } }, // psllq. in getArithmeticInstrCost()
551 { ISD::SRL, MVT::v2i64, { 1, 1, 1, 1 } }, // psrlq. in getArithmeticInstrCost()
552 { ISD::SRA, MVT::v2i64, { 3, 5, 6, 6 } }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
554 { ISD::SDIV, MVT::v4i32, { 6 } }, // pmuludq sequence in getArithmeticInstrCost()
555 { ISD::SREM, MVT::v4i32, { 8 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
556 { ISD::UDIV, MVT::v4i32, { 5 } }, // pmuludq sequence in getArithmeticInstrCost()
557 { ISD::UREM, MVT::v4i32, { 7 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
564 CostTableLookup(SSE2UniformConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
569 { ISD::SDIV, MVT::v64i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
570 { ISD::SREM, MVT::v64i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
571 { ISD::UDIV, MVT::v64i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
572 { ISD::UREM, MVT::v64i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
574 { ISD::SDIV, MVT::v32i16, { 6 } }, // vpmulhw sequence in getArithmeticInstrCost()
575 { ISD::SREM, MVT::v32i16, { 8 } }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
576 { ISD::UDIV, MVT::v32i16, { 6 } }, // vpmulhuw sequence in getArithmeticInstrCost()
577 { ISD::UREM, MVT::v32i16, { 8 } }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
582 CostTableLookup(AVX512BWConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
587 { ISD::SDIV, MVT::v64i8, { 28 } }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
588 { ISD::SREM, MVT::v64i8, { 32 } }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
589 { ISD::UDIV, MVT::v64i8, { 28 } }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
590 { ISD::UREM, MVT::v64i8, { 32 } }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
592 { ISD::SDIV, MVT::v32i16, { 12 } }, // 2*vpmulhw sequence in getArithmeticInstrCost()
593 { ISD::SREM, MVT::v32i16, { 16 } }, // 2*vpmulhw+mul+sub sequence in getArithmeticInstrCost()
594 { ISD::UDIV, MVT::v32i16, { 12 } }, // 2*vpmulhuw sequence in getArithmeticInstrCost()
595 { ISD::UREM, MVT::v32i16, { 16 } }, // 2*vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
597 { ISD::SDIV, MVT::v16i32, { 15 } }, // vpmuldq sequence in getArithmeticInstrCost()
598 { ISD::SREM, MVT::v16i32, { 17 } }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
599 { ISD::UDIV, MVT::v16i32, { 15 } }, // vpmuludq sequence in getArithmeticInstrCost()
600 { ISD::UREM, MVT::v16i32, { 17 } }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
605 CostTableLookup(AVX512ConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
610 { ISD::SDIV, MVT::v32i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
611 { ISD::SREM, MVT::v32i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
612 { ISD::UDIV, MVT::v32i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
613 { ISD::UREM, MVT::v32i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
615 { ISD::SDIV, MVT::v16i16, { 6 } }, // vpmulhw sequence in getArithmeticInstrCost()
616 { ISD::SREM, MVT::v16i16, { 8 } }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
617 { ISD::UDIV, MVT::v16i16, { 6 } }, // vpmulhuw sequence in getArithmeticInstrCost()
618 { ISD::UREM, MVT::v16i16, { 8 } }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
620 { ISD::SDIV, MVT::v8i32, { 15 } }, // vpmuldq sequence in getArithmeticInstrCost()
621 { ISD::SREM, MVT::v8i32, { 19 } }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
622 { ISD::UDIV, MVT::v8i32, { 15 } }, // vpmuludq sequence in getArithmeticInstrCost()
623 { ISD::UREM, MVT::v8i32, { 19 } }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
627 if (const auto *Entry = CostTableLookup(AVX2ConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
632 { ISD::SDIV, MVT::v32i8, { 30 } }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
633 { ISD::SREM, MVT::v32i8, { 34 } }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
634 { ISD::UDIV, MVT::v32i8, { 30 } }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
635 { ISD::UREM, MVT::v32i8, { 34 } }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
637 { ISD::SDIV, MVT::v16i16, { 14 } }, // 2*pmulhw sequence + split. in getArithmeticInstrCost()
638 { ISD::SREM, MVT::v16i16, { 18 } }, // 2*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
639 { ISD::UDIV, MVT::v16i16, { 14 } }, // 2*pmulhuw sequence + split. in getArithmeticInstrCost()
640 { ISD::UREM, MVT::v16i16, { 18 } }, // 2*pmulhuw+mul+sub sequence + split. in getArithmeticInstrCost()
642 { ISD::SDIV, MVT::v8i32, { 32 } }, // vpmuludq sequence in getArithmeticInstrCost()
643 { ISD::SREM, MVT::v8i32, { 38 } }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
644 { ISD::UDIV, MVT::v8i32, { 32 } }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
645 { ISD::UREM, MVT::v8i32, { 42 } }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
649 if (const auto *Entry = CostTableLookup(AVXConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
654 { ISD::SDIV, MVT::v4i32, { 15 } }, // vpmuludq sequence in getArithmeticInstrCost()
655 { ISD::SREM, MVT::v4i32, { 20 } }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
660 CostTableLookup(SSE41ConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
665 { ISD::SDIV, MVT::v16i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
666 { ISD::SREM, MVT::v16i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
667 { ISD::UDIV, MVT::v16i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
668 { ISD::UREM, MVT::v16i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
670 { ISD::SDIV, MVT::v8i16, { 6 } }, // pmulhw sequence in getArithmeticInstrCost()
671 { ISD::SREM, MVT::v8i16, { 8 } }, // pmulhw+mul+sub sequence in getArithmeticInstrCost()
672 { ISD::UDIV, MVT::v8i16, { 6 } }, // pmulhuw sequence in getArithmeticInstrCost()
673 { ISD::UREM, MVT::v8i16, { 8 } }, // pmulhuw+mul+sub sequence in getArithmeticInstrCost()
675 { ISD::SDIV, MVT::v4i32, { 19 } }, // pmuludq sequence in getArithmeticInstrCost()
676 { ISD::SREM, MVT::v4i32, { 24 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
677 { ISD::UDIV, MVT::v4i32, { 15 } }, // pmuludq sequence in getArithmeticInstrCost()
678 { ISD::UREM, MVT::v4i32, { 20 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
682 if (const auto *Entry = CostTableLookup(SSE2ConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
687 { ISD::SHL, MVT::v16i8, { 3, 5, 5, 7 } }, // psllw + pand. in getArithmeticInstrCost()
688 { ISD::SRL, MVT::v16i8, { 3,10, 5, 8 } }, // psrlw + pand. in getArithmeticInstrCost()
689 { ISD::SRA, MVT::v16i8, { 4,12, 8,12 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
690 { ISD::SHL, MVT::v32i8, { 4, 7, 6, 8 } }, // psllw + pand. in getArithmeticInstrCost()
691 { ISD::SRL, MVT::v32i8, { 4, 8, 7, 9 } }, // psrlw + pand. in getArithmeticInstrCost()
692 { ISD::SRA, MVT::v32i8, { 5,10,10,13 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
693 { ISD::SHL, MVT::v64i8, { 4, 7, 6, 8 } }, // psllw + pand. in getArithmeticInstrCost()
694 { ISD::SRL, MVT::v64i8, { 4, 8, 7,10 } }, // psrlw + pand. in getArithmeticInstrCost()
695 { ISD::SRA, MVT::v64i8, { 5,10,10,15 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
697 { ISD::SHL, MVT::v32i16, { 2, 4, 2, 3 } }, // psllw in getArithmeticInstrCost()
698 { ISD::SRL, MVT::v32i16, { 2, 4, 2, 3 } }, // psrlw in getArithmeticInstrCost()
699 { ISD::SRA, MVT::v32i16, { 2, 4, 2, 3 } }, // psrqw in getArithmeticInstrCost()
704 CostTableLookup(AVX512BWUniformCostTable, ISD, LT.second)) in getArithmeticInstrCost()
709 { ISD::SHL, MVT::v32i16, { 5,10, 5, 7 } }, // psllw + split. in getArithmeticInstrCost()
710 { ISD::SRL, MVT::v32i16, { 5,10, 5, 7 } }, // psrlw + split. in getArithmeticInstrCost()
711 { ISD::SRA, MVT::v32i16, { 5,10, 5, 7 } }, // psraw + split. in getArithmeticInstrCost()
713 { ISD::SHL, MVT::v16i32, { 2, 4, 2, 3 } }, // pslld in getArithmeticInstrCost()
714 { ISD::SRL, MVT::v16i32, { 2, 4, 2, 3 } }, // psrld in getArithmeticInstrCost()
715 { ISD::SRA, MVT::v16i32, { 2, 4, 2, 3 } }, // psrad in getArithmeticInstrCost()
717 { ISD::SRA, MVT::v2i64, { 1, 2, 1, 2 } }, // psraq in getArithmeticInstrCost()
718 { ISD::SHL, MVT::v4i64, { 1, 4, 1, 2 } }, // psllq in getArithmeticInstrCost()
719 { ISD::SRL, MVT::v4i64, { 1, 4, 1, 2 } }, // psrlq in getArithmeticInstrCost()
720 { ISD::SRA, MVT::v4i64, { 1, 4, 1, 2 } }, // psraq in getArithmeticInstrCost()
721 { ISD::SHL, MVT::v8i64, { 1, 4, 1, 2 } }, // psllq in getArithmeticInstrCost()
722 { ISD::SRL, MVT::v8i64, { 1, 4, 1, 2 } }, // psrlq in getArithmeticInstrCost()
723 { ISD::SRA, MVT::v8i64, { 1, 4, 1, 2 } }, // psraq in getArithmeticInstrCost()
728 CostTableLookup(AVX512UniformCostTable, ISD, LT.second)) in getArithmeticInstrCost()
734 { ISD::SHL, MVT::v16i8, { 3, 5, 5, 7 } }, // psllw + pand. in getArithmeticInstrCost()
735 { ISD::SRL, MVT::v16i8, { 3, 9, 5, 8 } }, // psrlw + pand. in getArithmeticInstrCost()
736 { ISD::SRA, MVT::v16i8, { 4, 5, 9,13 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
737 { ISD::SHL, MVT::v32i8, { 4, 7, 6, 8 } }, // psllw + pand. in getArithmeticInstrCost()
738 { ISD::SRL, MVT::v32i8, { 4, 8, 7, 9 } }, // psrlw + pand. in getArithmeticInstrCost()
739 { ISD::SRA, MVT::v32i8, { 6, 9,11,16 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
741 { ISD::SHL, MVT::v8i16, { 1, 2, 1, 2 } }, // psllw. in getArithmeticInstrCost()
742 { ISD::SRL, MVT::v8i16, { 1, 2, 1, 2 } }, // psrlw. in getArithmeticInstrCost()
743 { ISD::SRA, MVT::v8i16, { 1, 2, 1, 2 } }, // psraw. in getArithmeticInstrCost()
744 { ISD::SHL, MVT::v16i16, { 2, 4, 2, 3 } }, // psllw. in getArithmeticInstrCost()
745 { ISD::SRL, MVT::v16i16, { 2, 4, 2, 3 } }, // psrlw. in getArithmeticInstrCost()
746 { ISD::SRA, MVT::v16i16, { 2, 4, 2, 3 } }, // psraw. in getArithmeticInstrCost()
748 { ISD::SHL, MVT::v4i32, { 1, 2, 1, 2 } }, // pslld in getArithmeticInstrCost()
749 { ISD::SRL, MVT::v4i32, { 1, 2, 1, 2 } }, // psrld in getArithmeticInstrCost()
750 { ISD::SRA, MVT::v4i32, { 1, 2, 1, 2 } }, // psrad in getArithmeticInstrCost()
751 { ISD::SHL, MVT::v8i32, { 2, 4, 2, 3 } }, // pslld in getArithmeticInstrCost()
752 { ISD::SRL, MVT::v8i32, { 2, 4, 2, 3 } }, // psrld in getArithmeticInstrCost()
753 { ISD::SRA, MVT::v8i32, { 2, 4, 2, 3 } }, // psrad in getArithmeticInstrCost()
755 { ISD::SHL, MVT::v2i64, { 1, 2, 1, 2 } }, // psllq in getArithmeticInstrCost()
756 { ISD::SRL, MVT::v2i64, { 1, 2, 1, 2 } }, // psrlq in getArithmeticInstrCost()
757 { ISD::SRA, MVT::v2i64, { 2, 4, 5, 7 } }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
758 { ISD::SHL, MVT::v4i64, { 2, 4, 1, 2 } }, // psllq in getArithmeticInstrCost()
759 { ISD::SRL, MVT::v4i64, { 2, 4, 1, 2 } }, // psrlq in getArithmeticInstrCost()
760 { ISD::SRA, MVT::v4i64, { 4, 6, 5, 9 } }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
765 CostTableLookup(AVX2UniformCostTable, ISD, LT.second)) in getArithmeticInstrCost()
770 { ISD::SHL, MVT::v16i8, { 4, 4, 6, 8 } }, // psllw + pand. in getArithmeticInstrCost()
771 { ISD::SRL, MVT::v16i8, { 4, 8, 5, 8 } }, // psrlw + pand. in getArithmeticInstrCost()
772 { ISD::SRA, MVT::v16i8, { 6, 6, 9,13 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
773 { ISD::SHL, MVT::v32i8, { 7, 8,11,14 } }, // psllw + pand + split. in getArithmeticInstrCost()
774 { ISD::SRL, MVT::v32i8, { 7, 9,10,14 } }, // psrlw + pand + split. in getArithmeticInstrCost()
775 { ISD::SRA, MVT::v32i8, { 10,11,16,21 } }, // psrlw, pand, pxor, psubb + split. in getArithmeticInstrCost()
777 { ISD::SHL, MVT::v8i16, { 1, 3, 1, 2 } }, // psllw. in getArithmeticInstrCost()
778 { ISD::SRL, MVT::v8i16, { 1, 3, 1, 2 } }, // psrlw. in getArithmeticInstrCost()
779 { ISD::SRA, MVT::v8i16, { 1, 3, 1, 2 } }, // psraw. in getArithmeticInstrCost()
780 { ISD::SHL, MVT::v16i16, { 3, 7, 5, 7 } }, // psllw + split. in getArithmeticInstrCost()
781 { ISD::SRL, MVT::v16i16, { 3, 7, 5, 7 } }, // psrlw + split. in getArithmeticInstrCost()
782 { ISD::SRA, MVT::v16i16, { 3, 7, 5, 7 } }, // psraw + split. in getArithmeticInstrCost()
784 { ISD::SHL, MVT::v4i32, { 1, 3, 1, 2 } }, // pslld. in getArithmeticInstrCost()
785 { ISD::SRL, MVT::v4i32, { 1, 3, 1, 2 } }, // psrld. in getArithmeticInstrCost()
786 { ISD::SRA, MVT::v4i32, { 1, 3, 1, 2 } }, // psrad. in getArithmeticInstrCost()
787 { ISD::SHL, MVT::v8i32, { 3, 7, 5, 7 } }, // pslld + split. in getArithmeticInstrCost()
788 { ISD::SRL, MVT::v8i32, { 3, 7, 5, 7 } }, // psrld + split. in getArithmeticInstrCost()
789 { ISD::SRA, MVT::v8i32, { 3, 7, 5, 7 } }, // psrad + split. in getArithmeticInstrCost()
791 { ISD::SHL, MVT::v2i64, { 1, 3, 1, 2 } }, // psllq. in getArithmeticInstrCost()
792 { ISD::SRL, MVT::v2i64, { 1, 3, 1, 2 } }, // psrlq. in getArithmeticInstrCost()
793 { ISD::SRA, MVT::v2i64, { 3, 4, 5, 7 } }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
794 { ISD::SHL, MVT::v4i64, { 3, 7, 4, 6 } }, // psllq + split. in getArithmeticInstrCost()
795 { ISD::SRL, MVT::v4i64, { 3, 7, 4, 6 } }, // psrlq + split. in getArithmeticInstrCost()
796 { ISD::SRA, MVT::v4i64, { 6, 7,10,13 } }, // 2 x (2 x psrad + shuffle) + split. in getArithmeticInstrCost()
803 CostTableLookup(AVXUniformCostTable, ISD, LT.second)) in getArithmeticInstrCost()
809 { ISD::SHL, MVT::v16i8, { 9, 10, 6, 9 } }, // psllw + pand. in getArithmeticInstrCost()
810 { ISD::SRL, MVT::v16i8, { 9, 13, 5, 9 } }, // psrlw + pand. in getArithmeticInstrCost()
811 { ISD::SRA, MVT::v16i8, { 11, 15, 9,13 } }, // pcmpgtb sequence. in getArithmeticInstrCost()
813 { ISD::SHL, MVT::v8i16, { 2, 2, 1, 2 } }, // psllw. in getArithmeticInstrCost()
814 { ISD::SRL, MVT::v8i16, { 2, 2, 1, 2 } }, // psrlw. in getArithmeticInstrCost()
815 { ISD::SRA, MVT::v8i16, { 2, 2, 1, 2 } }, // psraw. in getArithmeticInstrCost()
817 { ISD::SHL, MVT::v4i32, { 2, 2, 1, 2 } }, // pslld in getArithmeticInstrCost()
818 { ISD::SRL, MVT::v4i32, { 2, 2, 1, 2 } }, // psrld. in getArithmeticInstrCost()
819 { ISD::SRA, MVT::v4i32, { 2, 2, 1, 2 } }, // psrad. in getArithmeticInstrCost()
821 { ISD::SHL, MVT::v2i64, { 2, 2, 1, 2 } }, // psllq. in getArithmeticInstrCost()
822 { ISD::SRL, MVT::v2i64, { 2, 2, 1, 2 } }, // psrlq. in getArithmeticInstrCost()
823 { ISD::SRA, MVT::v2i64, { 5, 9, 5, 7 } }, // 2*psrlq + xor + sub. in getArithmeticInstrCost()
829 CostTableLookup(SSE2UniformCostTable, ISD, LT.second)) in getArithmeticInstrCost()
834 { ISD::MUL, MVT::v2i64, { 2, 15, 1, 3 } }, // pmullq in getArithmeticInstrCost()
835 { ISD::MUL, MVT::v4i64, { 2, 15, 1, 3 } }, // pmullq in getArithmeticInstrCost()
836 { ISD::MUL, MVT::v8i64, { 3, 15, 1, 3 } } // pmullq in getArithmeticInstrCost()
841 if (const auto *Entry = CostTableLookup(AVX512DQCostTable, ISD, LT.second)) in getArithmeticInstrCost()
846 { ISD::SHL, MVT::v16i8, { 4, 8, 4, 5 } }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
847 { ISD::SRL, MVT::v16i8, { 4, 8, 4, 5 } }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
848 { ISD::SRA, MVT::v16i8, { 4, 8, 4, 5 } }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
849 { ISD::SHL, MVT::v32i8, { 4, 23,11,16 } }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
850 { ISD::SRL, MVT::v32i8, { 4, 30,12,18 } }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
851 { ISD::SRA, MVT::v32i8, { 6, 13,24,30 } }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
852 { ISD::SHL, MVT::v64i8, { 6, 19,13,15 } }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
853 { ISD::SRL, MVT::v64i8, { 7, 27,15,18 } }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
854 { ISD::SRA, MVT::v64i8, { 15, 15,30,30 } }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
856 { ISD::SHL, MVT::v8i16, { 1, 1, 1, 1 } }, // vpsllvw in getArithmeticInstrCost()
857 { ISD::SRL, MVT::v8i16, { 1, 1, 1, 1 } }, // vpsrlvw in getArithmeticInstrCost()
858 { ISD::SRA, MVT::v8i16, { 1, 1, 1, 1 } }, // vpsravw in getArithmeticInstrCost()
859 { ISD::SHL, MVT::v16i16, { 1, 1, 1, 1 } }, // vpsllvw in getArithmeticInstrCost()
860 { ISD::SRL, MVT::v16i16, { 1, 1, 1, 1 } }, // vpsrlvw in getArithmeticInstrCost()
861 { ISD::SRA, MVT::v16i16, { 1, 1, 1, 1 } }, // vpsravw in getArithmeticInstrCost()
862 { ISD::SHL, MVT::v32i16, { 1, 1, 1, 1 } }, // vpsllvw in getArithmeticInstrCost()
863 { ISD::SRL, MVT::v32i16, { 1, 1, 1, 1 } }, // vpsrlvw in getArithmeticInstrCost()
864 { ISD::SRA, MVT::v32i16, { 1, 1, 1, 1 } }, // vpsravw in getArithmeticInstrCost()
866 { ISD::ADD, MVT::v64i8, { 1, 1, 1, 1 } }, // paddb in getArithmeticInstrCost()
867 { ISD::ADD, MVT::v32i16, { 1, 1, 1, 1 } }, // paddw in getArithmeticInstrCost()
869 { ISD::ADD, MVT::v32i8, { 1, 1, 1, 1 } }, // paddb in getArithmeticInstrCost()
870 { ISD::ADD, MVT::v16i16, { 1, 1, 1, 1 } }, // paddw in getArithmeticInstrCost()
871 { ISD::ADD, MVT::v8i32, { 1, 1, 1, 1 } }, // paddd in getArithmeticInstrCost()
872 { ISD::ADD, MVT::v4i64, { 1, 1, 1, 1 } }, // paddq in getArithmeticInstrCost()
874 { ISD::SUB, MVT::v64i8, { 1, 1, 1, 1 } }, // psubb in getArithmeticInstrCost()
875 { ISD::SUB, MVT::v32i16, { 1, 1, 1, 1 } }, // psubw in getArithmeticInstrCost()
877 { ISD::MUL, MVT::v16i8, { 4, 12, 4, 5 } }, // extend/pmullw/trunc in getArithmeticInstrCost()
878 { ISD::MUL, MVT::v32i8, { 3, 10, 7,10 } }, // pmaddubsw in getArithmeticInstrCost()
879 { ISD::MUL, MVT::v64i8, { 3, 11, 7,10 } }, // pmaddubsw in getArithmeticInstrCost()
880 { ISD::MUL, MVT::v32i16, { 1, 5, 1, 1 } }, // pmullw in getArithmeticInstrCost()
882 { ISD::SUB, MVT::v32i8, { 1, 1, 1, 1 } }, // psubb in getArithmeticInstrCost()
883 { ISD::SUB, MVT::v16i16, { 1, 1, 1, 1 } }, // psubw in getArithmeticInstrCost()
884 { ISD::SUB, MVT::v8i32, { 1, 1, 1, 1 } }, // psubd in getArithmeticInstrCost()
885 { ISD::SUB, MVT::v4i64, { 1, 1, 1, 1 } }, // psubq in getArithmeticInstrCost()
890 if (const auto *Entry = CostTableLookup(AVX512BWCostTable, ISD, LT.second)) in getArithmeticInstrCost()
895 { ISD::SHL, MVT::v64i8, { 15, 19,27,33 } }, // vpblendv+split sequence. in getArithmeticInstrCost()
896 { ISD::SRL, MVT::v64i8, { 15, 19,30,36 } }, // vpblendv+split sequence. in getArithmeticInstrCost()
897 { ISD::SRA, MVT::v64i8, { 37, 37,51,63 } }, // vpblendv+split sequence. in getArithmeticInstrCost()
899 { ISD::SHL, MVT::v32i16, { 11, 16,11,15 } }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
900 { ISD::SRL, MVT::v32i16, { 11, 16,11,15 } }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
901 { ISD::SRA, MVT::v32i16, { 11, 16,11,15 } }, // 2*extend/vpsravd/pack sequence. in getArithmeticInstrCost()
903 { ISD::SHL, MVT::v4i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
904 { ISD::SRL, MVT::v4i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
905 { ISD::SRA, MVT::v4i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
906 { ISD::SHL, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
907 { ISD::SRL, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
908 { ISD::SRA, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
909 { ISD::SHL, MVT::v16i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
910 { ISD::SRL, MVT::v16i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
911 { ISD::SRA, MVT::v16i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
913 { ISD::SHL, MVT::v2i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
914 { ISD::SRL, MVT::v2i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
915 { ISD::SRA, MVT::v2i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
916 { ISD::SHL, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
917 { ISD::SRL, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
918 { ISD::SRA, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
919 { ISD::SHL, MVT::v8i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
920 { ISD::SRL, MVT::v8i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
921 { ISD::SRA, MVT::v8i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
923 { ISD::ADD, MVT::v64i8, { 3, 7, 5, 5 } }, // 2*paddb + split in getArithmeticInstrCost()
924 { ISD::ADD, MVT::v32i16, { 3, 7, 5, 5 } }, // 2*paddw + split in getArithmeticInstrCost()
926 { ISD::SUB, MVT::v64i8, { 3, 7, 5, 5 } }, // 2*psubb + split in getArithmeticInstrCost()
927 { ISD::SUB, MVT::v32i16, { 3, 7, 5, 5 } }, // 2*psubw + split in getArithmeticInstrCost()
929 { ISD::AND, MVT::v32i8, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
930 { ISD::AND, MVT::v16i16, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
931 { ISD::AND, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
932 { ISD::AND, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
934 { ISD::OR, MVT::v32i8, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
935 { ISD::OR, MVT::v16i16, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
936 { ISD::OR, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
937 { ISD::OR, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
939 { ISD::XOR, MVT::v32i8, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
940 { ISD::XOR, MVT::v16i16, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
941 { ISD::XOR, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
942 { ISD::XOR, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
944 { ISD::MUL, MVT::v16i32, { 1, 10, 1, 2 } }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
945 { ISD::MUL, MVT::v8i32, { 1, 10, 1, 2 } }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
946 { ISD::MUL, MVT::v4i32, { 1, 10, 1, 2 } }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
947 { ISD::MUL, MVT::v8i64, { 6, 9, 8, 8 } }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
948 { ISD::MUL, MVT::i64, { 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
952 { ISD::FNEG, MVT::v8f64, { 1, 1, 1, 2 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
953 { ISD::FADD, MVT::v8f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
954 { ISD::FADD, MVT::v4f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
955 { ISD::FSUB, MVT::v8f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
956 { ISD::FSUB, MVT::v4f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
957 { ISD::FMUL, MVT::v8f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
958 { ISD::FMUL, MVT::v4f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
959 { ISD::FMUL, MVT::v2f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
960 { ISD::FMUL, MVT::f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
962 { ISD::FDIV, MVT::f64, { 4, 14, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
963 { ISD::FDIV, MVT::v2f64, { 4, 14, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
964 { ISD::FDIV, MVT::v4f64, { 8, 14, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
965 { ISD::FDIV, MVT::v8f64, { 16, 23, 1, 3 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
967 { ISD::FNEG, MVT::v16f32, { 1, 1, 1, 2 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
968 { ISD::FADD, MVT::v16f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
969 { ISD::FADD, MVT::v8f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
970 { ISD::FSUB, MVT::v16f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
971 { ISD::FSUB, MVT::v8f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
972 { ISD::FMUL, MVT::v16f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
973 { ISD::FMUL, MVT::v8f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
974 { ISD::FMUL, MVT::v4f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
975 { ISD::FMUL, MVT::f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
977 { ISD::FDIV, MVT::f32, { 3, 11, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
978 { ISD::FDIV, MVT::v4f32, { 3, 11, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
979 { ISD::FDIV, MVT::v8f32, { 5, 11, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
980 { ISD::FDIV, MVT::v16f32, { 10, 18, 1, 3 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
984 if (const auto *Entry = CostTableLookup(AVX512CostTable, ISD, LT.second)) in getArithmeticInstrCost()
991 { ISD::SHL, MVT::v4i32, { 2, 3, 1, 3 } }, // vpsllvd (Haswell from agner.org) in getArithmeticInstrCost()
992 { ISD::SRL, MVT::v4i32, { 2, 3, 1, 3 } }, // vpsrlvd (Haswell from agner.org) in getArithmeticInstrCost()
993 { ISD::SRA, MVT::v4i32, { 2, 3, 1, 3 } }, // vpsravd (Haswell from agner.org) in getArithmeticInstrCost()
994 { ISD::SHL, MVT::v8i32, { 4, 4, 1, 3 } }, // vpsllvd (Haswell from agner.org) in getArithmeticInstrCost()
995 { ISD::SRL, MVT::v8i32, { 4, 4, 1, 3 } }, // vpsrlvd (Haswell from agner.org) in getArithmeticInstrCost()
996 { ISD::SRA, MVT::v8i32, { 4, 4, 1, 3 } }, // vpsravd (Haswell from agner.org) in getArithmeticInstrCost()
997 { ISD::SHL, MVT::v2i64, { 2, 3, 1, 1 } }, // vpsllvq (Haswell from agner.org) in getArithmeticInstrCost()
998 { ISD::SRL, MVT::v2i64, { 2, 3, 1, 1 } }, // vpsrlvq (Haswell from agner.org) in getArithmeticInstrCost()
999 { ISD::SHL, MVT::v4i64, { 4, 4, 1, 2 } }, // vpsllvq (Haswell from agner.org) in getArithmeticInstrCost()
1000 { ISD::SRL, MVT::v4i64, { 4, 4, 1, 2 } }, // vpsrlvq (Haswell from agner.org) in getArithmeticInstrCost()
1004 if (ISD == ISD::SHL && LT.second == MVT::v32i16 && Op2Info.isConstant()) in getArithmeticInstrCost()
1013 if (ISD == ISD::SHL && LT.second == MVT::v16i16 && in getArithmeticInstrCost()
1020 if (const auto *Entry = CostTableLookup(AVX2ShiftCostTable, ISD, LT.second)) in getArithmeticInstrCost()
1027 { ISD::SHL, MVT::v16i8, { 1, 3, 1, 1 } }, in getArithmeticInstrCost()
1028 { ISD::SRL, MVT::v16i8, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
1029 { ISD::SRA, MVT::v16i8, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
1030 { ISD::SHL, MVT::v8i16, { 1, 3, 1, 1 } }, in getArithmeticInstrCost()
1031 { ISD::SRL, MVT::v8i16, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
1032 { ISD::SRA, MVT::v8i16, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
1033 { ISD::SHL, MVT::v4i32, { 1, 3, 1, 1 } }, in getArithmeticInstrCost()
1034 { ISD::SRL, MVT::v4i32, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
1035 { ISD::SRA, MVT::v4i32, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
1036 { ISD::SHL, MVT::v2i64, { 1, 3, 1, 1 } }, in getArithmeticInstrCost()
1037 { ISD::SRL, MVT::v2i64, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
1038 { ISD::SRA, MVT::v2i64, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
1040 { ISD::SHL, MVT::v32i8, { 4, 7, 5, 6 } }, in getArithmeticInstrCost()
1041 { ISD::SRL, MVT::v32i8, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1042 { ISD::SRA, MVT::v32i8, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1043 { ISD::SHL, MVT::v16i16, { 4, 7, 5, 6 } }, in getArithmeticInstrCost()
1044 { ISD::SRL, MVT::v16i16, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1045 { ISD::SRA, MVT::v16i16, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1046 { ISD::SHL, MVT::v8i32, { 4, 7, 5, 6 } }, in getArithmeticInstrCost()
1047 { ISD::SRL, MVT::v8i32, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1048 { ISD::SRA, MVT::v8i32, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1049 { ISD::SHL, MVT::v4i64, { 4, 7, 5, 6 } }, in getArithmeticInstrCost()
1050 { ISD::SRL, MVT::v4i64, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1051 { ISD::SRA, MVT::v4i64, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1058 int ShiftISD = ISD; in getArithmeticInstrCost()
1059 if ((ShiftISD == ISD::SRL || ShiftISD == ISD::SRA) && Op2Info.isConstant()) in getArithmeticInstrCost()
1060 ShiftISD = ISD::SHL; in getArithmeticInstrCost()
1067 if (ISD == ISD::SHL && !Op2Info.isUniform() && Op2Info.isConstant()) { in getArithmeticInstrCost()
1073 ISD = ISD::MUL; in getArithmeticInstrCost()
1077 { ISD::FDIV, MVT::f32, { 18, 19, 1, 1 } }, // divss in getArithmeticInstrCost()
1078 { ISD::FDIV, MVT::v4f32, { 35, 36, 1, 1 } }, // divps in getArithmeticInstrCost()
1079 { ISD::FDIV, MVT::f64, { 33, 34, 1, 1 } }, // divsd in getArithmeticInstrCost()
1080 { ISD::FDIV, MVT::v2f64, { 65, 66, 1, 1 } }, // divpd in getArithmeticInstrCost()
1084 if (const auto *Entry = CostTableLookup(GLMCostTable, ISD, LT.second)) in getArithmeticInstrCost()
1089 { ISD::MUL, MVT::v4i32, { 11, 11, 1, 7 } }, // pmulld in getArithmeticInstrCost()
1090 { ISD::MUL, MVT::v8i16, { 2, 5, 1, 1 } }, // pmullw in getArithmeticInstrCost()
1091 { ISD::FMUL, MVT::f64, { 2, 5, 1, 1 } }, // mulsd in getArithmeticInstrCost()
1092 { ISD::FMUL, MVT::f32, { 1, 4, 1, 1 } }, // mulss in getArithmeticInstrCost()
1093 { ISD::FMUL, MVT::v2f64, { 4, 7, 1, 1 } }, // mulpd in getArithmeticInstrCost()
1094 { ISD::FMUL, MVT::v4f32, { 2, 5, 1, 1 } }, // mulps in getArithmeticInstrCost()
1095 { ISD::FDIV, MVT::f32, { 17, 19, 1, 1 } }, // divss in getArithmeticInstrCost()
1096 { ISD::FDIV, MVT::v4f32, { 39, 39, 1, 6 } }, // divps in getArithmeticInstrCost()
1097 { ISD::FDIV, MVT::f64, { 32, 34, 1, 1 } }, // divsd in getArithmeticInstrCost()
1098 { ISD::FDIV, MVT::v2f64, { 69, 69, 1, 6 } }, // divpd in getArithmeticInstrCost()
1099 { ISD::FADD, MVT::v2f64, { 2, 4, 1, 1 } }, // addpd in getArithmeticInstrCost()
1100 { ISD::FSUB, MVT::v2f64, { 2, 4, 1, 1 } }, // subpd in getArithmeticInstrCost()
1106 { ISD::MUL, MVT::v2i64, { 17, 22, 9, 9 } }, in getArithmeticInstrCost()
1108 { ISD::ADD, MVT::v2i64, { 4, 2, 1, 2 } }, in getArithmeticInstrCost()
1109 { ISD::SUB, MVT::v2i64, { 4, 2, 1, 2 } }, in getArithmeticInstrCost()
1113 if (const auto *Entry = CostTableLookup(SLMCostTable, ISD, LT.second)) in getArithmeticInstrCost()
1118 { ISD::SHL, MVT::v16i8, { 6, 21,11,16 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1119 { ISD::SHL, MVT::v32i8, { 6, 23,11,22 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1120 { ISD::SHL, MVT::v8i16, { 5, 18, 5,10 } }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
1121 { ISD::SHL, MVT::v16i16, { 8, 10,10,14 } }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
1123 { ISD::SRL, MVT::v16i8, { 6, 27,12,18 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1124 { ISD::SRL, MVT::v32i8, { 8, 30,12,24 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1125 { ISD::SRL, MVT::v8i16, { 5, 11, 5,10 } }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
1126 { ISD::SRL, MVT::v16i16, { 8, 10,10,14 } }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
1128 { ISD::SRA, MVT::v16i8, { 17, 17,24,30 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1129 { ISD::SRA, MVT::v32i8, { 18, 20,24,43 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1130 { ISD::SRA, MVT::v8i16, { 5, 11, 5,10 } }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
1131 { ISD::SRA, MVT::v16i16, { 8, 10,10,14 } }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
1132 { ISD::SRA, MVT::v2i64, { 4, 5, 5, 5 } }, // srl/xor/sub sequence. in getArithmeticInstrCost()
1133 { ISD::SRA, MVT::v4i64, { 8, 8, 5, 9 } }, // srl/xor/sub sequence. in getArithmeticInstrCost()
1135 { ISD::SUB, MVT::v32i8, { 1, 1, 1, 2 } }, // psubb in getArithmeticInstrCost()
1136 { ISD::ADD, MVT::v32i8, { 1, 1, 1, 2 } }, // paddb in getArithmeticInstrCost()
1137 { ISD::SUB, MVT::v16i16, { 1, 1, 1, 2 } }, // psubw in getArithmeticInstrCost()
1138 { ISD::ADD, MVT::v16i16, { 1, 1, 1, 2 } }, // paddw in getArithmeticInstrCost()
1139 { ISD::SUB, MVT::v8i32, { 1, 1, 1, 2 } }, // psubd in getArithmeticInstrCost()
1140 { ISD::ADD, MVT::v8i32, { 1, 1, 1, 2 } }, // paddd in getArithmeticInstrCost()
1141 { ISD::SUB, MVT::v4i64, { 1, 1, 1, 2 } }, // psubq in getArithmeticInstrCost()
1142 { ISD::ADD, MVT::v4i64, { 1, 1, 1, 2 } }, // paddq in getArithmeticInstrCost()
1144 { ISD::MUL, MVT::v16i8, { 5, 18, 6,12 } }, // extend/pmullw/pack in getArithmeticInstrCost()
1145 { ISD::MUL, MVT::v32i8, { 4, 8, 8,16 } }, // pmaddubsw in getArithmeticInstrCost()
1146 { ISD::MUL, MVT::v16i16, { 2, 5, 1, 2 } }, // pmullw in getArithmeticInstrCost()
1147 { ISD::MUL, MVT::v8i32, { 4, 10, 1, 2 } }, // pmulld in getArithmeticInstrCost()
1148 { ISD::MUL, MVT::v4i32, { 2, 10, 1, 2 } }, // pmulld in getArithmeticInstrCost()
1149 { ISD::MUL, MVT::v4i64, { 6, 10, 8,13 } }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
1150 { ISD::MUL, MVT::v2i64, { 6, 10, 8, 8 } }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
1154 { ISD::FNEG, MVT::v4f64, { 1, 1, 1, 2 } }, // vxorpd in getArithmeticInstrCost()
1155 { ISD::FNEG, MVT::v8f32, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1157 { ISD::FADD, MVT::f64, { 1, 4, 1, 1 } }, // vaddsd in getArithmeticInstrCost()
1158 { ISD::FADD, MVT::f32, { 1, 4, 1, 1 } }, // vaddss in getArithmeticInstrCost()
1159 { ISD::FADD, MVT::v2f64, { 1, 4, 1, 1 } }, // vaddpd in getArithmeticInstrCost()
1160 { ISD::FADD, MVT::v4f32, { 1, 4, 1, 1 } }, // vaddps in getArithmeticInstrCost()
1161 { ISD::FADD, MVT::v4f64, { 1, 4, 1, 2 } }, // vaddpd in getArithmeticInstrCost()
1162 { ISD::FADD, MVT::v8f32, { 1, 4, 1, 2 } }, // vaddps in getArithmeticInstrCost()
1164 { ISD::FSUB, MVT::f64, { 1, 4, 1, 1 } }, // vsubsd in getArithmeticInstrCost()
1165 { ISD::FSUB, MVT::f32, { 1, 4, 1, 1 } }, // vsubss in getArithmeticInstrCost()
1166 { ISD::FSUB, MVT::v2f64, { 1, 4, 1, 1 } }, // vsubpd in getArithmeticInstrCost()
1167 { ISD::FSUB, MVT::v4f32, { 1, 4, 1, 1 } }, // vsubps in getArithmeticInstrCost()
1168 { ISD::FSUB, MVT::v4f64, { 1, 4, 1, 2 } }, // vsubpd in getArithmeticInstrCost()
1169 { ISD::FSUB, MVT::v8f32, { 1, 4, 1, 2 } }, // vsubps in getArithmeticInstrCost()
1171 { ISD::FMUL, MVT::f64, { 1, 5, 1, 1 } }, // vmulsd in getArithmeticInstrCost()
1172 { ISD::FMUL, MVT::f32, { 1, 5, 1, 1 } }, // vmulss in getArithmeticInstrCost()
1173 { ISD::FMUL, MVT::v2f64, { 1, 5, 1, 1 } }, // vmulpd in getArithmeticInstrCost()
1174 { ISD::FMUL, MVT::v4f32, { 1, 5, 1, 1 } }, // vmulps in getArithmeticInstrCost()
1175 { ISD::FMUL, MVT::v4f64, { 1, 5, 1, 2 } }, // vmulpd in getArithmeticInstrCost()
1176 { ISD::FMUL, MVT::v8f32, { 1, 5, 1, 2 } }, // vmulps in getArithmeticInstrCost()
1178 { ISD::FDIV, MVT::f32, { 7, 13, 1, 1 } }, // vdivss in getArithmeticInstrCost()
1179 { ISD::FDIV, MVT::v4f32, { 7, 13, 1, 1 } }, // vdivps in getArithmeticInstrCost()
1180 { ISD::FDIV, MVT::v8f32, { 14, 21, 1, 3 } }, // vdivps in getArithmeticInstrCost()
1181 { ISD::FDIV, MVT::f64, { 14, 20, 1, 1 } }, // vdivsd in getArithmeticInstrCost()
1182 { ISD::FDIV, MVT::v2f64, { 14, 20, 1, 1 } }, // vdivpd in getArithmeticInstrCost()
1183 { ISD::FDIV, MVT::v4f64, { 28, 35, 1, 3 } }, // vdivpd in getArithmeticInstrCost()
1188 if (const auto *Entry = CostTableLookup(AVX2CostTable, ISD, LT.second)) in getArithmeticInstrCost()
1196 { ISD::MUL, MVT::v32i8, { 10, 11, 18, 19 } }, // pmaddubsw + split in getArithmeticInstrCost()
1197 { ISD::MUL, MVT::v16i8, { 5, 6, 8, 12 } }, // 2*pmaddubsw/3*and/psllw/or in getArithmeticInstrCost()
1198 { ISD::MUL, MVT::v16i16, { 4, 8, 5, 6 } }, // pmullw + split in getArithmeticInstrCost()
1199 { ISD::MUL, MVT::v8i32, { 5, 8, 5, 10 } }, // pmulld + split in getArithmeticInstrCost()
1200 { ISD::MUL, MVT::v4i32, { 2, 5, 1, 3 } }, // pmulld in getArithmeticInstrCost()
1201 { ISD::MUL, MVT::v4i64, { 12, 15, 19, 20 } }, in getArithmeticInstrCost()
1203 { ISD::AND, MVT::v32i8, { 1, 1, 1, 2 } }, // vandps in getArithmeticInstrCost()
1204 { ISD::AND, MVT::v16i16, { 1, 1, 1, 2 } }, // vandps in getArithmeticInstrCost()
1205 { ISD::AND, MVT::v8i32, { 1, 1, 1, 2 } }, // vandps in getArithmeticInstrCost()
1206 { ISD::AND, MVT::v4i64, { 1, 1, 1, 2 } }, // vandps in getArithmeticInstrCost()
1208 { ISD::OR, MVT::v32i8, { 1, 1, 1, 2 } }, // vorps in getArithmeticInstrCost()
1209 { ISD::OR, MVT::v16i16, { 1, 1, 1, 2 } }, // vorps in getArithmeticInstrCost()
1210 { ISD::OR, MVT::v8i32, { 1, 1, 1, 2 } }, // vorps in getArithmeticInstrCost()
1211 { ISD::OR, MVT::v4i64, { 1, 1, 1, 2 } }, // vorps in getArithmeticInstrCost()
1213 { ISD::XOR, MVT::v32i8, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1214 { ISD::XOR, MVT::v16i16, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1215 { ISD::XOR, MVT::v8i32, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1216 { ISD::XOR, MVT::v4i64, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1218 { ISD::SUB, MVT::v32i8, { 4, 2, 5, 6 } }, // psubb + split in getArithmeticInstrCost()
1219 { ISD::ADD, MVT::v32i8, { 4, 2, 5, 6 } }, // paddb + split in getArithmeticInstrCost()
1220 { ISD::SUB, MVT::v16i16, { 4, 2, 5, 6 } }, // psubw + split in getArithmeticInstrCost()
1221 { ISD::ADD, MVT::v16i16, { 4, 2, 5, 6 } }, // paddw + split in getArithmeticInstrCost()
1222 { ISD::SUB, MVT::v8i32, { 4, 2, 5, 6 } }, // psubd + split in getArithmeticInstrCost()
1223 { ISD::ADD, MVT::v8i32, { 4, 2, 5, 6 } }, // paddd + split in getArithmeticInstrCost()
1224 { ISD::SUB, MVT::v4i64, { 4, 2, 5, 6 } }, // psubq + split in getArithmeticInstrCost()
1225 { ISD::ADD, MVT::v4i64, { 4, 2, 5, 6 } }, // paddq + split in getArithmeticInstrCost()
1226 { ISD::SUB, MVT::v2i64, { 1, 1, 1, 1 } }, // psubq in getArithmeticInstrCost()
1227 { ISD::ADD, MVT::v2i64, { 1, 1, 1, 1 } }, // paddq in getArithmeticInstrCost()
1229 { ISD::SHL, MVT::v16i8, { 10, 21,11,17 } }, // pblendvb sequence. in getArithmeticInstrCost()
1230 { ISD::SHL, MVT::v32i8, { 22, 22,27,40 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1231 { ISD::SHL, MVT::v8i16, { 6, 9,11,11 } }, // pblendvb sequence. in getArithmeticInstrCost()
1232 { ISD::SHL, MVT::v16i16, { 13, 16,24,25 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1233 { ISD::SHL, MVT::v4i32, { 3, 11, 4, 6 } }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
1234 { ISD::SHL, MVT::v8i32, { 9, 11,12,17 } }, // pslld/paddd/cvttps2dq/pmulld + split in getArithmeticInstrCost()
1235 { ISD::SHL, MVT::v2i64, { 2, 4, 4, 6 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1236 { ISD::SHL, MVT::v4i64, { 6, 7,11,15 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1238 { ISD::SRL, MVT::v16i8, { 11, 27,12,18 } }, // pblendvb sequence. in getArithmeticInstrCost()
1239 { ISD::SRL, MVT::v32i8, { 23, 23,30,43 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1240 { ISD::SRL, MVT::v8i16, { 13, 16,14,22 } }, // pblendvb sequence. in getArithmeticInstrCost()
1241 { ISD::SRL, MVT::v16i16, { 28, 30,31,48 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1242 { ISD::SRL, MVT::v4i32, { 6, 7,12,16 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1243 { ISD::SRL, MVT::v8i32, { 14, 14,26,34 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1244 { ISD::SRL, MVT::v2i64, { 2, 4, 4, 6 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1245 { ISD::SRL, MVT::v4i64, { 6, 7,11,15 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1247 { ISD::SRA, MVT::v16i8, { 21, 22,24,36 } }, // pblendvb sequence. in getArithmeticInstrCost()
1248 { ISD::SRA, MVT::v32i8, { 44, 45,51,76 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1249 { ISD::SRA, MVT::v8i16, { 13, 16,14,22 } }, // pblendvb sequence. in getArithmeticInstrCost()
1250 { ISD::SRA, MVT::v16i16, { 28, 30,31,48 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1251 { ISD::SRA, MVT::v4i32, { 6, 7,12,16 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1252 { ISD::SRA, MVT::v8i32, { 14, 14,26,34 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1253 { ISD::SRA, MVT::v2i64, { 5, 6,10,14 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1254 { ISD::SRA, MVT::v4i64, { 12, 12,22,30 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1256 { ISD::FNEG, MVT::v4f64, { 2, 2, 1, 2 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1257 { ISD::FNEG, MVT::v8f32, { 2, 2, 1, 2 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1259 { ISD::FADD, MVT::f64, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1260 { ISD::FADD, MVT::f32, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1261 { ISD::FADD, MVT::v2f64, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1262 { ISD::FADD, MVT::v4f32, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1263 { ISD::FADD, MVT::v4f64, { 2, 5, 1, 2 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1264 { ISD::FADD, MVT::v8f32, { 2, 5, 1, 2 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1266 { ISD::FSUB, MVT::f64, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1267 { ISD::FSUB, MVT::f32, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1268 { ISD::FSUB, MVT::v2f64, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1269 { ISD::FSUB, MVT::v4f32, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1270 { ISD::FSUB, MVT::v4f64, { 2, 5, 1, 2 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1271 { ISD::FSUB, MVT::v8f32, { 2, 5, 1, 2 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1273 { ISD::FMUL, MVT::f64, { 2, 5, 1, 1 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1274 { ISD::FMUL, MVT::f32, { 1, 5, 1, 1 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1275 { ISD::FMUL, MVT::v2f64, { 2, 5, 1, 1 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1276 { ISD::FMUL, MVT::v4f32, { 1, 5, 1, 1 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1277 { ISD::FMUL, MVT::v4f64, { 4, 5, 1, 2 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1278 { ISD::FMUL, MVT::v8f32, { 2, 5, 1, 2 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1280 { ISD::FDIV, MVT::f32, { 14, 14, 1, 1 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1281 { ISD::FDIV, MVT::v4f32, { 14, 14, 1, 1 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1282 { ISD::FDIV, MVT::v8f32, { 28, 29, 1, 3 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1283 { ISD::FDIV, MVT::f64, { 22, 22, 1, 1 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1284 { ISD::FDIV, MVT::v2f64, { 22, 22, 1, 1 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1285 { ISD::FDIV, MVT::v4f64, { 44, 45, 1, 3 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1289 if (const auto *Entry = CostTableLookup(AVX1CostTable, ISD, LT.second)) in getArithmeticInstrCost()
1294 { ISD::FADD, MVT::f64, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1295 { ISD::FADD, MVT::f32, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1296 { ISD::FADD, MVT::v2f64, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1297 { ISD::FADD, MVT::v4f32, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1299 { ISD::FSUB, MVT::f64, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1300 { ISD::FSUB, MVT::f32 , { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1301 { ISD::FSUB, MVT::v2f64, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1302 { ISD::FSUB, MVT::v4f32, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1304 { ISD::FMUL, MVT::f64, { 1, 5, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1305 { ISD::FMUL, MVT::f32, { 1, 5, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1306 { ISD::FMUL, MVT::v2f64, { 1, 5, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1307 { ISD::FMUL, MVT::v4f32, { 1, 5, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1309 { ISD::FDIV, MVT::f32, { 14, 14, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1310 { ISD::FDIV, MVT::v4f32, { 14, 14, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1311 { ISD::FDIV, MVT::f64, { 22, 22, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1312 { ISD::FDIV, MVT::v2f64, { 22, 22, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1314 { ISD::MUL, MVT::v2i64, { 6, 10,10,10 } } // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
1318 if (const auto *Entry = CostTableLookup(SSE42CostTable, ISD, LT.second)) in getArithmeticInstrCost()
1323 { ISD::SHL, MVT::v16i8, { 15, 24,17,22 } }, // pblendvb sequence. in getArithmeticInstrCost()
1324 { ISD::SHL, MVT::v8i16, { 11, 14,11,11 } }, // pblendvb sequence. in getArithmeticInstrCost()
1325 { ISD::SHL, MVT::v4i32, { 14, 20, 4,10 } }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
1327 { ISD::SRL, MVT::v16i8, { 16, 27,18,24 } }, // pblendvb sequence. in getArithmeticInstrCost()
1328 { ISD::SRL, MVT::v8i16, { 22, 26,23,27 } }, // pblendvb sequence. in getArithmeticInstrCost()
1329 { ISD::SRL, MVT::v4i32, { 16, 17,15,19 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1330 { ISD::SRL, MVT::v2i64, { 4, 6, 5, 7 } }, // splat+shuffle sequence. in getArithmeticInstrCost()
1332 { ISD::SRA, MVT::v16i8, { 38, 41,30,36 } }, // pblendvb sequence. in getArithmeticInstrCost()
1333 { ISD::SRA, MVT::v8i16, { 22, 26,23,27 } }, // pblendvb sequence. in getArithmeticInstrCost()
1334 { ISD::SRA, MVT::v4i32, { 16, 17,15,19 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1335 { ISD::SRA, MVT::v2i64, { 8, 17, 5, 7 } }, // splat+shuffle sequence. in getArithmeticInstrCost()
1337 { ISD::MUL, MVT::v4i32, { 2, 11, 1, 1 } } // pmulld (Nehalem from agner.org) in getArithmeticInstrCost()
1341 if (const auto *Entry = CostTableLookup(SSE41CostTable, ISD, LT.second)) in getArithmeticInstrCost()
1346 { ISD::MUL, MVT::v16i8, { 5, 18,10,12 } }, // 2*pmaddubsw/3*and/psllw/or in getArithmeticInstrCost()
1350 if (const auto *Entry = CostTableLookup(SSSE3CostTable, ISD, LT.second)) in getArithmeticInstrCost()
1357 { ISD::SHL, MVT::v16i8, { 13, 21,26,28 } }, // cmpgtb sequence. in getArithmeticInstrCost()
1358 { ISD::SHL, MVT::v8i16, { 24, 27,16,20 } }, // cmpgtw sequence. in getArithmeticInstrCost()
1359 { ISD::SHL, MVT::v4i32, { 17, 19,10,12 } }, // pslld/paddd/cvttps2dq/pmuludq. in getArithmeticInstrCost()
1360 { ISD::SHL, MVT::v2i64, { 4, 6, 5, 7 } }, // splat+shuffle sequence. in getArithmeticInstrCost()
1362 { ISD::SRL, MVT::v16i8, { 14, 28,27,30 } }, // cmpgtb sequence. in getArithmeticInstrCost()
1363 { ISD::SRL, MVT::v8i16, { 16, 19,31,31 } }, // cmpgtw sequence. in getArithmeticInstrCost()
1364 { ISD::SRL, MVT::v4i32, { 12, 12,15,19 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1365 { ISD::SRL, MVT::v2i64, { 4, 6, 5, 7 } }, // splat+shuffle sequence. in getArithmeticInstrCost()
1367 { ISD::SRA, MVT::v16i8, { 27, 30,54,54 } }, // unpacked cmpgtb sequence. in getArithmeticInstrCost()
1368 { ISD::SRA, MVT::v8i16, { 16, 19,31,31 } }, // cmpgtw sequence. in getArithmeticInstrCost()
1369 { ISD::SRA, MVT::v4i32, { 12, 12,15,19 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1370 { ISD::SRA, MVT::v2i64, { 8, 11,12,16 } }, // srl/xor/sub splat+shuffle sequence. in getArithmeticInstrCost()
1372 { ISD::AND, MVT::v16i8, { 1, 1, 1, 1 } }, // pand in getArithmeticInstrCost()
1373 { ISD::AND, MVT::v8i16, { 1, 1, 1, 1 } }, // pand in getArithmeticInstrCost()
1374 { ISD::AND, MVT::v4i32, { 1, 1, 1, 1 } }, // pand in getArithmeticInstrCost()
1375 { ISD::AND, MVT::v2i64, { 1, 1, 1, 1 } }, // pand in getArithmeticInstrCost()
1377 { ISD::OR, MVT::v16i8, { 1, 1, 1, 1 } }, // por in getArithmeticInstrCost()
1378 { ISD::OR, MVT::v8i16, { 1, 1, 1, 1 } }, // por in getArithmeticInstrCost()
1379 { ISD::OR, MVT::v4i32, { 1, 1, 1, 1 } }, // por in getArithmeticInstrCost()
1380 { ISD::OR, MVT::v2i64, { 1, 1, 1, 1 } }, // por in getArithmeticInstrCost()
1382 { ISD::XOR, MVT::v16i8, { 1, 1, 1, 1 } }, // pxor in getArithmeticInstrCost()
1383 { ISD::XOR, MVT::v8i16, { 1, 1, 1, 1 } }, // pxor in getArithmeticInstrCost()
1384 { ISD::XOR, MVT::v4i32, { 1, 1, 1, 1 } }, // pxor in getArithmeticInstrCost()
1385 { ISD::XOR, MVT::v2i64, { 1, 1, 1, 1 } }, // pxor in getArithmeticInstrCost()
1387 { ISD::ADD, MVT::v2i64, { 1, 2, 1, 2 } }, // paddq in getArithmeticInstrCost()
1388 { ISD::SUB, MVT::v2i64, { 1, 2, 1, 2 } }, // psubq in getArithmeticInstrCost()
1390 { ISD::MUL, MVT::v16i8, { 6, 18,12,12 } }, // 2*unpack/2*pmullw/2*and/pack in getArithmeticInstrCost()
1391 { ISD::MUL, MVT::v8i16, { 1, 5, 1, 1 } }, // pmullw in getArithmeticInstrCost()
1392 { ISD::MUL, MVT::v4i32, { 6, 8, 7, 7 } }, // 3*pmuludq/4*shuffle in getArithmeticInstrCost()
1393 { ISD::MUL, MVT::v2i64, { 7, 10,10,10 } }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
1397 { ISD::FDIV, MVT::f32, { 23, 23, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1398 { ISD::FDIV, MVT::v4f32, { 39, 39, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1399 { ISD::FDIV, MVT::f64, { 38, 38, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1400 { ISD::FDIV, MVT::v2f64, { 69, 69, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1402 { ISD::FNEG, MVT::f32, { 1, 1, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1403 { ISD::FNEG, MVT::f64, { 1, 1, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1404 { ISD::FNEG, MVT::v4f32, { 1, 1, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1405 { ISD::FNEG, MVT::v2f64, { 1, 1, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1407 { ISD::FADD, MVT::f32, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1408 { ISD::FADD, MVT::f64, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1409 { ISD::FADD, MVT::v2f64, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1411 { ISD::FSUB, MVT::f32, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1412 { ISD::FSUB, MVT::f64, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1413 { ISD::FSUB, MVT::v2f64, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1415 { ISD::FMUL, MVT::f64, { 2, 5, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1416 { ISD::FMUL, MVT::v2f64, { 2, 5, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1420 if (const auto *Entry = CostTableLookup(SSE2CostTable, ISD, LT.second)) in getArithmeticInstrCost()
1425 { ISD::FDIV, MVT::f32, { 17, 18, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1426 { ISD::FDIV, MVT::v4f32, { 34, 48, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1428 { ISD::FNEG, MVT::f32, { 2, 2, 1, 2 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1429 { ISD::FNEG, MVT::v4f32, { 2, 2, 1, 2 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1431 { ISD::FADD, MVT::f32, { 1, 3, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1432 { ISD::FADD, MVT::v4f32, { 2, 3, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1434 { ISD::FSUB, MVT::f32, { 1, 3, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1435 { ISD::FSUB, MVT::v4f32, { 2, 3, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1437 { ISD::FMUL, MVT::f32, { 2, 5, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1438 { ISD::FMUL, MVT::v4f32, { 2, 5, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1442 if (const auto *Entry = CostTableLookup(SSE1CostTable, ISD, LT.second)) in getArithmeticInstrCost()
1447 { ISD::ADD, MVT::i64, { 1 } }, // Core (Merom) from http://www.agner.org/ in getArithmeticInstrCost()
1448 { ISD::SUB, MVT::i64, { 1 } }, // Core (Merom) from http://www.agner.org/ in getArithmeticInstrCost()
1449 { ISD::MUL, MVT::i64, { 2, 6, 1, 2 } }, in getArithmeticInstrCost()
1453 if (const auto *Entry = CostTableLookup(X64CostTbl, ISD, LT.second)) in getArithmeticInstrCost()
1458 { ISD::ADD, MVT::i8, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1459 { ISD::ADD, MVT::i16, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1460 { ISD::ADD, MVT::i32, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1462 { ISD::SUB, MVT::i8, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1463 { ISD::SUB, MVT::i16, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1464 { ISD::SUB, MVT::i32, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1466 { ISD::MUL, MVT::i8, { 3, 4, 1, 1 } }, in getArithmeticInstrCost()
1467 { ISD::MUL, MVT::i16, { 2, 4, 1, 1 } }, in getArithmeticInstrCost()
1468 { ISD::MUL, MVT::i32, { 1, 4, 1, 1 } }, in getArithmeticInstrCost()
1470 { ISD::FNEG, MVT::f64, { 2, 2, 1, 3 } }, // (x87) in getArithmeticInstrCost()
1471 { ISD::FADD, MVT::f64, { 2, 3, 1, 1 } }, // (x87) in getArithmeticInstrCost()
1472 { ISD::FSUB, MVT::f64, { 2, 3, 1, 1 } }, // (x87) in getArithmeticInstrCost()
1473 { ISD::FMUL, MVT::f64, { 2, 5, 1, 1 } }, // (x87) in getArithmeticInstrCost()
1474 { ISD::FDIV, MVT::f64, { 38, 38, 1, 1 } }, // (x87) in getArithmeticInstrCost()
1477 if (const auto *Entry = CostTableLookup(X86CostTbl, ISD, LT.second)) in getArithmeticInstrCost()
1488 (ISD == ISD::SDIV || ISD == ISD::SREM || ISD == ISD::UDIV || in getArithmeticInstrCost()
1489 ISD == ISD::UREM)) { in getArithmeticInstrCost()
1498 switch (ISD) { in getArithmeticInstrCost()
1499 case ISD::FADD: in getArithmeticInstrCost()
1500 case ISD::FSUB: in getArithmeticInstrCost()
1501 case ISD::FMUL: in getArithmeticInstrCost()
1502 case ISD::FDIV: in getArithmeticInstrCost()
1503 case ISD::FNEG: in getArithmeticInstrCost()
1504 case ISD::AND: in getArithmeticInstrCost()
1505 case ISD::OR: in getArithmeticInstrCost()
1506 case ISD::XOR: in getArithmeticInstrCost()
2175 int ISD = TLI->InstructionOpcodeToISD(Opcode); in getCastInstrCost() local
2176 assert(ISD && "Invalid opcode"); in getCastInstrCost()
2184 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2185 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2188 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2189 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2190 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2191 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2192 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2193 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2194 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2195 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2196 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2197 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2198 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2199 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2200 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2201 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2202 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2203 { ISD::SIGN_EXTEND, MVT::v64i8, MVT::v64i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2204 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v64i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2207 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2208 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2209 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2210 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2211 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2212 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2213 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2214 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2215 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2216 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v8i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2217 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2218 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2219 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2220 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2221 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2222 { ISD::ZERO_EXTEND, MVT::v64i8, MVT::v64i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2223 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v64i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2225 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2226 { ISD::TRUNCATE, MVT::v2i1, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2227 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2228 { ISD::TRUNCATE, MVT::v2i1, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2229 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2230 { ISD::TRUNCATE, MVT::v4i1, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2231 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2232 { ISD::TRUNCATE, MVT::v4i1, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2233 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2234 { ISD::TRUNCATE, MVT::v8i1, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2235 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2236 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2237 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2238 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2239 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2240 { ISD::TRUNCATE, MVT::v64i1, MVT::v64i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2241 { ISD::TRUNCATE, MVT::v64i1, MVT::v32i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2243 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2244 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, { 2, 1, 1, 1 } }, // widen to zmm in getCastInstrCost()
2245 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i16, { 2, 1, 1, 1 } }, // vpmovwb in getCastInstrCost()
2246 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i16, { 2, 1, 1, 1 } }, // vpmovwb in getCastInstrCost()
2247 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i16, { 2, 1, 1, 1 } }, // vpmovwb in getCastInstrCost()
2252 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2253 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2254 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2255 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2256 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2257 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2258 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2259 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2262 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, { 2, 1, 1, 1, } }, in getCastInstrCost()
2263 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v2i1, { 2, 1, 1, 1, } }, in getCastInstrCost()
2264 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, { 2, 1, 1, 1, } }, in getCastInstrCost()
2265 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, { 2, 1, 1, 1, } }, in getCastInstrCost()
2266 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, { 2, 1, 1, 1, } }, in getCastInstrCost()
2267 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v16i1, { 2, 1, 1, 1, } }, in getCastInstrCost()
2268 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i1, { 2, 1, 1, 1, } }, in getCastInstrCost()
2269 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i1, { 2, 1, 1, 1, } }, in getCastInstrCost()
2271 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2272 { ISD::TRUNCATE, MVT::v2i1, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2273 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2274 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2275 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2276 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2277 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2278 { ISD::TRUNCATE, MVT::v16i1, MVT::v8i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2280 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2281 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2283 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2284 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2286 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2287 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2289 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2290 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2297 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2298 { ISD::FP_EXTEND, MVT::v8f64, MVT::v16f32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2299 { ISD::FP_EXTEND, MVT::v16f64, MVT::v16f32, { 4, 1, 1, 1 } }, // 2*vcvtps2pd+vextractf64x4 in getCastInstrCost()
2300 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2302 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, { 3, 1, 1, 1 } }, // sext+vpslld+vptestmd in getCastInstrCost()
2303 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, { 3, 1, 1, 1 } }, // sext+vpslld+vptestmd in getCastInstrCost()
2304 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, { 3, 1, 1, 1 } }, // sext+vpslld+vptestmd in getCastInstrCost()
2305 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, { 3, 1, 1, 1 } }, // sext+vpslld+vptestmd in getCastInstrCost()
2306 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, { 3, 1, 1, 1 } }, // sext+vpsllq+vptestmq in getCastInstrCost()
2307 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, { 3, 1, 1, 1 } }, // sext+vpsllq+vptestmq in getCastInstrCost()
2308 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, { 3, 1, 1, 1 } }, // sext+vpsllq+vptestmq in getCastInstrCost()
2309 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, { 3, 1, 1, 1 } }, // sext+vpslld+vptestmd in getCastInstrCost()
2310 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, { 2, 1, 1, 1 } }, // zmm vpslld+vptestmd in getCastInstrCost()
2311 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, { 2, 1, 1, 1 } }, // zmm vpslld+vptestmd in getCastInstrCost()
2312 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, { 2, 1, 1, 1 } }, // zmm vpslld+vptestmd in getCastInstrCost()
2313 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i32, { 2, 1, 1, 1 } }, // vpslld+vptestmd in getCastInstrCost()
2314 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, { 2, 1, 1, 1 } }, // zmm vpsllq+vptestmq in getCastInstrCost()
2315 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, { 2, 1, 1, 1 } }, // zmm vpsllq+vptestmq in getCastInstrCost()
2316 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, { 2, 1, 1, 1 } }, // vpsllq+vptestmq in getCastInstrCost()
2317 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i32, { 2, 1, 1, 1 } }, // vpmovdb in getCastInstrCost()
2318 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i32, { 2, 1, 1, 1 } }, // vpmovdb in getCastInstrCost()
2319 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, { 2, 1, 1, 1 } }, // vpmovdb in getCastInstrCost()
2320 { ISD::TRUNCATE, MVT::v32i8, MVT::v16i32, { 2, 1, 1, 1 } }, // vpmovdb in getCastInstrCost()
2321 { ISD::TRUNCATE, MVT::v64i8, MVT::v16i32, { 2, 1, 1, 1 } }, // vpmovdb in getCastInstrCost()
2322 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, { 2, 1, 1, 1 } }, // vpmovdw in getCastInstrCost()
2323 { ISD::TRUNCATE, MVT::v32i16, MVT::v16i32, { 2, 1, 1, 1 } }, // vpmovdw in getCastInstrCost()
2324 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i64, { 2, 1, 1, 1 } }, // vpmovqb in getCastInstrCost()
2325 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i64, { 1, 1, 1, 1 } }, // vpshufb in getCastInstrCost()
2326 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i64, { 2, 1, 1, 1 } }, // vpmovqb in getCastInstrCost()
2327 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i64, { 2, 1, 1, 1 } }, // vpmovqb in getCastInstrCost()
2328 { ISD::TRUNCATE, MVT::v32i8, MVT::v8i64, { 2, 1, 1, 1 } }, // vpmovqb in getCastInstrCost()
2329 { ISD::TRUNCATE, MVT::v64i8, MVT::v8i64, { 2, 1, 1, 1 } }, // vpmovqb in getCastInstrCost()
2330 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i64, { 2, 1, 1, 1 } }, // vpmovqw in getCastInstrCost()
2331 { ISD::TRUNCATE, MVT::v16i16, MVT::v8i64, { 2, 1, 1, 1 } }, // vpmovqw in getCastInstrCost()
2332 { ISD::TRUNCATE, MVT::v32i16, MVT::v8i64, { 2, 1, 1, 1 } }, // vpmovqw in getCastInstrCost()
2333 { ISD::TRUNCATE, MVT::v8i32, MVT::v8i64, { 1, 1, 1, 1 } }, // vpmovqd in getCastInstrCost()
2334 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, { 1, 1, 1, 1 } }, // zmm vpmovqd in getCastInstrCost()
2335 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i64, { 5, 1, 1, 1 } },// 2*vpmovqd+concat+vpmovdb in getCastInstrCost()
2337 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, { 3, 1, 1, 1 } }, // extend to v16i32 in getCastInstrCost()
2338 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, { 8, 1, 1, 1 } }, in getCastInstrCost()
2339 { ISD::TRUNCATE, MVT::v64i8, MVT::v32i16, { 8, 1, 1, 1 } }, in getCastInstrCost()
2343 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2344 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2345 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2346 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2347 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2348 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2349 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2350 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2354 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2355 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2356 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2357 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2358 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2359 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2360 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2361 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2363 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, { 1, 1, 1, 1 } }, // zmm vpternlogd in getCastInstrCost()
2364 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, { 2, 1, 1, 1 } }, // zmm vpternlogd+psrld in getCastInstrCost()
2365 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, { 1, 1, 1, 1 } }, // zmm vpternlogd in getCastInstrCost()
2366 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, { 2, 1, 1, 1 } }, // zmm vpternlogd+psrld in getCastInstrCost()
2367 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, { 1, 1, 1, 1 } }, // zmm vpternlogd in getCastInstrCost()
2368 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, { 2, 1, 1, 1 } }, // zmm vpternlogd+psrld in getCastInstrCost()
2369 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, { 1, 1, 1, 1 } }, // zmm vpternlogq in getCastInstrCost()
2370 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, { 2, 1, 1, 1 } }, // zmm vpternlogq+psrlq in getCastInstrCost()
2371 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, { 1, 1, 1, 1 } }, // zmm vpternlogq in getCastInstrCost()
2372 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, { 2, 1, 1, 1 } }, // zmm vpternlogq+psrlq in getCastInstrCost()
2374 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i1, { 1, 1, 1, 1 } }, // vpternlogd in getCastInstrCost()
2375 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i1, { 2, 1, 1, 1 } }, // vpternlogd+psrld in getCastInstrCost()
2376 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i1, { 1, 1, 1, 1 } }, // vpternlogq in getCastInstrCost()
2377 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i1, { 2, 1, 1, 1 } }, // vpternlogq+psrlq in getCastInstrCost()
2379 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2380 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2381 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2382 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2383 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2384 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2385 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2386 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2387 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2388 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2390 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, { 3, 1, 1, 1 } }, // FIXME: May not be right in getCastInstrCost()
2391 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, { 3, 1, 1, 1 } }, // FIXME: May not be right in getCastInstrCost()
2393 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2394 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2395 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2396 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2397 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2398 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2399 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2400 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2402 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2403 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2404 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2405 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2406 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2407 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2408 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2409 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2410 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, {26, 1, 1, 1 } }, in getCastInstrCost()
2411 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2413 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2414 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f64, { 7, 1, 1, 1 } }, in getCastInstrCost()
2415 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v32f64, {15, 1, 1, 1 } }, in getCastInstrCost()
2416 { ISD::FP_TO_SINT, MVT::v64i8, MVT::v64f32, {11, 1, 1, 1 } }, in getCastInstrCost()
2417 { ISD::FP_TO_SINT, MVT::v64i8, MVT::v64f64, {31, 1, 1, 1 } }, in getCastInstrCost()
2418 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f64, { 3, 1, 1, 1 } }, in getCastInstrCost()
2419 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v16f64, { 7, 1, 1, 1 } }, in getCastInstrCost()
2420 { ISD::FP_TO_SINT, MVT::v32i16, MVT::v32f32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2421 { ISD::FP_TO_SINT, MVT::v32i16, MVT::v32f64, {15, 1, 1, 1 } }, in getCastInstrCost()
2422 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2423 { ISD::FP_TO_SINT, MVT::v16i32, MVT::v16f64, { 3, 1, 1, 1 } }, in getCastInstrCost()
2425 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2426 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f64, { 3, 1, 1, 1 } }, in getCastInstrCost()
2427 { ISD::FP_TO_UINT, MVT::v8i8, MVT::v8f64, { 3, 1, 1, 1 } }, in getCastInstrCost()
2428 { ISD::FP_TO_UINT, MVT::v16i32, MVT::v16f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2429 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v16f32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2430 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v16f32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2435 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2436 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2437 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2438 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2439 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2440 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2441 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2442 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2443 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2444 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2445 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2446 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2447 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2448 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2449 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v32i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2450 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v64i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2451 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v64i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2454 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2455 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2456 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2457 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2458 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2459 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2460 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2461 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2462 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2463 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v8i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2464 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2465 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2466 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2467 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2468 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v32i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2469 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v64i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2470 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v64i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2472 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2473 { ISD::TRUNCATE, MVT::v2i1, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2474 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2475 { ISD::TRUNCATE, MVT::v2i1, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2476 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2477 { ISD::TRUNCATE, MVT::v4i1, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2478 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2479 { ISD::TRUNCATE, MVT::v4i1, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2480 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2481 { ISD::TRUNCATE, MVT::v8i1, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2482 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2483 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2484 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2485 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2486 { ISD::TRUNCATE, MVT::v32i1, MVT::v16i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2487 { ISD::TRUNCATE, MVT::v64i1, MVT::v32i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2488 { ISD::TRUNCATE, MVT::v64i1, MVT::v16i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2490 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2495 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2496 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v2i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2497 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2498 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2499 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2500 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2501 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2502 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2505 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2506 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v2i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2507 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2508 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2509 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2510 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2511 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2512 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, { 2, 1, 1, 1 } }, in getCastInstrCost()
2514 { ISD::TRUNCATE, MVT::v16i1, MVT::v4i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2515 { ISD::TRUNCATE, MVT::v16i1, MVT::v8i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2516 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2517 { ISD::TRUNCATE, MVT::v2i1, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2518 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2519 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2520 { ISD::TRUNCATE, MVT::v8i1, MVT::v4i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2521 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2523 { ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2524 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2525 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2526 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2528 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2529 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2530 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2531 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2533 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v4f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2534 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2535 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v2f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2536 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2538 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v4f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2539 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2540 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v2f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2541 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2545 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, { 3, 1, 1, 1 } }, // sext+vpslld+vptestmd in getCastInstrCost()
2546 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, { 3, 1, 1, 1 } }, // sext+vpslld+vptestmd in getCastInstrCost()
2547 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, { 3, 1, 1, 1 } }, // sext+vpslld+vptestmd in getCastInstrCost()
2548 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, { 8, 1, 1, 1 } }, // split+2*v8i8 in getCastInstrCost()
2549 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, { 3, 1, 1, 1 } }, // sext+vpsllq+vptestmq in getCastInstrCost()
2550 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, { 3, 1, 1, 1 } }, // sext+vpsllq+vptestmq in getCastInstrCost()
2551 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, { 3, 1, 1, 1 } }, // sext+vpsllq+vptestmq in getCastInstrCost()
2552 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, { 8, 1, 1, 1 } }, // split+2*v8i16 in getCastInstrCost()
2553 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, { 2, 1, 1, 1 } }, // vpslld+vptestmd in getCastInstrCost()
2554 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, { 2, 1, 1, 1 } }, // vpslld+vptestmd in getCastInstrCost()
2555 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, { 2, 1, 1, 1 } }, // vpslld+vptestmd in getCastInstrCost()
2556 { ISD::TRUNCATE, MVT::v16i1, MVT::v8i32, { 2, 1, 1, 1 } }, // vpslld+vptestmd in getCastInstrCost()
2557 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, { 2, 1, 1, 1 } }, // vpsllq+vptestmq in getCastInstrCost()
2558 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, { 2, 1, 1, 1 } }, // vpsllq+vptestmq in getCastInstrCost()
2559 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, { 1, 1, 1, 1 } }, // vpmovqd in getCastInstrCost()
2560 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i64, { 2, 1, 1, 1 } }, // vpmovqb in getCastInstrCost()
2561 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i64, { 2, 1, 1, 1 } }, // vpmovqw in getCastInstrCost()
2562 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, { 2, 1, 1, 1 } }, // vpmovwb in getCastInstrCost()
2566 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, { 5, 1, 1, 1 } }, in getCastInstrCost()
2567 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, { 6, 1, 1, 1 } }, in getCastInstrCost()
2568 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, { 5, 1, 1, 1 } }, in getCastInstrCost()
2569 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, { 6, 1, 1, 1 } }, in getCastInstrCost()
2570 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, { 5, 1, 1, 1 } }, in getCastInstrCost()
2571 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, { 6, 1, 1, 1 } }, in getCastInstrCost()
2572 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, {10, 1, 1, 1 } }, in getCastInstrCost()
2573 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, {12, 1, 1, 1 } }, in getCastInstrCost()
2577 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2578 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, { 5, 1, 1, 1 } }, in getCastInstrCost()
2579 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2580 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, { 5, 1, 1, 1 } }, in getCastInstrCost()
2581 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2582 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, { 5, 1, 1, 1 } }, in getCastInstrCost()
2583 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, {10, 1, 1, 1 } }, in getCastInstrCost()
2584 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, {12, 1, 1, 1 } }, in getCastInstrCost()
2586 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, { 1, 1, 1, 1 } }, // vpternlogd in getCastInstrCost()
2587 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, { 2, 1, 1, 1 } }, // vpternlogd+psrld in getCastInstrCost()
2588 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, { 1, 1, 1, 1 } }, // vpternlogd in getCastInstrCost()
2589 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, { 2, 1, 1, 1 } }, // vpternlogd+psrld in getCastInstrCost()
2590 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, { 1, 1, 1, 1 } }, // vpternlogd in getCastInstrCost()
2591 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, { 2, 1, 1, 1 } }, // vpternlogd+psrld in getCastInstrCost()
2592 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i1, { 1, 1, 1, 1 } }, // vpternlogd in getCastInstrCost()
2593 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i1, { 2, 1, 1, 1 } }, // vpternlogd+psrld in getCastInstrCost()
2595 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, { 1, 1, 1, 1 } }, // vpternlogq in getCastInstrCost()
2596 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, { 2, 1, 1, 1 } }, // vpternlogq+psrlq in getCastInstrCost()
2597 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, { 1, 1, 1, 1 } }, // vpternlogq in getCastInstrCost()
2598 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, { 2, 1, 1, 1 } }, // vpternlogq+psrlq in getCastInstrCost()
2600 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2601 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2602 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2603 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2604 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2605 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2606 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2607 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2608 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2609 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2610 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2611 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2613 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2614 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2615 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2616 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2618 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2619 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2620 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2621 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2622 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2623 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2624 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2625 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2626 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2627 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2628 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2629 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2630 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2632 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2633 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2634 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v32f32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2636 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2637 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2638 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2639 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2640 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2641 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2642 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2646 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2647 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2648 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2649 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2650 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2651 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, { 1, 1, 1, 1 } }, in getCastInstrCost()
2653 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2654 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2655 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2656 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2657 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2658 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2659 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2660 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2661 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2662 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2663 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, { 3, 1, 1, 1 } }, in getCastInstrCost()
2664 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, { 3, 1, 1, 1 } }, in getCastInstrCost()
2665 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2666 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2668 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2670 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2671 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2672 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2673 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2674 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2675 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2676 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2677 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2678 { ISD::TRUNCATE, MVT::v8i16, MVT::v2i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2679 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2680 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2681 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2683 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2684 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, { 3, 1, 1, 1 } }, in getCastInstrCost()
2686 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v8f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2687 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2688 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2689 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, { 3, 1, 1, 1 } }, in getCastInstrCost()
2691 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2692 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, { 3, 1, 1, 1 } }, in getCastInstrCost()
2693 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v8f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2694 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2695 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2696 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2697 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2698 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v4f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2700 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2701 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2702 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2703 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2704 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2705 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2706 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2708 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2709 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2710 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2711 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2712 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2713 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2714 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2715 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2716 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2717 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2721 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2722 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2723 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2724 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2725 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2726 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, { 4, 1, 1, 1 } }, in getCastInstrCost()
2728 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, { 3, 1, 1, 1 } }, in getCastInstrCost()
2729 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, { 3, 1, 1, 1 } }, in getCastInstrCost()
2730 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, { 3, 1, 1, 1 } }, in getCastInstrCost()
2731 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, { 3, 1, 1, 1 } }, in getCastInstrCost()
2732 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, { 3, 1, 1, 1 } }, in getCastInstrCost()
2733 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, { 3, 1, 1, 1 } }, in getCastInstrCost()
2734 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, { 3, 1, 1, 1 } }, in getCastInstrCost()
2735 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, { 3, 1, 1, 1 } }, in getCastInstrCost()
2736 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, { 3, 1, 1, 1 } }, in getCastInstrCost()
2737 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, { 3, 1, 1, 1 } }, in getCastInstrCost()
2738 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2739 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2741 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2742 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2743 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, { 4, 1, 1, 1 } }, in getCastInstrCost()
2744 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, { 9, 1, 1, 1 } }, in getCastInstrCost()
2745 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i64, {11, 1, 1, 1 } }, in getCastInstrCost()
2747 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, { 6, 1, 1, 1 } }, in getCastInstrCost()
2748 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, { 6, 1, 1, 1 } }, in getCastInstrCost()
2749 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, { 2, 1, 1, 1 } }, // and+extract+packuswb in getCastInstrCost()
2750 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2751 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2752 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2753 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i64, { 3, 1, 1, 1 } }, // and+extract+2*packusdw in getCastInstrCost()
2754 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2756 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2757 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i1, { 3, 1, 1, 1 } }, in getCastInstrCost()
2758 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i1, { 8, 1, 1, 1 } }, in getCastInstrCost()
2759 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, { 4, 1, 1, 1 } }, in getCastInstrCost()
2760 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2761 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, { 4, 1, 1, 1 } }, in getCastInstrCost()
2762 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2763 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2764 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2765 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2766 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2767 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, { 8, 1, 1, 1 } }, in getCastInstrCost()
2769 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i1, { 7, 1, 1, 1 } }, in getCastInstrCost()
2770 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i1, { 7, 1, 1, 1 } }, in getCastInstrCost()
2771 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i1, { 6, 1, 1, 1 } }, in getCastInstrCost()
2772 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, { 4, 1, 1, 1 } }, in getCastInstrCost()
2773 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2774 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, { 4, 1, 1, 1 } }, in getCastInstrCost()
2775 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2776 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2777 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2778 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2779 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, { 6, 1, 1, 1 } }, in getCastInstrCost()
2780 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, { 8, 1, 1, 1 } }, in getCastInstrCost()
2781 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, {10, 1, 1, 1 } }, in getCastInstrCost()
2782 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, {10, 1, 1, 1 } }, in getCastInstrCost()
2783 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, {18, 1, 1, 1 } }, in getCastInstrCost()
2784 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2785 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, {10, 1, 1, 1 } }, in getCastInstrCost()
2787 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2788 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2789 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2790 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v4f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2791 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2792 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2793 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2794 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v4f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2795 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2796 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2797 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2799 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2800 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2801 { ISD::FP_TO_UINT, MVT::v32i8, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2802 { ISD::FP_TO_UINT, MVT::v32i8, MVT::v4f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2803 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2804 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2805 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v8f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2806 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v4f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2807 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2808 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2809 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, { 6, 1, 1, 1 } }, in getCastInstrCost()
2810 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, { 7, 1, 1, 1 } }, in getCastInstrCost()
2811 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v4f64, { 7, 1, 1, 1 } }, in getCastInstrCost()
2813 { ISD::FP_EXTEND, MVT::v4f64, MVT::v4f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2814 { ISD::FP_ROUND, MVT::v4f32, MVT::v4f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2818 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2819 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2820 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2821 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2822 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2823 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2824 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2825 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2826 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2827 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2828 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2829 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2832 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, { 1, 1, 1, 1 } }, // PMOVXZBQ in getCastInstrCost()
2833 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, { 1, 1, 1, 1 } }, // PMOVXZWQ in getCastInstrCost()
2834 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, { 1, 1, 1, 1 } }, // PMOVXZBD in getCastInstrCost()
2836 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2837 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2838 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2840 { ISD::SINT_TO_FP, MVT::f32, MVT::i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2841 { ISD::SINT_TO_FP, MVT::f64, MVT::i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2842 { ISD::SINT_TO_FP, MVT::f32, MVT::i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2843 { ISD::SINT_TO_FP, MVT::f64, MVT::i64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2844 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2845 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2846 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2847 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2848 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2849 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2850 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2852 { ISD::UINT_TO_FP, MVT::f32, MVT::i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2853 { ISD::UINT_TO_FP, MVT::f64, MVT::i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2854 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2855 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2856 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2857 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2858 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2859 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2860 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2861 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2862 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2863 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, {12, 1, 1, 1 } }, in getCastInstrCost()
2864 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, {22, 1, 1, 1 } }, in getCastInstrCost()
2865 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2867 { ISD::FP_TO_SINT, MVT::i32, MVT::f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2868 { ISD::FP_TO_SINT, MVT::i64, MVT::f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2869 { ISD::FP_TO_SINT, MVT::i32, MVT::f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2870 { ISD::FP_TO_SINT, MVT::i64, MVT::f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2871 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2872 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v2f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2873 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2874 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v2f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2875 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2876 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v2f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2878 { ISD::FP_TO_UINT, MVT::i32, MVT::f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2879 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2880 { ISD::FP_TO_UINT, MVT::i32, MVT::f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2881 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2882 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2883 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v2f64, { 2, 1, 1, 1 } }, in getCastInstrCost()
2884 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2885 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v2f64, { 1, 1, 1, 1 } }, in getCastInstrCost()
2886 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2887 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2894 { ISD::SINT_TO_FP, MVT::f32, MVT::i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2895 { ISD::SINT_TO_FP, MVT::f64, MVT::i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2896 { ISD::SINT_TO_FP, MVT::f32, MVT::i64, { 3, 1, 1, 1 } }, in getCastInstrCost()
2897 { ISD::SINT_TO_FP, MVT::f64, MVT::i64, { 3, 1, 1, 1 } }, in getCastInstrCost()
2898 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, { 3, 1, 1, 1 } }, in getCastInstrCost()
2899 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, { 4, 1, 1, 1 } }, in getCastInstrCost()
2900 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, { 3, 1, 1, 1 } }, in getCastInstrCost()
2901 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, { 4, 1, 1, 1 } }, in getCastInstrCost()
2902 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2903 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2904 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, { 8, 1, 1, 1 } }, in getCastInstrCost()
2905 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, { 8, 1, 1, 1 } }, in getCastInstrCost()
2907 { ISD::UINT_TO_FP, MVT::f32, MVT::i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2908 { ISD::UINT_TO_FP, MVT::f64, MVT::i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2909 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, { 8, 1, 1, 1 } }, in getCastInstrCost()
2910 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, { 9, 1, 1, 1 } }, in getCastInstrCost()
2911 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, { 4, 1, 1, 1 } }, in getCastInstrCost()
2912 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, { 4, 1, 1, 1 } }, in getCastInstrCost()
2913 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, { 4, 1, 1, 1 } }, in getCastInstrCost()
2914 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, { 4, 1, 1, 1 } }, in getCastInstrCost()
2915 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, { 7, 1, 1, 1 } }, in getCastInstrCost()
2916 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, { 7, 1, 1, 1 } }, in getCastInstrCost()
2917 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2918 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, {15, 1, 1, 1 } }, in getCastInstrCost()
2919 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, {18, 1, 1, 1 } }, in getCastInstrCost()
2921 { ISD::FP_TO_SINT, MVT::i32, MVT::f32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2922 { ISD::FP_TO_SINT, MVT::i64, MVT::f32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2923 { ISD::FP_TO_SINT, MVT::i32, MVT::f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2924 { ISD::FP_TO_SINT, MVT::i64, MVT::f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2925 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f32, { 6, 1, 1, 1 } }, in getCastInstrCost()
2926 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v2f64, { 6, 1, 1, 1 } }, in getCastInstrCost()
2927 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2928 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v2f64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2929 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2930 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v2f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2932 { ISD::FP_TO_UINT, MVT::i32, MVT::f32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2933 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, { 4, 1, 1, 1 } }, in getCastInstrCost()
2934 { ISD::FP_TO_UINT, MVT::i32, MVT::f64, { 4, 1, 1, 1 } }, in getCastInstrCost()
2935 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, {15, 1, 1, 1 } }, in getCastInstrCost()
2936 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f32, { 6, 1, 1, 1 } }, in getCastInstrCost()
2937 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v2f64, { 6, 1, 1, 1 } }, in getCastInstrCost()
2938 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2939 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v2f64, { 5, 1, 1, 1 } }, in getCastInstrCost()
2940 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, { 8, 1, 1, 1 } }, in getCastInstrCost()
2941 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, { 8, 1, 1, 1 } }, in getCastInstrCost()
2943 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v16i8, { 4, 1, 1, 1 } }, in getCastInstrCost()
2944 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v16i8, { 4, 1, 1, 1 } }, in getCastInstrCost()
2945 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2946 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v16i8, { 3, 1, 1, 1 } }, in getCastInstrCost()
2947 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v16i8, { 1, 1, 1, 1 } }, in getCastInstrCost()
2948 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v16i8, { 2, 1, 1, 1 } }, in getCastInstrCost()
2949 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2950 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v8i16, { 3, 1, 1, 1 } }, in getCastInstrCost()
2951 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v8i16, { 1, 1, 1, 1 } }, in getCastInstrCost()
2952 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v8i16, { 2, 1, 1, 1 } }, in getCastInstrCost()
2953 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v4i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2954 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v4i32, { 2, 1, 1, 1 } }, in getCastInstrCost()
2957 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, { 1, 1, 1, 1 } }, // PSHUFD in getCastInstrCost()
2958 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, { 2, 1, 1, 1 } }, // PUNPCKLWD+DQ in getCastInstrCost()
2959 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, { 3, 1, 1, 1 } }, // PUNPCKLBW+WD+PSHUFD in getCastInstrCost()
2960 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, { 1, 1, 1, 1 } }, // PUNPCKLWD in getCastInstrCost()
2961 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, { 2, 1, 1, 1 } }, // PUNPCKLBW+WD in getCastInstrCost()
2962 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, { 1, 1, 1, 1 } }, // PUNPCKLBW in getCastInstrCost()
2964 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i16, { 2, 1, 1, 1 } }, // PAND+PACKUSWB in getCastInstrCost()
2965 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, { 3, 1, 1, 1 } }, in getCastInstrCost()
2966 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, { 3, 1, 1, 1 } }, // PAND+2*PACKUSWB in getCastInstrCost()
2967 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, { 7, 1, 1, 1 } }, in getCastInstrCost()
2968 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i32, { 1, 1, 1, 1 } }, in getCastInstrCost()
2969 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, { 3, 1, 1, 1 } }, in getCastInstrCost()
2970 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, { 5, 1, 1, 1 } }, in getCastInstrCost()
2971 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, {10, 1, 1, 1 } }, in getCastInstrCost()
2972 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, { 4, 1, 1, 1 } }, // PAND+3*PACKUSWB in getCastInstrCost()
2973 { ISD::TRUNCATE, MVT::v8i16, MVT::v2i64, { 2, 1, 1, 1 } }, // PSHUFD+PSHUFLW in getCastInstrCost()
2974 { ISD::TRUNCATE, MVT::v4i32, MVT::v2i64, { 1, 1, 1, 1 } }, // PSHUFD in getCastInstrCost()
2989 AVX512BWConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
2995 AVX512DQConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
3001 AVX512FConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
3008 AVX512BWVLConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
3014 AVX512DQVLConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
3019 if (const auto *Entry = ConvertCostTableLookup(AVX512VLConversionTbl, ISD, in getCastInstrCost()
3025 if (const auto *Entry = ConvertCostTableLookup(AVX2ConversionTbl, ISD, in getCastInstrCost()
3032 if (const auto *Entry = ConvertCostTableLookup(AVXConversionTbl, ISD, in getCastInstrCost()
3039 if (const auto *Entry = ConvertCostTableLookup(SSE41ConversionTbl, ISD, in getCastInstrCost()
3046 if (const auto *Entry = ConvertCostTableLookup(SSE2ConversionTbl, ISD, in getCastInstrCost()
3058 if (ISD == ISD::TRUNCATE && LTSrc.second == LTDest.second) in getCastInstrCost()
3064 AVX512BWConversionTbl, ISD, LTDest.second, LTSrc.second)) in getCastInstrCost()
3070 AVX512DQConversionTbl, ISD, LTDest.second, LTSrc.second)) in getCastInstrCost()
3076 AVX512FConversionTbl, ISD, LTDest.second, LTSrc.second)) in getCastInstrCost()
3082 if (const auto *Entry = ConvertCostTableLookup(AVX512BWVLConversionTbl, ISD, in getCastInstrCost()
3088 if (const auto *Entry = ConvertCostTableLookup(AVX512DQVLConversionTbl, ISD, in getCastInstrCost()
3094 if (const auto *Entry = ConvertCostTableLookup(AVX512VLConversionTbl, ISD, in getCastInstrCost()
3100 if (const auto *Entry = ConvertCostTableLookup(AVX2ConversionTbl, ISD, in getCastInstrCost()
3106 if (const auto *Entry = ConvertCostTableLookup(AVXConversionTbl, ISD, in getCastInstrCost()
3112 if (const auto *Entry = ConvertCostTableLookup(SSE41ConversionTbl, ISD, in getCastInstrCost()
3118 if (const auto *Entry = ConvertCostTableLookup(SSE2ConversionTbl, ISD, in getCastInstrCost()
3125 if ((ISD == ISD::SINT_TO_FP || ISD == ISD::UINT_TO_FP) && in getCastInstrCost()
3129 (ISD == ISD::SINT_TO_FP) ? Instruction::SExt : Instruction::ZExt; in getCastInstrCost()
3142 if ((ISD == ISD::FP_TO_SINT || ISD == ISD::FP_TO_UINT) && in getCastInstrCost()
3176 int ISD = TLI->InstructionOpcodeToISD(Opcode); in getCmpSelInstrCost() local
3177 assert(ISD && "Invalid opcode"); in getCmpSelInstrCost()
3252 { ISD::SETCC, MVT::v2i64, { 2, 5, 1, 2 } }, in getCmpSelInstrCost()
3254 { ISD::SELECT, MVT::v2f64, { 4, 4, 1, 3 } }, // vblendvpd in getCmpSelInstrCost()
3255 { ISD::SELECT, MVT::v4f32, { 4, 4, 1, 3 } }, // vblendvps in getCmpSelInstrCost()
3256 { ISD::SELECT, MVT::v2i64, { 4, 4, 1, 3 } }, // pblendvb in getCmpSelInstrCost()
3257 { ISD::SELECT, MVT::v8i32, { 4, 4, 1, 3 } }, // pblendvb in getCmpSelInstrCost()
3258 { ISD::SELECT, MVT::v8i16, { 4, 4, 1, 3 } }, // pblendvb in getCmpSelInstrCost()
3259 { ISD::SELECT, MVT::v16i8, { 4, 4, 1, 3 } }, // pblendvb in getCmpSelInstrCost()
3263 { ISD::SETCC, MVT::v32i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3264 { ISD::SETCC, MVT::v16i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3265 { ISD::SETCC, MVT::v64i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3266 { ISD::SETCC, MVT::v32i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3268 { ISD::SELECT, MVT::v32i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3269 { ISD::SELECT, MVT::v64i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3273 { ISD::SETCC, MVT::v8f64, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3274 { ISD::SETCC, MVT::v4f64, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3275 { ISD::SETCC, MVT::v16f32, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3276 { ISD::SETCC, MVT::v8f32, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3278 { ISD::SETCC, MVT::v8i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3279 { ISD::SETCC, MVT::v4i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3280 { ISD::SETCC, MVT::v2i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3281 { ISD::SETCC, MVT::v16i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3282 { ISD::SETCC, MVT::v8i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3283 { ISD::SETCC, MVT::v32i16, { 3, 7, 5, 5 } }, in getCmpSelInstrCost()
3284 { ISD::SETCC, MVT::v64i8, { 3, 7, 5, 5 } }, in getCmpSelInstrCost()
3286 { ISD::SELECT, MVT::v8i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3287 { ISD::SELECT, MVT::v4i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3288 { ISD::SELECT, MVT::v2i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3289 { ISD::SELECT, MVT::v16i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3290 { ISD::SELECT, MVT::v8i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3291 { ISD::SELECT, MVT::v4i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3292 { ISD::SELECT, MVT::v8f64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3293 { ISD::SELECT, MVT::v4f64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3294 { ISD::SELECT, MVT::v2f64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3295 { ISD::SELECT, MVT::f64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3296 { ISD::SELECT, MVT::v16f32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3297 { ISD::SELECT, MVT::v8f32 , { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3298 { ISD::SELECT, MVT::v4f32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3299 { ISD::SELECT, MVT::f32 , { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3301 { ISD::SELECT, MVT::v32i16, { 2, 2, 4, 4 } }, in getCmpSelInstrCost()
3302 { ISD::SELECT, MVT::v16i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3303 { ISD::SELECT, MVT::v8i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3304 { ISD::SELECT, MVT::v64i8, { 2, 2, 4, 4 } }, in getCmpSelInstrCost()
3305 { ISD::SELECT, MVT::v32i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3306 { ISD::SELECT, MVT::v16i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3310 { ISD::SETCC, MVT::v4f64, { 1, 4, 1, 2 } }, in getCmpSelInstrCost()
3311 { ISD::SETCC, MVT::v2f64, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3312 { ISD::SETCC, MVT::f64, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3313 { ISD::SETCC, MVT::v8f32, { 1, 4, 1, 2 } }, in getCmpSelInstrCost()
3314 { ISD::SETCC, MVT::v4f32, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3315 { ISD::SETCC, MVT::f32, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3317 { ISD::SETCC, MVT::v4i64, { 1, 1, 1, 2 } }, in getCmpSelInstrCost()
3318 { ISD::SETCC, MVT::v8i32, { 1, 1, 1, 2 } }, in getCmpSelInstrCost()
3319 { ISD::SETCC, MVT::v16i16, { 1, 1, 1, 2 } }, in getCmpSelInstrCost()
3320 { ISD::SETCC, MVT::v32i8, { 1, 1, 1, 2 } }, in getCmpSelInstrCost()
3322 { ISD::SELECT, MVT::v4f64, { 2, 2, 1, 2 } }, // vblendvpd in getCmpSelInstrCost()
3323 { ISD::SELECT, MVT::v8f32, { 2, 2, 1, 2 } }, // vblendvps in getCmpSelInstrCost()
3324 { ISD::SELECT, MVT::v4i64, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3325 { ISD::SELECT, MVT::v8i32, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3326 { ISD::SELECT, MVT::v16i16, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3327 { ISD::SELECT, MVT::v32i8, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3331 { ISD::SETCC, MVT::v4i64, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3332 { ISD::SETCC, MVT::v2i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3336 { ISD::SETCC, MVT::v4f64, { 2, 3, 1, 2 } }, in getCmpSelInstrCost()
3337 { ISD::SETCC, MVT::v2f64, { 1, 3, 1, 1 } }, in getCmpSelInstrCost()
3338 { ISD::SETCC, MVT::f64, { 1, 3, 1, 1 } }, in getCmpSelInstrCost()
3339 { ISD::SETCC, MVT::v8f32, { 2, 3, 1, 2 } }, in getCmpSelInstrCost()
3340 { ISD::SETCC, MVT::v4f32, { 1, 3, 1, 1 } }, in getCmpSelInstrCost()
3341 { ISD::SETCC, MVT::f32, { 1, 3, 1, 1 } }, in getCmpSelInstrCost()
3344 { ISD::SETCC, MVT::v4i64, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3345 { ISD::SETCC, MVT::v8i32, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3346 { ISD::SETCC, MVT::v16i16, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3347 { ISD::SETCC, MVT::v32i8, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3349 { ISD::SELECT, MVT::v4f64, { 3, 3, 1, 2 } }, // vblendvpd in getCmpSelInstrCost()
3350 { ISD::SELECT, MVT::v8f32, { 3, 3, 1, 2 } }, // vblendvps in getCmpSelInstrCost()
3351 { ISD::SELECT, MVT::v4i64, { 3, 3, 1, 2 } }, // vblendvpd in getCmpSelInstrCost()
3352 { ISD::SELECT, MVT::v8i32, { 3, 3, 1, 2 } }, // vblendvps in getCmpSelInstrCost()
3353 { ISD::SELECT, MVT::v16i16, { 3, 3, 3, 3 } }, // vandps + vandnps + vorps in getCmpSelInstrCost()
3354 { ISD::SELECT, MVT::v32i8, { 3, 3, 3, 3 } }, // vandps + vandnps + vorps in getCmpSelInstrCost()
3358 { ISD::SETCC, MVT::v2i64, { 1, 2, 1, 2 } }, in getCmpSelInstrCost()
3362 { ISD::SETCC, MVT::v2f64, { 1, 5, 1, 1 } }, in getCmpSelInstrCost()
3363 { ISD::SETCC, MVT::v4f32, { 1, 5, 1, 1 } }, in getCmpSelInstrCost()
3365 { ISD::SELECT, MVT::v2f64, { 2, 2, 1, 2 } }, // blendvpd in getCmpSelInstrCost()
3366 { ISD::SELECT, MVT::f64, { 2, 2, 1, 2 } }, // blendvpd in getCmpSelInstrCost()
3367 { ISD::SELECT, MVT::v4f32, { 2, 2, 1, 2 } }, // blendvps in getCmpSelInstrCost()
3368 { ISD::SELECT, MVT::f32 , { 2, 2, 1, 2 } }, // blendvps in getCmpSelInstrCost()
3369 { ISD::SELECT, MVT::v2i64, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3370 { ISD::SELECT, MVT::v4i32, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3371 { ISD::SELECT, MVT::v8i16, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3372 { ISD::SELECT, MVT::v16i8, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3376 { ISD::SETCC, MVT::v2f64, { 2, 5, 1, 1 } }, in getCmpSelInstrCost()
3377 { ISD::SETCC, MVT::f64, { 1, 5, 1, 1 } }, in getCmpSelInstrCost()
3379 { ISD::SETCC, MVT::v2i64, { 5, 4, 5, 5 } }, // pcmpeqd/pcmpgtd expansion in getCmpSelInstrCost()
3380 { ISD::SETCC, MVT::v4i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3381 { ISD::SETCC, MVT::v8i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3382 { ISD::SETCC, MVT::v16i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3384 { ISD::SELECT, MVT::v2f64, { 2, 2, 3, 3 } }, // andpd + andnpd + orpd in getCmpSelInstrCost()
3385 { ISD::SELECT, MVT::f64, { 2, 2, 3, 3 } }, // andpd + andnpd + orpd in getCmpSelInstrCost()
3386 { ISD::SELECT, MVT::v2i64, { 2, 2, 3, 3 } }, // pand + pandn + por in getCmpSelInstrCost()
3387 { ISD::SELECT, MVT::v4i32, { 2, 2, 3, 3 } }, // pand + pandn + por in getCmpSelInstrCost()
3388 { ISD::SELECT, MVT::v8i16, { 2, 2, 3, 3 } }, // pand + pandn + por in getCmpSelInstrCost()
3389 { ISD::SELECT, MVT::v16i8, { 2, 2, 3, 3 } }, // pand + pandn + por in getCmpSelInstrCost()
3393 { ISD::SETCC, MVT::v4f32, { 2, 5, 1, 1 } }, in getCmpSelInstrCost()
3394 { ISD::SETCC, MVT::f32, { 1, 5, 1, 1 } }, in getCmpSelInstrCost()
3396 { ISD::SELECT, MVT::v4f32, { 2, 2, 3, 3 } }, // andps + andnps + orps in getCmpSelInstrCost()
3397 { ISD::SELECT, MVT::f32, { 2, 2, 3, 3 } }, // andps + andnps + orps in getCmpSelInstrCost()
3401 if (const auto *Entry = CostTableLookup(SLMCostTbl, ISD, MTy)) in getCmpSelInstrCost()
3406 if (const auto *Entry = CostTableLookup(AVX512BWCostTbl, ISD, MTy)) in getCmpSelInstrCost()
3411 if (const auto *Entry = CostTableLookup(AVX512CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3416 if (const auto *Entry = CostTableLookup(AVX2CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3421 if (const auto *Entry = CostTableLookup(XOPCostTbl, ISD, MTy)) in getCmpSelInstrCost()
3426 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3431 if (const auto *Entry = CostTableLookup(SSE42CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3436 if (const auto *Entry = CostTableLookup(SSE41CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3441 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3446 if (const auto *Entry = CostTableLookup(SSE1CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3473 { ISD::FSHL, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3474 { ISD::FSHL, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3475 { ISD::FSHL, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3476 { ISD::FSHL, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3477 { ISD::FSHL, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3478 { ISD::FSHL, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3479 { ISD::FSHL, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3480 { ISD::FSHL, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3481 { ISD::FSHL, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3482 { ISD::ROTL, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3483 { ISD::ROTL, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3484 { ISD::ROTL, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3485 { ISD::ROTR, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3486 { ISD::ROTR, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3487 { ISD::ROTR, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3493 { ISD::CTPOP, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3494 { ISD::CTPOP, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3495 { ISD::CTPOP, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3496 { ISD::CTPOP, MVT::v32i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3497 { ISD::CTPOP, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3498 { ISD::CTPOP, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3501 { ISD::CTPOP, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3502 { ISD::CTPOP, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3503 { ISD::CTPOP, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3504 { ISD::CTPOP, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3505 { ISD::CTPOP, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3506 { ISD::CTPOP, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3509 { ISD::CTLZ, MVT::v8i64, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3510 { ISD::CTLZ, MVT::v16i32, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3511 { ISD::CTLZ, MVT::v32i16, { 18, 27, 23, 27 } }, in getIntrinsicInstrCost()
3512 { ISD::CTLZ, MVT::v64i8, { 3, 16, 9, 11 } }, in getIntrinsicInstrCost()
3513 { ISD::CTLZ, MVT::v4i64, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3514 { ISD::CTLZ, MVT::v8i32, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3515 { ISD::CTLZ, MVT::v16i16, { 8, 19, 11, 13 } }, in getIntrinsicInstrCost()
3516 { ISD::CTLZ, MVT::v32i8, { 2, 11, 9, 10 } }, in getIntrinsicInstrCost()
3517 { ISD::CTLZ, MVT::v2i64, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3518 { ISD::CTLZ, MVT::v4i32, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3519 { ISD::CTLZ, MVT::v8i16, { 3, 15, 4, 6 } }, in getIntrinsicInstrCost()
3520 { ISD::CTLZ, MVT::v16i8, { 2, 10, 9, 10 } }, in getIntrinsicInstrCost()
3522 { ISD::CTTZ, MVT::v8i64, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3523 { ISD::CTTZ, MVT::v16i32, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3524 { ISD::CTTZ, MVT::v4i64, { 1, 8, 6, 6 } }, in getIntrinsicInstrCost()
3525 { ISD::CTTZ, MVT::v8i32, { 1, 8, 6, 6 } }, in getIntrinsicInstrCost()
3526 { ISD::CTTZ, MVT::v2i64, { 1, 8, 6, 6 } }, in getIntrinsicInstrCost()
3527 { ISD::CTTZ, MVT::v4i32, { 1, 8, 6, 6 } }, in getIntrinsicInstrCost()
3530 { ISD::ABS, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3531 { ISD::ABS, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3532 { ISD::BITREVERSE, MVT::v2i64, { 3, 10, 10, 11 } }, in getIntrinsicInstrCost()
3533 { ISD::BITREVERSE, MVT::v4i64, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3534 { ISD::BITREVERSE, MVT::v8i64, { 3, 12, 10, 14 } }, in getIntrinsicInstrCost()
3535 { ISD::BITREVERSE, MVT::v4i32, { 3, 10, 10, 11 } }, in getIntrinsicInstrCost()
3536 { ISD::BITREVERSE, MVT::v8i32, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3537 { ISD::BITREVERSE, MVT::v16i32, { 3, 12, 10, 14 } }, in getIntrinsicInstrCost()
3538 { ISD::BITREVERSE, MVT::v8i16, { 3, 10, 10, 11 } }, in getIntrinsicInstrCost()
3539 { ISD::BITREVERSE, MVT::v16i16, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3540 { ISD::BITREVERSE, MVT::v32i16, { 3, 12, 10, 14 } }, in getIntrinsicInstrCost()
3541 { ISD::BITREVERSE, MVT::v16i8, { 2, 5, 9, 9 } }, in getIntrinsicInstrCost()
3542 { ISD::BITREVERSE, MVT::v32i8, { 2, 5, 9, 9 } }, in getIntrinsicInstrCost()
3543 { ISD::BITREVERSE, MVT::v64i8, { 2, 5, 9, 12 } }, in getIntrinsicInstrCost()
3544 { ISD::BSWAP, MVT::v2i64, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3545 { ISD::BSWAP, MVT::v4i64, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3546 { ISD::BSWAP, MVT::v8i64, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3547 { ISD::BSWAP, MVT::v4i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3548 { ISD::BSWAP, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3549 { ISD::BSWAP, MVT::v16i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3550 { ISD::BSWAP, MVT::v8i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3551 { ISD::BSWAP, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3552 { ISD::BSWAP, MVT::v32i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3553 { ISD::CTLZ, MVT::v8i64, { 8, 22, 23, 23 } }, in getIntrinsicInstrCost()
3554 { ISD::CTLZ, MVT::v16i32, { 8, 23, 25, 25 } }, in getIntrinsicInstrCost()
3555 { ISD::CTLZ, MVT::v32i16, { 4, 15, 15, 16 } }, in getIntrinsicInstrCost()
3556 { ISD::CTLZ, MVT::v64i8, { 3, 12, 10, 9 } }, in getIntrinsicInstrCost()
3557 { ISD::CTPOP, MVT::v2i64, { 3, 7, 10, 10 } }, in getIntrinsicInstrCost()
3558 { ISD::CTPOP, MVT::v4i64, { 3, 7, 10, 10 } }, in getIntrinsicInstrCost()
3559 { ISD::CTPOP, MVT::v8i64, { 3, 8, 10, 12 } }, in getIntrinsicInstrCost()
3560 { ISD::CTPOP, MVT::v4i32, { 7, 11, 14, 14 } }, in getIntrinsicInstrCost()
3561 { ISD::CTPOP, MVT::v8i32, { 7, 11, 14, 14 } }, in getIntrinsicInstrCost()
3562 { ISD::CTPOP, MVT::v16i32, { 7, 12, 14, 16 } }, in getIntrinsicInstrCost()
3563 { ISD::CTPOP, MVT::v8i16, { 2, 7, 11, 11 } }, in getIntrinsicInstrCost()
3564 { ISD::CTPOP, MVT::v16i16, { 2, 7, 11, 11 } }, in getIntrinsicInstrCost()
3565 { ISD::CTPOP, MVT::v32i16, { 3, 7, 11, 13 } }, in getIntrinsicInstrCost()
3566 { ISD::CTPOP, MVT::v16i8, { 2, 4, 8, 8 } }, in getIntrinsicInstrCost()
3567 { ISD::CTPOP, MVT::v32i8, { 2, 4, 8, 8 } }, in getIntrinsicInstrCost()
3568 { ISD::CTPOP, MVT::v64i8, { 2, 5, 8, 10 } }, in getIntrinsicInstrCost()
3569 { ISD::CTTZ, MVT::v8i16, { 3, 9, 14, 14 } }, in getIntrinsicInstrCost()
3570 { ISD::CTTZ, MVT::v16i16, { 3, 9, 14, 14 } }, in getIntrinsicInstrCost()
3571 { ISD::CTTZ, MVT::v32i16, { 3, 10, 14, 16 } }, in getIntrinsicInstrCost()
3572 { ISD::CTTZ, MVT::v16i8, { 2, 6, 11, 11 } }, in getIntrinsicInstrCost()
3573 { ISD::CTTZ, MVT::v32i8, { 2, 6, 11, 11 } }, in getIntrinsicInstrCost()
3574 { ISD::CTTZ, MVT::v64i8, { 3, 7, 11, 13 } }, in getIntrinsicInstrCost()
3575 { ISD::ROTL, MVT::v32i16, { 2, 8, 6, 8 } }, in getIntrinsicInstrCost()
3576 { ISD::ROTL, MVT::v16i16, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3577 { ISD::ROTL, MVT::v8i16, { 2, 7, 6, 7 } }, in getIntrinsicInstrCost()
3578 { ISD::ROTL, MVT::v64i8, { 5, 6, 11, 12 } }, in getIntrinsicInstrCost()
3579 { ISD::ROTL, MVT::v32i8, { 5, 15, 7, 10 } }, in getIntrinsicInstrCost()
3580 { ISD::ROTL, MVT::v16i8, { 5, 15, 7, 10 } }, in getIntrinsicInstrCost()
3581 { ISD::ROTR, MVT::v32i16, { 2, 8, 6, 8 } }, in getIntrinsicInstrCost()
3582 { ISD::ROTR, MVT::v16i16, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3583 { ISD::ROTR, MVT::v8i16, { 2, 7, 6, 7 } }, in getIntrinsicInstrCost()
3584 { ISD::ROTR, MVT::v64i8, { 5, 6, 12, 14 } }, in getIntrinsicInstrCost()
3585 { ISD::ROTR, MVT::v32i8, { 5, 14, 6, 9 } }, in getIntrinsicInstrCost()
3586 { ISD::ROTR, MVT::v16i8, { 5, 14, 6, 9 } }, in getIntrinsicInstrCost()
3593 { ISD::SADDSAT, MVT::v32i16, { 1 } }, in getIntrinsicInstrCost()
3594 { ISD::SADDSAT, MVT::v64i8, { 1 } }, in getIntrinsicInstrCost()
3595 { ISD::SMAX, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3596 { ISD::SMAX, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3597 { ISD::SMIN, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3598 { ISD::SMIN, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3599 { ISD::SSUBSAT, MVT::v32i16, { 1 } }, in getIntrinsicInstrCost()
3600 { ISD::SSUBSAT, MVT::v64i8, { 1 } }, in getIntrinsicInstrCost()
3601 { ISD::UADDSAT, MVT::v32i16, { 1 } }, in getIntrinsicInstrCost()
3602 { ISD::UADDSAT, MVT::v64i8, { 1 } }, in getIntrinsicInstrCost()
3603 { ISD::UMAX, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3604 { ISD::UMAX, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3605 { ISD::UMIN, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3606 { ISD::UMIN, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3607 { ISD::USUBSAT, MVT::v32i16, { 1 } }, in getIntrinsicInstrCost()
3608 { ISD::USUBSAT, MVT::v64i8, { 1 } }, in getIntrinsicInstrCost()
3611 { ISD::ABS, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3612 { ISD::ABS, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3613 { ISD::ABS, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3614 { ISD::ABS, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3615 { ISD::ABS, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3616 { ISD::ABS, MVT::v32i16, { 2, 7, 4, 4 } }, in getIntrinsicInstrCost()
3617 { ISD::ABS, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3618 { ISD::ABS, MVT::v64i8, { 2, 7, 4, 4 } }, in getIntrinsicInstrCost()
3619 { ISD::ABS, MVT::v32i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3620 { ISD::BITREVERSE, MVT::v8i64, { 9, 13, 20, 20 } }, in getIntrinsicInstrCost()
3621 { ISD::BITREVERSE, MVT::v16i32, { 9, 13, 20, 20 } }, in getIntrinsicInstrCost()
3622 { ISD::BITREVERSE, MVT::v32i16, { 9, 13, 20, 20 } }, in getIntrinsicInstrCost()
3623 { ISD::BITREVERSE, MVT::v64i8, { 6, 11, 17, 17 } }, in getIntrinsicInstrCost()
3624 { ISD::BSWAP, MVT::v8i64, { 4, 7, 5, 5 } }, in getIntrinsicInstrCost()
3625 { ISD::BSWAP, MVT::v16i32, { 4, 7, 5, 5 } }, in getIntrinsicInstrCost()
3626 { ISD::BSWAP, MVT::v32i16, { 4, 7, 5, 5 } }, in getIntrinsicInstrCost()
3627 { ISD::CTLZ, MVT::v8i64, { 10, 28, 32, 32 } }, in getIntrinsicInstrCost()
3628 { ISD::CTLZ, MVT::v16i32, { 12, 30, 38, 38 } }, in getIntrinsicInstrCost()
3629 { ISD::CTLZ, MVT::v32i16, { 8, 15, 29, 29 } }, in getIntrinsicInstrCost()
3630 { ISD::CTLZ, MVT::v64i8, { 6, 11, 19, 19 } }, in getIntrinsicInstrCost()
3631 { ISD::CTPOP, MVT::v8i64, { 16, 16, 19, 19 } }, in getIntrinsicInstrCost()
3632 { ISD::CTPOP, MVT::v16i32, { 24, 19, 27, 27 } }, in getIntrinsicInstrCost()
3633 { ISD::CTPOP, MVT::v32i16, { 18, 15, 22, 22 } }, in getIntrinsicInstrCost()
3634 { ISD::CTPOP, MVT::v64i8, { 12, 11, 16, 16 } }, in getIntrinsicInstrCost()
3635 { ISD::CTTZ, MVT::v8i64, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3636 { ISD::CTTZ, MVT::v16i32, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3637 { ISD::CTTZ, MVT::v32i16, { 7, 17, 27, 27 } }, in getIntrinsicInstrCost()
3638 { ISD::CTTZ, MVT::v64i8, { 6, 13, 21, 21 } }, in getIntrinsicInstrCost()
3639 { ISD::ROTL, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3640 { ISD::ROTL, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3641 { ISD::ROTL, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3642 { ISD::ROTL, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3643 { ISD::ROTL, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3644 { ISD::ROTL, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3645 { ISD::ROTR, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3646 { ISD::ROTR, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3647 { ISD::ROTR, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3648 { ISD::ROTR, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3649 { ISD::ROTR, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3650 { ISD::ROTR, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3657 { ISD::SMAX, MVT::v8i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3658 { ISD::SMAX, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3659 { ISD::SMAX, MVT::v32i16, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3660 { ISD::SMAX, MVT::v64i8, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3661 { ISD::SMAX, MVT::v4i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3662 { ISD::SMAX, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3663 { ISD::SMIN, MVT::v8i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3664 { ISD::SMIN, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3665 { ISD::SMIN, MVT::v32i16, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3666 { ISD::SMIN, MVT::v64i8, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3667 { ISD::SMIN, MVT::v4i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3668 { ISD::SMIN, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3669 { ISD::UMAX, MVT::v8i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3670 { ISD::UMAX, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3671 { ISD::UMAX, MVT::v32i16, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3672 { ISD::UMAX, MVT::v64i8, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3673 { ISD::UMAX, MVT::v4i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3674 { ISD::UMAX, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3675 { ISD::UMIN, MVT::v8i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3676 { ISD::UMIN, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3677 { ISD::UMIN, MVT::v32i16, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3678 { ISD::UMIN, MVT::v64i8, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3679 { ISD::UMIN, MVT::v4i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3680 { ISD::UMIN, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3681 { ISD::USUBSAT, MVT::v16i32, { 2 } }, // pmaxud + psubd in getIntrinsicInstrCost()
3682 { ISD::USUBSAT, MVT::v2i64, { 2 } }, // pmaxuq + psubq in getIntrinsicInstrCost()
3683 { ISD::USUBSAT, MVT::v4i64, { 2 } }, // pmaxuq + psubq in getIntrinsicInstrCost()
3684 { ISD::USUBSAT, MVT::v8i64, { 2 } }, // pmaxuq + psubq in getIntrinsicInstrCost()
3685 { ISD::UADDSAT, MVT::v16i32, { 3 } }, // not + pminud + paddd in getIntrinsicInstrCost()
3686 { ISD::UADDSAT, MVT::v2i64, { 3 } }, // not + pminuq + paddq in getIntrinsicInstrCost()
3687 { ISD::UADDSAT, MVT::v4i64, { 3 } }, // not + pminuq + paddq in getIntrinsicInstrCost()
3688 { ISD::UADDSAT, MVT::v8i64, { 3 } }, // not + pminuq + paddq in getIntrinsicInstrCost()
3689 { ISD::SADDSAT, MVT::v32i16, { 2 } }, in getIntrinsicInstrCost()
3690 { ISD::SADDSAT, MVT::v64i8, { 2 } }, in getIntrinsicInstrCost()
3691 { ISD::SSUBSAT, MVT::v32i16, { 2 } }, in getIntrinsicInstrCost()
3692 { ISD::SSUBSAT, MVT::v64i8, { 2 } }, in getIntrinsicInstrCost()
3693 { ISD::UADDSAT, MVT::v32i16, { 2 } }, in getIntrinsicInstrCost()
3694 { ISD::UADDSAT, MVT::v64i8, { 2 } }, in getIntrinsicInstrCost()
3695 { ISD::USUBSAT, MVT::v32i16, { 2 } }, in getIntrinsicInstrCost()
3696 { ISD::USUBSAT, MVT::v64i8, { 2 } }, in getIntrinsicInstrCost()
3697 { ISD::FMAXNUM, MVT::f32, { 2, 2, 3, 3 } }, in getIntrinsicInstrCost()
3698 { ISD::FMAXNUM, MVT::v4f32, { 1, 1, 3, 3 } }, in getIntrinsicInstrCost()
3699 { ISD::FMAXNUM, MVT::v8f32, { 2, 2, 3, 3 } }, in getIntrinsicInstrCost()
3700 { ISD::FMAXNUM, MVT::v16f32, { 4, 4, 3, 3 } }, in getIntrinsicInstrCost()
3701 { ISD::FMAXNUM, MVT::f64, { 2, 2, 3, 3 } }, in getIntrinsicInstrCost()
3702 { ISD::FMAXNUM, MVT::v2f64, { 1, 1, 3, 3 } }, in getIntrinsicInstrCost()
3703 { ISD::FMAXNUM, MVT::v4f64, { 2, 2, 3, 3 } }, in getIntrinsicInstrCost()
3704 { ISD::FMAXNUM, MVT::v8f64, { 3, 3, 3, 3 } }, in getIntrinsicInstrCost()
3705 { ISD::FSQRT, MVT::f32, { 3, 12, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3706 { ISD::FSQRT, MVT::v4f32, { 3, 12, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3707 { ISD::FSQRT, MVT::v8f32, { 6, 12, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3708 { ISD::FSQRT, MVT::v16f32, { 12, 20, 1, 3 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3709 { ISD::FSQRT, MVT::f64, { 6, 18, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3710 { ISD::FSQRT, MVT::v2f64, { 6, 18, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3711 { ISD::FSQRT, MVT::v4f64, { 12, 18, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3712 { ISD::FSQRT, MVT::v8f64, { 24, 32, 1, 3 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3715 { ISD::BITREVERSE, MVT::v4i64, { 3, 6, 5, 6 } }, in getIntrinsicInstrCost()
3716 { ISD::BITREVERSE, MVT::v8i32, { 3, 6, 5, 6 } }, in getIntrinsicInstrCost()
3717 { ISD::BITREVERSE, MVT::v16i16, { 3, 6, 5, 6 } }, in getIntrinsicInstrCost()
3718 { ISD::BITREVERSE, MVT::v32i8, { 3, 6, 5, 6 } }, in getIntrinsicInstrCost()
3719 { ISD::BITREVERSE, MVT::v2i64, { 2, 7, 1, 1 } }, in getIntrinsicInstrCost()
3720 { ISD::BITREVERSE, MVT::v4i32, { 2, 7, 1, 1 } }, in getIntrinsicInstrCost()
3721 { ISD::BITREVERSE, MVT::v8i16, { 2, 7, 1, 1 } }, in getIntrinsicInstrCost()
3722 { ISD::BITREVERSE, MVT::v16i8, { 2, 7, 1, 1 } }, in getIntrinsicInstrCost()
3723 { ISD::BITREVERSE, MVT::i64, { 2, 2, 3, 4 } }, in getIntrinsicInstrCost()
3724 { ISD::BITREVERSE, MVT::i32, { 2, 2, 3, 4 } }, in getIntrinsicInstrCost()
3725 { ISD::BITREVERSE, MVT::i16, { 2, 2, 3, 4 } }, in getIntrinsicInstrCost()
3726 { ISD::BITREVERSE, MVT::i8, { 2, 2, 3, 4 } }, in getIntrinsicInstrCost()
3728 { ISD::ROTL, MVT::v4i64, { 4, 7, 5, 6 } }, in getIntrinsicInstrCost()
3729 { ISD::ROTL, MVT::v8i32, { 4, 7, 5, 6 } }, in getIntrinsicInstrCost()
3730 { ISD::ROTL, MVT::v16i16, { 4, 7, 5, 6 } }, in getIntrinsicInstrCost()
3731 { ISD::ROTL, MVT::v32i8, { 4, 7, 5, 6 } }, in getIntrinsicInstrCost()
3732 { ISD::ROTL, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3733 { ISD::ROTL, MVT::v4i32, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3734 { ISD::ROTL, MVT::v8i16, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3735 { ISD::ROTL, MVT::v16i8, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3736 { ISD::ROTR, MVT::v4i64, { 4, 7, 8, 9 } }, in getIntrinsicInstrCost()
3737 { ISD::ROTR, MVT::v8i32, { 4, 7, 8, 9 } }, in getIntrinsicInstrCost()
3738 { ISD::ROTR, MVT::v16i16, { 4, 7, 8, 9 } }, in getIntrinsicInstrCost()
3739 { ISD::ROTR, MVT::v32i8, { 4, 7, 8, 9 } }, in getIntrinsicInstrCost()
3740 { ISD::ROTR, MVT::v2i64, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
3741 { ISD::ROTR, MVT::v4i32, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
3742 { ISD::ROTR, MVT::v8i16, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
3743 { ISD::ROTR, MVT::v16i8, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
3754 { ISD::ABS, MVT::v2i64, { 2, 4, 3, 5 } }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getIntrinsicInstrCost()
3755 { ISD::ABS, MVT::v4i64, { 2, 4, 3, 5 } }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getIntrinsicInstrCost()
3756 { ISD::ABS, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3757 { ISD::ABS, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3758 { ISD::ABS, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3759 { ISD::ABS, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3760 { ISD::ABS, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3761 { ISD::ABS, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3762 { ISD::BITREVERSE, MVT::v2i64, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3763 { ISD::BITREVERSE, MVT::v4i64, { 5, 11, 10, 17 } }, in getIntrinsicInstrCost()
3764 { ISD::BITREVERSE, MVT::v4i32, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3765 { ISD::BITREVERSE, MVT::v8i32, { 5, 11, 10, 17 } }, in getIntrinsicInstrCost()
3766 { ISD::BITREVERSE, MVT::v8i16, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3767 { ISD::BITREVERSE, MVT::v16i16, { 5, 11, 10, 17 } }, in getIntrinsicInstrCost()
3768 { ISD::BITREVERSE, MVT::v16i8, { 3, 6, 9, 9 } }, in getIntrinsicInstrCost()
3769 { ISD::BITREVERSE, MVT::v32i8, { 4, 5, 9, 15 } }, in getIntrinsicInstrCost()
3770 { ISD::BSWAP, MVT::v2i64, { 1, 2, 1, 2 } }, in getIntrinsicInstrCost()
3771 { ISD::BSWAP, MVT::v4i64, { 1, 3, 1, 2 } }, in getIntrinsicInstrCost()
3772 { ISD::BSWAP, MVT::v4i32, { 1, 2, 1, 2 } }, in getIntrinsicInstrCost()
3773 { ISD::BSWAP, MVT::v8i32, { 1, 3, 1, 2 } }, in getIntrinsicInstrCost()
3774 { ISD::BSWAP, MVT::v8i16, { 1, 2, 1, 2 } }, in getIntrinsicInstrCost()
3775 { ISD::BSWAP, MVT::v16i16, { 1, 3, 1, 2 } }, in getIntrinsicInstrCost()
3776 { ISD::CTLZ, MVT::v2i64, { 7, 18, 24, 25 } }, in getIntrinsicInstrCost()
3777 { ISD::CTLZ, MVT::v4i64, { 14, 18, 24, 44 } }, in getIntrinsicInstrCost()
3778 { ISD::CTLZ, MVT::v4i32, { 5, 16, 19, 20 } }, in getIntrinsicInstrCost()
3779 { ISD::CTLZ, MVT::v8i32, { 10, 16, 19, 34 } }, in getIntrinsicInstrCost()
3780 { ISD::CTLZ, MVT::v8i16, { 4, 13, 14, 15 } }, in getIntrinsicInstrCost()
3781 { ISD::CTLZ, MVT::v16i16, { 6, 14, 14, 24 } }, in getIntrinsicInstrCost()
3782 { ISD::CTLZ, MVT::v16i8, { 3, 12, 9, 10 } }, in getIntrinsicInstrCost()
3783 { ISD::CTLZ, MVT::v32i8, { 4, 12, 9, 14 } }, in getIntrinsicInstrCost()
3784 { ISD::CTPOP, MVT::v2i64, { 3, 9, 10, 10 } }, in getIntrinsicInstrCost()
3785 { ISD::CTPOP, MVT::v4i64, { 4, 9, 10, 14 } }, in getIntrinsicInstrCost()
3786 { ISD::CTPOP, MVT::v4i32, { 7, 12, 14, 14 } }, in getIntrinsicInstrCost()
3787 { ISD::CTPOP, MVT::v8i32, { 7, 12, 14, 18 } }, in getIntrinsicInstrCost()
3788 { ISD::CTPOP, MVT::v8i16, { 3, 7, 11, 11 } }, in getIntrinsicInstrCost()
3789 { ISD::CTPOP, MVT::v16i16, { 6, 8, 11, 18 } }, in getIntrinsicInstrCost()
3790 { ISD::CTPOP, MVT::v16i8, { 2, 5, 8, 8 } }, in getIntrinsicInstrCost()
3791 { ISD::CTPOP, MVT::v32i8, { 3, 5, 8, 12 } }, in getIntrinsicInstrCost()
3792 { ISD::CTTZ, MVT::v2i64, { 4, 11, 13, 13 } }, in getIntrinsicInstrCost()
3793 { ISD::CTTZ, MVT::v4i64, { 5, 11, 13, 20 } }, in getIntrinsicInstrCost()
3794 { ISD::CTTZ, MVT::v4i32, { 7, 14, 17, 17 } }, in getIntrinsicInstrCost()
3795 { ISD::CTTZ, MVT::v8i32, { 7, 15, 17, 24 } }, in getIntrinsicInstrCost()
3796 { ISD::CTTZ, MVT::v8i16, { 4, 9, 14, 14 } }, in getIntrinsicInstrCost()
3797 { ISD::CTTZ, MVT::v16i16, { 6, 9, 14, 24 } }, in getIntrinsicInstrCost()
3798 { ISD::CTTZ, MVT::v16i8, { 3, 7, 11, 11 } }, in getIntrinsicInstrCost()
3799 { ISD::CTTZ, MVT::v32i8, { 5, 7, 11, 18 } }, in getIntrinsicInstrCost()
3800 { ISD::SADDSAT, MVT::v16i16, { 1 } }, in getIntrinsicInstrCost()
3801 { ISD::SADDSAT, MVT::v32i8, { 1 } }, in getIntrinsicInstrCost()
3802 { ISD::SMAX, MVT::v2i64, { 2, 7, 2, 3 } }, in getIntrinsicInstrCost()
3803 { ISD::SMAX, MVT::v4i64, { 2, 7, 2, 3 } }, in getIntrinsicInstrCost()
3804 { ISD::SMAX, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3805 { ISD::SMAX, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3806 { ISD::SMAX, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3807 { ISD::SMIN, MVT::v2i64, { 2, 7, 2, 3 } }, in getIntrinsicInstrCost()
3808 { ISD::SMIN, MVT::v4i64, { 2, 7, 2, 3 } }, in getIntrinsicInstrCost()
3809 { ISD::SMIN, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3810 { ISD::SMIN, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3811 { ISD::SMIN, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3812 { ISD::SSUBSAT, MVT::v16i16, { 1 } }, in getIntrinsicInstrCost()
3813 { ISD::SSUBSAT, MVT::v32i8, { 1 } }, in getIntrinsicInstrCost()
3814 { ISD::UADDSAT, MVT::v16i16, { 1 } }, in getIntrinsicInstrCost()
3815 { ISD::UADDSAT, MVT::v32i8, { 1 } }, in getIntrinsicInstrCost()
3816 { ISD::UADDSAT, MVT::v8i32, { 3 } }, // not + pminud + paddd in getIntrinsicInstrCost()
3817 { ISD::UMAX, MVT::v2i64, { 2, 8, 5, 6 } }, in getIntrinsicInstrCost()
3818 { ISD::UMAX, MVT::v4i64, { 2, 8, 5, 8 } }, in getIntrinsicInstrCost()
3819 { ISD::UMAX, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3820 { ISD::UMAX, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3821 { ISD::UMAX, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3822 { ISD::UMIN, MVT::v2i64, { 2, 8, 5, 6 } }, in getIntrinsicInstrCost()
3823 { ISD::UMIN, MVT::v4i64, { 2, 8, 5, 8 } }, in getIntrinsicInstrCost()
3824 { ISD::UMIN, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3825 { ISD::UMIN, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3826 { ISD::UMIN, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3827 { ISD::USUBSAT, MVT::v16i16, { 1 } }, in getIntrinsicInstrCost()
3828 { ISD::USUBSAT, MVT::v32i8, { 1 } }, in getIntrinsicInstrCost()
3829 { ISD::USUBSAT, MVT::v8i32, { 2 } }, // pmaxud + psubd in getIntrinsicInstrCost()
3830 { ISD::FMAXNUM, MVT::f32, { 2, 7, 3, 5 } }, // MAXSS + CMPUNORDSS + BLENDVPS in getIntrinsicInstrCost()
3831 { ISD::FMAXNUM, MVT::v4f32, { 2, 7, 3, 5 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3832 { ISD::FMAXNUM, MVT::v8f32, { 3, 7, 3, 6 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3833 { ISD::FMAXNUM, MVT::f64, { 2, 7, 3, 5 } }, // MAXSD + CMPUNORDSD + BLENDVPD in getIntrinsicInstrCost()
3834 { ISD::FMAXNUM, MVT::v2f64, { 2, 7, 3, 5 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3835 { ISD::FMAXNUM, MVT::v4f64, { 3, 7, 3, 6 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3836 { ISD::FSQRT, MVT::f32, { 7, 15, 1, 1 } }, // vsqrtss in getIntrinsicInstrCost()
3837 { ISD::FSQRT, MVT::v4f32, { 7, 15, 1, 1 } }, // vsqrtps in getIntrinsicInstrCost()
3838 { ISD::FSQRT, MVT::v8f32, { 14, 21, 1, 3 } }, // vsqrtps in getIntrinsicInstrCost()
3839 { ISD::FSQRT, MVT::f64, { 14, 21, 1, 1 } }, // vsqrtsd in getIntrinsicInstrCost()
3840 { ISD::FSQRT, MVT::v2f64, { 14, 21, 1, 1 } }, // vsqrtpd in getIntrinsicInstrCost()
3841 { ISD::FSQRT, MVT::v4f64, { 28, 35, 1, 3 } }, // vsqrtpd in getIntrinsicInstrCost()
3844 { ISD::ABS, MVT::v4i64, { 6, 8, 6, 12 } }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getIntrinsicInstrCost()
3845 { ISD::ABS, MVT::v8i32, { 3, 6, 4, 5 } }, in getIntrinsicInstrCost()
3846 { ISD::ABS, MVT::v16i16, { 3, 6, 4, 5 } }, in getIntrinsicInstrCost()
3847 { ISD::ABS, MVT::v32i8, { 3, 6, 4, 5 } }, in getIntrinsicInstrCost()
3848 { ISD::BITREVERSE, MVT::v4i64, { 17, 20, 20, 33 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3849 { ISD::BITREVERSE, MVT::v2i64, { 8, 13, 10, 16 } }, in getIntrinsicInstrCost()
3850 { ISD::BITREVERSE, MVT::v8i32, { 17, 20, 20, 33 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3851 { ISD::BITREVERSE, MVT::v4i32, { 8, 13, 10, 16 } }, in getIntrinsicInstrCost()
3852 { ISD::BITREVERSE, MVT::v16i16, { 17, 20, 20, 33 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3853 { ISD::BITREVERSE, MVT::v8i16, { 8, 13, 10, 16 } }, in getIntrinsicInstrCost()
3854 { ISD::BITREVERSE, MVT::v32i8, { 13, 15, 17, 26 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3855 { ISD::BITREVERSE, MVT::v16i8, { 7, 7, 9, 13 } }, in getIntrinsicInstrCost()
3856 { ISD::BSWAP, MVT::v4i64, { 5, 6, 5, 10 } }, in getIntrinsicInstrCost()
3857 { ISD::BSWAP, MVT::v2i64, { 2, 2, 1, 3 } }, in getIntrinsicInstrCost()
3858 { ISD::BSWAP, MVT::v8i32, { 5, 6, 5, 10 } }, in getIntrinsicInstrCost()
3859 { ISD::BSWAP, MVT::v4i32, { 2, 2, 1, 3 } }, in getIntrinsicInstrCost()
3860 { ISD::BSWAP, MVT::v16i16, { 5, 6, 5, 10 } }, in getIntrinsicInstrCost()
3861 { ISD::BSWAP, MVT::v8i16, { 2, 2, 1, 3 } }, in getIntrinsicInstrCost()
3862 { ISD::CTLZ, MVT::v4i64, { 29, 33, 49, 58 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3863 { ISD::CTLZ, MVT::v2i64, { 14, 24, 24, 28 } }, in getIntrinsicInstrCost()
3864 { ISD::CTLZ, MVT::v8i32, { 24, 28, 39, 48 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3865 { ISD::CTLZ, MVT::v4i32, { 12, 20, 19, 23 } }, in getIntrinsicInstrCost()
3866 { ISD::CTLZ, MVT::v16i16, { 19, 22, 29, 38 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3867 { ISD::CTLZ, MVT::v8i16, { 9, 16, 14, 18 } }, in getIntrinsicInstrCost()
3868 { ISD::CTLZ, MVT::v32i8, { 14, 15, 19, 28 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3869 { ISD::CTLZ, MVT::v16i8, { 7, 12, 9, 13 } }, in getIntrinsicInstrCost()
3870 { ISD::CTPOP, MVT::v4i64, { 14, 18, 19, 28 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3871 { ISD::CTPOP, MVT::v2i64, { 7, 14, 10, 14 } }, in getIntrinsicInstrCost()
3872 { ISD::CTPOP, MVT::v8i32, { 18, 24, 27, 36 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3873 { ISD::CTPOP, MVT::v4i32, { 9, 20, 14, 18 } }, in getIntrinsicInstrCost()
3874 { ISD::CTPOP, MVT::v16i16, { 16, 21, 22, 31 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3875 { ISD::CTPOP, MVT::v8i16, { 8, 18, 11, 15 } }, in getIntrinsicInstrCost()
3876 { ISD::CTPOP, MVT::v32i8, { 13, 15, 16, 25 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3877 { ISD::CTPOP, MVT::v16i8, { 6, 12, 8, 12 } }, in getIntrinsicInstrCost()
3878 { ISD::CTTZ, MVT::v4i64, { 17, 22, 24, 33 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3879 { ISD::CTTZ, MVT::v2i64, { 9, 19, 13, 17 } }, in getIntrinsicInstrCost()
3880 { ISD::CTTZ, MVT::v8i32, { 21, 27, 32, 41 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3881 { ISD::CTTZ, MVT::v4i32, { 11, 24, 17, 21 } }, in getIntrinsicInstrCost()
3882 { ISD::CTTZ, MVT::v16i16, { 18, 24, 27, 36 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3883 { ISD::CTTZ, MVT::v8i16, { 9, 21, 14, 18 } }, in getIntrinsicInstrCost()
3884 { ISD::CTTZ, MVT::v32i8, { 15, 18, 21, 30 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3885 { ISD::CTTZ, MVT::v16i8, { 8, 16, 11, 15 } }, in getIntrinsicInstrCost()
3886 { ISD::SADDSAT, MVT::v16i16, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3887 { ISD::SADDSAT, MVT::v32i8, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3888 { ISD::SMAX, MVT::v4i64, { 6, 9, 6, 12 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3889 { ISD::SMAX, MVT::v2i64, { 3, 7, 2, 4 } }, in getIntrinsicInstrCost()
3890 { ISD::SMAX, MVT::v8i32, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3891 { ISD::SMAX, MVT::v16i16, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3892 { ISD::SMAX, MVT::v32i8, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3893 { ISD::SMIN, MVT::v4i64, { 6, 9, 6, 12 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3894 { ISD::SMIN, MVT::v2i64, { 3, 7, 2, 3 } }, in getIntrinsicInstrCost()
3895 { ISD::SMIN, MVT::v8i32, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3896 { ISD::SMIN, MVT::v16i16, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3897 { ISD::SMIN, MVT::v32i8, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3898 { ISD::SSUBSAT, MVT::v16i16, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3899 { ISD::SSUBSAT, MVT::v32i8, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3900 { ISD::UADDSAT, MVT::v16i16, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3901 { ISD::UADDSAT, MVT::v32i8, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3902 { ISD::UADDSAT, MVT::v8i32, { 8 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3903 { ISD::UMAX, MVT::v4i64, { 9, 10, 11, 17 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3904 { ISD::UMAX, MVT::v2i64, { 4, 8, 5, 7 } }, in getIntrinsicInstrCost()
3905 { ISD::UMAX, MVT::v8i32, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3906 { ISD::UMAX, MVT::v16i16, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3907 { ISD::UMAX, MVT::v32i8, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3908 { ISD::UMIN, MVT::v4i64, { 9, 10, 11, 17 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3909 { ISD::UMIN, MVT::v2i64, { 4, 8, 5, 7 } }, in getIntrinsicInstrCost()
3910 { ISD::UMIN, MVT::v8i32, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3911 { ISD::UMIN, MVT::v16i16, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3912 { ISD::UMIN, MVT::v32i8, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3913 { ISD::USUBSAT, MVT::v16i16, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3914 { ISD::USUBSAT, MVT::v32i8, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3915 { ISD::USUBSAT, MVT::v8i32, { 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3916 { ISD::FMAXNUM, MVT::f32, { 3, 6, 3, 5 } }, // MAXSS + CMPUNORDSS + BLENDVPS in getIntrinsicInstrCost()
3917 { ISD::FMAXNUM, MVT::v4f32, { 3, 6, 3, 5 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3918 { ISD::FMAXNUM, MVT::v8f32, { 5, 7, 3, 10 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3919 { ISD::FMAXNUM, MVT::f64, { 3, 6, 3, 5 } }, // MAXSD + CMPUNORDSD + BLENDVPD in getIntrinsicInstrCost()
3920 { ISD::FMAXNUM, MVT::v2f64, { 3, 6, 3, 5 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3921 { ISD::FMAXNUM, MVT::v4f64, { 5, 7, 3, 10 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3922 { ISD::FSQRT, MVT::f32, { 21, 21, 1, 1 } }, // vsqrtss in getIntrinsicInstrCost()
3923 { ISD::FSQRT, MVT::v4f32, { 21, 21, 1, 1 } }, // vsqrtps in getIntrinsicInstrCost()
3924 { ISD::FSQRT, MVT::v8f32, { 42, 42, 1, 3 } }, // vsqrtps in getIntrinsicInstrCost()
3925 { ISD::FSQRT, MVT::f64, { 27, 27, 1, 1 } }, // vsqrtsd in getIntrinsicInstrCost()
3926 { ISD::FSQRT, MVT::v2f64, { 27, 27, 1, 1 } }, // vsqrtpd in getIntrinsicInstrCost()
3927 { ISD::FSQRT, MVT::v4f64, { 54, 54, 1, 3 } }, // vsqrtpd in getIntrinsicInstrCost()
3930 { ISD::BITREVERSE, MVT::i8, { 3, 3, 3, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3931 { ISD::BITREVERSE, MVT::i16, { 3, 3, 4, 6 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3932 { ISD::BITREVERSE, MVT::i32, { 3, 3, 4, 5 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3933 { ISD::BITREVERSE, MVT::i64, { 3, 3, 4, 6 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3934 { ISD::BITREVERSE, MVT::v16i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3935 { ISD::BITREVERSE, MVT::v32i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3936 { ISD::BITREVERSE, MVT::v64i8, { 1, 6, 1, 2 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3937 { ISD::BITREVERSE, MVT::v8i16, { 1, 8, 2, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3938 { ISD::BITREVERSE, MVT::v16i16, { 1, 9, 2, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3939 { ISD::BITREVERSE, MVT::v32i16, { 1, 9, 2, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3940 { ISD::BITREVERSE, MVT::v4i32, { 1, 8, 2, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3941 { ISD::BITREVERSE, MVT::v8i32, { 1, 9, 2, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3942 { ISD::BITREVERSE, MVT::v16i32, { 1, 9, 2, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3943 { ISD::BITREVERSE, MVT::v2i64, { 1, 8, 2, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3944 { ISD::BITREVERSE, MVT::v4i64, { 1, 9, 2, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3945 { ISD::BITREVERSE, MVT::v8i64, { 1, 9, 2, 4 } }, // gf2p8affineqb in getIntrinsicInstrCost()
3951 { ISD::FSQRT, MVT::f32, { 19, 20, 1, 1 } }, // sqrtss in getIntrinsicInstrCost()
3952 { ISD::FSQRT, MVT::v4f32, { 37, 41, 1, 5 } }, // sqrtps in getIntrinsicInstrCost()
3953 { ISD::FSQRT, MVT::f64, { 34, 35, 1, 1 } }, // sqrtsd in getIntrinsicInstrCost()
3954 { ISD::FSQRT, MVT::v2f64, { 67, 71, 1, 5 } }, // sqrtpd in getIntrinsicInstrCost()
3957 { ISD::BSWAP, MVT::v2i64, { 5, 5, 1, 5 } }, in getIntrinsicInstrCost()
3958 { ISD::BSWAP, MVT::v4i32, { 5, 5, 1, 5 } }, in getIntrinsicInstrCost()
3959 { ISD::BSWAP, MVT::v8i16, { 5, 5, 1, 5 } }, in getIntrinsicInstrCost()
3960 { ISD::FSQRT, MVT::f32, { 20, 20, 1, 1 } }, // sqrtss in getIntrinsicInstrCost()
3961 { ISD::FSQRT, MVT::v4f32, { 40, 41, 1, 5 } }, // sqrtps in getIntrinsicInstrCost()
3962 { ISD::FSQRT, MVT::f64, { 35, 35, 1, 1 } }, // sqrtsd in getIntrinsicInstrCost()
3963 { ISD::FSQRT, MVT::v2f64, { 70, 71, 1, 5 } }, // sqrtpd in getIntrinsicInstrCost()
3966 { ISD::USUBSAT, MVT::v4i32, { 2 } }, // pmaxud + psubd in getIntrinsicInstrCost()
3967 { ISD::UADDSAT, MVT::v4i32, { 3 } }, // not + pminud + paddd in getIntrinsicInstrCost()
3968 { ISD::FMAXNUM, MVT::f32, { 5, 5, 7, 7 } }, // MAXSS + CMPUNORDSS + BLENDVPS in getIntrinsicInstrCost()
3969 { ISD::FMAXNUM, MVT::v4f32, { 4, 4, 4, 5 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3970 { ISD::FMAXNUM, MVT::f64, { 5, 5, 7, 7 } }, // MAXSD + CMPUNORDSD + BLENDVPD in getIntrinsicInstrCost()
3971 { ISD::FMAXNUM, MVT::v2f64, { 4, 4, 4, 5 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3972 { ISD::FSQRT, MVT::f32, { 18, 18, 1, 1 } }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
3973 { ISD::FSQRT, MVT::v4f32, { 18, 18, 1, 1 } }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
3976 { ISD::ABS, MVT::v2i64, { 3, 4, 3, 5 } }, // BLENDVPD(X,PSUBQ(0,X),X) in getIntrinsicInstrCost()
3977 { ISD::SMAX, MVT::v2i64, { 3, 7, 2, 3 } }, in getIntrinsicInstrCost()
3978 { ISD::SMAX, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3979 { ISD::SMAX, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3980 { ISD::SMIN, MVT::v2i64, { 3, 7, 2, 3 } }, in getIntrinsicInstrCost()
3981 { ISD::SMIN, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3982 { ISD::SMIN, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3983 { ISD::UMAX, MVT::v2i64, { 2, 11, 6, 7 } }, in getIntrinsicInstrCost()
3984 { ISD::UMAX, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3985 { ISD::UMAX, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3986 { ISD::UMIN, MVT::v2i64, { 2, 11, 6, 7 } }, in getIntrinsicInstrCost()
3987 { ISD::UMIN, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3988 { ISD::UMIN, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3991 { ISD::ABS, MVT::v4i32, { 1, 2, 1, 1 } }, in getIntrinsicInstrCost()
3992 { ISD::ABS, MVT::v8i16, { 1, 2, 1, 1 } }, in getIntrinsicInstrCost()
3993 { ISD::ABS, MVT::v16i8, { 1, 2, 1, 1 } }, in getIntrinsicInstrCost()
3994 { ISD::BITREVERSE, MVT::v2i64, { 16, 20, 11, 21 } }, in getIntrinsicInstrCost()
3995 { ISD::BITREVERSE, MVT::v4i32, { 16, 20, 11, 21 } }, in getIntrinsicInstrCost()
3996 { ISD::BITREVERSE, MVT::v8i16, { 16, 20, 11, 21 } }, in getIntrinsicInstrCost()
3997 { ISD::BITREVERSE, MVT::v16i8, { 11, 12, 10, 16 } }, in getIntrinsicInstrCost()
3998 { ISD::BSWAP, MVT::v2i64, { 2, 3, 1, 5 } }, in getIntrinsicInstrCost()
3999 { ISD::BSWAP, MVT::v4i32, { 2, 3, 1, 5 } }, in getIntrinsicInstrCost()
4000 { ISD::BSWAP, MVT::v8i16, { 2, 3, 1, 5 } }, in getIntrinsicInstrCost()
4001 { ISD::CTLZ, MVT::v2i64, { 18, 28, 28, 35 } }, in getIntrinsicInstrCost()
4002 { ISD::CTLZ, MVT::v4i32, { 15, 20, 22, 28 } }, in getIntrinsicInstrCost()
4003 { ISD::CTLZ, MVT::v8i16, { 13, 17, 16, 22 } }, in getIntrinsicInstrCost()
4004 { ISD::CTLZ, MVT::v16i8, { 11, 15, 10, 16 } }, in getIntrinsicInstrCost()
4005 { ISD::CTPOP, MVT::v2i64, { 13, 19, 12, 18 } }, in getIntrinsicInstrCost()
4006 { ISD::CTPOP, MVT::v4i32, { 18, 24, 16, 22 } }, in getIntrinsicInstrCost()
4007 { ISD::CTPOP, MVT::v8i16, { 13, 18, 14, 20 } }, in getIntrinsicInstrCost()
4008 { ISD::CTPOP, MVT::v16i8, { 11, 12, 10, 16 } }, in getIntrinsicInstrCost()
4009 { ISD::CTTZ, MVT::v2i64, { 13, 25, 15, 22 } }, in getIntrinsicInstrCost()
4010 { ISD::CTTZ, MVT::v4i32, { 18, 26, 19, 25 } }, in getIntrinsicInstrCost()
4011 { ISD::CTTZ, MVT::v8i16, { 13, 20, 17, 23 } }, in getIntrinsicInstrCost()
4012 { ISD::CTTZ, MVT::v16i8, { 11, 16, 13, 19 } } in getIntrinsicInstrCost()
4015 { ISD::ABS, MVT::v2i64, { 3, 6, 5, 5 } }, in getIntrinsicInstrCost()
4016 { ISD::ABS, MVT::v4i32, { 1, 4, 4, 4 } }, in getIntrinsicInstrCost()
4017 { ISD::ABS, MVT::v8i16, { 1, 2, 3, 3 } }, in getIntrinsicInstrCost()
4018 { ISD::ABS, MVT::v16i8, { 1, 2, 3, 3 } }, in getIntrinsicInstrCost()
4019 { ISD::BITREVERSE, MVT::v2i64, { 16, 20, 32, 32 } }, in getIntrinsicInstrCost()
4020 { ISD::BITREVERSE, MVT::v4i32, { 16, 20, 30, 30 } }, in getIntrinsicInstrCost()
4021 { ISD::BITREVERSE, MVT::v8i16, { 16, 20, 25, 25 } }, in getIntrinsicInstrCost()
4022 { ISD::BITREVERSE, MVT::v16i8, { 11, 12, 21, 21 } }, in getIntrinsicInstrCost()
4023 { ISD::BSWAP, MVT::v2i64, { 5, 6, 11, 11 } }, in getIntrinsicInstrCost()
4024 { ISD::BSWAP, MVT::v4i32, { 5, 5, 9, 9 } }, in getIntrinsicInstrCost()
4025 { ISD::BSWAP, MVT::v8i16, { 5, 5, 4, 5 } }, in getIntrinsicInstrCost()
4026 { ISD::CTLZ, MVT::v2i64, { 10, 45, 36, 38 } }, in getIntrinsicInstrCost()
4027 { ISD::CTLZ, MVT::v4i32, { 10, 45, 38, 40 } }, in getIntrinsicInstrCost()
4028 { ISD::CTLZ, MVT::v8i16, { 9, 38, 32, 34 } }, in getIntrinsicInstrCost()
4029 { ISD::CTLZ, MVT::v16i8, { 8, 39, 29, 32 } }, in getIntrinsicInstrCost()
4030 { ISD::CTPOP, MVT::v2i64, { 12, 26, 16, 18 } }, in getIntrinsicInstrCost()
4031 { ISD::CTPOP, MVT::v4i32, { 15, 29, 21, 23 } }, in getIntrinsicInstrCost()
4032 { ISD::CTPOP, MVT::v8i16, { 13, 25, 18, 20 } }, in getIntrinsicInstrCost()
4033 { ISD::CTPOP, MVT::v16i8, { 10, 21, 14, 16 } }, in getIntrinsicInstrCost()
4034 { ISD::CTTZ, MVT::v2i64, { 14, 28, 19, 21 } }, in getIntrinsicInstrCost()
4035 { ISD::CTTZ, MVT::v4i32, { 18, 31, 24, 26 } }, in getIntrinsicInstrCost()
4036 { ISD::CTTZ, MVT::v8i16, { 16, 27, 21, 23 } }, in getIntrinsicInstrCost()
4037 { ISD::CTTZ, MVT::v16i8, { 13, 23, 17, 19 } }, in getIntrinsicInstrCost()
4038 { ISD::SADDSAT, MVT::v8i16, { 1 } }, in getIntrinsicInstrCost()
4039 { ISD::SADDSAT, MVT::v16i8, { 1 } }, in getIntrinsicInstrCost()
4040 { ISD::SMAX, MVT::v2i64, { 4, 8, 15, 15 } }, in getIntrinsicInstrCost()
4041 { ISD::SMAX, MVT::v4i32, { 2, 4, 5, 5 } }, in getIntrinsicInstrCost()
4042 { ISD::SMAX, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
4043 { ISD::SMAX, MVT::v16i8, { 2, 4, 5, 5 } }, in getIntrinsicInstrCost()
4044 { ISD::SMIN, MVT::v2i64, { 4, 8, 15, 15 } }, in getIntrinsicInstrCost()
4045 { ISD::SMIN, MVT::v4i32, { 2, 4, 5, 5 } }, in getIntrinsicInstrCost()
4046 { ISD::SMIN, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
4047 { ISD::SMIN, MVT::v16i8, { 2, 4, 5, 5 } }, in getIntrinsicInstrCost()
4048 { ISD::SSUBSAT, MVT::v8i16, { 1 } }, in getIntrinsicInstrCost()
4049 { ISD::SSUBSAT, MVT::v16i8, { 1 } }, in getIntrinsicInstrCost()
4050 { ISD::UADDSAT, MVT::v8i16, { 1 } }, in getIntrinsicInstrCost()
4051 { ISD::UADDSAT, MVT::v16i8, { 1 } }, in getIntrinsicInstrCost()
4052 { ISD::UMAX, MVT::v2i64, { 4, 8, 15, 15 } }, in getIntrinsicInstrCost()
4053 { ISD::UMAX, MVT::v4i32, { 2, 5, 8, 8 } }, in getIntrinsicInstrCost()
4054 { ISD::UMAX, MVT::v8i16, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
4055 { ISD::UMAX, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
4056 { ISD::UMIN, MVT::v2i64, { 4, 8, 15, 15 } }, in getIntrinsicInstrCost()
4057 { ISD::UMIN, MVT::v4i32, { 2, 5, 8, 8 } }, in getIntrinsicInstrCost()
4058 { ISD::UMIN, MVT::v8i16, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
4059 { ISD::UMIN, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
4060 { ISD::USUBSAT, MVT::v8i16, { 1 } }, in getIntrinsicInstrCost()
4061 { ISD::USUBSAT, MVT::v16i8, { 1 } }, in getIntrinsicInstrCost()
4062 { ISD::FMAXNUM, MVT::f64, { 5, 5, 7, 7 } }, in getIntrinsicInstrCost()
4063 { ISD::FMAXNUM, MVT::v2f64, { 4, 6, 6, 6 } }, in getIntrinsicInstrCost()
4064 { ISD::FSQRT, MVT::f64, { 32, 32, 1, 1 } }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
4065 { ISD::FSQRT, MVT::v2f64, { 32, 32, 1, 1 } }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
4068 { ISD::FMAXNUM, MVT::f32, { 5, 5, 7, 7 } }, in getIntrinsicInstrCost()
4069 { ISD::FMAXNUM, MVT::v4f32, { 4, 6, 6, 6 } }, in getIntrinsicInstrCost()
4070 { ISD::FSQRT, MVT::f32, { 28, 30, 1, 2 } }, // Pentium III from http://www.agner.org/ in getIntrinsicInstrCost()
4071 { ISD::FSQRT, MVT::v4f32, { 56, 56, 1, 2 } }, // Pentium III from http://www.agner.org/ in getIntrinsicInstrCost()
4074 { ISD::CTTZ, MVT::i64, { 1 } }, in getIntrinsicInstrCost()
4077 { ISD::CTTZ, MVT::i32, { 1 } }, in getIntrinsicInstrCost()
4078 { ISD::CTTZ, MVT::i16, { 1 } }, in getIntrinsicInstrCost()
4079 { ISD::CTTZ, MVT::i8, { 1 } }, in getIntrinsicInstrCost()
4082 { ISD::CTLZ, MVT::i64, { 1 } }, in getIntrinsicInstrCost()
4085 { ISD::CTLZ, MVT::i32, { 1 } }, in getIntrinsicInstrCost()
4086 { ISD::CTLZ, MVT::i16, { 2 } }, in getIntrinsicInstrCost()
4087 { ISD::CTLZ, MVT::i8, { 2 } }, in getIntrinsicInstrCost()
4090 { ISD::CTPOP, MVT::i64, { 1, 1, 1, 1 } }, // popcnt in getIntrinsicInstrCost()
4093 { ISD::CTPOP, MVT::i32, { 1, 1, 1, 1 } }, // popcnt in getIntrinsicInstrCost()
4094 { ISD::CTPOP, MVT::i16, { 1, 1, 2, 2 } }, // popcnt(zext()) in getIntrinsicInstrCost()
4095 { ISD::CTPOP, MVT::i8, { 1, 1, 2, 2 } }, // popcnt(zext()) in getIntrinsicInstrCost()
4098 { ISD::ABS, MVT::i64, { 1, 2, 3, 3 } }, // SUB+CMOV in getIntrinsicInstrCost()
4099 { ISD::BITREVERSE, MVT::i64, { 10, 12, 20, 22 } }, in getIntrinsicInstrCost()
4100 { ISD::BSWAP, MVT::i64, { 1, 2, 1, 2 } }, in getIntrinsicInstrCost()
4101 { ISD::CTLZ, MVT::i64, { 4 } }, // BSR+XOR or BSR+XOR+CMOV in getIntrinsicInstrCost()
4102 { ISD::CTLZ_ZERO_UNDEF, MVT::i64,{ 1, 1, 1, 1 } }, // BSR+XOR in getIntrinsicInstrCost()
4103 { ISD::CTTZ, MVT::i64, { 3 } }, // TEST+BSF+CMOV/BRANCH in getIntrinsicInstrCost()
4104 { ISD::CTTZ_ZERO_UNDEF, MVT::i64,{ 1, 1, 1, 1 } }, // BSR in getIntrinsicInstrCost()
4105 { ISD::CTPOP, MVT::i64, { 10, 6, 19, 19 } }, in getIntrinsicInstrCost()
4106 { ISD::ROTL, MVT::i64, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4107 { ISD::ROTR, MVT::i64, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4109 { ISD::FSHL, MVT::i64, { 4, 4, 1, 4 } }, in getIntrinsicInstrCost()
4110 { ISD::SMAX, MVT::i64, { 1, 3, 2, 3 } }, in getIntrinsicInstrCost()
4111 { ISD::SMIN, MVT::i64, { 1, 3, 2, 3 } }, in getIntrinsicInstrCost()
4112 { ISD::UMAX, MVT::i64, { 1, 3, 2, 3 } }, in getIntrinsicInstrCost()
4113 { ISD::UMIN, MVT::i64, { 1, 3, 2, 3 } }, in getIntrinsicInstrCost()
4114 { ISD::SADDO, MVT::i64, { 1 } }, in getIntrinsicInstrCost()
4115 { ISD::UADDO, MVT::i64, { 1 } }, in getIntrinsicInstrCost()
4116 { ISD::UMULO, MVT::i64, { 2 } }, // mulq + seto in getIntrinsicInstrCost()
4119 { ISD::ABS, MVT::i32, { 1, 2, 3, 3 } }, // SUB+XOR+SRA or SUB+CMOV in getIntrinsicInstrCost()
4120 { ISD::ABS, MVT::i16, { 2, 2, 3, 3 } }, // SUB+XOR+SRA or SUB+CMOV in getIntrinsicInstrCost()
4121 { ISD::ABS, MVT::i8, { 2, 4, 4, 3 } }, // SUB+XOR+SRA in getIntrinsicInstrCost()
4122 { ISD::BITREVERSE, MVT::i32, { 9, 12, 17, 19 } }, in getIntrinsicInstrCost()
4123 { ISD::BITREVERSE, MVT::i16, { 9, 12, 17, 19 } }, in getIntrinsicInstrCost()
4124 { ISD::BITREVERSE, MVT::i8, { 7, 9, 13, 14 } }, in getIntrinsicInstrCost()
4125 { ISD::BSWAP, MVT::i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
4126 { ISD::BSWAP, MVT::i16, { 1, 2, 1, 2 } }, // ROL in getIntrinsicInstrCost()
4127 { ISD::CTLZ, MVT::i32, { 4 } }, // BSR+XOR or BSR+XOR+CMOV in getIntrinsicInstrCost()
4128 { ISD::CTLZ, MVT::i16, { 4 } }, // BSR+XOR or BSR+XOR+CMOV in getIntrinsicInstrCost()
4129 { ISD::CTLZ, MVT::i8, { 4 } }, // BSR+XOR or BSR+XOR+CMOV in getIntrinsicInstrCost()
4130 { ISD::CTLZ_ZERO_UNDEF, MVT::i32,{ 1, 1, 1, 1 } }, // BSR+XOR in getIntrinsicInstrCost()
4131 { ISD::CTLZ_ZERO_UNDEF, MVT::i16,{ 2, 2, 3, 3 } }, // BSR+XOR in getIntrinsicInstrCost()
4132 { ISD::CTLZ_ZERO_UNDEF, MVT::i8, { 2, 2, 3, 3 } }, // BSR+XOR in getIntrinsicInstrCost()
4133 { ISD::CTTZ, MVT::i32, { 3 } }, // TEST+BSF+CMOV/BRANCH in getIntrinsicInstrCost()
4134 { ISD::CTTZ, MVT::i16, { 3 } }, // TEST+BSF+CMOV/BRANCH in getIntrinsicInstrCost()
4135 { ISD::CTTZ, MVT::i8, { 3 } }, // TEST+BSF+CMOV/BRANCH in getIntrinsicInstrCost()
4136 { ISD::CTTZ_ZERO_UNDEF, MVT::i32,{ 1, 1, 1, 1 } }, // BSF in getIntrinsicInstrCost()
4137 { ISD::CTTZ_ZERO_UNDEF, MVT::i16,{ 2, 2, 1, 1 } }, // BSF in getIntrinsicInstrCost()
4138 { ISD::CTTZ_ZERO_UNDEF, MVT::i8, { 2, 2, 1, 1 } }, // BSF in getIntrinsicInstrCost()
4139 { ISD::CTPOP, MVT::i32, { 8, 7, 15, 15 } }, in getIntrinsicInstrCost()
4140 { ISD::CTPOP, MVT::i16, { 9, 8, 17, 17 } }, in getIntrinsicInstrCost()
4141 { ISD::CTPOP, MVT::i8, { 7, 6, 6, 6 } }, in getIntrinsicInstrCost()
4142 { ISD::ROTL, MVT::i32, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4143 { ISD::ROTL, MVT::i16, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4144 { ISD::ROTL, MVT::i8, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4145 { ISD::ROTR, MVT::i32, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4146 { ISD::ROTR, MVT::i16, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4147 { ISD::ROTR, MVT::i8, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4151 { ISD::FSHL, MVT::i32, { 4, 4, 1, 4 } }, in getIntrinsicInstrCost()
4152 { ISD::FSHL, MVT::i16, { 4, 4, 2, 5 } }, in getIntrinsicInstrCost()
4153 { ISD::FSHL, MVT::i8, { 4, 4, 2, 5 } }, in getIntrinsicInstrCost()
4154 { ISD::SMAX, MVT::i32, { 1, 2, 2, 3 } }, in getIntrinsicInstrCost()
4155 { ISD::SMAX, MVT::i16, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4156 { ISD::SMAX, MVT::i8, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4157 { ISD::SMIN, MVT::i32, { 1, 2, 2, 3 } }, in getIntrinsicInstrCost()
4158 { ISD::SMIN, MVT::i16, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4159 { ISD::SMIN, MVT::i8, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4160 { ISD::UMAX, MVT::i32, { 1, 2, 2, 3 } }, in getIntrinsicInstrCost()
4161 { ISD::UMAX, MVT::i16, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4162 { ISD::UMAX, MVT::i8, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4163 { ISD::UMIN, MVT::i32, { 1, 2, 2, 3 } }, in getIntrinsicInstrCost()
4164 { ISD::UMIN, MVT::i16, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4165 { ISD::UMIN, MVT::i8, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4166 { ISD::SADDO, MVT::i32, { 1 } }, in getIntrinsicInstrCost()
4167 { ISD::SADDO, MVT::i16, { 1 } }, in getIntrinsicInstrCost()
4168 { ISD::SADDO, MVT::i8, { 1 } }, in getIntrinsicInstrCost()
4169 { ISD::UADDO, MVT::i32, { 1 } }, in getIntrinsicInstrCost()
4170 { ISD::UADDO, MVT::i16, { 1 } }, in getIntrinsicInstrCost()
4171 { ISD::UADDO, MVT::i8, { 1 } }, in getIntrinsicInstrCost()
4172 { ISD::UMULO, MVT::i32, { 2 } }, // mul + seto in getIntrinsicInstrCost()
4173 { ISD::UMULO, MVT::i16, { 2 } }, in getIntrinsicInstrCost()
4174 { ISD::UMULO, MVT::i8, { 2 } }, in getIntrinsicInstrCost()
4180 unsigned ISD = ISD::DELETED_NODE; in getIntrinsicInstrCost() local
4185 ISD = ISD::ABS; in getIntrinsicInstrCost()
4188 ISD = ISD::BITREVERSE; in getIntrinsicInstrCost()
4191 ISD = ISD::BSWAP; in getIntrinsicInstrCost()
4194 ISD = ISD::CTLZ; in getIntrinsicInstrCost()
4197 ISD = ISD::CTPOP; in getIntrinsicInstrCost()
4200 ISD = ISD::CTTZ; in getIntrinsicInstrCost()
4203 ISD = ISD::FSHL; in getIntrinsicInstrCost()
4207 ISD = ISD::ROTL; in getIntrinsicInstrCost()
4213 ISD = X86ISD::VROTLI; in getIntrinsicInstrCost()
4219 ISD = ISD::FSHL; in getIntrinsicInstrCost()
4223 ISD = ISD::ROTR; in getIntrinsicInstrCost()
4229 ISD = X86ISD::VROTLI; in getIntrinsicInstrCost()
4246 ISD = ISD::FMAXNUM; in getIntrinsicInstrCost()
4249 ISD = ISD::SADDSAT; in getIntrinsicInstrCost()
4252 ISD = ISD::SMAX; in getIntrinsicInstrCost()
4255 ISD = ISD::SMIN; in getIntrinsicInstrCost()
4258 ISD = ISD::SSUBSAT; in getIntrinsicInstrCost()
4261 ISD = ISD::UADDSAT; in getIntrinsicInstrCost()
4264 ISD = ISD::UMAX; in getIntrinsicInstrCost()
4267 ISD = ISD::UMIN; in getIntrinsicInstrCost()
4270 ISD = ISD::USUBSAT; in getIntrinsicInstrCost()
4273 ISD = ISD::FSQRT; in getIntrinsicInstrCost()
4278 ISD = ISD::SADDO; in getIntrinsicInstrCost()
4284 ISD = ISD::UADDO; in getIntrinsicInstrCost()
4290 ISD = ISD::UMULO; in getIntrinsicInstrCost()
4295 if (ISD != ISD::DELETED_NODE) { in getIntrinsicInstrCost()
4296 auto adjustTableCost = [&](int ISD, unsigned Cost, in getIntrinsicInstrCost()
4305 if (ISD == ISD::FMAXNUM || ISD == ISD::FMINNUM) { in getIntrinsicInstrCost()
4312 if (ISD == ISD::BSWAP && ST->hasMOVBE() && ST->hasFastMOVBE()) { in getIntrinsicInstrCost()
4332 if (((ISD == ISD::CTTZ && !ST->hasBMI()) || in getIntrinsicInstrCost()
4333 (ISD == ISD::CTLZ && !ST->hasLZCNT())) && in getIntrinsicInstrCost()
4338 ISD = ISD == ISD::CTTZ ? ISD::CTTZ_ZERO_UNDEF : ISD::CTLZ_ZERO_UNDEF; in getIntrinsicInstrCost()
4342 if (ISD == ISD::FSQRT && CostKind == TTI::TCK_CodeSize) in getIntrinsicInstrCost()
4346 if (const auto *Entry = CostTableLookup(GLMCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4348 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4351 if (const auto *Entry = CostTableLookup(SLMCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4353 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4356 if (const auto *Entry = CostTableLookup(AVX512VBMI2CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4358 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4361 if (const auto *Entry = CostTableLookup(AVX512BITALGCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4363 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4366 if (const auto *Entry = CostTableLookup(AVX512VPOPCNTDQCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4368 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4371 if (const auto *Entry = CostTableLookup(GFNICostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4373 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4376 if (const auto *Entry = CostTableLookup(AVX512CDCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4378 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4381 if (const auto *Entry = CostTableLookup(AVX512BWCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4383 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4386 if (const auto *Entry = CostTableLookup(AVX512CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4388 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4391 if (const auto *Entry = CostTableLookup(XOPCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4393 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4396 if (const auto *Entry = CostTableLookup(AVX2CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4398 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4401 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4403 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4406 if (const auto *Entry = CostTableLookup(SSE42CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4408 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4411 if (const auto *Entry = CostTableLookup(SSE41CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4413 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4416 if (const auto *Entry = CostTableLookup(SSSE3CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4418 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4421 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4423 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4426 if (const auto *Entry = CostTableLookup(SSE1CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4428 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4432 if (const auto *Entry = CostTableLookup(BMI64CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4434 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4436 if (const auto *Entry = CostTableLookup(BMI32CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4438 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4443 if (const auto *Entry = CostTableLookup(LZCNT64CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4445 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4447 if (const auto *Entry = CostTableLookup(LZCNT32CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4449 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4454 if (const auto *Entry = CostTableLookup(POPCNT64CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4456 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4458 if (const auto *Entry = CostTableLookup(POPCNT32CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4460 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4464 if (const auto *Entry = CostTableLookup(X64CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4466 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4468 if (const auto *Entry = CostTableLookup(X86CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4470 return adjustTableCost(Entry->ISD, *KindCost, LT, ICA.getFlags()); in getIntrinsicInstrCost()
4481 { ISD::EXTRACT_VECTOR_ELT, MVT::i8, 4 }, in getVectorInstrCost()
4482 { ISD::EXTRACT_VECTOR_ELT, MVT::i16, 4 }, in getVectorInstrCost()
4483 { ISD::EXTRACT_VECTOR_ELT, MVT::i32, 4 }, in getVectorInstrCost()
4484 { ISD::EXTRACT_VECTOR_ELT, MVT::i64, 7 } in getVectorInstrCost()
4589 int ISD = TLI->InstructionOpcodeToISD(Opcode); in getVectorInstrCost() local
4590 assert(ISD && "Unexpected vector opcode"); in getVectorInstrCost()
4592 if (auto *Entry = CostTableLookup(SLMCostTbl, ISD, MScalarTy)) in getVectorInstrCost()
5184 { ISD::FADD, MVT::v2f64, 3 }, in getArithmeticReductionCost()
5185 { ISD::ADD, MVT::v2i64, 5 }, in getArithmeticReductionCost()
5189 { ISD::FADD, MVT::v2f64, 2 }, in getArithmeticReductionCost()
5190 { ISD::FADD, MVT::v2f32, 2 }, in getArithmeticReductionCost()
5191 { ISD::FADD, MVT::v4f32, 4 }, in getArithmeticReductionCost()
5192 { ISD::ADD, MVT::v2i64, 2 }, // The data reported by the IACA tool is "1.6". in getArithmeticReductionCost()
5193 { ISD::ADD, MVT::v2i32, 2 }, // FIXME: chosen to be less than v4i32 in getArithmeticReductionCost()
5194 { ISD::ADD, MVT::v4i32, 3 }, // The data reported by the IACA tool is "3.3". in getArithmeticReductionCost()
5195 { ISD::ADD, MVT::v2i16, 2 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
5196 { ISD::ADD, MVT::v4i16, 3 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
5197 { ISD::ADD, MVT::v8i16, 4 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
5198 { ISD::ADD, MVT::v2i8, 2 }, in getArithmeticReductionCost()
5199 { ISD::ADD, MVT::v4i8, 2 }, in getArithmeticReductionCost()
5200 { ISD::ADD, MVT::v8i8, 2 }, in getArithmeticReductionCost()
5201 { ISD::ADD, MVT::v16i8, 3 }, in getArithmeticReductionCost()
5205 { ISD::FADD, MVT::v4f64, 3 }, in getArithmeticReductionCost()
5206 { ISD::FADD, MVT::v4f32, 3 }, in getArithmeticReductionCost()
5207 { ISD::FADD, MVT::v8f32, 4 }, in getArithmeticReductionCost()
5208 { ISD::ADD, MVT::v2i64, 1 }, // The data reported by the IACA tool is "1.5". in getArithmeticReductionCost()
5209 { ISD::ADD, MVT::v4i64, 3 }, in getArithmeticReductionCost()
5210 { ISD::ADD, MVT::v8i32, 5 }, in getArithmeticReductionCost()
5211 { ISD::ADD, MVT::v16i16, 5 }, in getArithmeticReductionCost()
5212 { ISD::ADD, MVT::v32i8, 4 }, in getArithmeticReductionCost()
5215 int ISD = TLI->InstructionOpcodeToISD(Opcode); in getArithmeticReductionCost() local
5216 assert(ISD && "Invalid opcode"); in getArithmeticReductionCost()
5225 if (const auto *Entry = CostTableLookup(SLMCostTbl, ISD, MTy)) in getArithmeticReductionCost()
5229 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getArithmeticReductionCost()
5233 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getArithmeticReductionCost()
5244 if (ISD == ISD::MUL && MTy.getScalarType() == MVT::i8) { in getArithmeticReductionCost()
5264 if (const auto *Entry = CostTableLookup(SLMCostTbl, ISD, MTy)) in getArithmeticReductionCost()
5268 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getArithmeticReductionCost()
5272 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getArithmeticReductionCost()
5278 { ISD::AND, MVT::v2i1, 3 }, in getArithmeticReductionCost()
5279 { ISD::AND, MVT::v4i1, 5 }, in getArithmeticReductionCost()
5280 { ISD::AND, MVT::v8i1, 7 }, in getArithmeticReductionCost()
5281 { ISD::AND, MVT::v16i1, 9 }, in getArithmeticReductionCost()
5282 { ISD::AND, MVT::v32i1, 11 }, in getArithmeticReductionCost()
5283 { ISD::AND, MVT::v64i1, 13 }, in getArithmeticReductionCost()
5284 { ISD::OR, MVT::v2i1, 3 }, in getArithmeticReductionCost()
5285 { ISD::OR, MVT::v4i1, 5 }, in getArithmeticReductionCost()
5286 { ISD::OR, MVT::v8i1, 7 }, in getArithmeticReductionCost()
5287 { ISD::OR, MVT::v16i1, 9 }, in getArithmeticReductionCost()
5288 { ISD::OR, MVT::v32i1, 11 }, in getArithmeticReductionCost()
5289 { ISD::OR, MVT::v64i1, 13 }, in getArithmeticReductionCost()
5293 { ISD::AND, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
5294 { ISD::AND, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
5295 { ISD::OR, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
5296 { ISD::OR, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
5300 { ISD::AND, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
5301 { ISD::AND, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
5302 { ISD::AND, MVT::v16i16, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
5303 { ISD::AND, MVT::v32i8, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
5304 { ISD::OR, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
5305 { ISD::OR, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
5306 { ISD::OR, MVT::v16i16, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
5307 { ISD::OR, MVT::v32i8, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
5311 { ISD::AND, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
5312 { ISD::AND, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
5313 { ISD::AND, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
5314 { ISD::AND, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
5315 { ISD::OR, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
5316 { ISD::OR, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
5317 { ISD::OR, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
5318 { ISD::OR, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
5334 if (const auto *Entry = CostTableLookup(AVX512BoolReduction, ISD, MTy)) in getArithmeticReductionCost()
5337 if (const auto *Entry = CostTableLookup(AVX2BoolReduction, ISD, MTy)) in getArithmeticReductionCost()
5340 if (const auto *Entry = CostTableLookup(AVX1BoolReduction, ISD, MTy)) in getArithmeticReductionCost()
5343 if (const auto *Entry = CostTableLookup(SSE2BoolReduction, ISD, MTy)) in getArithmeticReductionCost()
5439 int ISD; in getMinMaxReductionCost() local
5441 ISD = (IID == Intrinsic::umin || IID == Intrinsic::umax) ? ISD::UMIN in getMinMaxReductionCost()
5442 : ISD::SMIN; in getMinMaxReductionCost()
5446 ISD = (IID == Intrinsic::minnum || IID == Intrinsic::maxnum) in getMinMaxReductionCost()
5447 ? ISD::FMINNUM in getMinMaxReductionCost()
5448 : ISD::FMINIMUM; in getMinMaxReductionCost()
5455 {ISD::UMIN, MVT::v2i16, 5}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
5456 {ISD::UMIN, MVT::v4i16, 7}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
5457 {ISD::UMIN, MVT::v8i16, 9}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
5461 {ISD::SMIN, MVT::v2i16, 3}, // same as sse2 in getMinMaxReductionCost()
5462 {ISD::SMIN, MVT::v4i16, 5}, // same as sse2 in getMinMaxReductionCost()
5463 {ISD::UMIN, MVT::v2i16, 5}, // same as sse2 in getMinMaxReductionCost()
5464 {ISD::UMIN, MVT::v4i16, 7}, // same as sse2 in getMinMaxReductionCost()
5465 {ISD::SMIN, MVT::v8i16, 4}, // phminposuw+xor in getMinMaxReductionCost()
5466 {ISD::UMIN, MVT::v8i16, 4}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
5467 {ISD::SMIN, MVT::v2i8, 3}, // pminsb in getMinMaxReductionCost()
5468 {ISD::SMIN, MVT::v4i8, 5}, // pminsb in getMinMaxReductionCost()
5469 {ISD::SMIN, MVT::v8i8, 7}, // pminsb in getMinMaxReductionCost()
5470 {ISD::SMIN, MVT::v16i8, 6}, in getMinMaxReductionCost()
5471 {ISD::UMIN, MVT::v2i8, 3}, // same as sse2 in getMinMaxReductionCost()
5472 {ISD::UMIN, MVT::v4i8, 5}, // same as sse2 in getMinMaxReductionCost()
5473 {ISD::UMIN, MVT::v8i8, 7}, // same as sse2 in getMinMaxReductionCost()
5474 {ISD::UMIN, MVT::v16i8, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
5478 {ISD::SMIN, MVT::v16i16, 6}, in getMinMaxReductionCost()
5479 {ISD::UMIN, MVT::v16i16, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
5480 {ISD::SMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
5481 {ISD::UMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
5485 {ISD::SMIN, MVT::v32i16, 8}, in getMinMaxReductionCost()
5486 {ISD::UMIN, MVT::v32i16, 8}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
5487 {ISD::SMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
5488 {ISD::UMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
5498 if (const auto *Entry = CostTableLookup(AVX512BWCostTbl, ISD, MTy)) in getMinMaxReductionCost()
5502 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5506 if (const auto *Entry = CostTableLookup(SSE41CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5510 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5530 if (const auto *Entry = CostTableLookup(AVX512BWCostTbl, ISD, MTy)) in getMinMaxReductionCost()
5534 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5538 if (const auto *Entry = CostTableLookup(SSE41CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5542 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getMinMaxReductionCost()
6116 return TLI->isOperationLegal(IsSigned ? ISD::SDIVREM : ISD::UDIVREM, VT); in hasDivRemOp()