[gcc r17-3237] AVR: Tidy round insns for 1- and 2-byte modes.

Georg-Johann Lay via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
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"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.