diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-04-30 17:59:49 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-04-30 17:59:49 +0000 |
commit | e012ede137af48a0ad0e384fa44f0df2e6a687d8 (patch) | |
tree | d31f653d804bbb835d1e35d2eea463971b7e0694 /llvm/lib/Target | |
parent | 92dd7b82befbc11dcdb722c3315b8ce6e18cce0d (diff) | |
download | bcm5719-llvm-e012ede137af48a0ad0e384fa44f0df2e6a687d8.tar.gz bcm5719-llvm-e012ede137af48a0ad0e384fa44f0df2e6a687d8.zip |
[X86] Reduce memory usage of MemOp2RegOp and RegOp2MemOp folding maps.
llvm-svn: 268164
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.cpp | 16 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.h | 6 |
2 files changed, 9 insertions, 13 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp index 186b9bb56c6..7554ab439e7 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.cpp +++ b/llvm/lib/Target/X86/X86InstrInfo.cpp @@ -2028,7 +2028,7 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) void X86InstrInfo::AddTableEntry(RegOp2MemOpTableType &R2MTable, MemOp2RegOpTableType &M2RTable, - unsigned RegOp, unsigned MemOp, unsigned Flags) { + uint16_t RegOp, uint16_t MemOp, uint16_t Flags) { if ((Flags & TB_NO_FORWARD) == 0) { assert(!R2MTable.count(RegOp) && "Duplicate entry!"); R2MTable[RegOp] = std::make_pair(MemOp, Flags); @@ -5682,7 +5682,7 @@ MachineInstr *X86InstrInfo::foldMemoryOperandImpl( ArrayRef<MachineOperand> MOs, MachineBasicBlock::iterator InsertPt, unsigned Size, unsigned Align, bool AllowCommute) const { const DenseMap<unsigned, - std::pair<unsigned,unsigned> > *OpcodeTablePtr = nullptr; + std::pair<uint16_t, uint16_t> > *OpcodeTablePtr = nullptr; bool isCallRegIndirect = Subtarget.callRegIndirect(); bool isTwoAddrFold = false; @@ -5742,8 +5742,7 @@ MachineInstr *X86InstrInfo::foldMemoryOperandImpl( // If table selected... if (OpcodeTablePtr) { // Find the Opcode to fuse - DenseMap<unsigned, std::pair<unsigned,unsigned> >::const_iterator I = - OpcodeTablePtr->find(MI->getOpcode()); + auto I = OpcodeTablePtr->find(MI->getOpcode()); if (I != OpcodeTablePtr->end()) { unsigned Opcode = I->second.first; unsigned MinAlign = (I->second.second & TB_ALIGN_MASK) >> TB_ALIGN_SHIFT; @@ -6299,8 +6298,7 @@ MachineInstr *X86InstrInfo::foldMemoryOperandImpl( bool X86InstrInfo::unfoldMemoryOperand(MachineFunction &MF, MachineInstr *MI, unsigned Reg, bool UnfoldLoad, bool UnfoldStore, SmallVectorImpl<MachineInstr*> &NewMIs) const { - DenseMap<unsigned, std::pair<unsigned,unsigned> >::const_iterator I = - MemOp2RegOpTable.find(MI->getOpcode()); + auto I = MemOp2RegOpTable.find(MI->getOpcode()); if (I == MemOp2RegOpTable.end()) return false; unsigned Opc = I->second.first; @@ -6427,8 +6425,7 @@ X86InstrInfo::unfoldMemoryOperand(SelectionDAG &DAG, SDNode *N, if (!N->isMachineOpcode()) return false; - DenseMap<unsigned, std::pair<unsigned,unsigned> >::const_iterator I = - MemOp2RegOpTable.find(N->getMachineOpcode()); + auto I = MemOp2RegOpTable.find(N->getMachineOpcode()); if (I == MemOp2RegOpTable.end()) return false; unsigned Opc = I->second.first; @@ -6534,8 +6531,7 @@ X86InstrInfo::unfoldMemoryOperand(SelectionDAG &DAG, SDNode *N, unsigned X86InstrInfo::getOpcodeAfterMemoryUnfold(unsigned Opc, bool UnfoldLoad, bool UnfoldStore, unsigned *LoadRegIndex) const { - DenseMap<unsigned, std::pair<unsigned,unsigned> >::const_iterator I = - MemOp2RegOpTable.find(Opc); + auto I = MemOp2RegOpTable.find(Opc); if (I == MemOp2RegOpTable.end()) return 0; bool FoldedLoad = I->second.second & TB_FOLDED_LOAD; diff --git a/llvm/lib/Target/X86/X86InstrInfo.h b/llvm/lib/Target/X86/X86InstrInfo.h index 79603bf5638..d72589604ae 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.h +++ b/llvm/lib/Target/X86/X86InstrInfo.h @@ -147,7 +147,7 @@ class X86InstrInfo final : public X86GenInstrInfo { /// RegOp2MemOpTable2, RegOp2MemOpTable3 - Load / store folding opcode maps. /// typedef DenseMap<unsigned, - std::pair<unsigned, unsigned> > RegOp2MemOpTableType; + std::pair<uint16_t, uint16_t> > RegOp2MemOpTableType; RegOp2MemOpTableType RegOp2MemOpTable2Addr; RegOp2MemOpTableType RegOp2MemOpTable0; RegOp2MemOpTableType RegOp2MemOpTable1; @@ -158,12 +158,12 @@ class X86InstrInfo final : public X86GenInstrInfo { /// MemOp2RegOpTable - Load / store unfolding opcode map. /// typedef DenseMap<unsigned, - std::pair<unsigned, unsigned> > MemOp2RegOpTableType; + std::pair<uint16_t, uint16_t> > MemOp2RegOpTableType; MemOp2RegOpTableType MemOp2RegOpTable; static void AddTableEntry(RegOp2MemOpTableType &R2MTable, MemOp2RegOpTableType &M2RTable, - unsigned RegOp, unsigned MemOp, unsigned Flags); + uint16_t RegOp, uint16_t MemOp, uint16_t Flags); virtual void anchor(); |