(arm_reload_in_hi): New function.

From-SVN: r8201
This commit is contained in:
Richard Earnshaw 1994-10-02 15:10:48 +00:00
parent 2ce9c1b9e1
commit 0a81f50004

View File

@ -1472,8 +1472,8 @@ store_multiple_operation (op, mode)
int
multi_register_push (op, mode)
rtx op;
enum machine_mode mode;
rtx op;
enum machine_mode mode;
{
if (GET_CODE (op) != PARALLEL
|| (GET_CODE (XVECEXP (op, 0, 0)) != SET)
@ -1713,6 +1713,35 @@ gen_compare_reg (code, x, y, fp)
return cc_reg;
}
void
arm_reload_in_hi (operands)
rtx *operands;
{
rtx base = find_replacement (&XEXP (operands[1], 0));
emit_insn (gen_zero_extendqisi2 (operands[2], gen_rtx (MEM, QImode, base)));
emit_insn (gen_zero_extendqisi2 (gen_rtx (SUBREG, SImode, operands[0], 0),
gen_rtx (MEM, QImode,
plus_constant (base, 1))));
if (BYTES_BIG_ENDIAN)
emit_insn (gen_rtx (SET, VOIDmode, gen_rtx (SUBREG, SImode,
operands[0], 0),
gen_rtx (IOR, SImode,
gen_rtx (ASHIFT, SImode,
gen_rtx (SUBREG, SImode,
operands[0], 0),
GEN_INT (8)),
operands[2])));
else
emit_insn (gen_rtx (SET, VOIDmode, gen_rtx (SUBREG, SImode,
operands[0], 0),
gen_rtx (IOR, SImode,
gen_rtx (ASHIFT, SImode,
operands[2],
GEN_INT (8)),
gen_rtx (SUBREG, SImode, operands[0], 0))));
}
void
arm_reload_out_hi (operands)
rtx *operands;