15 #include "llvm/Config/llvm-config.h"
16 #include "llvm/Support/Debug.h"
18 #define DEBUG_TYPE "spirv-binary-utils"
23 spirv::Version version, uint32_t idBound) {
24 uint32_t majorVersion = 1;
25 uint32_t minorVersion = 0;
27 #define MIN_VERSION_CASE(v) \
28 case spirv::Version::V_1_##v: \
39 #undef MIN_VERSION_CASE
58 header.push_back((majorVersion << 16) | (minorVersion << 8));
60 header.push_back(idBound);
66 assert(((wordCount >> 16) == 0) &&
"word count out of range!");
67 return (wordCount << 16) |
static_cast<uint32_t
>(opcode);
73 size_t encodingSize = literal.size() / 4 + 1;
74 size_t sizeOfDataToCopy = literal.size();
79 sizeOfDataToCopy = (encodingSize - 1) * 4;
80 LLVM_DEBUG(llvm::dbgs()
81 <<
"Truncating string literal to max size ("
84 size_t bufferStartSize = binary.size();
85 binary.resize(bufferStartSize + encodingSize, 0);
86 std::memcpy(binary.data() + bufferStartSize, literal.data(),
#define MIN_VERSION_CASE(v)
void encodeStringLiteralInto(SmallVectorImpl< uint32_t > &binary, StringRef literal)
Encodes an SPIR-V literal string into the given binary vector.
constexpr uint32_t kMaxLiteralWordCount
Max number of words for literal.
constexpr uint32_t kGeneratorNumber
The serializer tool ID registered to the Khronos Group.
constexpr uint32_t kMagicNumber
SPIR-V magic number.
uint32_t getPrefixedOpcode(uint32_t wordCount, spirv::Opcode opcode)
Returns the word-count-prefixed opcode for an SPIR-V instruction.
void appendModuleHeader(SmallVectorImpl< uint32_t > &header, spirv::Version version, uint32_t idBound)
Appends a SPRI-V module header to header with the given version and idBound.
Include the generated interface declarations.