1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
/*========================== begin_copyright_notice ============================
Copyright (C) 2021 Intel Corporation
SPDX-License-Identifier: MIT
============================= end_copyright_notice ===========================*/
#ifndef VC_BIF_WRAPPER_H
#define VC_BIF_WRAPPER_H
#include "vc/BiF/RawData.h"
#include <llvm/ADT/StringRef.h>
namespace vc {
namespace bif {
enum class RawKind {
PrintfCM32,
PrintfCM64,
PrintfOCL32,
PrintfOCL64,
PrintfZE32,
PrintfZE64,
Emulation,
SPIRVBuiltins
};
inline llvm::StringRef getPrintfCM32RawData() {
// FIXME: write a module for cmrt printf.
return "";
}
inline llvm::StringRef getPrintfCM64RawData() {
// FIXME: write a module for cmrt printf.
return "";
}
inline llvm::StringRef getPrintfOCL32RawData() {
return {reinterpret_cast<char *>(VCBiFPrintfOCL32RawData),
VCBiFPrintfOCL32RawData_size};
}
inline llvm::StringRef getPrintfOCL64RawData() {
return {reinterpret_cast<char *>(VCBiFPrintfOCL64RawData),
VCBiFPrintfOCL64RawData_size};
}
inline llvm::StringRef getPrintfZE32RawData() {
return {reinterpret_cast<char *>(VCBiFPrintfZE32RawData),
VCBiFPrintfZE32RawData_size};
}
inline llvm::StringRef getPrintfZE64RawData() {
return {reinterpret_cast<char *>(VCBiFPrintfZE64RawData),
VCBiFPrintfZE64RawData_size};
}
inline llvm::StringRef getVCEmulationRawData(llvm::StringRef CPUStr) {
return getVCEmulation64RawDataImpl(CPUStr);
}
inline llvm::StringRef getSPIRVBuiltinsRawData() {
return {reinterpret_cast<char *>(VCSPIRVBuiltins64RawData),
VCSPIRVBuiltins64RawData_size};
}
template <enum RawKind> llvm::StringRef getRawData();
template <enum RawKind>
llvm::StringRef getRawDataForArch(llvm::StringRef CPUStr);
template <>
llvm::StringRef getRawDataForArch<RawKind::Emulation>(llvm::StringRef CPUStr) {
return getVCEmulationRawData(CPUStr);
}
template<>
llvm::StringRef getRawData<RawKind::PrintfOCL32>() {
return getPrintfOCL32RawData();
}
template<>
llvm::StringRef getRawData<RawKind::PrintfOCL64>() {
return getPrintfOCL64RawData();
}
template <> llvm::StringRef getRawData<RawKind::PrintfZE32>() {
return getPrintfZE32RawData();
}
template <> llvm::StringRef getRawData<RawKind::PrintfZE64>() {
return getPrintfZE64RawData();
}
template <> llvm::StringRef getRawData<RawKind::PrintfCM32>() {
return getPrintfCM32RawData();
}
template <> llvm::StringRef getRawData<RawKind::PrintfCM64>() {
return getPrintfCM64RawData();
}
template <> llvm::StringRef getRawData<RawKind::SPIRVBuiltins>() {
return getSPIRVBuiltinsRawData();
}
} // namespace bif
} // namespace vc
#endif
|