Changeset 4161 in CLRX


Ignore:
Timestamp:
May 14, 2018, 8:55:47 AM (12 days ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: The first working testcase with recursion.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r4160 r4161  
    12031203    std::vector<bool> waysToCache(codeBlocks.size(), false);
    12041204    ResSecondPointsToCache cblocksToCache(codeBlocks.size());
     1205    std::unordered_set<size_t> callBlocks;
    12051206   
    12061207    size_t rbwCount = 0;
     
    13911392            }
    13921393            callStack.pop_back(); // just return from call
     1394            callBlocks.erase(routineBlock);
    13931395        }
    13941396       
     
    14011403                callStack.push_back({ entry.blockIndex, entry.nextIndex, nextBlock });
    14021404                //isCall = true;
     1405                if (!callBlocks.insert(nextBlock).second)
     1406                {
     1407                    // just skip recursion (is good?)
     1408                    entry.nextIndex++;
     1409                    continue;
     1410                }
    14031411            }
    14041412           
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc3.cpp

    r4159 r4161  
    25832583        true, ""
    25842584    },
     2585    {   // 40 - first recursion testcase
     2586        R"ffDXD(.regvar sa:s:8, va:v:8
     2587        s_mov_b32 sa[2], s4             # 0
     2588        s_mov_b32 sa[3], s4             # 4
     2589        s_mov_b32 sa[6], s7             # 8
     2590       
     2591        .cf_call routine
     2592        s_swappc_b64 s[0:1], s[2:3]     # 12
     2593       
     2594        s_add_u32 sa[2], sa[2], sa[0]   # 16
     2595        s_add_u32 sa[3], sa[3], sa[0]   # 20
     2596        s_add_u32 sa[6], sa[6], sa[0]   # 24
     2597        s_endpgm                        # 28
     2598       
     2599routine:
     2600        s_xor_b32 sa[2], sa[2], sa[0]   # 32
     2601        s_xor_b32 sa[3], sa[3], sa[1]   # 36
     2602        s_cbranch_vccnz b0              # 40
     2603       
     2604        .cf_call routine
     2605        s_swappc_b64 s[0:1], s[2:3]     # 44
     2606       
     2607        s_xor_b32 sa[3], sa[3], sa[1]   # 48
     2608        s_xor_b32 sa[6], sa[6], sa[1]   # 52
     2609        .cf_ret
     2610        s_setpc_b64 s[0:1]              # 56
     2611       
     2612b0:     s_xor_b32 sa[3], sa[3], sa[0]   # 60
     2613        s_xor_b32 sa[2], sa[2], sa[0]   # 64
     2614        s_xor_b32 sa[6], sa[6], sa[0]   # 68
     2615        .cf_ret
     2616        s_setpc_b64 s[0:1]              # 72
     2617)ffDXD",
     2618        {   // livenesses
     2619            {   // for SGPRs
     2620                { { 13, 16 }, { 32, 44 }, { 45, 76 } }, // 0: S0
     2621                { { 13, 16 }, { 32, 44 }, { 45, 76 } }, // 1: S1
     2622                { { 0, 16 }, { 32, 48 } }, // 2: S2
     2623                { { 0, 16 }, { 32, 48 } }, // 3: S3
     2624                { { 0, 5 } }, // 4: S4
     2625                { { 0, 9 } }, // 5: S7
     2626                { { 0, 25 }, { 32, 76 } }, // 6: sa[0]'0
     2627                { { 0, 16 }, { 32, 76 } }, // 7: sa[1]'0
     2628                { { 1, 17 }, { 32, 76 } }, // 8: sa[2]'0
     2629                { { 17, 18 } }, // 9: sa[2]'1
     2630                { { 5, 21 }, { 32, 76 } }, // 10: sa[3]'0
     2631                { { 21, 22 } }, // 11: sa[3]'1
     2632                { { 9, 25 }, { 32, 76 } }, // 12: sa[6]'0
     2633                { { 25, 26 } }  // 13: sa[6]'1
     2634            }
     2635        },
     2636        { }, // linearDepMaps
     2637        {   // vidxRoutineMap
     2638            { 2, { { { 0, 1, 2, 3, 6, 7, 8, 10, 12 }, { }, { }, { } } } }
     2639        },
     2640        {   // vidxCallMap
     2641            { 3, { { { }, { }, { }, { } } } }
     2642        },
     2643        true, ""
     2644    }
    25852645};
    25862646
Note: See TracChangeset for help on using the changeset viewer.