Changeset 3921 in CLRX


Ignore:
Timestamp:
Mar 22, 2018, 1:33:33 PM (4 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: add new testcase (routine with loop).

File:
1 edited

Legend:

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

    r3920 r3921  
    533533        true, ""
    534534    },
     535    {   // 2 - routine with loop and jumps to mid in loop
     536        R"ffDXD(.regvar sa:s:8, va:v:8
     537        s_mov_b32 sa[2], s4
     538        s_mov_b32 sa[3], s5
     539        s_mov_b32 sa[4], s6
     540        s_mov_b32 sa[5], s6
     541        s_mov_b32 sa[6], s7
     542       
     543        .cf_call routine
     544        s_swappc_b64 s[0:1], s[2:3]
     545       
     546        s_add_u32 sa[2], sa[2], sa[0]
     547        s_add_u32 sa[3], sa[3], sa[0]
     548        s_add_u32 sa[4], sa[4], sa[0]
     549        s_add_u32 sa[5], sa[5], sa[0]
     550        s_add_u32 sa[6], sa[6], sa[0]
     551        s_endpgm
     552       
     553routine:
     554        s_xor_b32 sa[2], sa[2], sa[0]
     555        s_xor_b32 sa[3], sa[3], sa[1]
     556        s_cbranch_execnz b0
     557       
     558loop:   s_xor_b32 sa[3], sa[3], sa[1]
     559l0:     s_xor_b32 sa[4], sa[4], sa[0]
     560l1:     s_xor_b32 sa[2], sa[2], sa[0]
     561        s_cbranch_vccz loop
     562       
     563        .cf_ret
     564        s_setpc_b64 s[0:1]
     565
     566b0:     s_xor_b32 sa[5], sa[5], sa[0]
     567        s_cbranch_vccz l0
     568        s_xor_b32 sa[6], sa[6], sa[1]
     569        s_branch l1
     570)ffDXD",
     571        {
     572            {   // block 0 - start
     573                0, 24,
     574                { { 2, true } },
     575                {
     576                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     577                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     578                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     579                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     580                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     581                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     582                    { { "", 6 }, SSAInfo(0, 0, 0, 0, 0, true) },
     583                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     584                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     585                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     586                    { { "sa", 4 }, SSAInfo(0, 1, 1, 1, 1, false) },
     587                    { { "sa", 5 }, SSAInfo(0, 1, 1, 1, 1, false) },
     588                    { { "sa", 6 }, SSAInfo(0, 1, 1, 1, 1, false) }
     589                }, true, false, false },
     590            {   // block 1 - end
     591                24, 48,
     592                { },
     593                {
     594                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     595                    { { "sa", 2 }, SSAInfo(2, 4, 4, 4, 1, true) },
     596                    { { "sa", 3 }, SSAInfo(2, 4, 4, 4, 1, true) },
     597                    { { "sa", 4 }, SSAInfo(1, 3, 3, 3, 1, true) },
     598                    { { "sa", 5 }, SSAInfo(1, 3, 3, 3, 1, true) },
     599                    { { "sa", 6 }, SSAInfo(1, 3, 3, 3, 1, true) }
     600                }, false, false, true },
     601            {   // block 2 - routine
     602                48, 60,
     603                { { 3, false }, { 7, false } },
     604                {
     605                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     606                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     607                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     608                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) }
     609                }, false, false, false },
     610            {   // block 3 - loop
     611                60, 64,
     612                { },
     613                {
     614                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     615                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) }
     616                }, false, false, false },
     617            {   // block 4 - l0
     618                64, 68,
     619                { },
     620                {
     621                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     622                    { { "sa", 4 }, SSAInfo(1, 2, 2, 2, 1, true) }
     623                }, false, false, false },
     624            {   // block 5 - l1
     625                68, 76,
     626                { { 3, false }, { 6, false } },
     627                {
     628                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     629                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) }
     630                }, false, false, false },
     631            {   // block 6 - ret
     632                76, 80,
     633                { },
     634                {
     635                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     636                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) }
     637                },
     638                false, true, true },
     639            {   // block 7 - b0, to l0
     640                80, 88,
     641                { { 4, false }, { 8, false } },
     642                {
     643                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     644                    { { "sa", 5 }, SSAInfo(1, 2, 2, 2, 1, true) }
     645                }, false, false, false },
     646            {   // block 8 - jump to l1
     647                88, 96,
     648                { { 5, false } },
     649                {
     650                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     651                    { { "sa", 6 }, SSAInfo(1, 2, 2, 2, 1, true) }
     652                }, false, false, true }
     653        },
     654        {   // SSA replaces
     655            { { "sa", 2 }, { { 3, 2 } } },
     656            { { "sa", 3 }, { { 3, 2 } } },
     657            { { "sa", 4 }, { { 2, 1 } } },
     658            { { "sa", 5 }, { { 2, 1 } } },
     659            { { "sa", 6 }, { { 2, 1 } } }
     660        },
     661        true, ""
     662    },
    535663    { nullptr }
    536664};
Note: See TracChangeset for help on using the changeset viewer.