diff options
author | Torbjorn Granlund <tege@gnu.org> | 1992-09-04 21:27:17 +0000 |
---|---|---|
committer | Torbjorn Granlund <tege@gnu.org> | 1992-09-04 21:27:17 +0000 |
commit | 9682683d886a6af57ad62fee36a74c6a22cdf939 (patch) | |
tree | 040f3cbbc70988ba3870f169c33fe4e1ccdb81b9 /gcc | |
parent | 1402d22caaff904d4561e7a6050e1b8df1ece89f (diff) | |
download | gcc-9682683d886a6af57ad62fee36a74c6a22cdf939.zip gcc-9682683d886a6af57ad62fee36a74c6a22cdf939.tar.gz gcc-9682683d886a6af57ad62fee36a74c6a22cdf939.tar.bz2 |
(output_move_double): Use %R to store at auto-incr/decr addr.
(output_move_double): Use %R to store at auto-incr/decr
addr. Split incr and decr cases for store.
From-SVN: r2051
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/pa/pa.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index aff943c..0f8b3b5 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -787,11 +787,15 @@ output_move_double (operands) if (optype0 == MEMOP) { rtx addr = XEXP (operands[0], 0); - if (GET_CODE (addr) == POST_INC || GET_CODE (addr) == POST_DEC - || GET_CODE (addr) == PRE_INC || GET_CODE (addr) == PRE_DEC) + if (GET_CODE (addr) == POST_INC || GET_CODE (addr) == PRE_INC) { operands[0] = gen_rtx (MEM, SImode, addr); - return "stw%M0 %1,%0\n\tstw%M0 %1,%0"; + return "stw%M0 %1,%0\n\tstw%M0 %R1,%0"; + } + else if (GET_CODE (addr) == POST_DEC || GET_CODE (addr) == PRE_DEC) + { + operands[0] = gen_rtx (MEM, SImode, addr); + return "stw%M0 %R1,%0\n\tstw%M0 %1,%0"; } } if (optype1 == MEMOP) @@ -1207,7 +1211,7 @@ output_block_move (operands, size_is_constant) if (size_is_constant) { - /* Size is an compile-time determined, and also not + /* Size is compile-time determined, and also not very small (such small cases are handled above). */ operands[4] = gen_rtx (CONST_INT, VOIDmode, n_bytes - 4); output_asm_insn ("ldo %4(0),%2", operands); |