ARM cost model: Increase the cost for vector casts that use the stack
authorArnold Schwaighofer <aschwaighofer@apple.com>
Tue, 12 Mar 2013 21:19:22 +0000 (21:19 +0000)
committerArnold Schwaighofer <aschwaighofer@apple.com>
Tue, 12 Mar 2013 21:19:22 +0000 (21:19 +0000)
commitb6f4872d29136637a3a5dfdf185f5afcbcdd3b2a
tree96c33d70c7bee11fa399affadb5339c42a8835df
parent9e999adb48beb61663f6abca667b8c85068ee585
ARM cost model: Increase the cost for vector casts that use the stack

Increase the cost of v8/v16-i8 to v8/v16-i32 casts and truncates as the backend
currently lowers those using stack accesses.

This was responsible for a significant degradation on
MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1
where we vectorize one loop to a vector factor of 16. After this patch we select
a vector factor of 4 which will generate reasonable code.

unsigned char cle[32];

void test(short c) {
  unsigned short compte;
  for (compte = 0; compte <= 31; compte++) {
    cle[compte] = cle[compte] ^ c;
  }
}

radar://13220512

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