mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-27 14:24:40 +00:00
The powers that be have decided that LLVM IR should now support 16-bit
"half precision" floating-point with a first-class type. This patch adds basic IR support (but not codegen support). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146786 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -47,23 +47,24 @@ public:
|
||||
enum TypeID {
|
||||
// PrimitiveTypes - make sure LastPrimitiveTyID stays up to date.
|
||||
VoidTyID = 0, ///< 0: type with no size
|
||||
FloatTyID, ///< 1: 32-bit floating point type
|
||||
DoubleTyID, ///< 2: 64-bit floating point type
|
||||
X86_FP80TyID, ///< 3: 80-bit floating point type (X87)
|
||||
FP128TyID, ///< 4: 128-bit floating point type (112-bit mantissa)
|
||||
PPC_FP128TyID, ///< 5: 128-bit floating point type (two 64-bits, PowerPC)
|
||||
LabelTyID, ///< 6: Labels
|
||||
MetadataTyID, ///< 7: Metadata
|
||||
X86_MMXTyID, ///< 8: MMX vectors (64 bits, X86 specific)
|
||||
HalfTyID, ///< 1: 32-bit floating point type
|
||||
FloatTyID, ///< 2: 32-bit floating point type
|
||||
DoubleTyID, ///< 3: 64-bit floating point type
|
||||
X86_FP80TyID, ///< 4: 80-bit floating point type (X87)
|
||||
FP128TyID, ///< 5: 128-bit floating point type (112-bit mantissa)
|
||||
PPC_FP128TyID, ///< 6: 128-bit floating point type (two 64-bits, PowerPC)
|
||||
LabelTyID, ///< 7: Labels
|
||||
MetadataTyID, ///< 8: Metadata
|
||||
X86_MMXTyID, ///< 9: MMX vectors (64 bits, X86 specific)
|
||||
|
||||
// Derived types... see DerivedTypes.h file.
|
||||
// Make sure FirstDerivedTyID stays up to date!
|
||||
IntegerTyID, ///< 9: Arbitrary bit width integers
|
||||
FunctionTyID, ///< 10: Functions
|
||||
StructTyID, ///< 11: Structures
|
||||
ArrayTyID, ///< 12: Arrays
|
||||
PointerTyID, ///< 13: Pointers
|
||||
VectorTyID, ///< 14: SIMD 'packed' format, or other vector type
|
||||
IntegerTyID, ///< 10: Arbitrary bit width integers
|
||||
FunctionTyID, ///< 11: Functions
|
||||
StructTyID, ///< 12: Structures
|
||||
ArrayTyID, ///< 13: Arrays
|
||||
PointerTyID, ///< 14: Pointers
|
||||
VectorTyID, ///< 15: SIMD 'packed' format, or other vector type
|
||||
|
||||
NumTypeIDs, // Must remain as last defined ID
|
||||
LastPrimitiveTyID = X86_MMXTyID,
|
||||
@ -121,6 +122,9 @@ public:
|
||||
/// isVoidTy - Return true if this is 'void'.
|
||||
bool isVoidTy() const { return ID == VoidTyID; }
|
||||
|
||||
/// isHalfTy - Return true if this is 'half', a 16-bit IEEE fp type.
|
||||
bool isHalfTy() const { return ID == HalfTyID; }
|
||||
|
||||
/// isFloatTy - Return true if this is 'float', a 32-bit IEEE fp type.
|
||||
bool isFloatTy() const { return ID == FloatTyID; }
|
||||
|
||||
@ -139,7 +143,7 @@ public:
|
||||
/// isFloatingPointTy - Return true if this is one of the five floating point
|
||||
/// types
|
||||
bool isFloatingPointTy() const {
|
||||
return ID == FloatTyID || ID == DoubleTyID ||
|
||||
return ID == HalfTyID || ID == FloatTyID || ID == DoubleTyID ||
|
||||
ID == X86_FP80TyID || ID == FP128TyID || ID == PPC_FP128TyID;
|
||||
}
|
||||
|
||||
@ -310,6 +314,7 @@ public:
|
||||
//
|
||||
static Type *getVoidTy(LLVMContext &C);
|
||||
static Type *getLabelTy(LLVMContext &C);
|
||||
static Type *getHalfTy(LLVMContext &C);
|
||||
static Type *getFloatTy(LLVMContext &C);
|
||||
static Type *getDoubleTy(LLVMContext &C);
|
||||
static Type *getMetadataTy(LLVMContext &C);
|
||||
@ -328,6 +333,7 @@ public:
|
||||
// Convenience methods for getting pointer types with one of the above builtin
|
||||
// types as pointee.
|
||||
//
|
||||
static PointerType *getHalfPtrTy(LLVMContext &C, unsigned AS = 0);
|
||||
static PointerType *getFloatPtrTy(LLVMContext &C, unsigned AS = 0);
|
||||
static PointerType *getDoublePtrTy(LLVMContext &C, unsigned AS = 0);
|
||||
static PointerType *getX86_FP80PtrTy(LLVMContext &C, unsigned AS = 0);
|
||||
|
Reference in New Issue
Block a user