summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2015-08-19 14:34:41 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2015-08-19 14:34:41 +0000
commit0a1c12668491c783d431bfa39b0e74b1fbf62253 (patch)
tree527fdae6e4acec366ab6f1daff5123fcea50f4c4 /clang/lib/Basic/Targets.cpp
parentd8e3c8c665f769ed0d09dec0814e2565ec1da745 (diff)
downloadbcm5719-llvm-0a1c12668491c783d431bfa39b0e74b1fbf62253.tar.gz
bcm5719-llvm-0a1c12668491c783d431bfa39b0e74b1fbf62253.zip
[PeepholeOptimizer] Look through PHIs to find additional register sources
Reapply r243486. - Teaches the ValueTracker in the PeepholeOptimizer to look through PHI instructions. - Add findNextSourceAndRewritePHI method to lookup into multiple sources returnted by the ValueTracker and rewrite PHIs with new sources. With these changes we can find more register sources and rewrite more copies to allow coaslescing of bitcast instructions. Hence, we eliminate unnecessary VR64 <-> GR64 copies in x86, but it could be extended to other archs by marking "isBitcast" on target specific instructions. The x86 example follows: A: psllq %mm1, %mm0 movd %mm0, %r9 jmp C B: por %mm1, %mm0 movd %mm0, %r9 jmp C C: movd %r9, %mm0 pshufw $238, %mm0, %mm0 Becomes: A: psllq %mm1, %mm0 jmp C B: por %mm1, %mm0 jmp C C: pshufw $238, %mm0, %mm0 Differential Revision: http://reviews.llvm.org/D11197 rdar://problem/20404526 llvm-svn: 245442
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud