Also pushed the following addendum to fix unstable rounding behavior
of the signed fx64 multiplications:

commit 2428677618e0388f289a56eaa5dc8a253692d5a6 (HEAD -> master, origin/master, origin/HEAD)

    AVR: Add missing SET to __mulQ64_work from previous commit.

    libgcc/
            * config/avr/lib1funcs-fixed.S (__mulQ64_work): Add a
            SET instruction (for signed) prior to ICALL-ing.

diff --git a/libgcc/config/avr/lib1funcs-fixed.S b/libgcc/config/avr/lib1funcs-fixed.S
index 02fc0b9fe69..52e32a059ef 100644
--- a/libgcc/config/avr/lib1funcs-fixed.S
+++ b/libgcc/config/avr/lib1funcs-fixed.S
@@ -1189,6 +1189,7 @@ DEFUN __mulQ64_work
     pop     B5
 #endif

+    set    ; for signed
     XICALL ; __muluxx3.2

     ;; C = T = LSB (bit -1) from the unsigned mult.

Johann

Am 21.07.26 um 11:16 schrieb Denis Chertykov:
пн, 20 июл. 2026 г. в 20:48, Georg-Johann Lay <[email protected]>:

This patch adds (un)saturated 64-bit fixed-point multiplications
to libgcc.  The saturating functions are just aliased of the
vanilla versions, which are also saturating.

Ok for trunk?

Ok. Please apply.

Denis


Reply via email to