Commit 10cd6ec5 by Sebastian Perta Committed by Sebastian Perta

rl78-protos.h: New function declaration rl78_split_movdi

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

	* config/rl78/rl78-protos.h: New function declaration rl78_split_movdi
	* config/rl78/rl78.md: New define_expand "movdi"
	* config/rl78/rl78.c: New function definition rl78_split_movdi

From-SVN: r256960
parent de0ecff8
2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
* config/rl78/rl78-protos.h: New function declaration rl78_split_movdi
* config/rl78/rl78.md: New define_expand "movdi"
* config/rl78/rl78.c: New function definition rl78_split_movdi
2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/83862
......
......@@ -23,6 +23,7 @@ void rl78_emit_eh_epilogue (rtx);
void rl78_expand_compare (rtx *);
void rl78_expand_movsi (rtx *);
void rl78_split_movsi (rtx *, machine_mode);
void rl78_split_movdi (rtx *, enum machine_mode);
int rl78_force_nonfar_2 (rtx *, rtx (*gen)(rtx,rtx));
int rl78_force_nonfar_3 (rtx *, rtx (*gen)(rtx,rtx,rtx));
void rl78_expand_eh_epilogue (rtx);
......
......@@ -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. */
......
......@@ -719,6 +719,14 @@
(set_attr "is_g13_muldiv_insn" "yes")]
)
(define_expand "movdi"
[(set (match_operand:DI 0 "nonimmediate_operand" "")
(match_operand:DI 1 "general_operand" ""))]
""
"rl78_split_movdi(operands, DImode);
DONE;"
)
(define_expand "umindi3"
[(set (match_operand:DI 0 "nonimmediate_operand" "")
(umin:DI (match_operand:DI 1 "general_operand" "")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment