[llvm-dev] ShuffleKind SK_ExtractSubvector
Friedman, Eli via llvm-dev
llvm-dev at lists.llvm.org
Wed Feb 8 10:10:47 PST 2017
On 2/8/2017 6:35 AM, Jonas Paulsson via llvm-dev wrote:
> I am a little unsure about the semantics of the ShuffleKind
> SK_ExtractSubvector. It seems a subvector is to be extracted, starting
> from a given index of a given subtype.
> First of all, if index 0 is passed, I suppose this would mean a noop?
> But what about calls like the one made of LoopVectorizer for
> Instruction::PHI in getInstructionCost():
> return TTI.getShuffleCost(TargetTransformInfo::SK_ExtractSubvector,
> VectorTy, VF - 1, VectorTy);
> Here the highest index is passed, which doesn't make sense to me. Nor
> does it make sense to pass the the same VectorTy in both parameters.
> In BBVectorize, start index 0 is passed in one place, but then in
> another place start index of 'VF' is passed, which should even be
> outside possible indexes, or?
> I guess this is confusing since there are those extra parameters and
> everything, but in the end it seems to me there is no code anywhere
> checking this particular ShuffleKind, or?
I think the intent is to match the rules for EXTRACT_SUBVECTOR in isel
(hence the name). But, as you've noted, no in-tree targets are actually
using it, so we can redefine it to use whatever definition is convenient.
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
More information about the llvm-dev