Changeset 2593 in CLRX


Ignore:
Timestamp:
Nov 28, 2016, 7:16:49 AM (3 years ago)
Author:
matszpk
Message:

CLRadeonExtender: Asm: Move parsring of dimensions to AsmParseUtils?.

Location:
CLRadeonExtender/trunk/amdasm
Files:
6 edited

Legend:

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

    r2513 r2593  
    874874{
    875875    Assembler& asmr = handler.assembler;
    876     const char* end = asmr.line + asmr.lineSize;
    877876    if (asmr.currentKernel==ASMKERN_GLOBAL || asmr.currentKernel==ASMKERN_INNER ||
    878877        asmr.sections[asmr.currentSection].type != AsmSectionType::CONFIG)
     
    881880        return;
    882881    }
    883     skipSpacesToEnd(linePtr, end);
    884     const char* dimPlace = linePtr;
    885     char buf[10];
    886882    cxuint dimMask = 0;
    887     if (getNameArg(asmr, 10, buf, linePtr, "dimension set", false))
    888     {
    889         toLowerString(buf);
    890         for (cxuint i = 0; buf[i]!=0; i++)
    891             if (buf[i]=='x')
    892                 dimMask |= 1;
    893             else if (buf[i]=='y')
    894                 dimMask |= 2;
    895             else if (buf[i]=='z')
    896                 dimMask |= 4;
    897             else
    898             {
    899                 asmr.printError(dimPlace, "Unknown dimension type");
    900                 return;
    901             }
    902     }
    903     else // error
     883    if (!parseDimensions(asmr, linePtr, dimMask))
    904884        return;
    905885    if (!checkGarbagesAtEnd(asmr, linePtr))
  • CLRadeonExtender/trunk/amdasm/AsmAmdFormat.cpp

    r2390 r2593  
    10971097{
    10981098    Assembler& asmr = handler.assembler;
    1099     const char* end = asmr.line + asmr.lineSize;
    11001099    if (asmr.currentKernel==ASMKERN_GLOBAL ||
    11011100        asmr.sections[asmr.currentSection].type != AsmSectionType::CONFIG)
     
    11041103        return;
    11051104    }
    1106     skipSpacesToEnd(linePtr, end);
    1107     const char* dimPlace = linePtr;
    1108     char buf[10];
    11091105    cxuint dimMask = 0;
    1110     if (getNameArg(asmr, 10, buf, linePtr, "dimension set", false))
    1111     {
    1112         toLowerString(buf);
    1113         for (cxuint i = 0; buf[i]!=0; i++)
    1114             if (buf[i]=='x')
    1115                 dimMask |= 1;
    1116             else if (buf[i]=='y')
    1117                 dimMask |= 2;
    1118             else if (buf[i]=='z')
    1119                 dimMask |= 4;
    1120             else
    1121             {
    1122                 asmr.printError(dimPlace, "Unknown dimension type");
    1123                 return;
    1124             }
    1125     }
    1126     else // error
     1106    if (!parseDimensions(asmr, linePtr, dimMask))
    11271107        return;
    11281108    if (!checkGarbagesAtEnd(asmr, linePtr))
  • CLRadeonExtender/trunk/amdasm/AsmGalliumFormat.cpp

    r2582 r2593  
    298298{
    299299    Assembler& asmr = handler.assembler;
    300     const char* end = asmr.line + asmr.lineSize;
    301300    if (asmr.currentKernel==ASMKERN_GLOBAL ||
    302301        handler.inside != AsmGalliumHandler::Inside::CONFIG)
     
    305304        return;
    306305    }
    307     skipSpacesToEnd(linePtr, end);
    308     const char* dimPlace = linePtr;
    309     char buf[10];
    310306    cxuint dimMask = 0;
    311     if (getNameArg(asmr, 10, buf, linePtr, "dimension set", false))
    312     {
    313         toLowerString(buf);
    314         for (cxuint i = 0; buf[i]!=0; i++)
    315             if (buf[i]=='x')
    316                 dimMask |= 1;
    317             else if (buf[i]=='y')
    318                 dimMask |= 2;
    319             else if (buf[i]=='z')
    320                 dimMask |= 4;
    321             else
    322             {
    323                 asmr.printError(dimPlace, "Unknown dimension type");
    324                 return;
    325             }
    326     }
    327     else // error
     307    if (!parseDimensions(asmr, linePtr, dimMask))
    328308        return;
    329309    if (!checkGarbagesAtEnd(asmr, linePtr))
  • CLRadeonExtender/trunk/amdasm/AsmInternals.h

    r2588 r2593  
    141141    // skip comma for multiple argument pseudo-ops
    142142    static bool skipCommaForMultipleArgs(Assembler& asmr, const char*& linePtr);
     143   
     144    static bool parseDimensions(Assembler& asmr, const char*& linePtr, cxuint& dimMask);
    143145};
    144146
  • CLRadeonExtender/trunk/amdasm/AsmROCmFormat.cpp

    r2592 r2593  
    628628{
    629629    Assembler& asmr = handler.assembler;
    630     const char* end = asmr.line + asmr.lineSize;
    631630    if (asmr.currentKernel==ASMKERN_GLOBAL ||
    632631        asmr.sections[asmr.currentSection].type != AsmSectionType::CONFIG)
     
    635634        return;
    636635    }
    637     skipSpacesToEnd(linePtr, end);
    638     const char* dimPlace = linePtr;
    639     char buf[10];
    640636    cxuint dimMask = 0;
    641     if (getNameArg(asmr, 10, buf, linePtr, "dimension set", false))
    642     {
    643         toLowerString(buf);
    644         for (cxuint i = 0; buf[i]!=0; i++)
    645             if (buf[i]=='x')
    646                 dimMask |= 1;
    647             else if (buf[i]=='y')
    648                 dimMask |= 2;
    649             else if (buf[i]=='z')
    650                 dimMask |= 4;
    651             else
    652             {
    653                 asmr.printError(dimPlace, "Unknown dimension type");
    654                 return;
    655             }
    656     }
    657     else // error
     637    if (!parseDimensions(asmr, linePtr, dimMask))
    658638        return;
    659639    if (!checkGarbagesAtEnd(asmr, linePtr))
  • CLRadeonExtender/trunk/amdasm/Assembler.cpp

    r2582 r2593  
    372372    }
    373373    return false;
     374}
     375
     376bool AsmParseUtils::parseDimensions(Assembler& asmr, const char*& linePtr, cxuint& dimMask)
     377{
     378    const char* end = asmr.line + asmr.lineSize;
     379    skipSpacesToEnd(linePtr, end);
     380    const char* dimPlace = linePtr;
     381    char buf[10];
     382    dimMask = 0;
     383    if (getNameArg(asmr, 10, buf, linePtr, "dimension set", false))
     384    {
     385        toLowerString(buf);
     386        for (cxuint i = 0; buf[i]!=0; i++)
     387            if (buf[i]=='x')
     388                dimMask |= 1;
     389            else if (buf[i]=='y')
     390                dimMask |= 2;
     391            else if (buf[i]=='z')
     392                dimMask |= 4;
     393            else
     394            {
     395                asmr.printError(dimPlace, "Unknown dimension type");
     396                return false;
     397            }
     398    }
     399    else // error
     400        return false;
     401    return true;
    374402}
    375403
Note: See TracChangeset for help on using the changeset viewer.