llvm-6502/lib
Jingyue Wu 69adc159ee Disable indvar widening if arithmetics on the wider type are more expensive
Summary:
IndVarSimplify 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.

Split from D6188, and based on D6195 which adds NVPTXTargetTransformInfo.

Fixes PR21148.

Test Plan:
Added @indvar_32_bit that verifies we do not widen an indvar if the arithmetics
on the wider type are more expensive.

Reviewers: jholewinski, eliben, meheff, atrick

Reviewed By: atrick

Subscribers: jholewinski, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221772 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-12 06:58:45 +00:00
..
Analysis Revert "IR: MDNode => Value" 2014-11-11 21:30:22 +00:00
AsmParser
Bitcode Revert "IR: MDNode => Value" 2014-11-11 21:30:22 +00:00
CodeGen Revert "IR: MDNode => Value" 2014-11-11 21:30:22 +00:00
DebugInfo
ExecutionEngine Remove the now unused StringRefMemoryObject.h. 2014-11-12 02:13:27 +00:00
IR Extend intrinsic name mangling to support arrays, named structs, and function types. 2014-11-12 00:21:51 +00:00
IRReader Remove unused variable. NFC. 2014-11-06 23:16:57 +00:00
LineEditor
Linker Revert "IR: MDNode => Value" 2014-11-11 21:30:22 +00:00
LTO libLTO: Assert if LTOCodeGenerator and LTOModule are from different contexts 2014-11-11 23:13:10 +00:00
MC Remove the now unused StringRefMemoryObject.h. 2014-11-12 02:13:27 +00:00
Object Object, support both mach-o archive t.o.c file names 2014-11-12 01:37:45 +00:00
Option
ProfileData Use ErrorOr for the ::create factory on instrumented and sample profilers. 2014-11-03 00:51:45 +00:00
Support Merge StreamableMemoryObject into MemoryObject. 2014-11-12 03:55:46 +00:00
TableGen
Target Disable indvar widening if arithmetics on the wider type are more expensive 2014-11-12 06:58:45 +00:00
Transforms Disable indvar widening if arithmetics on the wider type are more expensive 2014-11-12 06:58:45 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile