]> granicus.if.org Git - llvm/commit
Merging r242442:
authorHans Wennborg <hans@hanshq.net>
Thu, 16 Jul 2015 21:41:21 +0000 (21:41 +0000)
committerHans Wennborg <hans@hanshq.net>
Thu, 16 Jul 2015 21:41:21 +0000 (21:41 +0000)
commitbd53caa737f4e469c35c7c1655ea6acfdb6f2417
treeba0c92f67aaefdd83dee45c5f3709dc153ec9064
parent4998fdb3fa6fc1cce2ad29e58e0afda2bdfe298e
Merging r242442:
------------------------------------------------------------------------
r242442 | wschmidt | 2015-07-16 14:14:07 -0700 (Thu, 16 Jul 2015) | 14 lines

[PowerPC] v4i32 is a VSRCRegClass

I was looking at some vector code generation and kept seeing
unnecessary vector copies into the Altivec half of the VSX registers.
I discovered that we overlooked v4i32 when adding the register classes
for VSX; we only added v4f32 and v2f64.  This means that anything that
canonicalizes into v4i32 (which is a LOT of stuff) ends up being
forced into VRRC on its way to VSRC.

The fix is one line.  The rest of the patch is fixing up some test
cases whose code generation has changed as a result.

This seems like it would be a good candidate for backport to 3.7.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_37@242447 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPCISelLowering.cpp
test/CodeGen/PowerPC/vsx.ll
test/CodeGen/PowerPC/vsx_insert_extract_le.ll