Changeset 565aaff in mainline


Ignore:
Timestamp:
2018-03-20T20:22:35Z (6 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3212921
Parents:
6d1d143
git-author:
Jakub Jermar <jakub@…> (2018-03-20 20:10:12)
git-committer:
Jakub Jermar <jakub@…> (2018-03-20 20:22:35)
Message:

Fix aeabi floating-point comparison helpers

According to the Run-time ABI for the ARM Architecture, the
floating-point helpers that compare floats or doubles, return 0 if the
test for the condition encoded in the respective helper's name fails and
1 if it succeeds.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/softfloat/comparison.c

    r6d1d143 r565aaff  
    587587        if ((is_float32_nan(ua.data)) || (is_float32_nan(ub.data))) {
    588588                // TODO: sigNaNs
    589                 return -1;
     589                return 0;
    590590        }
    591591
     
    606606        if ((is_float32_nan(ua.data)) || (is_float32_nan(ub.data))) {
    607607                // TODO: sigNaNs
    608                 return 1;
     608                return 0;
    609609        }
    610610
    611611        if (is_float32_lt(ua.data, ub.data))
    612                 return -1;
     612                return 1;
    613613
    614614        return 0;
     
    625625        if ((is_float32_nan(ua.data)) || (is_float32_nan(ub.data))) {
    626626                // TODO: sigNaNs
    627                 return -1;
     627                return 0;
    628628        }
    629629
    630630        if (is_float32_eq(ua.data, ub.data))
    631                 return 0;
     631                return 1;
    632632
    633633        if (is_float32_gt(ua.data, ub.data))
    634634                return 1;
    635635
    636         return -1;
     636        return 0;
    637637}
    638638
     
    647647        if ((is_float32_nan(ua.data)) || (is_float32_nan(ub.data))) {
    648648                // TODO: sigNaNs
    649                 return 1;
    650         }
    651 
    652         return is_float32_eq(ua.data, ub.data) - 1;
     649                return 0;
     650        }
     651
     652        return is_float32_eq(ua.data, ub.data);
    653653}
    654654
     
    804804        if ((is_float64_nan(ua.data)) || (is_float64_nan(ub.data))) {
    805805                // TODO: sigNaNs
    806                 return 1;
     806                return 0;
    807807        }
    808808
    809809        if (is_float64_lt(ua.data, ub.data))
    810                 return -1;
     810                return 1;
    811811
    812812        return 0;
     
    823823        if ((is_float64_nan(ua.data)) || (is_float64_nan(ub.data))) {
    824824                // TODO: sigNaNs
    825                 return 1;
    826         }
    827 
    828         return is_float64_eq(ua.data, ub.data) - 1;
     825                return 0;
     826        }
     827
     828        return is_float64_eq(ua.data, ub.data);
    829829}
    830830
     
    839839        if ((is_float64_nan(ua.data)) || (is_float64_nan(ub.data))) {
    840840                // TODO: sigNaNs
    841                 return -1;
     841                return 0;
    842842        }
    843843
     
    858858        if ((is_float64_nan(ua.data)) || (is_float64_nan(ub.data))) {
    859859                // TODO: sigNaNs
    860                 return -1;
     860                return 0;
    861861        }
    862862
    863863        if (is_float64_eq(ua.data, ub.data))
    864                 return 0;
     864                return 1;
    865865
    866866        if (is_float64_gt(ua.data, ub.data))
    867867                return 1;
    868868
    869         return -1;
     869        return 0;
    870870}
    871871
     
    880880        if ((is_float64_nan(ua.data)) || (is_float64_nan(ub.data))) {
    881881                // TODO: sigNaNs
    882                 return 1;
     882                return 0;
    883883        }
    884884
    885885        if (is_float64_eq(ua.data, ub.data))
    886                 return 0;
     886                return 1;
    887887
    888888        if (is_float64_lt(ua.data, ub.data))
    889                 return -1;
    890 
    891         return 1;
     889                return 1;
     890
     891        return 0;
    892892}
    893893
Note: See TracChangeset for help on using the changeset viewer.