[PBQP] Replace PBQPBuilder with composable constraints (PBQPRAConstraint).
authorLang Hames <lhames@gmail.com>
Thu, 9 Oct 2014 18:20:51 +0000 (18:20 +0000)
committerLang Hames <lhames@gmail.com>
Thu, 9 Oct 2014 18:20:51 +0000 (18:20 +0000)
commit54d63b4fd5ebaeccc19775c51725b5daf43c469f
tree6fdbba126adcff05a3be4c9827ccb34b4d899641
parentd0fb5b1c116de554ee821244a7acd90d8e4c3c1c
[PBQP] Replace PBQPBuilder with composable constraints (PBQPRAConstraint).

This patch removes the PBQPBuilder class and its subclasses and replaces them
with a composable constraints class: PBQPRAConstraint. This allows constraints
that are only required for optimisation (e.g. coalescing, soft pairing) to be
mixed and matched.

This patch also introduces support for target writers to supply custom
constraints for their targets by overriding a TargetSubtargetInfo method:

std::unique_ptr<PBQPRAConstraints> getCustomPBQPConstraints() const;

This patch should have no effect on allocations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219421 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
include/llvm/CodeGen/PBQP/CostAllocator.h
include/llvm/CodeGen/PBQP/Graph.h
include/llvm/CodeGen/PBQP/Math.h
include/llvm/CodeGen/PBQP/ReductionRules.h
include/llvm/CodeGen/PBQP/RegAllocSolver.h
include/llvm/CodeGen/PBQP/Solution.h
include/llvm/CodeGen/RegAllocPBQP.h
include/llvm/Target/TargetSubtargetInfo.h
lib/CodeGen/RegAllocPBQP.cpp
lib/Target/AArch64/AArch64.h
lib/Target/AArch64/AArch64PBQPRegAlloc.cpp
lib/Target/AArch64/AArch64Subtarget.cpp
lib/Target/AArch64/AArch64Subtarget.h
lib/Target/AArch64/AArch64TargetMachine.cpp