Changeset 3589 in CLRX


Ignore:
Timestamp:
Jan 7, 2018, 2:56:32 PM (11 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: fixed settings SSAInfo for registers (not regvars) (again). fix in getLiveness for registers.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r3588 r3589  
    711711                            rvu.regField!=ASMFIELD_NONE)
    712712                    sinfo.ssaIdChange++;
     713                if (rvu.regVar==nullptr)
     714                    sinfo.ssaIdBefore = sinfo.ssaIdFirst =
     715                            sinfo.ssaId = sinfo.ssaIdLast = 0;
    713716            }
    714717            // get next rvusage
     
    753756                for (auto& ssaEntry: cblock.ssaInfoMap)
    754757                {
     758                    if (ssaEntry.first.regVar==nullptr)
     759                        continue; // no change for registers
     760                   
    755761                    size_t& ssaId = curSSAIdMap[ssaEntry.first];
    756762                    size_t& totalSSACount = totalSSACountMap[ssaEntry.first];
    757763                    if (totalSSACount == 0 && ssaEntry.second.readBeforeWrite)
    758764                    {
    759                         if (ssaEntry.first.regVar!=nullptr)
    760                         {
    761                             /* first read before write at all,
    762                              * need change totalcount, ssaId */
    763                             ssaId++;
    764                             totalSSACount++;
    765                         }
    766                         else // ssaIdBefore is zero (first ssaId), ssaIdFirst is NONE
    767                             ssaEntry.second.ssaIdBefore = 0;
    768                     }
    769                     else if (ssaEntry.first.regVar==nullptr)
    770                         // if write, then ssaIdFirst is zero, ssaIdBefore is NONE
    771                         ssaEntry.second.ssaIdFirst = 0;
    772                        
     765                        // first read before write at all, need change totalcount, ssaId
     766                        ssaId++;
     767                        totalSSACount++;
     768                    }   
    773769                    if (ssaId != totalSSACount) // save old ssaId
    774770                        entry.prevSSAIds.insert({ ssaEntry.first, ssaId });
    775771                    ssaEntry.second.ssaId = totalSSACount;
    776                     if (ssaEntry.first.regVar!=nullptr)
    777                     {
    778                         ssaEntry.second.ssaIdFirst = ssaEntry.second.ssaIdChange!=0 ?
    779                             totalSSACount : SIZE_MAX;
    780                         ssaEntry.second.ssaIdBefore = ssaId-1;
    781                     }
     772                    ssaEntry.second.ssaIdFirst = ssaEntry.second.ssaIdChange!=0 ?
     773                        totalSSACount : SIZE_MAX;
     774                    ssaEntry.second.ssaIdBefore = ssaId-1;
    782775                   
    783776                    totalSSACount += ssaEntry.second.ssaIdChange;
     
    11721165{
    11731166    size_t ssaId;
    1174     if (ssaIdIdx==0)
     1167    if (svreg.regVar==nullptr)
     1168        ssaId = 0;
     1169    else if (ssaIdIdx==0)
    11751170        ssaId = ssaInfo.ssaIdBefore;
    11761171    else if (ssaIdIdx==1)
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc.cpp

    r3588 r3589  
    688688            { 0, 56, { },
    689689                {
    690                     { { "", 3 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
    691                     { { "", 256 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
    692                     { { "", 266 }, SSAInfo(SIZE_MAX, 0, 0, SIZE_MAX, 0, false) },
     690                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     691                    { { "", 256 }, SSAInfo(0, 0, 0, 0, 0, true) },
     692                    { { "", 266 }, SSAInfo(0, 0, 0, 0, 0, false) },
    693693                    { { "sa", 2 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
    694694                    { { "sa", 4 }, SSAInfo(SIZE_MAX, 0, 0, 1, 2, false) },
     
    728728                { { 1, false }, { 2, false }, { 3, false } },
    729729                {
    730                     { { "", 0 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
    731                     { { "", 1 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
    732                     { { "", 3 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
    733                     { { "", 256 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
     730                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     731                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     732                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     733                    { { "", 256 }, SSAInfo(0, 0, 0, 0, 0, true) },
    734734                    { { "sa", 2 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
    735735                    { { "sa", 4 }, SSAInfo(SIZE_MAX, 0, 0, 1, 2, false) },
     
    790790                { { 1, false }, { 2, false }, { 3, false } },
    791791                {
    792                     { { "", 0 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
    793                     { { "", 1 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
    794                     { { "", 3 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
    795                     { { "", 256 }, SSAInfo(0, SIZE_MAX, 0, SIZE_MAX, 0, true) },
     792                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     793                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     794                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     795                    { { "", 256 }, SSAInfo(0, 0, 0, 0, 0, true) },
    796796                    { { "sa", 2 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
    797797                    { { "sa", 4 }, SSAInfo(SIZE_MAX, 0, 0, 1, 2, false) },
Note: See TracChangeset for help on using the changeset viewer.