Skip to content

Commit

Permalink
[RegisterBankInfo] Remove overly-agressive asserts
Browse files Browse the repository at this point in the history
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
  • Loading branch information
tstellar committed May 15, 2017
1 parent 418a8e3 commit 049e7e0
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp
Expand Up @@ -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;
}

Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 049e7e0

Please sign in to comment.