================
@@ -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

Reply via email to