1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 22:12:57 +02:00
llvm-mirror/test
Sanjay Patel f5d182f516 [x86] Implement combineRepeatedFPDivisors
Set the transform bar at 2 divisions because the fastest current
x86 FP divider circuit is in SandyBridge / Haswell at 10 cycle
latency (best case) relative to a 5 cycle multiplier. 
So that's the worst case for this transform (no latency win), 
but multiplies are obviously pipelined while divisions are not,
so there's still a big throughput win which we would expect to
show up in typical FP code.

These are the sequences I'm comparing:

  divss   %xmm2, %xmm0
  mulss   %xmm1, %xmm0
  divss   %xmm2, %xmm0

Becomes:

  movss   LCPI0_0(%rip), %xmm3    ## xmm3 = mem[0],zero,zero,zero
  divss   %xmm2, %xmm3
  mulss   %xmm3, %xmm0
  mulss   %xmm1, %xmm0
  mulss   %xmm3, %xmm0

[Ignore for the moment that we don't optimize the chain of 3 multiplies
into 2 independent fmuls followed by 1 dependent fmul...this is the DAG
version of: https://llvm.org/bugs/show_bug.cgi?id=21768 ...if we fix that,
then the transform becomes even more profitable on all targets.]

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

llvm-svn: 235012
2015-04-15 15:22:55 +00:00
..
Analysis Re-apply r234898 and fix tests. 2015-04-15 06:24:07 +00:00
Assembler Verifier: Check composite type template params 2015-04-06 17:04:58 +00:00
Bindings DebugInfo: Move new hierarchy into place 2015-03-03 17:24:31 +00:00
Bitcode Revert "Verify sizes when trying to read a VBR" 2015-04-15 11:10:17 +00:00
BugPoint bugpoint: Verify input files 2015-03-26 05:03:10 +00:00
CodeGen [x86] Implement combineRepeatedFPDivisors 2015-04-15 15:22:55 +00:00
DebugInfo DebugInfo: Pubnames: Do not include variable declarations in pubnames 2015-04-14 18:08:25 +00:00
ExecutionEngine [RuntimeDyld] Make sure we emit MachO __eh_frame and __gcc_except_tab sections, 2015-04-15 03:39:22 +00:00
Feature Rewrite test/Feature/md_on_instruction.ll 2015-03-20 18:34:53 +00:00
FileCheck FileCheck: Add CHECK-SAME 2015-02-26 04:53:00 +00:00
Instrumentation [ASan] Don't use stack malloc for 32-bit functions using inline asm 2015-04-02 21:44:55 +00:00
Integer [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
JitListener DebugInfo: Move new hierarchy into place 2015-03-03 17:24:31 +00:00
Linker tools: Unify how verifyModule() is called 2015-03-31 03:07:23 +00:00
LTO libLTO, llvm-lto, gold: Introduce flag for controlling optimization level. 2015-03-19 22:01:00 +00:00
MC Write section and section table entries in the same order. 2015-04-15 13:07:47 +00:00
Object [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
Other [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
SymbolRewriter
TableGen [TableGen] Prevent invalid code generation when emitting AssemblerPredicate conditions. 2015-04-07 12:10:11 +00:00
tools llvm-readobj: teach it to handle MachO Universal Archive correctly 2015-04-13 16:05:49 +00:00
Transforms [Inliner] Don't inline functions with frameescape calls 2015-04-14 20:38:14 +00:00
Unit
Verifier Verifier: Check composite type template params 2015-04-06 17:04:58 +00:00
YAMLParser
.clang-format
CMakeLists.txt test: Fix the dependencies for the check-llvm-* targets 2015-03-25 08:07:47 +00:00
lit.cfg Tell lit.cfg about more Windows triples. 2015-03-20 22:08:40 +00:00
lit.site.cfg.in test: Make a start on a test suite for libLTO. 2015-03-19 23:55:38 +00:00
Makefile test: Make a start on a test suite for libLTO. 2015-03-19 23:55:38 +00:00
Makefile.tests
TestRunner.sh