Changeset 3593 in CLRX


Ignore:
Timestamp:
Jan 8, 2018, 4:10:29 PM (5 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Do not set readBeforeWrite if read after write for registers.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r3592 r3593  
    712712                if ((rvu.rwFlags & ASMRVU_READ) != 0 && sinfo.ssaIdChange == 0)
    713713                    sinfo.readBeforeWrite = true;
    714                 if (rvu.regVar!=nullptr && rvu.rwFlags == ASMRVU_WRITE &&
    715                             rvu.regField!=ASMFIELD_NONE)
     714                if (rvu.rwFlags == ASMRVU_WRITE && rvu.regField!=ASMFIELD_NONE)
    716715                    sinfo.ssaIdChange++;
    717716                if (rvu.regVar==nullptr)
     
    761760                {
    762761                    if (ssaEntry.first.regVar==nullptr)
     762                    {
     763                        ssaEntry.second.ssaIdChange = 0; // zeroing SSA changes
    763764                        continue; // no change for registers
     765                    }
    764766                   
    765767                    size_t& ssaId = curSSAIdMap[ssaEntry.first];
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc.cpp

    r3592 r3593  
    10271027    },
    10281028    {   /* 4 - empty! */
     1029        ".regvar sa:s:8, va:v:12, vb:v:10\n",
     1030        { },
     1031        { },
     1032        true, ""
     1033    },
     1034    {   /* 5 - longer blocks (tree) */
    10291035        R"ffDXD(.regvar sa:s:8, va:v:12, vb:v:10
     1036        # block 0, offset - 0
     1037        s_mov_b32 s0, 0x11
     1038        s_mov_b32 s1, 0x11
     1039        s_mov_b64 s[2:3], 3344
     1040        v_mov_b32 v1, v0
     1041        v_add_f32 v2, v1, v0
     1042        v_and_b32 v1, v1, v2
     1043       
     1044        s_mov_b32 sa[0], 1
     1045        s_mov_b32 sa[1], 1
     1046        s_mov_b32 sa[2], 1
     1047        s_mov_b32 sa[3], 1
     1048       
     1049.rept 4
     1050        s_xor_b32 sa[0], sa[1], sa[3]
     1051        s_and_b32 sa[1], sa[2], sa[3]
     1052        s_xor_b32 sa[3], sa[0], sa[2]
     1053        s_xor_b32 sa[2], sa[1], sa[3]
     1054.endr
     1055       
     1056        #.cf_jump b1, b2, b3
     1057        s_setpc_b64 s[4:5]
     1058        # block 1, offset - 0
     1059       
    10301060)ffDXD",
    10311061        {
     1062            { 0, 112,
     1063                { },
     1064                {
     1065                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1066                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1067                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1068                    { { "", 3 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1069                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1070                    { { "", 5 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1071                    { { "", 256+0 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1072                    { { "", 256+1 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1073                    { { "", 256+2 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1074                    { { "sa", 0 }, SSAInfo(SIZE_MAX, 0, 0, 4, 5, false) },
     1075                    { { "sa", 1 }, SSAInfo(SIZE_MAX, 0, 0, 4, 5, false) },
     1076                    { { "sa", 2 }, SSAInfo(SIZE_MAX, 0, 0, 4, 5, false) },
     1077                    { { "sa", 3 }, SSAInfo(SIZE_MAX, 0, 0, 4, 5, false) },
     1078                }, false, false, true }
    10321079        },
    10331080        { },
Note: See TracChangeset for help on using the changeset viewer.