llvm-6502/lib
Jingyue Wu 83c8e732dd Disable indvar widening if arithmetics on the wider type are more expensive
Summary:
Reapply r221772. The old patch breaks the bot because the @indvar_32_bit test
was run whether NVPTX was enabled or not.

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. This test is run only when NVPTX is
enabled.

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@221799 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-12 18:09:15 +00:00
..
Analysis Revert "IR: MDNode => Value" 2014-11-11 21:30:22 +00:00
AsmParser X86: Implement the vectorcall calling convention 2014-10-28 01:29:26 +00:00
Bitcode Return the number of read bytes in MemoryObject::readBytes. 2014-11-12 17:11:16 +00:00
CodeGen Revert "IR: MDNode => Value" 2014-11-11 21:30:22 +00:00
DebugInfo [dwarfdump] Dump DW_AT_ranges values inline in the debug_info dump. 2014-10-23 04:08:34 +00:00
ExecutionEngine Fixing a -Wcast-qual warning; NFC. 2014-11-12 13:55: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 Add support for small-model PIC for PowerPC. 2014-11-12 15:16:30 +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 Return the number of read bytes in MemoryObject::readBytes. 2014-11-12 17:11:16 +00:00
TableGen
Target Disable indvar widening if arithmetics on the wider type are more expensive 2014-11-12 18:09:15 +00:00
Transforms Disable indvar widening if arithmetics on the wider type are more expensive 2014-11-12 18:09:15 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile