forked from OSchip/llvm-project
[X86] Sort the static memory folding tables by reg opcode. Remove the reg->mem DenseMaps in favor of binary search.
With the static tables sorted we can binary search them directly for reg->mem lookups. This removes 6 DenseMaps that had to be created when X86InstrInfo is constructed. We still have one Mem->Reg DenseMap for the reverse direction. This is created just as before by walking the reg->mem arrays to populate it. Differential Revision: https://reviews.llvm.org/D48527 llvm-svn: 335501
This commit is contained in:
parent
b9cb88a4b0
commit
3cc6cb1d35
llvm/lib/Target/X86
File diff suppressed because it is too large
Load Diff
|
@ -168,26 +168,13 @@ class X86InstrInfo final : public X86GenInstrInfo {
|
||||||
X86Subtarget &Subtarget;
|
X86Subtarget &Subtarget;
|
||||||
const X86RegisterInfo RI;
|
const X86RegisterInfo RI;
|
||||||
|
|
||||||
/// RegOp2MemOpTable3Addr, RegOp2MemOpTable0, RegOp2MemOpTable1,
|
|
||||||
/// RegOp2MemOpTable2, RegOp2MemOpTable3 - Load / store folding opcode maps.
|
|
||||||
///
|
|
||||||
typedef DenseMap<unsigned, std::pair<uint16_t, uint16_t>>
|
|
||||||
RegOp2MemOpTableType;
|
|
||||||
RegOp2MemOpTableType RegOp2MemOpTable2Addr;
|
|
||||||
RegOp2MemOpTableType RegOp2MemOpTable0;
|
|
||||||
RegOp2MemOpTableType RegOp2MemOpTable1;
|
|
||||||
RegOp2MemOpTableType RegOp2MemOpTable2;
|
|
||||||
RegOp2MemOpTableType RegOp2MemOpTable3;
|
|
||||||
RegOp2MemOpTableType RegOp2MemOpTable4;
|
|
||||||
|
|
||||||
/// MemOp2RegOpTable - Load / store unfolding opcode map.
|
/// MemOp2RegOpTable - Load / store unfolding opcode map.
|
||||||
///
|
///
|
||||||
typedef DenseMap<unsigned, std::pair<uint16_t, uint16_t>>
|
typedef DenseMap<unsigned, std::pair<uint16_t, uint16_t>>
|
||||||
MemOp2RegOpTableType;
|
MemOp2RegOpTableType;
|
||||||
MemOp2RegOpTableType MemOp2RegOpTable;
|
MemOp2RegOpTableType MemOp2RegOpTable;
|
||||||
|
|
||||||
static void AddTableEntry(RegOp2MemOpTableType &R2MTable,
|
static void AddTableEntry(MemOp2RegOpTableType &M2RTable, uint16_t RegOp,
|
||||||
MemOp2RegOpTableType &M2RTable, uint16_t RegOp,
|
|
||||||
uint16_t MemOp, uint16_t Flags);
|
uint16_t MemOp, uint16_t Flags);
|
||||||
|
|
||||||
virtual void anchor();
|
virtual void anchor();
|
||||||
|
|
Loading…
Reference in New Issue