Changeset 3897 in CLRX


Ignore:
Timestamp:
Mar 13, 2018, 1:51:09 PM (5 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Avoid inserting duplicates into SSAReplaces (use to this VectorSet?).

Location:
CLRadeonExtender/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/CLRX/amdasm/Assembler.h

    r3803 r3897  
    3737#include <unordered_map>
    3838#include <CLRX/utils/Utilities.h>
     39#include <CLRX/utils/Containers.h>
    3940#include <CLRX/amdasm/Commons.h>
    4041#include <CLRX/amdasm/AsmSource.h>
     
    336337     // first - orig ssaid, second - dest ssaid
    337338    typedef std::pair<size_t, size_t> SSAReplace;
    338     typedef std::unordered_map<AsmSingleVReg, std::vector<SSAReplace> > SSAReplacesMap;
     339    typedef std::unordered_map<AsmSingleVReg, VectorSet<SSAReplace> > SSAReplacesMap;
    339340    // interference graph type
    340341    typedef Array<std::unordered_set<size_t> > InterGraph;
  • CLRadeonExtender/trunk/amdasm/AsmRegAlloc.cpp

    r3896 r3897  
    658658{
    659659    auto res = rmap.insert({ vreg, {} });
    660     res.first->second.push_back({ origId, destId });
     660    res.first->second.insertValue({ origId, destId });
    661661}
    662662
     
    16061606                subroutinesCache.put(entry.blockIndex, subrData);
    16071607            }
    1608             if (loopBlocks.find(entry.blockIndex) != loopBlocks.end() &&
    1609                     loopsit != loopSSAIdMap.end())
    1610                 // mark that loop has passed fully
    1611                 loopsit->second.passed = true;
     1608            if (loopBlocks.find(entry.blockIndex) != loopBlocks.end())
     1609            {
     1610                if (loopsit != loopSSAIdMap.end())
     1611                {
     1612                    std::cout << "   mark loopblocks passed: " <<
     1613                                entry.blockIndex << std::endl;
     1614                    // mark that loop has passed fully
     1615                    loopsit->second.passed = true;
     1616                }
     1617                else
     1618                    std::cout << "   loopblocks nopassed: " <<
     1619                                entry.blockIndex << std::endl;
     1620            }
    16121621           
    16131622            flowStack.pop_back();
     
    20102019    for (auto& entry: ssaReplacesMap)
    20112020    {
    2012         std::vector<SSAReplace>& replaces = entry.second;
     2021        VectorSet<SSAReplace>& replaces = entry.second;
    20132022        std::sort(replaces.begin(), replaces.end());
    20142023        replaces.resize(std::unique(replaces.begin(), replaces.end()) - replaces.begin());
    2015         std::vector<SSAReplace> newReplaces;
     2024        VectorSet<SSAReplace> newReplaces;
    20162025       
    20172026        std::unordered_map<size_t, MinSSAGraphNode> ssaGraphNodes;
     
    20912100                continue;
    20922101            SSAInfo& sinfo = ssaEntry.second;
    2093             std::vector<SSAReplace>& replaces = it->second;
     2102            VectorSet<SSAReplace>& replaces = it->second;
    20942103            if (sinfo.readBeforeWrite)
    20952104            {
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAllocCase1.cpp

    r3887 r3897  
    14371437            { { "sa", 1 }, { { 3, 2 } } },
    14381438            { { "va", 0 }, { { 8, 1 }, { 10, 5 } } },
    1439             { { "va", 1 }, { { 2, 1 }, { 2, 1 }, { 3, 1 }, { 3, 2 } } },
    1440             { { "va", 2 }, { { 4, 1 }, { 4, 1 }, { 5, 1 }, { 5, 4 } } }
     1439            { { "va", 1 }, { { 2, 1 }, { 3, 1 }, { 3, 2 } } },
     1440            { { "va", 2 }, { { 4, 1 }, { 5, 1 }, { 5, 4 } } }
    14411441        },
    14421442        true, ""
     
    16471647        },
    16481648        {   // SSA replaces
    1649             { { "sa", 2 }, { { 5, 1 }, { 5, 1 } } },
     1649            { { "sa", 2 }, { { 5, 1 } } },
    16501650            { { "sa", 3 }, { { 6, 1 } } }
    16511651        },
     
    17331733        },
    17341734        {
    1735             { { "sa", 3 }, { { 4, 1 }, { 4, 1 } } }
     1735            { { "sa", 3 }, { { 4, 1 } } }
    17361736        },
    17371737        true, ""
     
    18221822        },
    18231823        {
    1824             { { "sa", 3 }, { { 3, 1 }, { 3, 1 }, { 5, 3 }, { 5, 1 } } }
     1824            { { "sa", 3 }, { { 3, 1 }, { 5, 3 }, { 5, 1 } } }
    18251825        },
    18261826        true, ""
     
    30113011        },
    30123012        {   // SSA replaces
    3013             { { "sa", 2 }, { { 5, 4 }, { 6, 4 }, { 5, 4 }, { 7, 3 } } },
     3013            { { "sa", 2 }, { { 5, 4 }, { 6, 4 }, { 7, 3 } } },
    30143014            { { "sa", 3 }, { { 3, 2 }, { 4, 2 }, { 4, 3 }, { 5, 2 } } }
    30153015        },
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAllocCase2.cpp

    r3896 r3897  
    370370        },
    371371        {   // SSA replaces
    372             { { "sa", 2 }, { { 3, 1 }, { 3, 1 } } },
    373             { { "sa", 3 }, { { 2, 1 }, { 2, 1 }, { 2, 1 }, { 3, 1 }, { 3, 1 } } },
    374             { { "sa", 4 }, { { 4, 1 }, { 2, 1 }, { 2, 1 } } },
    375             { { "sa", 6 }, { { 3, 1 }, { 3, 1 } } },
     372            { { "sa", 2 }, { { 3, 1 } } },
     373            { { "sa", 3 }, { { 2, 1 }, { 3, 1 } } },
     374            { { "sa", 4 }, { { 4, 1 }, { 2, 1 } } },
     375            { { "sa", 6 }, { { 3, 1 }, } },
    376376            { { "va", 0 }, { { 2, 0 } } },
    377             { { "va", 2 }, { { 3, 1 }, { 3, 1 } } },
    378             { { "va", 3 }, { { 2, 0 }, { 2, 0 } } },
     377            { { "va", 2 }, { { 3, 1 }, } },
     378            { { "va", 3 }, { { 2, 0 } } },
    379379            { { "va", 4 }, { { 2, 0 } } },
    380380            { { "xa", 0 }, { { 4, 0 }, { 3, 1 } } },
    381             { { "xa", 3 }, { { 3, 0 }, { 3, 0 }, { 2, 0 } } },
    382             { { "xa", 4 }, { { 2, 0 }, { 2, 0 }, { 2, 0 } } }
     381            { { "xa", 3 }, { { 3, 0 }, { 2, 0 } } },
     382            { { "xa", 4 }, { { 2, 0 } } }
    383383        },
    384384        true, ""
     
    12361236        },
    12371237        {   // SSA replaces
    1238             { { "sa", 2 }, { { 4, 3 }, { 5, 3 }, { 6, 1 }, { 6, 1 } } },
     1238            { { "sa", 2 }, { { 4, 3 }, { 5, 3 }, { 6, 1 } } },
    12391239            { { "sa", 3 }, { { 4, 3 }, { 5, 3 }, { 6, 1 }, { 7, 1 } } },
    1240             { { "sa", 4 }, { { 3, 2 }, { 4, 2 }, { 5, 1 }, { 5, 1 }, { 5, 1 }, { 2, 1 },
    1241                     { 2, 1 }, { 2, 1 } } },
    1242             { { "sa", 5 }, { { 5, 1 }, { 5, 1 }, { 5, 1 },
    1243                     { 6, 1 }, { 6, 1 }, { 6, 1 } } },
    1244             { { "sa", 6 }, { { 2, 1 }, { 3, 1 }, { 4, 1 }, { 2, 1 }, { 3, 1 }, { 4, 1 },
    1245                     { 2, 1 }, { 3, 1 }, { 4, 1 }, { 7, 1 }, { 7, 1 }, { 7, 1 } } },
    1246             { { "sa", 7 }, { { 3, 2 }, { 4, 2 }, { 2, 1 }, { 2, 1 }, { 2, 1 },
    1247                     { 2, 1 }, { 2, 1 }, { 2, 1 } } }
     1240            { { "sa", 4 }, { { 3, 2 }, { 4, 2 }, { 5, 1 }, { 2, 1 } } },
     1241            { { "sa", 5 }, { { 5, 1 }, { 6, 1 } } },
     1242            { { "sa", 6 }, { { 2, 1 }, { 3, 1 }, { 4, 1 }, { 7, 1 } } },
     1243            { { "sa", 7 }, { { 3, 2 }, { 4, 2 }, { 2, 1 } } }
    12481244        },
    12491245        true, ""
Note: See TracChangeset for help on using the changeset viewer.