Changeset 4176 in CLRX


Ignore:
Timestamp:
May 16, 2018, 4:15:11 PM (5 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Handle many instr RVus.

File:
1 edited

Legend:

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

    r4175 r4176  
    12781278                // main routine to handle ssaInfos
    12791279                SVRegMap ssaIdIdxMap;
    1280                 AsmRegVarUsage instrRVUs[8];
    1281                 cxuint instrRVUsCount = 0;
     1280                std::vector<AsmRegVarUsage> instrRVUs;
    12821281               
    12831282                size_t oldOffset = cblock.usagePos.readOffset;
     
    12871286                usageHandler.setReadPos(cblock.usagePos);
    12881287                linDepHandler.setReadPos(cblock.linearDepPos);
     1288               
    12891289                // register in liveness
    12901290                while (true)
     
    13291329                        // get linear deps and equal to
    13301330                        cxbyte lDeps[16];
    1331                         usageHandler.getUsageDependencies(instrRVUsCount, instrRVUs, lDeps);
     1331                        usageHandler.getUsageDependencies(instrRVUs.size(),
     1332                                    instrRVUs.data(), lDeps);
    13321333                       
    1333                         addUsageDeps(lDeps, instrRVUsCount, instrRVUs, linearDepMaps,
    1334                                 cblock.ssaInfoMap, vregIndexMaps, ssaIdIdxMap,
    1335                                 writtenSVRegs, regTypesNum, regRanges);
     1334                        addUsageDeps(lDeps, instrRVUs.size(), instrRVUs.data(),
     1335                                linearDepMaps, cblock.ssaInfoMap, vregIndexMaps,
     1336                                ssaIdIdxMap, writtenSVRegs, regTypesNum, regRanges);
    13361337                       
    13371338                        readSVRegs.clear();
     
    13401341                            break;
    13411342                        oldOffset = rvu.offset;
    1342                         instrRVUsCount = 0;
     1343                        instrRVUs.clear();
    13431344                    }
    13441345                    if (hasNext && oldOffset < cblock.end && !rvu.useRegMode)
    1345                         instrRVUs[instrRVUsCount++] = rvu;
     1346                        instrRVUs.push_back(rvu);
    13461347                    if (oldOffset >= cblock.end)
    13471348                        break;
Note: See TracChangeset for help on using the changeset viewer.