compute-runtime/runtime/program/process_spir_binary.cpp

43 lines
924 B
C++

/*
* Copyright (C) 2017-2019 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "program.h"
namespace NEO {
bool Program::isValidSpirvBinary(
const void *pBinary,
size_t binarySize) {
const uint32_t magicWord[2] = {0x03022307, 0x07230203};
bool retVal = false;
if (pBinary && (binarySize > sizeof(uint32_t))) {
if ((memcmp(pBinary, &magicWord[0], sizeof(uint32_t)) == 0) ||
(memcmp(pBinary, &magicWord[1], sizeof(uint32_t)) == 0)) {
retVal = true;
}
}
return retVal;
}
cl_int Program::processSpirBinary(
const void *pBinary,
size_t binarySize,
bool isSpirV) {
programBinaryType = CL_PROGRAM_BINARY_TYPE_INTERMEDIATE;
this->irBinary = makeCopy(pBinary, binarySize);
this->irBinarySize = binarySize;
buildStatus = CL_BUILD_NONE;
this->isSpirV = isSpirV;
return CL_SUCCESS;
}
} // namespace NEO