[ARM] Don't pessimize i32 vselect.
authorCharlie Turner <charlie.turner@arm.com>
Tue, 17 Nov 2015 17:25:15 +0000 (17:25 +0000)
committerCharlie Turner <charlie.turner@arm.com>
Tue, 17 Nov 2015 17:25:15 +0000 (17:25 +0000)
commit7a016a152d379bedea41b953d90410ba2c4ff1e2
tree5af1314a07120573e89c43385da831eb1fd412a4
parent7271f32728f748c8725b88d04317c6c131057c23
[ARM] Don't pessimize i32 vselect.

The underlying issues surrounding codegen for 32-bit vselects have been resolved. The pessimistic costs for 64-bit vselects remain due to the bad
scalarization that is still happening there.

I tested this on A57 in T32, A32 and A64 modes. I saw no regressions, and some improvements.

From my benchmarks, I saw these improvements in A57 (T32)
spec.cpu2000.ref.177_mesa 5.95%
lnt.SingleSource/Benchmarks/Shootout/strcat 12.93%
lnt.MultiSource/Benchmarks/MiBench/telecomm-CRC32/telecomm-CRC32 11.89%

I also measured A57 A32, A53 T32 and A9 T32 and found no performance regressions. I see much bigger wins in third-party benchmarks with this change

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253349 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMTargetTransformInfo.cpp
test/Analysis/CostModel/ARM/select.ll
test/CodeGen/ARM/vselect_imax.ll