[MachineCombiner] Support for floating-point FMA on ARM64 (re-commit r267098)

Description

[MachineCombiner] Support for floating-point FMA on ARM64 (re-commit r267098)

The original patch caused crashes because it could derefence a null pointer
for SelectionDAGTargetInfo for targets that do not define it.

Evaluates fmul+fadd -> fmadd combines and similar code sequences in the
machine combiner. It adds support for float and double similar to the existing
integer implementation. The key features are:

  • DAGCombiner checks whether it should combine greedily or let the machine

combiner do the evaluation. This is only supported on ARM64.

  • It gives preference to throughput over latency: the heuristic used is

to combine always in loops. The targets decides whether the machine
combiner should optimize for throughput or latency.

  • Supports for fmadd, f(n)msub, fmla, fmls patterns
  • On by default at O3 ffast-math

Details

Committed
ghoflehnerApr 23 2016, 10:14 PM
Parents
rL267327: [ELF][MIPS] Add test case to check creation of GOT entries for weak symbols. NFC
Branches
Unknown
Tags
Unknown