[SLP] use reduction kind's opcode for cost model queries; NFC

This should be no-functional-change because the reduction kind
opcodes are 1-for-1 mappings to the instructions we are matching
as reductions. But we want to remove the need for the
`OperationData` opcode field because that does not work when
we start matching intrinsics (eg, maxnum) as reduction candidates.
This commit is contained in:
Sanjay Patel 2021-01-05 15:08:51 -05:00
parent d4a999b453
commit 5a1d31a284
1 changed files with 5 additions and 6 deletions

View File

@ -7138,6 +7138,7 @@ private:
auto *VecTy = FixedVectorType::get(ScalarTy, ReduxWidth);
RecurKind Kind = RdxTreeInst.getKind();
unsigned RdxOpcode = RecurrenceDescriptor::getOpcode(Kind);
int SplittingRdxCost;
switch (Kind) {
case RecurKind::Add:
@ -7147,9 +7148,8 @@ private:
case RecurKind::Xor:
case RecurKind::FAdd:
case RecurKind::FMul:
SplittingRdxCost =
TTI->getArithmeticReductionCost(RdxTreeInst.getOpcode(), VecTy,
/*IsPairwiseForm=*/false);
SplittingRdxCost = TTI->getArithmeticReductionCost(
RdxOpcode, VecTy, /*IsPairwiseForm=*/false);
break;
case RecurKind::SMax:
case RecurKind::SMin:
@ -7175,15 +7175,14 @@ private:
case RecurKind::Xor:
case RecurKind::FAdd:
case RecurKind::FMul:
ScalarReduxCost =
TTI->getArithmeticInstrCost(RdxTreeInst.getOpcode(), ScalarTy);
ScalarReduxCost = TTI->getArithmeticInstrCost(RdxOpcode, ScalarTy);
break;
case RecurKind::SMax:
case RecurKind::SMin:
case RecurKind::UMax:
case RecurKind::UMin:
ScalarReduxCost =
TTI->getCmpSelInstrCost(RdxTreeInst.getOpcode(), ScalarTy) +
TTI->getCmpSelInstrCost(RdxOpcode, ScalarTy) +
TTI->getCmpSelInstrCost(Instruction::Select, ScalarTy,
CmpInst::makeCmpResultType(ScalarTy));
break;