Changeset 4140 in CLRX


Ignore:
Timestamp:
May 10, 2018, 11:23:24 PM (3 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Yet another testcase with routines and calls.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r4139 r4140  
    14251425    }
    14261426}
    1427 
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc3.cpp

    r4138 r4140  
    13131313                { { 25, 26 } }  // 18: sa[7]'6
    13141314            },
    1315             {   // for VGPs
     1315            {   // for VGPRs
    13161316                { { 0, 29 }, { 48, 88 }, { 112, 152 } }, // 0: va[0]'0
    13171317                { { 0, 33 }, { 48, 88 }, { 112, 152 } }, // 1: va[1]'0
     
    15351535        {   // vidxCallMap
    15361536            { 0, { { { 13 }, { }, { }, { } } } }
     1537        },
     1538        true, ""
     1539    },
     1540    {   // 25 - many routines and many calls. all vars in all return paths
     1541        R"ffDXD(.regvar sa:s:8, va:v:8
     1542        .cf_call routine
     1543        s_swappc_b64 s[0:1], s[2:3]         # 0
     1544       
     1545        s_add_u32 sa[7], sa[7], sa[1]       # 4
     1546        s_add_u32 sa[7], sa[7], sa[2]       # 8
     1547        s_add_u32 sa[7], sa[7], sa[3]       # 12
     1548        s_add_u32 sa[7], sa[7], sa[4]       # 16
     1549        v_xor_b32 va[7], va[7], va[1]       # 20
     1550        v_xor_b32 va[7], va[7], va[2]       # 24
     1551        v_xor_b32 va[7], va[7], va[3]       # 28
     1552        s_endpgm                            # 32
     1553       
     1554routine:
     1555        s_add_u32 sa[2], sa[2], sa[0]       # 36
     1556        s_cbranch_scc0 r1_2                 # 40
     1557r1_1:
     1558        v_add_u32 va[2], vcc, va[2], va[0]  # 44
     1559        .cf_call routine2
     1560        s_swappc_b64 s[0:1], s[2:3]         # 48
     1561        v_add_u32 va[1], vcc, va[1], va[0]  # 52
     1562        s_add_u32 sa[1], sa[1], sa[0]       # 56
     1563        v_add_u32 va[3], vcc, va[3], va[0]  # 60
     1564        .cf_ret
     1565        s_setpc_b64 s[0:1]                  # 64
     1566r1_2:
     1567        s_add_u32 sa[3], sa[3], sa[0]       # 68
     1568        s_add_u32 sa[1], sa[1], sa[0]       # 72
     1569        .cf_call routine3
     1570        s_swappc_b64 s[0:1], s[2:3]         # 76
     1571        s_add_u32 sa[4], sa[4], sa[0]       # 80
     1572        .cf_ret
     1573        s_setpc_b64 s[0:1]                  # 84
     1574       
     1575routine2:
     1576        s_add_u32 sa[3], sa[3], sa[0]       # 88
     1577        s_cbranch_scc0 r2_2                 # 92
     1578r2_1:
     1579        s_add_u32 sa[4], sa[4], sa[0]       # 96
     1580        .cf_ret
     1581        s_setpc_b64 s[0:1]                  # 100
     1582r2_2:
     1583        s_add_u32 sa[4], sa[4], sa[0]       # 104
     1584        .cf_ret
     1585        s_setpc_b64 s[0:1]                  # 108
     1586       
     1587routine3:
     1588        v_add_u32 va[1], vcc, va[1], va[0]  # 112
     1589        v_add_u32 va[3], vcc, va[3], va[0]  # 116
     1590        s_cbranch_scc0 r3_2                 # 120
     1591r3_1:
     1592        v_add_u32 va[2], vcc, va[2], va[0]  # 124
     1593        .cf_ret
     1594        s_setpc_b64 s[0:1]                  # 128
     1595r3_2:
     1596        v_add_u32 va[2], vcc, va[2], va[0]  # 132
     1597        s_cbranch_scc1 r3_3                 # 136
     1598        .cf_ret
     1599        s_setpc_b64 s[0:1]                  # 140
     1600r3_3:
     1601        v_add_u32 va[3], vcc, va[3], va[0]  # 144
     1602        .cf_ret
     1603        s_setpc_b64 s[0:1]                  # 148
     1604)ffDXD",
     1605        {   // livenesses
     1606            {   // SGPRs
     1607                { { 1, 2 }, { 49, 65 }, { 77, 85 }, { 88, 152 } }, // 0: S0
     1608                { { 1, 2 }, { 49, 65 }, { 77, 85 }, { 88, 152 } }, // 1: S1
     1609                { { 0, 4 }, { 36, 49 }, { 68, 77 } }, // 2: S2
     1610                { { 0, 4 }, { 36, 49 }, { 68, 77 } }, // 3: S3
     1611                { { 0, 4 }, { 36, 57 }, { 68, 81 }, { 88, 112 } }, // 4: sa[0]'0
     1612                { { 0, 4 }, { 36, 57 }, { 68, 73 } }, // 5: sa[1]'0
     1613                { { 4, 5 }, { 57, 68 }, { 73, 88 } }, // 6: sa[1]'1
     1614                { { 0, 4 }, { 36, 37 } }, // 7: sa[2]'0
     1615                { { 4, 9 }, { 37, 88 } }, // 8: sa[2]'1
     1616                { { 0, 4 }, { 36, 52 }, { 68, 69 }, { 88, 89 } }, // 9: sa[3]'0
     1617                { { 4, 13 }, { 52, 68 }, { 69, 88 }, { 89, 112 } }, // 10: sa[3]'1
     1618                { { 0, 4 }, { 36, 52 }, { 68, 81 },
     1619                        { 88, 97 }, { 104, 105 } }, // 11: sa[4]'0
     1620                { { 4, 17 }, { 52, 68 }, { 81, 88 },
     1621                        { 97, 104 }, { 105, 112 } }, // 12: sa[4]'1
     1622                { { 0, 5 } }, // 13: sa[7]'0
     1623                { { 5, 9 } }, // 14: sa[7]'1
     1624                { { 9, 13 } }, // 15: sa[7]'2
     1625                { { 13, 17 } }, // 16: sa[7]'3
     1626                { { 17, 18 } }  // 17: sa[7]'4
     1627            },
     1628            {   // for VPGRs
     1629                { { 0, 4 }, { 36, 61 }, { 68, 80 },
     1630                        { 112, 125 }, { 132, 140 }, { 144, 145 } }, // 0: va[0]'0
     1631                { { 0, 4 }, { 36, 53 }, { 68, 80 }, { 112, 113 } }, // 1: va[1]'0
     1632                { { 4, 21 }, { 53, 68 }, { 80, 88 }, { 113, 152 } }, // 2: va[1]'1
     1633                { { 0, 4 }, { 36, 45 }, { 68, 80 },
     1634                        { 112, 125 }, { 132, 133 } }, // 3: va[2]'0
     1635                { { 4, 25 }, { 45, 68 }, { 80, 88 },
     1636                        { 125, 132 }, { 133, 152 } }, // 4: va[2]'1
     1637                { { 0, 4 }, { 36, 61 }, { 68, 80 }, { 112, 117 } }, // 5: va[3]'0
     1638                { { 4, 29 }, { 61, 68 }, { 80, 88 }, { 117, 152 } }, // 6: va[3]'1
     1639                { { 0, 21 } }, // 7: va[7]'0
     1640                { { 21, 25 } }, // 8: va[7]'1
     1641                { { 25, 29 } }, // 9: va[7]'2
     1642                { { 29, 30 } }  // 10: va[7]'3
     1643            },
     1644            { },
     1645            { }
     1646        },
     1647        { }, // linearDepMaps
     1648        {   // vidxRoutineMap
     1649            { 2, { {
     1650                { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, // for SGPRs
     1651                { 0, 1, 2, 3, 4, 5, 6 }, // for VGPRs
     1652                { }, { } } } },
     1653            { 7, { {
     1654                { 0, 1, 4, 9, 10, 11, 12 }, // for SGPRs
     1655                { }, { }, { } } } },
     1656            { 10, { { { 0, 1 },  // for SGPRs
     1657                { 0, 1, 2, 3, 4, 5, 6 }, // for VGPRs
     1658                { }, { } } } }
     1659        },
     1660        {   // vidxCallMap
     1661            { 0, { { { 13 }, { 7 }, { }, { } } } },
     1662            { 3, { { { 5, 8 }, { 0, 1, 4, 5 }, { }, { } } } },
     1663            { 5, { { { 4, 6, 8, 10, 11 }, { }, { }, { } } } }
    15371664        },
    15381665        true, ""
Note: See TracChangeset for help on using the changeset viewer.