Changeset 4051 in CLRX


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

CLRadeonExtender: AsmRegAlloc?: Cleanup main loop (processing the code block) in the createLivenesses routine:
do not allow to getting next rvu if rvu offset outside code blocks, remove obsolete statements.

File:
1 edited

Legend:

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

    r4049 r4051  
    10461046                    AsmRegVarUsage rvu = { 0U, nullptr, 0U, 0U };
    10471047                    bool hasNext = false;
    1048                     if (usageHandler.hasNext())
     1048                    if (usageHandler.hasNext() && oldOffset < cblock.end)
    10491049                    {
    10501050                        hasNext = true;
    10511051                        rvu = usageHandler.nextUsage();
    10521052                    }
    1053                     size_t liveTime = oldOffset;
    1054                     if (!hasNext || rvu.offset > oldOffset)
     1053                    const size_t liveTime = oldOffset;
     1054                    if ((!hasNext || rvu.offset > oldOffset) && oldOffset < cblock.end)
    10551055                    {
    10561056                        ARDOut << "apply to liveness. offset: " << oldOffset << "\n";
     
    10741074                            Liveness& lv = getLiveness(svreg, ssaIdIdx, sinfo,
    10751075                                    livenesses, vregIndexMaps, regTypesNum, regRanges);
     1076                            // works only with ISA where smallest instruction have 2 bytes!
     1077                            // after previous read, but not after instruction.
     1078                            // if var is not used anywhere then this liveness region
     1079                            // blocks assignment for other vars
    10761080                            lv.insert(liveTime+1, liveTime+2);
    10771081                        }
     
    10911095                        instrRVUsCount = 0;
    10921096                    }
    1093                     if (hasNext && rvu.offset < cblock.end && !rvu.useRegMode)
     1097                    if (hasNext && oldOffset < cblock.end && !rvu.useRegMode)
    10941098                        instrRVUs[instrRVUsCount++] = rvu;
    1095                     if (rvu.offset >= cblock.end)
     1099                    if (oldOffset >= cblock.end)
    10961100                        break;
    10971101                   
     
    11061110                    }
    11071111                }
    1108                 curLiveTime += cblock.end-cblock.start;
    11091112            }
    11101113            else
Note: See TracChangeset for help on using the changeset viewer.