Changeset 3579 in CLRX


Ignore:
Timestamp:
Jan 1, 2018, 7:13:51 PM (2 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: GCNAsm: Fixed CodeFlow? CALL from S_CALL_B64.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r3578 r3579  
    659659            // add codeflow entry
    660660            if (good)
     661            {
    661662                asmr.sections[asmr.currentSection].addCodeFlowEntry({
    662663                    size_t(asmr.currentOutPos), size_t(value),
    663                     (arch&ARCH_RXVEGA && gcnInsn.code1==21) ? AsmCodeFlowType::CALL :
     664                    (isGCN14 && gcnInsn.code1==21) ? AsmCodeFlowType::CALL :
    664665                            AsmCodeFlowType::CJUMP });
     666            }
    665667        }
    666668    }
     
    40344036            // add codeflow entry
    40354037            addCodeFlowEntry(sectionId, { size_t(offset), size_t(value),
    4036                     insnCode==0xbf82U ? AsmCodeFlowType::JUMP : AsmCodeFlowType::CJUMP });
     4038                    insnCode==0xbf82U ? AsmCodeFlowType::JUMP :
     4039                    // CALL from S_CALL_B64
     4040                    (((insnCode&0xff80)==0xba80 &&
     4041                            (curArchMask&ARCH_RXVEGA)!=0) ? AsmCodeFlowType::CALL :
     4042                                AsmCodeFlowType::CJUMP) });
    40374043            return true;
    40384044        }
  • CLRadeonExtender/trunk/tests/amdasm/AsmCodeFlow.cpp

    r3575 r3579  
    112112            { 64U, 80U, AsmCodeFlowType::CJUMP },
    113113        }, true, ""
    114     }
     114    },
     115    // RX VEGA (CALL)
     116    {
     117        R"ffDXD(.gpu gfx900
     118        .text
     119        v_mov_b32 v3, v1
     120        v_mov_b32 v3, v2
     121label1:
     122        v_mov_b32 v3, v6
     123label2:
     124        v_mov_b32 v3, v2
     125        v_mov_b32 v3, v2
     126        s_branch label1
     127        s_cbranch_vccz label1
     128        s_cbranch_i_fork s[4:5], label1
     129        s_nop 5
     130        s_branch label2
     131        s_cbranch_vccz label2
     132        s_cbranch_i_fork s[6:7], label2
     133        v_mov_b32 v5, v3
     134        v_sub_f32 v6, v2, v1
     135        s_call_b64 s[10:11], label2
     136        s_call_b64 s[10:11], label3
     137        s_cbranch_i_fork s[6:7], label3
     138        v_nop; v_nop; v_nop
     139label3: v_madak_f32 v3, v4, v6, 1.453
     140)ffDXD",
     141        {
     142            { 20U, 8U, AsmCodeFlowType::JUMP },
     143            { 24U, 8U, AsmCodeFlowType::CJUMP },
     144            { 28U, 8U, AsmCodeFlowType::CJUMP },
     145            { 36U, 12U, AsmCodeFlowType::JUMP },
     146            { 40U, 12U, AsmCodeFlowType::CJUMP },
     147            { 44U, 12U, AsmCodeFlowType::CJUMP },
     148            { 56U, 12U, AsmCodeFlowType::CALL },
     149            { 60U, 80U, AsmCodeFlowType::CALL },
     150            { 64U, 80U, AsmCodeFlowType::CJUMP },
     151        }, true, ""
     152    },
    115153};
    116154
Note: See TracChangeset for help on using the changeset viewer.