ADR 0090: Conversion range results
Context
The public contract records undefined hardware overflow where CPU simulation may saturate, and backend paths expose non-saturating wrap and target-specific control combinations. Review must choose a deterministic result or a bounded implementation-defined result set for every source, destination, rounding, saturation, NaN, infinity, and out-of-range combination.
The proposal under review requires every conversion cross-product to have one deterministic result, an enumerated profile-specific allowed-result set, or pre-effect rejection. Public undefined-overflow wording and CPU-only saturation cannot remain architectural outcomes.
Affected domains
scalar-fp-convertscalar-fp-to-integerscalar-integer-to-fptile-converttile-dequantizetile-quantize
Alternatives considered
- portable normative rules;
- named target-profile rules;
- implementation-defined rules with explicit allowed sets; and
- unsupported-in-profile dispositions.
Blockers
- Complete the source/destination/rounding/saturation cross-product.
- Resolve the public CPU-saturation versus implementation default-OFF conflict.
- Choose overflow, NaN, and infinity results.
- Define non-saturating narrowing, wrap behavior, and omitted-saturation defaults per profile/type pair.
Acceptance obligations
- A complete conversion cross-product.
- Minimum, maximum, one-past, NaN, and infinity vectors.
- Saturation-off wrap vectors.
Decision
No conversion range result is accepted by this draft.