summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Watchdog.cpp
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2015-01-06 17:41:18 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2015-01-06 17:41:18 +0000
commitf807a6f2970398b85ccd2a3ba6d8959426a9872f (patch)
tree911eb76a03413e1686ee193038b3d84907aef6a6 /llvm/lib/Support/Watchdog.cpp
parenta76dfbd4288271d3a61fe2f4307c406780ce7c49 (diff)
downloadbcm5719-llvm-f807a6f2970398b85ccd2a3ba6d8959426a9872f.tar.gz
bcm5719-llvm-f807a6f2970398b85ccd2a3ba6d8959426a9872f.zip
[CodeGenPrepare] Improved logic to speculate calls to cttz/ctlz.
This patch improves the logic added at revision 224899 (see review D6728) that teaches the backend when it is profitable to speculate calls to cttz/ctlz. The original algorithm conservatively avoided speculating more than one instruction from a basic block in a control flow grap modelling an if-statement. In particular, the only allowed instruction (excluding the terminator) was a call to cttz/ctlz. However, there are cases where we could be less conservative and still be able to speculate a call to cttz/ctlz. With this patch, CodeGenPrepare now tries to speculate a cttz/ctlz if the result is zero extended/truncated in the same basic block, and the zext/trunc instruction is "free" for the target. Added new test cases to CodeGen/X86/cttz-ctlz.ll Differential Revision: http://reviews.llvm.org/D6853 llvm-svn: 225274
Diffstat (limited to 'llvm/lib/Support/Watchdog.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud