Changeset 3922 in CLRX


Ignore:
Timestamp:
Mar 22, 2018, 3:34:13 PM (4 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Add new testcase.

File:
1 edited

Legend:

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

    r3921 r3922  
    661661        true, ""
    662662    },
     663    // TODO: incorrect retSSA ids for sa[6]
     664    {   // 3 - routine with loop and jumps to mid in loop
     665        R"ffDXD(.regvar sa:s:8, va:v:8
     666        s_mov_b32 sa[2], s4
     667        s_mov_b32 sa[3], s5
     668        s_mov_b32 sa[4], s6
     669        s_mov_b32 sa[5], s6
     670        s_mov_b32 sa[6], s7
     671       
     672        .cf_call routine
     673        s_swappc_b64 s[0:1], s[2:3]
     674       
     675        s_add_u32 sa[2], sa[2], sa[0]
     676        s_add_u32 sa[3], sa[3], sa[0]
     677        s_add_u32 sa[4], sa[4], sa[0]
     678        s_add_u32 sa[5], sa[5], sa[0]
     679        s_add_u32 sa[6], sa[6], sa[0]
     680        s_endpgm
     681       
     682routine:
     683        s_xor_b32 sa[2], sa[2], sa[0]
     684        s_xor_b32 sa[3], sa[3], sa[1]
     685        s_cbranch_execnz b0
     686       
     687loop:   s_xor_b32 sa[3], sa[3], sa[1]
     688       
     689l0:     s_xor_b32 sa[4], sa[4], sa[0]
     690        s_cbranch_scc0 end1
     691       
     692l1:     s_xor_b32 sa[2], sa[2], sa[0]
     693        s_cbranch_scc0 end2
     694       
     695        s_branch loop
     696       
     697end1:   s_xor_b32 sa[5], sa[5], sa[1]
     698        .cf_ret
     699        s_setpc_b64 s[0:1]
     700       
     701end2:   s_xor_b32 sa[6], sa[6], sa[1]
     702        .cf_ret
     703        s_setpc_b64 s[0:1]
     704
     705b0:     s_xor_b32 sa[5], sa[5], sa[0]
     706        s_cbranch_vccz l0
     707        s_xor_b32 sa[6], sa[6], sa[1]
     708        s_branch l1
     709)ffDXD",
     710        {
     711            {   // block 0 - start
     712                0, 24,
     713                { { 2, true } },
     714                {
     715                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     716                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     717                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     718                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, true) },
     719                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     720                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     721                    { { "", 6 }, SSAInfo(0, 0, 0, 0, 0, true) },
     722                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     723                    { { "sa", 2 }, SSAInfo(0, 1, 1, 1, 1, false) },
     724                    { { "sa", 3 }, SSAInfo(0, 1, 1, 1, 1, false) },
     725                    { { "sa", 4 }, SSAInfo(0, 1, 1, 1, 1, false) },
     726                    { { "sa", 5 }, SSAInfo(0, 1, 1, 1, 1, false) },
     727                    { { "sa", 6 }, SSAInfo(0, 1, 1, 1, 1, false) }
     728                }, true, false, false },
     729            {   // block 1 - end
     730                24, 48,
     731                { },
     732                {
     733                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     734                    { { "sa", 2 }, SSAInfo(2, 4, 4, 4, 1, true) },
     735                    { { "sa", 3 }, SSAInfo(2, 4, 4, 4, 1, true) },
     736                    { { "sa", 4 }, SSAInfo(1, 3, 3, 3, 1, true) },
     737                    { { "sa", 5 }, SSAInfo(1, 4, 4, 4, 1, true) },
     738                    { { "sa", 6 }, SSAInfo(1, 4, 4, 4, 1, true) }
     739                }, false, false, true },
     740            {   // block 2 - routine
     741                48, 60,
     742                { { 3, false }, { 9, false } },
     743                {
     744                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     745                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     746                    { { "sa", 2 }, SSAInfo(1, 2, 2, 2, 1, true) },
     747                    { { "sa", 3 }, SSAInfo(1, 2, 2, 2, 1, true) }
     748                }, false, false, false },
     749            {   // block 3 - loop
     750                60, 64,
     751                { },
     752                {
     753                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     754                    { { "sa", 3 }, SSAInfo(2, 3, 3, 3, 1, true) }
     755                }, false, false, false },
     756            {   // block 4 - l0
     757                64, 72,
     758                { { 5, false }, { 7, false } },
     759                {
     760                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     761                    { { "sa", 4 }, SSAInfo(1, 2, 2, 2, 1, true) }
     762                }, false, false, false },
     763            {   // block 5 - l1
     764                72, 80,
     765                { { 6, false }, { 8, false } },
     766                {
     767                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     768                    { { "sa", 2 }, SSAInfo(2, 3, 3, 3, 1, true) }
     769                }, false, false, false },
     770            {   // block 6 - loop end
     771                80, 84,
     772                { { 3, false } },
     773                { },
     774                false, false, true },
     775            {   // block 7 - end1
     776                84, 92,
     777                { },
     778                {
     779                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     780                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     781                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     782                    { { "sa", 5 }, SSAInfo(1, 2, 2, 2, 1, true) }
     783                }, false, true, true },
     784            {   // block 8 - end2
     785                92, 100,
     786                { },
     787                {
     788                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     789                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     790                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     791                    { { "sa", 6 }, SSAInfo(1, 2, 2, 2, 1, true) }
     792                }, false, true, true },
     793            {   // block 9 - b0
     794                100, 108,
     795                { { 4, false }, { 10, false } },
     796                {
     797                    { { "sa", 0 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     798                    { { "sa", 5 }, SSAInfo(1, 3, 3, 3, 1, true) }
     799                }, false, false, false },
     800            {   // block 10 - to l1
     801                108, 116,
     802                { { 5, false } },
     803                {
     804                    { { "sa", 1 }, SSAInfo(0, SIZE_MAX, 1, SIZE_MAX, 0, true) },
     805                    { { "sa", 6 }, SSAInfo(1, 3, 3, 3, 1, true) }
     806                }, false, false, true }
     807        },
     808        {   // SSA replaces
     809            { { "sa", 2 }, { { 3, 2 } } },
     810            { { "sa", 3 }, { { 3, 2 } } },
     811            { { "sa", 4 }, { { 2, 1 } } },
     812            { { "sa", 5 }, { { 2, 1 }, { 3, 1 } } },
     813            { { "sa", 6 }, { { 2, 1 }, { 3, 1 } } }
     814        },
     815        true, ""
     816    },
    663817    { nullptr }
    664818};
Note: See TracChangeset for help on using the changeset viewer.