As for 128-bit floating points on PPC, compiler should have three machine modes:
- IFmode, Always IBM extended double
- KFmode, Always IEEE 754R 128-bit floating point (implemented in D80374)
- TFmode, Matches the default for long double
- If -mabi=ieeelongdouble, TFmode is IEEE 754R 128-bit floating point, and the L/l suffixes produces IEEE 754R constants
- If -mabi=ibmlongdouble, TFmode is IBM extended double, and the L/l suffixes produces IBM extended double constants
It's a shame to have to do this in such a pervasively-included header as ASTContext.h. Can we make TargetInfo::RealType an enum class at namespace scope, so that we can just forward-declare it in this file?
This would also be a good opportunity to rename the enum to something like ModeTypeKind.
If we do that, it should be a separate patch, so that this can just be the __ibm128 functionality change.