aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-02-19 10:02:43 +0000
committerTim Northover <tnorthover@apple.com>2014-02-19 10:02:43 +0000
commitaeb8e06d4c14ef02ddce2d8d29d14b2606545011 (patch)
tree138388481f585e6b2741dcce8458b1b85860f0f3 /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
parentec931ecf12007cb94e53b3cc27fb5f559186e40c (diff)
downloadllvm-aeb8e06d4c14ef02ddce2d8d29d14b2606545011.zip
llvm-aeb8e06d4c14ef02ddce2d8d29d14b2606545011.tar.gz
llvm-aeb8e06d4c14ef02ddce2d8d29d14b2606545011.tar.bz2
X86 CodeGenPrep: sink shufflevectors before shifts
On x86, shifting a vector by a scalar is significantly cheaper than shifting a vector by another fully general vector. Unfortunately, because SelectionDAG operates on just one basic block at a time, the shufflevector instruction that reveals whether the right-hand side of a shift *is* really a scalar is often not visible to CodeGen when it's needed. This adds another handler to CodeGenPrepare, to sink any useful shufflevector instructions down to the basic block where they're used, predicated on a target hook (since on other architectures, doing so will often just introduce extra real work). rdar://problem/16063505 llvm-svn: 201655
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
0 files changed, 0 insertions, 0 deletions