Changeset 4029 in CLRX


Ignore:
Timestamp:
Apr 20, 2018, 9:08:45 AM (4 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc3: Use reverse live conversion table to convert result linear deps and result equaltodeps.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc3.cpp

    r4028 r4029  
    223223   
    224224    std::vector<size_t> lvIndexCvtTables[MAX_REGTYPES_NUM];
     225    std::vector<size_t> revLvIndexCvtTables[MAX_REGTYPES_NUM];
    225226    for (size_t r = 0; r < MAX_REGTYPES_NUM; r++)
    226227    {
     
    229230                    vregIndexMap.size());
    230231       
    231         size_t i = 0;
     232        size_t j = 0;
    232233        for (const auto& entry: vregIndexMap)
    233234        {
    234235            TestSingleVReg vreg = getTestSingleVReg(entry.first, regVarNamesMap);
    235             outVregIdxMap[i++] = std::make_pair(vreg, &entry.second);
     236            outVregIdxMap[j++] = std::make_pair(vreg, &entry.second);
    236237        }
    237238        mapSort(outVregIdxMap.begin(), outVregIdxMap.end());
    238239       
    239240        std::vector<size_t>& lvIndexCvtTable = lvIndexCvtTables[r];
     241        std::vector<size_t>& revLvIndexCvtTable = revLvIndexCvtTables[r];
    240242        // generate livenessCvt table
    241243        for (const auto& entry: outVregIdxMap)
    242         {
    243244            for (size_t v: *entry.second)
    244245                if (v != SIZE_MAX)
     246                {
     247                    size_t j = lvIndexCvtTable.size();
    245248                    lvIndexCvtTable.push_back(v);
    246         }
     249                    if (v+1 > revLvIndexCvtTable.size())
     250                        revLvIndexCvtTable.resize(v+1);
     251                    revLvIndexCvtTable[v] = j;
     252                }
    247253    }
    248254   
     
    317323                        cxuint(expLinearDep.align), cxuint(resLinearDep.align));
    318324           
    319             Array<size_t> expPrevVidxes(expLinearDep.prevVidxes.size());
     325            Array<size_t> resPrevVidxes(resLinearDep.prevVidxes.size());
    320326            // convert to res ssaIdIndices
    321             for (size_t k = 0; k < expLinearDep.prevVidxes.size(); k++)
    322                 expPrevVidxes[k] = lvIndexCvtTables[r][expLinearDep.prevVidxes[k]];
     327            for (size_t k = 0; k < resLinearDep.prevVidxes.size(); k++)
     328                resPrevVidxes[k] = revLvIndexCvtTables[r][resLinearDep.prevVidxes[k]];
    323329           
    324330            assertArray("testAsmLivenesses", testCaseName + ldname + ".prevVidxes",
    325                         expPrevVidxes, resLinearDep.prevVidxes);
    326            
    327             Array<size_t> expNextVidxes(expLinearDep.nextVidxes.size());
     331                        expLinearDep.prevVidxes, resPrevVidxes);
     332           
     333            Array<size_t> resNextVidxes(resLinearDep.nextVidxes.size());
    328334            // convert to res ssaIdIndices
    329             for (size_t k = 0; k < expLinearDep.nextVidxes.size(); k++)
    330                 expNextVidxes[k] = lvIndexCvtTables[r][expLinearDep.nextVidxes[k]];
     335            for (size_t k = 0; k < resLinearDep.nextVidxes.size(); k++)
     336                resNextVidxes[k] = revLvIndexCvtTables[r][resLinearDep.nextVidxes[k]];
    331337           
    332338            assertArray("testAsmLivenesses", testCaseName + ldname + ".nextVidxes",
    333                         expNextVidxes, resLinearDep.nextVidxes);
     339                        expLinearDep.nextVidxes, resNextVidxes);
    334340        }
    335341    }
     
    365371            const EqualToDep& resEqualToDep = reit->second;
    366372           
    367             Array<size_t> expPrevVidxes(expEqualToDep.prevVidxes.size());
     373            Array<size_t> resPrevVidxes(resEqualToDep.prevVidxes.size());
    368374            // convert to res ssaIdIndices
    369             for (size_t k = 0; k < expEqualToDep.prevVidxes.size(); k++)
    370                 expPrevVidxes[k] = lvIndexCvtTables[r][expEqualToDep.prevVidxes[k]];
     375            for (size_t k = 0; k < resEqualToDep.prevVidxes.size(); k++)
     376                resPrevVidxes[k] = revLvIndexCvtTables[r][resEqualToDep.prevVidxes[k]];
    371377           
    372378            assertArray("testAsmLivenesses", testCaseName + ldname + ".prevVidxes",
    373                         expPrevVidxes, resEqualToDep.prevVidxes);
    374            
    375             Array<size_t> expNextVidxes(expEqualToDep.nextVidxes.size());
     379                        expEqualToDep.prevVidxes, resPrevVidxes);
     380           
     381            Array<size_t> resNextVidxes(resEqualToDep.nextVidxes.size());
    376382            // convert to res ssaIdIndices
    377             for (size_t k = 0; k < expEqualToDep.nextVidxes.size(); k++)
    378                 expNextVidxes[k] = lvIndexCvtTables[r][expEqualToDep.nextVidxes[k]];
     383            for (size_t k = 0; k < resEqualToDep.nextVidxes.size(); k++)
     384                resNextVidxes[k] = revLvIndexCvtTables[r][resEqualToDep.nextVidxes[k]];
    379385           
    380386            assertArray("testAsmLivenesses", testCaseName + ldname + ".nextVidxes",
    381                         expNextVidxes, resEqualToDep.nextVidxes);
     387                        expEqualToDep.nextVidxes, resNextVidxes);
    382388        }
    383389    }
Note: See TracChangeset for help on using the changeset viewer.