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