Changeset 4725 in CLRX


Ignore:
Timestamp:
Jul 3, 2019, 3:09:23 PM (9 months ago)
Author:
matszpk
Message:

CLRadeonExtender: GCNDisasm: Change testcases for VOP DPP for GFX10. First stuff of new VOP DPP for GFX10.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r4723 r4725  
    11011101};
    11021102
     1103static const char* dppCtrl130GFX10Tbl[] =
     1104{
     1105    nullptr, nullptr, nullptr, nullptr,
     1106    nullptr, nullptr, nullptr, nullptr,
     1107    nullptr, nullptr, nullptr, nullptr,
     1108    nullptr, nullptr, nullptr, nullptr,
     1109    " row_mirror", " row_half_mirror", nullptr, nullptr
     1110};
     1111
     1112
    11031113/* returns mask of abs,neg,sext for src0 and src1 argument and src0 register */
    11041114static inline VOPExtraWordOut decodeVOPDPPFlags(uint32_t insnCode2)
     
    11091119}
    11101120
    1111 static void decodeVOPDPP(FastOutputBuffer& output, uint32_t insnCode2,
     1121static void decodeVOPDPP(FastOutputBuffer& output, GPUArchMask arch, uint32_t insnCode2,
    11121122        bool src0Used, bool src1Used)
    11131123{
     
    11151125    char* bufPtr = bufStart;
    11161126    const cxuint dppCtrl = (insnCode2>>8)&0x1ff;
     1127    const bool isGCN15 = (arch&ARCH_GCN_1_5)!=0;
     1128   
     1129    const char** dppCtrl130TblPtr = isGCN15 ? dppCtrl130GFX10Tbl : dppCtrl130Tbl;
    11171130   
    11181131    if (dppCtrl<256)
     
    11411154        putByteToBuf(dppCtrl&0xf, bufPtr);
    11421155    }
    1143     else if (dppCtrl >= 0x130 && dppCtrl <= 0x143 && dppCtrl130Tbl[dppCtrl-0x130]!=nullptr)
     1156    else if (dppCtrl >= 0x130 && dppCtrl <= 0x143 && dppCtrl130TblPtr[dppCtrl-0x130]!=nullptr)
    11441157        // print other dpp modifier
    1145         putChars(bufPtr, dppCtrl130Tbl[dppCtrl-0x130],
    1146                  ::strlen(dppCtrl130Tbl[dppCtrl-0x130]));
     1158        putChars(bufPtr, dppCtrl130TblPtr[dppCtrl-0x130],
     1159                 ::strlen(dppCtrl130TblPtr[dppCtrl-0x130]));
    11471160    // otherwise print value of dppctrl (illegal value)
    11481161    else if (dppCtrl != 0x100)
     
    12611274            decodeVOPSDWA(output, arch, literal, true, true, true);
    12621275        else if (src0Field == 0xfa)
    1263             decodeVOPDPP(output, literal, true, true);
     1276            decodeVOPDPP(output, arch, literal, true, true);
    12641277    }
    12651278}
     
    13481361            decodeVOPSDWA(output, arch, literal, argsUsed, false);
    13491362        else if (src0Field == 0xfa)
    1350             decodeVOPDPP(output, literal, argsUsed, false);
     1363            decodeVOPDPP(output, arch, literal, argsUsed, false);
    13511364    }
    13521365}
     
    14641477            decodeVOPSDWA(output, arch, literal, true, true);
    14651478        else if (src0Field == 0xfa)
    1466             decodeVOPDPP(output, literal, true, true);
     1479            decodeVOPDPP(output, arch, literal, true, true);
    14671480    }
    14681481}
  • CLRadeonExtender/trunk/tests/amdasm/GCNDisasmOpc15.cpp

    r4724 r4725  
    14301430            "src0_sel:word0 src1_sel:word0\n" },
    14311431    // VOP DPP encoding
    1432     { 0x0334d6faU, 0xbe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1432    { 0x0734d6faU, 0xbe, true, "        v_add_f32       v154, v190, v107 "
    14331433        "quad_perm:[0,0,0,0] bank_mask:0 row_mask:0\n" },
    1434     { 0x0334d6faU, 0x72be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1434    { 0x0734d6faU, 0x72be, true, "        v_add_f32       v154, v190, v107 "
    14351435        "quad_perm:[2,0,3,1] bank_mask:0 row_mask:0\n" },
    1436     { 0x0334d6faU, 0xb4be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1436    { 0x0734d6faU, 0xb4be, true, "        v_add_f32       v154, v190, v107 "
    14371437        "quad_perm:[0,1,3,2] bank_mask:0 row_mask:0\n" },
    1438     { 0x0334d6faU, 0x100be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1438    { 0x0734d6faU, 0x100be, true, "        v_add_f32       v154, v190, v107 "
    14391439        "bank_mask:0 row_mask:0\n" },
    1440     { 0x0334d6faU, 0x101be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1440    { 0x0734d6faU, 0x101be, true, "        v_add_f32       v154, v190, v107 "
    14411441        "row_shl:1 bank_mask:0 row_mask:0\n" },
    1442     { 0x0334d6faU, 0x102be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1442    { 0x0734d6faU, 0x102be, true, "        v_add_f32       v154, v190, v107 "
    14431443        "row_shl:2 bank_mask:0 row_mask:0\n" },
    1444     { 0x0334d6faU, 0x105be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1444    { 0x0734d6faU, 0x105be, true, "        v_add_f32       v154, v190, v107 "
    14451445        "row_shl:5 bank_mask:0 row_mask:0\n" },
    1446     { 0x0334d6faU, 0x106be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1446    { 0x0734d6faU, 0x106be, true, "        v_add_f32       v154, v190, v107 "
    14471447        "row_shl:6 bank_mask:0 row_mask:0\n" },
    1448     { 0x0334d6faU, 0x10abe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1448    { 0x0734d6faU, 0x10abe, true, "        v_add_f32       v154, v190, v107 "
    14491449        "row_shl:10 bank_mask:0 row_mask:0\n" },
    1450     { 0x0334d6faU, 0x10dbe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1450    { 0x0734d6faU, 0x10dbe, true, "        v_add_f32       v154, v190, v107 "
    14511451        "row_shl:13 bank_mask:0 row_mask:0\n" },
    1452     { 0x0334d6faU, 0x10fbe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1452    { 0x0734d6faU, 0x10fbe, true, "        v_add_f32       v154, v190, v107 "
    14531453        "row_shl:15 bank_mask:0 row_mask:0\n" },
    1454     { 0x0334d6faU, 0x110be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1454    { 0x0734d6faU, 0x110be, true, "        v_add_f32       v154, v190, v107 "
    14551455        "dppctrl:0x110 bank_mask:0 row_mask:0\n" },
    1456     { 0x0334d6faU, 0x11abe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1456    { 0x0734d6faU, 0x11abe, true, "        v_add_f32       v154, v190, v107 "
    14571457        "row_shr:10 bank_mask:0 row_mask:0\n" },
    1458     { 0x0334d6faU, 0x120be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1458    { 0x0734d6faU, 0x120be, true, "        v_add_f32       v154, v190, v107 "
    14591459        "dppctrl:0x120 bank_mask:0 row_mask:0\n" },
    1460     { 0x0334d6faU, 0x12abe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1460    { 0x0734d6faU, 0x12abe, true, "        v_add_f32       v154, v190, v107 "
    14611461        "row_ror:10 bank_mask:0 row_mask:0\n" },
    1462     { 0x0334d6faU, 0x12fbe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1462    { 0x0734d6faU, 0x12fbe, true, "        v_add_f32       v154, v190, v107 "
    14631463        "row_ror:15 bank_mask:0 row_mask:0\n" },
    1464     { 0x0334d6faU, 0x130be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
    1465         "wave_shl bank_mask:0 row_mask:0\n" },
    1466     { 0x0334d6faU, 0x131be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1464    { 0x0734d6faU, 0x130be, true, "        v_add_f32       v154, v190, v107 "
     1465        "dppctrl:0x130 bank_mask:0 row_mask:0\n" },
     1466    { 0x0734d6faU, 0x131be, true, "        v_add_f32       v154, v190, v107 "
    14671467        "dppctrl:0x131 bank_mask:0 row_mask:0\n" },
    1468     { 0x0334d6faU, 0x134be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
    1469         "wave_rol bank_mask:0 row_mask:0\n" },
    1470     { 0x0334d6faU, 0x136be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1468    { 0x0734d6faU, 0x134be, true, "        v_add_f32       v154, v190, v107 "
     1469        "dppctrl:0x134 bank_mask:0 row_mask:0\n" },
     1470    { 0x0734d6faU, 0x136be, true, "        v_add_f32       v154, v190, v107 "
    14711471        "dppctrl:0x136 bank_mask:0 row_mask:0\n" },
    1472     { 0x0334d6faU, 0x138be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
    1473         "wave_shr bank_mask:0 row_mask:0\n" },
    1474     { 0x0334d6faU, 0x13ebe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1472    { 0x0734d6faU, 0x138be, true, "        v_add_f32       v154, v190, v107 "
     1473        "dppctrl:0x138 bank_mask:0 row_mask:0\n" },
     1474    { 0x0734d6faU, 0x13ebe, true, "        v_add_f32       v154, v190, v107 "
    14751475        "dppctrl:0x13e bank_mask:0 row_mask:0\n" },
    1476     { 0x0334d6faU, 0x13cbe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
    1477         "wave_ror bank_mask:0 row_mask:0\n" },
    1478     { 0x0334d6faU, 0x140be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1476    { 0x0734d6faU, 0x13cbe, true, "        v_add_f32       v154, v190, v107 "
     1477        "dppctrl:0x13c bank_mask:0 row_mask:0\n" },
     1478    { 0x0734d6faU, 0x140be, true, "        v_add_f32       v154, v190, v107 "
    14791479        "row_mirror bank_mask:0 row_mask:0\n" },
    1480     { 0x0334d6faU, 0x141be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1480    { 0x0734d6faU, 0x141be, true, "        v_add_f32       v154, v190, v107 "
    14811481        "row_half_mirror bank_mask:0 row_mask:0\n" },
    1482     { 0x0334d6faU, 0x142be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
    1483         "row_bcast15 bank_mask:0 row_mask:0\n" },
    1484     { 0x0334d6faU, 0x143be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
    1485         "row_bcast31 bank_mask:0 row_mask:0\n" },
    1486     { 0x0334d6faU, 0x14dbe, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1482    { 0x0734d6faU, 0x142be, true, "        v_add_f32       v154, v190, v107 "
     1483        "dppctrl:0x142 bank_mask:0 row_mask:0\n" },
     1484    { 0x0734d6faU, 0x143be, true, "        v_add_f32       v154, v190, v107 "
     1485        "dppctrl:0x143 bank_mask:0 row_mask:0\n" },
     1486    { 0x0734d6faU, 0x14dbe, true, "        v_add_f32       v154, v190, v107 "
    14871487        "dppctrl:0x14d bank_mask:0 row_mask:0\n" },
    1488     { 0x0334d6faU, 0x193be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1488    { 0x0734d6faU, 0x193be, true, "        v_add_f32       v154, v190, v107 "
    14891489        "dppctrl:0x193 bank_mask:0 row_mask:0\n" },
    1490     { 0x0334d6faU, 0x872be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1490    { 0x0734d6faU, 0x872be, true, "        v_add_f32       v154, v190, v107 "
    14911491        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
    1492     { 0x0334d6faU, 0x872be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1492    { 0x0734d6faU, 0x872be, true, "        v_add_f32       v154, v190, v107 "
    14931493        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
    1494     { 0x0334d6faU, 0x1872be, true, "        v_cndmask_b32   v154, -v190, v107, vcc "
     1494    { 0x0734d6faU, 0x1872be, true, "        v_add_f32       v154, -v190, v107 "
    14951495        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
    1496     { 0x0334d6faU, 0x2872be, true, "        v_cndmask_b32   v154, abs(v190), v107, vcc "
     1496    { 0x0734d6faU, 0x2872be, true, "        v_add_f32       v154, abs(v190), v107 "
    14971497        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
    1498     { 0x0334d6faU, 0x3872be, true, "        v_cndmask_b32   v154, -abs(v190), v107, vcc "
     1498    { 0x0734d6faU, 0x3872be, true, "        v_add_f32       v154, -abs(v190), v107 "
    14991499        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
    1500     { 0x0334d6faU, 0x4872be, true, "        v_cndmask_b32   v154, v190, -v107, vcc "
     1500    { 0x0734d6faU, 0x4872be, true, "        v_add_f32       v154, v190, -v107 "
    15011501        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
    1502     { 0x0334d6faU, 0x8872be, true, "        v_cndmask_b32   v154, v190, abs(v107), vcc "
     1502    { 0x0734d6faU, 0x8872be, true, "        v_add_f32       v154, v190, abs(v107) "
    15031503        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
    1504     { 0x0334d6faU, 0xc872be, true, "        v_cndmask_b32   v154, v190, -abs(v107), vcc "
     1504    { 0x0734d6faU, 0xc872be, true, "        v_add_f32       v154, v190, -abs(v107) "
    15051505        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
    1506     { 0x0334d6faU, 0x10072be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1506    { 0x0734d6faU, 0x10072be, true, "        v_add_f32       v154, v190, v107 "
    15071507        "quad_perm:[2,0,3,1] bank_mask:1 row_mask:0\n" },
    1508     { 0x0334d6faU, 0xe0072be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1508    { 0x0734d6faU, 0xe0072be, true, "        v_add_f32       v154, v190, v107 "
    15091509        "quad_perm:[2,0,3,1] bank_mask:14 row_mask:0\n" },
    1510     { 0x0334d6faU, 0x100072be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1510    { 0x0734d6faU, 0x100072be, true, "        v_add_f32       v154, v190, v107 "
    15111511        "quad_perm:[2,0,3,1] bank_mask:0 row_mask:1\n" },
    1512     { 0x0334d6faU, 0xd00072be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1512    { 0x0734d6faU, 0xd00072be, true, "        v_add_f32       v154, v190, v107 "
    15131513        "quad_perm:[2,0,3,1] bank_mask:0 row_mask:13\n" },
    1514     { 0x0334d6faU, 0x101be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1514    { 0x0734d6faU, 0x101be, true, "        v_add_f32       v154, v190, v107 "
    15151515        "row_shl:1 bank_mask:0 row_mask:0\n" },
    1516     { 0x0334d6faU, 0x102be, true, "        v_cndmask_b32   v154, v190, v107, vcc "
     1516    { 0x0734d6faU, 0x102be, true, "        v_add_f32       v154, v190, v107 "
    15171517        "row_shl:2 bank_mask:0 row_mask:0\n" },
     1518    /* VOPC DPP */
     1519    { 0x7def92faU, 0x3872be, true,
     1520        "        v_cmpx_tru_u64  -abs(v[190:191]), v[201:202] "
     1521        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
     1522    { 0x7def92faU, 0xc872be, true,
     1523        "        v_cmpx_tru_u64  v[190:191], -abs(v[201:202]) "
     1524        "quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0\n" },
     1525    /* VOP1 DPP */
     1526    { 0x7e0000faU, 0x3872be, true, "        v_nop           "
     1527        "src0=0xfa quad_perm:[2,0,3,1] bound_ctrl bank_mask:0 row_mask:0 neg0 abs0\n" },
     1528    /* GFX10 specific DPP controls */
    15181529    { 0, 0, false, nullptr }
    15191530};
Note: See TracChangeset for help on using the changeset viewer.