forked from OSchip/llvm-project
[RegisterBankInfo] Remove overly-agressive asserts
Summary: We were asserting in RegisterBankInfo if RBI.copyCost() returns UINT_MAX. This is OK for RegBankSelect::Mode::Fast since we only try one instruction mapping and can't recover from this, but for RegBankSelect::Mode::Greedy we will be considering multiple instruction mappings, so we can recover if we see a UNIT_MAX copy cost. The copy cost for one pair of register banks in the AMDGPU backend will be UNIT_MAX, so this patch will prevent AMDGPU tests from breaking. Reviewers: ab, qcolombet, t.p.northover, dsanders Reviewed By: qcolombet Subscribers: tpr, llvm-commits Differential Revision: https://reviews.llvm.org/D33144 llvm-svn: 303043
This commit is contained in:
parent
418a8e3442
commit
049e7e0791
|
@ -204,12 +204,8 @@ uint64_t RegBankSelect::getRepairCost(
|
|||
// TODO: use a dedicated constant for ImpossibleCost.
|
||||
if (Cost != UINT_MAX)
|
||||
return Cost;
|
||||
assert(!TPC->isGlobalISelAbortEnabled() &&
|
||||
"Legalization not available yet");
|
||||
// Return the legalization cost of that repairing.
|
||||
}
|
||||
assert(!TPC->isGlobalISelAbortEnabled() &&
|
||||
"Complex repairing not implemented yet");
|
||||
return UINT_MAX;
|
||||
}
|
||||
|
||||
|
@ -452,6 +448,11 @@ RegBankSelect::MappingCost RegBankSelect::computeMapping(
|
|||
|
||||
// Sums up the repairing cost of MO at each insertion point.
|
||||
uint64_t RepairCost = getRepairCost(MO, ValMapping);
|
||||
|
||||
// This is an impossible to repair cost.
|
||||
if (RepairCost == UINT_MAX)
|
||||
continue;
|
||||
|
||||
// Bias used for splitting: 5%.
|
||||
const uint64_t PercentageForBias = 5;
|
||||
uint64_t Bias = (RepairCost * PercentageForBias + 99) / 100;
|
||||
|
|
Loading…
Reference in New Issue