================ @@ -326,6 +326,50 @@ InstructionCost RISCVTTIImpl::getShuffleCost(TTI::ShuffleKind Kind, switch (Kind) { default: break; + case TTI::SK_ExtractSubvector: + if (isa<FixedVectorType>(SubTp)) { + unsigned TpRegs = getRegUsageForType(Tp); + unsigned NumElems = + divideCeil(Tp->getElementCount().getFixedValue(), TpRegs); + // Whole vector extract - just the vector itself + (possible) vsetvli. + // TODO: consider adding the cost for vsetvli. + if (Index == 0 || (ST->getRealMaxVLen() == ST->getRealMinVLen() && ---------------- preames wrote:
I think this check would be more clearly expressed as an and of the following clauses a) ST->getRealMaxVLen() == ST->getRealMinVLen() b) NumElems * ElementSizeInBits == VLEN c) Index % NumElems == 0 Note that this only supports m1 full extracts. But starting there and extending it to m2, and m4 later seems entirely reasonable. https://github.com/llvm/llvm-project/pull/80164 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits