Lines Matching refs:MVT
242 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(Ty); in getArithmeticInstrCost()
248 (LT.second.getScalarType() == MVT::i32 || in getArithmeticInstrCost()
249 LT.second.getScalarType() == MVT::i64)) { in getArithmeticInstrCost()
261 LT.second.getScalarType() == MVT::i32) { in getArithmeticInstrCost()
276 MVT::getVectorVT(MVT::i16, 2 * LT.second.getVectorNumElements()); in getArithmeticInstrCost()
282 if (ST->useSLMArithCosts() && LT.second == MVT::v4i32) { in getArithmeticInstrCost()
296 if (!SignedMode && OpMinSize <= 32 && LT.second.getScalarType() == MVT::i64) in getArithmeticInstrCost()
349 { ISD::SHL, MVT::v16i8, { 1, 7, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
350 { ISD::SRL, MVT::v16i8, { 1, 7, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
351 { ISD::SRA, MVT::v16i8, { 1, 8, 4, 5 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
352 { ISD::SHL, MVT::v32i8, { 1, 8, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
353 { ISD::SRL, MVT::v32i8, { 1, 8, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
354 { ISD::SRA, MVT::v32i8, { 1, 9, 4, 5 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
355 { ISD::SHL, MVT::v64i8, { 1, 8, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
356 { ISD::SRL, MVT::v64i8, { 1, 8, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
357 { ISD::SRA, MVT::v64i8, { 1, 9, 4, 6 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
359 { ISD::SHL, MVT::v16i16, { 1, 1, 1, 1 } }, // psllw in getArithmeticInstrCost()
360 { ISD::SRL, MVT::v16i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
361 { ISD::SRA, MVT::v16i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
362 { ISD::SHL, MVT::v32i16, { 1, 1, 1, 1 } }, // psllw in getArithmeticInstrCost()
363 { ISD::SRL, MVT::v32i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
364 { ISD::SRA, MVT::v32i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
374 { ISD::SHL, MVT::v64i8, { 2, 12, 5, 6 } }, // psllw + pand. in getArithmeticInstrCost()
375 { ISD::SRL, MVT::v64i8, { 2, 12, 5, 6 } }, // psrlw + pand. in getArithmeticInstrCost()
376 { ISD::SRA, MVT::v64i8, { 3, 10, 12, 12 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
378 { ISD::SHL, MVT::v16i16, { 2, 7, 4, 4 } }, // psllw + split. in getArithmeticInstrCost()
379 { ISD::SRL, MVT::v16i16, { 2, 7, 4, 4 } }, // psrlw + split. in getArithmeticInstrCost()
380 { ISD::SRA, MVT::v16i16, { 2, 7, 4, 4 } }, // psraw + split. in getArithmeticInstrCost()
382 { ISD::SHL, MVT::v8i32, { 1, 1, 1, 1 } }, // pslld in getArithmeticInstrCost()
383 { ISD::SRL, MVT::v8i32, { 1, 1, 1, 1 } }, // psrld in getArithmeticInstrCost()
384 { ISD::SRA, MVT::v8i32, { 1, 1, 1, 1 } }, // psrad in getArithmeticInstrCost()
385 { ISD::SHL, MVT::v16i32, { 1, 1, 1, 1 } }, // pslld in getArithmeticInstrCost()
386 { ISD::SRL, MVT::v16i32, { 1, 1, 1, 1 } }, // psrld in getArithmeticInstrCost()
387 { ISD::SRA, MVT::v16i32, { 1, 1, 1, 1 } }, // psrad in getArithmeticInstrCost()
389 { ISD::SRA, MVT::v2i64, { 1, 1, 1, 1 } }, // psraq in getArithmeticInstrCost()
390 { ISD::SHL, MVT::v4i64, { 1, 1, 1, 1 } }, // psllq in getArithmeticInstrCost()
391 { ISD::SRL, MVT::v4i64, { 1, 1, 1, 1 } }, // psrlq in getArithmeticInstrCost()
392 { ISD::SRA, MVT::v4i64, { 1, 1, 1, 1 } }, // psraq in getArithmeticInstrCost()
393 { ISD::SHL, MVT::v8i64, { 1, 1, 1, 1 } }, // psllq in getArithmeticInstrCost()
394 { ISD::SRL, MVT::v8i64, { 1, 1, 1, 1 } }, // psrlq in getArithmeticInstrCost()
395 { ISD::SRA, MVT::v8i64, { 1, 1, 1, 1 } }, // psraq in getArithmeticInstrCost()
397 { ISD::SDIV, MVT::v16i32, { 6 } }, // pmuludq sequence in getArithmeticInstrCost()
398 { ISD::SREM, MVT::v16i32, { 8 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
399 { ISD::UDIV, MVT::v16i32, { 5 } }, // pmuludq sequence in getArithmeticInstrCost()
400 { ISD::UREM, MVT::v16i32, { 7 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
410 { ISD::SHL, MVT::v16i8, { 1, 8, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
411 { ISD::SRL, MVT::v16i8, { 1, 8, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
412 { ISD::SRA, MVT::v16i8, { 2, 10, 5, 6 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
413 { ISD::SHL, MVT::v32i8, { 2, 8, 2, 4 } }, // psllw + pand. in getArithmeticInstrCost()
414 { ISD::SRL, MVT::v32i8, { 2, 8, 2, 4 } }, // psrlw + pand. in getArithmeticInstrCost()
415 { ISD::SRA, MVT::v32i8, { 3, 10, 5, 9 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
417 { ISD::SHL, MVT::v8i16, { 1, 1, 1, 1 } }, // psllw in getArithmeticInstrCost()
418 { ISD::SRL, MVT::v8i16, { 1, 1, 1, 1 } }, // psrlw in getArithmeticInstrCost()
419 { ISD::SRA, MVT::v8i16, { 1, 1, 1, 1 } }, // psraw in getArithmeticInstrCost()
420 { ISD::SHL, MVT::v16i16,{ 2, 2, 1, 2 } }, // psllw in getArithmeticInstrCost()
421 { ISD::SRL, MVT::v16i16,{ 2, 2, 1, 2 } }, // psrlw in getArithmeticInstrCost()
422 { ISD::SRA, MVT::v16i16,{ 2, 2, 1, 2 } }, // psraw in getArithmeticInstrCost()
424 { ISD::SHL, MVT::v4i32, { 1, 1, 1, 1 } }, // pslld in getArithmeticInstrCost()
425 { ISD::SRL, MVT::v4i32, { 1, 1, 1, 1 } }, // psrld in getArithmeticInstrCost()
426 { ISD::SRA, MVT::v4i32, { 1, 1, 1, 1 } }, // psrad in getArithmeticInstrCost()
427 { ISD::SHL, MVT::v8i32, { 2, 2, 1, 2 } }, // pslld in getArithmeticInstrCost()
428 { ISD::SRL, MVT::v8i32, { 2, 2, 1, 2 } }, // psrld in getArithmeticInstrCost()
429 { ISD::SRA, MVT::v8i32, { 2, 2, 1, 2 } }, // psrad in getArithmeticInstrCost()
431 { ISD::SHL, MVT::v2i64, { 1, 1, 1, 1 } }, // psllq in getArithmeticInstrCost()
432 { ISD::SRL, MVT::v2i64, { 1, 1, 1, 1 } }, // psrlq in getArithmeticInstrCost()
433 { ISD::SRA, MVT::v2i64, { 2, 3, 3, 3 } }, // psrad + shuffle. in getArithmeticInstrCost()
434 { ISD::SHL, MVT::v4i64, { 2, 2, 1, 2 } }, // psllq in getArithmeticInstrCost()
435 { ISD::SRL, MVT::v4i64, { 2, 2, 1, 2 } }, // psrlq in getArithmeticInstrCost()
436 { ISD::SRA, MVT::v4i64, { 4, 4, 3, 6 } }, // psrad + shuffle + split. in getArithmeticInstrCost()
438 { ISD::SDIV, MVT::v8i32, { 6 } }, // pmuludq sequence in getArithmeticInstrCost()
439 { ISD::SREM, MVT::v8i32, { 8 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
440 { ISD::UDIV, MVT::v8i32, { 5 } }, // pmuludq sequence in getArithmeticInstrCost()
441 { ISD::UREM, MVT::v8i32, { 7 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
451 { ISD::SHL, MVT::v16i8, { 2, 7, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
452 { ISD::SRL, MVT::v16i8, { 2, 7, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
453 { ISD::SRA, MVT::v16i8, { 3, 9, 5, 6 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
454 { ISD::SHL, MVT::v32i8, { 4, 7, 7, 8 } }, // 2*(psllw + pand) + split. in getArithmeticInstrCost()
455 { ISD::SRL, MVT::v32i8, { 4, 7, 7, 8 } }, // 2*(psrlw + pand) + split. in getArithmeticInstrCost()
456 { ISD::SRA, MVT::v32i8, { 7, 7, 12, 13 } }, // 2*(psrlw, pand, pxor, psubb) + split. in getArithmeticInstrCost()
458 { ISD::SHL, MVT::v8i16, { 1, 2, 1, 1 } }, // psllw. in getArithmeticInstrCost()
459 { ISD::SRL, MVT::v8i16, { 1, 2, 1, 1 } }, // psrlw. in getArithmeticInstrCost()
460 { ISD::SRA, MVT::v8i16, { 1, 2, 1, 1 } }, // psraw. in getArithmeticInstrCost()
461 { ISD::SHL, MVT::v16i16,{ 3, 6, 4, 5 } }, // psllw + split. in getArithmeticInstrCost()
462 { ISD::SRL, MVT::v16i16,{ 3, 6, 4, 5 } }, // psrlw + split. in getArithmeticInstrCost()
463 { ISD::SRA, MVT::v16i16,{ 3, 6, 4, 5 } }, // psraw + split. in getArithmeticInstrCost()
465 { ISD::SHL, MVT::v4i32, { 1, 2, 1, 1 } }, // pslld. in getArithmeticInstrCost()
466 { ISD::SRL, MVT::v4i32, { 1, 2, 1, 1 } }, // psrld. in getArithmeticInstrCost()
467 { ISD::SRA, MVT::v4i32, { 1, 2, 1, 1 } }, // psrad. in getArithmeticInstrCost()
468 { ISD::SHL, MVT::v8i32, { 3, 6, 4, 5 } }, // pslld + split. in getArithmeticInstrCost()
469 { ISD::SRL, MVT::v8i32, { 3, 6, 4, 5 } }, // psrld + split. in getArithmeticInstrCost()
470 { ISD::SRA, MVT::v8i32, { 3, 6, 4, 5 } }, // psrad + split. in getArithmeticInstrCost()
472 { ISD::SHL, MVT::v2i64, { 1, 2, 1, 1 } }, // psllq. in getArithmeticInstrCost()
473 { ISD::SRL, MVT::v2i64, { 1, 2, 1, 1 } }, // psrlq. in getArithmeticInstrCost()
474 { ISD::SRA, MVT::v2i64, { 2, 3, 3, 3 } }, // psrad + shuffle. in getArithmeticInstrCost()
475 { ISD::SHL, MVT::v4i64, { 3, 6, 4, 5 } }, // 2 x psllq + split. in getArithmeticInstrCost()
476 { ISD::SRL, MVT::v4i64, { 3, 6, 4, 5 } }, // 2 x psllq + split. in getArithmeticInstrCost()
477 { ISD::SRA, MVT::v4i64, { 5, 7, 8, 9 } }, // 2 x psrad + shuffle + split. in getArithmeticInstrCost()
479 { ISD::SDIV, MVT::v8i32, { 14 } }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
480 { ISD::SREM, MVT::v8i32, { 18 } }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
481 { ISD::UDIV, MVT::v8i32, { 12 } }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
482 { ISD::UREM, MVT::v8i32, { 16 } }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
494 { ISD::SHL, MVT::v16i8, { 1, 7, 2, 3 } }, // psllw + pand. in getArithmeticInstrCost()
495 { ISD::SRL, MVT::v16i8, { 1, 7, 2, 3 } }, // psrlw + pand. in getArithmeticInstrCost()
496 { ISD::SRA, MVT::v16i8, { 3, 9, 5, 6 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
498 { ISD::SHL, MVT::v8i16, { 1, 1, 1, 1 } }, // psllw. in getArithmeticInstrCost()
499 { ISD::SRL, MVT::v8i16, { 1, 1, 1, 1 } }, // psrlw. in getArithmeticInstrCost()
500 { ISD::SRA, MVT::v8i16, { 1, 1, 1, 1 } }, // psraw. in getArithmeticInstrCost()
502 { ISD::SHL, MVT::v4i32, { 1, 1, 1, 1 } }, // pslld in getArithmeticInstrCost()
503 { ISD::SRL, MVT::v4i32, { 1, 1, 1, 1 } }, // psrld. in getArithmeticInstrCost()
504 { ISD::SRA, MVT::v4i32, { 1, 1, 1, 1 } }, // psrad. in getArithmeticInstrCost()
506 { ISD::SHL, MVT::v2i64, { 1, 1, 1, 1 } }, // psllq. in getArithmeticInstrCost()
507 { ISD::SRL, MVT::v2i64, { 1, 1, 1, 1 } }, // psrlq. in getArithmeticInstrCost()
508 { ISD::SRA, MVT::v2i64, { 3, 5, 6, 6 } }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
510 { ISD::SDIV, MVT::v4i32, { 6 } }, // pmuludq sequence in getArithmeticInstrCost()
511 { ISD::SREM, MVT::v4i32, { 8 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
512 { ISD::UDIV, MVT::v4i32, { 5 } }, // pmuludq sequence in getArithmeticInstrCost()
513 { ISD::UREM, MVT::v4i32, { 7 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
525 { ISD::SDIV, MVT::v64i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
526 { ISD::SREM, MVT::v64i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
527 { ISD::UDIV, MVT::v64i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
528 { ISD::UREM, MVT::v64i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
530 { ISD::SDIV, MVT::v32i16, { 6 } }, // vpmulhw sequence in getArithmeticInstrCost()
531 { ISD::SREM, MVT::v32i16, { 8 } }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
532 { ISD::UDIV, MVT::v32i16, { 6 } }, // vpmulhuw sequence in getArithmeticInstrCost()
533 { ISD::UREM, MVT::v32i16, { 8 } }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
543 { ISD::SDIV, MVT::v64i8, { 28 } }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
544 { ISD::SREM, MVT::v64i8, { 32 } }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
545 { ISD::UDIV, MVT::v64i8, { 28 } }, // 4*ext+4*pmulhw sequence in getArithmeticInstrCost()
546 { ISD::UREM, MVT::v64i8, { 32 } }, // 4*ext+4*pmulhw+mul+sub sequence in getArithmeticInstrCost()
548 { ISD::SDIV, MVT::v32i16, { 12 } }, // 2*vpmulhw sequence in getArithmeticInstrCost()
549 { ISD::SREM, MVT::v32i16, { 16 } }, // 2*vpmulhw+mul+sub sequence in getArithmeticInstrCost()
550 { ISD::UDIV, MVT::v32i16, { 12 } }, // 2*vpmulhuw sequence in getArithmeticInstrCost()
551 { ISD::UREM, MVT::v32i16, { 16 } }, // 2*vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
553 { ISD::SDIV, MVT::v16i32, { 15 } }, // vpmuldq sequence in getArithmeticInstrCost()
554 { ISD::SREM, MVT::v16i32, { 17 } }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
555 { ISD::UDIV, MVT::v16i32, { 15 } }, // vpmuludq sequence in getArithmeticInstrCost()
556 { ISD::UREM, MVT::v16i32, { 17 } }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
566 { ISD::SDIV, MVT::v32i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
567 { ISD::SREM, MVT::v32i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
568 { ISD::UDIV, MVT::v32i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
569 { ISD::UREM, MVT::v32i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
571 { ISD::SDIV, MVT::v16i16, { 6 } }, // vpmulhw sequence in getArithmeticInstrCost()
572 { ISD::SREM, MVT::v16i16, { 8 } }, // vpmulhw+mul+sub sequence in getArithmeticInstrCost()
573 { ISD::UDIV, MVT::v16i16, { 6 } }, // vpmulhuw sequence in getArithmeticInstrCost()
574 { ISD::UREM, MVT::v16i16, { 8 } }, // vpmulhuw+mul+sub sequence in getArithmeticInstrCost()
576 { ISD::SDIV, MVT::v8i32, { 15 } }, // vpmuldq sequence in getArithmeticInstrCost()
577 { ISD::SREM, MVT::v8i32, { 19 } }, // vpmuldq+mul+sub sequence in getArithmeticInstrCost()
578 { ISD::UDIV, MVT::v8i32, { 15 } }, // vpmuludq sequence in getArithmeticInstrCost()
579 { ISD::UREM, MVT::v8i32, { 19 } }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
588 { ISD::SDIV, MVT::v32i8, { 30 } }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
589 { ISD::SREM, MVT::v32i8, { 34 } }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
590 { ISD::UDIV, MVT::v32i8, { 30 } }, // 4*ext+4*pmulhw sequence + split. in getArithmeticInstrCost()
591 { ISD::UREM, MVT::v32i8, { 34 } }, // 4*ext+4*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
593 { ISD::SDIV, MVT::v16i16, { 14 } }, // 2*pmulhw sequence + split. in getArithmeticInstrCost()
594 { ISD::SREM, MVT::v16i16, { 18 } }, // 2*pmulhw+mul+sub sequence + split. in getArithmeticInstrCost()
595 { ISD::UDIV, MVT::v16i16, { 14 } }, // 2*pmulhuw sequence + split. in getArithmeticInstrCost()
596 { ISD::UREM, MVT::v16i16, { 18 } }, // 2*pmulhuw+mul+sub sequence + split. in getArithmeticInstrCost()
598 { ISD::SDIV, MVT::v8i32, { 32 } }, // vpmuludq sequence in getArithmeticInstrCost()
599 { ISD::SREM, MVT::v8i32, { 38 } }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
600 { ISD::UDIV, MVT::v8i32, { 32 } }, // 2*pmuludq sequence + split. in getArithmeticInstrCost()
601 { ISD::UREM, MVT::v8i32, { 42 } }, // 2*pmuludq+mul+sub sequence + split. in getArithmeticInstrCost()
610 { ISD::SDIV, MVT::v4i32, { 15 } }, // vpmuludq sequence in getArithmeticInstrCost()
611 { ISD::SREM, MVT::v4i32, { 20 } }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
621 { ISD::SDIV, MVT::v16i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
622 { ISD::SREM, MVT::v16i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
623 { ISD::UDIV, MVT::v16i8, { 14 } }, // 2*ext+2*pmulhw sequence in getArithmeticInstrCost()
624 { ISD::UREM, MVT::v16i8, { 16 } }, // 2*ext+2*pmulhw+mul+sub sequence in getArithmeticInstrCost()
626 { ISD::SDIV, MVT::v8i16, { 6 } }, // pmulhw sequence in getArithmeticInstrCost()
627 { ISD::SREM, MVT::v8i16, { 8 } }, // pmulhw+mul+sub sequence in getArithmeticInstrCost()
628 { ISD::UDIV, MVT::v8i16, { 6 } }, // pmulhuw sequence in getArithmeticInstrCost()
629 { ISD::UREM, MVT::v8i16, { 8 } }, // pmulhuw+mul+sub sequence in getArithmeticInstrCost()
631 { ISD::SDIV, MVT::v4i32, { 19 } }, // pmuludq sequence in getArithmeticInstrCost()
632 { ISD::SREM, MVT::v4i32, { 24 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
633 { ISD::UDIV, MVT::v4i32, { 15 } }, // pmuludq sequence in getArithmeticInstrCost()
634 { ISD::UREM, MVT::v4i32, { 20 } }, // pmuludq+mul+sub sequence in getArithmeticInstrCost()
643 { ISD::SHL, MVT::v16i8, { 3, 5, 5, 7 } }, // psllw + pand. in getArithmeticInstrCost()
644 { ISD::SRL, MVT::v16i8, { 3,10, 5, 8 } }, // psrlw + pand. in getArithmeticInstrCost()
645 { ISD::SRA, MVT::v16i8, { 4,12, 8,12 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
646 { ISD::SHL, MVT::v32i8, { 4, 7, 6, 8 } }, // psllw + pand. in getArithmeticInstrCost()
647 { ISD::SRL, MVT::v32i8, { 4, 8, 7, 9 } }, // psrlw + pand. in getArithmeticInstrCost()
648 { ISD::SRA, MVT::v32i8, { 5,10,10,13 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
649 { ISD::SHL, MVT::v64i8, { 4, 7, 6, 8 } }, // psllw + pand. in getArithmeticInstrCost()
650 { ISD::SRL, MVT::v64i8, { 4, 8, 7,10 } }, // psrlw + pand. in getArithmeticInstrCost()
651 { ISD::SRA, MVT::v64i8, { 5,10,10,15 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
653 { ISD::SHL, MVT::v32i16, { 2, 4, 2, 3 } }, // psllw in getArithmeticInstrCost()
654 { ISD::SRL, MVT::v32i16, { 2, 4, 2, 3 } }, // psrlw in getArithmeticInstrCost()
655 { ISD::SRA, MVT::v32i16, { 2, 4, 2, 3 } }, // psrqw in getArithmeticInstrCost()
665 { ISD::SHL, MVT::v32i16, { 5,10, 5, 7 } }, // psllw + split. in getArithmeticInstrCost()
666 { ISD::SRL, MVT::v32i16, { 5,10, 5, 7 } }, // psrlw + split. in getArithmeticInstrCost()
667 { ISD::SRA, MVT::v32i16, { 5,10, 5, 7 } }, // psraw + split. in getArithmeticInstrCost()
669 { ISD::SHL, MVT::v16i32, { 2, 4, 2, 3 } }, // pslld in getArithmeticInstrCost()
670 { ISD::SRL, MVT::v16i32, { 2, 4, 2, 3 } }, // psrld in getArithmeticInstrCost()
671 { ISD::SRA, MVT::v16i32, { 2, 4, 2, 3 } }, // psrad in getArithmeticInstrCost()
673 { ISD::SRA, MVT::v2i64, { 1, 2, 1, 2 } }, // psraq in getArithmeticInstrCost()
674 { ISD::SHL, MVT::v4i64, { 1, 4, 1, 2 } }, // psllq in getArithmeticInstrCost()
675 { ISD::SRL, MVT::v4i64, { 1, 4, 1, 2 } }, // psrlq in getArithmeticInstrCost()
676 { ISD::SRA, MVT::v4i64, { 1, 4, 1, 2 } }, // psraq in getArithmeticInstrCost()
677 { ISD::SHL, MVT::v8i64, { 1, 4, 1, 2 } }, // psllq in getArithmeticInstrCost()
678 { ISD::SRL, MVT::v8i64, { 1, 4, 1, 2 } }, // psrlq in getArithmeticInstrCost()
679 { ISD::SRA, MVT::v8i64, { 1, 4, 1, 2 } }, // psraq in getArithmeticInstrCost()
690 { ISD::SHL, MVT::v16i8, { 3, 5, 5, 7 } }, // psllw + pand. in getArithmeticInstrCost()
691 { ISD::SRL, MVT::v16i8, { 3, 9, 5, 8 } }, // psrlw + pand. in getArithmeticInstrCost()
692 { ISD::SRA, MVT::v16i8, { 4, 5, 9,13 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
693 { ISD::SHL, MVT::v32i8, { 4, 7, 6, 8 } }, // psllw + pand. in getArithmeticInstrCost()
694 { ISD::SRL, MVT::v32i8, { 4, 8, 7, 9 } }, // psrlw + pand. in getArithmeticInstrCost()
695 { ISD::SRA, MVT::v32i8, { 6, 9,11,16 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
697 { ISD::SHL, MVT::v8i16, { 1, 2, 1, 2 } }, // psllw. in getArithmeticInstrCost()
698 { ISD::SRL, MVT::v8i16, { 1, 2, 1, 2 } }, // psrlw. in getArithmeticInstrCost()
699 { ISD::SRA, MVT::v8i16, { 1, 2, 1, 2 } }, // psraw. in getArithmeticInstrCost()
700 { ISD::SHL, MVT::v16i16, { 2, 4, 2, 3 } }, // psllw. in getArithmeticInstrCost()
701 { ISD::SRL, MVT::v16i16, { 2, 4, 2, 3 } }, // psrlw. in getArithmeticInstrCost()
702 { ISD::SRA, MVT::v16i16, { 2, 4, 2, 3 } }, // psraw. in getArithmeticInstrCost()
704 { ISD::SHL, MVT::v4i32, { 1, 2, 1, 2 } }, // pslld in getArithmeticInstrCost()
705 { ISD::SRL, MVT::v4i32, { 1, 2, 1, 2 } }, // psrld in getArithmeticInstrCost()
706 { ISD::SRA, MVT::v4i32, { 1, 2, 1, 2 } }, // psrad in getArithmeticInstrCost()
707 { ISD::SHL, MVT::v8i32, { 2, 4, 2, 3 } }, // pslld in getArithmeticInstrCost()
708 { ISD::SRL, MVT::v8i32, { 2, 4, 2, 3 } }, // psrld in getArithmeticInstrCost()
709 { ISD::SRA, MVT::v8i32, { 2, 4, 2, 3 } }, // psrad in getArithmeticInstrCost()
711 { ISD::SHL, MVT::v2i64, { 1, 2, 1, 2 } }, // psllq in getArithmeticInstrCost()
712 { ISD::SRL, MVT::v2i64, { 1, 2, 1, 2 } }, // psrlq in getArithmeticInstrCost()
713 { ISD::SRA, MVT::v2i64, { 2, 4, 5, 7 } }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
714 { ISD::SHL, MVT::v4i64, { 2, 4, 1, 2 } }, // psllq in getArithmeticInstrCost()
715 { ISD::SRL, MVT::v4i64, { 2, 4, 1, 2 } }, // psrlq in getArithmeticInstrCost()
716 { ISD::SRA, MVT::v4i64, { 4, 6, 5, 9 } }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
726 { ISD::SHL, MVT::v16i8, { 4, 4, 6, 8 } }, // psllw + pand. in getArithmeticInstrCost()
727 { ISD::SRL, MVT::v16i8, { 4, 8, 5, 8 } }, // psrlw + pand. in getArithmeticInstrCost()
728 { ISD::SRA, MVT::v16i8, { 6, 6, 9,13 } }, // psrlw, pand, pxor, psubb. in getArithmeticInstrCost()
729 { ISD::SHL, MVT::v32i8, { 7, 8,11,14 } }, // psllw + pand + split. in getArithmeticInstrCost()
730 { ISD::SRL, MVT::v32i8, { 7, 9,10,14 } }, // psrlw + pand + split. in getArithmeticInstrCost()
731 { ISD::SRA, MVT::v32i8, { 10,11,16,21 } }, // psrlw, pand, pxor, psubb + split. in getArithmeticInstrCost()
733 { ISD::SHL, MVT::v8i16, { 1, 3, 1, 2 } }, // psllw. in getArithmeticInstrCost()
734 { ISD::SRL, MVT::v8i16, { 1, 3, 1, 2 } }, // psrlw. in getArithmeticInstrCost()
735 { ISD::SRA, MVT::v8i16, { 1, 3, 1, 2 } }, // psraw. in getArithmeticInstrCost()
736 { ISD::SHL, MVT::v16i16, { 3, 7, 5, 7 } }, // psllw + split. in getArithmeticInstrCost()
737 { ISD::SRL, MVT::v16i16, { 3, 7, 5, 7 } }, // psrlw + split. in getArithmeticInstrCost()
738 { ISD::SRA, MVT::v16i16, { 3, 7, 5, 7 } }, // psraw + split. in getArithmeticInstrCost()
740 { ISD::SHL, MVT::v4i32, { 1, 3, 1, 2 } }, // pslld. in getArithmeticInstrCost()
741 { ISD::SRL, MVT::v4i32, { 1, 3, 1, 2 } }, // psrld. in getArithmeticInstrCost()
742 { ISD::SRA, MVT::v4i32, { 1, 3, 1, 2 } }, // psrad. in getArithmeticInstrCost()
743 { ISD::SHL, MVT::v8i32, { 3, 7, 5, 7 } }, // pslld + split. in getArithmeticInstrCost()
744 { ISD::SRL, MVT::v8i32, { 3, 7, 5, 7 } }, // psrld + split. in getArithmeticInstrCost()
745 { ISD::SRA, MVT::v8i32, { 3, 7, 5, 7 } }, // psrad + split. in getArithmeticInstrCost()
747 { ISD::SHL, MVT::v2i64, { 1, 3, 1, 2 } }, // psllq. in getArithmeticInstrCost()
748 { ISD::SRL, MVT::v2i64, { 1, 3, 1, 2 } }, // psrlq. in getArithmeticInstrCost()
749 { ISD::SRA, MVT::v2i64, { 3, 4, 5, 7 } }, // 2 x psrad + shuffle. in getArithmeticInstrCost()
750 { ISD::SHL, MVT::v4i64, { 3, 7, 4, 6 } }, // psllq + split. in getArithmeticInstrCost()
751 { ISD::SRL, MVT::v4i64, { 3, 7, 4, 6 } }, // psrlq + split. in getArithmeticInstrCost()
752 { ISD::SRA, MVT::v4i64, { 6, 7,10,13 } }, // 2 x (2 x psrad + shuffle) + split. in getArithmeticInstrCost()
765 { ISD::SHL, MVT::v16i8, { 9, 10, 6, 9 } }, // psllw + pand. in getArithmeticInstrCost()
766 { ISD::SRL, MVT::v16i8, { 9, 13, 5, 9 } }, // psrlw + pand. in getArithmeticInstrCost()
767 { ISD::SRA, MVT::v16i8, { 11, 15, 9,13 } }, // pcmpgtb sequence. in getArithmeticInstrCost()
769 { ISD::SHL, MVT::v8i16, { 2, 2, 1, 2 } }, // psllw. in getArithmeticInstrCost()
770 { ISD::SRL, MVT::v8i16, { 2, 2, 1, 2 } }, // psrlw. in getArithmeticInstrCost()
771 { ISD::SRA, MVT::v8i16, { 2, 2, 1, 2 } }, // psraw. in getArithmeticInstrCost()
773 { ISD::SHL, MVT::v4i32, { 2, 2, 1, 2 } }, // pslld in getArithmeticInstrCost()
774 { ISD::SRL, MVT::v4i32, { 2, 2, 1, 2 } }, // psrld. in getArithmeticInstrCost()
775 { ISD::SRA, MVT::v4i32, { 2, 2, 1, 2 } }, // psrad. in getArithmeticInstrCost()
777 { ISD::SHL, MVT::v2i64, { 2, 2, 1, 2 } }, // psllq. in getArithmeticInstrCost()
778 { ISD::SRL, MVT::v2i64, { 2, 2, 1, 2 } }, // psrlq. in getArithmeticInstrCost()
779 { ISD::SRA, MVT::v2i64, { 5, 9, 5, 7 } }, // 2*psrlq + xor + sub. in getArithmeticInstrCost()
790 { ISD::MUL, MVT::v2i64, { 2, 15, 1, 3 } }, // pmullq in getArithmeticInstrCost()
791 { ISD::MUL, MVT::v4i64, { 2, 15, 1, 3 } }, // pmullq in getArithmeticInstrCost()
792 { ISD::MUL, MVT::v8i64, { 3, 15, 1, 3 } } // pmullq in getArithmeticInstrCost()
802 { ISD::SHL, MVT::v16i8, { 4, 8, 4, 5 } }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
803 { ISD::SRL, MVT::v16i8, { 4, 8, 4, 5 } }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
804 { ISD::SRA, MVT::v16i8, { 4, 8, 4, 5 } }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
805 { ISD::SHL, MVT::v32i8, { 4, 23,11,16 } }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
806 { ISD::SRL, MVT::v32i8, { 4, 30,12,18 } }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
807 { ISD::SRA, MVT::v32i8, { 6, 13,24,30 } }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
808 { ISD::SHL, MVT::v64i8, { 6, 19,13,15 } }, // extend/vpsllvw/pack sequence. in getArithmeticInstrCost()
809 { ISD::SRL, MVT::v64i8, { 7, 27,15,18 } }, // extend/vpsrlvw/pack sequence. in getArithmeticInstrCost()
810 { ISD::SRA, MVT::v64i8, { 15, 15,30,30 } }, // extend/vpsravw/pack sequence. in getArithmeticInstrCost()
812 { ISD::SHL, MVT::v8i16, { 1, 1, 1, 1 } }, // vpsllvw in getArithmeticInstrCost()
813 { ISD::SRL, MVT::v8i16, { 1, 1, 1, 1 } }, // vpsrlvw in getArithmeticInstrCost()
814 { ISD::SRA, MVT::v8i16, { 1, 1, 1, 1 } }, // vpsravw in getArithmeticInstrCost()
815 { ISD::SHL, MVT::v16i16, { 1, 1, 1, 1 } }, // vpsllvw in getArithmeticInstrCost()
816 { ISD::SRL, MVT::v16i16, { 1, 1, 1, 1 } }, // vpsrlvw in getArithmeticInstrCost()
817 { ISD::SRA, MVT::v16i16, { 1, 1, 1, 1 } }, // vpsravw in getArithmeticInstrCost()
818 { ISD::SHL, MVT::v32i16, { 1, 1, 1, 1 } }, // vpsllvw in getArithmeticInstrCost()
819 { ISD::SRL, MVT::v32i16, { 1, 1, 1, 1 } }, // vpsrlvw in getArithmeticInstrCost()
820 { ISD::SRA, MVT::v32i16, { 1, 1, 1, 1 } }, // vpsravw in getArithmeticInstrCost()
822 { ISD::ADD, MVT::v64i8, { 1, 1, 1, 1 } }, // paddb in getArithmeticInstrCost()
823 { ISD::ADD, MVT::v32i16, { 1, 1, 1, 1 } }, // paddw in getArithmeticInstrCost()
825 { ISD::ADD, MVT::v32i8, { 1, 1, 1, 1 } }, // paddb in getArithmeticInstrCost()
826 { ISD::ADD, MVT::v16i16, { 1, 1, 1, 1 } }, // paddw in getArithmeticInstrCost()
827 { ISD::ADD, MVT::v8i32, { 1, 1, 1, 1 } }, // paddd in getArithmeticInstrCost()
828 { ISD::ADD, MVT::v4i64, { 1, 1, 1, 1 } }, // paddq in getArithmeticInstrCost()
830 { ISD::SUB, MVT::v64i8, { 1, 1, 1, 1 } }, // psubb in getArithmeticInstrCost()
831 { ISD::SUB, MVT::v32i16, { 1, 1, 1, 1 } }, // psubw in getArithmeticInstrCost()
833 { ISD::MUL, MVT::v64i8, { 5, 10,10,11 } }, in getArithmeticInstrCost()
834 { ISD::MUL, MVT::v32i16, { 1, 5, 1, 1 } }, // pmullw in getArithmeticInstrCost()
836 { ISD::SUB, MVT::v32i8, { 1, 1, 1, 1 } }, // psubb in getArithmeticInstrCost()
837 { ISD::SUB, MVT::v16i16, { 1, 1, 1, 1 } }, // psubw in getArithmeticInstrCost()
838 { ISD::SUB, MVT::v8i32, { 1, 1, 1, 1 } }, // psubd in getArithmeticInstrCost()
839 { ISD::SUB, MVT::v4i64, { 1, 1, 1, 1 } }, // psubq in getArithmeticInstrCost()
849 { ISD::SHL, MVT::v64i8, { 15, 19,27,33 } }, // vpblendv+split sequence. in getArithmeticInstrCost()
850 { ISD::SRL, MVT::v64i8, { 15, 19,30,36 } }, // vpblendv+split sequence. in getArithmeticInstrCost()
851 { ISD::SRA, MVT::v64i8, { 37, 37,51,63 } }, // vpblendv+split sequence. in getArithmeticInstrCost()
853 { ISD::SHL, MVT::v32i16, { 11, 16,11,15 } }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
854 { ISD::SRL, MVT::v32i16, { 11, 16,11,15 } }, // 2*extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
855 { ISD::SRA, MVT::v32i16, { 11, 16,11,15 } }, // 2*extend/vpsravd/pack sequence. in getArithmeticInstrCost()
857 { ISD::SHL, MVT::v4i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
858 { ISD::SRL, MVT::v4i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
859 { ISD::SRA, MVT::v4i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
860 { ISD::SHL, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
861 { ISD::SRL, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
862 { ISD::SRA, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
863 { ISD::SHL, MVT::v16i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
864 { ISD::SRL, MVT::v16i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
865 { ISD::SRA, MVT::v16i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
867 { ISD::SHL, MVT::v2i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
868 { ISD::SRL, MVT::v2i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
869 { ISD::SRA, MVT::v2i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
870 { ISD::SHL, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
871 { ISD::SRL, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
872 { ISD::SRA, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
873 { ISD::SHL, MVT::v8i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
874 { ISD::SRL, MVT::v8i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
875 { ISD::SRA, MVT::v8i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
877 { ISD::ADD, MVT::v64i8, { 3, 7, 5, 5 } }, // 2*paddb + split in getArithmeticInstrCost()
878 { ISD::ADD, MVT::v32i16, { 3, 7, 5, 5 } }, // 2*paddw + split in getArithmeticInstrCost()
880 { ISD::SUB, MVT::v64i8, { 3, 7, 5, 5 } }, // 2*psubb + split in getArithmeticInstrCost()
881 { ISD::SUB, MVT::v32i16, { 3, 7, 5, 5 } }, // 2*psubw + split in getArithmeticInstrCost()
883 { ISD::AND, MVT::v32i8, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
884 { ISD::AND, MVT::v16i16, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
885 { ISD::AND, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
886 { ISD::AND, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
888 { ISD::OR, MVT::v32i8, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
889 { ISD::OR, MVT::v16i16, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
890 { ISD::OR, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
891 { ISD::OR, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
893 { ISD::XOR, MVT::v32i8, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
894 { ISD::XOR, MVT::v16i16, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
895 { ISD::XOR, MVT::v8i32, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
896 { ISD::XOR, MVT::v4i64, { 1, 1, 1, 1 } }, in getArithmeticInstrCost()
898 { ISD::MUL, MVT::v16i32, { 1, 10, 1, 2 } }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
899 { ISD::MUL, MVT::v8i32, { 1, 10, 1, 2 } }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
900 { ISD::MUL, MVT::v4i32, { 1, 10, 1, 2 } }, // pmulld (Skylake from agner.org) in getArithmeticInstrCost()
901 { ISD::MUL, MVT::v8i64, { 6, 9, 8, 8 } }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
902 { ISD::MUL, MVT::i64, { 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
904 { X86ISD::PMULUDQ, MVT::v8i64, { 1, 5, 1, 1 } }, in getArithmeticInstrCost()
906 { ISD::FNEG, MVT::v8f64, { 1, 1, 1, 2 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
907 { ISD::FADD, MVT::v8f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
908 { ISD::FADD, MVT::v4f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
909 { ISD::FSUB, MVT::v8f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
910 { ISD::FSUB, MVT::v4f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
911 { ISD::FMUL, MVT::v8f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
912 { ISD::FMUL, MVT::v4f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
913 { ISD::FMUL, MVT::v2f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
914 { ISD::FMUL, MVT::f64, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
916 { ISD::FDIV, MVT::f64, { 4, 14, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
917 { ISD::FDIV, MVT::v2f64, { 4, 14, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
918 { ISD::FDIV, MVT::v4f64, { 8, 14, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
919 { ISD::FDIV, MVT::v8f64, { 16, 23, 1, 3 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
921 { ISD::FNEG, MVT::v16f32, { 1, 1, 1, 2 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
922 { ISD::FADD, MVT::v16f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
923 { ISD::FADD, MVT::v8f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
924 { ISD::FSUB, MVT::v16f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
925 { ISD::FSUB, MVT::v8f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
926 { ISD::FMUL, MVT::v16f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
927 { ISD::FMUL, MVT::v8f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
928 { ISD::FMUL, MVT::v4f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
929 { ISD::FMUL, MVT::f32, { 1, 4, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
931 { ISD::FDIV, MVT::f32, { 3, 11, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
932 { ISD::FDIV, MVT::v4f32, { 3, 11, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
933 { ISD::FDIV, MVT::v8f32, { 5, 11, 1, 1 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
934 { ISD::FDIV, MVT::v16f32, { 10, 18, 1, 3 } }, // Skylake from http://www.agner.org/ in getArithmeticInstrCost()
945 { ISD::SHL, MVT::v4i32, { 2, 3, 1, 3 } }, // vpsllvd (Haswell from agner.org) in getArithmeticInstrCost()
946 { ISD::SRL, MVT::v4i32, { 2, 3, 1, 3 } }, // vpsrlvd (Haswell from agner.org) in getArithmeticInstrCost()
947 { ISD::SRA, MVT::v4i32, { 2, 3, 1, 3 } }, // vpsravd (Haswell from agner.org) in getArithmeticInstrCost()
948 { ISD::SHL, MVT::v8i32, { 4, 4, 1, 3 } }, // vpsllvd (Haswell from agner.org) in getArithmeticInstrCost()
949 { ISD::SRL, MVT::v8i32, { 4, 4, 1, 3 } }, // vpsrlvd (Haswell from agner.org) in getArithmeticInstrCost()
950 { ISD::SRA, MVT::v8i32, { 4, 4, 1, 3 } }, // vpsravd (Haswell from agner.org) in getArithmeticInstrCost()
951 { ISD::SHL, MVT::v2i64, { 2, 3, 1, 1 } }, // vpsllvq (Haswell from agner.org) in getArithmeticInstrCost()
952 { ISD::SRL, MVT::v2i64, { 2, 3, 1, 1 } }, // vpsrlvq (Haswell from agner.org) in getArithmeticInstrCost()
953 { ISD::SHL, MVT::v4i64, { 4, 4, 1, 2 } }, // vpsllvq (Haswell from agner.org) in getArithmeticInstrCost()
954 { ISD::SRL, MVT::v4i64, { 4, 4, 1, 2 } }, // vpsrlvq (Haswell from agner.org) in getArithmeticInstrCost()
958 if (ISD == ISD::SHL && LT.second == MVT::v32i16 && Op2Info.isConstant()) in getArithmeticInstrCost()
966 if (ST->hasAVX2() && !(ST->hasXOP() && LT.second == MVT::v4i32)) { in getArithmeticInstrCost()
967 if (ISD == ISD::SHL && LT.second == MVT::v16i16 && in getArithmeticInstrCost()
981 { ISD::SHL, MVT::v16i8, { 1, 3, 1, 1 } }, in getArithmeticInstrCost()
982 { ISD::SRL, MVT::v16i8, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
983 { ISD::SRA, MVT::v16i8, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
984 { ISD::SHL, MVT::v8i16, { 1, 3, 1, 1 } }, in getArithmeticInstrCost()
985 { ISD::SRL, MVT::v8i16, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
986 { ISD::SRA, MVT::v8i16, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
987 { ISD::SHL, MVT::v4i32, { 1, 3, 1, 1 } }, in getArithmeticInstrCost()
988 { ISD::SRL, MVT::v4i32, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
989 { ISD::SRA, MVT::v4i32, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
990 { ISD::SHL, MVT::v2i64, { 1, 3, 1, 1 } }, in getArithmeticInstrCost()
991 { ISD::SRL, MVT::v2i64, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
992 { ISD::SRA, MVT::v2i64, { 2, 3, 1, 1 } }, in getArithmeticInstrCost()
994 { ISD::SHL, MVT::v32i8, { 4, 7, 5, 6 } }, in getArithmeticInstrCost()
995 { ISD::SRL, MVT::v32i8, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
996 { ISD::SRA, MVT::v32i8, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
997 { ISD::SHL, MVT::v16i16, { 4, 7, 5, 6 } }, in getArithmeticInstrCost()
998 { ISD::SRL, MVT::v16i16, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
999 { ISD::SRA, MVT::v16i16, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1000 { ISD::SHL, MVT::v8i32, { 4, 7, 5, 6 } }, in getArithmeticInstrCost()
1001 { ISD::SRL, MVT::v8i32, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1002 { ISD::SRA, MVT::v8i32, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1003 { ISD::SHL, MVT::v4i64, { 4, 7, 5, 6 } }, in getArithmeticInstrCost()
1004 { ISD::SRL, MVT::v4i64, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1005 { ISD::SRA, MVT::v4i64, { 6, 7, 5, 6 } }, in getArithmeticInstrCost()
1022 MVT VT = LT.second; in getArithmeticInstrCost()
1025 if (((VT == MVT::v8i16 || VT == MVT::v4i32) && ST->hasSSE2()) || in getArithmeticInstrCost()
1026 ((VT == MVT::v16i16 || VT == MVT::v8i32) && ST->hasAVX())) in getArithmeticInstrCost()
1031 { ISD::FDIV, MVT::f32, { 18, 19, 1, 1 } }, // divss in getArithmeticInstrCost()
1032 { ISD::FDIV, MVT::v4f32, { 35, 36, 1, 1 } }, // divps in getArithmeticInstrCost()
1033 { ISD::FDIV, MVT::f64, { 33, 34, 1, 1 } }, // divsd in getArithmeticInstrCost()
1034 { ISD::FDIV, MVT::v2f64, { 65, 66, 1, 1 } }, // divpd in getArithmeticInstrCost()
1043 { ISD::MUL, MVT::v4i32, { 11, 11, 1, 7 } }, // pmulld in getArithmeticInstrCost()
1044 { ISD::MUL, MVT::v8i16, { 2, 5, 1, 1 } }, // pmullw in getArithmeticInstrCost()
1045 { ISD::FMUL, MVT::f64, { 2, 5, 1, 1 } }, // mulsd in getArithmeticInstrCost()
1046 { ISD::FMUL, MVT::f32, { 1, 4, 1, 1 } }, // mulss in getArithmeticInstrCost()
1047 { ISD::FMUL, MVT::v2f64, { 4, 7, 1, 1 } }, // mulpd in getArithmeticInstrCost()
1048 { ISD::FMUL, MVT::v4f32, { 2, 5, 1, 1 } }, // mulps in getArithmeticInstrCost()
1049 { ISD::FDIV, MVT::f32, { 17, 19, 1, 1 } }, // divss in getArithmeticInstrCost()
1050 { ISD::FDIV, MVT::v4f32, { 39, 39, 1, 6 } }, // divps in getArithmeticInstrCost()
1051 { ISD::FDIV, MVT::f64, { 32, 34, 1, 1 } }, // divsd in getArithmeticInstrCost()
1052 { ISD::FDIV, MVT::v2f64, { 69, 69, 1, 6 } }, // divpd in getArithmeticInstrCost()
1053 { ISD::FADD, MVT::v2f64, { 2, 4, 1, 1 } }, // addpd in getArithmeticInstrCost()
1054 { ISD::FSUB, MVT::v2f64, { 2, 4, 1, 1 } }, // subpd in getArithmeticInstrCost()
1060 { ISD::MUL, MVT::v2i64, { 17, 22, 9, 9 } }, in getArithmeticInstrCost()
1062 { ISD::ADD, MVT::v2i64, { 4, 2, 1, 2 } }, in getArithmeticInstrCost()
1063 { ISD::SUB, MVT::v2i64, { 4, 2, 1, 2 } }, in getArithmeticInstrCost()
1072 { ISD::SHL, MVT::v16i8, { 6, 21,11,16 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1073 { ISD::SHL, MVT::v32i8, { 6, 23,11,22 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1074 { ISD::SHL, MVT::v8i16, { 5, 18, 5,10 } }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
1075 { ISD::SHL, MVT::v16i16, { 8, 10,10,14 } }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
1077 { ISD::SRL, MVT::v16i8, { 6, 27,12,18 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1078 { ISD::SRL, MVT::v32i8, { 8, 30,12,24 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1079 { ISD::SRL, MVT::v8i16, { 5, 11, 5,10 } }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
1080 { ISD::SRL, MVT::v16i16, { 8, 10,10,14 } }, // extend/vpsrlvd/pack sequence. in getArithmeticInstrCost()
1082 { ISD::SRA, MVT::v16i8, { 17, 17,24,30 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1083 { ISD::SRA, MVT::v32i8, { 18, 20,24,43 } }, // vpblendvb sequence. in getArithmeticInstrCost()
1084 { ISD::SRA, MVT::v8i16, { 5, 11, 5,10 } }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
1085 { ISD::SRA, MVT::v16i16, { 8, 10,10,14 } }, // extend/vpsravd/pack sequence. in getArithmeticInstrCost()
1086 { ISD::SRA, MVT::v2i64, { 4, 5, 5, 5 } }, // srl/xor/sub sequence. in getArithmeticInstrCost()
1087 { ISD::SRA, MVT::v4i64, { 8, 8, 5, 9 } }, // srl/xor/sub sequence. in getArithmeticInstrCost()
1089 { ISD::SUB, MVT::v32i8, { 1, 1, 1, 2 } }, // psubb in getArithmeticInstrCost()
1090 { ISD::ADD, MVT::v32i8, { 1, 1, 1, 2 } }, // paddb in getArithmeticInstrCost()
1091 { ISD::SUB, MVT::v16i16, { 1, 1, 1, 2 } }, // psubw in getArithmeticInstrCost()
1092 { ISD::ADD, MVT::v16i16, { 1, 1, 1, 2 } }, // paddw in getArithmeticInstrCost()
1093 { ISD::SUB, MVT::v8i32, { 1, 1, 1, 2 } }, // psubd in getArithmeticInstrCost()
1094 { ISD::ADD, MVT::v8i32, { 1, 1, 1, 2 } }, // paddd in getArithmeticInstrCost()
1095 { ISD::SUB, MVT::v4i64, { 1, 1, 1, 2 } }, // psubq in getArithmeticInstrCost()
1096 { ISD::ADD, MVT::v4i64, { 1, 1, 1, 2 } }, // paddq in getArithmeticInstrCost()
1098 { ISD::MUL, MVT::v16i8, { 5, 18, 6,12 } }, // extend/pmullw/pack in getArithmeticInstrCost()
1099 { ISD::MUL, MVT::v32i8, { 6, 11,10,19 } }, // unpack/pmullw in getArithmeticInstrCost()
1100 { ISD::MUL, MVT::v16i16, { 2, 5, 1, 2 } }, // pmullw in getArithmeticInstrCost()
1101 { ISD::MUL, MVT::v8i32, { 4, 10, 1, 2 } }, // pmulld in getArithmeticInstrCost()
1102 { ISD::MUL, MVT::v4i32, { 2, 10, 1, 2 } }, // pmulld in getArithmeticInstrCost()
1103 { ISD::MUL, MVT::v4i64, { 6, 10, 8,13 } }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
1104 { ISD::MUL, MVT::v2i64, { 6, 10, 8, 8 } }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
1106 { X86ISD::PMULUDQ, MVT::v4i64, { 1, 5, 1, 1 } }, in getArithmeticInstrCost()
1108 { ISD::FNEG, MVT::v4f64, { 1, 1, 1, 2 } }, // vxorpd in getArithmeticInstrCost()
1109 { ISD::FNEG, MVT::v8f32, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1111 { ISD::FADD, MVT::f64, { 1, 4, 1, 1 } }, // vaddsd in getArithmeticInstrCost()
1112 { ISD::FADD, MVT::f32, { 1, 4, 1, 1 } }, // vaddss in getArithmeticInstrCost()
1113 { ISD::FADD, MVT::v2f64, { 1, 4, 1, 1 } }, // vaddpd in getArithmeticInstrCost()
1114 { ISD::FADD, MVT::v4f32, { 1, 4, 1, 1 } }, // vaddps in getArithmeticInstrCost()
1115 { ISD::FADD, MVT::v4f64, { 1, 4, 1, 2 } }, // vaddpd in getArithmeticInstrCost()
1116 { ISD::FADD, MVT::v8f32, { 1, 4, 1, 2 } }, // vaddps in getArithmeticInstrCost()
1118 { ISD::FSUB, MVT::f64, { 1, 4, 1, 1 } }, // vsubsd in getArithmeticInstrCost()
1119 { ISD::FSUB, MVT::f32, { 1, 4, 1, 1 } }, // vsubss in getArithmeticInstrCost()
1120 { ISD::FSUB, MVT::v2f64, { 1, 4, 1, 1 } }, // vsubpd in getArithmeticInstrCost()
1121 { ISD::FSUB, MVT::v4f32, { 1, 4, 1, 1 } }, // vsubps in getArithmeticInstrCost()
1122 { ISD::FSUB, MVT::v4f64, { 1, 4, 1, 2 } }, // vsubpd in getArithmeticInstrCost()
1123 { ISD::FSUB, MVT::v8f32, { 1, 4, 1, 2 } }, // vsubps in getArithmeticInstrCost()
1125 { ISD::FMUL, MVT::f64, { 1, 5, 1, 1 } }, // vmulsd in getArithmeticInstrCost()
1126 { ISD::FMUL, MVT::f32, { 1, 5, 1, 1 } }, // vmulss in getArithmeticInstrCost()
1127 { ISD::FMUL, MVT::v2f64, { 1, 5, 1, 1 } }, // vmulpd in getArithmeticInstrCost()
1128 { ISD::FMUL, MVT::v4f32, { 1, 5, 1, 1 } }, // vmulps in getArithmeticInstrCost()
1129 { ISD::FMUL, MVT::v4f64, { 1, 5, 1, 2 } }, // vmulpd in getArithmeticInstrCost()
1130 { ISD::FMUL, MVT::v8f32, { 1, 5, 1, 2 } }, // vmulps in getArithmeticInstrCost()
1132 { ISD::FDIV, MVT::f32, { 7, 13, 1, 1 } }, // vdivss in getArithmeticInstrCost()
1133 { ISD::FDIV, MVT::v4f32, { 7, 13, 1, 1 } }, // vdivps in getArithmeticInstrCost()
1134 { ISD::FDIV, MVT::v8f32, { 14, 21, 1, 3 } }, // vdivps in getArithmeticInstrCost()
1135 { ISD::FDIV, MVT::f64, { 14, 20, 1, 1 } }, // vdivsd in getArithmeticInstrCost()
1136 { ISD::FDIV, MVT::v2f64, { 14, 20, 1, 1 } }, // vdivpd in getArithmeticInstrCost()
1137 { ISD::FDIV, MVT::v4f64, { 28, 35, 1, 3 } }, // vdivpd in getArithmeticInstrCost()
1150 { ISD::MUL, MVT::v32i8, { 12, 13, 22, 23 } }, // unpack/pmullw + split in getArithmeticInstrCost()
1151 { ISD::MUL, MVT::v16i16, { 4, 8, 5, 6 } }, // pmullw + split in getArithmeticInstrCost()
1152 { ISD::MUL, MVT::v8i32, { 5, 8, 5, 10 } }, // pmulld + split in getArithmeticInstrCost()
1153 { ISD::MUL, MVT::v4i32, { 2, 5, 1, 3 } }, // pmulld in getArithmeticInstrCost()
1154 { ISD::MUL, MVT::v4i64, { 12, 15, 19, 20 } }, in getArithmeticInstrCost()
1156 { ISD::AND, MVT::v32i8, { 1, 1, 1, 2 } }, // vandps in getArithmeticInstrCost()
1157 { ISD::AND, MVT::v16i16, { 1, 1, 1, 2 } }, // vandps in getArithmeticInstrCost()
1158 { ISD::AND, MVT::v8i32, { 1, 1, 1, 2 } }, // vandps in getArithmeticInstrCost()
1159 { ISD::AND, MVT::v4i64, { 1, 1, 1, 2 } }, // vandps in getArithmeticInstrCost()
1161 { ISD::OR, MVT::v32i8, { 1, 1, 1, 2 } }, // vorps in getArithmeticInstrCost()
1162 { ISD::OR, MVT::v16i16, { 1, 1, 1, 2 } }, // vorps in getArithmeticInstrCost()
1163 { ISD::OR, MVT::v8i32, { 1, 1, 1, 2 } }, // vorps in getArithmeticInstrCost()
1164 { ISD::OR, MVT::v4i64, { 1, 1, 1, 2 } }, // vorps in getArithmeticInstrCost()
1166 { ISD::XOR, MVT::v32i8, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1167 { ISD::XOR, MVT::v16i16, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1168 { ISD::XOR, MVT::v8i32, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1169 { ISD::XOR, MVT::v4i64, { 1, 1, 1, 2 } }, // vxorps in getArithmeticInstrCost()
1171 { ISD::SUB, MVT::v32i8, { 4, 2, 5, 6 } }, // psubb + split in getArithmeticInstrCost()
1172 { ISD::ADD, MVT::v32i8, { 4, 2, 5, 6 } }, // paddb + split in getArithmeticInstrCost()
1173 { ISD::SUB, MVT::v16i16, { 4, 2, 5, 6 } }, // psubw + split in getArithmeticInstrCost()
1174 { ISD::ADD, MVT::v16i16, { 4, 2, 5, 6 } }, // paddw + split in getArithmeticInstrCost()
1175 { ISD::SUB, MVT::v8i32, { 4, 2, 5, 6 } }, // psubd + split in getArithmeticInstrCost()
1176 { ISD::ADD, MVT::v8i32, { 4, 2, 5, 6 } }, // paddd + split in getArithmeticInstrCost()
1177 { ISD::SUB, MVT::v4i64, { 4, 2, 5, 6 } }, // psubq + split in getArithmeticInstrCost()
1178 { ISD::ADD, MVT::v4i64, { 4, 2, 5, 6 } }, // paddq + split in getArithmeticInstrCost()
1179 { ISD::SUB, MVT::v2i64, { 1, 1, 1, 1 } }, // psubq in getArithmeticInstrCost()
1180 { ISD::ADD, MVT::v2i64, { 1, 1, 1, 1 } }, // paddq in getArithmeticInstrCost()
1182 { ISD::SHL, MVT::v16i8, { 10, 21,11,17 } }, // pblendvb sequence. in getArithmeticInstrCost()
1183 { ISD::SHL, MVT::v32i8, { 22, 22,27,40 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1184 { ISD::SHL, MVT::v8i16, { 6, 9,11,11 } }, // pblendvb sequence. in getArithmeticInstrCost()
1185 { ISD::SHL, MVT::v16i16, { 13, 16,24,25 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1186 { ISD::SHL, MVT::v4i32, { 3, 11, 4, 6 } }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
1187 { ISD::SHL, MVT::v8i32, { 9, 11,12,17 } }, // pslld/paddd/cvttps2dq/pmulld + split in getArithmeticInstrCost()
1188 { ISD::SHL, MVT::v2i64, { 2, 4, 4, 6 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1189 { ISD::SHL, MVT::v4i64, { 6, 7,11,15 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1191 { ISD::SRL, MVT::v16i8, { 11, 27,12,18 } }, // pblendvb sequence. in getArithmeticInstrCost()
1192 { ISD::SRL, MVT::v32i8, { 23, 23,30,43 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1193 { ISD::SRL, MVT::v8i16, { 13, 16,14,22 } }, // pblendvb sequence. in getArithmeticInstrCost()
1194 { ISD::SRL, MVT::v16i16, { 28, 30,31,48 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1195 { ISD::SRL, MVT::v4i32, { 6, 7,12,16 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1196 { ISD::SRL, MVT::v8i32, { 14, 14,26,34 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1197 { ISD::SRL, MVT::v2i64, { 2, 4, 4, 6 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1198 { ISD::SRL, MVT::v4i64, { 6, 7,11,15 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1200 { ISD::SRA, MVT::v16i8, { 21, 22,24,36 } }, // pblendvb sequence. in getArithmeticInstrCost()
1201 { ISD::SRA, MVT::v32i8, { 44, 45,51,76 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1202 { ISD::SRA, MVT::v8i16, { 13, 16,14,22 } }, // pblendvb sequence. in getArithmeticInstrCost()
1203 { ISD::SRA, MVT::v16i16, { 28, 30,31,48 } }, // pblendvb sequence + split. in getArithmeticInstrCost()
1204 { ISD::SRA, MVT::v4i32, { 6, 7,12,16 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1205 { ISD::SRA, MVT::v8i32, { 14, 14,26,34 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1206 { ISD::SRA, MVT::v2i64, { 5, 6,10,14 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1207 { ISD::SRA, MVT::v4i64, { 12, 12,22,30 } }, // Shift each lane + blend + split. in getArithmeticInstrCost()
1209 { ISD::FNEG, MVT::v4f64, { 2, 2, 1, 2 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1210 { ISD::FNEG, MVT::v8f32, { 2, 2, 1, 2 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1212 { ISD::FADD, MVT::f64, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1213 { ISD::FADD, MVT::f32, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1214 { ISD::FADD, MVT::v2f64, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1215 { ISD::FADD, MVT::v4f32, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1216 { ISD::FADD, MVT::v4f64, { 2, 5, 1, 2 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1217 { ISD::FADD, MVT::v8f32, { 2, 5, 1, 2 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1219 { ISD::FSUB, MVT::f64, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1220 { ISD::FSUB, MVT::f32, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1221 { ISD::FSUB, MVT::v2f64, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1222 { ISD::FSUB, MVT::v4f32, { 1, 5, 1, 1 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1223 { ISD::FSUB, MVT::v4f64, { 2, 5, 1, 2 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1224 { ISD::FSUB, MVT::v8f32, { 2, 5, 1, 2 } }, // BDVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1226 { ISD::FMUL, MVT::f64, { 2, 5, 1, 1 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1227 { ISD::FMUL, MVT::f32, { 1, 5, 1, 1 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1228 { ISD::FMUL, MVT::v2f64, { 2, 5, 1, 1 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1229 { ISD::FMUL, MVT::v4f32, { 1, 5, 1, 1 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1230 { ISD::FMUL, MVT::v4f64, { 4, 5, 1, 2 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1231 { ISD::FMUL, MVT::v8f32, { 2, 5, 1, 2 } }, // BTVER2 from http://www.agner.org/ in getArithmeticInstrCost()
1233 { ISD::FDIV, MVT::f32, { 14, 14, 1, 1 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1234 { ISD::FDIV, MVT::v4f32, { 14, 14, 1, 1 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1235 { ISD::FDIV, MVT::v8f32, { 28, 29, 1, 3 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1236 { ISD::FDIV, MVT::f64, { 22, 22, 1, 1 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1237 { ISD::FDIV, MVT::v2f64, { 22, 22, 1, 1 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1238 { ISD::FDIV, MVT::v4f64, { 44, 45, 1, 3 } }, // SNB from http://www.agner.org/ in getArithmeticInstrCost()
1247 { ISD::FADD, MVT::f64, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1248 { ISD::FADD, MVT::f32, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1249 { ISD::FADD, MVT::v2f64, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1250 { ISD::FADD, MVT::v4f32, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1252 { ISD::FSUB, MVT::f64, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1253 { ISD::FSUB, MVT::f32 , { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1254 { ISD::FSUB, MVT::v2f64, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1255 { ISD::FSUB, MVT::v4f32, { 1, 3, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1257 { ISD::FMUL, MVT::f64, { 1, 5, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1258 { ISD::FMUL, MVT::f32, { 1, 5, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1259 { ISD::FMUL, MVT::v2f64, { 1, 5, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1260 { ISD::FMUL, MVT::v4f32, { 1, 5, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1262 { ISD::FDIV, MVT::f32, { 14, 14, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1263 { ISD::FDIV, MVT::v4f32, { 14, 14, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1264 { ISD::FDIV, MVT::f64, { 22, 22, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1265 { ISD::FDIV, MVT::v2f64, { 22, 22, 1, 1 } }, // Nehalem from http://www.agner.org/ in getArithmeticInstrCost()
1267 { ISD::MUL, MVT::v2i64, { 6, 10,10,10 } } // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
1276 { ISD::SHL, MVT::v16i8, { 15, 24,17,22 } }, // pblendvb sequence. in getArithmeticInstrCost()
1277 { ISD::SHL, MVT::v8i16, { 11, 14,11,11 } }, // pblendvb sequence. in getArithmeticInstrCost()
1278 { ISD::SHL, MVT::v4i32, { 14, 20, 4,10 } }, // pslld/paddd/cvttps2dq/pmulld in getArithmeticInstrCost()
1280 { ISD::SRL, MVT::v16i8, { 16, 27,18,24 } }, // pblendvb sequence. in getArithmeticInstrCost()
1281 { ISD::SRL, MVT::v8i16, { 22, 26,23,27 } }, // pblendvb sequence. in getArithmeticInstrCost()
1282 { ISD::SRL, MVT::v4i32, { 16, 17,15,19 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1283 { ISD::SRL, MVT::v2i64, { 4, 6, 5, 7 } }, // splat+shuffle sequence. in getArithmeticInstrCost()
1285 { ISD::SRA, MVT::v16i8, { 38, 41,30,36 } }, // pblendvb sequence. in getArithmeticInstrCost()
1286 { ISD::SRA, MVT::v8i16, { 22, 26,23,27 } }, // pblendvb sequence. in getArithmeticInstrCost()
1287 { ISD::SRA, MVT::v4i32, { 16, 17,15,19 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1288 { ISD::SRA, MVT::v2i64, { 8, 17, 5, 7 } }, // splat+shuffle sequence. in getArithmeticInstrCost()
1290 { ISD::MUL, MVT::v16i8, { 5, 18,10,12 } }, // 2*unpack/2*pmullw/2*and/pack in getArithmeticInstrCost()
1291 { ISD::MUL, MVT::v4i32, { 2, 11, 1, 1 } } // pmulld (Nehalem from agner.org) in getArithmeticInstrCost()
1302 { ISD::SHL, MVT::v16i8, { 13, 21,26,28 } }, // cmpgtb sequence. in getArithmeticInstrCost()
1303 { ISD::SHL, MVT::v8i16, { 24, 27,16,20 } }, // cmpgtw sequence. in getArithmeticInstrCost()
1304 { ISD::SHL, MVT::v4i32, { 17, 19,10,12 } }, // pslld/paddd/cvttps2dq/pmuludq. in getArithmeticInstrCost()
1305 { ISD::SHL, MVT::v2i64, { 4, 6, 5, 7 } }, // splat+shuffle sequence. in getArithmeticInstrCost()
1307 { ISD::SRL, MVT::v16i8, { 14, 28,27,30 } }, // cmpgtb sequence. in getArithmeticInstrCost()
1308 { ISD::SRL, MVT::v8i16, { 16, 19,31,31 } }, // cmpgtw sequence. in getArithmeticInstrCost()
1309 { ISD::SRL, MVT::v4i32, { 12, 12,15,19 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1310 { ISD::SRL, MVT::v2i64, { 4, 6, 5, 7 } }, // splat+shuffle sequence. in getArithmeticInstrCost()
1312 { ISD::SRA, MVT::v16i8, { 27, 30,54,54 } }, // unpacked cmpgtb sequence. in getArithmeticInstrCost()
1313 { ISD::SRA, MVT::v8i16, { 16, 19,31,31 } }, // cmpgtw sequence. in getArithmeticInstrCost()
1314 { ISD::SRA, MVT::v4i32, { 12, 12,15,19 } }, // Shift each lane + blend. in getArithmeticInstrCost()
1315 { ISD::SRA, MVT::v2i64, { 8, 11,12,16 } }, // srl/xor/sub splat+shuffle sequence. in getArithmeticInstrCost()
1317 { ISD::AND, MVT::v16i8, { 1, 1, 1, 1 } }, // pand in getArithmeticInstrCost()
1318 { ISD::AND, MVT::v8i16, { 1, 1, 1, 1 } }, // pand in getArithmeticInstrCost()
1319 { ISD::AND, MVT::v4i32, { 1, 1, 1, 1 } }, // pand in getArithmeticInstrCost()
1320 { ISD::AND, MVT::v2i64, { 1, 1, 1, 1 } }, // pand in getArithmeticInstrCost()
1322 { ISD::OR, MVT::v16i8, { 1, 1, 1, 1 } }, // por in getArithmeticInstrCost()
1323 { ISD::OR, MVT::v8i16, { 1, 1, 1, 1 } }, // por in getArithmeticInstrCost()
1324 { ISD::OR, MVT::v4i32, { 1, 1, 1, 1 } }, // por in getArithmeticInstrCost()
1325 { ISD::OR, MVT::v2i64, { 1, 1, 1, 1 } }, // por in getArithmeticInstrCost()
1327 { ISD::XOR, MVT::v16i8, { 1, 1, 1, 1 } }, // pxor in getArithmeticInstrCost()
1328 { ISD::XOR, MVT::v8i16, { 1, 1, 1, 1 } }, // pxor in getArithmeticInstrCost()
1329 { ISD::XOR, MVT::v4i32, { 1, 1, 1, 1 } }, // pxor in getArithmeticInstrCost()
1330 { ISD::XOR, MVT::v2i64, { 1, 1, 1, 1 } }, // pxor in getArithmeticInstrCost()
1332 { ISD::ADD, MVT::v2i64, { 1, 2, 1, 2 } }, // paddq in getArithmeticInstrCost()
1333 { ISD::SUB, MVT::v2i64, { 1, 2, 1, 2 } }, // psubq in getArithmeticInstrCost()
1335 { ISD::MUL, MVT::v16i8, { 5, 18,12,12 } }, // 2*unpack/2*pmullw/2*and/pack in getArithmeticInstrCost()
1336 { ISD::MUL, MVT::v8i16, { 1, 5, 1, 1 } }, // pmullw in getArithmeticInstrCost()
1337 { ISD::MUL, MVT::v4i32, { 6, 8, 7, 7 } }, // 3*pmuludq/4*shuffle in getArithmeticInstrCost()
1338 { ISD::MUL, MVT::v2i64, { 7, 10,10,10 } }, // 3*pmuludq/3*shift/2*add in getArithmeticInstrCost()
1340 { X86ISD::PMULUDQ, MVT::v2i64, { 1, 5, 1, 1 } }, in getArithmeticInstrCost()
1342 { ISD::FDIV, MVT::f32, { 23, 23, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1343 { ISD::FDIV, MVT::v4f32, { 39, 39, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1344 { ISD::FDIV, MVT::f64, { 38, 38, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1345 { ISD::FDIV, MVT::v2f64, { 69, 69, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1347 { ISD::FNEG, MVT::f32, { 1, 1, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1348 { ISD::FNEG, MVT::f64, { 1, 1, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1349 { ISD::FNEG, MVT::v4f32, { 1, 1, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1350 { ISD::FNEG, MVT::v2f64, { 1, 1, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1352 { ISD::FADD, MVT::f32, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1353 { ISD::FADD, MVT::f64, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1354 { ISD::FADD, MVT::v2f64, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1356 { ISD::FSUB, MVT::f32, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1357 { ISD::FSUB, MVT::f64, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1358 { ISD::FSUB, MVT::v2f64, { 2, 3, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1360 { ISD::FMUL, MVT::f64, { 2, 5, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1361 { ISD::FMUL, MVT::v2f64, { 2, 5, 1, 1 } }, // Pentium IV from http://www.agner.org/ in getArithmeticInstrCost()
1370 { ISD::FDIV, MVT::f32, { 17, 18, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1371 { ISD::FDIV, MVT::v4f32, { 34, 48, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1373 { ISD::FNEG, MVT::f32, { 2, 2, 1, 2 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1374 { ISD::FNEG, MVT::v4f32, { 2, 2, 1, 2 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1376 { ISD::FADD, MVT::f32, { 1, 3, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1377 { ISD::FADD, MVT::v4f32, { 2, 3, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1379 { ISD::FSUB, MVT::f32, { 1, 3, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1380 { ISD::FSUB, MVT::v4f32, { 2, 3, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1382 { ISD::FMUL, MVT::f32, { 2, 5, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1383 { ISD::FMUL, MVT::v4f32, { 2, 5, 1, 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1392 { ISD::ADD, MVT::i64, { 1 } }, // Core (Merom) from http://www.agner.org/ in getArithmeticInstrCost()
1393 { ISD::SUB, MVT::i64, { 1 } }, // Core (Merom) from http://www.agner.org/ in getArithmeticInstrCost()
1394 { ISD::MUL, MVT::i64, { 2, 6, 1, 2 } }, in getArithmeticInstrCost()
1403 { ISD::ADD, MVT::i8, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1404 { ISD::ADD, MVT::i16, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1405 { ISD::ADD, MVT::i32, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1407 { ISD::SUB, MVT::i8, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1408 { ISD::SUB, MVT::i16, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1409 { ISD::SUB, MVT::i32, { 1 } }, // Pentium III from http://www.agner.org/ in getArithmeticInstrCost()
1411 { ISD::MUL, MVT::i8, { 3, 4, 1, 1 } }, in getArithmeticInstrCost()
1412 { ISD::MUL, MVT::i16, { 2, 4, 1, 1 } }, in getArithmeticInstrCost()
1413 { ISD::MUL, MVT::i32, { 1, 4, 1, 1 } }, in getArithmeticInstrCost()
1415 { ISD::FNEG, MVT::f64, { 2, 2, 1, 3 } }, // (x87) in getArithmeticInstrCost()
1416 { ISD::FADD, MVT::f64, { 2, 3, 1, 1 } }, // (x87) in getArithmeticInstrCost()
1417 { ISD::FSUB, MVT::f64, { 2, 3, 1, 1 } }, // (x87) in getArithmeticInstrCost()
1418 { ISD::FMUL, MVT::f64, { 2, 5, 1, 1 } }, // (x87) in getArithmeticInstrCost()
1419 { ISD::FDIV, MVT::f64, { 38, 38, 1, 1 } }, // (x87) in getArithmeticInstrCost()
1479 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(BaseTp); in getShuffleCost()
1494 if (LT.second.isVector() && LT.second.getScalarType() == MVT::bf16) in getShuffleCost()
1495 LT.second = LT.second.changeVectorElementType(MVT::f16); in getShuffleCost()
1503 std::pair<InstructionCost, MVT> SubLT = getTypeLegalizationCost(SubTp); in getShuffleCost()
1550 std::pair<InstructionCost, MVT> SubLT = getTypeLegalizationCost(SubTp); in getShuffleCost()
1567 {TTI::SK_Broadcast, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1568 {TTI::SK_Broadcast, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1569 {TTI::SK_Broadcast, MVT::v8i8, 2}, // punpck/pshuflw in getShuffleCost()
1570 {TTI::SK_Broadcast, MVT::v4i8, 2}, // punpck/pshuflw in getShuffleCost()
1571 {TTI::SK_Broadcast, MVT::v2i8, 1}, // punpck in getShuffleCost()
1573 {TTI::SK_Reverse, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1574 {TTI::SK_Reverse, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1575 {TTI::SK_Reverse, MVT::v4i8, 3}, // punpck/pshuflw/packus in getShuffleCost()
1576 {TTI::SK_Reverse, MVT::v2i8, 1}, // punpck in getShuffleCost()
1578 {TTI::SK_Splice, MVT::v4i16, 2}, // punpck+psrldq in getShuffleCost()
1579 {TTI::SK_Splice, MVT::v2i16, 2}, // punpck+psrldq in getShuffleCost()
1580 {TTI::SK_Splice, MVT::v4i8, 2}, // punpck+psrldq in getShuffleCost()
1581 {TTI::SK_Splice, MVT::v2i8, 2}, // punpck+psrldq in getShuffleCost()
1583 {TTI::SK_PermuteTwoSrc, MVT::v4i16, 2}, // punpck/pshuflw in getShuffleCost()
1584 {TTI::SK_PermuteTwoSrc, MVT::v2i16, 2}, // punpck/pshuflw in getShuffleCost()
1585 {TTI::SK_PermuteTwoSrc, MVT::v8i8, 7}, // punpck/pshuflw in getShuffleCost()
1586 {TTI::SK_PermuteTwoSrc, MVT::v4i8, 4}, // punpck/pshuflw in getShuffleCost()
1587 {TTI::SK_PermuteTwoSrc, MVT::v2i8, 2}, // punpck in getShuffleCost()
1589 {TTI::SK_PermuteSingleSrc, MVT::v4i16, 1}, // pshuflw in getShuffleCost()
1590 {TTI::SK_PermuteSingleSrc, MVT::v2i16, 1}, // pshuflw in getShuffleCost()
1591 {TTI::SK_PermuteSingleSrc, MVT::v8i8, 5}, // punpck/pshuflw in getShuffleCost()
1592 {TTI::SK_PermuteSingleSrc, MVT::v4i8, 3}, // punpck/pshuflw in getShuffleCost()
1593 {TTI::SK_PermuteSingleSrc, MVT::v2i8, 1}, // punpck in getShuffleCost()
1606 MVT LegalVT = LT.second; in getShuffleCost()
1700 {TTI::SK_Reverse, MVT::v64i8, 1}, // vpermb in getShuffleCost()
1701 {TTI::SK_Reverse, MVT::v32i8, 1}, // vpermb in getShuffleCost()
1703 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 1}, // vpermb in getShuffleCost()
1704 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 1}, // vpermb in getShuffleCost()
1706 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 2}, // vpermt2b in getShuffleCost()
1707 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 2}, // vpermt2b in getShuffleCost()
1708 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 2} // vpermt2b in getShuffleCost()
1717 {TTI::SK_Broadcast, MVT::v32i16, 1}, // vpbroadcastw in getShuffleCost()
1718 {TTI::SK_Broadcast, MVT::v32f16, 1}, // vpbroadcastw in getShuffleCost()
1719 {TTI::SK_Broadcast, MVT::v64i8, 1}, // vpbroadcastb in getShuffleCost()
1721 {TTI::SK_Reverse, MVT::v32i16, 2}, // vpermw in getShuffleCost()
1722 {TTI::SK_Reverse, MVT::v32f16, 2}, // vpermw in getShuffleCost()
1723 {TTI::SK_Reverse, MVT::v16i16, 2}, // vpermw in getShuffleCost()
1724 {TTI::SK_Reverse, MVT::v64i8, 2}, // pshufb + vshufi64x2 in getShuffleCost()
1726 {TTI::SK_PermuteSingleSrc, MVT::v32i16, 2}, // vpermw in getShuffleCost()
1727 {TTI::SK_PermuteSingleSrc, MVT::v32f16, 2}, // vpermw in getShuffleCost()
1728 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 2}, // vpermw in getShuffleCost()
1729 {TTI::SK_PermuteSingleSrc, MVT::v16f16, 2}, // vpermw in getShuffleCost()
1730 {TTI::SK_PermuteSingleSrc, MVT::v64i8, 8}, // extend to v32i16 in getShuffleCost()
1732 {TTI::SK_PermuteTwoSrc, MVT::v32i16, 2}, // vpermt2w in getShuffleCost()
1733 {TTI::SK_PermuteTwoSrc, MVT::v32f16, 2}, // vpermt2w in getShuffleCost()
1734 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 2}, // vpermt2w in getShuffleCost()
1735 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 2}, // vpermt2w in getShuffleCost()
1736 {TTI::SK_PermuteTwoSrc, MVT::v64i8, 19}, // 6 * v32i8 + 1 in getShuffleCost()
1738 {TTI::SK_Select, MVT::v32i16, 1}, // vblendmw in getShuffleCost()
1739 {TTI::SK_Select, MVT::v64i8, 1}, // vblendmb in getShuffleCost()
1741 {TTI::SK_Splice, MVT::v32i16, 2}, // vshufi64x2 + palignr in getShuffleCost()
1742 {TTI::SK_Splice, MVT::v32f16, 2}, // vshufi64x2 + palignr in getShuffleCost()
1743 {TTI::SK_Splice, MVT::v64i8, 2}, // vshufi64x2 + palignr in getShuffleCost()
1752 {TTI::SK_Broadcast, MVT::v8f64, { 1, 1, 1, 1 } }, // vbroadcastsd in getShuffleCost()
1753 {TTI::SK_Broadcast, MVT::v16f32, { 1, 1, 1, 1 } }, // vbroadcastss in getShuffleCost()
1754 {TTI::SK_Broadcast, MVT::v8i64, { 1, 1, 1, 1 } }, // vpbroadcastq in getShuffleCost()
1755 {TTI::SK_Broadcast, MVT::v16i32, { 1, 1, 1, 1 } }, // vpbroadcastd in getShuffleCost()
1756 {TTI::SK_Broadcast, MVT::v32i16, { 1, 1, 1, 1 } }, // vpbroadcastw in getShuffleCost()
1757 {TTI::SK_Broadcast, MVT::v32f16, { 1, 1, 1, 1 } }, // vpbroadcastw in getShuffleCost()
1758 {TTI::SK_Broadcast, MVT::v64i8, { 1, 1, 1, 1 } }, // vpbroadcastb in getShuffleCost()
1760 {TTI::SK_Reverse, MVT::v8f64, { 1, 3, 1, 1 } }, // vpermpd in getShuffleCost()
1761 {TTI::SK_Reverse, MVT::v16f32, { 1, 3, 1, 1 } }, // vpermps in getShuffleCost()
1762 {TTI::SK_Reverse, MVT::v8i64, { 1, 3, 1, 1 } }, // vpermq in getShuffleCost()
1763 {TTI::SK_Reverse, MVT::v16i32, { 1, 3, 1, 1 } }, // vpermd in getShuffleCost()
1764 {TTI::SK_Reverse, MVT::v32i16, { 7, 7, 7, 7 } }, // per mca in getShuffleCost()
1765 {TTI::SK_Reverse, MVT::v32f16, { 7, 7, 7, 7 } }, // per mca in getShuffleCost()
1766 {TTI::SK_Reverse, MVT::v64i8, { 7, 7, 7, 7 } }, // per mca in getShuffleCost()
1768 {TTI::SK_Splice, MVT::v8f64, { 1, 1, 1, 1 } }, // vpalignd in getShuffleCost()
1769 {TTI::SK_Splice, MVT::v4f64, { 1, 1, 1, 1 } }, // vpalignd in getShuffleCost()
1770 {TTI::SK_Splice, MVT::v16f32, { 1, 1, 1, 1 } }, // vpalignd in getShuffleCost()
1771 {TTI::SK_Splice, MVT::v8f32, { 1, 1, 1, 1 } }, // vpalignd in getShuffleCost()
1772 {TTI::SK_Splice, MVT::v8i64, { 1, 1, 1, 1 } }, // vpalignd in getShuffleCost()
1773 {TTI::SK_Splice, MVT::v4i64, { 1, 1, 1, 1 } }, // vpalignd in getShuffleCost()
1774 {TTI::SK_Splice, MVT::v16i32, { 1, 1, 1, 1 } }, // vpalignd in getShuffleCost()
1775 {TTI::SK_Splice, MVT::v8i32, { 1, 1, 1, 1 } }, // vpalignd in getShuffleCost()
1776 {TTI::SK_Splice, MVT::v32i16, { 4, 4, 4, 4 } }, // split + palignr in getShuffleCost()
1777 {TTI::SK_Splice, MVT::v32f16, { 4, 4, 4, 4 } }, // split + palignr in getShuffleCost()
1778 {TTI::SK_Splice, MVT::v64i8, { 4, 4, 4, 4 } }, // split + palignr in getShuffleCost()
1780 {TTI::SK_PermuteSingleSrc, MVT::v8f64, { 1, 3, 1, 1 } }, // vpermpd in getShuffleCost()
1781 {TTI::SK_PermuteSingleSrc, MVT::v4f64, { 1, 3, 1, 1 } }, // vpermpd in getShuffleCost()
1782 {TTI::SK_PermuteSingleSrc, MVT::v2f64, { 1, 3, 1, 1 } }, // vpermpd in getShuffleCost()
1783 {TTI::SK_PermuteSingleSrc, MVT::v16f32, { 1, 3, 1, 1 } }, // vpermps in getShuffleCost()
1784 {TTI::SK_PermuteSingleSrc, MVT::v8f32, { 1, 3, 1, 1 } }, // vpermps in getShuffleCost()
1785 {TTI::SK_PermuteSingleSrc, MVT::v4f32, { 1, 3, 1, 1 } }, // vpermps in getShuffleCost()
1786 {TTI::SK_PermuteSingleSrc, MVT::v8i64, { 1, 3, 1, 1 } }, // vpermq in getShuffleCost()
1787 {TTI::SK_PermuteSingleSrc, MVT::v4i64, { 1, 3, 1, 1 } }, // vpermq in getShuffleCost()
1788 {TTI::SK_PermuteSingleSrc, MVT::v2i64, { 1, 3, 1, 1 } }, // vpermq in getShuffleCost()
1789 {TTI::SK_PermuteSingleSrc, MVT::v16i32, { 1, 3, 1, 1 } }, // vpermd in getShuffleCost()
1790 {TTI::SK_PermuteSingleSrc, MVT::v8i32, { 1, 3, 1, 1 } }, // vpermd in getShuffleCost()
1791 {TTI::SK_PermuteSingleSrc, MVT::v4i32, { 1, 3, 1, 1 } }, // vpermd in getShuffleCost()
1792 {TTI::SK_PermuteSingleSrc, MVT::v16i8, { 1, 3, 1, 1 } }, // pshufb in getShuffleCost()
1794 {TTI::SK_PermuteTwoSrc, MVT::v8f64, { 1, 3, 1, 1 } }, // vpermt2pd in getShuffleCost()
1795 {TTI::SK_PermuteTwoSrc, MVT::v16f32, { 1, 3, 1, 1 } }, // vpermt2ps in getShuffleCost()
1796 {TTI::SK_PermuteTwoSrc, MVT::v8i64, { 1, 3, 1, 1 } }, // vpermt2q in getShuffleCost()
1797 {TTI::SK_PermuteTwoSrc, MVT::v16i32, { 1, 3, 1, 1 } }, // vpermt2d in getShuffleCost()
1798 {TTI::SK_PermuteTwoSrc, MVT::v4f64, { 1, 3, 1, 1 } }, // vpermt2pd in getShuffleCost()
1799 {TTI::SK_PermuteTwoSrc, MVT::v8f32, { 1, 3, 1, 1 } }, // vpermt2ps in getShuffleCost()
1800 {TTI::SK_PermuteTwoSrc, MVT::v4i64, { 1, 3, 1, 1 } }, // vpermt2q in getShuffleCost()
1801 {TTI::SK_PermuteTwoSrc, MVT::v8i32, { 1, 3, 1, 1 } }, // vpermt2d in getShuffleCost()
1802 {TTI::SK_PermuteTwoSrc, MVT::v2f64, { 1, 3, 1, 1 } }, // vpermt2pd in getShuffleCost()
1803 {TTI::SK_PermuteTwoSrc, MVT::v4f32, { 1, 3, 1, 1 } }, // vpermt2ps in getShuffleCost()
1804 {TTI::SK_PermuteTwoSrc, MVT::v2i64, { 1, 3, 1, 1 } }, // vpermt2q in getShuffleCost()
1805 {TTI::SK_PermuteTwoSrc, MVT::v4i32, { 1, 3, 1, 1 } }, // vpermt2d in getShuffleCost()
1809 {TTI::SK_PermuteSingleSrc, MVT::v32i16, { 14, 14, 14, 14 } }, in getShuffleCost()
1810 {TTI::SK_PermuteSingleSrc, MVT::v32f16, { 14, 14, 14, 14 } }, in getShuffleCost()
1811 {TTI::SK_PermuteSingleSrc, MVT::v64i8, { 14, 14, 14, 14 } }, in getShuffleCost()
1812 {TTI::SK_PermuteTwoSrc, MVT::v32i16, { 42, 42, 42, 42 } }, in getShuffleCost()
1813 {TTI::SK_PermuteTwoSrc, MVT::v32f16, { 42, 42, 42, 42 } }, in getShuffleCost()
1814 {TTI::SK_PermuteTwoSrc, MVT::v64i8, { 42, 42, 42, 42 } }, in getShuffleCost()
1816 {TTI::SK_Select, MVT::v32i16, { 1, 1, 1, 1 } }, // vpternlogq in getShuffleCost()
1817 {TTI::SK_Select, MVT::v32f16, { 1, 1, 1, 1 } }, // vpternlogq in getShuffleCost()
1818 {TTI::SK_Select, MVT::v64i8, { 1, 1, 1, 1 } }, // vpternlogq in getShuffleCost()
1819 {TTI::SK_Select, MVT::v8f64, { 1, 1, 1, 1 } }, // vblendmpd in getShuffleCost()
1820 {TTI::SK_Select, MVT::v16f32, { 1, 1, 1, 1 } }, // vblendmps in getShuffleCost()
1821 {TTI::SK_Select, MVT::v8i64, { 1, 1, 1, 1 } }, // vblendmq in getShuffleCost()
1822 {TTI::SK_Select, MVT::v16i32, { 1, 1, 1, 1 } }, // vblendmd in getShuffleCost()
1831 {TTI::SK_Broadcast, MVT::v4f64, 1}, // vbroadcastpd in getShuffleCost()
1832 {TTI::SK_Broadcast, MVT::v8f32, 1}, // vbroadcastps in getShuffleCost()
1833 {TTI::SK_Broadcast, MVT::v4i64, 1}, // vpbroadcastq in getShuffleCost()
1834 {TTI::SK_Broadcast, MVT::v8i32, 1}, // vpbroadcastd in getShuffleCost()
1835 {TTI::SK_Broadcast, MVT::v16i16, 1}, // vpbroadcastw in getShuffleCost()
1836 {TTI::SK_Broadcast, MVT::v16f16, 1}, // vpbroadcastw in getShuffleCost()
1837 {TTI::SK_Broadcast, MVT::v32i8, 1}, // vpbroadcastb in getShuffleCost()
1839 {TTI::SK_Reverse, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1840 {TTI::SK_Reverse, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1841 {TTI::SK_Reverse, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1842 {TTI::SK_Reverse, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1843 {TTI::SK_Reverse, MVT::v16i16, 2}, // vperm2i128 + pshufb in getShuffleCost()
1844 {TTI::SK_Reverse, MVT::v16f16, 2}, // vperm2i128 + pshufb in getShuffleCost()
1845 {TTI::SK_Reverse, MVT::v32i8, 2}, // vperm2i128 + pshufb in getShuffleCost()
1847 {TTI::SK_Select, MVT::v16i16, 1}, // vpblendvb in getShuffleCost()
1848 {TTI::SK_Select, MVT::v16f16, 1}, // vpblendvb in getShuffleCost()
1849 {TTI::SK_Select, MVT::v32i8, 1}, // vpblendvb in getShuffleCost()
1851 {TTI::SK_Splice, MVT::v8i32, 2}, // vperm2i128 + vpalignr in getShuffleCost()
1852 {TTI::SK_Splice, MVT::v8f32, 2}, // vperm2i128 + vpalignr in getShuffleCost()
1853 {TTI::SK_Splice, MVT::v16i16, 2}, // vperm2i128 + vpalignr in getShuffleCost()
1854 {TTI::SK_Splice, MVT::v16f16, 2}, // vperm2i128 + vpalignr in getShuffleCost()
1855 {TTI::SK_Splice, MVT::v32i8, 2}, // vperm2i128 + vpalignr in getShuffleCost()
1857 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 1}, // vpermpd in getShuffleCost()
1858 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 1}, // vpermps in getShuffleCost()
1859 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 1}, // vpermq in getShuffleCost()
1860 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 1}, // vpermd in getShuffleCost()
1861 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1863 {TTI::SK_PermuteSingleSrc, MVT::v16f16, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1865 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vperm2i128 + 2*vpshufb in getShuffleCost()
1868 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vpermpd + vblendpd in getShuffleCost()
1869 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 3}, // 2*vpermps + vblendps in getShuffleCost()
1870 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vpermq + vpblendd in getShuffleCost()
1871 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 3}, // 2*vpermd + vpblendd in getShuffleCost()
1872 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1874 {TTI::SK_PermuteTwoSrc, MVT::v16f16, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1876 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 7}, // 2*vperm2i128 + 4*vpshufb in getShuffleCost()
1885 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1886 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1887 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vpermil2pd in getShuffleCost()
1888 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 2}, // vperm2f128 + vpermil2ps in getShuffleCost()
1889 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1891 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 4}, // vextractf128 + 2*vpperm in getShuffleCost()
1894 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1896 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 1}, // vpperm in getShuffleCost()
1897 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 9}, // 2*vextractf128 + 6*vpperm in getShuffleCost()
1899 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 1}, // vpperm in getShuffleCost()
1907 {TTI::SK_Broadcast, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1908 {TTI::SK_Broadcast, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1909 {TTI::SK_Broadcast, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1910 {TTI::SK_Broadcast, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1911 {TTI::SK_Broadcast, MVT::v16i16, 3}, // vpshuflw + vpshufd + vinsertf128 in getShuffleCost()
1912 {TTI::SK_Broadcast, MVT::v16f16, 3}, // vpshuflw + vpshufd + vinsertf128 in getShuffleCost()
1913 {TTI::SK_Broadcast, MVT::v32i8, 2}, // vpshufb + vinsertf128 in getShuffleCost()
1915 {TTI::SK_Reverse, MVT::v4f64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1916 {TTI::SK_Reverse, MVT::v8f32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1917 {TTI::SK_Reverse, MVT::v4i64, 2}, // vperm2f128 + vpermilpd in getShuffleCost()
1918 {TTI::SK_Reverse, MVT::v8i32, 2}, // vperm2f128 + vpermilps in getShuffleCost()
1919 {TTI::SK_Reverse, MVT::v16i16, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1921 {TTI::SK_Reverse, MVT::v16f16, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1923 {TTI::SK_Reverse, MVT::v32i8, 4}, // vextractf128 + 2*pshufb in getShuffleCost()
1926 {TTI::SK_Select, MVT::v4i64, 1}, // vblendpd in getShuffleCost()
1927 {TTI::SK_Select, MVT::v4f64, 1}, // vblendpd in getShuffleCost()
1928 {TTI::SK_Select, MVT::v8i32, 1}, // vblendps in getShuffleCost()
1929 {TTI::SK_Select, MVT::v8f32, 1}, // vblendps in getShuffleCost()
1930 {TTI::SK_Select, MVT::v16i16, 3}, // vpand + vpandn + vpor in getShuffleCost()
1931 {TTI::SK_Select, MVT::v16f16, 3}, // vpand + vpandn + vpor in getShuffleCost()
1932 {TTI::SK_Select, MVT::v32i8, 3}, // vpand + vpandn + vpor in getShuffleCost()
1934 {TTI::SK_Splice, MVT::v4i64, 2}, // vperm2f128 + shufpd in getShuffleCost()
1935 {TTI::SK_Splice, MVT::v4f64, 2}, // vperm2f128 + shufpd in getShuffleCost()
1936 {TTI::SK_Splice, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1937 {TTI::SK_Splice, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1938 {TTI::SK_Splice, MVT::v16i16, 5}, // 2*vperm2f128 + 2*vpalignr + vinsertf128 in getShuffleCost()
1939 {TTI::SK_Splice, MVT::v16f16, 5}, // 2*vperm2f128 + 2*vpalignr + vinsertf128 in getShuffleCost()
1940 {TTI::SK_Splice, MVT::v32i8, 5}, // 2*vperm2f128 + 2*vpalignr + vinsertf128 in getShuffleCost()
1942 {TTI::SK_PermuteSingleSrc, MVT::v4f64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1943 {TTI::SK_PermuteSingleSrc, MVT::v4i64, 2}, // vperm2f128 + vshufpd in getShuffleCost()
1944 {TTI::SK_PermuteSingleSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1945 {TTI::SK_PermuteSingleSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1946 {TTI::SK_PermuteSingleSrc, MVT::v16i16, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1948 {TTI::SK_PermuteSingleSrc, MVT::v16f16, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1950 {TTI::SK_PermuteSingleSrc, MVT::v32i8, 8}, // vextractf128 + 4*pshufb in getShuffleCost()
1953 {TTI::SK_PermuteTwoSrc, MVT::v4f64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1954 {TTI::SK_PermuteTwoSrc, MVT::v4i64, 3}, // 2*vperm2f128 + vshufpd in getShuffleCost()
1955 {TTI::SK_PermuteTwoSrc, MVT::v8f32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1956 {TTI::SK_PermuteTwoSrc, MVT::v8i32, 4}, // 2*vperm2f128 + 2*vshufps in getShuffleCost()
1957 {TTI::SK_PermuteTwoSrc, MVT::v16i16, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1959 {TTI::SK_PermuteTwoSrc, MVT::v16f16, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1961 {TTI::SK_PermuteTwoSrc, MVT::v32i8, 15}, // 2*vextractf128 + 8*pshufb in getShuffleCost()
1970 {TTI::SK_Select, MVT::v2i64, 1}, // pblendw in getShuffleCost()
1971 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
1972 {TTI::SK_Select, MVT::v4i32, 1}, // pblendw in getShuffleCost()
1973 {TTI::SK_Select, MVT::v4f32, 1}, // blendps in getShuffleCost()
1974 {TTI::SK_Select, MVT::v8i16, 1}, // pblendw in getShuffleCost()
1975 {TTI::SK_Select, MVT::v8f16, 1}, // pblendw in getShuffleCost()
1976 {TTI::SK_Select, MVT::v16i8, 1} // pblendvb in getShuffleCost()
1984 {TTI::SK_Broadcast, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1985 {TTI::SK_Broadcast, MVT::v8f16, 1}, // pshufb in getShuffleCost()
1986 {TTI::SK_Broadcast, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1988 {TTI::SK_Reverse, MVT::v8i16, 1}, // pshufb in getShuffleCost()
1989 {TTI::SK_Reverse, MVT::v8f16, 1}, // pshufb in getShuffleCost()
1990 {TTI::SK_Reverse, MVT::v16i8, 1}, // pshufb in getShuffleCost()
1992 {TTI::SK_Select, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
1993 {TTI::SK_Select, MVT::v8f16, 3}, // 2*pshufb + por in getShuffleCost()
1994 {TTI::SK_Select, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
1996 {TTI::SK_Splice, MVT::v4i32, 1}, // palignr in getShuffleCost()
1997 {TTI::SK_Splice, MVT::v4f32, 1}, // palignr in getShuffleCost()
1998 {TTI::SK_Splice, MVT::v8i16, 1}, // palignr in getShuffleCost()
1999 {TTI::SK_Splice, MVT::v8f16, 1}, // palignr in getShuffleCost()
2000 {TTI::SK_Splice, MVT::v16i8, 1}, // palignr in getShuffleCost()
2002 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 1}, // pshufb in getShuffleCost()
2003 {TTI::SK_PermuteSingleSrc, MVT::v8f16, 1}, // pshufb in getShuffleCost()
2004 {TTI::SK_PermuteSingleSrc, MVT::v16i8, 1}, // pshufb in getShuffleCost()
2006 {TTI::SK_PermuteTwoSrc, MVT::v8i16, 3}, // 2*pshufb + por in getShuffleCost()
2007 {TTI::SK_PermuteTwoSrc, MVT::v8f16, 3}, // 2*pshufb + por in getShuffleCost()
2008 {TTI::SK_PermuteTwoSrc, MVT::v16i8, 3}, // 2*pshufb + por in getShuffleCost()
2016 {TTI::SK_Broadcast, MVT::v2f64, 1}, // shufpd in getShuffleCost()
2017 {TTI::SK_Broadcast, MVT::v2i64, 1}, // pshufd in getShuffleCost()
2018 {TTI::SK_Broadcast, MVT::v4i32, 1}, // pshufd in getShuffleCost()
2019 {TTI::SK_Broadcast, MVT::v8i16, 2}, // pshuflw + pshufd in getShuffleCost()
2020 {TTI::SK_Broadcast, MVT::v8f16, 2}, // pshuflw + pshufd in getShuffleCost()
2021 {TTI::SK_Broadcast, MVT::v16i8, 3}, // unpck + pshuflw + pshufd in getShuffleCost()
2023 {TTI::SK_Reverse, MVT::v2f64, 1}, // shufpd in getShuffleCost()
2024 {TTI::SK_Reverse, MVT::v2i64, 1}, // pshufd in getShuffleCost()
2025 {TTI::SK_Reverse, MVT::v4i32, 1}, // pshufd in getShuffleCost()
2026 {TTI::SK_Reverse, MVT::v8i16, 3}, // pshuflw + pshufhw + pshufd in getShuffleCost()
2027 {TTI::SK_Reverse, MVT::v8f16, 3}, // pshuflw + pshufhw + pshufd in getShuffleCost()
2028 {TTI::SK_Reverse, MVT::v16i8, 9}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
2031 {TTI::SK_Select, MVT::v2i64, 1}, // movsd in getShuffleCost()
2032 {TTI::SK_Select, MVT::v2f64, 1}, // movsd in getShuffleCost()
2033 {TTI::SK_Select, MVT::v4i32, 2}, // 2*shufps in getShuffleCost()
2034 {TTI::SK_Select, MVT::v8i16, 3}, // pand + pandn + por in getShuffleCost()
2035 {TTI::SK_Select, MVT::v8f16, 3}, // pand + pandn + por in getShuffleCost()
2036 {TTI::SK_Select, MVT::v16i8, 3}, // pand + pandn + por in getShuffleCost()
2038 {TTI::SK_Splice, MVT::v2i64, 1}, // shufpd in getShuffleCost()
2039 {TTI::SK_Splice, MVT::v2f64, 1}, // shufpd in getShuffleCost()
2040 {TTI::SK_Splice, MVT::v4i32, 2}, // 2*{unpck,movsd,pshufd} in getShuffleCost()
2041 {TTI::SK_Splice, MVT::v8i16, 3}, // psrldq + psrlldq + por in getShuffleCost()
2042 {TTI::SK_Splice, MVT::v8f16, 3}, // psrldq + psrlldq + por in getShuffleCost()
2043 {TTI::SK_Splice, MVT::v16i8, 3}, // psrldq + psrlldq + por in getShuffleCost()
2045 {TTI::SK_PermuteSingleSrc, MVT::v2f64, 1}, // shufpd in getShuffleCost()
2046 {TTI::SK_PermuteSingleSrc, MVT::v2i64, 1}, // pshufd in getShuffleCost()
2047 {TTI::SK_PermuteSingleSrc, MVT::v4i32, 1}, // pshufd in getShuffleCost()
2048 {TTI::SK_PermuteSingleSrc, MVT::v8i16, 5}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
2050 {TTI::SK_PermuteSingleSrc, MVT::v8f16, 5}, // 2*pshuflw + 2*pshufhw in getShuffleCost()
2052 { TTI::SK_PermuteSingleSrc, MVT::v16i8, 10 }, // 2*pshuflw + 2*pshufhw in getShuffleCost()
2055 { TTI::SK_PermuteTwoSrc, MVT::v2f64, 1 }, // shufpd in getShuffleCost()
2056 { TTI::SK_PermuteTwoSrc, MVT::v2i64, 1 }, // shufpd in getShuffleCost()
2057 { TTI::SK_PermuteTwoSrc, MVT::v4i32, 2 }, // 2*{unpck,movsd,pshufd} in getShuffleCost()
2058 { TTI::SK_PermuteTwoSrc, MVT::v8i16, 8 }, // blend+permute in getShuffleCost()
2059 { TTI::SK_PermuteTwoSrc, MVT::v8f16, 8 }, // blend+permute in getShuffleCost()
2060 { TTI::SK_PermuteTwoSrc, MVT::v16i8, 13 }, // blend+permute in getShuffleCost()
2064 {TTI::SK_Broadcast, MVT::v2f64, 0}, // broadcast handled by movddup in getShuffleCost()
2084 { TTI::SK_Broadcast, MVT::v4f32, 1 }, // shufps in getShuffleCost()
2085 { TTI::SK_Reverse, MVT::v4f32, 1 }, // shufps in getShuffleCost()
2086 { TTI::SK_Select, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
2087 { TTI::SK_Splice, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
2088 { TTI::SK_PermuteSingleSrc, MVT::v4f32, 1 }, // shufps in getShuffleCost()
2089 { TTI::SK_PermuteTwoSrc, MVT::v4f32, 2 }, // 2*shufps in getShuffleCost()
2120 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
2121 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, 1 }, in getCastInstrCost()
2124 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 1 }, in getCastInstrCost()
2125 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v2i1, 1 }, in getCastInstrCost()
2126 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 1 }, in getCastInstrCost()
2127 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v2i1, 1 }, in getCastInstrCost()
2128 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 1 }, in getCastInstrCost()
2129 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v4i1, 1 }, in getCastInstrCost()
2130 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 1 }, in getCastInstrCost()
2131 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v4i1, 1 }, in getCastInstrCost()
2132 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 1 }, in getCastInstrCost()
2133 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v8i1, 1 }, in getCastInstrCost()
2134 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 1 }, in getCastInstrCost()
2135 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 1 }, in getCastInstrCost()
2136 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
2137 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, 1 }, in getCastInstrCost()
2138 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i1, 1 }, in getCastInstrCost()
2139 { ISD::SIGN_EXTEND, MVT::v64i8, MVT::v64i1, 1 }, in getCastInstrCost()
2140 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v64i1, 1 }, in getCastInstrCost()
2143 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 2 }, in getCastInstrCost()
2144 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v2i1, 2 }, in getCastInstrCost()
2145 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 2 }, in getCastInstrCost()
2146 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v2i1, 2 }, in getCastInstrCost()
2147 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 2 }, in getCastInstrCost()
2148 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v4i1, 2 }, in getCastInstrCost()
2149 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 2 }, in getCastInstrCost()
2150 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v4i1, 2 }, in getCastInstrCost()
2151 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 2 }, in getCastInstrCost()
2152 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v8i1, 2 }, in getCastInstrCost()
2153 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 2 }, in getCastInstrCost()
2154 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 2 }, in getCastInstrCost()
2155 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 2 }, in getCastInstrCost()
2156 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, 2 }, in getCastInstrCost()
2157 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i1, 2 }, in getCastInstrCost()
2158 { ISD::ZERO_EXTEND, MVT::v64i8, MVT::v64i1, 2 }, in getCastInstrCost()
2159 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v64i1, 2 }, in getCastInstrCost()
2161 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 2 }, in getCastInstrCost()
2162 { ISD::TRUNCATE, MVT::v2i1, MVT::v16i8, 2 }, in getCastInstrCost()
2163 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, in getCastInstrCost()
2164 { ISD::TRUNCATE, MVT::v2i1, MVT::v8i16, 2 }, in getCastInstrCost()
2165 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, in getCastInstrCost()
2166 { ISD::TRUNCATE, MVT::v4i1, MVT::v16i8, 2 }, in getCastInstrCost()
2167 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 2 }, in getCastInstrCost()
2168 { ISD::TRUNCATE, MVT::v4i1, MVT::v8i16, 2 }, in getCastInstrCost()
2169 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 2 }, in getCastInstrCost()
2170 { ISD::TRUNCATE, MVT::v8i1, MVT::v16i8, 2 }, in getCastInstrCost()
2171 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 2 }, in getCastInstrCost()
2172 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 2 }, in getCastInstrCost()
2173 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 2 }, in getCastInstrCost()
2174 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, 2 }, in getCastInstrCost()
2175 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i16, 2 }, in getCastInstrCost()
2176 { ISD::TRUNCATE, MVT::v64i1, MVT::v64i8, 2 }, in getCastInstrCost()
2177 { ISD::TRUNCATE, MVT::v64i1, MVT::v32i16, 2 }, in getCastInstrCost()
2179 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, 2 }, in getCastInstrCost()
2180 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, // widen to zmm in getCastInstrCost()
2181 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i16, 2 }, // vpmovwb in getCastInstrCost()
2182 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i16, 2 }, // vpmovwb in getCastInstrCost()
2183 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i16, 2 }, // vpmovwb in getCastInstrCost()
2188 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, in getCastInstrCost()
2189 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v2i1, 1 }, in getCastInstrCost()
2190 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, in getCastInstrCost()
2191 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, in getCastInstrCost()
2192 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, in getCastInstrCost()
2193 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v16i1, 1 }, in getCastInstrCost()
2194 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i1, 1 }, in getCastInstrCost()
2195 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i1, 1 }, in getCastInstrCost()
2198 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, in getCastInstrCost()
2199 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v2i1, 2 }, in getCastInstrCost()
2200 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, in getCastInstrCost()
2201 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, in getCastInstrCost()
2202 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, in getCastInstrCost()
2203 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v16i1, 2 }, in getCastInstrCost()
2204 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i1, 2 }, in getCastInstrCost()
2205 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i1, 2 }, in getCastInstrCost()
2207 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, in getCastInstrCost()
2208 { ISD::TRUNCATE, MVT::v2i1, MVT::v4i32, 2 }, in getCastInstrCost()
2209 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, in getCastInstrCost()
2210 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, in getCastInstrCost()
2211 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, in getCastInstrCost()
2212 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 2 }, in getCastInstrCost()
2213 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i32, 2 }, in getCastInstrCost()
2214 { ISD::TRUNCATE, MVT::v16i1, MVT::v8i64, 2 }, in getCastInstrCost()
2216 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
2217 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
2219 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 1 }, in getCastInstrCost()
2220 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 1 }, in getCastInstrCost()
2222 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
2223 { ISD::FP_TO_SINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
2225 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f32, 1 }, in getCastInstrCost()
2226 { ISD::FP_TO_UINT, MVT::v8i64, MVT::v8f64, 1 }, in getCastInstrCost()
2233 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 1 }, in getCastInstrCost()
2234 { ISD::FP_EXTEND, MVT::v8f64, MVT::v16f32, 3 }, in getCastInstrCost()
2235 { ISD::FP_EXTEND, MVT::v16f64, MVT::v16f32, 4 }, // 2*vcvtps2pd+vextractf64x4 in getCastInstrCost()
2236 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 1 }, in getCastInstrCost()
2238 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2239 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2240 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2241 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2242 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
2243 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
2244 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
2245 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2246 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
2247 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
2248 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, // zmm vpslld+vptestmd in getCastInstrCost()
2249 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
2250 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, // zmm vpsllq+vptestmq in getCastInstrCost()
2251 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, // zmm vpsllq+vptestmq in getCastInstrCost()
2252 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
2253 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i32, 2 }, // vpmovdb in getCastInstrCost()
2254 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i32, 2 }, // vpmovdb in getCastInstrCost()
2255 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 2 }, // vpmovdb in getCastInstrCost()
2256 { ISD::TRUNCATE, MVT::v32i8, MVT::v16i32, 2 }, // vpmovdb in getCastInstrCost()
2257 { ISD::TRUNCATE, MVT::v64i8, MVT::v16i32, 2 }, // vpmovdb in getCastInstrCost()
2258 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 2 }, // vpmovdw in getCastInstrCost()
2259 { ISD::TRUNCATE, MVT::v32i16, MVT::v16i32, 2 }, // vpmovdw in getCastInstrCost()
2260 { ISD::TRUNCATE, MVT::v2i8, MVT::v2i64, 2 }, // vpmovqb in getCastInstrCost()
2261 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i64, 1 }, // vpshufb in getCastInstrCost()
2262 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i64, 2 }, // vpmovqb in getCastInstrCost()
2263 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i64, 2 }, // vpmovqb in getCastInstrCost()
2264 { ISD::TRUNCATE, MVT::v32i8, MVT::v8i64, 2 }, // vpmovqb in getCastInstrCost()
2265 { ISD::TRUNCATE, MVT::v64i8, MVT::v8i64, 2 }, // vpmovqb in getCastInstrCost()
2266 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i64, 2 }, // vpmovqw in getCastInstrCost()
2267 { ISD::TRUNCATE, MVT::v16i16, MVT::v8i64, 2 }, // vpmovqw in getCastInstrCost()
2268 { ISD::TRUNCATE, MVT::v32i16, MVT::v8i64, 2 }, // vpmovqw in getCastInstrCost()
2269 { ISD::TRUNCATE, MVT::v8i32, MVT::v8i64, 1 }, // vpmovqd in getCastInstrCost()
2270 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, // zmm vpmovqd in getCastInstrCost()
2271 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i64, 5 },// 2*vpmovqd+concat+vpmovdb in getCastInstrCost()
2273 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, // extend to v16i32 in getCastInstrCost()
2274 { ISD::TRUNCATE, MVT::v32i8, MVT::v32i16, 8 }, in getCastInstrCost()
2275 { ISD::TRUNCATE, MVT::v64i8, MVT::v32i16, 8 }, in getCastInstrCost()
2279 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 3 }, in getCastInstrCost()
2280 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 4 }, in getCastInstrCost()
2281 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 3 }, in getCastInstrCost()
2282 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 4 }, in getCastInstrCost()
2283 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 3 }, in getCastInstrCost()
2284 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 4 }, in getCastInstrCost()
2285 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 3 }, in getCastInstrCost()
2286 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 4 }, in getCastInstrCost()
2290 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 3 }, in getCastInstrCost()
2291 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 4 }, in getCastInstrCost()
2292 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 3 }, in getCastInstrCost()
2293 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 4 }, in getCastInstrCost()
2294 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 3 }, in getCastInstrCost()
2295 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 4 }, in getCastInstrCost()
2296 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 3 }, in getCastInstrCost()
2297 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
2299 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, 1 }, // zmm vpternlogd in getCastInstrCost()
2300 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
2301 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, // zmm vpternlogd in getCastInstrCost()
2302 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
2303 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, // zmm vpternlogd in getCastInstrCost()
2304 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, // zmm vpternlogd+psrld in getCastInstrCost()
2305 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, // zmm vpternlogq in getCastInstrCost()
2306 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, // zmm vpternlogq+psrlq in getCastInstrCost()
2307 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, // zmm vpternlogq in getCastInstrCost()
2308 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, // zmm vpternlogq+psrlq in getCastInstrCost()
2310 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i1, 1 }, // vpternlogd in getCastInstrCost()
2311 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
2312 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i1, 1 }, // vpternlogq in getCastInstrCost()
2313 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
2315 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
2316 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 1 }, in getCastInstrCost()
2317 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
2318 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 1 }, in getCastInstrCost()
2319 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i8, 1 }, in getCastInstrCost()
2320 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i8, 1 }, in getCastInstrCost()
2321 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
2322 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i16, 1 }, in getCastInstrCost()
2323 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
2324 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i32, 1 }, in getCastInstrCost()
2326 { ISD::SIGN_EXTEND, MVT::v32i16, MVT::v32i8, 3 }, // FIXME: May not be right in getCastInstrCost()
2327 { ISD::ZERO_EXTEND, MVT::v32i16, MVT::v32i8, 3 }, // FIXME: May not be right in getCastInstrCost()
2329 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
2330 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
2331 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v16i8, 2 }, in getCastInstrCost()
2332 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i8, 1 }, in getCastInstrCost()
2333 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
2334 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i16, 1 }, in getCastInstrCost()
2335 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
2336 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
2338 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i1, 4 }, in getCastInstrCost()
2339 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i1, 3 }, in getCastInstrCost()
2340 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v16i8, 2 }, in getCastInstrCost()
2341 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i8, 1 }, in getCastInstrCost()
2342 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i16, 2 }, in getCastInstrCost()
2343 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i16, 1 }, in getCastInstrCost()
2344 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 1 }, in getCastInstrCost()
2345 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i32, 1 }, in getCastInstrCost()
2346 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i64, 26 }, in getCastInstrCost()
2347 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i64, 5 }, in getCastInstrCost()
2349 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f32, 2 }, in getCastInstrCost()
2350 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f64, 7 }, in getCastInstrCost()
2351 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v32f64,15 }, in getCastInstrCost()
2352 { ISD::FP_TO_SINT, MVT::v64i8, MVT::v64f32,11 }, in getCastInstrCost()
2353 { ISD::FP_TO_SINT, MVT::v64i8, MVT::v64f64,31 }, in getCastInstrCost()
2354 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f64, 3 }, in getCastInstrCost()
2355 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v16f64, 7 }, in getCastInstrCost()
2356 { ISD::FP_TO_SINT, MVT::v32i16, MVT::v32f32, 5 }, in getCastInstrCost()
2357 { ISD::FP_TO_SINT, MVT::v32i16, MVT::v32f64,15 }, in getCastInstrCost()
2358 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
2359 { ISD::FP_TO_SINT, MVT::v16i32, MVT::v16f64, 3 }, in getCastInstrCost()
2361 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
2362 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f64, 3 }, in getCastInstrCost()
2363 { ISD::FP_TO_UINT, MVT::v8i8, MVT::v8f64, 3 }, in getCastInstrCost()
2364 { ISD::FP_TO_UINT, MVT::v16i32, MVT::v16f32, 1 }, in getCastInstrCost()
2365 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v16f32, 3 }, in getCastInstrCost()
2366 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v16f32, 3 }, in getCastInstrCost()
2371 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 1 }, in getCastInstrCost()
2372 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v2i1, 1 }, in getCastInstrCost()
2373 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 1 }, in getCastInstrCost()
2374 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v2i1, 1 }, in getCastInstrCost()
2375 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 1 }, in getCastInstrCost()
2376 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v4i1, 1 }, in getCastInstrCost()
2377 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 1 }, in getCastInstrCost()
2378 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v4i1, 1 }, in getCastInstrCost()
2379 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 1 }, in getCastInstrCost()
2380 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v8i1, 1 }, in getCastInstrCost()
2381 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 1 }, in getCastInstrCost()
2382 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 1 }, in getCastInstrCost()
2383 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
2384 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v32i1, 1 }, in getCastInstrCost()
2385 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v32i1, 1 }, in getCastInstrCost()
2386 { ISD::SIGN_EXTEND, MVT::v32i8, MVT::v64i1, 1 }, in getCastInstrCost()
2387 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v64i1, 1 }, in getCastInstrCost()
2390 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 2 }, in getCastInstrCost()
2391 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v2i1, 2 }, in getCastInstrCost()
2392 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 2 }, in getCastInstrCost()
2393 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v2i1, 2 }, in getCastInstrCost()
2394 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 2 }, in getCastInstrCost()
2395 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v4i1, 2 }, in getCastInstrCost()
2396 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 2 }, in getCastInstrCost()
2397 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v4i1, 2 }, in getCastInstrCost()
2398 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 2 }, in getCastInstrCost()
2399 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v8i1, 2 }, in getCastInstrCost()
2400 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 2 }, in getCastInstrCost()
2401 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 2 }, in getCastInstrCost()
2402 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 2 }, in getCastInstrCost()
2403 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v32i1, 2 }, in getCastInstrCost()
2404 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v32i1, 2 }, in getCastInstrCost()
2405 { ISD::ZERO_EXTEND, MVT::v32i8, MVT::v64i1, 2 }, in getCastInstrCost()
2406 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v64i1, 2 }, in getCastInstrCost()
2408 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 2 }, in getCastInstrCost()
2409 { ISD::TRUNCATE, MVT::v2i1, MVT::v16i8, 2 }, in getCastInstrCost()
2410 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, in getCastInstrCost()
2411 { ISD::TRUNCATE, MVT::v2i1, MVT::v8i16, 2 }, in getCastInstrCost()
2412 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, in getCastInstrCost()
2413 { ISD::TRUNCATE, MVT::v4i1, MVT::v16i8, 2 }, in getCastInstrCost()
2414 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 2 }, in getCastInstrCost()
2415 { ISD::TRUNCATE, MVT::v4i1, MVT::v8i16, 2 }, in getCastInstrCost()
2416 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 2 }, in getCastInstrCost()
2417 { ISD::TRUNCATE, MVT::v8i1, MVT::v16i8, 2 }, in getCastInstrCost()
2418 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 2 }, in getCastInstrCost()
2419 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 2 }, in getCastInstrCost()
2420 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 2 }, in getCastInstrCost()
2421 { ISD::TRUNCATE, MVT::v32i1, MVT::v32i8, 2 }, in getCastInstrCost()
2422 { ISD::TRUNCATE, MVT::v32i1, MVT::v16i16, 2 }, in getCastInstrCost()
2423 { ISD::TRUNCATE, MVT::v64i1, MVT::v32i8, 2 }, in getCastInstrCost()
2424 { ISD::TRUNCATE, MVT::v64i1, MVT::v16i16, 2 }, in getCastInstrCost()
2426 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, in getCastInstrCost()
2431 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, in getCastInstrCost()
2432 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v2i1, 1 }, in getCastInstrCost()
2433 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, in getCastInstrCost()
2434 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i1, 1 }, in getCastInstrCost()
2435 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, in getCastInstrCost()
2436 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i1, 1 }, in getCastInstrCost()
2437 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i1, 1 }, in getCastInstrCost()
2438 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, in getCastInstrCost()
2441 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, in getCastInstrCost()
2442 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v2i1, 2 }, in getCastInstrCost()
2443 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, in getCastInstrCost()
2444 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i1, 2 }, in getCastInstrCost()
2445 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, in getCastInstrCost()
2446 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i1, 2 }, in getCastInstrCost()
2447 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i1, 2 }, in getCastInstrCost()
2448 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, in getCastInstrCost()
2450 { ISD::TRUNCATE, MVT::v16i1, MVT::v4i64, 2 }, in getCastInstrCost()
2451 { ISD::TRUNCATE, MVT::v16i1, MVT::v8i32, 2 }, in getCastInstrCost()
2452 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, in getCastInstrCost()
2453 { ISD::TRUNCATE, MVT::v2i1, MVT::v4i32, 2 }, in getCastInstrCost()
2454 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, in getCastInstrCost()
2455 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, in getCastInstrCost()
2456 { ISD::TRUNCATE, MVT::v8i1, MVT::v4i64, 2 }, in getCastInstrCost()
2457 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, in getCastInstrCost()
2459 { ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
2460 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
2461 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
2462 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
2464 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 1 }, in getCastInstrCost()
2465 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 1 }, in getCastInstrCost()
2466 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 1 }, in getCastInstrCost()
2467 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 1 }, in getCastInstrCost()
2469 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v4f32, 1 }, in getCastInstrCost()
2470 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
2471 { ISD::FP_TO_SINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
2472 { ISD::FP_TO_SINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
2474 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v4f32, 1 }, in getCastInstrCost()
2475 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f32, 1 }, in getCastInstrCost()
2476 { ISD::FP_TO_UINT, MVT::v2i64, MVT::v2f64, 1 }, in getCastInstrCost()
2477 { ISD::FP_TO_UINT, MVT::v4i64, MVT::v4f64, 1 }, in getCastInstrCost()
2481 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2482 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2483 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 3 }, // sext+vpslld+vptestmd in getCastInstrCost()
2484 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i8, 8 }, // split+2*v8i8 in getCastInstrCost()
2485 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
2486 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
2487 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i16, 3 }, // sext+vpsllq+vptestmq in getCastInstrCost()
2488 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 8 }, // split+2*v8i16 in getCastInstrCost()
2489 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
2490 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
2491 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
2492 { ISD::TRUNCATE, MVT::v16i1, MVT::v8i32, 2 }, // vpslld+vptestmd in getCastInstrCost()
2493 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
2494 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 2 }, // vpsllq+vptestmq in getCastInstrCost()
2495 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, // vpmovqd in getCastInstrCost()
2496 { ISD::TRUNCATE, MVT::v4i8, MVT::v4i64, 2 }, // vpmovqb in getCastInstrCost()
2497 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i64, 2 }, // vpmovqw in getCastInstrCost()
2498 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 2 }, // vpmovwb in getCastInstrCost()
2502 { ISD::SIGN_EXTEND, MVT::v2i8, MVT::v2i1, 5 }, in getCastInstrCost()
2503 { ISD::ZERO_EXTEND, MVT::v2i8, MVT::v2i1, 6 }, in getCastInstrCost()
2504 { ISD::SIGN_EXTEND, MVT::v4i8, MVT::v4i1, 5 }, in getCastInstrCost()
2505 { ISD::ZERO_EXTEND, MVT::v4i8, MVT::v4i1, 6 }, in getCastInstrCost()
2506 { ISD::SIGN_EXTEND, MVT::v8i8, MVT::v8i1, 5 }, in getCastInstrCost()
2507 { ISD::ZERO_EXTEND, MVT::v8i8, MVT::v8i1, 6 }, in getCastInstrCost()
2508 { ISD::SIGN_EXTEND, MVT::v16i8, MVT::v16i1, 10 }, in getCastInstrCost()
2509 { ISD::ZERO_EXTEND, MVT::v16i8, MVT::v16i1, 12 }, in getCastInstrCost()
2513 { ISD::SIGN_EXTEND, MVT::v2i16, MVT::v2i1, 4 }, in getCastInstrCost()
2514 { ISD::ZERO_EXTEND, MVT::v2i16, MVT::v2i1, 5 }, in getCastInstrCost()
2515 { ISD::SIGN_EXTEND, MVT::v4i16, MVT::v4i1, 4 }, in getCastInstrCost()
2516 { ISD::ZERO_EXTEND, MVT::v4i16, MVT::v4i1, 5 }, in getCastInstrCost()
2517 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v8i1, 4 }, in getCastInstrCost()
2518 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v8i1, 5 }, in getCastInstrCost()
2519 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 10 }, in getCastInstrCost()
2520 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 12 }, in getCastInstrCost()
2522 { ISD::SIGN_EXTEND, MVT::v2i32, MVT::v2i1, 1 }, // vpternlogd in getCastInstrCost()
2523 { ISD::ZERO_EXTEND, MVT::v2i32, MVT::v2i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
2524 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i1, 1 }, // vpternlogd in getCastInstrCost()
2525 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
2526 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 1 }, // vpternlogd in getCastInstrCost()
2527 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
2528 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i1, 1 }, // vpternlogd in getCastInstrCost()
2529 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i1, 2 }, // vpternlogd+psrld in getCastInstrCost()
2531 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i1, 1 }, // vpternlogq in getCastInstrCost()
2532 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
2533 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 1 }, // vpternlogq in getCastInstrCost()
2534 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 2 }, // vpternlogq+psrlq in getCastInstrCost()
2536 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, 1 }, in getCastInstrCost()
2537 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, 1 }, in getCastInstrCost()
2538 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, 1 }, in getCastInstrCost()
2539 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, 1 }, in getCastInstrCost()
2540 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
2541 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 1 }, in getCastInstrCost()
2542 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, 1 }, in getCastInstrCost()
2543 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, 1 }, in getCastInstrCost()
2544 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
2545 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 1 }, in getCastInstrCost()
2546 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
2547 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 1 }, in getCastInstrCost()
2549 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2550 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, 1 }, in getCastInstrCost()
2551 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2552 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 1 }, in getCastInstrCost()
2554 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 1 }, in getCastInstrCost()
2555 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 1 }, in getCastInstrCost()
2556 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2557 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, 1 }, in getCastInstrCost()
2558 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2559 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 1 }, in getCastInstrCost()
2560 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 1 }, in getCastInstrCost()
2561 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
2562 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
2563 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
2564 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 5 }, in getCastInstrCost()
2565 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
2566 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 5 }, in getCastInstrCost()
2568 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v8f32, 2 }, in getCastInstrCost()
2569 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v16f32, 2 }, in getCastInstrCost()
2570 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v32f32, 5 }, in getCastInstrCost()
2572 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 1 }, in getCastInstrCost()
2573 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 1 }, in getCastInstrCost()
2574 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 1 }, in getCastInstrCost()
2575 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 1 }, in getCastInstrCost()
2576 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 1 }, in getCastInstrCost()
2577 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 1 }, in getCastInstrCost()
2578 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f64, 1 }, in getCastInstrCost()
2582 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
2583 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 3 }, in getCastInstrCost()
2584 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
2585 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 3 }, in getCastInstrCost()
2586 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
2587 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 1 }, in getCastInstrCost()
2589 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, 2 }, in getCastInstrCost()
2590 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, 2 }, in getCastInstrCost()
2591 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, 2 }, in getCastInstrCost()
2592 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, 2 }, in getCastInstrCost()
2593 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
2594 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 2 }, in getCastInstrCost()
2595 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, 2 }, in getCastInstrCost()
2596 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, 2 }, in getCastInstrCost()
2597 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
2598 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 2 }, in getCastInstrCost()
2599 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i16, 3 }, in getCastInstrCost()
2600 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i16, 3 }, in getCastInstrCost()
2601 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
2602 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 2 }, in getCastInstrCost()
2604 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 2 }, in getCastInstrCost()
2606 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 4 }, in getCastInstrCost()
2607 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 4 }, in getCastInstrCost()
2608 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i16, 1 }, in getCastInstrCost()
2609 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, 1 }, in getCastInstrCost()
2610 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, 1 }, in getCastInstrCost()
2611 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i32, 4 }, in getCastInstrCost()
2612 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i64, 4 }, in getCastInstrCost()
2613 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, 1 }, in getCastInstrCost()
2614 { ISD::TRUNCATE, MVT::v8i16, MVT::v2i64, 1 }, in getCastInstrCost()
2615 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i64, 5 }, in getCastInstrCost()
2616 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 1 }, in getCastInstrCost()
2617 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 2 }, in getCastInstrCost()
2619 { ISD::FP_EXTEND, MVT::v8f64, MVT::v8f32, 3 }, in getCastInstrCost()
2620 { ISD::FP_ROUND, MVT::v8f32, MVT::v8f64, 3 }, in getCastInstrCost()
2622 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v8f32, 1 }, in getCastInstrCost()
2623 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f64, 1 }, in getCastInstrCost()
2624 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f32, 1 }, in getCastInstrCost()
2625 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, 3 }, in getCastInstrCost()
2627 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 3 }, in getCastInstrCost()
2628 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 3 }, in getCastInstrCost()
2629 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v8f32, 1 }, in getCastInstrCost()
2630 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 3 }, in getCastInstrCost()
2631 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2632 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 4 }, in getCastInstrCost()
2633 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 3 }, in getCastInstrCost()
2634 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v4f64, 4 }, in getCastInstrCost()
2636 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 2 }, in getCastInstrCost()
2637 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, 2 }, in getCastInstrCost()
2638 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 2 }, in getCastInstrCost()
2639 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 2 }, in getCastInstrCost()
2640 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 1 }, in getCastInstrCost()
2641 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, 1 }, in getCastInstrCost()
2642 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 3 }, in getCastInstrCost()
2644 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 2 }, in getCastInstrCost()
2645 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, 2 }, in getCastInstrCost()
2646 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 2 }, in getCastInstrCost()
2647 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 2 }, in getCastInstrCost()
2648 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 2 }, in getCastInstrCost()
2649 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 1 }, in getCastInstrCost()
2650 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 2 }, in getCastInstrCost()
2651 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 2 }, in getCastInstrCost()
2652 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 2 }, in getCastInstrCost()
2653 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 4 }, in getCastInstrCost()
2657 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i1, 6 }, in getCastInstrCost()
2658 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i1, 4 }, in getCastInstrCost()
2659 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i1, 7 }, in getCastInstrCost()
2660 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i1, 4 }, in getCastInstrCost()
2661 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
2662 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i1, 4 }, in getCastInstrCost()
2664 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v16i8, 3 }, in getCastInstrCost()
2665 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v16i8, 3 }, in getCastInstrCost()
2666 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v16i8, 3 }, in getCastInstrCost()
2667 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v16i8, 3 }, in getCastInstrCost()
2668 { ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 3 }, in getCastInstrCost()
2669 { ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 3 }, in getCastInstrCost()
2670 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v8i16, 3 }, in getCastInstrCost()
2671 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v8i16, 3 }, in getCastInstrCost()
2672 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 3 }, in getCastInstrCost()
2673 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 3 }, in getCastInstrCost()
2674 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 3 }, in getCastInstrCost()
2675 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 3 }, in getCastInstrCost()
2677 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i64, 4 }, in getCastInstrCost()
2678 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i32, 5 }, in getCastInstrCost()
2679 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i16, 4 }, in getCastInstrCost()
2680 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i64, 9 }, in getCastInstrCost()
2681 { ISD::TRUNCATE, MVT::v16i1, MVT::v16i64, 11 }, in getCastInstrCost()
2683 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 6 }, in getCastInstrCost()
2684 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 6 }, in getCastInstrCost()
2685 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 2 }, // and+extract+packuswb in getCastInstrCost()
2686 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i32, 5 }, in getCastInstrCost()
2687 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
2688 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i64, 5 }, in getCastInstrCost()
2689 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i64, 3 }, // and+extract+2*packusdw in getCastInstrCost()
2690 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 2 }, in getCastInstrCost()
2692 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i1, 3 }, in getCastInstrCost()
2693 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i1, 3 }, in getCastInstrCost()
2694 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i1, 8 }, in getCastInstrCost()
2695 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v16i8, 4 }, in getCastInstrCost()
2696 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v16i8, 2 }, in getCastInstrCost()
2697 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 4 }, in getCastInstrCost()
2698 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v8i16, 2 }, in getCastInstrCost()
2699 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 2 }, in getCastInstrCost()
2700 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, 2 }, in getCastInstrCost()
2701 { ISD::SINT_TO_FP, MVT::v8f64, MVT::v8i32, 4 }, in getCastInstrCost()
2702 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, 5 }, in getCastInstrCost()
2703 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i64, 8 }, in getCastInstrCost()
2705 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i1, 7 }, in getCastInstrCost()
2706 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i1, 7 }, in getCastInstrCost()
2707 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i1, 6 }, in getCastInstrCost()
2708 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v16i8, 4 }, in getCastInstrCost()
2709 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v16i8, 2 }, in getCastInstrCost()
2710 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 4 }, in getCastInstrCost()
2711 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v8i16, 2 }, in getCastInstrCost()
2712 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 4 }, in getCastInstrCost()
2713 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 4 }, in getCastInstrCost()
2714 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 5 }, in getCastInstrCost()
2715 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 6 }, in getCastInstrCost()
2716 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 8 }, in getCastInstrCost()
2717 { ISD::UINT_TO_FP, MVT::v8f64, MVT::v8i32, 10 }, in getCastInstrCost()
2718 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 10 }, in getCastInstrCost()
2719 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 18 }, in getCastInstrCost()
2720 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 5 }, in getCastInstrCost()
2721 { ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i64, 10 }, in getCastInstrCost()
2723 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v8f32, 2 }, in getCastInstrCost()
2724 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f64, 2 }, in getCastInstrCost()
2725 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v8f32, 2 }, in getCastInstrCost()
2726 { ISD::FP_TO_SINT, MVT::v32i8, MVT::v4f64, 2 }, in getCastInstrCost()
2727 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f32, 2 }, in getCastInstrCost()
2728 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f64, 2 }, in getCastInstrCost()
2729 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v8f32, 2 }, in getCastInstrCost()
2730 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v4f64, 2 }, in getCastInstrCost()
2731 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f64, 2 }, in getCastInstrCost()
2732 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f32, 2 }, in getCastInstrCost()
2733 { ISD::FP_TO_SINT, MVT::v8i32, MVT::v8f64, 5 }, in getCastInstrCost()
2735 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v8f32, 2 }, in getCastInstrCost()
2736 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f64, 2 }, in getCastInstrCost()
2737 { ISD::FP_TO_UINT, MVT::v32i8, MVT::v8f32, 2 }, in getCastInstrCost()
2738 { ISD::FP_TO_UINT, MVT::v32i8, MVT::v4f64, 2 }, in getCastInstrCost()
2739 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f32, 2 }, in getCastInstrCost()
2740 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f64, 2 }, in getCastInstrCost()
2741 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v8f32, 2 }, in getCastInstrCost()
2742 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v4f64, 2 }, in getCastInstrCost()
2743 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 3 }, in getCastInstrCost()
2744 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2745 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f64, 6 }, in getCastInstrCost()
2746 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v8f32, 7 }, in getCastInstrCost()
2747 { ISD::FP_TO_UINT, MVT::v8i32, MVT::v4f64, 7 }, in getCastInstrCost()
2749 { ISD::FP_EXTEND, MVT::v4f64, MVT::v4f32, 1 }, in getCastInstrCost()
2750 { ISD::FP_ROUND, MVT::v4f32, MVT::v4f64, 1 }, in getCastInstrCost()
2754 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v16i8, 1 }, in getCastInstrCost()
2755 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v16i8, 1 }, in getCastInstrCost()
2756 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v16i8, 1 }, in getCastInstrCost()
2757 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v16i8, 1 }, in getCastInstrCost()
2758 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v16i8, 1 }, in getCastInstrCost()
2759 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v16i8, 1 }, in getCastInstrCost()
2760 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v8i16, 1 }, in getCastInstrCost()
2761 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v8i16, 1 }, in getCastInstrCost()
2762 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v8i16, 1 }, in getCastInstrCost()
2763 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v8i16, 1 }, in getCastInstrCost()
2764 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v4i32, 1 }, in getCastInstrCost()
2765 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v4i32, 1 }, in getCastInstrCost()
2768 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 1 }, // PMOVXZBQ in getCastInstrCost()
2769 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 1 }, // PMOVXZWQ in getCastInstrCost()
2770 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 1 }, // PMOVXZBD in getCastInstrCost()
2772 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, 2 }, in getCastInstrCost()
2773 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, 2 }, in getCastInstrCost()
2774 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, 2 }, in getCastInstrCost()
2776 { ISD::SINT_TO_FP, MVT::f32, MVT::i32, 1 }, in getCastInstrCost()
2777 { ISD::SINT_TO_FP, MVT::f64, MVT::i32, 1 }, in getCastInstrCost()
2778 { ISD::SINT_TO_FP, MVT::f32, MVT::i64, 1 }, in getCastInstrCost()
2779 { ISD::SINT_TO_FP, MVT::f64, MVT::i64, 1 }, in getCastInstrCost()
2780 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, 1 }, in getCastInstrCost()
2781 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2782 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, 1 }, in getCastInstrCost()
2783 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2784 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 }, in getCastInstrCost()
2785 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, 1 }, in getCastInstrCost()
2786 { ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 2 }, in getCastInstrCost()
2788 { ISD::UINT_TO_FP, MVT::f32, MVT::i32, 1 }, in getCastInstrCost()
2789 { ISD::UINT_TO_FP, MVT::f64, MVT::i32, 1 }, in getCastInstrCost()
2790 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 4 }, in getCastInstrCost()
2791 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 4 }, in getCastInstrCost()
2792 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, 1 }, in getCastInstrCost()
2793 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 1 }, in getCastInstrCost()
2794 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, 1 }, in getCastInstrCost()
2795 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 1 }, in getCastInstrCost()
2796 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 3 }, in getCastInstrCost()
2797 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 3 }, in getCastInstrCost()
2798 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, 2 }, in getCastInstrCost()
2799 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, 12 }, in getCastInstrCost()
2800 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i64, 22 }, in getCastInstrCost()
2801 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 4 }, in getCastInstrCost()
2803 { ISD::FP_TO_SINT, MVT::i32, MVT::f32, 1 }, in getCastInstrCost()
2804 { ISD::FP_TO_SINT, MVT::i64, MVT::f32, 1 }, in getCastInstrCost()
2805 { ISD::FP_TO_SINT, MVT::i32, MVT::f64, 1 }, in getCastInstrCost()
2806 { ISD::FP_TO_SINT, MVT::i64, MVT::f64, 1 }, in getCastInstrCost()
2807 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f32, 2 }, in getCastInstrCost()
2808 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v2f64, 2 }, in getCastInstrCost()
2809 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f32, 1 }, in getCastInstrCost()
2810 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v2f64, 1 }, in getCastInstrCost()
2811 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, 1 }, in getCastInstrCost()
2812 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v2f64, 1 }, in getCastInstrCost()
2814 { ISD::FP_TO_UINT, MVT::i32, MVT::f32, 1 }, in getCastInstrCost()
2815 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
2816 { ISD::FP_TO_UINT, MVT::i32, MVT::f64, 1 }, in getCastInstrCost()
2817 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 4 }, in getCastInstrCost()
2818 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f32, 2 }, in getCastInstrCost()
2819 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v2f64, 2 }, in getCastInstrCost()
2820 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f32, 1 }, in getCastInstrCost()
2821 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v2f64, 1 }, in getCastInstrCost()
2822 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 4 }, in getCastInstrCost()
2823 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2830 { ISD::SINT_TO_FP, MVT::f32, MVT::i32, 3 }, in getCastInstrCost()
2831 { ISD::SINT_TO_FP, MVT::f64, MVT::i32, 3 }, in getCastInstrCost()
2832 { ISD::SINT_TO_FP, MVT::f32, MVT::i64, 3 }, in getCastInstrCost()
2833 { ISD::SINT_TO_FP, MVT::f64, MVT::i64, 3 }, in getCastInstrCost()
2834 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v16i8, 3 }, in getCastInstrCost()
2835 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v16i8, 4 }, in getCastInstrCost()
2836 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v8i16, 3 }, in getCastInstrCost()
2837 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v8i16, 4 }, in getCastInstrCost()
2838 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 3 }, in getCastInstrCost()
2839 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v4i32, 4 }, in getCastInstrCost()
2840 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v2i64, 8 }, in getCastInstrCost()
2841 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i64, 8 }, in getCastInstrCost()
2843 { ISD::UINT_TO_FP, MVT::f32, MVT::i32, 3 }, in getCastInstrCost()
2844 { ISD::UINT_TO_FP, MVT::f64, MVT::i32, 3 }, in getCastInstrCost()
2845 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 8 }, in getCastInstrCost()
2846 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 9 }, in getCastInstrCost()
2847 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v16i8, 4 }, in getCastInstrCost()
2848 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v16i8, 4 }, in getCastInstrCost()
2849 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v8i16, 4 }, in getCastInstrCost()
2850 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v8i16, 4 }, in getCastInstrCost()
2851 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 7 }, in getCastInstrCost()
2852 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v4i32, 7 }, in getCastInstrCost()
2853 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 5 }, in getCastInstrCost()
2854 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 15 }, in getCastInstrCost()
2855 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v2i64, 18 }, in getCastInstrCost()
2857 { ISD::FP_TO_SINT, MVT::i32, MVT::f32, 4 }, in getCastInstrCost()
2858 { ISD::FP_TO_SINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
2859 { ISD::FP_TO_SINT, MVT::i32, MVT::f64, 4 }, in getCastInstrCost()
2860 { ISD::FP_TO_SINT, MVT::i64, MVT::f64, 4 }, in getCastInstrCost()
2861 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v4f32, 6 }, in getCastInstrCost()
2862 { ISD::FP_TO_SINT, MVT::v16i8, MVT::v2f64, 6 }, in getCastInstrCost()
2863 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v4f32, 5 }, in getCastInstrCost()
2864 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v2f64, 5 }, in getCastInstrCost()
2865 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, 4 }, in getCastInstrCost()
2866 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v2f64, 4 }, in getCastInstrCost()
2868 { ISD::FP_TO_UINT, MVT::i32, MVT::f32, 4 }, in getCastInstrCost()
2869 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 4 }, in getCastInstrCost()
2870 { ISD::FP_TO_UINT, MVT::i32, MVT::f64, 4 }, in getCastInstrCost()
2871 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 15 }, in getCastInstrCost()
2872 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v4f32, 6 }, in getCastInstrCost()
2873 { ISD::FP_TO_UINT, MVT::v16i8, MVT::v2f64, 6 }, in getCastInstrCost()
2874 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v4f32, 5 }, in getCastInstrCost()
2875 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v2f64, 5 }, in getCastInstrCost()
2876 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 8 }, in getCastInstrCost()
2877 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v2f64, 8 }, in getCastInstrCost()
2879 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v16i8, 4 }, in getCastInstrCost()
2880 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v16i8, 4 }, in getCastInstrCost()
2881 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v16i8, 2 }, in getCastInstrCost()
2882 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v16i8, 3 }, in getCastInstrCost()
2883 { ISD::ZERO_EXTEND, MVT::v8i16, MVT::v16i8, 1 }, in getCastInstrCost()
2884 { ISD::SIGN_EXTEND, MVT::v8i16, MVT::v16i8, 2 }, in getCastInstrCost()
2885 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v8i16, 2 }, in getCastInstrCost()
2886 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v8i16, 3 }, in getCastInstrCost()
2887 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v8i16, 1 }, in getCastInstrCost()
2888 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v8i16, 2 }, in getCastInstrCost()
2889 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v4i32, 1 }, in getCastInstrCost()
2890 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v4i32, 2 }, in getCastInstrCost()
2893 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i32, 1 }, // PSHUFD in getCastInstrCost()
2894 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i16, 2 }, // PUNPCKLWD+DQ in getCastInstrCost()
2895 { ISD::TRUNCATE, MVT::v2i1, MVT::v2i8, 3 }, // PUNPCKLBW+WD+PSHUFD in getCastInstrCost()
2896 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i16, 1 }, // PUNPCKLWD in getCastInstrCost()
2897 { ISD::TRUNCATE, MVT::v4i1, MVT::v4i8, 2 }, // PUNPCKLBW+WD in getCastInstrCost()
2898 { ISD::TRUNCATE, MVT::v8i1, MVT::v8i8, 1 }, // PUNPCKLBW in getCastInstrCost()
2900 { ISD::TRUNCATE, MVT::v16i8, MVT::v8i16, 2 }, // PAND+PACKUSWB in getCastInstrCost()
2901 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, in getCastInstrCost()
2902 { ISD::TRUNCATE, MVT::v16i8, MVT::v4i32, 3 }, // PAND+2*PACKUSWB in getCastInstrCost()
2903 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 7 }, in getCastInstrCost()
2904 { ISD::TRUNCATE, MVT::v2i16, MVT::v2i32, 1 }, in getCastInstrCost()
2905 { ISD::TRUNCATE, MVT::v8i16, MVT::v4i32, 3 }, in getCastInstrCost()
2906 { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 5 }, in getCastInstrCost()
2907 { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32,10 }, in getCastInstrCost()
2908 { ISD::TRUNCATE, MVT::v16i8, MVT::v2i64, 4 }, // PAND+3*PACKUSWB in getCastInstrCost()
2909 { ISD::TRUNCATE, MVT::v8i16, MVT::v2i64, 2 }, // PSHUFD+PSHUFLW in getCastInstrCost()
2910 { ISD::TRUNCATE, MVT::v4i32, MVT::v2i64, 1 }, // PSHUFD in getCastInstrCost()
2919 MVT SimpleSrcTy = SrcTy.getSimpleVT(); in getCastInstrCost()
2920 MVT SimpleDstTy = DstTy.getSimpleVT(); in getCastInstrCost()
2980 std::pair<InstructionCost, MVT> LTSrc = getTypeLegalizationCost(Src); in getCastInstrCost()
2981 std::pair<InstructionCost, MVT> LTDest = getTypeLegalizationCost(Dst); in getCastInstrCost()
3081 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(ValTy); in getCmpSelInstrCost()
3083 MVT MTy = LT.second; in getCmpSelInstrCost()
3156 { ISD::SETCC, MVT::v2i64, { 2, 5, 1, 2 } }, in getCmpSelInstrCost()
3158 { ISD::SELECT, MVT::v2f64, { 4, 4, 1, 3 } }, // vblendvpd in getCmpSelInstrCost()
3159 { ISD::SELECT, MVT::v4f32, { 4, 4, 1, 3 } }, // vblendvps in getCmpSelInstrCost()
3160 { ISD::SELECT, MVT::v2i64, { 4, 4, 1, 3 } }, // pblendvb in getCmpSelInstrCost()
3161 { ISD::SELECT, MVT::v8i32, { 4, 4, 1, 3 } }, // pblendvb in getCmpSelInstrCost()
3162 { ISD::SELECT, MVT::v8i16, { 4, 4, 1, 3 } }, // pblendvb in getCmpSelInstrCost()
3163 { ISD::SELECT, MVT::v16i8, { 4, 4, 1, 3 } }, // pblendvb in getCmpSelInstrCost()
3167 { ISD::SETCC, MVT::v32i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3168 { ISD::SETCC, MVT::v16i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3169 { ISD::SETCC, MVT::v64i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3170 { ISD::SETCC, MVT::v32i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3172 { ISD::SELECT, MVT::v32i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3173 { ISD::SELECT, MVT::v64i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3177 { ISD::SETCC, MVT::v8f64, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3178 { ISD::SETCC, MVT::v4f64, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3179 { ISD::SETCC, MVT::v16f32, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3180 { ISD::SETCC, MVT::v8f32, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3182 { ISD::SETCC, MVT::v8i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3183 { ISD::SETCC, MVT::v4i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3184 { ISD::SETCC, MVT::v2i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3185 { ISD::SETCC, MVT::v16i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3186 { ISD::SETCC, MVT::v8i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3187 { ISD::SETCC, MVT::v32i16, { 3, 7, 5, 5 } }, in getCmpSelInstrCost()
3188 { ISD::SETCC, MVT::v64i8, { 3, 7, 5, 5 } }, in getCmpSelInstrCost()
3190 { ISD::SELECT, MVT::v8i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3191 { ISD::SELECT, MVT::v4i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3192 { ISD::SELECT, MVT::v2i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3193 { ISD::SELECT, MVT::v16i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3194 { ISD::SELECT, MVT::v8i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3195 { ISD::SELECT, MVT::v4i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3196 { ISD::SELECT, MVT::v8f64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3197 { ISD::SELECT, MVT::v4f64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3198 { ISD::SELECT, MVT::v2f64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3199 { ISD::SELECT, MVT::f64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3200 { ISD::SELECT, MVT::v16f32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3201 { ISD::SELECT, MVT::v8f32 , { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3202 { ISD::SELECT, MVT::v4f32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3203 { ISD::SELECT, MVT::f32 , { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3205 { ISD::SELECT, MVT::v32i16, { 2, 2, 4, 4 } }, in getCmpSelInstrCost()
3206 { ISD::SELECT, MVT::v16i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3207 { ISD::SELECT, MVT::v8i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3208 { ISD::SELECT, MVT::v64i8, { 2, 2, 4, 4 } }, in getCmpSelInstrCost()
3209 { ISD::SELECT, MVT::v32i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3210 { ISD::SELECT, MVT::v16i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3214 { ISD::SETCC, MVT::v4f64, { 1, 4, 1, 2 } }, in getCmpSelInstrCost()
3215 { ISD::SETCC, MVT::v2f64, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3216 { ISD::SETCC, MVT::f64, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3217 { ISD::SETCC, MVT::v8f32, { 1, 4, 1, 2 } }, in getCmpSelInstrCost()
3218 { ISD::SETCC, MVT::v4f32, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3219 { ISD::SETCC, MVT::f32, { 1, 4, 1, 1 } }, in getCmpSelInstrCost()
3221 { ISD::SETCC, MVT::v4i64, { 1, 1, 1, 2 } }, in getCmpSelInstrCost()
3222 { ISD::SETCC, MVT::v8i32, { 1, 1, 1, 2 } }, in getCmpSelInstrCost()
3223 { ISD::SETCC, MVT::v16i16, { 1, 1, 1, 2 } }, in getCmpSelInstrCost()
3224 { ISD::SETCC, MVT::v32i8, { 1, 1, 1, 2 } }, in getCmpSelInstrCost()
3226 { ISD::SELECT, MVT::v4f64, { 2, 2, 1, 2 } }, // vblendvpd in getCmpSelInstrCost()
3227 { ISD::SELECT, MVT::v8f32, { 2, 2, 1, 2 } }, // vblendvps in getCmpSelInstrCost()
3228 { ISD::SELECT, MVT::v4i64, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3229 { ISD::SELECT, MVT::v8i32, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3230 { ISD::SELECT, MVT::v16i16, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3231 { ISD::SELECT, MVT::v32i8, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3235 { ISD::SETCC, MVT::v4i64, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3236 { ISD::SETCC, MVT::v2i64, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3240 { ISD::SETCC, MVT::v4f64, { 2, 3, 1, 2 } }, in getCmpSelInstrCost()
3241 { ISD::SETCC, MVT::v2f64, { 1, 3, 1, 1 } }, in getCmpSelInstrCost()
3242 { ISD::SETCC, MVT::f64, { 1, 3, 1, 1 } }, in getCmpSelInstrCost()
3243 { ISD::SETCC, MVT::v8f32, { 2, 3, 1, 2 } }, in getCmpSelInstrCost()
3244 { ISD::SETCC, MVT::v4f32, { 1, 3, 1, 1 } }, in getCmpSelInstrCost()
3245 { ISD::SETCC, MVT::f32, { 1, 3, 1, 1 } }, in getCmpSelInstrCost()
3248 { ISD::SETCC, MVT::v4i64, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3249 { ISD::SETCC, MVT::v8i32, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3250 { ISD::SETCC, MVT::v16i16, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3251 { ISD::SETCC, MVT::v32i8, { 4, 2, 5, 6 } }, in getCmpSelInstrCost()
3253 { ISD::SELECT, MVT::v4f64, { 3, 3, 1, 2 } }, // vblendvpd in getCmpSelInstrCost()
3254 { ISD::SELECT, MVT::v8f32, { 3, 3, 1, 2 } }, // vblendvps in getCmpSelInstrCost()
3255 { ISD::SELECT, MVT::v4i64, { 3, 3, 1, 2 } }, // vblendvpd in getCmpSelInstrCost()
3256 { ISD::SELECT, MVT::v8i32, { 3, 3, 1, 2 } }, // vblendvps in getCmpSelInstrCost()
3257 { ISD::SELECT, MVT::v16i16, { 3, 3, 3, 3 } }, // vandps + vandnps + vorps in getCmpSelInstrCost()
3258 { ISD::SELECT, MVT::v32i8, { 3, 3, 3, 3 } }, // vandps + vandnps + vorps in getCmpSelInstrCost()
3262 { ISD::SETCC, MVT::v2i64, { 1, 2, 1, 2 } }, in getCmpSelInstrCost()
3266 { ISD::SETCC, MVT::v2f64, { 1, 5, 1, 1 } }, in getCmpSelInstrCost()
3267 { ISD::SETCC, MVT::v4f32, { 1, 5, 1, 1 } }, in getCmpSelInstrCost()
3269 { ISD::SELECT, MVT::v2f64, { 2, 2, 1, 2 } }, // blendvpd in getCmpSelInstrCost()
3270 { ISD::SELECT, MVT::f64, { 2, 2, 1, 2 } }, // blendvpd in getCmpSelInstrCost()
3271 { ISD::SELECT, MVT::v4f32, { 2, 2, 1, 2 } }, // blendvps in getCmpSelInstrCost()
3272 { ISD::SELECT, MVT::f32 , { 2, 2, 1, 2 } }, // blendvps in getCmpSelInstrCost()
3273 { ISD::SELECT, MVT::v2i64, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3274 { ISD::SELECT, MVT::v4i32, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3275 { ISD::SELECT, MVT::v8i16, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3276 { ISD::SELECT, MVT::v16i8, { 2, 2, 1, 2 } }, // pblendvb in getCmpSelInstrCost()
3280 { ISD::SETCC, MVT::v2f64, { 2, 5, 1, 1 } }, in getCmpSelInstrCost()
3281 { ISD::SETCC, MVT::f64, { 1, 5, 1, 1 } }, in getCmpSelInstrCost()
3283 { ISD::SETCC, MVT::v2i64, { 5, 4, 5, 5 } }, // pcmpeqd/pcmpgtd expansion in getCmpSelInstrCost()
3284 { ISD::SETCC, MVT::v4i32, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3285 { ISD::SETCC, MVT::v8i16, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3286 { ISD::SETCC, MVT::v16i8, { 1, 1, 1, 1 } }, in getCmpSelInstrCost()
3288 { ISD::SELECT, MVT::v2f64, { 2, 2, 3, 3 } }, // andpd + andnpd + orpd in getCmpSelInstrCost()
3289 { ISD::SELECT, MVT::f64, { 2, 2, 3, 3 } }, // andpd + andnpd + orpd in getCmpSelInstrCost()
3290 { ISD::SELECT, MVT::v2i64, { 2, 2, 3, 3 } }, // pand + pandn + por in getCmpSelInstrCost()
3291 { ISD::SELECT, MVT::v4i32, { 2, 2, 3, 3 } }, // pand + pandn + por in getCmpSelInstrCost()
3292 { ISD::SELECT, MVT::v8i16, { 2, 2, 3, 3 } }, // pand + pandn + por in getCmpSelInstrCost()
3293 { ISD::SELECT, MVT::v16i8, { 2, 2, 3, 3 } }, // pand + pandn + por in getCmpSelInstrCost()
3297 { ISD::SETCC, MVT::v4f32, { 2, 5, 1, 1 } }, in getCmpSelInstrCost()
3298 { ISD::SETCC, MVT::f32, { 1, 5, 1, 1 } }, in getCmpSelInstrCost()
3300 { ISD::SELECT, MVT::v4f32, { 2, 2, 3, 3 } }, // andps + andnps + orps in getCmpSelInstrCost()
3301 { ISD::SELECT, MVT::f32, { 2, 2, 3, 3 } }, // andps + andnps + orps in getCmpSelInstrCost()
3377 { ISD::FSHL, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3378 { ISD::FSHL, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3379 { ISD::FSHL, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3380 { ISD::FSHL, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3381 { ISD::FSHL, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3382 { ISD::FSHL, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3383 { ISD::FSHL, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3384 { ISD::FSHL, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3385 { ISD::FSHL, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3386 { ISD::ROTL, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3387 { ISD::ROTL, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3388 { ISD::ROTL, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3389 { ISD::ROTR, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3390 { ISD::ROTR, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3391 { ISD::ROTR, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3394 { ISD::CTPOP, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3395 { ISD::CTPOP, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3396 { ISD::CTPOP, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3397 { ISD::CTPOP, MVT::v32i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3398 { ISD::CTPOP, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3399 { ISD::CTPOP, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3402 { ISD::CTPOP, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3403 { ISD::CTPOP, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3404 { ISD::CTPOP, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3405 { ISD::CTPOP, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3406 { ISD::CTPOP, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3407 { ISD::CTPOP, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3410 { ISD::CTLZ, MVT::v8i64, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3411 { ISD::CTLZ, MVT::v16i32, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3412 { ISD::CTLZ, MVT::v32i16, { 18, 27, 23, 27 } }, in getIntrinsicInstrCost()
3413 { ISD::CTLZ, MVT::v64i8, { 3, 16, 9, 11 } }, in getIntrinsicInstrCost()
3414 { ISD::CTLZ, MVT::v4i64, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3415 { ISD::CTLZ, MVT::v8i32, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3416 { ISD::CTLZ, MVT::v16i16, { 8, 19, 11, 13 } }, in getIntrinsicInstrCost()
3417 { ISD::CTLZ, MVT::v32i8, { 2, 11, 9, 10 } }, in getIntrinsicInstrCost()
3418 { ISD::CTLZ, MVT::v2i64, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3419 { ISD::CTLZ, MVT::v4i32, { 1, 5, 1, 1 } }, in getIntrinsicInstrCost()
3420 { ISD::CTLZ, MVT::v8i16, { 3, 15, 4, 6 } }, in getIntrinsicInstrCost()
3421 { ISD::CTLZ, MVT::v16i8, { 2, 10, 9, 10 } }, in getIntrinsicInstrCost()
3423 { ISD::CTTZ, MVT::v8i64, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3424 { ISD::CTTZ, MVT::v16i32, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3425 { ISD::CTTZ, MVT::v4i64, { 1, 8, 6, 6 } }, in getIntrinsicInstrCost()
3426 { ISD::CTTZ, MVT::v8i32, { 1, 8, 6, 6 } }, in getIntrinsicInstrCost()
3427 { ISD::CTTZ, MVT::v2i64, { 1, 8, 6, 6 } }, in getIntrinsicInstrCost()
3428 { ISD::CTTZ, MVT::v4i32, { 1, 8, 6, 6 } }, in getIntrinsicInstrCost()
3431 { ISD::ABS, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3432 { ISD::ABS, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3433 { ISD::BITREVERSE, MVT::v2i64, { 3, 10, 10, 11 } }, in getIntrinsicInstrCost()
3434 { ISD::BITREVERSE, MVT::v4i64, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3435 { ISD::BITREVERSE, MVT::v8i64, { 3, 12, 10, 14 } }, in getIntrinsicInstrCost()
3436 { ISD::BITREVERSE, MVT::v4i32, { 3, 10, 10, 11 } }, in getIntrinsicInstrCost()
3437 { ISD::BITREVERSE, MVT::v8i32, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3438 { ISD::BITREVERSE, MVT::v16i32, { 3, 12, 10, 14 } }, in getIntrinsicInstrCost()
3439 { ISD::BITREVERSE, MVT::v8i16, { 3, 10, 10, 11 } }, in getIntrinsicInstrCost()
3440 { ISD::BITREVERSE, MVT::v16i16, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3441 { ISD::BITREVERSE, MVT::v32i16, { 3, 12, 10, 14 } }, in getIntrinsicInstrCost()
3442 { ISD::BITREVERSE, MVT::v16i8, { 2, 5, 9, 9 } }, in getIntrinsicInstrCost()
3443 { ISD::BITREVERSE, MVT::v32i8, { 2, 5, 9, 9 } }, in getIntrinsicInstrCost()
3444 { ISD::BITREVERSE, MVT::v64i8, { 2, 5, 9, 12 } }, in getIntrinsicInstrCost()
3445 { ISD::BSWAP, MVT::v2i64, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3446 { ISD::BSWAP, MVT::v4i64, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3447 { ISD::BSWAP, MVT::v8i64, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3448 { ISD::BSWAP, MVT::v4i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3449 { ISD::BSWAP, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3450 { ISD::BSWAP, MVT::v16i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3451 { ISD::BSWAP, MVT::v8i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3452 { ISD::BSWAP, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3453 { ISD::BSWAP, MVT::v32i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3454 { ISD::CTLZ, MVT::v8i64, { 8, 22, 23, 23 } }, in getIntrinsicInstrCost()
3455 { ISD::CTLZ, MVT::v16i32, { 8, 23, 25, 25 } }, in getIntrinsicInstrCost()
3456 { ISD::CTLZ, MVT::v32i16, { 4, 15, 15, 16 } }, in getIntrinsicInstrCost()
3457 { ISD::CTLZ, MVT::v64i8, { 3, 12, 10, 9 } }, in getIntrinsicInstrCost()
3458 { ISD::CTPOP, MVT::v2i64, { 3, 7, 10, 10 } }, in getIntrinsicInstrCost()
3459 { ISD::CTPOP, MVT::v4i64, { 3, 7, 10, 10 } }, in getIntrinsicInstrCost()
3460 { ISD::CTPOP, MVT::v8i64, { 3, 8, 10, 12 } }, in getIntrinsicInstrCost()
3461 { ISD::CTPOP, MVT::v4i32, { 7, 11, 14, 14 } }, in getIntrinsicInstrCost()
3462 { ISD::CTPOP, MVT::v8i32, { 7, 11, 14, 14 } }, in getIntrinsicInstrCost()
3463 { ISD::CTPOP, MVT::v16i32, { 7, 12, 14, 16 } }, in getIntrinsicInstrCost()
3464 { ISD::CTPOP, MVT::v8i16, { 2, 7, 11, 11 } }, in getIntrinsicInstrCost()
3465 { ISD::CTPOP, MVT::v16i16, { 2, 7, 11, 11 } }, in getIntrinsicInstrCost()
3466 { ISD::CTPOP, MVT::v32i16, { 3, 7, 11, 13 } }, in getIntrinsicInstrCost()
3467 { ISD::CTPOP, MVT::v16i8, { 2, 4, 8, 8 } }, in getIntrinsicInstrCost()
3468 { ISD::CTPOP, MVT::v32i8, { 2, 4, 8, 8 } }, in getIntrinsicInstrCost()
3469 { ISD::CTPOP, MVT::v64i8, { 2, 5, 8, 10 } }, in getIntrinsicInstrCost()
3470 { ISD::CTTZ, MVT::v8i16, { 3, 9, 14, 14 } }, in getIntrinsicInstrCost()
3471 { ISD::CTTZ, MVT::v16i16, { 3, 9, 14, 14 } }, in getIntrinsicInstrCost()
3472 { ISD::CTTZ, MVT::v32i16, { 3, 10, 14, 16 } }, in getIntrinsicInstrCost()
3473 { ISD::CTTZ, MVT::v16i8, { 2, 6, 11, 11 } }, in getIntrinsicInstrCost()
3474 { ISD::CTTZ, MVT::v32i8, { 2, 6, 11, 11 } }, in getIntrinsicInstrCost()
3475 { ISD::CTTZ, MVT::v64i8, { 3, 7, 11, 13 } }, in getIntrinsicInstrCost()
3476 { ISD::ROTL, MVT::v32i16, { 2, 8, 6, 8 } }, in getIntrinsicInstrCost()
3477 { ISD::ROTL, MVT::v16i16, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3478 { ISD::ROTL, MVT::v8i16, { 2, 7, 6, 7 } }, in getIntrinsicInstrCost()
3479 { ISD::ROTL, MVT::v64i8, { 5, 6, 11, 12 } }, in getIntrinsicInstrCost()
3480 { ISD::ROTL, MVT::v32i8, { 5, 15, 7, 10 } }, in getIntrinsicInstrCost()
3481 { ISD::ROTL, MVT::v16i8, { 5, 15, 7, 10 } }, in getIntrinsicInstrCost()
3482 { ISD::ROTR, MVT::v32i16, { 2, 8, 6, 8 } }, in getIntrinsicInstrCost()
3483 { ISD::ROTR, MVT::v16i16, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3484 { ISD::ROTR, MVT::v8i16, { 2, 7, 6, 7 } }, in getIntrinsicInstrCost()
3485 { ISD::ROTR, MVT::v64i8, { 5, 6, 12, 14 } }, in getIntrinsicInstrCost()
3486 { ISD::ROTR, MVT::v32i8, { 5, 14, 6, 9 } }, in getIntrinsicInstrCost()
3487 { ISD::ROTR, MVT::v16i8, { 5, 14, 6, 9 } }, in getIntrinsicInstrCost()
3488 { ISD::SADDSAT, MVT::v32i16, { 1 } }, in getIntrinsicInstrCost()
3489 { ISD::SADDSAT, MVT::v64i8, { 1 } }, in getIntrinsicInstrCost()
3490 { ISD::SMAX, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3491 { ISD::SMAX, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3492 { ISD::SMIN, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3493 { ISD::SMIN, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3494 { ISD::SSUBSAT, MVT::v32i16, { 1 } }, in getIntrinsicInstrCost()
3495 { ISD::SSUBSAT, MVT::v64i8, { 1 } }, in getIntrinsicInstrCost()
3496 { ISD::UADDSAT, MVT::v32i16, { 1 } }, in getIntrinsicInstrCost()
3497 { ISD::UADDSAT, MVT::v64i8, { 1 } }, in getIntrinsicInstrCost()
3498 { ISD::UMAX, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3499 { ISD::UMAX, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3500 { ISD::UMIN, MVT::v32i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3501 { ISD::UMIN, MVT::v64i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3502 { ISD::USUBSAT, MVT::v32i16, { 1 } }, in getIntrinsicInstrCost()
3503 { ISD::USUBSAT, MVT::v64i8, { 1 } }, in getIntrinsicInstrCost()
3506 { ISD::ABS, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3507 { ISD::ABS, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3508 { ISD::ABS, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3509 { ISD::ABS, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3510 { ISD::ABS, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3511 { ISD::ABS, MVT::v32i16, { 2, 7, 4, 4 } }, in getIntrinsicInstrCost()
3512 { ISD::ABS, MVT::v16i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3513 { ISD::ABS, MVT::v64i8, { 2, 7, 4, 4 } }, in getIntrinsicInstrCost()
3514 { ISD::ABS, MVT::v32i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3515 { ISD::BITREVERSE, MVT::v8i64, { 9, 13, 20, 20 } }, in getIntrinsicInstrCost()
3516 { ISD::BITREVERSE, MVT::v16i32, { 9, 13, 20, 20 } }, in getIntrinsicInstrCost()
3517 { ISD::BITREVERSE, MVT::v32i16, { 9, 13, 20, 20 } }, in getIntrinsicInstrCost()
3518 { ISD::BITREVERSE, MVT::v64i8, { 6, 11, 17, 17 } }, in getIntrinsicInstrCost()
3519 { ISD::BSWAP, MVT::v8i64, { 4, 7, 5, 5 } }, in getIntrinsicInstrCost()
3520 { ISD::BSWAP, MVT::v16i32, { 4, 7, 5, 5 } }, in getIntrinsicInstrCost()
3521 { ISD::BSWAP, MVT::v32i16, { 4, 7, 5, 5 } }, in getIntrinsicInstrCost()
3522 { ISD::CTLZ, MVT::v8i64, { 10, 28, 32, 32 } }, in getIntrinsicInstrCost()
3523 { ISD::CTLZ, MVT::v16i32, { 12, 30, 38, 38 } }, in getIntrinsicInstrCost()
3524 { ISD::CTLZ, MVT::v32i16, { 8, 15, 29, 29 } }, in getIntrinsicInstrCost()
3525 { ISD::CTLZ, MVT::v64i8, { 6, 11, 19, 19 } }, in getIntrinsicInstrCost()
3526 { ISD::CTPOP, MVT::v8i64, { 16, 16, 19, 19 } }, in getIntrinsicInstrCost()
3527 { ISD::CTPOP, MVT::v16i32, { 24, 19, 27, 27 } }, in getIntrinsicInstrCost()
3528 { ISD::CTPOP, MVT::v32i16, { 18, 15, 22, 22 } }, in getIntrinsicInstrCost()
3529 { ISD::CTPOP, MVT::v64i8, { 12, 11, 16, 16 } }, in getIntrinsicInstrCost()
3530 { ISD::CTTZ, MVT::v8i64, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3531 { ISD::CTTZ, MVT::v16i32, { 2, 8, 6, 7 } }, in getIntrinsicInstrCost()
3532 { ISD::CTTZ, MVT::v32i16, { 7, 17, 27, 27 } }, in getIntrinsicInstrCost()
3533 { ISD::CTTZ, MVT::v64i8, { 6, 13, 21, 21 } }, in getIntrinsicInstrCost()
3534 { ISD::ROTL, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3535 { ISD::ROTL, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3536 { ISD::ROTL, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3537 { ISD::ROTL, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3538 { ISD::ROTL, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3539 { ISD::ROTL, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3540 { ISD::ROTR, MVT::v8i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3541 { ISD::ROTR, MVT::v4i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3542 { ISD::ROTR, MVT::v2i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3543 { ISD::ROTR, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3544 { ISD::ROTR, MVT::v8i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3545 { ISD::ROTR, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3546 { ISD::SMAX, MVT::v8i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3547 { ISD::SMAX, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3548 { ISD::SMAX, MVT::v32i16, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3549 { ISD::SMAX, MVT::v64i8, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3550 { ISD::SMAX, MVT::v4i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3551 { ISD::SMAX, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3552 { ISD::SMIN, MVT::v8i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3553 { ISD::SMIN, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3554 { ISD::SMIN, MVT::v32i16, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3555 { ISD::SMIN, MVT::v64i8, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3556 { ISD::SMIN, MVT::v4i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3557 { ISD::SMIN, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3558 { ISD::UMAX, MVT::v8i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3559 { ISD::UMAX, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3560 { ISD::UMAX, MVT::v32i16, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3561 { ISD::UMAX, MVT::v64i8, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3562 { ISD::UMAX, MVT::v4i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3563 { ISD::UMAX, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3564 { ISD::UMIN, MVT::v8i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3565 { ISD::UMIN, MVT::v16i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3566 { ISD::UMIN, MVT::v32i16, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3567 { ISD::UMIN, MVT::v64i8, { 3, 7, 5, 5 } }, in getIntrinsicInstrCost()
3568 { ISD::UMIN, MVT::v4i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3569 { ISD::UMIN, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3570 { ISD::USUBSAT, MVT::v16i32, { 2 } }, // pmaxud + psubd in getIntrinsicInstrCost()
3571 { ISD::USUBSAT, MVT::v2i64, { 2 } }, // pmaxuq + psubq in getIntrinsicInstrCost()
3572 { ISD::USUBSAT, MVT::v4i64, { 2 } }, // pmaxuq + psubq in getIntrinsicInstrCost()
3573 { ISD::USUBSAT, MVT::v8i64, { 2 } }, // pmaxuq + psubq in getIntrinsicInstrCost()
3574 { ISD::UADDSAT, MVT::v16i32, { 3 } }, // not + pminud + paddd in getIntrinsicInstrCost()
3575 { ISD::UADDSAT, MVT::v2i64, { 3 } }, // not + pminuq + paddq in getIntrinsicInstrCost()
3576 { ISD::UADDSAT, MVT::v4i64, { 3 } }, // not + pminuq + paddq in getIntrinsicInstrCost()
3577 { ISD::UADDSAT, MVT::v8i64, { 3 } }, // not + pminuq + paddq in getIntrinsicInstrCost()
3578 { ISD::SADDSAT, MVT::v32i16, { 2 } }, in getIntrinsicInstrCost()
3579 { ISD::SADDSAT, MVT::v64i8, { 2 } }, in getIntrinsicInstrCost()
3580 { ISD::SSUBSAT, MVT::v32i16, { 2 } }, in getIntrinsicInstrCost()
3581 { ISD::SSUBSAT, MVT::v64i8, { 2 } }, in getIntrinsicInstrCost()
3582 { ISD::UADDSAT, MVT::v32i16, { 2 } }, in getIntrinsicInstrCost()
3583 { ISD::UADDSAT, MVT::v64i8, { 2 } }, in getIntrinsicInstrCost()
3584 { ISD::USUBSAT, MVT::v32i16, { 2 } }, in getIntrinsicInstrCost()
3585 { ISD::USUBSAT, MVT::v64i8, { 2 } }, in getIntrinsicInstrCost()
3586 { ISD::FMAXNUM, MVT::f32, { 2, 2, 3, 3 } }, in getIntrinsicInstrCost()
3587 { ISD::FMAXNUM, MVT::v4f32, { 1, 1, 3, 3 } }, in getIntrinsicInstrCost()
3588 { ISD::FMAXNUM, MVT::v8f32, { 2, 2, 3, 3 } }, in getIntrinsicInstrCost()
3589 { ISD::FMAXNUM, MVT::v16f32, { 4, 4, 3, 3 } }, in getIntrinsicInstrCost()
3590 { ISD::FMAXNUM, MVT::f64, { 2, 2, 3, 3 } }, in getIntrinsicInstrCost()
3591 { ISD::FMAXNUM, MVT::v2f64, { 1, 1, 3, 3 } }, in getIntrinsicInstrCost()
3592 { ISD::FMAXNUM, MVT::v4f64, { 2, 2, 3, 3 } }, in getIntrinsicInstrCost()
3593 { ISD::FMAXNUM, MVT::v8f64, { 3, 3, 3, 3 } }, in getIntrinsicInstrCost()
3594 { ISD::FSQRT, MVT::f32, { 3, 12, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3595 { ISD::FSQRT, MVT::v4f32, { 3, 12, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3596 { ISD::FSQRT, MVT::v8f32, { 6, 12, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3597 { ISD::FSQRT, MVT::v16f32, { 12, 20, 1, 3 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3598 { ISD::FSQRT, MVT::f64, { 6, 18, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3599 { ISD::FSQRT, MVT::v2f64, { 6, 18, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3600 { ISD::FSQRT, MVT::v4f64, { 12, 18, 1, 1 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3601 { ISD::FSQRT, MVT::v8f64, { 24, 32, 1, 3 } }, // Skylake from http://www.agner.org/ in getIntrinsicInstrCost()
3604 { ISD::BITREVERSE, MVT::v4i64, { 3, 6, 5, 6 } }, in getIntrinsicInstrCost()
3605 { ISD::BITREVERSE, MVT::v8i32, { 3, 6, 5, 6 } }, in getIntrinsicInstrCost()
3606 { ISD::BITREVERSE, MVT::v16i16, { 3, 6, 5, 6 } }, in getIntrinsicInstrCost()
3607 { ISD::BITREVERSE, MVT::v32i8, { 3, 6, 5, 6 } }, in getIntrinsicInstrCost()
3608 { ISD::BITREVERSE, MVT::v2i64, { 2, 7, 1, 1 } }, in getIntrinsicInstrCost()
3609 { ISD::BITREVERSE, MVT::v4i32, { 2, 7, 1, 1 } }, in getIntrinsicInstrCost()
3610 { ISD::BITREVERSE, MVT::v8i16, { 2, 7, 1, 1 } }, in getIntrinsicInstrCost()
3611 { ISD::BITREVERSE, MVT::v16i8, { 2, 7, 1, 1 } }, in getIntrinsicInstrCost()
3612 { ISD::BITREVERSE, MVT::i64, { 2, 2, 3, 4 } }, in getIntrinsicInstrCost()
3613 { ISD::BITREVERSE, MVT::i32, { 2, 2, 3, 4 } }, in getIntrinsicInstrCost()
3614 { ISD::BITREVERSE, MVT::i16, { 2, 2, 3, 4 } }, in getIntrinsicInstrCost()
3615 { ISD::BITREVERSE, MVT::i8, { 2, 2, 3, 4 } }, in getIntrinsicInstrCost()
3617 { ISD::ROTL, MVT::v4i64, { 4, 7, 5, 6 } }, in getIntrinsicInstrCost()
3618 { ISD::ROTL, MVT::v8i32, { 4, 7, 5, 6 } }, in getIntrinsicInstrCost()
3619 { ISD::ROTL, MVT::v16i16, { 4, 7, 5, 6 } }, in getIntrinsicInstrCost()
3620 { ISD::ROTL, MVT::v32i8, { 4, 7, 5, 6 } }, in getIntrinsicInstrCost()
3621 { ISD::ROTL, MVT::v2i64, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3622 { ISD::ROTL, MVT::v4i32, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3623 { ISD::ROTL, MVT::v8i16, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3624 { ISD::ROTL, MVT::v16i8, { 1, 3, 1, 1 } }, in getIntrinsicInstrCost()
3625 { ISD::ROTR, MVT::v4i64, { 4, 7, 8, 9 } }, in getIntrinsicInstrCost()
3626 { ISD::ROTR, MVT::v8i32, { 4, 7, 8, 9 } }, in getIntrinsicInstrCost()
3627 { ISD::ROTR, MVT::v16i16, { 4, 7, 8, 9 } }, in getIntrinsicInstrCost()
3628 { ISD::ROTR, MVT::v32i8, { 4, 7, 8, 9 } }, in getIntrinsicInstrCost()
3629 { ISD::ROTR, MVT::v2i64, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
3630 { ISD::ROTR, MVT::v4i32, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
3631 { ISD::ROTR, MVT::v8i16, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
3632 { ISD::ROTR, MVT::v16i8, { 1, 3, 3, 3 } } in getIntrinsicInstrCost()
3635 { ISD::ABS, MVT::v2i64, { 2, 4, 3, 5 } }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getIntrinsicInstrCost()
3636 { ISD::ABS, MVT::v4i64, { 2, 4, 3, 5 } }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getIntrinsicInstrCost()
3637 { ISD::ABS, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3638 { ISD::ABS, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3639 { ISD::ABS, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3640 { ISD::ABS, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3641 { ISD::ABS, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3642 { ISD::ABS, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3643 { ISD::BITREVERSE, MVT::v2i64, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3644 { ISD::BITREVERSE, MVT::v4i64, { 5, 11, 10, 17 } }, in getIntrinsicInstrCost()
3645 { ISD::BITREVERSE, MVT::v4i32, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3646 { ISD::BITREVERSE, MVT::v8i32, { 5, 11, 10, 17 } }, in getIntrinsicInstrCost()
3647 { ISD::BITREVERSE, MVT::v8i16, { 3, 11, 10, 11 } }, in getIntrinsicInstrCost()
3648 { ISD::BITREVERSE, MVT::v16i16, { 5, 11, 10, 17 } }, in getIntrinsicInstrCost()
3649 { ISD::BITREVERSE, MVT::v16i8, { 3, 6, 9, 9 } }, in getIntrinsicInstrCost()
3650 { ISD::BITREVERSE, MVT::v32i8, { 4, 5, 9, 15 } }, in getIntrinsicInstrCost()
3651 { ISD::BSWAP, MVT::v2i64, { 1, 2, 1, 2 } }, in getIntrinsicInstrCost()
3652 { ISD::BSWAP, MVT::v4i64, { 1, 3, 1, 2 } }, in getIntrinsicInstrCost()
3653 { ISD::BSWAP, MVT::v4i32, { 1, 2, 1, 2 } }, in getIntrinsicInstrCost()
3654 { ISD::BSWAP, MVT::v8i32, { 1, 3, 1, 2 } }, in getIntrinsicInstrCost()
3655 { ISD::BSWAP, MVT::v8i16, { 1, 2, 1, 2 } }, in getIntrinsicInstrCost()
3656 { ISD::BSWAP, MVT::v16i16, { 1, 3, 1, 2 } }, in getIntrinsicInstrCost()
3657 { ISD::CTLZ, MVT::v2i64, { 7, 18, 24, 25 } }, in getIntrinsicInstrCost()
3658 { ISD::CTLZ, MVT::v4i64, { 14, 18, 24, 44 } }, in getIntrinsicInstrCost()
3659 { ISD::CTLZ, MVT::v4i32, { 5, 16, 19, 20 } }, in getIntrinsicInstrCost()
3660 { ISD::CTLZ, MVT::v8i32, { 10, 16, 19, 34 } }, in getIntrinsicInstrCost()
3661 { ISD::CTLZ, MVT::v8i16, { 4, 13, 14, 15 } }, in getIntrinsicInstrCost()
3662 { ISD::CTLZ, MVT::v16i16, { 6, 14, 14, 24 } }, in getIntrinsicInstrCost()
3663 { ISD::CTLZ, MVT::v16i8, { 3, 12, 9, 10 } }, in getIntrinsicInstrCost()
3664 { ISD::CTLZ, MVT::v32i8, { 4, 12, 9, 14 } }, in getIntrinsicInstrCost()
3665 { ISD::CTPOP, MVT::v2i64, { 3, 9, 10, 10 } }, in getIntrinsicInstrCost()
3666 { ISD::CTPOP, MVT::v4i64, { 4, 9, 10, 14 } }, in getIntrinsicInstrCost()
3667 { ISD::CTPOP, MVT::v4i32, { 7, 12, 14, 14 } }, in getIntrinsicInstrCost()
3668 { ISD::CTPOP, MVT::v8i32, { 7, 12, 14, 18 } }, in getIntrinsicInstrCost()
3669 { ISD::CTPOP, MVT::v8i16, { 3, 7, 11, 11 } }, in getIntrinsicInstrCost()
3670 { ISD::CTPOP, MVT::v16i16, { 6, 8, 11, 18 } }, in getIntrinsicInstrCost()
3671 { ISD::CTPOP, MVT::v16i8, { 2, 5, 8, 8 } }, in getIntrinsicInstrCost()
3672 { ISD::CTPOP, MVT::v32i8, { 3, 5, 8, 12 } }, in getIntrinsicInstrCost()
3673 { ISD::CTTZ, MVT::v2i64, { 4, 11, 13, 13 } }, in getIntrinsicInstrCost()
3674 { ISD::CTTZ, MVT::v4i64, { 5, 11, 13, 20 } }, in getIntrinsicInstrCost()
3675 { ISD::CTTZ, MVT::v4i32, { 7, 14, 17, 17 } }, in getIntrinsicInstrCost()
3676 { ISD::CTTZ, MVT::v8i32, { 7, 15, 17, 24 } }, in getIntrinsicInstrCost()
3677 { ISD::CTTZ, MVT::v8i16, { 4, 9, 14, 14 } }, in getIntrinsicInstrCost()
3678 { ISD::CTTZ, MVT::v16i16, { 6, 9, 14, 24 } }, in getIntrinsicInstrCost()
3679 { ISD::CTTZ, MVT::v16i8, { 3, 7, 11, 11 } }, in getIntrinsicInstrCost()
3680 { ISD::CTTZ, MVT::v32i8, { 5, 7, 11, 18 } }, in getIntrinsicInstrCost()
3681 { ISD::SADDSAT, MVT::v16i16, { 1 } }, in getIntrinsicInstrCost()
3682 { ISD::SADDSAT, MVT::v32i8, { 1 } }, in getIntrinsicInstrCost()
3683 { ISD::SMAX, MVT::v2i64, { 2, 7, 2, 3 } }, in getIntrinsicInstrCost()
3684 { ISD::SMAX, MVT::v4i64, { 2, 7, 2, 3 } }, in getIntrinsicInstrCost()
3685 { ISD::SMAX, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3686 { ISD::SMAX, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3687 { ISD::SMAX, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3688 { ISD::SMIN, MVT::v2i64, { 2, 7, 2, 3 } }, in getIntrinsicInstrCost()
3689 { ISD::SMIN, MVT::v4i64, { 2, 7, 2, 3 } }, in getIntrinsicInstrCost()
3690 { ISD::SMIN, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3691 { ISD::SMIN, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3692 { ISD::SMIN, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3693 { ISD::SSUBSAT, MVT::v16i16, { 1 } }, in getIntrinsicInstrCost()
3694 { ISD::SSUBSAT, MVT::v32i8, { 1 } }, in getIntrinsicInstrCost()
3695 { ISD::UADDSAT, MVT::v16i16, { 1 } }, in getIntrinsicInstrCost()
3696 { ISD::UADDSAT, MVT::v32i8, { 1 } }, in getIntrinsicInstrCost()
3697 { ISD::UADDSAT, MVT::v8i32, { 3 } }, // not + pminud + paddd in getIntrinsicInstrCost()
3698 { ISD::UMAX, MVT::v2i64, { 2, 8, 5, 6 } }, in getIntrinsicInstrCost()
3699 { ISD::UMAX, MVT::v4i64, { 2, 8, 5, 8 } }, in getIntrinsicInstrCost()
3700 { ISD::UMAX, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3701 { ISD::UMAX, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3702 { ISD::UMAX, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3703 { ISD::UMIN, MVT::v2i64, { 2, 8, 5, 6 } }, in getIntrinsicInstrCost()
3704 { ISD::UMIN, MVT::v4i64, { 2, 8, 5, 8 } }, in getIntrinsicInstrCost()
3705 { ISD::UMIN, MVT::v8i32, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3706 { ISD::UMIN, MVT::v16i16, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3707 { ISD::UMIN, MVT::v32i8, { 1, 1, 1, 2 } }, in getIntrinsicInstrCost()
3708 { ISD::USUBSAT, MVT::v16i16, { 1 } }, in getIntrinsicInstrCost()
3709 { ISD::USUBSAT, MVT::v32i8, { 1 } }, in getIntrinsicInstrCost()
3710 { ISD::USUBSAT, MVT::v8i32, { 2 } }, // pmaxud + psubd in getIntrinsicInstrCost()
3711 { ISD::FMAXNUM, MVT::f32, { 2, 7, 3, 5 } }, // MAXSS + CMPUNORDSS + BLENDVPS in getIntrinsicInstrCost()
3712 { ISD::FMAXNUM, MVT::v4f32, { 2, 7, 3, 5 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3713 { ISD::FMAXNUM, MVT::v8f32, { 3, 7, 3, 6 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3714 { ISD::FMAXNUM, MVT::f64, { 2, 7, 3, 5 } }, // MAXSD + CMPUNORDSD + BLENDVPD in getIntrinsicInstrCost()
3715 { ISD::FMAXNUM, MVT::v2f64, { 2, 7, 3, 5 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3716 { ISD::FMAXNUM, MVT::v4f64, { 3, 7, 3, 6 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3717 { ISD::FSQRT, MVT::f32, { 7, 15, 1, 1 } }, // vsqrtss in getIntrinsicInstrCost()
3718 { ISD::FSQRT, MVT::v4f32, { 7, 15, 1, 1 } }, // vsqrtps in getIntrinsicInstrCost()
3719 { ISD::FSQRT, MVT::v8f32, { 14, 21, 1, 3 } }, // vsqrtps in getIntrinsicInstrCost()
3720 { ISD::FSQRT, MVT::f64, { 14, 21, 1, 1 } }, // vsqrtsd in getIntrinsicInstrCost()
3721 { ISD::FSQRT, MVT::v2f64, { 14, 21, 1, 1 } }, // vsqrtpd in getIntrinsicInstrCost()
3722 { ISD::FSQRT, MVT::v4f64, { 28, 35, 1, 3 } }, // vsqrtpd in getIntrinsicInstrCost()
3725 { ISD::ABS, MVT::v4i64, { 6, 8, 6, 12 } }, // VBLENDVPD(X,VPSUBQ(0,X),X) in getIntrinsicInstrCost()
3726 { ISD::ABS, MVT::v8i32, { 3, 6, 4, 5 } }, in getIntrinsicInstrCost()
3727 { ISD::ABS, MVT::v16i16, { 3, 6, 4, 5 } }, in getIntrinsicInstrCost()
3728 { ISD::ABS, MVT::v32i8, { 3, 6, 4, 5 } }, in getIntrinsicInstrCost()
3729 { ISD::BITREVERSE, MVT::v4i64, { 17, 20, 20, 33 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3730 { ISD::BITREVERSE, MVT::v2i64, { 8, 13, 10, 16 } }, in getIntrinsicInstrCost()
3731 { ISD::BITREVERSE, MVT::v8i32, { 17, 20, 20, 33 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3732 { ISD::BITREVERSE, MVT::v4i32, { 8, 13, 10, 16 } }, in getIntrinsicInstrCost()
3733 { ISD::BITREVERSE, MVT::v16i16, { 17, 20, 20, 33 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3734 { ISD::BITREVERSE, MVT::v8i16, { 8, 13, 10, 16 } }, in getIntrinsicInstrCost()
3735 { ISD::BITREVERSE, MVT::v32i8, { 13, 15, 17, 26 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3736 { ISD::BITREVERSE, MVT::v16i8, { 7, 7, 9, 13 } }, in getIntrinsicInstrCost()
3737 { ISD::BSWAP, MVT::v4i64, { 5, 6, 5, 10 } }, in getIntrinsicInstrCost()
3738 { ISD::BSWAP, MVT::v2i64, { 2, 2, 1, 3 } }, in getIntrinsicInstrCost()
3739 { ISD::BSWAP, MVT::v8i32, { 5, 6, 5, 10 } }, in getIntrinsicInstrCost()
3740 { ISD::BSWAP, MVT::v4i32, { 2, 2, 1, 3 } }, in getIntrinsicInstrCost()
3741 { ISD::BSWAP, MVT::v16i16, { 5, 6, 5, 10 } }, in getIntrinsicInstrCost()
3742 { ISD::BSWAP, MVT::v8i16, { 2, 2, 1, 3 } }, in getIntrinsicInstrCost()
3743 { ISD::CTLZ, MVT::v4i64, { 29, 33, 49, 58 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3744 { ISD::CTLZ, MVT::v2i64, { 14, 24, 24, 28 } }, in getIntrinsicInstrCost()
3745 { ISD::CTLZ, MVT::v8i32, { 24, 28, 39, 48 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3746 { ISD::CTLZ, MVT::v4i32, { 12, 20, 19, 23 } }, in getIntrinsicInstrCost()
3747 { ISD::CTLZ, MVT::v16i16, { 19, 22, 29, 38 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3748 { ISD::CTLZ, MVT::v8i16, { 9, 16, 14, 18 } }, in getIntrinsicInstrCost()
3749 { ISD::CTLZ, MVT::v32i8, { 14, 15, 19, 28 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3750 { ISD::CTLZ, MVT::v16i8, { 7, 12, 9, 13 } }, in getIntrinsicInstrCost()
3751 { ISD::CTPOP, MVT::v4i64, { 14, 18, 19, 28 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3752 { ISD::CTPOP, MVT::v2i64, { 7, 14, 10, 14 } }, in getIntrinsicInstrCost()
3753 { ISD::CTPOP, MVT::v8i32, { 18, 24, 27, 36 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3754 { ISD::CTPOP, MVT::v4i32, { 9, 20, 14, 18 } }, in getIntrinsicInstrCost()
3755 { ISD::CTPOP, MVT::v16i16, { 16, 21, 22, 31 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3756 { ISD::CTPOP, MVT::v8i16, { 8, 18, 11, 15 } }, in getIntrinsicInstrCost()
3757 { ISD::CTPOP, MVT::v32i8, { 13, 15, 16, 25 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3758 { ISD::CTPOP, MVT::v16i8, { 6, 12, 8, 12 } }, in getIntrinsicInstrCost()
3759 { ISD::CTTZ, MVT::v4i64, { 17, 22, 24, 33 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3760 { ISD::CTTZ, MVT::v2i64, { 9, 19, 13, 17 } }, in getIntrinsicInstrCost()
3761 { ISD::CTTZ, MVT::v8i32, { 21, 27, 32, 41 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3762 { ISD::CTTZ, MVT::v4i32, { 11, 24, 17, 21 } }, in getIntrinsicInstrCost()
3763 { ISD::CTTZ, MVT::v16i16, { 18, 24, 27, 36 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3764 { ISD::CTTZ, MVT::v8i16, { 9, 21, 14, 18 } }, in getIntrinsicInstrCost()
3765 { ISD::CTTZ, MVT::v32i8, { 15, 18, 21, 30 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3766 { ISD::CTTZ, MVT::v16i8, { 8, 16, 11, 15 } }, in getIntrinsicInstrCost()
3767 { ISD::SADDSAT, MVT::v16i16, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3768 { ISD::SADDSAT, MVT::v32i8, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3769 { ISD::SMAX, MVT::v4i64, { 6, 9, 6, 12 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3770 { ISD::SMAX, MVT::v2i64, { 3, 7, 2, 4 } }, in getIntrinsicInstrCost()
3771 { ISD::SMAX, MVT::v8i32, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3772 { ISD::SMAX, MVT::v16i16, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3773 { ISD::SMAX, MVT::v32i8, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3774 { ISD::SMIN, MVT::v4i64, { 6, 9, 6, 12 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3775 { ISD::SMIN, MVT::v2i64, { 3, 7, 2, 3 } }, in getIntrinsicInstrCost()
3776 { ISD::SMIN, MVT::v8i32, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3777 { ISD::SMIN, MVT::v16i16, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3778 { ISD::SMIN, MVT::v32i8, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3779 { ISD::SSUBSAT, MVT::v16i16, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3780 { ISD::SSUBSAT, MVT::v32i8, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3781 { ISD::UADDSAT, MVT::v16i16, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3782 { ISD::UADDSAT, MVT::v32i8, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3783 { ISD::UADDSAT, MVT::v8i32, { 8 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3784 { ISD::UMAX, MVT::v4i64, { 9, 10, 11, 17 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3785 { ISD::UMAX, MVT::v2i64, { 4, 8, 5, 7 } }, in getIntrinsicInstrCost()
3786 { ISD::UMAX, MVT::v8i32, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3787 { ISD::UMAX, MVT::v16i16, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3788 { ISD::UMAX, MVT::v32i8, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3789 { ISD::UMIN, MVT::v4i64, { 9, 10, 11, 17 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3790 { ISD::UMIN, MVT::v2i64, { 4, 8, 5, 7 } }, in getIntrinsicInstrCost()
3791 { ISD::UMIN, MVT::v8i32, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3792 { ISD::UMIN, MVT::v16i16, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3793 { ISD::UMIN, MVT::v32i8, { 4, 6, 5, 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3794 { ISD::USUBSAT, MVT::v16i16, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3795 { ISD::USUBSAT, MVT::v32i8, { 4 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3796 { ISD::USUBSAT, MVT::v8i32, { 6 } }, // 2 x 128-bit Op + extract/insert in getIntrinsicInstrCost()
3797 { ISD::FMAXNUM, MVT::f32, { 3, 6, 3, 5 } }, // MAXSS + CMPUNORDSS + BLENDVPS in getIntrinsicInstrCost()
3798 { ISD::FMAXNUM, MVT::v4f32, { 3, 6, 3, 5 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3799 { ISD::FMAXNUM, MVT::v8f32, { 5, 7, 3, 10 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3800 { ISD::FMAXNUM, MVT::f64, { 3, 6, 3, 5 } }, // MAXSD + CMPUNORDSD + BLENDVPD in getIntrinsicInstrCost()
3801 { ISD::FMAXNUM, MVT::v2f64, { 3, 6, 3, 5 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3802 { ISD::FMAXNUM, MVT::v4f64, { 5, 7, 3, 10 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3803 { ISD::FSQRT, MVT::f32, { 21, 21, 1, 1 } }, // vsqrtss in getIntrinsicInstrCost()
3804 { ISD::FSQRT, MVT::v4f32, { 21, 21, 1, 1 } }, // vsqrtps in getIntrinsicInstrCost()
3805 { ISD::FSQRT, MVT::v8f32, { 42, 42, 1, 3 } }, // vsqrtps in getIntrinsicInstrCost()
3806 { ISD::FSQRT, MVT::f64, { 27, 27, 1, 1 } }, // vsqrtsd in getIntrinsicInstrCost()
3807 { ISD::FSQRT, MVT::v2f64, { 27, 27, 1, 1 } }, // vsqrtpd in getIntrinsicInstrCost()
3808 { ISD::FSQRT, MVT::v4f64, { 54, 54, 1, 3 } }, // vsqrtpd in getIntrinsicInstrCost()
3811 { ISD::FSQRT, MVT::f32, { 19, 20, 1, 1 } }, // sqrtss in getIntrinsicInstrCost()
3812 { ISD::FSQRT, MVT::v4f32, { 37, 41, 1, 5 } }, // sqrtps in getIntrinsicInstrCost()
3813 { ISD::FSQRT, MVT::f64, { 34, 35, 1, 1 } }, // sqrtsd in getIntrinsicInstrCost()
3814 { ISD::FSQRT, MVT::v2f64, { 67, 71, 1, 5 } }, // sqrtpd in getIntrinsicInstrCost()
3817 { ISD::BSWAP, MVT::v2i64, { 5, 5, 1, 5 } }, in getIntrinsicInstrCost()
3818 { ISD::BSWAP, MVT::v4i32, { 5, 5, 1, 5 } }, in getIntrinsicInstrCost()
3819 { ISD::BSWAP, MVT::v8i16, { 5, 5, 1, 5 } }, in getIntrinsicInstrCost()
3820 { ISD::FSQRT, MVT::f32, { 20, 20, 1, 1 } }, // sqrtss in getIntrinsicInstrCost()
3821 { ISD::FSQRT, MVT::v4f32, { 40, 41, 1, 5 } }, // sqrtps in getIntrinsicInstrCost()
3822 { ISD::FSQRT, MVT::f64, { 35, 35, 1, 1 } }, // sqrtsd in getIntrinsicInstrCost()
3823 { ISD::FSQRT, MVT::v2f64, { 70, 71, 1, 5 } }, // sqrtpd in getIntrinsicInstrCost()
3826 { ISD::USUBSAT, MVT::v4i32, { 2 } }, // pmaxud + psubd in getIntrinsicInstrCost()
3827 { ISD::UADDSAT, MVT::v4i32, { 3 } }, // not + pminud + paddd in getIntrinsicInstrCost()
3828 { ISD::FMAXNUM, MVT::f32, { 5, 5, 7, 7 } }, // MAXSS + CMPUNORDSS + BLENDVPS in getIntrinsicInstrCost()
3829 { ISD::FMAXNUM, MVT::v4f32, { 4, 4, 4, 5 } }, // MAXPS + CMPUNORDPS + BLENDVPS in getIntrinsicInstrCost()
3830 { ISD::FMAXNUM, MVT::f64, { 5, 5, 7, 7 } }, // MAXSD + CMPUNORDSD + BLENDVPD in getIntrinsicInstrCost()
3831 { ISD::FMAXNUM, MVT::v2f64, { 4, 4, 4, 5 } }, // MAXPD + CMPUNORDPD + BLENDVPD in getIntrinsicInstrCost()
3832 { ISD::FSQRT, MVT::f32, { 18, 18, 1, 1 } }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
3833 { ISD::FSQRT, MVT::v4f32, { 18, 18, 1, 1 } }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
3836 { ISD::ABS, MVT::v2i64, { 3, 4, 3, 5 } }, // BLENDVPD(X,PSUBQ(0,X),X) in getIntrinsicInstrCost()
3837 { ISD::SMAX, MVT::v2i64, { 3, 7, 2, 3 } }, in getIntrinsicInstrCost()
3838 { ISD::SMAX, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3839 { ISD::SMAX, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3840 { ISD::SMIN, MVT::v2i64, { 3, 7, 2, 3 } }, in getIntrinsicInstrCost()
3841 { ISD::SMIN, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3842 { ISD::SMIN, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3843 { ISD::UMAX, MVT::v2i64, { 2, 11, 6, 7 } }, in getIntrinsicInstrCost()
3844 { ISD::UMAX, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3845 { ISD::UMAX, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3846 { ISD::UMIN, MVT::v2i64, { 2, 11, 6, 7 } }, in getIntrinsicInstrCost()
3847 { ISD::UMIN, MVT::v4i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3848 { ISD::UMIN, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3851 { ISD::ABS, MVT::v4i32, { 1, 2, 1, 1 } }, in getIntrinsicInstrCost()
3852 { ISD::ABS, MVT::v8i16, { 1, 2, 1, 1 } }, in getIntrinsicInstrCost()
3853 { ISD::ABS, MVT::v16i8, { 1, 2, 1, 1 } }, in getIntrinsicInstrCost()
3854 { ISD::BITREVERSE, MVT::v2i64, { 16, 20, 11, 21 } }, in getIntrinsicInstrCost()
3855 { ISD::BITREVERSE, MVT::v4i32, { 16, 20, 11, 21 } }, in getIntrinsicInstrCost()
3856 { ISD::BITREVERSE, MVT::v8i16, { 16, 20, 11, 21 } }, in getIntrinsicInstrCost()
3857 { ISD::BITREVERSE, MVT::v16i8, { 11, 12, 10, 16 } }, in getIntrinsicInstrCost()
3858 { ISD::BSWAP, MVT::v2i64, { 2, 3, 1, 5 } }, in getIntrinsicInstrCost()
3859 { ISD::BSWAP, MVT::v4i32, { 2, 3, 1, 5 } }, in getIntrinsicInstrCost()
3860 { ISD::BSWAP, MVT::v8i16, { 2, 3, 1, 5 } }, in getIntrinsicInstrCost()
3861 { ISD::CTLZ, MVT::v2i64, { 18, 28, 28, 35 } }, in getIntrinsicInstrCost()
3862 { ISD::CTLZ, MVT::v4i32, { 15, 20, 22, 28 } }, in getIntrinsicInstrCost()
3863 { ISD::CTLZ, MVT::v8i16, { 13, 17, 16, 22 } }, in getIntrinsicInstrCost()
3864 { ISD::CTLZ, MVT::v16i8, { 11, 15, 10, 16 } }, in getIntrinsicInstrCost()
3865 { ISD::CTPOP, MVT::v2i64, { 13, 19, 12, 18 } }, in getIntrinsicInstrCost()
3866 { ISD::CTPOP, MVT::v4i32, { 18, 24, 16, 22 } }, in getIntrinsicInstrCost()
3867 { ISD::CTPOP, MVT::v8i16, { 13, 18, 14, 20 } }, in getIntrinsicInstrCost()
3868 { ISD::CTPOP, MVT::v16i8, { 11, 12, 10, 16 } }, in getIntrinsicInstrCost()
3869 { ISD::CTTZ, MVT::v2i64, { 13, 25, 15, 22 } }, in getIntrinsicInstrCost()
3870 { ISD::CTTZ, MVT::v4i32, { 18, 26, 19, 25 } }, in getIntrinsicInstrCost()
3871 { ISD::CTTZ, MVT::v8i16, { 13, 20, 17, 23 } }, in getIntrinsicInstrCost()
3872 { ISD::CTTZ, MVT::v16i8, { 11, 16, 13, 19 } } in getIntrinsicInstrCost()
3875 { ISD::ABS, MVT::v2i64, { 3, 6, 5, 5 } }, in getIntrinsicInstrCost()
3876 { ISD::ABS, MVT::v4i32, { 1, 4, 4, 4 } }, in getIntrinsicInstrCost()
3877 { ISD::ABS, MVT::v8i16, { 1, 2, 3, 3 } }, in getIntrinsicInstrCost()
3878 { ISD::ABS, MVT::v16i8, { 1, 2, 3, 3 } }, in getIntrinsicInstrCost()
3879 { ISD::BITREVERSE, MVT::v2i64, { 16, 20, 32, 32 } }, in getIntrinsicInstrCost()
3880 { ISD::BITREVERSE, MVT::v4i32, { 16, 20, 30, 30 } }, in getIntrinsicInstrCost()
3881 { ISD::BITREVERSE, MVT::v8i16, { 16, 20, 25, 25 } }, in getIntrinsicInstrCost()
3882 { ISD::BITREVERSE, MVT::v16i8, { 11, 12, 21, 21 } }, in getIntrinsicInstrCost()
3883 { ISD::BSWAP, MVT::v2i64, { 5, 6, 11, 11 } }, in getIntrinsicInstrCost()
3884 { ISD::BSWAP, MVT::v4i32, { 5, 5, 9, 9 } }, in getIntrinsicInstrCost()
3885 { ISD::BSWAP, MVT::v8i16, { 5, 5, 4, 5 } }, in getIntrinsicInstrCost()
3886 { ISD::CTLZ, MVT::v2i64, { 10, 45, 36, 38 } }, in getIntrinsicInstrCost()
3887 { ISD::CTLZ, MVT::v4i32, { 10, 45, 38, 40 } }, in getIntrinsicInstrCost()
3888 { ISD::CTLZ, MVT::v8i16, { 9, 38, 32, 34 } }, in getIntrinsicInstrCost()
3889 { ISD::CTLZ, MVT::v16i8, { 8, 39, 29, 32 } }, in getIntrinsicInstrCost()
3890 { ISD::CTPOP, MVT::v2i64, { 12, 26, 16, 18 } }, in getIntrinsicInstrCost()
3891 { ISD::CTPOP, MVT::v4i32, { 15, 29, 21, 23 } }, in getIntrinsicInstrCost()
3892 { ISD::CTPOP, MVT::v8i16, { 13, 25, 18, 20 } }, in getIntrinsicInstrCost()
3893 { ISD::CTPOP, MVT::v16i8, { 10, 21, 14, 16 } }, in getIntrinsicInstrCost()
3894 { ISD::CTTZ, MVT::v2i64, { 14, 28, 19, 21 } }, in getIntrinsicInstrCost()
3895 { ISD::CTTZ, MVT::v4i32, { 18, 31, 24, 26 } }, in getIntrinsicInstrCost()
3896 { ISD::CTTZ, MVT::v8i16, { 16, 27, 21, 23 } }, in getIntrinsicInstrCost()
3897 { ISD::CTTZ, MVT::v16i8, { 13, 23, 17, 19 } }, in getIntrinsicInstrCost()
3898 { ISD::SADDSAT, MVT::v8i16, { 1 } }, in getIntrinsicInstrCost()
3899 { ISD::SADDSAT, MVT::v16i8, { 1 } }, in getIntrinsicInstrCost()
3900 { ISD::SMAX, MVT::v2i64, { 4, 8, 15, 15 } }, in getIntrinsicInstrCost()
3901 { ISD::SMAX, MVT::v4i32, { 2, 4, 5, 5 } }, in getIntrinsicInstrCost()
3902 { ISD::SMAX, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3903 { ISD::SMAX, MVT::v16i8, { 2, 4, 5, 5 } }, in getIntrinsicInstrCost()
3904 { ISD::SMIN, MVT::v2i64, { 4, 8, 15, 15 } }, in getIntrinsicInstrCost()
3905 { ISD::SMIN, MVT::v4i32, { 2, 4, 5, 5 } }, in getIntrinsicInstrCost()
3906 { ISD::SMIN, MVT::v8i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3907 { ISD::SMIN, MVT::v16i8, { 2, 4, 5, 5 } }, in getIntrinsicInstrCost()
3908 { ISD::SSUBSAT, MVT::v8i16, { 1 } }, in getIntrinsicInstrCost()
3909 { ISD::SSUBSAT, MVT::v16i8, { 1 } }, in getIntrinsicInstrCost()
3910 { ISD::UADDSAT, MVT::v8i16, { 1 } }, in getIntrinsicInstrCost()
3911 { ISD::UADDSAT, MVT::v16i8, { 1 } }, in getIntrinsicInstrCost()
3912 { ISD::UMAX, MVT::v2i64, { 4, 8, 15, 15 } }, in getIntrinsicInstrCost()
3913 { ISD::UMAX, MVT::v4i32, { 2, 5, 8, 8 } }, in getIntrinsicInstrCost()
3914 { ISD::UMAX, MVT::v8i16, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
3915 { ISD::UMAX, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3916 { ISD::UMIN, MVT::v2i64, { 4, 8, 15, 15 } }, in getIntrinsicInstrCost()
3917 { ISD::UMIN, MVT::v4i32, { 2, 5, 8, 8 } }, in getIntrinsicInstrCost()
3918 { ISD::UMIN, MVT::v8i16, { 1, 3, 3, 3 } }, in getIntrinsicInstrCost()
3919 { ISD::UMIN, MVT::v16i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3920 { ISD::USUBSAT, MVT::v8i16, { 1 } }, in getIntrinsicInstrCost()
3921 { ISD::USUBSAT, MVT::v16i8, { 1 } }, in getIntrinsicInstrCost()
3922 { ISD::FMAXNUM, MVT::f64, { 5, 5, 7, 7 } }, in getIntrinsicInstrCost()
3923 { ISD::FMAXNUM, MVT::v2f64, { 4, 6, 6, 6 } }, in getIntrinsicInstrCost()
3924 { ISD::FSQRT, MVT::f64, { 32, 32, 1, 1 } }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
3925 { ISD::FSQRT, MVT::v2f64, { 32, 32, 1, 1 } }, // Nehalem from http://www.agner.org/ in getIntrinsicInstrCost()
3928 { ISD::FMAXNUM, MVT::f32, { 5, 5, 7, 7 } }, in getIntrinsicInstrCost()
3929 { ISD::FMAXNUM, MVT::v4f32, { 4, 6, 6, 6 } }, in getIntrinsicInstrCost()
3930 { ISD::FSQRT, MVT::f32, { 28, 30, 1, 2 } }, // Pentium III from http://www.agner.org/ in getIntrinsicInstrCost()
3931 { ISD::FSQRT, MVT::v4f32, { 56, 56, 1, 2 } }, // Pentium III from http://www.agner.org/ in getIntrinsicInstrCost()
3934 { ISD::CTTZ, MVT::i64, { 1 } }, in getIntrinsicInstrCost()
3937 { ISD::CTTZ, MVT::i32, { 1 } }, in getIntrinsicInstrCost()
3938 { ISD::CTTZ, MVT::i16, { 1 } }, in getIntrinsicInstrCost()
3939 { ISD::CTTZ, MVT::i8, { 1 } }, in getIntrinsicInstrCost()
3942 { ISD::CTLZ, MVT::i64, { 1 } }, in getIntrinsicInstrCost()
3945 { ISD::CTLZ, MVT::i32, { 1 } }, in getIntrinsicInstrCost()
3946 { ISD::CTLZ, MVT::i16, { 2 } }, in getIntrinsicInstrCost()
3947 { ISD::CTLZ, MVT::i8, { 2 } }, in getIntrinsicInstrCost()
3950 { ISD::CTPOP, MVT::i64, { 1, 1, 1, 1 } }, // popcnt in getIntrinsicInstrCost()
3953 { ISD::CTPOP, MVT::i32, { 1, 1, 1, 1 } }, // popcnt in getIntrinsicInstrCost()
3954 { ISD::CTPOP, MVT::i16, { 1, 1, 2, 2 } }, // popcnt(zext()) in getIntrinsicInstrCost()
3955 { ISD::CTPOP, MVT::i8, { 1, 1, 2, 2 } }, // popcnt(zext()) in getIntrinsicInstrCost()
3958 { ISD::ABS, MVT::i64, { 1, 2, 3, 4 } }, // SUB+CMOV in getIntrinsicInstrCost()
3959 { ISD::BITREVERSE, MVT::i64, { 10, 12, 20, 22 } }, in getIntrinsicInstrCost()
3960 { ISD::BSWAP, MVT::i64, { 1, 2, 1, 2 } }, in getIntrinsicInstrCost()
3961 { ISD::CTLZ, MVT::i64, { 4 } }, // BSR+XOR or BSR+XOR+CMOV in getIntrinsicInstrCost()
3962 { ISD::CTLZ_ZERO_UNDEF, MVT::i64,{ 1, 1, 1, 1 } }, // BSR+XOR in getIntrinsicInstrCost()
3963 { ISD::CTTZ, MVT::i64, { 3 } }, // TEST+BSF+CMOV/BRANCH in getIntrinsicInstrCost()
3964 { ISD::CTTZ_ZERO_UNDEF, MVT::i64,{ 1, 1, 1, 1 } }, // BSR in getIntrinsicInstrCost()
3965 { ISD::CTPOP, MVT::i64, { 10, 6, 19, 19 } }, in getIntrinsicInstrCost()
3966 { ISD::ROTL, MVT::i64, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
3967 { ISD::ROTR, MVT::i64, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
3968 { X86ISD::VROTLI, MVT::i64, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3969 { ISD::FSHL, MVT::i64, { 4, 4, 1, 4 } }, in getIntrinsicInstrCost()
3970 { ISD::SMAX, MVT::i64, { 1, 3, 2, 3 } }, in getIntrinsicInstrCost()
3971 { ISD::SMIN, MVT::i64, { 1, 3, 2, 3 } }, in getIntrinsicInstrCost()
3972 { ISD::UMAX, MVT::i64, { 1, 3, 2, 3 } }, in getIntrinsicInstrCost()
3973 { ISD::UMIN, MVT::i64, { 1, 3, 2, 3 } }, in getIntrinsicInstrCost()
3974 { ISD::SADDO, MVT::i64, { 1 } }, in getIntrinsicInstrCost()
3975 { ISD::UADDO, MVT::i64, { 1 } }, in getIntrinsicInstrCost()
3976 { ISD::UMULO, MVT::i64, { 2 } }, // mulq + seto in getIntrinsicInstrCost()
3979 { ISD::ABS, MVT::i32, { 1, 2, 3, 4 } }, // SUB+XOR+SRA or SUB+CMOV in getIntrinsicInstrCost()
3980 { ISD::ABS, MVT::i16, { 2, 2, 3, 4 } }, // SUB+XOR+SRA or SUB+CMOV in getIntrinsicInstrCost()
3981 { ISD::ABS, MVT::i8, { 2, 4, 4, 4 } }, // SUB+XOR+SRA in getIntrinsicInstrCost()
3982 { ISD::BITREVERSE, MVT::i32, { 9, 12, 17, 19 } }, in getIntrinsicInstrCost()
3983 { ISD::BITREVERSE, MVT::i16, { 9, 12, 17, 19 } }, in getIntrinsicInstrCost()
3984 { ISD::BITREVERSE, MVT::i8, { 7, 9, 13, 14 } }, in getIntrinsicInstrCost()
3985 { ISD::BSWAP, MVT::i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
3986 { ISD::BSWAP, MVT::i16, { 1, 2, 1, 2 } }, // ROL in getIntrinsicInstrCost()
3987 { ISD::CTLZ, MVT::i32, { 4 } }, // BSR+XOR or BSR+XOR+CMOV in getIntrinsicInstrCost()
3988 { ISD::CTLZ, MVT::i16, { 4 } }, // BSR+XOR or BSR+XOR+CMOV in getIntrinsicInstrCost()
3989 { ISD::CTLZ, MVT::i8, { 4 } }, // BSR+XOR or BSR+XOR+CMOV in getIntrinsicInstrCost()
3990 { ISD::CTLZ_ZERO_UNDEF, MVT::i32,{ 1, 1, 1, 1 } }, // BSR+XOR in getIntrinsicInstrCost()
3991 { ISD::CTLZ_ZERO_UNDEF, MVT::i16,{ 2, 2, 3, 3 } }, // BSR+XOR in getIntrinsicInstrCost()
3992 { ISD::CTLZ_ZERO_UNDEF, MVT::i8, { 2, 2, 3, 3 } }, // BSR+XOR in getIntrinsicInstrCost()
3993 { ISD::CTTZ, MVT::i32, { 3 } }, // TEST+BSF+CMOV/BRANCH in getIntrinsicInstrCost()
3994 { ISD::CTTZ, MVT::i16, { 3 } }, // TEST+BSF+CMOV/BRANCH in getIntrinsicInstrCost()
3995 { ISD::CTTZ, MVT::i8, { 3 } }, // TEST+BSF+CMOV/BRANCH in getIntrinsicInstrCost()
3996 { ISD::CTTZ_ZERO_UNDEF, MVT::i32,{ 1, 1, 1, 1 } }, // BSF in getIntrinsicInstrCost()
3997 { ISD::CTTZ_ZERO_UNDEF, MVT::i16,{ 2, 2, 1, 1 } }, // BSF in getIntrinsicInstrCost()
3998 { ISD::CTTZ_ZERO_UNDEF, MVT::i8, { 2, 2, 1, 1 } }, // BSF in getIntrinsicInstrCost()
3999 { ISD::CTPOP, MVT::i32, { 8, 7, 15, 15 } }, in getIntrinsicInstrCost()
4000 { ISD::CTPOP, MVT::i16, { 9, 8, 17, 17 } }, in getIntrinsicInstrCost()
4001 { ISD::CTPOP, MVT::i8, { 7, 6, 13, 13 } }, in getIntrinsicInstrCost()
4002 { ISD::ROTL, MVT::i32, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4003 { ISD::ROTL, MVT::i16, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4004 { ISD::ROTL, MVT::i8, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4005 { ISD::ROTR, MVT::i32, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4006 { ISD::ROTR, MVT::i16, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4007 { ISD::ROTR, MVT::i8, { 2, 3, 1, 3 } }, in getIntrinsicInstrCost()
4008 { X86ISD::VROTLI, MVT::i32, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
4009 { X86ISD::VROTLI, MVT::i16, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
4010 { X86ISD::VROTLI, MVT::i8, { 1, 1, 1, 1 } }, in getIntrinsicInstrCost()
4011 { ISD::FSHL, MVT::i32, { 4, 4, 1, 4 } }, in getIntrinsicInstrCost()
4012 { ISD::FSHL, MVT::i16, { 4, 4, 2, 5 } }, in getIntrinsicInstrCost()
4013 { ISD::FSHL, MVT::i8, { 4, 4, 2, 5 } }, in getIntrinsicInstrCost()
4014 { ISD::SMAX, MVT::i32, { 1, 2, 2, 3 } }, in getIntrinsicInstrCost()
4015 { ISD::SMAX, MVT::i16, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4016 { ISD::SMAX, MVT::i8, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4017 { ISD::SMIN, MVT::i32, { 1, 2, 2, 3 } }, in getIntrinsicInstrCost()
4018 { ISD::SMIN, MVT::i16, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4019 { ISD::SMIN, MVT::i8, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4020 { ISD::UMAX, MVT::i32, { 1, 2, 2, 3 } }, in getIntrinsicInstrCost()
4021 { ISD::UMAX, MVT::i16, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4022 { ISD::UMAX, MVT::i8, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4023 { ISD::UMIN, MVT::i32, { 1, 2, 2, 3 } }, in getIntrinsicInstrCost()
4024 { ISD::UMIN, MVT::i16, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4025 { ISD::UMIN, MVT::i8, { 1, 4, 2, 4 } }, in getIntrinsicInstrCost()
4026 { ISD::SADDO, MVT::i32, { 1 } }, in getIntrinsicInstrCost()
4027 { ISD::SADDO, MVT::i16, { 1 } }, in getIntrinsicInstrCost()
4028 { ISD::SADDO, MVT::i8, { 1 } }, in getIntrinsicInstrCost()
4029 { ISD::UADDO, MVT::i32, { 1 } }, in getIntrinsicInstrCost()
4030 { ISD::UADDO, MVT::i16, { 1 } }, in getIntrinsicInstrCost()
4031 { ISD::UADDO, MVT::i8, { 1 } }, in getIntrinsicInstrCost()
4032 { ISD::UMULO, MVT::i32, { 2 } }, // mul + seto in getIntrinsicInstrCost()
4033 { ISD::UMULO, MVT::i16, { 2 } }, in getIntrinsicInstrCost()
4034 { ISD::UMULO, MVT::i8, { 2 } }, in getIntrinsicInstrCost()
4143 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(OpTy); in getIntrinsicInstrCost()
4144 MVT MTy = LT.second; in getIntrinsicInstrCost()
4152 unsigned Cost = MTy.getVectorElementType() == MVT::i8 ? 1 : 2; in getIntrinsicInstrCost()
4355 { ISD::EXTRACT_VECTOR_ELT, MVT::i8, 4 }, in getVectorInstrCost()
4356 { ISD::EXTRACT_VECTOR_ELT, MVT::i16, 4 }, in getVectorInstrCost()
4357 { ISD::EXTRACT_VECTOR_ELT, MVT::i32, 4 }, in getVectorInstrCost()
4358 { ISD::EXTRACT_VECTOR_ELT, MVT::i64, 7 } in getVectorInstrCost()
4401 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(Val); in getVectorInstrCost()
4425 MVT MScalarTy = LT.second.getScalarType(); in getVectorInstrCost()
4429 return (MScalarTy == MVT::i16 && ST->hasSSE2()) || in getVectorInstrCost()
4431 (MScalarTy == MVT::f32 && ST->hasSSE41() && in getVectorInstrCost()
4504 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(Ty); in getScalarizationOverhead()
4505 MVT MScalarTy = LT.second.getScalarType(); in getScalarizationOverhead()
4520 if ((MScalarTy == MVT::i16 && ST->hasSSE2()) || in getScalarizationOverhead()
4522 (MScalarTy == MVT::f32 && ST->hasSSE41())) { in getScalarizationOverhead()
4715 MVT LegalSrcVecTy = getTypeLegalizationCost(SrcVecTy).second; in getReplicationShuffleCost()
4716 MVT LegalPromSrcVecTy = getTypeLegalizationCost(PromSrcVecTy).second; in getReplicationShuffleCost()
4717 MVT LegalPromDstVecTy = getTypeLegalizationCost(PromDstVecTy).second; in getReplicationShuffleCost()
4718 MVT LegalDstVecTy = getTypeLegalizationCost(DstVecTy).second; in getReplicationShuffleCost()
4788 if (TLI->getValueType(DL, Src, true) == MVT::Other) in getMemoryOpCost()
4793 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(Src); in getMemoryOpCost()
4967 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(SrcVTy); in getMaskedMemoryOpCost()
5053 { ISD::FADD, MVT::v2f64, 3 }, in getArithmeticReductionCost()
5054 { ISD::ADD, MVT::v2i64, 5 }, in getArithmeticReductionCost()
5058 { ISD::FADD, MVT::v2f64, 2 }, in getArithmeticReductionCost()
5059 { ISD::FADD, MVT::v2f32, 2 }, in getArithmeticReductionCost()
5060 { ISD::FADD, MVT::v4f32, 4 }, in getArithmeticReductionCost()
5061 { ISD::ADD, MVT::v2i64, 2 }, // The data reported by the IACA tool is "1.6". in getArithmeticReductionCost()
5062 { ISD::ADD, MVT::v2i32, 2 }, // FIXME: chosen to be less than v4i32 in getArithmeticReductionCost()
5063 { ISD::ADD, MVT::v4i32, 3 }, // The data reported by the IACA tool is "3.3". in getArithmeticReductionCost()
5064 { ISD::ADD, MVT::v2i16, 2 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
5065 { ISD::ADD, MVT::v4i16, 3 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
5066 { ISD::ADD, MVT::v8i16, 4 }, // The data reported by the IACA tool is "4.3". in getArithmeticReductionCost()
5067 { ISD::ADD, MVT::v2i8, 2 }, in getArithmeticReductionCost()
5068 { ISD::ADD, MVT::v4i8, 2 }, in getArithmeticReductionCost()
5069 { ISD::ADD, MVT::v8i8, 2 }, in getArithmeticReductionCost()
5070 { ISD::ADD, MVT::v16i8, 3 }, in getArithmeticReductionCost()
5074 { ISD::FADD, MVT::v4f64, 3 }, in getArithmeticReductionCost()
5075 { ISD::FADD, MVT::v4f32, 3 }, in getArithmeticReductionCost()
5076 { ISD::FADD, MVT::v8f32, 4 }, in getArithmeticReductionCost()
5077 { ISD::ADD, MVT::v2i64, 1 }, // The data reported by the IACA tool is "1.5". in getArithmeticReductionCost()
5078 { ISD::ADD, MVT::v4i64, 3 }, in getArithmeticReductionCost()
5079 { ISD::ADD, MVT::v8i32, 5 }, in getArithmeticReductionCost()
5080 { ISD::ADD, MVT::v16i16, 5 }, in getArithmeticReductionCost()
5081 { ISD::ADD, MVT::v32i8, 4 }, in getArithmeticReductionCost()
5092 MVT MTy = VT.getSimpleVT(); in getArithmeticReductionCost()
5106 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(ValTy); in getArithmeticReductionCost()
5108 MVT MTy = LT.second; in getArithmeticReductionCost()
5113 if (ISD == ISD::MUL && MTy.getScalarType() == MVT::i8) { in getArithmeticReductionCost()
5147 { ISD::AND, MVT::v2i1, 3 }, in getArithmeticReductionCost()
5148 { ISD::AND, MVT::v4i1, 5 }, in getArithmeticReductionCost()
5149 { ISD::AND, MVT::v8i1, 7 }, in getArithmeticReductionCost()
5150 { ISD::AND, MVT::v16i1, 9 }, in getArithmeticReductionCost()
5151 { ISD::AND, MVT::v32i1, 11 }, in getArithmeticReductionCost()
5152 { ISD::AND, MVT::v64i1, 13 }, in getArithmeticReductionCost()
5153 { ISD::OR, MVT::v2i1, 3 }, in getArithmeticReductionCost()
5154 { ISD::OR, MVT::v4i1, 5 }, in getArithmeticReductionCost()
5155 { ISD::OR, MVT::v8i1, 7 }, in getArithmeticReductionCost()
5156 { ISD::OR, MVT::v16i1, 9 }, in getArithmeticReductionCost()
5157 { ISD::OR, MVT::v32i1, 11 }, in getArithmeticReductionCost()
5158 { ISD::OR, MVT::v64i1, 13 }, in getArithmeticReductionCost()
5162 { ISD::AND, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
5163 { ISD::AND, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
5164 { ISD::OR, MVT::v16i16, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
5165 { ISD::OR, MVT::v32i8, 2 }, // vpmovmskb + cmp in getArithmeticReductionCost()
5169 { ISD::AND, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
5170 { ISD::AND, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
5171 { ISD::AND, MVT::v16i16, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
5172 { ISD::AND, MVT::v32i8, 4 }, // vextractf128 + vpand + vpmovmskb + cmp in getArithmeticReductionCost()
5173 { ISD::OR, MVT::v4i64, 2 }, // vmovmskpd + cmp in getArithmeticReductionCost()
5174 { ISD::OR, MVT::v8i32, 2 }, // vmovmskps + cmp in getArithmeticReductionCost()
5175 { ISD::OR, MVT::v16i16, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
5176 { ISD::OR, MVT::v32i8, 4 }, // vextractf128 + vpor + vpmovmskb + cmp in getArithmeticReductionCost()
5180 { ISD::AND, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
5181 { ISD::AND, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
5182 { ISD::AND, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
5183 { ISD::AND, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
5184 { ISD::OR, MVT::v2i64, 2 }, // movmskpd + cmp in getArithmeticReductionCost()
5185 { ISD::OR, MVT::v4i32, 2 }, // movmskps + cmp in getArithmeticReductionCost()
5186 { ISD::OR, MVT::v8i16, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
5187 { ISD::OR, MVT::v16i8, 2 }, // pmovmskb + cmp in getArithmeticReductionCost()
5304 std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(ValTy); in getMinMaxReductionCost()
5306 MVT MTy = LT.second; in getMinMaxReductionCost()
5324 {ISD::UMIN, MVT::v2i16, 5}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
5325 {ISD::UMIN, MVT::v4i16, 7}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
5326 {ISD::UMIN, MVT::v8i16, 9}, // need pxors to use pminsw/pmaxsw in getMinMaxReductionCost()
5330 {ISD::SMIN, MVT::v2i16, 3}, // same as sse2 in getMinMaxReductionCost()
5331 {ISD::SMIN, MVT::v4i16, 5}, // same as sse2 in getMinMaxReductionCost()
5332 {ISD::UMIN, MVT::v2i16, 5}, // same as sse2 in getMinMaxReductionCost()
5333 {ISD::UMIN, MVT::v4i16, 7}, // same as sse2 in getMinMaxReductionCost()
5334 {ISD::SMIN, MVT::v8i16, 4}, // phminposuw+xor in getMinMaxReductionCost()
5335 {ISD::UMIN, MVT::v8i16, 4}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
5336 {ISD::SMIN, MVT::v2i8, 3}, // pminsb in getMinMaxReductionCost()
5337 {ISD::SMIN, MVT::v4i8, 5}, // pminsb in getMinMaxReductionCost()
5338 {ISD::SMIN, MVT::v8i8, 7}, // pminsb in getMinMaxReductionCost()
5339 {ISD::SMIN, MVT::v16i8, 6}, in getMinMaxReductionCost()
5340 {ISD::UMIN, MVT::v2i8, 3}, // same as sse2 in getMinMaxReductionCost()
5341 {ISD::UMIN, MVT::v4i8, 5}, // same as sse2 in getMinMaxReductionCost()
5342 {ISD::UMIN, MVT::v8i8, 7}, // same as sse2 in getMinMaxReductionCost()
5343 {ISD::UMIN, MVT::v16i8, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
5347 {ISD::SMIN, MVT::v16i16, 6}, in getMinMaxReductionCost()
5348 {ISD::UMIN, MVT::v16i16, 6}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
5349 {ISD::SMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
5350 {ISD::UMIN, MVT::v32i8, 8}, in getMinMaxReductionCost()
5354 {ISD::SMIN, MVT::v32i16, 8}, in getMinMaxReductionCost()
5355 {ISD::UMIN, MVT::v32i16, 8}, // FIXME: umin is cheaper than umax in getMinMaxReductionCost()
5356 {ISD::SMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
5357 {ISD::UMIN, MVT::v64i8, 10}, in getMinMaxReductionCost()
5365 MVT MTy = VT.getSimpleVT(); in getMinMaxReductionCost()
5730 std::pair<InstructionCost, MVT> IdxsLT = getTypeLegalizationCost(IndexVTy); in getGSVectorCost()
5731 std::pair<InstructionCost, MVT> SrcLT = getTypeLegalizationCost(SrcVTy); in getGSVectorCost()
6194 MVT LegalVT = getTypeLegalizationCost(VecTy).second; in getInterleavedMemoryOpCostAVX512()
6212 MVT VT = MVT::getVectorVT(MVT::getVT(VecTy->getScalarType()), VF); in getInterleavedMemoryOpCostAVX512()
6250 {3, MVT::v16i8, 12}, //(load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCostAVX512()
6251 {3, MVT::v32i8, 14}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
6252 {3, MVT::v64i8, 22}, //(load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCostAVX512()
6305 {3, MVT::v16i8, 12}, // interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCostAVX512()
6306 {3, MVT::v32i8, 14}, // interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
6307 {3, MVT::v64i8, 26}, // interleave 3 x 64i8 into 96i8 (and store) in getInterleavedMemoryOpCostAVX512()
6309 {4, MVT::v8i8, 10}, // interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCostAVX512()
6310 {4, MVT::v16i8, 11}, // interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCostAVX512()
6311 {4, MVT::v32i8, 14}, // interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCostAVX512()
6312 {4, MVT::v64i8, 24} // interleave 4 x 32i8 into 256i8 (and store) in getInterleavedMemoryOpCostAVX512()
6373 MVT LegalVT = getTypeLegalizationCost(VecTy).second; in getInterleavedMemoryOpCost()
6408 {2, MVT::v2i8, 2}, // (load 4i8 and) deinterleave into 2 x 2i8 in getInterleavedMemoryOpCost()
6409 {2, MVT::v4i8, 2}, // (load 8i8 and) deinterleave into 2 x 4i8 in getInterleavedMemoryOpCost()
6410 {2, MVT::v8i8, 2}, // (load 16i8 and) deinterleave into 2 x 8i8 in getInterleavedMemoryOpCost()
6411 {2, MVT::v16i8, 4}, // (load 32i8 and) deinterleave into 2 x 16i8 in getInterleavedMemoryOpCost()
6412 {2, MVT::v32i8, 6}, // (load 64i8 and) deinterleave into 2 x 32i8 in getInterleavedMemoryOpCost()
6414 {2, MVT::v8i16, 6}, // (load 16i16 and) deinterleave into 2 x 8i16 in getInterleavedMemoryOpCost()
6415 {2, MVT::v16i16, 9}, // (load 32i16 and) deinterleave into 2 x 16i16 in getInterleavedMemoryOpCost()
6416 {2, MVT::v32i16, 18}, // (load 64i16 and) deinterleave into 2 x 32i16 in getInterleavedMemoryOpCost()
6418 {2, MVT::v8i32, 4}, // (load 16i32 and) deinterleave into 2 x 8i32 in getInterleavedMemoryOpCost()
6419 {2, MVT::v16i32, 8}, // (load 32i32 and) deinterleave into 2 x 16i32 in getInterleavedMemoryOpCost()
6420 {2, MVT::v32i32, 16}, // (load 64i32 and) deinterleave into 2 x 32i32 in getInterleavedMemoryOpCost()
6422 {2, MVT::v4i64, 4}, // (load 8i64 and) deinterleave into 2 x 4i64 in getInterleavedMemoryOpCost()
6423 {2, MVT::v8i64, 8}, // (load 16i64 and) deinterleave into 2 x 8i64 in getInterleavedMemoryOpCost()
6424 {2, MVT::v16i64, 16}, // (load 32i64 and) deinterleave into 2 x 16i64 in getInterleavedMemoryOpCost()
6425 {2, MVT::v32i64, 32}, // (load 64i64 and) deinterleave into 2 x 32i64 in getInterleavedMemoryOpCost()
6427 {3, MVT::v2i8, 3}, // (load 6i8 and) deinterleave into 3 x 2i8 in getInterleavedMemoryOpCost()
6428 {3, MVT::v4i8, 3}, // (load 12i8 and) deinterleave into 3 x 4i8 in getInterleavedMemoryOpCost()
6429 {3, MVT::v8i8, 6}, // (load 24i8 and) deinterleave into 3 x 8i8 in getInterleavedMemoryOpCost()
6430 {3, MVT::v16i8, 11}, // (load 48i8 and) deinterleave into 3 x 16i8 in getInterleavedMemoryOpCost()
6431 {3, MVT::v32i8, 14}, // (load 96i8 and) deinterleave into 3 x 32i8 in getInterleavedMemoryOpCost()
6433 {3, MVT::v2i16, 5}, // (load 6i16 and) deinterleave into 3 x 2i16 in getInterleavedMemoryOpCost()
6434 {3, MVT::v4i16, 7}, // (load 12i16 and) deinterleave into 3 x 4i16 in getInterleavedMemoryOpCost()
6435 {3, MVT::v8i16, 9}, // (load 24i16 and) deinterleave into 3 x 8i16 in getInterleavedMemoryOpCost()
6436 {3, MVT::v16i16, 28}, // (load 48i16 and) deinterleave into 3 x 16i16 in getInterleavedMemoryOpCost()
6437 {3, MVT::v32i16, 56}, // (load 96i16 and) deinterleave into 3 x 32i16 in getInterleavedMemoryOpCost()
6439 {3, MVT::v2i32, 3}, // (load 6i32 and) deinterleave into 3 x 2i32 in getInterleavedMemoryOpCost()
6440 {3, MVT::v4i32, 3}, // (load 12i32 and) deinterleave into 3 x 4i32 in getInterleavedMemoryOpCost()
6441 {3, MVT::v8i32, 7}, // (load 24i32 and) deinterleave into 3 x 8i32 in getInterleavedMemoryOpCost()
6442 {3, MVT::v16i32, 14}, // (load 48i32 and) deinterleave into 3 x 16i32 in getInterleavedMemoryOpCost()
6443 {3, MVT::v32i32, 32}, // (load 96i32 and) deinterleave into 3 x 32i32 in getInterleavedMemoryOpCost()
6445 {3, MVT::v2i64, 1}, // (load 6i64 and) deinterleave into 3 x 2i64 in getInterleavedMemoryOpCost()
6446 {3, MVT::v4i64, 5}, // (load 12i64 and) deinterleave into 3 x 4i64 in getInterleavedMemoryOpCost()
6447 {3, MVT::v8i64, 10}, // (load 24i64 and) deinterleave into 3 x 8i64 in getInterleavedMemoryOpCost()
6448 {3, MVT::v16i64, 20}, // (load 48i64 and) deinterleave into 3 x 16i64 in getInterleavedMemoryOpCost()
6450 {4, MVT::v2i8, 4}, // (load 8i8 and) deinterleave into 4 x 2i8 in getInterleavedMemoryOpCost()
6451 {4, MVT::v4i8, 4}, // (load 16i8 and) deinterleave into 4 x 4i8 in getInterleavedMemoryOpCost()
6452 {4, MVT::v8i8, 12}, // (load 32i8 and) deinterleave into 4 x 8i8 in getInterleavedMemoryOpCost()
6453 {4, MVT::v16i8, 24}, // (load 64i8 and) deinterleave into 4 x 16i8 in getInterleavedMemoryOpCost()
6454 {4, MVT::v32i8, 56}, // (load 128i8 and) deinterleave into 4 x 32i8 in getInterleavedMemoryOpCost()
6456 {4, MVT::v2i16, 6}, // (load 8i16 and) deinterleave into 4 x 2i16 in getInterleavedMemoryOpCost()
6457 {4, MVT::v4i16, 17}, // (load 16i16 and) deinterleave into 4 x 4i16 in getInterleavedMemoryOpCost()
6458 {4, MVT::v8i16, 33}, // (load 32i16 and) deinterleave into 4 x 8i16 in getInterleavedMemoryOpCost()
6459 {4, MVT::v16i16, 75}, // (load 64i16 and) deinterleave into 4 x 16i16 in getInterleavedMemoryOpCost()
6460 {4, MVT::v32i16, 150}, // (load 128i16 and) deinterleave into 4 x 32i16 in getInterleavedMemoryOpCost()
6462 {4, MVT::v2i32, 4}, // (load 8i32 and) deinterleave into 4 x 2i32 in getInterleavedMemoryOpCost()
6463 {4, MVT::v4i32, 8}, // (load 16i32 and) deinterleave into 4 x 4i32 in getInterleavedMemoryOpCost()
6464 {4, MVT::v8i32, 16}, // (load 32i32 and) deinterleave into 4 x 8i32 in getInterleavedMemoryOpCost()
6465 {4, MVT::v16i32, 32}, // (load 64i32 and) deinterleave into 4 x 16i32 in getInterleavedMemoryOpCost()
6466 {4, MVT::v32i32, 68}, // (load 128i32 and) deinterleave into 4 x 32i32 in getInterleavedMemoryOpCost()
6468 {4, MVT::v2i64, 6}, // (load 8i64 and) deinterleave into 4 x 2i64 in getInterleavedMemoryOpCost()
6469 {4, MVT::v4i64, 8}, // (load 16i64 and) deinterleave into 4 x 4i64 in getInterleavedMemoryOpCost()
6470 {4, MVT::v8i64, 20}, // (load 32i64 and) deinterleave into 4 x 8i64 in getInterleavedMemoryOpCost()
6471 {4, MVT::v16i64, 40}, // (load 64i64 and) deinterleave into 4 x 16i64 in getInterleavedMemoryOpCost()
6473 {6, MVT::v2i8, 6}, // (load 12i8 and) deinterleave into 6 x 2i8 in getInterleavedMemoryOpCost()
6474 {6, MVT::v4i8, 14}, // (load 24i8 and) deinterleave into 6 x 4i8 in getInterleavedMemoryOpCost()
6475 {6, MVT::v8i8, 18}, // (load 48i8 and) deinterleave into 6 x 8i8 in getInterleavedMemoryOpCost()
6476 {6, MVT::v16i8, 43}, // (load 96i8 and) deinterleave into 6 x 16i8 in getInterleavedMemoryOpCost()
6477 {6, MVT::v32i8, 82}, // (load 192i8 and) deinterleave into 6 x 32i8 in getInterleavedMemoryOpCost()
6479 {6, MVT::v2i16, 13}, // (load 12i16 and) deinterleave into 6 x 2i16 in getInterleavedMemoryOpCost()
6480 {6, MVT::v4i16, 9}, // (load 24i16 and) deinterleave into 6 x 4i16 in getInterleavedMemoryOpCost()
6481 {6, MVT::v8i16, 39}, // (load 48i16 and) deinterleave into 6 x 8i16 in getInterleavedMemoryOpCost()
6482 {6, MVT::v16i16, 106}, // (load 96i16 and) deinterleave into 6 x 16i16 in getInterleavedMemoryOpCost()
6483 {6, MVT::v32i16, 212}, // (load 192i16 and) deinterleave into 6 x 32i16 in getInterleavedMemoryOpCost()
6485 {6, MVT::v2i32, 6}, // (load 12i32 and) deinterleave into 6 x 2i32 in getInterleavedMemoryOpCost()
6486 {6, MVT::v4i32, 15}, // (load 24i32 and) deinterleave into 6 x 4i32 in getInterleavedMemoryOpCost()
6487 {6, MVT::v8i32, 31}, // (load 48i32 and) deinterleave into 6 x 8i32 in getInterleavedMemoryOpCost()
6488 {6, MVT::v16i32, 64}, // (load 96i32 and) deinterleave into 6 x 16i32 in getInterleavedMemoryOpCost()
6490 {6, MVT::v2i64, 6}, // (load 12i64 and) deinterleave into 6 x 2i64 in getInterleavedMemoryOpCost()
6491 {6, MVT::v4i64, 18}, // (load 24i64 and) deinterleave into 6 x 4i64 in getInterleavedMemoryOpCost()
6492 {6, MVT::v8i64, 36}, // (load 48i64 and) deinterleave into 6 x 8i64 in getInterleavedMemoryOpCost()
6494 {8, MVT::v8i32, 40} // (load 64i32 and) deinterleave into 8 x 8i32 in getInterleavedMemoryOpCost()
6498 {2, MVT::v4i16, 2}, // (load 8i16 and) deinterleave into 2 x 4i16 in getInterleavedMemoryOpCost()
6502 {2, MVT::v2i16, 2}, // (load 4i16 and) deinterleave into 2 x 2i16 in getInterleavedMemoryOpCost()
6503 {2, MVT::v4i16, 7}, // (load 8i16 and) deinterleave into 2 x 4i16 in getInterleavedMemoryOpCost()
6505 {2, MVT::v2i32, 2}, // (load 4i32 and) deinterleave into 2 x 2i32 in getInterleavedMemoryOpCost()
6506 {2, MVT::v4i32, 2}, // (load 8i32 and) deinterleave into 2 x 4i32 in getInterleavedMemoryOpCost()
6508 {2, MVT::v2i64, 2}, // (load 4i64 and) deinterleave into 2 x 2i64 in getInterleavedMemoryOpCost()
6512 {2, MVT::v16i8, 3}, // interleave 2 x 16i8 into 32i8 (and store) in getInterleavedMemoryOpCost()
6513 {2, MVT::v32i8, 4}, // interleave 2 x 32i8 into 64i8 (and store) in getInterleavedMemoryOpCost()
6515 {2, MVT::v8i16, 3}, // interleave 2 x 8i16 into 16i16 (and store) in getInterleavedMemoryOpCost()
6516 {2, MVT::v16i16, 4}, // interleave 2 x 16i16 into 32i16 (and store) in getInterleavedMemoryOpCost()
6517 {2, MVT::v32i16, 8}, // interleave 2 x 32i16 into 64i16 (and store) in getInterleavedMemoryOpCost()
6519 {2, MVT::v4i32, 2}, // interleave 2 x 4i32 into 8i32 (and store) in getInterleavedMemoryOpCost()
6520 {2, MVT::v8i32, 4}, // interleave 2 x 8i32 into 16i32 (and store) in getInterleavedMemoryOpCost()
6521 {2, MVT::v16i32, 8}, // interleave 2 x 16i32 into 32i32 (and store) in getInterleavedMemoryOpCost()
6522 {2, MVT::v32i32, 16}, // interleave 2 x 32i32 into 64i32 (and store) in getInterleavedMemoryOpCost()
6524 {2, MVT::v2i64, 2}, // interleave 2 x 2i64 into 4i64 (and store) in getInterleavedMemoryOpCost()
6525 {2, MVT::v4i64, 4}, // interleave 2 x 4i64 into 8i64 (and store) in getInterleavedMemoryOpCost()
6526 {2, MVT::v8i64, 8}, // interleave 2 x 8i64 into 16i64 (and store) in getInterleavedMemoryOpCost()
6527 {2, MVT::v16i64, 16}, // interleave 2 x 16i64 into 32i64 (and store) in getInterleavedMemoryOpCost()
6528 {2, MVT::v32i64, 32}, // interleave 2 x 32i64 into 64i64 (and store) in getInterleavedMemoryOpCost()
6530 {3, MVT::v2i8, 4}, // interleave 3 x 2i8 into 6i8 (and store) in getInterleavedMemoryOpCost()
6531 {3, MVT::v4i8, 4}, // interleave 3 x 4i8 into 12i8 (and store) in getInterleavedMemoryOpCost()
6532 {3, MVT::v8i8, 6}, // interleave 3 x 8i8 into 24i8 (and store) in getInterleavedMemoryOpCost()
6533 {3, MVT::v16i8, 11}, // interleave 3 x 16i8 into 48i8 (and store) in getInterleavedMemoryOpCost()
6534 {3, MVT::v32i8, 13}, // interleave 3 x 32i8 into 96i8 (and store) in getInterleavedMemoryOpCost()
6536 {3, MVT::v2i16, 4}, // interleave 3 x 2i16 into 6i16 (and store) in getInterleavedMemoryOpCost()
6537 {3, MVT::v4i16, 6}, // interleave 3 x 4i16 into 12i16 (and store) in getInterleavedMemoryOpCost()
6538 {3, MVT::v8i16, 12}, // interleave 3 x 8i16 into 24i16 (and store) in getInterleavedMemoryOpCost()
6539 {3, MVT::v16i16, 27}, // interleave 3 x 16i16 into 48i16 (and store) in getInterleavedMemoryOpCost()
6540 {3, MVT::v32i16, 54}, // interleave 3 x 32i16 into 96i16 (and store) in getInterleavedMemoryOpCost()
6542 {3, MVT::v2i32, 4}, // interleave 3 x 2i32 into 6i32 (and store) in getInterleavedMemoryOpCost()
6543 {3, MVT::v4i32, 5}, // interleave 3 x 4i32 into 12i32 (and store) in getInterleavedMemoryOpCost()
6544 {3, MVT::v8i32, 11}, // interleave 3 x 8i32 into 24i32 (and store) in getInterleavedMemoryOpCost()
6545 {3, MVT::v16i32, 22}, // interleave 3 x 16i32 into 48i32 (and store) in getInterleavedMemoryOpCost()
6546 {3, MVT::v32i32, 48}, // interleave 3 x 32i32 into 96i32 (and store) in getInterleavedMemoryOpCost()
6548 {3, MVT::v2i64, 4}, // interleave 3 x 2i64 into 6i64 (and store) in getInterleavedMemoryOpCost()
6549 {3, MVT::v4i64, 6}, // interleave 3 x 4i64 into 12i64 (and store) in getInterleavedMemoryOpCost()
6550 {3, MVT::v8i64, 12}, // interleave 3 x 8i64 into 24i64 (and store) in getInterleavedMemoryOpCost()
6551 {3, MVT::v16i64, 24}, // interleave 3 x 16i64 into 48i64 (and store) in getInterleavedMemoryOpCost()
6553 {4, MVT::v2i8, 4}, // interleave 4 x 2i8 into 8i8 (and store) in getInterleavedMemoryOpCost()
6554 {4, MVT::v4i8, 4}, // interleave 4 x 4i8 into 16i8 (and store) in getInterleavedMemoryOpCost()
6555 {4, MVT::v8i8, 4}, // interleave 4 x 8i8 into 32i8 (and store) in getInterleavedMemoryOpCost()
6556 {4, MVT::v16i8, 8}, // interleave 4 x 16i8 into 64i8 (and store) in getInterleavedMemoryOpCost()
6557 {4, MVT::v32i8, 12}, // interleave 4 x 32i8 into 128i8 (and store) in getInterleavedMemoryOpCost()
6559 {4, MVT::v2i16, 2}, // interleave 4 x 2i16 into 8i16 (and store) in getInterleavedMemoryOpCost()
6560 {4, MVT::v4i16, 6}, // interleave 4 x 4i16 into 16i16 (and store) in getInterleavedMemoryOpCost()
6561 {4, MVT::v8i16, 10}, // interleave 4 x 8i16 into 32i16 (and store) in getInterleavedMemoryOpCost()
6562 {4, MVT::v16i16, 32}, // interleave 4 x 16i16 into 64i16 (and store) in getInterleavedMemoryOpCost()
6563 {4, MVT::v32i16, 64}, // interleave 4 x 32i16 into 128i16 (and store) in getInterleavedMemoryOpCost()
6565 {4, MVT::v2i32, 5}, // interleave 4 x 2i32 into 8i32 (and store) in getInterleavedMemoryOpCost()
6566 {4, MVT::v4i32, 6}, // interleave 4 x 4i32 into 16i32 (and store) in getInterleavedMemoryOpCost()
6567 {4, MVT::v8i32, 16}, // interleave 4 x 8i32 into 32i32 (and store) in getInterleavedMemoryOpCost()
6568 {4, MVT::v16i32, 32}, // interleave 4 x 16i32 into 64i32 (and store) in getInterleavedMemoryOpCost()
6569 {4, MVT::v32i32, 64}, // interleave 4 x 32i32 into 128i32 (and store) in getInterleavedMemoryOpCost()
6571 {4, MVT::v2i64, 6}, // interleave 4 x 2i64 into 8i64 (and store) in getInterleavedMemoryOpCost()
6572 {4, MVT::v4i64, 8}, // interleave 4 x 4i64 into 16i64 (and store) in getInterleavedMemoryOpCost()
6573 {4, MVT::v8i64, 20}, // interleave 4 x 8i64 into 32i64 (and store) in getInterleavedMemoryOpCost()
6574 {4, MVT::v16i64, 40}, // interleave 4 x 16i64 into 64i64 (and store) in getInterleavedMemoryOpCost()
6576 {6, MVT::v2i8, 7}, // interleave 6 x 2i8 into 12i8 (and store) in getInterleavedMemoryOpCost()
6577 {6, MVT::v4i8, 9}, // interleave 6 x 4i8 into 24i8 (and store) in getInterleavedMemoryOpCost()
6578 {6, MVT::v8i8, 16}, // interleave 6 x 8i8 into 48i8 (and store) in getInterleavedMemoryOpCost()
6579 {6, MVT::v16i8, 27}, // interleave 6 x 16i8 into 96i8 (and store) in getInterleavedMemoryOpCost()
6580 {6, MVT::v32i8, 90}, // interleave 6 x 32i8 into 192i8 (and store) in getInterleavedMemoryOpCost()
6582 {6, MVT::v2i16, 10}, // interleave 6 x 2i16 into 12i16 (and store) in getInterleavedMemoryOpCost()
6583 {6, MVT::v4i16, 15}, // interleave 6 x 4i16 into 24i16 (and store) in getInterleavedMemoryOpCost()
6584 {6, MVT::v8i16, 21}, // interleave 6 x 8i16 into 48i16 (and store) in getInterleavedMemoryOpCost()
6585 {6, MVT::v16i16, 58}, // interleave 6 x 16i16 into 96i16 (and store) in getInterleavedMemoryOpCost()
6586 {6, MVT::v32i16, 90}, // interleave 6 x 32i16 into 192i16 (and store) in getInterleavedMemoryOpCost()
6588 {6, MVT::v2i32, 9}, // interleave 6 x 2i32 into 12i32 (and store) in getInterleavedMemoryOpCost()
6589 {6, MVT::v4i32, 12}, // interleave 6 x 4i32 into 24i32 (and store) in getInterleavedMemoryOpCost()
6590 {6, MVT::v8i32, 33}, // interleave 6 x 8i32 into 48i32 (and store) in getInterleavedMemoryOpCost()
6591 {6, MVT::v16i32, 66}, // interleave 6 x 16i32 into 96i32 (and store) in getInterleavedMemoryOpCost()
6593 {6, MVT::v2i64, 8}, // interleave 6 x 2i64 into 12i64 (and store) in getInterleavedMemoryOpCost()
6594 {6, MVT::v4i64, 15}, // interleave 6 x 4i64 into 24i64 (and store) in getInterleavedMemoryOpCost()
6595 {6, MVT::v8i64, 30}, // interleave 6 x 8i64 into 48i64 (and store) in getInterleavedMemoryOpCost()
6599 {2, MVT::v2i8, 1}, // interleave 2 x 2i8 into 4i8 (and store) in getInterleavedMemoryOpCost()
6600 {2, MVT::v4i8, 1}, // interleave 2 x 4i8 into 8i8 (and store) in getInterleavedMemoryOpCost()
6601 {2, MVT::v8i8, 1}, // interleave 2 x 8i8 into 16i8 (and store) in getInterleavedMemoryOpCost()
6603 {2, MVT::v2i16, 1}, // interleave 2 x 2i16 into 4i16 (and store) in getInterleavedMemoryOpCost()
6604 {2, MVT::v4i16, 1}, // interleave 2 x 4i16 into 8i16 (and store) in getInterleavedMemoryOpCost()
6606 {2, MVT::v2i32, 1}, // interleave 2 x 2i32 into 4i32 (and store) in getInterleavedMemoryOpCost()