[LLVMbugs] [Bug 20832] New: APFloat::fusedMultiplyAdd is broken when addend is

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Sep 2 01:40:18 PDT 2014


            Bug ID: 20832
           Summary: APFloat::fusedMultiplyAdd is broken when addend is 0
           Product: libraries
           Version: trunk
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Support Libraries
          Assignee: unassignedbugs at nondot.org
          Reporter: greg_bedwell at sn.scee.net
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

I believe the following testcase demonstrates a bug in
APFloat::fusedMultiplyAdd.  I would expect this to produce a result of 56
((7*8)+0) but instead it produces 7.  The addend being 0 seems to be the key.

declare double @llvm.fma.f64(double, double, double) nounwind

define double @_Z4testv() nounwind {
  %1 = call double @llvm.fma.f64(double 7.000000e+00, double 8.000000e+00,
double 0.000000e+00)
  ret double %1

Using r216885:
llc test.ll -mtriple=x86_64-unknown-unknown -o -

we get the following constant generated:
.quad   4619567317775286272     # double 7

Within the function APFloat::fusedMultiplyAdd it calls multiplySpecials which
returns opOK allowing the call to addOrSubtract to occur, however at no point
is the actual multiplication performed, meaning that we essentially do 7+0,
ignoring the multiplicand entirely.

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140902/56300c73/attachment.html>

More information about the llvm-bugs mailing list