mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-04-02 07:41:38 +00:00
Add the i128 builtin type to LLVM.
The i128 type is needed as a builtin type in order to support the v1i128 vector type. The PowerPC ABI requires that the i128 and v1i128 types are handled differently when passed as parameters to functions (i128 is passed in pairs of GPRs, v1i128 is passed in a single vector register). http://reviews.llvm.org/D8564 llvm-svn: 235196
This commit is contained in:
parent
8c6dc71fa1
commit
9fb427d0ff
@ -321,6 +321,11 @@ public:
|
||||
return Type::getInt64Ty(Context);
|
||||
}
|
||||
|
||||
/// \brief Fetch the type representing a 128-bit integer.
|
||||
IntegerType *getInt128Ty() {
|
||||
return Type::getInt128Ty(Context);
|
||||
}
|
||||
|
||||
/// \brief Fetch the type representing an N-bit integer.
|
||||
IntegerType *getIntNTy(unsigned N) {
|
||||
return Type::getIntNTy(Context, N);
|
||||
|
@ -395,7 +395,8 @@ public:
|
||||
static IntegerType *getInt16Ty(LLVMContext &C);
|
||||
static IntegerType *getInt32Ty(LLVMContext &C);
|
||||
static IntegerType *getInt64Ty(LLVMContext &C);
|
||||
|
||||
static IntegerType *getInt128Ty(LLVMContext &C);
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
// Convenience methods for getting pointer types with one of the above builtin
|
||||
// types as pointee.
|
||||
|
@ -310,6 +310,9 @@ LLVMTypeRef LLVMInt32TypeInContext(LLVMContextRef C) {
|
||||
LLVMTypeRef LLVMInt64TypeInContext(LLVMContextRef C) {
|
||||
return (LLVMTypeRef) Type::getInt64Ty(*unwrap(C));
|
||||
}
|
||||
LLVMTypeRef LLVMInt128TypeInContext(LLVMContextRef C) {
|
||||
return (LLVMTypeRef) Type::getInt128Ty(*unwrap(C));
|
||||
}
|
||||
LLVMTypeRef LLVMIntTypeInContext(LLVMContextRef C, unsigned NumBits) {
|
||||
return wrap(IntegerType::get(*unwrap(C), NumBits));
|
||||
}
|
||||
@ -329,6 +332,9 @@ LLVMTypeRef LLVMInt32Type(void) {
|
||||
LLVMTypeRef LLVMInt64Type(void) {
|
||||
return LLVMInt64TypeInContext(LLVMGetGlobalContext());
|
||||
}
|
||||
LLVMTypeRef LLVMInt128Type(void) {
|
||||
return LLVMInt128TypeInContext(LLVMGetGlobalContext());
|
||||
}
|
||||
LLVMTypeRef LLVMIntType(unsigned NumBits) {
|
||||
return LLVMIntTypeInContext(LLVMGetGlobalContext(), NumBits);
|
||||
}
|
||||
|
@ -35,7 +35,8 @@ LLVMContextImpl::LLVMContextImpl(LLVMContext &C)
|
||||
Int8Ty(C, 8),
|
||||
Int16Ty(C, 16),
|
||||
Int32Ty(C, 32),
|
||||
Int64Ty(C, 64) {
|
||||
Int64Ty(C, 64),
|
||||
Int128Ty(C, 128) {
|
||||
InlineAsmDiagHandler = nullptr;
|
||||
InlineAsmDiagContext = nullptr;
|
||||
DiagnosticHandler = nullptr;
|
||||
|
@ -920,7 +920,7 @@ public:
|
||||
// Basic type instances.
|
||||
Type VoidTy, LabelTy, HalfTy, FloatTy, DoubleTy, MetadataTy;
|
||||
Type X86_FP80Ty, FP128Ty, PPC_FP128Ty, X86_MMXTy;
|
||||
IntegerType Int1Ty, Int8Ty, Int16Ty, Int32Ty, Int64Ty;
|
||||
IntegerType Int1Ty, Int8Ty, Int16Ty, Int32Ty, Int64Ty, Int128Ty;
|
||||
|
||||
|
||||
/// TypeAllocator - All dynamically allocated types are allocated from this.
|
||||
|
@ -238,6 +238,7 @@ IntegerType *Type::getInt8Ty(LLVMContext &C) { return &C.pImpl->Int8Ty; }
|
||||
IntegerType *Type::getInt16Ty(LLVMContext &C) { return &C.pImpl->Int16Ty; }
|
||||
IntegerType *Type::getInt32Ty(LLVMContext &C) { return &C.pImpl->Int32Ty; }
|
||||
IntegerType *Type::getInt64Ty(LLVMContext &C) { return &C.pImpl->Int64Ty; }
|
||||
IntegerType *Type::getInt128Ty(LLVMContext &C) { return &C.pImpl->Int128Ty; }
|
||||
|
||||
IntegerType *Type::getIntNTy(LLVMContext &C, unsigned N) {
|
||||
return IntegerType::get(C, N);
|
||||
|
Loading…
x
Reference in New Issue
Block a user