[clang] [CLANG] Full support of complex multiplication and division. (PR #81514)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 27 11:40:51 PST 2024
================
@@ -396,7 +396,38 @@ class LangOptionsBase {
IncompleteOnly = 3,
};
- enum ComplexRangeKind { CX_Full, CX_Limited, CX_Fortran, CX_None };
+ /// Controls the various implementations for complex multiplication and
+ // division.
+ enum ComplexRangeKind {
+ /// Implementation of complex division and multiplication using a call to
+ /// runtime library functions(generally the case, but the BE might
+ /// sometimes replace the library call if it knows enough about the
+ /// potential range of the inputs). Overflow and non -finite values are
+ /// handled by the library implementation.
+ CX_Full,
+
+ /// Implementation of complex division offering an improved handling
+ /// for overflow in intermediate calculations with no special handling for
+ /// NaN and infinite and values.
+ CX_Improved,
+
+ /// Implementation of complex division using algebraic formulas at
+ /// higher precision. Overflow is handled. Non-finite values are handled in
+ /// some cases. If the target hardware does not have native support for a
+ /// higher precision data type, an implementation for the complex operation
+ /// will be used to provide improved guards against intermediate overflow,
+ /// but overflow and underflow may still occur in some cases. NaN and
+ /// infinite and values are not handled. This is the default value.
----------------
AaronBallman wrote:
```suggestion
/// infinite values are not handled. This is the default value.
```
Be sure to update this comment if switching the default to "full".
https://github.com/llvm/llvm-project/pull/81514
More information about the cfe-commits
mailing list