diff options
author | Bob Wilson <bob.wilson@apple.com> | 2009-08-11 01:14:02 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2009-08-11 01:14:02 +0000 |
commit | 61fc4cf7aa0b87ceab62082cee8ef5ce3f574ffc (patch) | |
tree | 6c361f43f73aad64e12ee591fe48a1a42169edb4 /include/llvm/CodeGen | |
parent | 1c5cf1b3785c4e6dcd0b8549008861cb2c4e49ee (diff) |
Add a new overloaded EVT::vAny type for use in TableGen to allow intrinsic
arguments that are vectors of any size and element type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78631 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen')
-rw-r--r-- | include/llvm/CodeGen/ValueTypes.h | 21 | ||||
-rw-r--r-- | include/llvm/CodeGen/ValueTypes.td | 7 |
2 files changed, 21 insertions, 7 deletions
diff --git a/include/llvm/CodeGen/ValueTypes.h b/include/llvm/CodeGen/ValueTypes.h index a77ed50805..b32bda9c79 100644 --- a/include/llvm/CodeGen/ValueTypes.h +++ b/include/llvm/CodeGen/ValueTypes.h @@ -83,26 +83,31 @@ namespace llvm { MAX_ALLOWED_VALUETYPE = 64, // Metadata - This is MDNode or MDString. - Metadata = 251, + Metadata = 250, // iPTRAny - An int value the size of the pointer of the current // target to any address space. This must only be used internal to // tblgen. Other than for overloading, we treat iPTRAny the same as iPTR. - iPTRAny = 252, + iPTRAny = 251, + + // vAny - A vector with any length and element size. This is used + // for intrinsics that have overloadings based on vector types. + // This is only for tblgen's consumption! + vAny = 252, // fAny - Any floating-point or vector floating-point value. This is used // for intrinsics that have overloadings based on floating-point types. // This is only for tblgen's consumption! - fAny = 253, + fAny = 253, // iAny - An integer or vector integer value of any bit width. This is // used for intrinsics that have overloadings based on integer bit widths. // This is only for tblgen's consumption! - iAny = 254, + iAny = 254, // iPTR - An int value the size of the pointer of the current // target. This should only be used internal to tblgen! - iPTR = 255, + iPTR = 255, // LastSimpleValueType - The greatest valid SimpleValueType value. LastSimpleValueType = 255 @@ -284,6 +289,11 @@ namespace llvm { V==v4i64) : isExtended256BitVector(); } + /// isOverloaded - Return true if this is an overloaded type for TableGen. + bool isOverloaded() const { + return (V==iAny || V==fAny || V==vAny || V==iPTRAny); + } + /// isByteSized - Return true if the bit size is a multiple of 8. bool isByteSized() const { return (getSizeInBits() & 7) == 0; @@ -396,6 +406,7 @@ namespace llvm { case iPTRAny: case iAny: case fAny: + case vAny: assert(0 && "Value type is overloaded."); default: return getExtendedSizeInBits(); diff --git a/include/llvm/CodeGen/ValueTypes.td b/include/llvm/CodeGen/ValueTypes.td index 596da059c9..986555b976 100644 --- a/include/llvm/CodeGen/ValueTypes.td +++ b/include/llvm/CodeGen/ValueTypes.td @@ -56,11 +56,14 @@ def v8f32 : ValueType<256, 31>; // 8 x f32 vector value def v2f64 : ValueType<128, 32>; // 2 x f64 vector value def v4f64 : ValueType<256, 33>; // 4 x f64 vector value -def MetadataVT: ValueType<0, 251>; // Metadata +def MetadataVT: ValueType<0, 250>; // Metadata // Pseudo valuetype mapped to the current pointer size to any address space. // Should only be used in TableGen. -def iPTRAny : ValueType<0, 252>; +def iPTRAny : ValueType<0, 251>; + +// Pseudo valuetype to represent "vector of any size" +def vAny : ValueType<0 , 252>; // Pseudo valuetype to represent "float of any format" def fAny : ValueType<0 , 253>; |