[PeepholeOptimizer] Take advantage of the isInsertSubreg property in the
authorQuentin Colombet <qcolombet@apple.com>
Thu, 21 Aug 2014 00:19:16 +0000 (00:19 +0000)
committerQuentin Colombet <qcolombet@apple.com>
Thu, 21 Aug 2014 00:19:16 +0000 (00:19 +0000)
commite817bdd304e89b1e0d6fcadba1c66466625e704a
tree954fc7995becab73cfef43e77d6c4dd6518d3fb9
parent7599acc2af3554f770457dd8bbd2cb1d29e5ca7d
[PeepholeOptimizer] Take advantage of the isInsertSubreg property in the
advanced copy optimization.

This is the final step patch toward transforming:
udiv    r0, r0, r2
udiv    r1, r1, r3
vmov.32 d16[0], r0
vmov.32 d16[1], r1
vmov    r0, r1, d16
bx      lr

into:
udiv    r0, r0, r2
udiv    r1, r1, r3
bx      lr

Indeed, thanks to this patch, this optimization is able to look through
vmov.32 d16[0], r0
vmov.32 d16[1], r1

and is able to rewrite the following sequence:
vmov.32 d16[0], r0
vmov.32 d16[1], r1
vmov    r0, r1, d16

into simple generic GPR copies that the coalescer managed to remove.

<rdar://problem/12702965>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216144 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/PeepholeOptimizer.cpp
test/CodeGen/ARM/adv-copy-opt.ll