diff options
Diffstat (limited to 'llvm/lib/Analysis/TargetTransformInfo.cpp')
| -rw-r--r-- | llvm/lib/Analysis/TargetTransformInfo.cpp | 20 | 
1 files changed, 16 insertions, 4 deletions
| diff --git a/llvm/lib/Analysis/TargetTransformInfo.cpp b/llvm/lib/Analysis/TargetTransformInfo.cpp index bf62623..c47a1c1 100644 --- a/llvm/lib/Analysis/TargetTransformInfo.cpp +++ b/llvm/lib/Analysis/TargetTransformInfo.cpp @@ -1001,13 +1001,25 @@ InstructionCost TargetTransformInfo::getShuffleCost(  TargetTransformInfo::PartialReductionExtendKind  TargetTransformInfo::getPartialReductionExtendKind(Instruction *I) { -  if (isa<SExtInst>(I)) -    return PR_SignExtend; -  if (isa<ZExtInst>(I)) -    return PR_ZeroExtend; +  if (auto *Cast = dyn_cast<CastInst>(I)) +    return getPartialReductionExtendKind(Cast->getOpcode());    return PR_None;  } +TargetTransformInfo::PartialReductionExtendKind +TargetTransformInfo::getPartialReductionExtendKind( +    Instruction::CastOps CastOpc) { +  switch (CastOpc) { +  case Instruction::CastOps::ZExt: +    return PR_ZeroExtend; +  case Instruction::CastOps::SExt: +    return PR_SignExtend; +  default: +    return PR_None; +  } +  llvm_unreachable("Unhandled cast opcode"); +} +  TTI::CastContextHint  TargetTransformInfo::getCastContextHint(const Instruction *I) {    if (!I) | 
