From: Matthias Braun Date: Mon, 28 Aug 2017 20:11:27 +0000 (+0000) Subject: Address r311914 review comments X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7dc0bf26754fca90d19289ecec1f743cd02e9150;p=llvm Address r311914 review comments git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311917 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/TableGen/ConcatenatedSubregs.td b/test/TableGen/ConcatenatedSubregs.td index dc2a298dd77..b67d6b02e54 100644 --- a/test/TableGen/ConcatenatedSubregs.td +++ b/test/TableGen/ConcatenatedSubregs.td @@ -13,6 +13,12 @@ class MyClass types, dag registers> let Size = size; } +// Register Example: +// D0_D1 -- D0 (sub0) -- S0 (ssub0) +// \ \- S1 (ssub1) +// \ D1 (sub1) -- S2 (ssub2) +// \- S3 (ssub3) + def sub0 : SubRegIndex<32>; def sub1 : SubRegIndex<32, 32>; def sub2 : SubRegIndex<32, 64>; diff --git a/utils/TableGen/CodeGenRegisters.cpp b/utils/TableGen/CodeGenRegisters.cpp index 5ff1608afc9..425351ccf04 100644 --- a/utils/TableGen/CodeGenRegisters.cpp +++ b/utils/TableGen/CodeGenRegisters.cpp @@ -122,12 +122,11 @@ LaneBitmask CodeGenSubRegIndex::computeLaneMask() const { void CodeGenSubRegIndex::setConcatenationOf( ArrayRef Parts) { - if (ConcatenationOf.empty()) { + if (ConcatenationOf.empty()) ConcatenationOf.assign(Parts.begin(), Parts.end()); - } else { + else assert(std::equal(Parts.begin(), Parts.end(), ConcatenationOf.begin()) && "parts consistent"); - } } void CodeGenSubRegIndex::computeConcatTransitiveClosure() { @@ -492,16 +491,15 @@ void CodeGenRegister::computeSecondarySubRegs(CodeGenRegBank &RegBank) { SmallVector Parts; // We know that the first component is (SubRegIdx,SubReg). However we // may still need to split it into smaller subregister parts. - assert(Cand->ExplicitSubRegs[0] == SubReg); - assert(getSubRegIndex(SubReg) == SubRegIdx); + assert(Cand->ExplicitSubRegs[0] == SubReg && "LeadingSuperRegs correct"); + assert(getSubRegIndex(SubReg) == SubRegIdx && "LeadingSuperRegs correct"); for (CodeGenRegister *SubReg : Cand->ExplicitSubRegs) { if (CodeGenSubRegIndex *SubRegIdx = getSubRegIndex(SubReg)) { if (SubRegIdx->ConcatenationOf.empty()) { Parts.push_back(SubRegIdx); - } else { + } else for (CodeGenSubRegIndex *SubIdx : SubRegIdx->ConcatenationOf) Parts.push_back(SubIdx); - } } else { // Sub-register doesn't exist. Parts.clear();