ARM: Thumb2 LDRD/STRD supports independent input/output regs
authorMatthias Braun <matze@braunis.de>
Wed, 3 Jun 2015 16:30:24 +0000 (16:30 +0000)
committerMatthias Braun <matze@braunis.de>
Wed, 3 Jun 2015 16:30:24 +0000 (16:30 +0000)
commite942914d29d3034a982bec52433990a9c9becfdb
tree04c45c27c127d523b1ea4060fc7a5184150ee2cd
parente017a6916381060120e579965bf4d3149c2c1b08
ARM: Thumb2 LDRD/STRD supports independent input/output regs

The existing code would unnecessarily break LDRD/STRD apart with
non-adjacent registers, on thumb2 this is not necessary.

Ideally on thumb2 we shouldn't match for ldrd/strd pre-regalloc anymore
as there is not reason to set register hints anymore, changing that is
something for a future patch however.

Differential Revision: http://reviews.llvm.org/D9694

Recommiting after the revert in r238821, the buildbot still failed with
the patch removed so there seems to be another reason for the breakage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238935 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMLoadStoreOptimizer.cpp
test/CodeGen/ARM/atomic-ops-v8.ll
test/CodeGen/ARM/ldrd.ll
test/CodeGen/Thumb2/float-ops.ll