Ignore:
Timestamp:
Aug 14, 2019, 8:26:28 AM (4 months ago)
Author:
matszpk
Message:

CLRadeonExtender: ROCm: Yet another stuff to ROCm MsgPack? metadata - kernel metadata parsing. Add parseMsgPackValueTypedArrayForMap and use in code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdbin/ROCmBinaries.cpp

    r4888 r4889  
    19961996}
    19971997
     1998template<typename T>
     1999static void parseMsgPackValueTypedArrayForMap(MsgPackMapParser& map, T* out,
     2000                                    size_t elemsNum, cxbyte signess)
     2001{
     2002    MsgPackArrayParser arrParser = map.parseValueArray();
     2003    for (size_t i = 0; i < elemsNum; i++)
     2004        out[i] = arrParser.parseInteger(signess);
     2005    if (arrParser.haveElements())
     2006        throw ParseException("Typed Array has too many elements");
     2007}
     2008
    19982009enum {
    19992010    ROCMMP_KERNEL_ARGS = 0, ROCMMP_KERNEL_DEVICE_ENQUEUE_SYMBOL,
     
    20552066                break;
    20562067            case ROCMMP_KERNEL_LANGUAGE_VERSION:
     2068                parseMsgPackValueTypedArrayForMap(kParser, kernel.langVersion,
     2069                                        2, MSGPACK_WS_UNSIGNED);
    20572070                break;
    20582071            case ROCMMP_KERNEL_MAX_FLAT_WORKGROUP_SIZE:
     
    20682081                break;
    20692082            case ROCMMP_KERNEL_REQD_WORKGROUP_SIZE:
     2083                parseMsgPackValueTypedArrayForMap(kParser, kernel.reqdWorkGroupSize,
     2084                                        3, MSGPACK_WS_UNSIGNED);
    20702085                break;
    20712086            case ROCMMP_KERNEL_SGPR_COUNT:
     
    20912106                break;
    20922107            case ROCMMP_KERNEL_WORKGROUP_SIZE_HINT:
     2108                parseMsgPackValueTypedArrayForMap(kParser, kernel.workGroupSizeHint,
     2109                                        3, MSGPACK_WS_UNSIGNED);
    20932110                break;
    20942111            default:
     2112                kParser.skipValue();
    20952113                break;
    20962114        }
     
    21132131        const CString name = mainMap.parseKeyString();
    21142132        if (name == "amdhsa.version")
    2115         {
    2116             MsgPackArrayParser verArrParser = mainMap.parseValueArray();
    2117             metadataInfo.version[0] = verArrParser.parseInteger(MSGPACK_WS_UNSIGNED);
    2118             metadataInfo.version[1] = verArrParser.parseInteger(MSGPACK_WS_UNSIGNED);
    2119             if (verArrParser.haveElements())
    2120                 throw ParseException("VerArray has too many elements");
    2121         }
     2133            parseMsgPackValueTypedArrayForMap(mainMap, metadataInfo.version,
     2134                                        2, MSGPACK_WS_UNSIGNED);
    21222135        else if (name == "amdhsa.kernels")
    21232136        {
     
    21292142            }
    21302143        }
     2144        else
     2145            mainMap.skipValue();
    21312146    }
    21322147}
Note: See TracChangeset for help on using the changeset viewer.