Changeset 3623 in CLRX


Ignore:
Timestamp:
Jan 17, 2018, 6:12:54 PM (2 years ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add testcase with complex routine.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r3622 r3623  
    656656   
    657657    joinLastSSAIdMap(dest.lastSSAIdMap, src.lastSSAIdMap);
    658 }
    659 
    660 static void removeLastSSAIdMap(LastSSAIdMap& dest, const LastSSAIdMap& src)
    661 {
    662     for (const auto& entry: src)
    663     {
    664         auto destIt = dest.find(entry.first); // find
    665         std::vector<size_t>& destEntry = destIt->second;
    666         // add new ways
    667         for (size_t ssaId: entry.second)
    668         {
    669             auto it = std::find(destEntry.begin(), destEntry.end(), ssaId);
    670             if (it != destEntry.end())
    671                 destEntry.erase(it);
    672         }
    673     }
    674658}
    675659
     
    11321116                            /*std::cout << "erase in blk2: " << ssaEntry.first.regVar <<
    11331117                                    ":" << ssaEntry.first.index << ": " <<
    1134                                         entry.blockIndex << "=" << *nit << std::endl;*/
     1118                                    entry.blockIndex << " ssaId=" << *nit << std::endl;*/
    11351119                            ssaIds.erase(nit);  // just remove
    11361120                        }
     
    11461130                            /*std::cout << "erase in blk: " << ssaEntry.first.regVar <<
    11471131                                    ":" << ssaEntry.first.index << ": " <<
    1148                                     entry.blockIndex << "=" << *fit << std::endl;*/
     1132                                    entry.blockIndex << " ssaId=" << *fit << std::endl;*/
    11491133                            ssaIds.erase(fit);
    11501134                        }
    11511135                    }
    1152                     else
    1153                         if (fit == ssaIds.end())
    1154                             ssaIds.push_back(curSSAId-1);
     1136                    else if (fit == ssaIds.end())
     1137                        ssaIds.push_back(curSSAId-1);
    11551138                }
    11561139               
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc.cpp

    r3622 r3623  
    22402240                }, false, true, true }
    22412241        },
    2242         {
     2242        {   // SSA replaces
    22432243            { { "sa", 2 }, { { 4, 3 } } },
    22442244            { { "sa", 3 }, { { 4, 3 } } }
     
    24042404        {   // SSA replaces
    24052405            { { "sa", 2 }, { { 4, 3 } } }
     2406        },
     2407        true, ""
     2408    },
     2409    {   // 19 - simple call, many deep returns
     2410        R"ffDXD(.regvar sa:s:8, va:v:8
     2411        s_mov_b32 sa[2], s4
     2412        s_mov_b32 sa[3], s5
     2413       
     2414        s_getpc_b64 s[2:3]
     2415        s_add_u32 s2, s2, routine-.
     2416        s_add_u32 s3, s3, routine-.+4
     2417        .cf_call routine
     2418        s_swappc_b64 s[0:1], s[2:3]
     2419       
     2420        s_lshl_b32 sa[2], sa[2], 3
     2421        s_lshl_b32 sa[3], sa[3], 4
     2422        s_lshl_b32 sa[4], sa[4], 5
     2423        s_lshl_b32 sa[5], sa[5], 5
     2424        s_endpgm
     2425       
     2426routine:
     2427        s_xor_b32 sa[2], sa[2], sa[0]
     2428        s_xor_b32 sa[3], sa[3], sa[0]
     2429        s_cbranch_scc1 bb1
     2430       
     2431b0:     s_xor_b32 sa[2], sa[2], sa[0]
     2432        s_xor_b32 sa[3], sa[3], sa[0]
     2433        s_cbranch_scc1 bb01
     2434       
     2435bb00:   s_xor_b32 sa[2], sa[2], sa[0]
     2436        s_branch bb00_
     2437       
     2438bb00_:  s_xor_b32 sa[2], sa[2], sa[0]
     2439        s_xor_b32 sa[3], sa[3], sa[0]
     2440        .cf_ret
     2441        s_setpc_b64 s[0:1]
     2442       
     2443bb01:   s_xor_b32 sa[2], sa[2], sa[0]
     2444        s_branch bb01_
     2445       
     2446bb01_:  s_xor_b32 sa[2], sa[2], sa[0]
     2447        s_xor_b32 sa[3], sa[3], sa[0]
     2448        s_xor_b32 sa[4], sa[4], sa[0]
     2449        .cf_ret
     2450        s_setpc_b64 s[0:1]
     2451       
     2452bb1:    s_xor_b32 sa[2], sa[2], sa[0]
     2453        s_xor_b32 sa[3], sa[3], sa[0]
     2454        s_cbranch_scc1 bb11
     2455       
     2456bb10:   s_xor_b32 sa[2], sa[2], sa[0]
     2457        s_branch bb10_
     2458       
     2459bb10_:  s_xor_b32 sa[2], sa[2], sa[0]
     2460        s_xor_b32 sa[3], sa[3], sa[0]
     2461        s_xor_b32 sa[5], sa[3], sa[2]
     2462        .cf_ret
     2463        s_setpc_b64 s[0:1]
     2464       
     2465bb11:   s_xor_b32 sa[2], sa[2], sa[0]
     2466        s_branch bb11_
     2467       
     2468bb11_:  s_xor_b32 sa[2], sa[2], sa[0]
     2469        s_xor_b32 sa[3], sa[3], sa[0]
     2470        s_xor_b32 sa[4], sa[4], sa[0]
     2471        .cf_ret
     2472        s_setpc_b64 s[0:1]
     2473)ffDXD",
     2474        {
     2475            // block 0
     2476            { 0, 32,
     2477                { { 2, true } },
     2478                {
     2479                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2480                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2481                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2482                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, false) },
     2483                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2484                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2485                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     2486                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) }
     2487                }, true, false, false },
     2488            // block 1
     2489            { 32, 52,
     2490                { },
     2491                {
     2492                    { { "sa", 2 }, SSAInfo(5, 13, 13, 13, 1, true) },
     2493                    { { "sa", 3 }, SSAInfo(4, 9, 9, 9, 1, true) },
     2494                    { { "sa", 4 }, SSAInfo(0, 3, 3, 3, 1, true) },
     2495                    { { "sa", 5 }, SSAInfo(0, 2, 2, 2, 1, true) }
     2496                }, false, false, true },
     2497            // block 2 - routine
     2498            { 52, 64,
     2499                { { 3, false }, { 8, false } },
     2500                {
     2501                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2502                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     2503                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) }
     2504                }, false, false, false },
     2505            // block 3 - bb0
     2506            { 64, 76,
     2507                { { 4, false }, { 6, false } },
     2508                {
     2509                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2510                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) },
     2511                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) }
     2512                }, false, false, false },
     2513            // block 4 - bb00
     2514            { 76, 84,
     2515                { { 5, false } },
     2516                {
     2517                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2518                    { { "sa", 2 }, SSAInfo(3, 4, 4, 4, 1, true) }
     2519                }, false, false, true },
     2520            // block 5 - bb00_
     2521            { 84, 96,
     2522                { },
     2523                {
     2524                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2525                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2526                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2527                    { { "sa", 2 }, SSAInfo(4, 5, 5, 5, 1, true) },
     2528                    { { "sa", 3 }, SSAInfo(3, 4, 4, 4, 1, true) }
     2529                }, false, true, true },
     2530            // block 6 - bb01
     2531            { 96, 104,
     2532                { { 7, false } },
     2533                {
     2534                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2535                    { { "sa", 2 }, SSAInfo(3, 6, 6, 6, 1, true) }
     2536                }, false, false, true },
     2537            // block 7 - bb01_
     2538            { 104, 120,
     2539                { },
     2540                {
     2541                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2542                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2543                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2544                    { { "sa", 2 }, SSAInfo(6, 7, 7, 7, 1, true) },
     2545                    { { "sa", 3 }, SSAInfo(3, 5, 5, 5, 1, true) },
     2546                    { { "sa", 4 }, SSAInfo(0, 1, 1, 1, 1, true) }
     2547                }, false, true, true },
     2548            // block 8 - bb1
     2549            { 120, 132,
     2550                { { 9, false }, { 11, false } },
     2551                {
     2552                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2553                    { { "sa", 2 }, SSAInfo(2, 8, 8, 8, 1, true) },
     2554                    { { "sa", 3 }, SSAInfo(2, 6, 6, 6, 1, true) }
     2555                }, false, false, false },
     2556            // block 9 - bb10
     2557            { 132, 140,
     2558                { { 10, false } },
     2559                {
     2560                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2561                    { { "sa", 2 }, SSAInfo(8, 9, 9, 9, 1, true) }
     2562                }, false, false, true },
     2563            // block 10 - bb10_
     2564            { 140, 156,
     2565                { },
     2566                {
     2567                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2568                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2569                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2570                    { { "sa", 2 }, SSAInfo(9, 10, 10, 10, 1, true) },
     2571                    { { "sa", 3 }, SSAInfo(6, 7, 7, 7, 1, true) },
     2572                    { { "sa", 5 }, SSAInfo(0, 1, 1, 1, 1, false) }
     2573                }, false, true, true },
     2574            // block 11
     2575            { 156, 164,
     2576                { { 12, false } },
     2577                {
     2578                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2579                    { { "sa", 2 }, SSAInfo(8, 11, 11, 11, 1, true) }
     2580                }, false, false, true },
     2581            // block 12
     2582            { 164, 180,
     2583                { },
     2584                {
     2585                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2586                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     2587                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     2588                    { { "sa", 2 }, SSAInfo(11, 12, 12, 12, 1, true) },
     2589                    { { "sa", 3 }, SSAInfo(6, 8, 8, 8, 1, true) },
     2590                    { { "sa", 4 }, SSAInfo(0, 2, 2, 2, 1, true) }
     2591                }, false, true, true }
     2592        },
     2593        {   // SSA replaces
     2594            { { "sa", 2 }, { { 7, 5 }, { 10, 5 }, { 12, 5 } } },
     2595            { { "sa", 3 }, { { 5, 4 }, { 7, 4 }, { 8, 4 } } },
     2596            { { "sa", 4 }, { { 1, 0 }, { 2, 0 } } },
     2597            { { "sa", 5 }, { { 1, 0 } } }
    24062598        },
    24072599        true, ""
Note: See TracChangeset for help on using the changeset viewer.