1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
llvm-mirror/lib
Kyle Butt 77f7a2b7a8 Codegen: [PPC] Fix PPCVSXFMAMutate to handle duplicates.
The purpose of PPCVSXFMAMutate is to elide copies by changing FMA forms
on PPC.

    %vreg6<def> = COPY %vreg96
    %vreg6<def,tied1> = XSMADDASP %vreg6<tied0>, %vreg5<kill>, %vreg7
    ;v6 = v6 + v5 * v7

is replaced by

    %vreg5<def,tied1> = XSMADDMSP %vreg5<tied0>, %vreg7, %vreg96
    ;v5 = v5 * v7 + v96

This was broken in the case where the target register was also used as a
multiplicand. Fix this case by checking for it and replacing both uses
with the copied register.

    %vreg6<def> = COPY %vreg96
    %vreg6<def,tied1> = XSMADDASP %vreg6<tied0>, %vreg5<kill>, %vreg6
    ;v6 = v6 + v5 * v6

is replaced by

    %vreg5<def,tied1> = XSMADDMSP %vreg5<tied0>, %vreg96, %vreg96
    ;v5 = v5 * v96 + v96

llvm-svn: 259617
2016-02-03 01:41:09 +00:00
..
Analysis [LVI] Fix debug output 2016-02-02 22:43:08 +00:00
AsmParser Remove autoconf support 2016-01-26 21:29:08 +00:00
Bitcode [ThinLTO] Ensure function summary output order is stable 2016-02-01 20:16:35 +00:00
CodeGen RegCoalescer: Making sure re-materialization defines all subranges 2016-02-03 00:22:32 +00:00
DebugInfo [DebugInfo] Support zero-length CIE in the _eh_frame parser 2016-01-27 14:05:35 +00:00
ExecutionEngine [Orc] Turn OrcX86_64::IndirectStubsInfo into a template helper class: 2016-02-02 19:31:15 +00:00
Fuzzer [libFuzzer] don't create too many trace-based mutations as it may be too slow 2016-02-02 23:17:45 +00:00
IR This patch adds MemorySSA to LLVM. 2016-02-02 22:46:49 +00:00
IRReader Remove autoconf support 2016-01-26 21:29:08 +00:00
LibDriver Remove autoconf support 2016-01-26 21:29:08 +00:00
LineEditor Remove autoconf support 2016-01-26 21:29:08 +00:00
Linker Improve efficiency of handling unmapped subprogram metadata 2016-01-28 15:08:09 +00:00
LTO Move MCTargetAsmParser.h to llvm/MC/MCParser where it belongs. 2016-01-27 10:01:28 +00:00
MC [codeview] Correctly handle inlining functions post-dominated by unreachable 2016-02-02 19:22:34 +00:00
Object Move MCTargetAsmParser.h to llvm/MC/MCParser where it belongs. 2016-01-27 10:01:28 +00:00
Option Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Passes Remove autoconf support 2016-01-26 21:29:08 +00:00
ProfileData [Profiling] Add a -sparse mode to llvm-profdata merge 2016-01-29 22:54:45 +00:00
Support Shrink character buffer size in raw_ostream::write_hex to 16 characters intead of 20 as that's the largest string a 64-bit hex value can be. 2016-01-31 01:12:38 +00:00
TableGen Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Target Codegen: [PPC] Fix PPCVSXFMAMutate to handle duplicates. 2016-02-03 01:41:09 +00:00
Transforms [LoopVersioning] Expose loop versioning as a pass too 2016-02-03 00:06:10 +00:00
CMakeLists.txt
LLVMBuild.txt