[llvm] r216914 - Revert: [APFloat] Fixed a bug in method 'fusedMultiplyAdd'.
Andrea Di Biagio
andrea.dibiagio at gmail.com
Tue Sep 16 02:30:42 PDT 2014
On Tue, Sep 16, 2014 at 5:50 AM, Hal Finkel <hfinkel at anl.gov> wrote:
> ----- Original Message -----
>> From: "Andrea Di Biagio" <Andrea_DiBiagio at sn.scee.net>
>> To: llvm-commits at cs.uiuc.edu
>> Sent: Tuesday, September 2, 2014 12:22:50 PM
>> Subject: [llvm] r216914 - Revert: [APFloat] Fixed a bug in method 'fusedMultiplyAdd'.
>>
>> Author: adibiagio
>> Date: Tue Sep 2 12:22:49 2014
>> New Revision: 216914
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=216914&view=rev
>> Log:
>> Revert: [APFloat] Fixed a bug in method 'fusedMultiplyAdd'.
>>
>> This reverts revision 216913; the new test added at revision 216913
>> caused regression failures on a couple of buildbots.
>
> Did we ever figure this out?
>
> -Hal
Unfortunately not..
Basically, only for five buildbots the fused-multiply-add from test
case @PR20832 (added by test fold-builtin-fma.ll) was folded to a
completely bogus number. Interestingly, each failing buildbot found a
different number for the failing test case. That really confused me:
in case of an error, I was expecting _all_ the buildbots to fail with
the same error; instead, only a few builbots failed each time with
different results (I see if I can find the blame emails.. Hopefully I
didn't delete them).
Anyway, I tried to reproduce the regression failure on a different x86
machine (as far as I remember, three of the failing builbots were
bootstrapping clang on a x86_64 with both host and target
x86_64-unknown-linux-gnu). I tried on two other x86 machines with the
same configuration. Unfortunately I was never able to reproduce the
failure (it always worked for me).
>
>>
>>
>> Removed:
>> llvm/trunk/test/Transforms/InstSimplify/fold-builtin-fma.ll
>> Modified:
>> llvm/trunk/lib/Support/APFloat.cpp
>>
>> Modified: llvm/trunk/lib/Support/APFloat.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APFloat.cpp?rev=216914&r1=216913&r2=216914&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Support/APFloat.cpp (original)
>> +++ llvm/trunk/lib/Support/APFloat.cpp Tue Sep 2 12:22:49 2014
>> @@ -1801,7 +1801,7 @@ APFloat::fusedMultiplyAdd(const APFloat
>> extended-precision calculation. */
>> if (isFiniteNonZero() &&
>> multiplicand.isFiniteNonZero() &&
>> - addend.isFinite()) {
>> + addend.isFiniteNonZero()) {
>> lostFraction lost_fraction;
>>
>> lost_fraction = multiplySignificand(multiplicand, &addend);
>>
>> Removed: llvm/trunk/test/Transforms/InstSimplify/fold-builtin-fma.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstSimplify/fold-builtin-fma.ll?rev=216913&view=auto
>> ==============================================================================
>> --- llvm/trunk/test/Transforms/InstSimplify/fold-builtin-fma.ll
>> (original)
>> +++ llvm/trunk/test/Transforms/InstSimplify/fold-builtin-fma.ll
>> (removed)
>> @@ -1,119 +0,0 @@
>> -; RUN: opt -instsimplify -S < %s | FileCheck %s
>> -
>> -; Fixes PR20832
>> -; Make sure that we correctly fold a fused multiply-add where
>> operands
>> -; are all finite constants and addend is zero.
>> -
>> -declare double @llvm.fma.f64(double, double, double)
>> -
>> -
>> -define double @PR20832() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double 0.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @PR20832(
>> -; CHECK: ret double 5.600000e+01
>> -
>> -; Test builtin fma with all finite non-zero constants.
>> -define double @test_all_finite() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double 5.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_all_finite(
>> -; CHECK: ret double 6.100000e+01
>> -
>> -; Test builtin fma with a +/-NaN addend.
>> -define double @test_NaN_addend() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double
>> 0x7FF8000000000000)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_NaN_addend(
>> -; CHECK: ret double 0x7FF8000000000000
>> -
>> -define double @test_NaN_addend_2() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double
>> 0xFFF8000000000000)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_NaN_addend_2(
>> -; CHECK: ret double 0xFFF8000000000000
>> -
>> -; Test builtin fma with a +/-Inf addend.
>> -define double @test_Inf_addend() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double
>> 0x7FF0000000000000)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_Inf_addend(
>> -; CHECK: ret double 0x7FF0000000000000
>> -
>> -define double @test_Inf_addend_2() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double
>> 0xFFF0000000000000)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_Inf_addend_2(
>> -; CHECK: ret double 0xFFF0000000000000
>> -
>> -; Test builtin fma with one of the operands to the multiply being
>> +/-NaN.
>> -define double @test_NaN_1() {
>> - %1 = call double @llvm.fma.f64(double 0x7FF8000000000000, double
>> 8.0, double 0.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_NaN_1(
>> -; CHECK: ret double 0x7FF8000000000000
>> -
>> -
>> -define double @test_NaN_2() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double
>> 0x7FF8000000000000, double 0.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_NaN_2(
>> -; CHECK: ret double 0x7FF8000000000000
>> -
>> -
>> -define double @test_NaN_3() {
>> - %1 = call double @llvm.fma.f64(double 0xFFF8000000000000, double
>> 8.0, double 0.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_NaN_3(
>> -; CHECK: ret double 0x7FF8000000000000
>> -
>> -
>> -define double @test_NaN_4() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double
>> 0xFFF8000000000000, double 0.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_NaN_4(
>> -; CHECK: ret double 0x7FF8000000000000
>> -
>> -
>> -; Test builtin fma with one of the operands to the multiply being
>> +/-Inf.
>> -define double @test_Inf_1() {
>> - %1 = call double @llvm.fma.f64(double 0x7FF0000000000000, double
>> 8.0, double 0.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_Inf_1(
>> -; CHECK: ret double 0x7FF0000000000000
>> -
>> -
>> -define double @test_Inf_2() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double
>> 0x7FF0000000000000, double 0.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_Inf_2(
>> -; CHECK: ret double 0x7FF0000000000000
>> -
>> -
>> -define double @test_Inf_3() {
>> - %1 = call double @llvm.fma.f64(double 0xFFF0000000000000, double
>> 8.0, double 0.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_Inf_3(
>> -; CHECK: ret double 0xFFF0000000000000
>> -
>> -
>> -define double @test_Inf_4() {
>> - %1 = call double @llvm.fma.f64(double 7.0, double
>> 0xFFF0000000000000, double 0.0)
>> - ret double %1
>> -}
>> -; CHECK-LABEL: @test_Inf_4(
>> -; CHECK: ret double 0xFFF0000000000000
>> -
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
> --
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list