ARM: Teach A15 SDOptimizer to properly handle D-reg by-lane.
authorJim Grosbach <grosbach@apple.com>
Wed, 4 Sep 2013 19:08:44 +0000 (19:08 +0000)
committerJim Grosbach <grosbach@apple.com>
Wed, 4 Sep 2013 19:08:44 +0000 (19:08 +0000)
commit1bfa80359edc004bc8a91999de7c8e16708d2206
treeb238c6fa310540f864b26b929e3a4fd6ed5a0a88
parent1d7df349ab7fa051ffe88589b06a1aa514f84a00
ARM: Teach A15 SDOptimizer to properly handle D-reg by-lane.

These instructions, such as vmul.f32, require the second source operand to
be in D0-D15 rather than the full D0-D31. When optimizing, make sure to
account for that by constraining the register class of a replacement virtual
register to be compatible with the virtual register(s) it's replacing.

I've been unsuccessful in creating a non-fragile regression test. This issue
was detected by the LLVM nightly test suite running on an A15 (Bullet).

PR17093: http://llvm.org/bugs/show_bug.cgi?id=17093

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189972 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/A15SDOptimizer.cpp