Add atomics on floating point types

Issue #132 resolved
Dan Bonachea created an issue

GASNet-EX remote atomics support includes data types float and double, which are currently missing at the UPC++ level.

We should add them to UPC++ spec and implementation.

Spec work:

  1. Minor mechanical changes in the overview section prose
  2. Minor mechanical changes in the atomic_domain constructor preconditions
  3. Adding a section somewhere to discuss semantic deviations from IEEE 754 arithmetic permitted for atomics on floating point types (to enable offload). Here is the current GEX text on this matter:
// + Operations on floating-point data types are not guaranteed to obey all
//   rules in the IEEE 754 standard even when the C float and double types
//   otherwise do conform.  Deviations from IEEE 754 include (at least):
//     - Operations on signalling NaNs have undefined behavior.
//     - (F)CAS *may* be performed as if on integers of the same width.
//       This could result in non-conforming behavior with quiet NaNs
//       or negative zero.
//     - MIN, MAX, FMIN and FMAX *may* be performed as if on "sign
//       and magnitude representation integers" of the same width.
//       This could result in non-conforming behavior with quiet NaNs.
//       (see https://en.wikipedia.org/wiki/IEEE_754-1985, and especially
//       the section Comparing_floating-point_numbers)
//   [THIS PARAGRAPH MAY NOT BE A COMPLETE LIST OF NON-IEEE BEHAVIORS]

Comments (1)

  1. Log in to comment