Changeset 3608 in CLRX


Ignore:
Timestamp:
Jan 11, 2018, 4:08:53 PM (5 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: resolveSSAConflict: allow to find conflict after first way (if found). add new testcase.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r3607 r3608  
    551551                                if (ssaId > sinfo.ssaIdBefore)
    552552                                {
    553                                     //std::cout << "  insertreplace" << std::endl;
     553                                    /*std::cout << "  insertreplace: " <<
     554                                        ssaId << ", " << sinfo.ssaIdBefore << std::endl;*/
    554555                                    insertReplace(replacesMap, sentry.first, ssaId,
    555556                                                sinfo.ssaIdBefore);
     
    598599                // mark resolved variables as not handled for further processing
    599600                auto it = toResolveMap.find(sentry.first);
    600                 if (it != toResolveMap.end() && !it->second.handled &&
     601                if (it != toResolveMap.end() &&
    601602                    it->second.sourceBlock == entry.blockIndex)
    602603                    // remove if not handled yet
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc.cpp

    r3607 r3608  
    15771577            { { "sa", 1 }, { { 3, 2 } } },
    15781578            { { "va", 0 }, { { 8, 1 }, { 10, 5 } } },
    1579             { { "va", 1 }, { { 2, 1 }, { 2, 1 }, { 3, 1 } } },
    1580             { { "va", 2 }, { { 4, 1 }, { 4, 1 }, { 5, 1 } } }
     1579            { { "va", 1 }, { { 2, 1 }, { 2, 1 }, { 3, 1 }, { 3, 2 } } },
     1580            { { "va", 2 }, { { 4, 1 }, { 4, 1 }, { 5, 1 }, { 5, 4 } } }
    15811581        },
    15821582        true, ""
     
    17871787        },
    17881788        {   // SSA replaces
    1789             { { "sa", 2 }, { { 5, 1 } } },
     1789            { { "sa", 2 }, { { 5, 1 }, { 5, 1 } } },
    17901790            { { "sa", 3 }, { { 6, 1 } } }
    17911791        },
     
    18741874        {
    18751875            { { "sa", 3 }, { { 4, 1 }, { 4, 1 } } }
     1876        },
     1877        true, ""
     1878    },
     1879    {   // 12 - with trap: first branch have higher SSAId
     1880        R"ffDXD(.regvar sa:s:8, va:v:8
     1881        # block 0
     1882        s_mov_b32 sa[0], s2
     1883        s_mov_b32 sa[1], s3
     1884        s_mov_b32 sa[2], s4
     1885        s_mov_b32 sa[3], s5
     1886        s_cmp_lt_u32 s0, s1
     1887        .cf_jump bb1, bbx, bb3, bb2
     1888        s_setpc_b64 s[0:1]
     1889       
     1890bb1:    s_add_u32 sa[3], sa[3], sa[2]
     1891        s_endpgm
     1892       
     1893bbx:    s_add_u32 sa[3], sa[3], sa[2]
     1894        s_cbranch_scc1 bb1_
     1895
     1896bb0:    s_add_u32 sa[3], sa[3], sa[2]
     1897        s_endpgm
     1898       
     1899bb1_:   s_branch bb1
     1900
     1901bb3:    .cf_jump bb0, bb1_
     1902        s_setpc_b64 s[0:1]
     1903               
     1904bb2:    s_add_u32 sa[3], sa[3], sa[2]
     1905        s_branch bb3
     1906)ffDXD",
     1907        {
     1908            // block 0
     1909            { 0, 24,
     1910                { { 1, false }, { 2, false }, { 5, false }, { 6, false } },
     1911                {
     1912                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1913                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1914                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1915                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1916                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1917                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1918                    { { "sa", 0 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1919                    { { "sa", 1 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1920                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     1921                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) }
     1922                }, false, false, true },
     1923            // block 1 - bb1
     1924            { 24, 32,
     1925                { },
     1926                {
     1927                    { { "sa", 2 }, SSAInfo(1, SIZE_MAX, 2, SIZE_MAX, 0, true) },
     1928                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) }
     1929                }, false, false, true },
     1930            // block 2 - bbx
     1931            { 32, 40,
     1932                { { 3, false }, { 4, false } },
     1933                {
     1934                    { { "sa", 2 }, SSAInfo(1, SIZE_MAX, 2, SIZE_MAX, 0, true) },
     1935                    { { "sa", 3 }, SSAInfo(1, 3, 3, 3, 1, true) }
     1936                }, false, false, false },
     1937            // block 3 - bb0
     1938            { 40, 48,
     1939                { },
     1940                {
     1941                    { { "sa", 2 }, SSAInfo(1, SIZE_MAX, 2, SIZE_MAX, 0, true) },
     1942                    { { "sa", 3 }, SSAInfo(3, 4, 4, 4, 1, true) }
     1943                }, false, false, true },
     1944            // block 4 - bb1_
     1945            { 48, 52,
     1946                { { 1, false } },
     1947                { }, false, false, true },
     1948            // block 5
     1949            { 52, 56,
     1950                { { 3, false }, { 4, false } },
     1951                {
     1952                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1953                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) }
     1954                }, false, false, true },
     1955            // block 5
     1956            { 56, 64,
     1957                { { 5, false } },
     1958                {
     1959                    { { "sa", 2 }, SSAInfo(1, SIZE_MAX, 2, SIZE_MAX, 0, true) },
     1960                    { { "sa", 3 }, SSAInfo(1, 5, 5, 5, 1, true) }
     1961                }, false, false, true }
     1962        },
     1963        {
     1964            { { "sa", 3 }, { { 3, 1 }, { 5, 3 }, { 5, 1 } } }
    18761965        },
    18771966        true, ""
Note: See TracChangeset for help on using the changeset viewer.