Changeset 4154 in CLRX


Ignore:
Timestamp:
May 12, 2018, 4:39:09 PM (2 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Fixed putting vidxes to vidxRoutineMap (may beyond correct ssaIdIdx in loop).
add testcase with routine with loop.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r4153 r4154  
    972972                    {
    973973                        routineVIdxes.vs[regType].insert(vidxes[sinfo.ssaIdFirst]);
    974                         for (size_t i = 1; i < sinfo.ssaIdChange; i++)
     974                        for (size_t i = 1; i < sinfo.ssaIdChange-1; i++)
    975975                            routineVIdxes.vs[regType].insert(vidxes[sinfo.ssaId+i]);
    976976                        routineVIdxes.vs[regType].insert(vidxes[sinfo.ssaIdLast]);
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc3.cpp

    r4153 r4154  
    6464static const AsmLivenessesCase createLivenessesCasesTbl[] =
    6565{
     66#if 0
    6667    {   // 0 - simple case
    6768        R"ffDXD(.regvar sa:s:8, va:v:10
     
    22312232        },
    22322233        true, ""
    2233     }
     2234    },
     2235#endif
     2236    {   // 35 - routine with loop
     2237        R"ffDXD(.regvar sa:s:8, va:v:8, xa:s:8
     2238        s_mov_b32 sa[2], s4             # 0
     2239       
     2240        .cf_call routine
     2241        s_swappc_b64 s[0:1], s[2:3]     # 4
     2242       
     2243        s_xor_b32 sa[2], sa[2], sa[0]   # 8
     2244        s_endpgm                        # 12
     2245       
     2246routine:
     2247        s_and_b32 sa[2], sa[2], sa[1]   # 16
     2248loop0:
     2249        s_cbranch_vccz b1               # 20
     2250b0:     s_cbranch_scc0 loop0            # 24
     2251        s_branch ret2                   # 28
     2252       
     2253b1:     s_xor_b32 sa[2], sa[2], sa[0]   # 32
     2254        s_and_b32 sa[2], sa[2], sa[1]   # 36
     2255        s_cbranch_scc0 loop0            # 40
     2256        .cf_ret
     2257        s_setpc_b64 s[0:1]              # 44
     2258ret2:
     2259        .cf_ret
     2260        s_setpc_b64 s[0:1]              # 48
     2261)ffDXD",
     2262        {   // livenesses
     2263            {   // for SGPRs
     2264                { { 5, 8 }, { 16, 45 }, { 48, 49 } }, // 0: S0
     2265                { { 5, 8 }, { 16, 45 }, { 48, 49 } }, // 1: S1
     2266                { { 0, 5 } }, // 2: S2
     2267                { { 0, 5 } }, // 3: S3
     2268                { { 0, 1 } }, // 4: S4
     2269                { { 0, 9 }, { 16, 52 } }, // 5: sa[0]'0
     2270                { { 0, 8 }, { 16, 28 }, { 32, 44 } }, // 6: sa[1]'0
     2271                { { 1, 8 }, { 16, 17 } }, // 7: sa[2]'0
     2272                { { 8, 9 }, { 17, 33 }, { 37, 52 } }, // 8: sa[2]'1
     2273                { { 33, 37 } }, // 9: sa[2]'2
     2274                { { 9, 10 } }  // 10: sa[2]'3
     2275            },
     2276            { },
     2277            { },
     2278            { }
     2279        },
     2280        { }, // linearDepMaps
     2281        {   // vidxRoutineMap
     2282            { 2, { { { 0, 1, 5, 6, 7, 8, 9 }, { }, { }, { } } } }
     2283        },
     2284        { }, // vidxCallMap
     2285        true, ""
     2286    },
    22342287};
    22352288
Note: See TracChangeset for help on using the changeset viewer.