Changeset 4139 in CLRX


Ignore:
Timestamp:
May 10, 2018, 9:03:23 PM (6 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Make some optimizations - do not fillUp many times routines if routine have startpoint at start

  • enable skipping filling up in joinVRegRecur.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdasm/AsmRegAllocLive.cpp

    r4134 r4139  
    277277    }
    278278   
    279     /*if (flitEnd != flowStack.begin())
     279    if (flitEnd != flowStack.begin())
    280280    {
    281281        const CodeBlock& cbLast = codeBlocks[(flitEnd-1)->blockIndex];
     
    283283            // if already filled up
    284284            return;
    285     }*/
     285    }
    286286   
    287287    auto flit = flowStack.begin() + flowStkStart.stackPos + (flowStkStart.inSubroutines);
     
    990990        auto res = rdata.lastAccessMap.insert({ svreg, { { routineBlock, false } } });
    991991        if (!res.second)
    992             res.first->second.insertValue({ routineBlock, false });
     992        {
     993            VectorSet<LastAccessBlockPos>& sset = res.first->second;
     994            // filter before inserting (remove everything that do not point to calls)
     995            sset.resize(std::remove_if(sset.begin(), sset.end(),
     996                [](const LastAccessBlockPos& b)
     997                { return !b.inSubroutines; }) - sset.begin());
     998            sset.insertValue({ routineBlock, false });
     999        }
    9931000    }
    9941001}
Note: See TracChangeset for help on using the changeset viewer.