================ @@ -214,13 +223,41 @@ struct APFloatBase { // types, there are no infinity or NaN values. The format is detailed in // https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf S_Float4E2M1FN, - + // TODO: Documentation is missing. S_x87DoubleExtended, - S_MaxSemantics = S_x87DoubleExtended, + // These are legacy semantics for the fallback, inaccrurate implementation + // of IBM double-double, if the accurate semPPCDoubleDouble doesn't handle + // the operation. It's equivalent to having an IEEE number with consecutive + // 106 bits of mantissa and 11 bits of exponent. + // + // It's not equivalent to IBM double-double. For example, a legit IBM + // double-double, 1 + epsilon: + // + // 1 + epsilon = 1 + (1 >> 1076) + // + // is not representable by a consecutive 106 bits of mantissa. + // + // Currently, these semantics are used in the following way: + // + // semPPCDoubleDouble -> (IEEEdouble, IEEEdouble) -> + // (64-bit APInt, 64-bit APInt) -> (128-bit APInt) -> + // semPPCDoubleDoubleLegacy -> IEEE operations + // + // We use bitcastToAPInt() to get the bit representation (in APInt) of the + // underlying IEEEdouble, then use the APInt constructor to construct the + // legacy IEEE float. + // + // TODO: Implement all operations in semPPCDoubleDouble, and delete these + // semantics. + S_PPCDoubleDoubleLegacy, ---------------- arsenm wrote:
So it seems like this was intentionally not added here as a publicly visible kind? https://github.com/llvm/llvm-project/pull/117291 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits