Changeset 4096 in CLRX


Ignore:
Timestamp:
May 7, 2018, 8:32:08 AM (7 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Small improvements (use rbwSSAIdMap instead set of rbw).

Location:
CLRadeonExtender/trunk/amdasm
Files:
2 edited

Legend:

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

    r4095 r4096  
    14331433                        if (alreadyReadMap.insert(
    14341434                                    { sentry.first, entry.blockIndex }).second)
    1435                             rdata.readBeforeWrites.insert(sentry.first);
     1435                            rdata.rbwSSAIdMap.insert({ sentry.first,
     1436                                        sentry.second.ssaIdBefore });
    14361437                   
    14371438                    auto res = curSVRegMap.insert({ sentry.first, entry.blockIndex });
     
    17581759            {
    17591760                // already added join livenesses from all readBeforeWrites
    1760                 for (const auto& entry: res.first->second.readBeforeWrites)
     1761                for (const auto& entry: res.first->second.rbwSSAIdMap)
    17611762                {
    17621763                    // find last
    1763                     auto lvrit = lastVRegMap.find(entry);
     1764                    auto lvrit = lastVRegMap.find(entry.first);
    17641765                    FlowStackCIter flit = flowStack.begin();
    17651766                    if (lvrit != lastVRegMap.end())
    17661767                        flit += lvrit->second.back();
    17671768                   
    1768                     cxuint regType = getRegType(regTypesNum, regRanges, entry);
    1769                     const VarIndexMap& vregIndexMap = vregIndexMaps[regType];
    1770                     const std::vector<size_t>& ssaIdIndices =
    1771                                 vregIndexMap.find(entry)->second;
    1772                    
    17731769                    const CodeBlock& lastBlk = codeBlocks[flit->blockIndex];
    1774                     auto sinfoIt = lastBlk.ssaInfoMap.find(entry);
    1775                     const size_t ssaIdBefore = (sinfoIt != lastBlk.ssaInfoMap.end()) ?
    1776                             sinfoIt->second.ssaIdLast : 0;
    1777                     Liveness& lv = livenesses[regType][ssaIdIndices[ssaIdBefore]];
     1770                    auto sinfoIt = lastBlk.ssaInfoMap.find(entry.first);
     1771                    Liveness& lv = getLiveness2(entry.first, entry.second, livenesses,
     1772                                vregIndexMaps, regTypesNum, regRanges);
    17781773                   
    17791774                    if (lv.contain(codeBlocks[(flowStack.end()-1)->blockIndex].end-1))
  • CLRadeonExtender/trunk/amdasm/AsmRegAlloc.h

    r4091 r4096  
    210210struct CLRX_INTERNAL RoutineDataLv
    211211{
    212     std::unordered_set<AsmSingleVReg> readBeforeWrites;
     212    SVRegMap rbwSSAIdMap;
    213213    // holds all vreg SSA's used in routine (used while creating call point)
    214214    // includes subroutines called in this routines
Note: See TracChangeset for help on using the changeset viewer.