Changeset 4097 in CLRX


Ignore:
Timestamp:
May 7, 2018, 9:06:33 AM (2 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Change LastVRegMap def: map of vectors of LastAccessBlockPos? instead sizes.

Location:
CLRadeonExtender/trunk/amdasm
Files:
2 edited

Legend:

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

    r4096 r4097  
    755755            FlowStackCIter flit = flowStack.begin();
    756756            if (lvrit != lastVRegMap.end())
    757                 flit += lvrit->second.back();
     757                flit += lvrit->second.back().blockIndex;
    758758           
    759759            cxuint regType = getRegType(regTypesNum, regRanges, entry.first);
     
    16301630                    // update
    16311631                    auto res = lastVRegMap.insert({ sentry.first,
    1632                                 { flowStack.size()-1 } });
     1632                                { { flowStack.size()-1, false } } });
    16331633                    if (!res.second) // if not first seen, just update
    16341634                        // update last
    1635                         res.first->second.push_back(flowStack.size()-1);
     1635                        res.first->second.push_back({ flowStack.size()-1, false });
    16361636                   
    16371637                    // count read before writes (for cache weight)
     
    17651765                    FlowStackCIter flit = flowStack.begin();
    17661766                    if (lvrit != lastVRegMap.end())
    1767                         flit += lvrit->second.back();
     1767                        flit += lvrit->second.back().blockIndex;
    17681768                   
    17691769                    const CodeBlock& lastBlk = codeBlocks[flit->blockIndex];
     
    18231823                    if (lvrit != lastVRegMap.end())
    18241824                    {
    1825                         std::vector<size_t>& lastPos = lvrit->second;
     1825                        std::vector<LastAccessBlockPos>& lastPos = lvrit->second;
    18261826                        lastPos.pop_back();
    18271827                        if (lastPos.empty()) // just remove from lastVRegs
  • CLRadeonExtender/trunk/amdasm/AsmRegAlloc.h

    r4096 r4097  
    384384
    385385// key - singlevreg, value - code block chain
    386 typedef std::unordered_map<AsmSingleVReg, std::vector<size_t> > LastVRegMap;
     386typedef std::unordered_map<AsmSingleVReg, std::vector<LastAccessBlockPos> > LastVRegMap;
    387387
    388388struct CLRX_INTERNAL LiveBlock
Note: See TracChangeset for help on using the changeset viewer.