Changeset 3558 in CLRX


Ignore:
Timestamp:
Dec 24, 2017, 12:09:14 PM (6 months ago)
Author:
matszpk
Message:

CLRadeonExtender: Typos in AmdBinLoading?. Correct passing by two fields in pointer argument (DisasmAmd?).
Detect constness by 'RW'/'RO' field in pointer argument (AmdBinaries?).

Location:
CLRadeonExtender/trunk
Files:
3 edited

Legend:

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

    r3457 r3558  
    549549            const char* typeNameEnd = nextPtr;
    550550            ptr = nextPtr;
    551             ptr += 5; // to argOffset
     551            //ptr += 5; // to argOffset
     552            ptr++;
     553            ptr = strechr(ptr, lineEnd, ':');
     554            ptr++;
     555            ptr = strechr(ptr, lineEnd, ':');
     556            ptr++;
    552557            ptr = strechr(ptr, lineEnd, ':');
    553558            if (ptr==nullptr)
  • CLRadeonExtender/trunk/amdbin/AmdBinaries.cpp

    r3457 r3558  
    829829            else //if not match
    830830                throw ParseException(lineNo, "Unknown pointer type");
    831             /* skip RW */
     831           
    832832            tokPtr = kptr;
    833             for (cxuint k = 0; k < 3; k++) // // skip three fields
     833            for (cxuint k = 0; k < 2; k++) // // skip two fields
    834834            {
    835835                while (tokPtr < kend && *tokPtr != ':' && *tokPtr != '\n') tokPtr++;
     
    838838                tokPtr++;
    839839            }
     840            // RO/RW
     841            kptr = tokPtr;
     842            while (tokPtr < kend && *tokPtr != ':' && *tokPtr != '\n') tokPtr++;
     843            if (tokPtr >= kend || *tokPtr =='\n')
     844                throw ParseException(lineNo, "No separator after access qualifier");
     845            if (kptr+3 <= kend && *kptr=='R' && kptr[1]=='O' && kptr[2]==':' &&
     846                argIt->second.ptrSpace==KernelPtrSpace::GLOBAL)
     847                argIt->second.ptrAccess |= KARG_PTR_CONST;
     848            else if (kptr+3 <= kend && *kptr=='R' && kptr[1]=='W' && kptr[2]==':')
     849                argIt->second.ptrAccess |= KARG_PTR_NORMAL;
    840850            /* volatile specifier */
    841             kptr = tokPtr;
     851            kptr = ++tokPtr;
    842852            if (kptr+2 <= kend && kptr[1] == ':' && (*kptr == '0' || *kptr == '1'))
    843853            {
  • CLRadeonExtender/trunk/tests/amdbin/AmdBinLoading.cpp

    r3435 r3558  
    485485        assertValue(testName, caseName+" ptrAccess", expKernelArgs[i].ptrAccess,
    486486                    argInfos[i].ptrAccess);
    487         assertValue(testName, caseName+" ptrAccess", expKernelArgs[i].argName,
     487        assertValue(testName, caseName+" argName", expKernelArgs[i].argName,
    488488                    argInfos[i].argName);
    489         assertValue(testName, caseName+" ptrAccess", expKernelArgs[i].typeName,
     489        assertValue(testName, caseName+" typeName", expKernelArgs[i].typeName,
    490490                    argInfos[i].typeName);
    491491    }
Note: See TracChangeset for help on using the changeset viewer.