[PATCH] Disable indvar widening if arithmetics on the wider type are more expensive

Jingyue Wu jingyue at google.com
Sun Nov 9 16:41:49 PST 2014


Hi atrick, jholewinski, eliben, meheff,

We should not widen an indvar if arithmetics on the wider indvar are more
expensive than those on the narrower indvar. For instance, although
NVPTX64 treats i64 as a legal type, an ADD on i64 is twice as expensive
as that on i32, because the hardware needs to simulate a 64-bit integer
using two 32-bit integers.

This patch
1. adds a NVPTX-specific TargetTransformInfo with specialized computing
of cost of arithmetic instructions;
2. compares the cost of arithmetics on the wider type and that on the
narrower type before widening an indvar.

Fixes PR21148.

http://reviews.llvm.org/D6188

Files:
  lib/Target/NVPTX/CMakeLists.txt
  lib/Target/NVPTX/NVPTX.h
  lib/Target/NVPTX/NVPTXTargetMachine.cpp
  lib/Target/NVPTX/NVPTXTargetMachine.h
  lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
  lib/Transforms/Scalar/IndVarSimplify.cpp
  test/Transforms/IndVarSimplify/no-widen-expensive.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D6188.15965.patch
Type: text/x-patch
Size: 13123 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141110/950018d2/attachment.bin>


More information about the llvm-commits mailing list