llvm-project/llvm
Andrea Di Biagio b08862c4f0 [TTI] Teach the cost heuristic how to query TLI to check if a zext/trunc is 'free' for the target.
Now that SimplifyCFG uses TTI for the cost heuristic, we can teach BasicTTIImpl
how to query TLI in order to get a more accurate cost for truncates and
zero-extends.

Before this patch, the basic cost heuristic in TargetTransformInfoImplCRTPBase
would have conservatively returned a 'default' TCC_Basic for all zero-extends,
and TCC_Free for truncates on native types.

This patch improves the heuristic so that we query TLI (if available) to get
more accurate answers. If TLI is available, then methods 'isZExtFree' and
'isTruncateFree' can be used to check if a zext/trunc is free for the target.

Added more test cases to SimplifyCFG/X86/speculate-cttz-ctlz.ll.
With this change, SimplifyCFG is now able to speculate a 'cheap' cttz/ctlz
immediately followed by a free zext/trunc.

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

llvm-svn: 228923
2015-02-12 14:17:24 +00:00
..
autoconf Fix some bashims. More information on https://wiki.ubuntu.com/DashAsBinSh. Reported initially on https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772302 & https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772301 2015-02-01 14:55:43 +00:00
bindings [OCaml] Add Llvm.build_empty_phi. 2015-02-06 13:42:03 +00:00
cmake Teach llvm_add_library() to find include dirs. 2015-02-10 05:04:37 +00:00
docs Don't promote asynch EH invokes of nounwind functions to calls 2015-02-11 01:23:16 +00:00
examples [Orc] Add a JITSymbol class to the Orc APIs, refactor APIs, update clients. 2015-02-09 01:20:51 +00:00
include [TTI] Teach the cost heuristic how to query TLI to check if a zext/trunc is 'free' for the target. 2015-02-12 14:17:24 +00:00
lib ARM: Fix another regression introduced in r223113 2015-02-12 13:37:28 +00:00
projects
test [TTI] Teach the cost heuristic how to query TLI to check if a zext/trunc is 'free' for the target. 2015-02-12 14:17:24 +00:00
tools Gold-plugin: Broaden scope of get/release_input_file to scope of Module. 2015-02-11 16:12:50 +00:00
unittests Fix warning due to unused private member variable. 2015-02-11 00:33:00 +00:00
utils [emacs] Get llvm-mode to font-lock "personality" 2015-02-09 00:30:03 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore Add one more vim swap file pattern 2015-01-30 21:59:28 +00:00
CMakeLists.txt Revert "Raising minimum required CMake version to 2.8.12.2." 2015-02-09 22:07:49 +00:00
CODE_OWNERS.TXT Assume code ownership for the PS4 to ensure patches get reviewed, per the Developer Policy. 2015-01-28 18:33:39 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt Revert test commit 2015-02-04 18:46:00 +00:00
configure Fix some bashims. More information on https://wiki.ubuntu.com/DashAsBinSh. Reported initially on https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772302 & https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772301 2015-02-01 14:55:43 +00:00
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.