https://gcc.gnu.org/g:21d8d36e3e7b4255d9a62a85109d47cc67de0461

commit r17-3237-g21d8d36e3e7b4255d9a62a85109d47cc67de0461
Author: Georg-Johann Lay <[email protected]>
Date:   Wed Aug 12 20:48:14 2026 +0200

    AVR: Tidy round insns for 1- and 2-byte modes.
    
    gcc/
            * config/avr/avr-fixed.md (*round<mode>3.libgcc_split)
            (*round<mode>3.libgcc): Use the ALL12QA mode iterator instead
            of ALL1Q and ALL2QA separately.

Diff:
---
 gcc/config/avr/avr-fixed.md | 45 +++++++++++++--------------------------------
 1 file changed, 13 insertions(+), 32 deletions(-)

diff --git a/gcc/config/avr/avr-fixed.md b/gcc/config/avr/avr-fixed.md
index e9813ccea6d4..f909f764f0be 100644
--- a/gcc/config/avr/avr-fixed.md
+++ b/gcc/config/avr/avr-fixed.md
@@ -543,48 +543,29 @@
   [(set_attr "adjust_len" "round")])
 
 
-;; "*roundqq3.libgcc"  "*rounduqq3.libgcc"
+;; "*roundqq3.libgcc_split"  "*rounduqq3.libgcc_split"
+;; "*roundhq3.libgcc_split"  "*rounduhq3.libgcc_split"
+;; "*roundha3.libgcc_split"  "*rounduha3.libgcc_split"
 (define_insn_and_split "*round<mode>3.libgcc_split"
-  [(set (match_operand:ALL1Q 0 "register_operand"               "={r24}")
-        (unspec:ALL1Q [(match_operand:ALL1Q 1 "register_operand" "{r22}")
-                       (match_operand:QI 2 "register_operand"    "{r24}")]
-                      UNSPEC_ROUND))
-   (clobber (match_scratch:ALL1Q 3                              "={r22}"))]
+  [(set (match_operand:ALL12QA 0 "register_operand"                 "={r24}")
+        (unspec:ALL12QA [(match_operand:ALL12QA 1 "register_operand" "{r22}")
+                         (match_operand:QI 2 "register_operand"      "{r24}")]
+                        UNSPEC_ROUND))
+   (clobber (match_scratch:ALL12QA 3                                "={r22}"))]
   ""
   "#"
   "&& reload_completed"
   [(scratch)]
   { DONE_ADD_CCC })
 
-(define_insn "*round<mode>3.libgcc"
-  [(set (reg:ALL1Q 24)
-        (unspec:ALL1Q [(reg:ALL1Q 22)
-                       (reg:QI 24)] UNSPEC_ROUND))
-   (clobber (reg:ALL1Q 22))
-   (clobber (reg:CC REG_CC))]
-  "reload_completed"
-  "%~call __round<mode>3"
-  [(set_attr "type" "xcall")])
-
+;; "*roundqq3.libgcc"  "*rounduqq3.libgcc"
 ;; "*roundhq3.libgcc"  "*rounduhq3.libgcc"
 ;; "*roundha3.libgcc"  "*rounduha3.libgcc"
-(define_insn_and_split "*round<mode>3.libgcc_split"
-  [(set (match_operand:ALL2QA 0 "register_operand"                "={r24}")
-        (unspec:ALL2QA [(match_operand:ALL2QA 1 "register_operand" "{r22}")
-                        (match_operand:QI 2 "register_operand"     "{r24}")]
-                       UNSPEC_ROUND))
-   (clobber (match_scratch:ALL2QA 3                               "={r22}"))]
-  ""
-  "#"
-  "&& reload_completed"
-  [(scratch)]
-  { DONE_ADD_CCC })
-
 (define_insn "*round<mode>3.libgcc"
-  [(set (reg:ALL2QA 24)
-        (unspec:ALL2QA [(reg:ALL2QA 22)
-                        (reg:QI 24)] UNSPEC_ROUND))
-   (clobber (reg:ALL2QA 22))
+  [(set (reg:ALL12QA 24)
+        (unspec:ALL12QA [(reg:ALL12QA 22)
+                         (reg:QI 24)] UNSPEC_ROUND))
+   (clobber (reg:ALL12QA 22))
    (clobber (reg:CC REG_CC))]
   "reload_completed"
   "%~call __round<mode>3"

Reply via email to