Disable compare sinking in CodeGenPrepare when multiple condition registers are available
authorHal Finkel <hfinkel@anl.gov>
Thu, 2 Jan 2014 21:13:43 +0000 (21:13 +0000)
committerHal Finkel <hfinkel@anl.gov>
Thu, 2 Jan 2014 21:13:43 +0000 (21:13 +0000)
commitac8ba0c0fdf81b53acb12cd080ea591c69d0dfd0
treefbd0278a31462f11284fcd6c114ace3c8298c6cb
parent5f8e79e6d22cff558fde9f3d40844a9eceaf79ac
Disable compare sinking in CodeGenPrepare when multiple condition registers are available

As noted in the comment above CodeGenPrepare::OptimizeInst, which aggressively
sinks compares to reduce pressure on the condition register(s), for targets
such as PowerPC with multiple condition registers, this may not be the right
thing to do. This adds an HasMultipleConditionRegisters boolean to TLI, and
CodeGenPrepare::OptimizeInst is skipped when HasMultipleConditionRegisters is
true.

This functionality will be used by the PowerPC backend in an upcoming commit.
Especially when the PowerPC backend starts tracking individual condition
register bits as separate allocatable entities (which will happen in this
upcoming commit), this sinking from CodeGenPrepare::OptimizeInst is
significantly suboptimial.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198354 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetLowering.h
lib/CodeGen/TargetLoweringBase.cpp
lib/Transforms/Scalar/CodeGenPrepare.cpp