Changeset 3653 in CLRX


Ignore:
Timestamp:
Jan 22, 2018, 4:29:26 PM (2 years ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add new testcase.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r3652 r3653  
    503503    auto pfEnd = prevFlowStack.end();
    504504    --pfEnd;
     505    std::cout << "startResolv: " << (pfEnd-1)->blockIndex << "," << nextBlock << std::endl;
    505506    LastSSAIdMap stackVarMap;
    506507    for (auto pfit = prevFlowStack.begin(); pfit != pfEnd; ++pfit)
     
    593594            {
    594595                // back, already visited
     596                std::cout << "resolv already: " << entry.blockIndex << std::endl;
    595597                flowStack.pop_back();
    596598                continue;
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc.cpp

    r3652 r3653  
    21682168        true, ""
    21692169    },
    2170     {   // 16 - simple call
     2170    {   // 16 - trick - SSA replaces beyond visited point
     2171        R"ffDXD(.regvar sa:s:8, va:v:8
     2172        s_mov_b32 sa[2], s4
     2173        s_mov_b32 sa[3], s5
     2174       
     2175loop:   s_xor_b32 sa[2], sa[2], sa[4]
     2176        s_cbranch_scc0 end
     2177       
     2178        s_xor_b32 sa[3], sa[2], sa[4]
     2179        s_cbranch_scc0 loop
     2180       
     2181end:    s_xor_b32 sa[3], sa[3], sa[4]
     2182        s_endpgm
     2183)ffDXD",
     2184        {
     2185            // block 0 - start
     2186            { 0, 8,
     2187                { },
     2188                {
     2189                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2190                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2191                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2192                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) }
     2193                }, false, false, false },
     2194            // block 1 - loop
     2195            { 8, 16,
     2196                { { 2, false }, { 3, false } },
     2197                {
     2198                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2199                    { { "sa", 4 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     2200                }, false, false, false },
     2201            // block 2 - loop part 2
     2202            { 16, 24,
     2203                { { 1, false }, { 3, false } },
     2204                {
     2205                    { { "sa", 2 }, SSAInfo(2, SIZE_MAX, 3, SIZE_MAX, 0, true) },
     2206                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, false) },
     2207                    { { "sa", 4 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     2208                }, false, false, false },
     2209            // block 3 - end
     2210            { 24, 32,
     2211                { },
     2212                {
     2213                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) },
     2214                    { { "sa", 4 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) }
     2215                }, false, false, true }
     2216        },
     2217        {
     2218            { { "sa", 2 }, { { 2, 1 } } },
     2219            // must be
     2220            { { "sa", 3 }, { { 2, 1 } } }
     2221        },
     2222        true, ""
     2223    },
     2224    {   // 17 - simple call
    21712225        R"ffDXD(.regvar sa:s:8, va:v:8
    21722226        s_mov_b32 sa[2], s4
     
    22212275        true, ""
    22222276    },
    2223     {   // 17 - simple call, more complex routine
     2277    {   // 18 - simple call, more complex routine
    22242278        R"ffDXD(.regvar sa:s:8, va:v:8
    22252279        s_mov_b32 sa[2], s4
     
    23062360        true, ""
    23072361    },
    2308     {   // 18 - simple call, more complex routine
     2362    {   // 19 - simple call, more complex routine
    23092363        R"ffDXD(.regvar sa:s:8, va:v:8
    23102364        s_mov_b32 sa[2], s4
     
    23872441        true, ""
    23882442    },
    2389     {   // 19 - simple call, more complex routine
     2443    {   // 20 - simple call, more complex routine
    23902444        R"ffDXD(.regvar sa:s:8, va:v:8
    23912445        s_mov_b32 sa[2], s4
     
    24672521        true, ""
    24682522    },
    2469     {   // 20 - simple call, many deep returns
     2523    {   // 21 - simple call, many deep returns
    24702524        R"ffDXD(.regvar sa:s:8, va:v:8
    24712525        s_mov_b32 sa[2], s4
     
    26632717        true, ""
    26642718    },
    2665     {   // 21 - multiple call of routine
     2719    {   // 22 - multiple call of routine
    26662720        R"ffDXD(.regvar sa:s:8, va:v:8
    26672721        s_mov_b32 sa[2], s4
     
    27872841        true, ""
    27882842    },
    2789     {   // 22 - simple call, more complex routine (no use return)
     2843    {   // 23 - simple call, more complex routine (no use return)
    27902844        R"ffDXD(.regvar sa:s:8, va:v:8
    27912845        s_mov_b32 sa[2], s4
     
    28632917        true, ""
    28642918    },
    2865     {   // 23 - simple call, more complex routine
     2919    {   // 24 - simple call, more complex routine
    28662920        R"ffDXD(.regvar sa:s:8, va:v:8
    28672921        s_mov_b32 sa[2], s4
     
    29442998        true, ""
    29452999    },
    2946     {   // 24 - nested calls
     3000    {   // 25 - nested calls
    29473001        R"ffDXD(.regvar sa:s:8, va:v:8
    29483002        s_mov_b32 sa[2], s4
     
    31013155        }, true, ""
    31023156    },
    3103     {   // 25 - many routines in single calls
     3157    {   // 26 - many routines in single calls
    31043158        R"ffDXD(.regvar sa:s:8, va:v:8
    31053159        s_mov_b32 sa[2], s4
Note: See TracChangeset for help on using the changeset viewer.