int GCNTTIImpl::getArithmeticReductionCost(unsigned Opcode, Type *Ty, bool IsPairwise) { EVT OrigTy = TLI->getValueType(DL, Ty); // Computes cost on targets that have packed math instructions(which support // 16-bit types only). if (IsPairwise || !ST->hasVOP3PInsts() || OrigTy.getScalarSizeInBits() != 16) return BaseT::getArithmeticReductionCost(Opcode, Ty, IsPairwise); std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty); return LT.first * getFullRateInstrCost(); }
int AMDGPUTTIImpl::getMinMaxReductionCost(Type *Ty, Type *CondTy, bool IsPairwise, bool IsUnsigned) { EVT OrigTy = TLI->getValueType(DL, Ty); // Computes cost on targets that have packed math instructions(which support // 16-bit types only). if (IsPairwise || !ST->hasVOP3PInsts() || OrigTy.getScalarSizeInBits() != 16) return BaseT::getMinMaxReductionCost(Ty, CondTy, IsPairwise, IsUnsigned); std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Ty); return LT.first * getHalfRateInstrCost(); }