Changeset 3594 in CLRX


Ignore:
Timestamp:
Jan 8, 2018, 5:55:22 PM (10 days ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: force empty block if some jump/calls goes to its. update next createSSAData testcase.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r3593 r3594  
    364364        }
    365365    }
     366    // force empty block at end if some jumps goes to its
     367    if (!codeEnds.empty() && !codeStarts.empty() && !splits.empty() &&
     368        codeStarts.back()==codeEnds.back() && codeStarts.back() == splits.back())
     369        codeBlocks.push_back({ codeStarts.back(), codeStarts.back(), { },
     370                             false, false, false });
    366371   
    367372    // construct flow-graph
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegAlloc.cpp

    r3593 r3594  
    559559        { },
    560560        true, ""
    561     }
     561    },
     562    {   // 15 - switch (empty block at end)
     563        R"ffDXD(
     564            v_mac_f32 v6, v9, v8    # 0
     565            v_xor_b32 v3, v9, v8
     566            .cf_jump j1, j2, j3, j4
     567            s_setpc_b64 s[0:1]
     568           
     569j1:         v_xor_b32 v3, v9, v8    # 12
     570            v_xor_b32 v3, v9, v8
     571            v_xor_b32 v3, v9, v8
     572            s_branch b0
     573
     574j2:         v_xor_b32 v3, v9, v8    # 28
     575            v_xor_b32 v1, v5, v8
     576            v_and_b32 v2, v9, v8
     577            v_xor_b32 v3, v9, v8
     578            s_branch b0
     579
     580j3:         v_xor_b32 v3, v9, v8    # 48
     581            v_xor_b32 v1, v5, v8
     582            s_branch b0
     583
     584j4:         v_xor_b32 v3, v9, v8    # 60
     585            v_xor_b32 v1, v5, v8
     586            v_xor_b32 v1, v5, v8
     587b0:         # 72
     588)ffDXD",
     589        {
     590            { 0, 12,
     591                { { 1, false }, { 2, false }, { 3, false }, { 4, false } },
     592                false, false, true },
     593            { 12, 28, { { 5, false } }, false, false, true },
     594            { 28, 48, { { 5, false } }, false, false, true },
     595            { 48, 60, { { 5, false } }, false, false, true },
     596            { 60, 72, { }, false, false, false },
     597            { 72, 72, { }, false, false, true }
     598        },
     599        true, ""
     600    },
    562601};
    563602
     
    10531092        s_xor_b32 sa[2], sa[1], sa[3]
    10541093.endr
    1055        
    1056         #.cf_jump b1, b2, b3
     1094        s_and_b32 sa[1], sa[2], sa[3]
     1095        s_xor_b32 sa[2], sa[1], sa[3]
     1096        s_xor_b32 sa[2], sa[1], sa[3]
     1097       
     1098        .cf_jump b1, b2, b3
    10571099        s_setpc_b64 s[4:5]
    1058         # block 1, offset - 0
    1059        
     1100       
     1101        # block 1, offset - 124
     1102b1:     s_add_u32 s4, s1, sa[2]
     1103        s_add_u32 sa[4], s2, sa[3]
     1104       
     1105        s_mov_b32 sa[6], s[4]
     1106.rept 3
     1107        s_xor_b32 sa[0], sa[6], sa[3]
     1108        s_and_b32 sa[5], sa[2], sa[3]
     1109        s_and_b32 sa[6], sa[0], sa[5]
     1110.endr
     1111        .cf_jump b11
     1112        s_setpc_b64 s[6:7]
     1113b2:     v_nop
     1114        s_endpgm
     1115b3:     v_nop
     1116        s_endpgm
     1117b11:    s_endpgm
    10601118)ffDXD",
    10611119        {
    1062             { 0, 112,
    1063                 { },
     1120            { 0, 124,
     1121                { { 1, false }, { 2, false }, { 3, false } },
    10641122                {
    10651123                    { { "", 0 }, SSAInfo(0, 0, 0, 0, 0, false) },
     
    10731131                    { { "", 256+2 }, SSAInfo(0, 0, 0, 0, 0, false) },
    10741132                    { { "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 }
     1133                    { { "sa", 1 }, SSAInfo(SIZE_MAX, 0, 0, 5, 6, false) },
     1134                    { { "sa", 2 }, SSAInfo(SIZE_MAX, 0, 0, 6, 7, false) },
     1135                    { { "sa", 3 }, SSAInfo(SIZE_MAX, 0, 0, 4, 5, false) }
     1136                }, false, false, true },
     1137            { 124, 176,
     1138                { { 4, false } },
     1139                {
     1140                    { { "", 1 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1141                    { { "", 2 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1142                    { { "", 4 }, SSAInfo(0, 0, 0, 0, 0, false) },
     1143                    { { "", 6 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1144                    { { "", 7 }, SSAInfo(0, 0, 0, 0, 0, true) },
     1145                    { { "sa", 0 }, SSAInfo(4, 5, 5, 7, 3, false) },
     1146                    { { "sa", 2 }, SSAInfo(6, SIZE_MAX, 7, SIZE_MAX, 0, true) },
     1147                    { { "sa", 3 }, SSAInfo(4, SIZE_MAX, 5, SIZE_MAX, 0, true) },
     1148                    { { "sa", 4 }, SSAInfo(SIZE_MAX, 0, 0, 0, 1, false) },
     1149                    { { "sa", 5 }, SSAInfo(SIZE_MAX, 0, 0, 2, 3, false) },
     1150                    { { "sa", 6 }, SSAInfo(SIZE_MAX, 0, 0, 3, 4, false) }
     1151                }, false, false, true },
     1152            { 176, 184,
     1153                { },
     1154                { }, false, false, true },
     1155            { 184, 192,
     1156                { },
     1157                { }, false, false, true },
     1158            { 192, 196,
     1159                { },
     1160                { }, false, false, true },
    10791161        },
    10801162        { },
Note: See TracChangeset for help on using the changeset viewer.