[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"