Changeset 3974 in CLRX


Ignore:
Timestamp:
Apr 9, 2018, 8:36:12 AM (10 days ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add new testcases: routine with program ends.

File:
1 edited

Legend:

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

    r3972 r3974  
    14801480        true, ""
    14811481    },
     1482    // TODO: update ssaIds for regvar that has been returned and changed
     1483    // by recursion callee, after that callee
    14821484    {   // 9 - double recursion
    14831485        R"ffDXD(.regvar sa:s:8, va:v:8
     
    16001602        true, ""
    16011603    },
     1604    {   // 10 - routine with program end
     1605        R"ffDXD(.regvar sa:s:8, va:v:8
     1606        s_mov_b32 sa[2], s4
     1607        s_mov_b32 sa[3], s4
     1608        s_mov_b32 sa[4], s4
     1609       
     1610        .cf_call routine
     1611        s_swappc_b64 s[0:1], s[2:3]
     1612       
     1613        s_add_u32 sa[2], sa[2], sa[0]
     1614        s_add_u32 sa[3], sa[3], sa[0]
     1615        s_add_u32 sa[4], sa[4], sa[0]
     1616        s_endpgm
     1617       
     1618routine:
     1619        s_add_u32 sa[2], sa[2], sa[0]
     1620        s_cbranch_execz b0
     1621       
     1622        s_add_u32 sa[3], sa[3], sa[0]
     1623        .cf_ret
     1624        s_setpc_b64 s[0:1]
     1625       
     1626b0:     s_add_u32 sa[2], sa[2], sa[0]
     1627        s_add_u32 sa[3], sa[3], sa[0]
     1628        s_add_u32 sa[4], sa[4], sa[0]
     1629       
     1630        s_endpgm
     1631)ffDXD",
     1632        {
     1633            {   // block 0 - start
     1634                0, 16,
     1635                { { 2, true } },
     1636                {
     1637                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1638                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1639                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1640                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1641                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1642                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1643                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1644                    { { "sa", 4 }, SSAInfo(0, 1, 1, 1, 1, false) }
     1645                }, true, false, false },
     1646            {   // block 1 - end
     1647                16, 32,
     1648                { },
     1649                {
     1650                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1651                    { { "sa", 2 }, SSAInfo(2, 4, 4, 4, 1, true) },
     1652                    { { "sa", 3 }, SSAInfo(2, 4, 4, 4, 1, true) },
     1653                    { { "sa", 4 }, SSAInfo(1, 3, 3, 3, 1, true) }
     1654                }, false, false, true },
     1655            {   // block 2 - routine
     1656                32, 40,
     1657                { { 3, false }, { 4, false } },
     1658                {
     1659                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1660                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1661                }, false, false, false },
     1662            {   // block 3 - routine end 1
     1663                40, 48,
     1664                { },
     1665                {
     1666                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1667                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1668                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1669                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1670                }, false, true, true },
     1671            {   // block 4 - routine end 2
     1672                48, 64,
     1673                { },
     1674                {
     1675                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1676                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) },
     1677                    { { "sa", 3 }, SSAInfo(1, 3, 3, 3, 1, true) },
     1678                    { { "sa", 4 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1679                }, false, false, true }
     1680        },
     1681        {   // SSA replaces
     1682        },
     1683        true, ""
     1684    },
     1685    {   // 11 - routine without return but with program ends
     1686        R"ffDXD(.regvar sa:s:8, va:v:8
     1687        s_mov_b32 sa[2], s4
     1688        s_mov_b32 sa[3], s4
     1689        s_mov_b32 sa[4], s4
     1690       
     1691        .cf_call routine
     1692        s_swappc_b64 s[0:1], s[2:3]
     1693       
     1694        s_add_u32 sa[2], sa[2], sa[0]
     1695        s_add_u32 sa[3], sa[3], sa[0]
     1696        s_add_u32 sa[4], sa[4], sa[0]
     1697        s_endpgm
     1698       
     1699routine:
     1700        s_add_u32 sa[2], sa[2], sa[0]
     1701        s_cbranch_execz b0
     1702       
     1703        s_add_u32 sa[3], sa[3], sa[0]
     1704        s_endpgm
     1705       
     1706b0:     s_add_u32 sa[2], sa[2], sa[0]
     1707        s_add_u32 sa[3], sa[3], sa[0]
     1708        s_add_u32 sa[4], sa[4], sa[0]
     1709       
     1710        s_endpgm
     1711)ffDXD",
     1712        {
     1713            {   // block 0 - start
     1714                0, 16,
     1715                { { 2, true } },
     1716                {
     1717                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1718                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1719                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1720                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1721                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1722                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1723                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1724                    { { "sa", 4 }, SSAInfo(0, 1, 1, 1, 1, false) }
     1725                }, true, false, false },
     1726            {   // block 1 - end
     1727                16, 32,
     1728                { },
     1729                {
     1730                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1731                    { { "sa", 2 }, SSAInfo(1, 4, 4, 4, 1, true) },
     1732                    { { "sa", 3 }, SSAInfo(1, 4, 4, 4, 1, true) },
     1733                    { { "sa", 4 }, SSAInfo(1, 3, 3, 3, 1, true) }
     1734                }, false, false, true },
     1735            {   // block 2 - routine
     1736                32, 40,
     1737                { { 3, false }, { 4, false } },
     1738                {
     1739                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1740                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1741                }, false, false, false },
     1742            {   // block 3 - routine end 1
     1743                40, 48,
     1744                { },
     1745                {
     1746                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1747                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1748                }, false, false, true },
     1749            {   // block 4 - routine end 2
     1750                48, 64,
     1751                { },
     1752                {
     1753                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     1754                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) },
     1755                    { { "sa", 3 }, SSAInfo(1, 3, 3, 3, 1, true) },
     1756                    { { "sa", 4 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1757                }, false, false, true }
     1758        },
     1759        {   // SSA replaces
     1760        },
     1761        true, ""
     1762    },
    16021763    { nullptr }
    16031764};
Note: See TracChangeset for help on using the changeset viewer.