1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/lib
Davide Italiano 063a880856 [SimplifyLibCalls] Add a new transformation: pow(exp(x), y) -> exp(x*y)
This one is enabled only under -ffast-math (due to rounding/overflows)
but allows us to emit shorter code.

Before (on FreeBSD x86-64):
4007f0:       50                      push   %rax
4007f1:       f2 0f 11 0c 24          movsd  %xmm1,(%rsp)
4007f6:       e8 75 fd ff ff          callq  400570 <exp2@plt>
4007fb:       f2 0f 10 0c 24          movsd  (%rsp),%xmm1
400800:       58                      pop    %rax
400801:       e9 7a fd ff ff          jmpq   400580 <pow@plt>
400806:       66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
40080d:       00 00 00

After:
4007b0:       f2 0f 59 c1             mulsd  %xmm1,%xmm0
4007b4:       e9 87 fd ff ff          jmpq   400540 <exp2@plt>
4007b9:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)

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

llvm-svn: 251976
2015-11-03 20:32:23 +00:00
..
Analysis [LAA] LLE 2/6: Fix a NoDep case that should be a Forward dependence 2015-11-03 20:13:43 +00:00
AsmParser AsmParser: Remove implicit ilist iterator conversions, NFC 2015-10-20 01:12:49 +00:00
Bitcode Don't assert if materializing before seeing any function bodies 2015-11-03 13:48:26 +00:00
CodeGen Delete dead code. 2015-11-03 18:55:58 +00:00
DebugInfo Let the users of LLVMSymbolizer decide whether they want to symbolize inlined frames. 2015-10-30 00:40:20 +00:00
ExecutionEngine Revert "Revert "[Orc] Directly emit machine code for the x86 resolver block and trampolines."" 2015-11-03 16:40:37 +00:00
Fuzzer [libFuzzer] make -test_single_input more reliable: make sure the input's size is equal to it's capacity 2015-11-03 18:57:25 +00:00
IR [X86][XOP] Add support for the matching of the VPCMOV bit select instruction 2015-11-03 20:27:01 +00:00
IRReader Return a unique_ptr from getLazyBitcodeModule and parseBitcodeFile. NFC. 2015-06-16 22:27:55 +00:00
LibDriver [Option] Use an ArrayRef to store the Option Infos in OptTable. NFC 2015-10-21 16:30:42 +00:00
LineEditor
Linker Revert "Move metadata linking after lazy global materialization/linking." 2015-11-03 19:36:04 +00:00
LTO Reapply "LTO: Disable extra verify runs in release builds" 2015-09-15 23:05:59 +00:00
MC Don't create empty sections just to look like gas. 2015-11-03 20:02:22 +00:00
Object This never returns end(), simplify to use Child instead of iterator. NFC. 2015-11-03 01:20:44 +00:00
Option [Option] Use an ArrayRef to store the Option Infos in OptTable. NFC 2015-10-21 16:30:42 +00:00
Passes [PM] Port StripDeadPrototypes to the new pass manager 2015-10-30 23:28:12 +00:00
ProfileData [PGO] Value profiling (index format) code cleanup and testing 2015-11-02 05:08:23 +00:00
Support Use static instead of anonymous namespace for helper functions. NFC. 2015-11-02 14:57:24 +00:00
TableGen [TblGen] ArrayRefize TGParser. No functional change intended. 2015-10-24 12:46:45 +00:00
Target [X86][XOP] Add support for the matching of the VPCMOV bit select instruction 2015-11-03 20:27:01 +00:00
Transforms [SimplifyLibCalls] Add a new transformation: pow(exp(x), y) -> exp(x*y) 2015-11-03 20:32:23 +00:00
CMakeLists.txt LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00
LLVMBuild.txt Wrap some long lines in LLVMBuild files. NFC 2015-06-12 18:44:57 +00:00
Makefile LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00