aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2024-08-09 12:15:28 +0200
committerGeorg-Johann Lay <avr@gjlay.de>2024-08-09 12:18:40 +0200
commita90c74ab161eab09802920fbd894bf55bc4fa797 (patch)
treefbc2db9ee29e3c2d05e41a85c75357312e39afc1
parent723e0f724e0c884a31ddf4a688604e7163ed31f2 (diff)
downloadgcc-a90c74ab161eab09802920fbd894bf55bc4fa797.zip
gcc-a90c74ab161eab09802920fbd894bf55bc4fa797.tar.gz
gcc-a90c74ab161eab09802920fbd894bf55bc4fa797.tar.bz2
AVR: Tidy up code for __[x]load insns.
gcc/ * config/avr/avr.md (*load_<mode>_libgcc, *xload_<mode>_libgcc): Tidy up code.
-rw-r--r--gcc/config/avr/avr.md30
1 files changed, 9 insertions, 21 deletions
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index fce5349..84dfe4c 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -536,7 +536,7 @@
;; "load_sf_libgcc"
(define_insn_and_split "load_<mode>_libgcc"
[(set (reg:MOVMODE 22)
- (match_operand:MOVMODE 0 "memory_operand" "m,m"))]
+ (match_operand:MOVMODE 0 "memory_operand" "m"))]
"avr_load_libgcc_p (operands[0])
&& REG_P (XEXP (operands[0], 0))
&& REG_Z == REGNO (XEXP (operands[0], 0))"
@@ -544,24 +544,18 @@
"&& reload_completed"
[(parallel [(set (reg:MOVMODE 22)
(match_dup 0))
- (clobber (reg:CC REG_CC))])]
- ""
- [(set_attr "isa" "rjmp,jmp")])
+ (clobber (reg:CC REG_CC))])])
(define_insn "*load_<mode>_libgcc"
[(set (reg:MOVMODE 22)
- (match_operand:MOVMODE 0 "memory_operand" "m,m"))
+ (match_operand:MOVMODE 0 "memory_operand" "m"))
(clobber (reg:CC REG_CC))]
"avr_load_libgcc_p (operands[0])
&& REG_P (XEXP (operands[0], 0))
&& REG_Z == REGNO (XEXP (operands[0], 0))
&& reload_completed"
- {
- operands[0] = GEN_INT (<SIZE>);
- return "%~call __load_%0";
- }
- [(set_attr "length" "1,2")
- (set_attr "isa" "rjmp,jmp")])
+ "%~call __load_<SIZE>"
+ [(set_attr "type" "xcall")])
;; "xload8qi_A"
@@ -657,7 +651,6 @@
;; "xload_si_libgcc" "xload_sq_libgcc" "xload_usq_libgcc" "xload_sa_libgcc" "xload_usa_libgcc"
;; "xload_sf_libgcc"
;; "xload_psi_libgcc"
-
(define_insn_and_split "xload_<mode>_libgcc"
[(set (reg:MOVMODE 22)
(mem:MOVMODE (lo_sum:PSI (reg:QI 21)
@@ -668,8 +661,8 @@
"#"
"&& reload_completed"
[(parallel [(set (reg:MOVMODE 22)
- (mem:MOVMODE (lo_sum:PSI (reg:QI 21)
- (reg:HI REG_Z))))
+ (mem:MOVMODE (lo_sum:PSI (reg:QI 21)
+ (reg:HI REG_Z))))
(clobber (reg:CC REG_CC))])])
(define_insn "*xload_<mode>_libgcc"
@@ -679,12 +672,7 @@
(clobber (reg:CC REG_CC))]
"avr_xload_libgcc_p (<MODE>mode)
&& reload_completed"
- {
- rtx x_bytes = GEN_INT (<SIZE>);
-
- output_asm_insn ("%~call __xload_%0", &x_bytes);
- return "";
- }
+ "%~call __xload_<SIZE>"
[(set_attr "type" "xcall")])
@@ -2278,7 +2266,7 @@
[(set (match_operand:PSI 0 "register_operand" "=r")
(plus:PSI (lshiftrt:PSI (match_operand:PSI 1 "register_operand" "r")
(const_int 23))
- (match_operand:PSI 2 "register_operand" "0")))]
+ (match_operand:PSI 2 "register_operand" "0")))]
""
"#"
"&& reload_completed"