Combine fmul vector FP constants when unsafe math is allowed.
authorSanjay Patel <spatel@rotateright.com>
Thu, 11 Sep 2014 15:45:27 +0000 (15:45 +0000)
committerSanjay Patel <spatel@rotateright.com>
Thu, 11 Sep 2014 15:45:27 +0000 (15:45 +0000)
commit04bb0e721fa93d292bf961e56ce2bb4948b5b46c
tree8cf2bd816dd37b21a9aff0a0dd4c99dcbb87733c
parent338692246d5a764f202e2a1a1c9c3398e186fb3e
Combine fmul vector FP constants when unsafe math is allowed.

This is an extension of the change made with r215820:
http://llvm.org/viewvc/llvm-project?view=revision&revision=215820

That patch allowed combining of splatted vector FP constants that are multiplied.

This patch allows combining non-uniform vector FP constants too by relaxing the
check on the type of vector. Also, canonicalize a vector fmul in the
same way that we already do for scalars - if only one operand of the fmul is a
constant, make it operand 1. Otherwise, we miss potential folds.

This fold is also done by -instcombine, but it's possible that extra
fmuls may have been generated during lowering.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217599 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/X86/fmul-combines.ll