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)
commit90774f3c8f900e6276fca0a8dbd97dc166cbe14e
tree79de463003275fd7c00b28dd3aca366bb8489f77
parentacd31db0ce8aab71f00506c9d8bd1b390e6d9f81
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

llvm-svn: 176898
llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
llvm/test/Analysis/CostModel/ARM/cast.ll