Changeset 3966 in CLRX


Ignore:
Timestamp:
Apr 5, 2018, 4:53:52 PM (6 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add new testcase (recursions).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAllocCase3.cpp

    r3964 r3966  
    14781478        true, ""
    14791479    },
     1480    {   // 9 - double recursion
     1481        R"ffDXD(.regvar sa:s:8, va:v:8
     1482        s_mov_b32 sa[2], s4
     1483        s_mov_b32 sa[3], s4
     1484        s_mov_b32 sa[6], s7
     1485       
     1486        .cf_call routine
     1487        s_swappc_b64 s[0:1], s[2:3]
     1488       
     1489        s_add_u32 sa[2], sa[2], sa[0]
     1490        s_add_u32 sa[3], sa[3], sa[0]
     1491        s_add_u32 sa[6], sa[6], sa[0]
     1492        s_endpgm
     1493       
     1494routine:
     1495        s_xor_b32 sa[2], sa[2], sa[0]
     1496        s_xor_b32 sa[3], sa[3], sa[1]
     1497        s_cbranch_vccnz b0
     1498       
     1499        .cf_call routine
     1500        s_swappc_b64 s[0:1], s[2:3]
     1501       
     1502        s_xor_b32 sa[3], sa[3], sa[1]
     1503        s_xor_b32 sa[6], sa[6], sa[1]
     1504       
     1505        .cf_call routine
     1506        s_swappc_b64 s[0:1], s[2:3]
     1507       
     1508        s_xor_b32 sa[2], sa[2], sa[0]
     1509        .cf_ret
     1510        s_setpc_b64 s[0:1]
     1511       
     1512b0:     s_xor_b32 sa[3], sa[3], sa[0]
     1513        s_xor_b32 sa[2], sa[2], sa[0]
     1514        s_xor_b32 sa[6], sa[6], sa[0]
     1515        .cf_ret
     1516        s_setpc_b64 s[0:1]
     1517)ffDXD",
     1518        {
     1519            {   // block 0 - start
     1520                 0, 16,
     1521                { { 2, true } },
     1522                {
     1523                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1524                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1525                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1526                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1527                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1528                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1529                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1530                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1531                    { { "sa", 6 }, SSAInfo(0, 1, 1, 1, 1, false) }
     1532                }, true, false, false },
     1533            {   // block 1 - end
     1534                16, 32,
     1535                { },
     1536                {
     1537                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1538                    { { "sa", 2 }, SSAInfo(3, 5, 5, 5, 1, true) },
     1539                    { { "sa", 3 }, SSAInfo(2, 5, 5, 5, 1, true) },
     1540                    { { "sa", 6 }, SSAInfo(1, 4, 4, 4, 1, true) }
     1541                }, false, false, true },
     1542            {   // block 2 - routine
     1543                32, 44,
     1544                { { 3, false }, { 6, false } },
     1545                {
     1546                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1547                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1548                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     1549                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1550                }, false, false, false },
     1551            {   // block 3 - call recur 1
     1552                44, 48,
     1553                { { 2, true } },
     1554                {
     1555                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1556                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1557                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1558                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) }
     1559                }, true, false, false },
     1560            {   // block 4 - call recur 2
     1561                48, 60,
     1562                { { 2, true } },
     1563                {
     1564                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1565                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1566                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1567                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1568                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1569                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) },
     1570                    { { "sa", 6 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1571                }, true, false, false },
     1572            {   // block 5 - routine end 1
     1573                60, 68,
     1574                { },
     1575                {
     1576                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1577                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1578                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1579                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) }
     1580                }, false, true ,true },
     1581            {   // block 6 - routine end 2
     1582                68, 84,
     1583                { },
     1584                {
     1585                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1586                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1587                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1588                    { { "sa", 2 }, SSAInfo(2, 4, 4, 4, 1, true) },
     1589                    { { "sa", 3 }, SSAInfo(2, 4, 4, 4, 1, true) },
     1590                    { { "sa", 6 }, SSAInfo(1, 3, 3, 3, 1, true) }
     1591                }, false, true, true }
     1592        },
     1593        {   // SSA replaces (good ???)
     1594            { { "sa", 2 }, { { 3, 2 }, { 4, 2 }, { 4, 3 }, { 2, 1 }, { 3, 1 } } },
     1595            { { "sa", 3 }, { { 3, 2 }, { 4, 2 }, { 2, 1 }, { 3, 1 } } },
     1596            { { "sa", 6 }, { { 2, 1 }, { 3, 1 } } }
     1597        },
     1598        true, ""
     1599    },
    14801600    { nullptr }
    14811601};
Note: See TracChangeset for help on using the changeset viewer.