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
|
/*========================== begin_copyright_notice ============================
Copyright (C) 2020-2021 Intel Corporation
SPDX-License-Identifier: MIT
============================= end_copyright_notice ===========================*/
#ifndef VC_SUPPORT_STATUSTRAITS_H
#define VC_SUPPORT_STATUSTRAITS_H
#include "vc/Support/StatusCode.h"
#include "llvm/ADT/StringRef.h"
namespace vc {
// There should be specialization for every error code listed in errc.
// Specialization should define:
// * llvm::StringRef getMessage() // return description for error
template <errc Code> struct ErrorTraits;
template <> struct ErrorTraits<errc::dynamic_load_fail> {
static llvm::StringRef getMessage() {
return "failed to load dynamic library";
}
};
template <> struct ErrorTraits<errc::symbol_not_found> {
static llvm::StringRef getMessage() { return "symbol lookup error"; }
};
template <> struct ErrorTraits<errc::bad_spirv> {
static llvm::StringRef getMessage() { return "bad spirv bitcode"; }
};
template <> struct ErrorTraits<errc::bad_bitcode> {
static llvm::StringRef getMessage() { return "bad llvm bitcode"; }
};
template <> struct ErrorTraits<errc::invalid_module> {
static llvm::StringRef getMessage() { return "module verification failed"; }
};
template <> struct ErrorTraits<errc::target_machine_not_created> {
static llvm::StringRef getMessage() {
return "target machine creation failed";
}
};
template <> struct ErrorTraits<errc::not_vc_codegen> {
static llvm::StringRef getMessage() {
return "vc codegen path option was not specified";
}
};
template <> struct ErrorTraits<errc::invalid_api_option> {
static llvm::StringRef getMessage() { return "invalid api option"; }
};
template <> struct ErrorTraits<errc::invalid_internal_option> {
static llvm::StringRef getMessage() { return "invalid internal option"; }
};
template <> struct ErrorTraits<errc::bif_load_fail> {
static llvm::StringRef getMessage() {
return "failed to load OCL BiF module";
}
};
template <> struct ErrorTraits<errc::output_not_created> {
static llvm::StringRef getMessage() { return "could not create output file"; }
};
} // namespace vc
#endif
|