diff options
author | Duncan Sands <baldrick@free.fr> | 2008-06-06 12:49:32 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2008-06-06 12:49:32 +0000 |
commit | 3b3adbb7456411957681e590b29697b3af307dd1 (patch) | |
tree | e3ddd8b907f36c0dfbe60429dc33b3b619f24fb1 | |
parent | 83ec4b6711980242ef3c55a4fa36b2d7a39c1bfb (diff) | |
download | external_llvm-3b3adbb7456411957681e590b29697b3af307dd1.zip external_llvm-3b3adbb7456411957681e590b29697b3af307dd1.tar.gz external_llvm-3b3adbb7456411957681e590b29697b3af307dd1.tar.bz2 |
Tighten up the abstraction slightly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52045 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/ValueTypes.h | 11 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 20 |
2 files changed, 19 insertions, 12 deletions
diff --git a/include/llvm/CodeGen/ValueTypes.h b/include/llvm/CodeGen/ValueTypes.h index 1469f81..16df853 100644 --- a/include/llvm/CodeGen/ValueTypes.h +++ b/include/llvm/CodeGen/ValueTypes.h @@ -25,6 +25,7 @@ namespace llvm { class Type; struct MVT { // MVT = Machine Value Type + public: enum SimpleValueType { // If you change this numbering, you must change the values in @@ -107,6 +108,8 @@ namespace llvm { /// | | Vector element | /// + private: + static const int SimpleTypeBits = 8; static const int PrecisionBits = 8; static const int VectorBits = 32 - SimpleTypeBits - PrecisionBits; @@ -125,6 +128,8 @@ namespace llvm { uint32_t V; + public: + MVT() {} MVT(SimpleValueType S) { V = S; } inline bool operator== (const MVT VT) const { return V == VT.V; } @@ -194,9 +199,8 @@ namespace llvm { if (NumElements == 2) return v2f64; break; } - // Set the length with the top bit forced to zero (needed by the verifier). MVT Result; - Result.V = VT.V | (((NumElements + 1) << (33 - VectorBits)) >> 1); + Result.V = VT.V | ((NumElements + 1) << (32 - VectorBits)); assert(Result.getVectorElementType() == VT && "Bad vector element type!"); assert(Result.getVectorNumElements() == NumElements && @@ -406,6 +410,9 @@ namespace llvm { /// This returns all pointers as iPTR. If HandleUnknown is true, unknown /// types are returned as Other, otherwise they are invalid. static MVT getMVT(const Type *Ty, bool HandleUnknown = false); + + /// getRawBits - Represent the type as a bunch of bits. + uint32_t getRawBits() const { return V; } }; } // End llvm namespace diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index db73ab4..80d72e7 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -416,7 +416,7 @@ static void AddNodeIDNode(FoldingSetNodeID &ID, SDNode *N) { LoadSDNode *LD = cast<LoadSDNode>(N); ID.AddInteger(LD->getAddressingMode()); ID.AddInteger(LD->getExtensionType()); - ID.AddInteger(LD->getMemoryVT().V); + ID.AddInteger(LD->getMemoryVT().getRawBits()); ID.AddInteger(LD->getAlignment()); ID.AddInteger(LD->isVolatile()); break; @@ -425,7 +425,7 @@ static void AddNodeIDNode(FoldingSetNodeID &ID, SDNode *N) { StoreSDNode *ST = cast<StoreSDNode>(N); ID.AddInteger(ST->getAddressingMode()); ID.AddInteger(ST->isTruncatingStore()); - ID.AddInteger(ST->getMemoryVT().V); + ID.AddInteger(ST->getMemoryVT().getRawBits()); ID.AddInteger(ST->getAlignment()); ID.AddInteger(ST->isVolatile()); break; @@ -684,13 +684,13 @@ SDNode *SelectionDAG::FindModifiedNodeSlot(SDNode *N, if (const LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) { ID.AddInteger(LD->getAddressingMode()); ID.AddInteger(LD->getExtensionType()); - ID.AddInteger(LD->getMemoryVT().V); + ID.AddInteger(LD->getMemoryVT().getRawBits()); ID.AddInteger(LD->getAlignment()); ID.AddInteger(LD->isVolatile()); } else if (const StoreSDNode *ST = dyn_cast<StoreSDNode>(N)) { ID.AddInteger(ST->getAddressingMode()); ID.AddInteger(ST->isTruncatingStore()); - ID.AddInteger(ST->getMemoryVT().V); + ID.AddInteger(ST->getMemoryVT().getRawBits()); ID.AddInteger(ST->getAlignment()); ID.AddInteger(ST->isVolatile()); } @@ -2984,7 +2984,7 @@ SDOperand SelectionDAG::getAtomic(unsigned Opcode, SDOperand Chain, FoldingSetNodeID ID; SDOperand Ops[] = {Chain, Ptr, Cmp, Swp}; AddNodeIDNode(ID, Opcode, VTs, Ops, 4); - ID.AddInteger(VT.V); + ID.AddInteger(VT.getRawBits()); void* IP = 0; if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP)) return SDOperand(E, 0); @@ -3007,7 +3007,7 @@ SDOperand SelectionDAG::getAtomic(unsigned Opcode, SDOperand Chain, FoldingSetNodeID ID; SDOperand Ops[] = {Chain, Ptr, Val}; AddNodeIDNode(ID, Opcode, VTs, Ops, 3); - ID.AddInteger(VT.V); + ID.AddInteger(VT.getRawBits()); void* IP = 0; if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP)) return SDOperand(E, 0); @@ -3064,7 +3064,7 @@ SelectionDAG::getLoad(ISD::MemIndexedMode AM, ISD::LoadExtType ExtType, AddNodeIDNode(ID, ISD::LOAD, VTs, Ops, 3); ID.AddInteger(AM); ID.AddInteger(ExtType); - ID.AddInteger(EVT.V); + ID.AddInteger(EVT.getRawBits()); ID.AddInteger(Alignment); ID.AddInteger(isVolatile); void *IP = 0; @@ -3132,7 +3132,7 @@ SDOperand SelectionDAG::getStore(SDOperand Chain, SDOperand Val, AddNodeIDNode(ID, ISD::STORE, VTs, Ops, 4); ID.AddInteger(ISD::UNINDEXED); ID.AddInteger(false); - ID.AddInteger(VT.V); + ID.AddInteger(VT.getRawBits()); ID.AddInteger(Alignment); ID.AddInteger(isVolatile); void *IP = 0; @@ -3178,7 +3178,7 @@ SDOperand SelectionDAG::getTruncStore(SDOperand Chain, SDOperand Val, AddNodeIDNode(ID, ISD::STORE, VTs, Ops, 4); ID.AddInteger(ISD::UNINDEXED); ID.AddInteger(1); - ID.AddInteger(SVT.V); + ID.AddInteger(SVT.getRawBits()); ID.AddInteger(Alignment); ID.AddInteger(isVolatile); void *IP = 0; @@ -3203,7 +3203,7 @@ SelectionDAG::getIndexedStore(SDOperand OrigStore, SDOperand Base, AddNodeIDNode(ID, ISD::STORE, VTs, Ops, 4); ID.AddInteger(AM); ID.AddInteger(ST->isTruncatingStore()); - ID.AddInteger(ST->getMemoryVT().V); + ID.AddInteger(ST->getMemoryVT().getRawBits()); ID.AddInteger(ST->getAlignment()); ID.AddInteger(ST->isVolatile()); void *IP = 0; |