Changeset 4173 in CLRX


Ignore:
Timestamp:
May 16, 2018, 1:56:11 PM (9 days ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Fixed resolving vidxes while registering linearDeps (use getVIdx routine).

File:
1 edited

Legend:

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

    r4172 r4173  
    820820static void addUsageDeps(const cxbyte* ldeps, cxuint rvusNum,
    821821            const AsmRegVarUsage* rvus, LinearDepMap* ldepsOut,
     822            std::unordered_map<AsmSingleVReg, SSAInfo>& ssaInfoMap,
    822823            const VarIndexMap* vregIndexMaps, const SVRegMap& ssaIdIdxMap,
    823824            size_t regTypesNum, const cxuint* regRanges)
     
    843844                AsmSingleVReg svreg = {rvu.regVar, k};
    844845                auto sit = ssaIdIdxMap.find(svreg);
    845                 if (regType==UINT_MAX)
    846                     regType = getRegType(regTypesNum, regRanges, svreg);
    847                 const VarIndexMap& vregIndexMap = vregIndexMaps[regType];
    848                 const std::vector<size_t>& ssaIdIndices =
    849                             vregIndexMap.find(svreg)->second;
     846                const SSAInfo& ssaInfo = ssaInfoMap.find(svreg)->second;
     847                size_t outVIdx;
     848                getVIdx(svreg, sit->second, ssaInfo, vregIndexMaps,
     849                                regTypesNum, regRanges, regType, outVIdx);
    850850                // push variable index
    851                 vidxes.push_back(ssaIdIndices[sit->second]);
     851                vidxes.push_back(outVIdx);
    852852            }
    853853        }
     
    873873                AsmSingleVReg svreg = {rvu.regVar, k};
    874874                auto sit = ssaIdIdxMap.find(svreg);
    875                 assert(sit != ssaIdIdxMap.end());
    876                 if (regType==UINT_MAX)
    877                     regType = getRegType(regTypesNum, regRanges, svreg);
    878                 const VarIndexMap& vregIndexMap = vregIndexMaps[regType];
    879                 const std::vector<size_t>& ssaIdIndices =
    880                             vregIndexMap.find(svreg)->second;
     875                const SSAInfo& ssaInfo = ssaInfoMap.find(svreg)->second;
     876                size_t outVIdx;
     877                getVIdx(svreg, sit->second, ssaInfo, vregIndexMaps,
     878                                regTypesNum, regRanges, regType, outVIdx);
    881879                // push variable index
    882                 vidxes.push_back(ssaIdIndices[sit->second]);
     880                vidxes.push_back(outVIdx);
    883881            }
    884882            ldepsOut[regType][vidxes[0]].align = align;
     
    13181316                        usageHandler.getUsageDependencies(instrRVUsCount, instrRVUs, lDeps);
    13191317                       
    1320                         addUsageDeps(lDeps, instrRVUsCount, instrRVUs,
    1321                                 linearDepMaps, vregIndexMaps, ssaIdIdxMap,
     1318                        addUsageDeps(lDeps, instrRVUsCount, instrRVUs, linearDepMaps,
     1319                                cblock.ssaInfoMap, vregIndexMaps, ssaIdIdxMap,
    13221320                                regTypesNum, regRanges);
    13231321                       
Note: See TracChangeset for help on using the changeset viewer.