aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
diff options
context:
space:
mode:
authorPhilip Reames <listmail@philipreames.com>2019-06-10 17:51:13 +0000
committerPhilip Reames <listmail@philipreames.com>2019-06-10 17:51:13 +0000
commit5d84ccb2303ba627cd3f755fe326bb2c875234b9 (patch)
treec3beb4e5c11e9b379e6e3461ccebdae06c0b8202 /llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
parenta5f2c208155acf6d5ad24d56aa15b417560b56e0 (diff)
downloadllvm-5d84ccb2303ba627cd3f755fe326bb2c875234b9.zip
llvm-5d84ccb2303ba627cd3f755fe326bb2c875234b9.tar.gz
llvm-5d84ccb2303ba627cd3f755fe326bb2c875234b9.tar.bz2
Prepare for multi-exit LFTR [NFC]
This change does the plumbing to wire an ExitingBB parameter through the LFTR implementation, and reorganizes the code to work in terms of a set of individual loop exits. Most of it is fairly obvious, but there's one key complexity which makes it worthy of consideration. The actual multi-exit LFTR patch is in D62625 for context. Specifically, it turns out the existing code uses the backedge taken count from before a IV is widened. Oddly, we can end up with a different (more expensive, but semantically equivelent) BE count for the loop when requerying after widening. For the nestedIV example from elim-extend, we end up with the following BE counts: BEFORE: (-2 + (-1 * %innercount) + %limit) AFTER: (-1 + (sext i32 (-1 + %limit) to i64) + (-1 * (sext i32 %innercount to i64))<nsw>) This is the only test in tree which seems sensitive to this difference. The actual result of using the wider BETC on this example is that we actually produce slightly better code. :) In review, we decided to accept that test change. This patch is structured to preserve the old behavior, but a separate change will immediate follow with the behavior change. (I wanted it separate for problem attribution purposes.) Differential Revision: https://reviews.llvm.org/D62880 llvm-svn: 362971
Diffstat (limited to 'llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp')
0 files changed, 0 insertions, 0 deletions