mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00:00
Tighten up the abstraction slightly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52045 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
83ec4b6711
commit
3b3adbb745
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user