Lines Matching refs:ISD

244   int ISD = TLI->InstructionOpcodeToISD(Opcode);  in getArithmeticInstrCost()  local
245 assert(ISD && "Invalid opcode"); in getArithmeticInstrCost()
247 if (ISD == ISD::MUL && Args.size() == 2 && LT.second.isVector() && in getArithmeticInstrCost()
297 ISD = X86ISD::PMULUDQ; in getArithmeticInstrCost()
302 if (ISD == ISD::MUL && Op2Info.isConstant() && in getArithmeticInstrCost()
316 if ((ISD == ISD::SDIV || ISD == ISD::SREM) && in getArithmeticInstrCost()
326 if (ISD == ISD::SREM) { in getArithmeticInstrCost()
338 if ((ISD == ISD::UDIV || ISD == ISD::UREM) && in getArithmeticInstrCost()
340 if (ISD == ISD::UDIV) 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()
369 CostTableLookup(AVX512BWUniformConstCostTable, ISD, LT.second)) 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()
405 CostTableLookup(AVX512UniformConstCostTable, ISD, LT.second)) 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()
446 CostTableLookup(AVX2UniformConstCostTable, ISD, LT.second)) 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()
489 CostTableLookup(AVXUniformConstCostTable, ISD, LT.second)) 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()
520 CostTableLookup(SSE2UniformConstCostTable, ISD, LT.second)) 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()
538 CostTableLookup(AVX512BWConstCostTable, ISD, LT.second)) 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()
561 CostTableLookup(AVX512ConstCostTable, ISD, LT.second)) 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()
583 if (const auto *Entry = CostTableLookup(AVX2ConstCostTable, ISD, LT.second)) 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()
605 if (const auto *Entry = CostTableLookup(AVXConstCostTable, ISD, LT.second)) in getArithmeticInstrCost()
610 { ISD::SDIV, MVT::v4i32, { 15 } }, // vpmuludq sequence in getArithmeticInstrCost()
611 { ISD::SREM, MVT::v4i32, { 20 } }, // vpmuludq+mul+sub sequence in getArithmeticInstrCost()
616 CostTableLookup(SSE41ConstCostTable, ISD, LT.second)) 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()
638 if (const auto *Entry = CostTableLookup(SSE2ConstCostTable, ISD, LT.second)) 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()
660 CostTableLookup(AVX512BWUniformCostTable, ISD, LT.second)) 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()
684 CostTableLookup(AVX512UniformCostTable, ISD, LT.second)) 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()
721 CostTableLookup(AVX2UniformCostTable, ISD, LT.second)) 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()
759 CostTableLookup(AVXUniformCostTable, ISD, LT.second)) 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()
785 CostTableLookup(SSE2UniformCostTable, ISD, LT.second)) 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()
797 if (const auto *Entry = CostTableLookup(AVX512DQCostTable, ISD, LT.second)) 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()
844 if (const auto *Entry = CostTableLookup(AVX512BWCostTable, ISD, LT.second)) 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()
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()
938 if (const auto *Entry = CostTableLookup(AVX512CostTable, ISD, LT.second)) 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()
967 if (ISD == ISD::SHL && LT.second == MVT::v16i16 && in getArithmeticInstrCost()
974 if (const auto *Entry = CostTableLookup(AVX2ShiftCostTable, ISD, LT.second)) 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()
1012 int ShiftISD = ISD; in getArithmeticInstrCost()
1013 if ((ShiftISD == ISD::SRL || ShiftISD == ISD::SRA) && Op2Info.isConstant()) in getArithmeticInstrCost()
1014 ShiftISD = ISD::SHL; in getArithmeticInstrCost()
1021 if (ISD == ISD::SHL && !Op2Info.isUniform() && Op2Info.isConstant()) { in getArithmeticInstrCost()
1027 ISD = ISD::MUL; 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()
1038 if (const auto *Entry = CostTableLookup(GLMCostTable, ISD, LT.second)) 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()
1067 if (const auto *Entry = CostTableLookup(SLMCostTable, ISD, LT.second)) 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()
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()
1142 if (const auto *Entry = CostTableLookup(AVX2CostTable, ISD, LT.second)) 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()
1242 if (const auto *Entry = CostTableLookup(AVX1CostTable, ISD, LT.second)) 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()
1271 if (const auto *Entry = CostTableLookup(SSE42CostTable, ISD, LT.second)) 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()
1295 if (const auto *Entry = CostTableLookup(SSE41CostTable, ISD, LT.second)) 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()
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()
1365 if (const auto *Entry = CostTableLookup(SSE2CostTable, ISD, LT.second)) 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()
1387 if (const auto *Entry = CostTableLookup(SSE1CostTable, ISD, LT.second)) 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()
1398 if (const auto *Entry = CostTableLookup(X64CostTbl, ISD, LT.second)) 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()
1422 if (const auto *Entry = CostTableLookup(X86CostTbl, ISD, LT.second)) in getArithmeticInstrCost()
1433 (ISD == ISD::SDIV || ISD == ISD::SREM || ISD == ISD::UDIV || in getArithmeticInstrCost()
1434 ISD == ISD::UREM)) { in getArithmeticInstrCost()
1443 switch (ISD) { in getArithmeticInstrCost()
1444 case ISD::FADD: in getArithmeticInstrCost()
1445 case ISD::FSUB: in getArithmeticInstrCost()
1446 case ISD::FMUL: in getArithmeticInstrCost()
1447 case ISD::FDIV: in getArithmeticInstrCost()
1448 case ISD::FNEG: in getArithmeticInstrCost()
1449 case ISD::AND: in getArithmeticInstrCost()
1450 case ISD::OR: in getArithmeticInstrCost()
1451 case ISD::XOR: in getArithmeticInstrCost()
2104 int ISD = TLI->InstructionOpcodeToISD(Opcode); in getCastInstrCost() local
2105 assert(ISD && "Invalid opcode"); in getCastInstrCost()
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()
2925 AVX512BWConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
2930 AVX512DQConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
2935 AVX512FConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
2941 AVX512BWVLConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
2946 AVX512DQVLConversionTbl, ISD, SimpleDstTy, SimpleSrcTy)) in getCastInstrCost()
2950 if (const auto *Entry = ConvertCostTableLookup(AVX512VLConversionTbl, ISD, in getCastInstrCost()
2955 if (const auto *Entry = ConvertCostTableLookup(AVX2ConversionTbl, ISD, in getCastInstrCost()
2961 if (const auto *Entry = ConvertCostTableLookup(AVXConversionTbl, ISD, in getCastInstrCost()
2967 if (const auto *Entry = ConvertCostTableLookup(SSE41ConversionTbl, ISD, in getCastInstrCost()
2973 if (const auto *Entry = ConvertCostTableLookup(SSE2ConversionTbl, ISD, in getCastInstrCost()
2984 if (ISD == ISD::TRUNCATE && LTSrc.second == LTDest.second) in getCastInstrCost()
2990 AVX512BWConversionTbl, ISD, LTDest.second, LTSrc.second)) in getCastInstrCost()
2995 AVX512DQConversionTbl, ISD, LTDest.second, LTSrc.second)) in getCastInstrCost()
3000 AVX512FConversionTbl, ISD, LTDest.second, LTSrc.second)) in getCastInstrCost()
3005 if (const auto *Entry = ConvertCostTableLookup(AVX512BWVLConversionTbl, ISD, in getCastInstrCost()
3010 if (const auto *Entry = ConvertCostTableLookup(AVX512DQVLConversionTbl, ISD, in getCastInstrCost()
3015 if (const auto *Entry = ConvertCostTableLookup(AVX512VLConversionTbl, ISD, in getCastInstrCost()
3020 if (const auto *Entry = ConvertCostTableLookup(AVX2ConversionTbl, ISD, in getCastInstrCost()
3025 if (const auto *Entry = ConvertCostTableLookup(AVXConversionTbl, ISD, in getCastInstrCost()
3030 if (const auto *Entry = ConvertCostTableLookup(SSE41ConversionTbl, ISD, in getCastInstrCost()
3035 if (const auto *Entry = ConvertCostTableLookup(SSE2ConversionTbl, ISD, in getCastInstrCost()
3041 if ((ISD == ISD::SINT_TO_FP || ISD == ISD::UINT_TO_FP) && in getCastInstrCost()
3045 (ISD == ISD::SINT_TO_FP) ? Instruction::SExt : Instruction::ZExt; in getCastInstrCost()
3058 if ((ISD == ISD::FP_TO_SINT || ISD == ISD::FP_TO_UINT) && in getCastInstrCost()
3085 int ISD = TLI->InstructionOpcodeToISD(Opcode); in getCmpSelInstrCost() local
3086 assert(ISD && "Invalid opcode"); 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()
3305 if (const auto *Entry = CostTableLookup(SLMCostTbl, ISD, MTy)) in getCmpSelInstrCost()
3310 if (const auto *Entry = CostTableLookup(AVX512BWCostTbl, ISD, MTy)) in getCmpSelInstrCost()
3315 if (const auto *Entry = CostTableLookup(AVX512CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3320 if (const auto *Entry = CostTableLookup(AVX2CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3325 if (const auto *Entry = CostTableLookup(XOPCostTbl, ISD, MTy)) in getCmpSelInstrCost()
3330 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3335 if (const auto *Entry = CostTableLookup(SSE42CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3340 if (const auto *Entry = CostTableLookup(SSE41CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3345 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getCmpSelInstrCost()
3350 if (const auto *Entry = CostTableLookup(SSE1CostTbl, ISD, MTy)) 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()
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()
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()
4040 unsigned ISD = ISD::DELETED_NODE; in getIntrinsicInstrCost() local
4045 ISD = ISD::ABS; in getIntrinsicInstrCost()
4048 ISD = ISD::BITREVERSE; in getIntrinsicInstrCost()
4051 ISD = ISD::BSWAP; in getIntrinsicInstrCost()
4054 ISD = ISD::CTLZ; in getIntrinsicInstrCost()
4057 ISD = ISD::CTPOP; in getIntrinsicInstrCost()
4060 ISD = ISD::CTTZ; in getIntrinsicInstrCost()
4063 ISD = ISD::FSHL; in getIntrinsicInstrCost()
4067 ISD = ISD::ROTL; in getIntrinsicInstrCost()
4071 ISD = X86ISD::VROTLI; in getIntrinsicInstrCost()
4077 ISD = ISD::FSHL; in getIntrinsicInstrCost()
4083 ISD = ISD::ROTR; in getIntrinsicInstrCost()
4085 ISD = X86ISD::VROTLI; in getIntrinsicInstrCost()
4092 ISD = ISD::FMAXNUM; in getIntrinsicInstrCost()
4095 ISD = ISD::SADDSAT; in getIntrinsicInstrCost()
4098 ISD = ISD::SMAX; in getIntrinsicInstrCost()
4101 ISD = ISD::SMIN; in getIntrinsicInstrCost()
4104 ISD = ISD::SSUBSAT; in getIntrinsicInstrCost()
4107 ISD = ISD::UADDSAT; in getIntrinsicInstrCost()
4110 ISD = ISD::UMAX; in getIntrinsicInstrCost()
4113 ISD = ISD::UMIN; in getIntrinsicInstrCost()
4116 ISD = ISD::USUBSAT; in getIntrinsicInstrCost()
4119 ISD = ISD::FSQRT; in getIntrinsicInstrCost()
4124 ISD = ISD::SADDO; in getIntrinsicInstrCost()
4130 ISD = ISD::UADDO; in getIntrinsicInstrCost()
4136 ISD = ISD::UMULO; in getIntrinsicInstrCost()
4141 if (ISD != ISD::DELETED_NODE) { in getIntrinsicInstrCost()
4147 if (ISD == ISD::BITREVERSE && ST->hasGFNI() && ST->hasSSSE3() && in getIntrinsicInstrCost()
4164 if (((ISD == ISD::CTTZ && !ST->hasBMI()) || in getIntrinsicInstrCost()
4165 (ISD == ISD::CTLZ && !ST->hasLZCNT())) && in getIntrinsicInstrCost()
4170 ISD = ISD == ISD::CTTZ ? ISD::CTTZ_ZERO_UNDEF : ISD::CTLZ_ZERO_UNDEF; in getIntrinsicInstrCost()
4174 if (ISD == ISD::FSQRT && CostKind == TTI::TCK_CodeSize) in getIntrinsicInstrCost()
4177 auto adjustTableCost = [](int ISD, unsigned Cost, in getIntrinsicInstrCost()
4183 if (ISD == ISD::FMAXNUM || ISD == ISD::FMINNUM) { in getIntrinsicInstrCost()
4191 if (const auto *Entry = CostTableLookup(GLMCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4193 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4197 if (const auto *Entry = CostTableLookup(SLMCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4199 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4203 if (const auto *Entry = CostTableLookup(AVX512VBMI2CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4205 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4209 if (const auto *Entry = CostTableLookup(AVX512BITALGCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4211 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4215 if (const auto *Entry = CostTableLookup(AVX512VPOPCNTDQCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4217 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4221 if (const auto *Entry = CostTableLookup(AVX512CDCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4223 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4227 if (const auto *Entry = CostTableLookup(AVX512BWCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4229 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4233 if (const auto *Entry = CostTableLookup(AVX512CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4235 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4239 if (const auto *Entry = CostTableLookup(XOPCostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4241 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4245 if (const auto *Entry = CostTableLookup(AVX2CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4247 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4251 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4253 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4257 if (const auto *Entry = CostTableLookup(SSE42CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4259 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4263 if (const auto *Entry = CostTableLookup(SSE41CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4265 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4269 if (const auto *Entry = CostTableLookup(SSSE3CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4271 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4275 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4277 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4281 if (const auto *Entry = CostTableLookup(SSE1CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4283 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4288 if (const auto *Entry = CostTableLookup(BMI64CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4290 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4293 if (const auto *Entry = CostTableLookup(BMI32CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4295 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4301 if (const auto *Entry = CostTableLookup(LZCNT64CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4303 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4306 if (const auto *Entry = CostTableLookup(LZCNT32CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4308 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4314 if (const auto *Entry = CostTableLookup(POPCNT64CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4316 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4319 if (const auto *Entry = CostTableLookup(POPCNT32CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4321 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4325 if (ISD == ISD::BSWAP && ST->hasMOVBE() && ST->hasFastMOVBE()) { in getIntrinsicInstrCost()
4337 if (const auto *Entry = CostTableLookup(X64CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4339 return adjustTableCost(Entry->ISD, *KindCost, LT.first, in getIntrinsicInstrCost()
4342 if (const auto *Entry = CostTableLookup(X86CostTbl, ISD, MTy)) in getIntrinsicInstrCost()
4344 return adjustTableCost(Entry->ISD, *KindCost, LT.first, ICA.getFlags()); 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()
4463 int ISD = TLI->InstructionOpcodeToISD(Opcode); in getVectorInstrCost() local
4464 assert(ISD && "Unexpected vector opcode"); in getVectorInstrCost()
4466 if (auto *Entry = CostTableLookup(SLMCostTbl, ISD, MScalarTy)) in getVectorInstrCost()
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()
5084 int ISD = TLI->InstructionOpcodeToISD(Opcode); in getArithmeticReductionCost() local
5085 assert(ISD && "Invalid opcode"); in getArithmeticReductionCost()
5094 if (const auto *Entry = CostTableLookup(SLMCostTbl, ISD, MTy)) in getArithmeticReductionCost()
5098 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getArithmeticReductionCost()
5102 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getArithmeticReductionCost()
5113 if (ISD == ISD::MUL && MTy.getScalarType() == MVT::i8) { in getArithmeticReductionCost()
5133 if (const auto *Entry = CostTableLookup(SLMCostTbl, ISD, MTy)) in getArithmeticReductionCost()
5137 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getArithmeticReductionCost()
5141 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) 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()
5203 if (const auto *Entry = CostTableLookup(AVX512BoolReduction, ISD, MTy)) in getArithmeticReductionCost()
5206 if (const auto *Entry = CostTableLookup(AVX2BoolReduction, ISD, MTy)) in getArithmeticReductionCost()
5209 if (const auto *Entry = CostTableLookup(AVX1BoolReduction, ISD, MTy)) in getArithmeticReductionCost()
5212 if (const auto *Entry = CostTableLookup(SSE2BoolReduction, ISD, MTy)) in getArithmeticReductionCost()
5308 int ISD; in getMinMaxReductionCost() local
5310 ISD = (IID == Intrinsic::umin || IID == Intrinsic::umax) ? ISD::UMIN in getMinMaxReductionCost()
5311 : ISD::SMIN; in getMinMaxReductionCost()
5315 ISD = (IID == Intrinsic::minnum || IID == Intrinsic::maxnum) in getMinMaxReductionCost()
5316 ? ISD::FMINNUM in getMinMaxReductionCost()
5317 : ISD::FMINIMUM; 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()
5367 if (const auto *Entry = CostTableLookup(AVX512BWCostTbl, ISD, MTy)) in getMinMaxReductionCost()
5371 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5375 if (const auto *Entry = CostTableLookup(SSE41CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5379 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5399 if (const auto *Entry = CostTableLookup(AVX512BWCostTbl, ISD, MTy)) in getMinMaxReductionCost()
5403 if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5407 if (const auto *Entry = CostTableLookup(SSE41CostTbl, ISD, MTy)) in getMinMaxReductionCost()
5411 if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy)) in getMinMaxReductionCost()
6044 return TLI->isOperationLegal(IsSigned ? ISD::SDIVREM : ISD::UDIVREM, VT); in hasDivRemOp()