Changeset 3610 in CLRX


Ignore:
Timestamp:
Jan 11, 2018, 7:45:15 PM (11 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Do not add next entry for next block if previous block has some calls.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r3609 r3610  
    407407            {
    408408                curIt->haveEnd = false; // revert haveEnd if block have cond jump or call
    409                 if (it2 != codeBlocks.end())
    410                     // add next next block
     409                if (it2 != codeBlocks.end() && entry.type == AsmCodeFlowType::CJUMP)
     410                    // add next next block (only for cond jump)
    411411                    curIt->nexts.push_back({ size_t(it2 - codeBlocks.begin()), false });
    412412            }
     
    882882            entry.blockIndex == callStack.top().callBlock &&
    883883            entry.nextIndex-1 == callStack.top().callNextIndex)
     884        {
     885            //std::cout << " ret: " << entry.blockIndex << std::endl;
    884886            callStack.pop(); // just return from call
     887        }
    885888       
    886889        if (entry.nextIndex < cblock.nexts.size())
    887890        {
    888891            if (cblock.nexts[entry.nextIndex].isCall)
     892            {
     893                //std::cout << " call: " << entry.blockIndex << std::endl;
    889894                callStack.push({ entry.blockIndex, entry.nextIndex });
     895            }
    890896           
    891897            flowStack.push_back({ cblock.nexts[entry.nextIndex].block, 0 });
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc.cpp

    r3608 r3610  
    226226        {
    227227            { 0, 12,
    228                 { { 1, false }, { 3, true }, { 4, true }, { 5, true } },
     228                { { 3, true }, { 4, true }, { 5, true } },
    229229                true, false, false },
    230230            { 12, 20, { { 6, false } }, false, false, true },
     
    290290            { 0, 8, { }, false, false, false },
    291291            { 8, 16,
    292                 { { 2, false }, { 5, true }, { 6, true }, { 9, true } },
     292                { { 5, true }, { 6, true }, { 9, true } },
    293293                true, false, false },
    294294            // 2
    295295            { 16, 32,
    296                 { { 3, false }, { 7, true }, { 11, true } },
     296                { { 7, true }, { 11, true } },
    297297                true, false, false },
    298298            { 32, 48,
     
    305305            // 6 - c2 subroutine
    306306            { 80, 88, { }, false, false, false },
    307             { 88, 96, { { 8, false }, { 10, true } },
     307            { 88, 96, { { 10, true } },
    308308                true, false, false },
    309309            { 96, 104, { }, false, true, true },
     
    495495            { 56, 64, { }, false, false, true },
    496496            { 64, 76,
    497                 { { 7, false }, { 9, true } },
     497                { { 9, true } },
    498498                true, false, false },
    499499            { 76, 84,
    500                 { { 8, false }, { 9, true } },
     500                { { 9, true } },
    501501                true, false, false },
    502502            { 84, 92, { }, false, false, true },
     
    544544        {
    545545            { 0, 12,
    546                 { { 1, false }, { 5, false }, { 3, true }, { 4, true } },
     546                { { 5, false }, { 3, true }, { 4, true } },
    547547                true, false, true },
    548548            { 12, 20, { { 6, false } }, false, false, true },
     
    19661966        true, ""
    19671967    }
     1968#if 0
     1969    ,
     1970    {   // 13 - simple call
     1971        R"ffDXD(.regvar sa:s:8, va:v:8
     1972        s_mov_b32 sa[2], s4
     1973        s_mov_b32 sa[3], s5
     1974       
     1975        s_getpc_b64 s[2:3]
     1976        s_add_u32 s2, s2, routine-.
     1977        s_add_u32 s3, s3, routine-.+4
     1978        .cf_call routine
     1979        s_swappc_b64 s[0:1], s[2:3]
     1980       
     1981        s_lshl_b32 sa[2], sa[2], 3
     1982        s_lshl_b32 sa[3], sa[3], 4
     1983        s_endpgm
     1984       
     1985routine:
     1986        s_xor_b32 sa[2], sa[2], sa[4]
     1987        s_xor_b32 sa[3], sa[3], sa[4]
     1988        .cf_ret
     1989        s_setpc_b64 s[0:1]
     1990)ffDXD",
     1991        {
     1992            { 0, 32,
     1993                { { 2, true } },
     1994                {
     1995                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1996                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1997                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1998                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1999                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2000                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2001                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2002                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) }
     2003                }, true, false, false },
     2004            { 32, 44,
     2005                { },
     2006                {
     2007                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) },
     2008                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) }
     2009                }, false, false, true },
     2010            { 44, 56,
     2011                { },
     2012                {
     2013                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2014                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2015                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2016                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2017                    { { "sa", 4 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     2018                }, false, true, true }
     2019        },
     2020        { },
     2021        true, ""
     2022    }
     2023#endif
    19682024};
    19692025
Note: See TracChangeset for help on using the changeset viewer.