llvm-project/llvm/test
Juergen Ributzka 4bf6c01cdb Reapply [FastISel] Let the target decide first if it wants to materialize a constant (215588).
Note: This was originally reverted to track down a buildbot error. This commit
exposed a latent bug that was fixed in r215753. Therefore it is reapplied
without any modifications.

I run it through SPEC2k and SPEC2k6 for AArch64 and it didn't introduce any new
regeressions.

Original commit message:
This changes the order in which FastISel tries to materialize a constant.
Originally it would try to use a simple target-independent approach, which
can lead to the generation of inefficient code.

On X86 this would result in the use of movabsq to materialize any 64bit
integer constant - even for simple and small values such as 0 and 1. Also
some very funny floating-point materialization could be observed too.

On AArch64 it would materialize the constant 0 in a register even the
architecture has an actual "zero" register.

On ARM it would generate unnecessary mov instructions or not use mvn.

This change simply changes the order and always asks the target first if it
likes to materialize the constant. This doesn't fix all the issues
mentioned above, but it enables the targets to implement such
optimizations.

Related to <rdar://problem/17420988>.

llvm-svn: 216006
2014-08-19 19:05:24 +00:00
..
Analysis Add @llvm.assume, lowering, and some basic properties 2014-07-25 21:13:35 +00:00
Assembler IR: Don't add inbounds to GEPs of extern_weak variables 2014-08-16 01:54:32 +00:00
Bindings [OCaml] Add Llvm.{string_of_const,const_element}. 2014-08-03 23:54:22 +00:00
Bitcode verify-uselistorder: Call verifyModule() and improve output 2014-08-18 23:44:14 +00:00
BugPoint llvm/test/BugPoint/compile-custom.ll: Use explicit %python to invoke a test script, compile-custom.ll.py, for shebang-incapable hosts. 2014-07-11 14:44:10 +00:00
CodeGen Reapply [FastISel] Let the target decide first if it wants to materialize a constant (215588). 2014-08-19 19:05:24 +00:00
DebugInfo Revert several FastISel commits to track down a buildbot error. 2014-08-14 19:56:28 +00:00
ExecutionEngine Add missing Interpreter intrinsic lowering for sin, cos and ceil 2014-08-08 15:00:12 +00:00
Feature Use "weak alias" instead of "alias weak" 2014-07-30 22:51:54 +00:00
FileCheck FileCheck: Add a flag to allow checking empty input 2014-08-07 18:40:37 +00:00
Instrumentation Revert r215415 which causse MSan to crash on a great deal of C++ code. 2014-08-13 09:19:39 +00:00
Integer
JitListener
LTO Change the default input for llvm-nm to be a.out instead of standard input 2014-06-23 20:27:53 +00:00
Linker Set comdats when lazily linking functions. 2014-08-15 20:17:08 +00:00
MC [mips] Add assembler support for .set arch=x directive. 2014-08-19 14:22:52 +00:00
Object llvm-objdump: don't print relocations in non-relocatable files. 2014-08-17 19:09:37 +00:00
Other Don't internalize all but main by default. 2014-08-05 20:10:38 +00:00
TableGen llvm/test/TableGen/*Foreach*.td: Remove XFAIL:vg_leak. They have not been failing since r215176. 2014-08-12 14:06:21 +00:00
Transforms Revert "Small refactor on VectorizerHint for deduplication" 2014-08-19 18:08:50 +00:00
Unit Let test/Unit/lit.cfg add config.shlibdir to $PATH on DLL platforms like cygming. 2014-07-04 05:11:55 +00:00
Verifier Use "weak alias" instead of "alias weak" 2014-07-30 22:51:54 +00:00
YAMLParser
tools Make llvm-objdump handle both arm and thumb disassembly from the same Mach-O 2014-08-18 20:21:02 +00:00
.clang-format
CMakeLists.txt Rename llvm-uselistorder => verify-uselistorder 2014-07-30 17:11:27 +00:00
Makefile Delete support for AuroraUX. 2014-08-14 15:15:09 +00:00
Makefile.tests
TestRunner.sh
lit.cfg Temporarily Revert "Nuke the old JIT." as it's not quite ready to 2014-08-07 22:02:54 +00:00
lit.site.cfg.in Add missing Interpreter intrinsic lowering for sin, cos and ceil 2014-08-08 15:00:12 +00:00