================
@@ -2381,11 +2392,104 @@ def AArch64SystemLibrary :
SystemRuntimeLibrary<isAArch64_ExceptArm64EC,
["compiler-rt", "libatomic", "llvm-client-runtime", "libm", "libc", "unwind",
"sme"]>;
+//===----------------------------------------------------------------------===//
+// ARM64EC helpers for the x87 `long double` format
+//===----------------------------------------------------------------------===//
+
+// These are not the exact x87 soft-float helpers of libgcc: The value stays
+// an 80-bit x87 image in a 16-byte slot, but every operation on it is carried
+// out in `double`. These are named with an `__arm64ec_` prefix so they will
+// not be confused with, or silently bound to, an exact implementation of the
+// same format.
+defset list<RuntimeLibcallImpl> Arm64ECF80Impls = {
+ def arm64ec___addxf3 : RuntimeLibcallImpl<ADD_F80, "__arm64ec_addxf3">;
----------------
lhmouse wrote:
An ARM64EC function is declared as both `__arm64ec_addxf3` and
`#__arm64ec_addxf3`. `#` prefix is needed when it may be called from x86-64
code; when that is known to be not possible, the compiler may call the unprefix
one (for example, calling a `static` function in the same TU).
The prefixes are duplicated elsewhere, not just for these functions.
https://github.com/llvm/llvm-project/pull/237057
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits