mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-20 19:42:54 +02:00
938d7fe477
This is used by llvm tblgen as well as by LLVM Targets, so the only common place is Support for now. (maybe we need another target for these sorts of things - but for now I'm at least making them correct & we can make them better if/when people have strong feelings) llvm-svn: 328395
62 lines
1.7 KiB
C++
62 lines
1.7 KiB
C++
//===- llvm/Target/CodeGenCWrappers.h - CodeGen C Wrappers ------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines C bindings wrappers for enums in llvm/Support/CodeGen.h
|
|
// that need them. The wrappers are separated to avoid adding an indirect
|
|
// dependency on llvm/Config/Targets.def to CodeGen.h.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TARGET_CODEGENCWRAPPERS_H
|
|
#define LLVM_TARGET_CODEGENCWRAPPERS_H
|
|
|
|
#include "llvm-c/TargetMachine.h"
|
|
#include "llvm/ADT/Optional.h"
|
|
#include "llvm/Support/CodeGen.h"
|
|
#include "llvm/Support/ErrorHandling.h"
|
|
|
|
namespace llvm {
|
|
|
|
inline Optional<CodeModel::Model> unwrap(LLVMCodeModel Model, bool &JIT) {
|
|
JIT = false;
|
|
switch (Model) {
|
|
case LLVMCodeModelJITDefault:
|
|
JIT = true;
|
|
LLVM_FALLTHROUGH;
|
|
case LLVMCodeModelDefault:
|
|
return None;
|
|
case LLVMCodeModelSmall:
|
|
return CodeModel::Small;
|
|
case LLVMCodeModelKernel:
|
|
return CodeModel::Kernel;
|
|
case LLVMCodeModelMedium:
|
|
return CodeModel::Medium;
|
|
case LLVMCodeModelLarge:
|
|
return CodeModel::Large;
|
|
}
|
|
return CodeModel::Small;
|
|
}
|
|
|
|
inline LLVMCodeModel wrap(CodeModel::Model Model) {
|
|
switch (Model) {
|
|
case CodeModel::Small:
|
|
return LLVMCodeModelSmall;
|
|
case CodeModel::Kernel:
|
|
return LLVMCodeModelKernel;
|
|
case CodeModel::Medium:
|
|
return LLVMCodeModelMedium;
|
|
case CodeModel::Large:
|
|
return LLVMCodeModelLarge;
|
|
}
|
|
llvm_unreachable("Bad CodeModel!");
|
|
}
|
|
} // namespace llvm
|
|
|
|
#endif
|