Changeset 4790 in CLRX


Ignore:
Timestamp:
Jul 15, 2019, 8:53:23 PM (9 months ago)
Author:
matszpk
Message:

CLRadeonExtender: GCNAsm: Preparing GCNAsmHelpers for GFX10. Add 'null' register.

File:
1 edited

Legend:

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

    r4667 r4790  
    171171    if ((rstart >= 128 && rstart <= 208) || (rstart >= 240 && rstart <= 247))
    172172        return true;
    173     return ((arch & ARCH_GCN_1_2_4) != 0 && rstart == 248);
     173    return ((arch & ARCH_GCN_1_2_4_5) != 0 && rstart == 248);
    174174}
    175175
     
    484484   
    485485    /* parse single SGPR */
    486     const bool isGCN14 = (arch & ARCH_GCN_1_4) != 0;
     486    const bool isGCN14 = (arch & ARCH_GCN_1_4_5) != 0;
    487487    const cxuint ttmpSize = isGCN14 ? 16 : 12;
    488488    const cxuint ttmpStart = isGCN14 ? 108 : 112;
     
    557557            regName[0] = 0;
    558558        toLowerString(regName);
     559       
     560        if ((arch & ARCH_GCN_1_5) != 0 && ::strcmp(regName, "null")==0)
     561        {
     562            regPair = { 125, 126 };
     563            return true;
     564        }
    559565       
    560566        size_t loHiRegSuffix = 0;
     
    11341140                             instrOpMask & ~INSTROP_VOP3MODS, regField);
    11351141       
    1136         if ((arch & ARCH_GCN_1_2_4)!=0 &&
     1142        if ((arch & ARCH_GCN_1_2_4_5)!=0 &&
    11371143            (instrOpMask & (INSTROP_NOSEXT|INSTROP_VOP3P))==0 &&
    11381144            linePtr+4 <= end && strncasecmp(linePtr, "sext", 4)==0)
     
    14111417                                return true;
    14121418                            case 0x3e22f983: // 1/(2*PI)
    1413                                 if (arch&ARCH_GCN_1_2_4)
     1419                                if (arch&ARCH_GCN_1_2_4_5)
    14141420                                {
    14151421                                    operand.range = { 248, 0 };
     
    14641470                                return true;
    14651471                            case 0x3118: // 1/(2*PI)
    1466                                 if (arch&ARCH_GCN_1_2_4)
     1472                                if (arch&ARCH_GCN_1_2_4_5)
    14671473                                {
    14681474                                    operand.range = { 248, 0 };
     
    15021508                                return true;
    15031509                            case 0x3e22f983: // 1/(2*PI)
    1504                                 if (arch&ARCH_GCN_1_2_4)
     1510                                if (arch&ARCH_GCN_1_2_4_5)
    15051511                                {
    15061512                                    operand.range = { 248, 0 };
     
    15401546                                return true;
    15411547                            case 0x3fc45f30: // 1/(2*PI)
    1542                                 if (arch&ARCH_GCN_1_2_4)
     1548                                if (arch&ARCH_GCN_1_2_4_5)
    15431549                                {
    15441550                                    operand.range = { 248, 0 };
     
    19231929                        good = false;
    19241930                }
    1925                 else if (!vop3p &&(arch & ARCH_GCN_1_2_4) &&
     1931                else if (!vop3p &&(arch & ARCH_GCN_1_2_4_5) &&
    19261932                        (flags & PARSEVOP_WITHSEXT)!=0 &&
    19271933                         modOperands>1 && ::strcmp(mod, "sext")==0)
     
    24772483    const bool vopDPP = (haveDppCtrl || haveBoundCtrl || haveBankMask || haveRowMask ||
    24782484            haveDPP);
    2479     const bool isGCN14 = (arch & ARCH_GCN_1_4) != 0;
     2485    const bool isGCN14 = (arch & ARCH_GCN_1_4_5) != 0;
    24802486    // mul/div modifier does not apply to vop3 if RXVEGA (this case will be checked later)
    24812487    const bool vop3 = (mods & ((isGCN14 ? 0 : 3)|VOP3_VOP3))!=0 ||
Note: See TracChangeset for help on using the changeset viewer.