mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-23 02:29:18 +00:00
Don't require C bindings opcode numbers to be kept in sync.
They are not in sync now, for example Bitcast would show up as LLVMCall. So instead introduce 2 functions that map to and from the opcodes in the C bindings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141290 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6831b7c645
commit
4df1557f40
@ -179,8 +179,8 @@ typedef enum {
|
|||||||
LLVMPHI = 44,
|
LLVMPHI = 44,
|
||||||
LLVMCall = 45,
|
LLVMCall = 45,
|
||||||
LLVMSelect = 46,
|
LLVMSelect = 46,
|
||||||
/* UserOp1 */
|
LLVMUserOp1 = 47,
|
||||||
/* UserOp2 */
|
LLVMUserOp2 = 48,
|
||||||
LLVMVAArg = 49,
|
LLVMVAArg = 49,
|
||||||
LLVMExtractElement = 50,
|
LLVMExtractElement = 50,
|
||||||
LLVMInsertElement = 51,
|
LLVMInsertElement = 51,
|
||||||
@ -195,7 +195,9 @@ typedef enum {
|
|||||||
|
|
||||||
/* Exception Handling Operators */
|
/* Exception Handling Operators */
|
||||||
LLVMResume = 58,
|
LLVMResume = 58,
|
||||||
LLVMLandingPad = 59
|
LLVMLandingPad = 59,
|
||||||
|
LLVMUnwind = 60
|
||||||
|
|
||||||
|
|
||||||
} LLVMOpcode;
|
} LLVMOpcode;
|
||||||
|
|
||||||
|
@ -654,10 +654,35 @@ LLVMValueRef LLVMConstVector(LLVMValueRef *ScalarConstantVals, unsigned Size) {
|
|||||||
return wrap(ConstantVector::get(makeArrayRef(
|
return wrap(ConstantVector::get(makeArrayRef(
|
||||||
unwrap<Constant>(ScalarConstantVals, Size), Size)));
|
unwrap<Constant>(ScalarConstantVals, Size), Size)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*-- Opcode mapping */
|
||||||
|
|
||||||
|
static LLVMOpcode map_to_llvmopcode(int opcode)
|
||||||
|
{
|
||||||
|
switch (opcode) {
|
||||||
|
#define HANDLE_INST(num, opc, clas) case num: return LLVM##opc;
|
||||||
|
#include "llvm/Instruction.def"
|
||||||
|
#undef HANDLE_INST
|
||||||
|
default:
|
||||||
|
assert(false && "Unhandled Opcode.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int map_from_llvmopcode(LLVMOpcode code)
|
||||||
|
{
|
||||||
|
switch (code) {
|
||||||
|
#define HANDLE_INST(num, opc, clas) case LLVM##opc: return num;
|
||||||
|
#include "llvm/Instruction.def"
|
||||||
|
#undef HANDLE_INST
|
||||||
|
default:
|
||||||
|
assert(false && "Unhandled Opcode.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*--.. Constant expressions ................................................--*/
|
/*--.. Constant expressions ................................................--*/
|
||||||
|
|
||||||
LLVMOpcode LLVMGetConstOpcode(LLVMValueRef ConstantVal) {
|
LLVMOpcode LLVMGetConstOpcode(LLVMValueRef ConstantVal) {
|
||||||
return (LLVMOpcode)unwrap<ConstantExpr>(ConstantVal)->getOpcode();
|
return map_to_llvmopcode(unwrap<ConstantExpr>(ConstantVal)->getOpcode());
|
||||||
}
|
}
|
||||||
|
|
||||||
LLVMValueRef LLVMAlignOf(LLVMTypeRef Ty) {
|
LLVMValueRef LLVMAlignOf(LLVMTypeRef Ty) {
|
||||||
@ -1919,7 +1944,7 @@ LLVMValueRef LLVMBuildXor(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS,
|
|||||||
LLVMValueRef LLVMBuildBinOp(LLVMBuilderRef B, LLVMOpcode Op,
|
LLVMValueRef LLVMBuildBinOp(LLVMBuilderRef B, LLVMOpcode Op,
|
||||||
LLVMValueRef LHS, LLVMValueRef RHS,
|
LLVMValueRef LHS, LLVMValueRef RHS,
|
||||||
const char *Name) {
|
const char *Name) {
|
||||||
return wrap(unwrap(B)->CreateBinOp(Instruction::BinaryOps(Op), unwrap(LHS),
|
return wrap(unwrap(B)->CreateBinOp(Instruction::BinaryOps(map_from_llvmopcode(Op)), unwrap(LHS),
|
||||||
unwrap(RHS), Name));
|
unwrap(RHS), Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2106,7 +2131,7 @@ LLVMValueRef LLVMBuildTruncOrBitCast(LLVMBuilderRef B, LLVMValueRef Val,
|
|||||||
|
|
||||||
LLVMValueRef LLVMBuildCast(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val,
|
LLVMValueRef LLVMBuildCast(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val,
|
||||||
LLVMTypeRef DestTy, const char *Name) {
|
LLVMTypeRef DestTy, const char *Name) {
|
||||||
return wrap(unwrap(B)->CreateCast(Instruction::CastOps(Op), unwrap(Val),
|
return wrap(unwrap(B)->CreateCast(Instruction::CastOps(map_from_llvmopcode(Op)), unwrap(Val),
|
||||||
unwrap(DestTy), Name));
|
unwrap(DestTy), Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user