aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rl78/rl78.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/rl78/rl78.c')
-rw-r--r--gcc/config/rl78/rl78.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/config/rl78/rl78.c b/gcc/config/rl78/rl78.c
index 3e34a88..6f2551c 100644
--- a/gcc/config/rl78/rl78.c
+++ b/gcc/config/rl78/rl78.c
@@ -598,6 +598,18 @@ rl78_split_movsi (rtx *operands, machine_mode omode)
}
}
+void
+rl78_split_movdi (rtx *operands, enum machine_mode omode)
+{
+ rtx op00, op04, op10, op14;
+ op00 = rl78_subreg (SImode, operands[0], omode, 0);
+ op04 = rl78_subreg (SImode, operands[0], omode, 4);
+ op10 = rl78_subreg (SImode, operands[1], omode, 0);
+ op14 = rl78_subreg (SImode, operands[1], omode, 4);
+ emit_insn (gen_movsi (op00, op10));
+ emit_insn (gen_movsi (op04, op14));
+}
+
/* Used by various two-operand expanders which cannot accept all
operands in the "far" namespace. Force some such operands into
registers so that each pattern has at most one far operand. */