summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2014-10-27 17:44:25 +0000
committerLang Hames <lhames@gmail.com>2014-10-27 17:44:25 +0000
commit5fe30ca56fd5f4276c0f4d5de721210bbb0514bd (patch)
tree80f5366e1d2f0290cb737e74369a8fd50d230320 /llvm/lib/Target
parentd71825c3cbdb173274c2e3afcef2c66552400648 (diff)
downloadbcm5719-llvm-5fe30ca56fd5f4276c0f4d5de721210bbb0514bd.tar.gz
bcm5719-llvm-5fe30ca56fd5f4276c0f4d5de721210bbb0514bd.zip
[PBQP] Unique allowed-sets for nodes in the PBQP graph and use pairs of these
sets as keys into a cache of interference matrice values in the Interference constraint adder. Creating interference matrices was one of the large remaining time-sinks in PBQP. Caching them reduces the total compile time (when using PBQP) on the nightly test suite by ~10%. llvm-svn: 220688
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp b/llvm/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp
index 05692ee0968..f942c4e98a6 100644
--- a/llvm/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp
+++ b/llvm/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp
@@ -174,10 +174,10 @@ bool A57ChainingConstraint::addIntraChainConstraint(PBQPRAGraph &G, unsigned Rd,
PBQPRAGraph::NodeId node1 = G.getMetadata().getNodeIdForVReg(Rd);
PBQPRAGraph::NodeId node2 = G.getMetadata().getNodeIdForVReg(Ra);
- const PBQPRAGraph::NodeMetadata::OptionToRegMap *vRdAllowed =
- &G.getNodeMetadata(node1).getOptionRegs();
- const PBQPRAGraph::NodeMetadata::OptionToRegMap *vRaAllowed =
- &G.getNodeMetadata(node2).getOptionRegs();
+ const PBQPRAGraph::NodeMetadata::AllowedRegVector *vRdAllowed =
+ &G.getNodeMetadata(node1).getAllowedRegs();
+ const PBQPRAGraph::NodeMetadata::AllowedRegVector *vRaAllowed =
+ &G.getNodeMetadata(node2).getAllowedRegs();
PBQPRAGraph::EdgeId edge = G.findEdge(node1, node2);
@@ -268,12 +268,12 @@ void A57ChainingConstraint::addInterChainConstraint(PBQPRAGraph &G, unsigned Rd,
const LiveInterval &lr = LIs.getInterval(r);
if (ld.overlaps(lr)) {
- const PBQPRAGraph::NodeMetadata::OptionToRegMap *vRdAllowed =
- &G.getNodeMetadata(node1).getOptionRegs();
+ const PBQPRAGraph::NodeMetadata::AllowedRegVector *vRdAllowed =
+ &G.getNodeMetadata(node1).getAllowedRegs();
PBQPRAGraph::NodeId node2 = G.getMetadata().getNodeIdForVReg(r);
- const PBQPRAGraph::NodeMetadata::OptionToRegMap *vRrAllowed =
- &G.getNodeMetadata(node2).getOptionRegs();
+ const PBQPRAGraph::NodeMetadata::AllowedRegVector *vRrAllowed =
+ &G.getNodeMetadata(node2).getAllowedRegs();
PBQPRAGraph::EdgeId edge = G.findEdge(node1, node2);
assert(edge != G.invalidEdgeId() &&
OpenPOWER on IntegriCloud