rl78.c (rl78_emit_libcall): New function.
[gcc] * config/rl78/rl78.c (rl78_emit_libcall): New function. * config/rl78/rl78-protos.h (rl78_emit_libcall): New function. * config/rl78/rl78.md: New define_expand "adddi3". [libgcc] * config/rl78/adddi3.S: New assembly file. * config/rl78/t-rl78: Added adddi3.S to LIB2ADD. From-SVN: r253748
This commit is contained in:
parent
41841c3269
commit
a0bf6cf784
|
@ -1,3 +1,9 @@
|
||||||
|
2017-10-13 Sebastian Perta <sebastian.perta@renesas.com>
|
||||||
|
|
||||||
|
* config/rl78/rl78.c (rl78_emit_libcall): New function.
|
||||||
|
* config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
|
||||||
|
* config/rl78/rl78.md: New define_expand "adddi3".
|
||||||
|
|
||||||
2017-10-13 Jan Hubicka <hubicka@ucw.cz>
|
2017-10-13 Jan Hubicka <hubicka@ucw.cz>
|
||||||
|
|
||||||
* cfghooks.c (verify_flow_info): Disable check that all probabilities
|
* cfghooks.c (verify_flow_info): Disable check that all probabilities
|
||||||
|
|
|
@ -54,3 +54,13 @@ void rl78_output_aligned_common (FILE *, tree, const char *,
|
||||||
int, int, int);
|
int, int, int);
|
||||||
|
|
||||||
int rl78_one_far_p (rtx *operands, int num_operands);
|
int rl78_one_far_p (rtx *operands, int num_operands);
|
||||||
|
|
||||||
|
#ifdef RTX_CODE
|
||||||
|
#ifdef HAVE_MACHINE_MODES
|
||||||
|
|
||||||
|
rtx rl78_emit_libcall (const char*, enum rtx_code,
|
||||||
|
enum machine_mode, enum machine_mode,
|
||||||
|
int, rtx*);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
|
@ -4791,6 +4791,45 @@ rl78_addsi3_internal (rtx * operands, unsigned int alternative)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtx
|
||||||
|
rl78_emit_libcall (const char *name, enum rtx_code code,
|
||||||
|
enum machine_mode dmode, enum machine_mode smode,
|
||||||
|
int noperands, rtx *operands)
|
||||||
|
{
|
||||||
|
rtx ret;
|
||||||
|
rtx_insn *insns;
|
||||||
|
rtx libcall;
|
||||||
|
rtx equiv;
|
||||||
|
|
||||||
|
start_sequence ();
|
||||||
|
libcall = gen_rtx_SYMBOL_REF (Pmode, name);
|
||||||
|
|
||||||
|
switch (noperands)
|
||||||
|
{
|
||||||
|
case 2:
|
||||||
|
ret = emit_library_call_value (libcall, NULL_RTX, LCT_CONST,
|
||||||
|
dmode, operands[1], smode);
|
||||||
|
equiv = gen_rtx_fmt_e (code, dmode, operands[1]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
ret = emit_library_call_value (libcall, NULL_RTX,
|
||||||
|
LCT_CONST, dmode,
|
||||||
|
operands[1], smode, operands[2],
|
||||||
|
smode);
|
||||||
|
equiv = gen_rtx_fmt_ee (code, dmode, operands[1], operands[2]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
gcc_unreachable ();
|
||||||
|
}
|
||||||
|
|
||||||
|
insns = get_insns ();
|
||||||
|
end_sequence ();
|
||||||
|
emit_libcall_block (insns, operands[0], ret, equiv);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#undef TARGET_PREFERRED_RELOAD_CLASS
|
#undef TARGET_PREFERRED_RELOAD_CLASS
|
||||||
#define TARGET_PREFERRED_RELOAD_CLASS rl78_preferred_reload_class
|
#define TARGET_PREFERRED_RELOAD_CLASS rl78_preferred_reload_class
|
||||||
|
|
|
@ -224,6 +224,16 @@
|
||||||
DONE;"
|
DONE;"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(define_expand "adddi3"
|
||||||
|
[(set (match_operand:DI 0 "nonimmediate_operand" "")
|
||||||
|
(plus:DI (match_operand:DI 1 "general_operand" "")
|
||||||
|
(match_operand:DI 2 "general_operand" "")))
|
||||||
|
]
|
||||||
|
""
|
||||||
|
"rl78_emit_libcall (\"__adddi3\", PLUS, DImode, DImode, 3, operands);
|
||||||
|
DONE;"
|
||||||
|
)
|
||||||
|
|
||||||
(define_insn "addsi3_internal_virt"
|
(define_insn "addsi3_internal_virt"
|
||||||
[(set (match_operand:SI 0 "nonimmediate_operand" "=v,&vm, vm")
|
[(set (match_operand:SI 0 "nonimmediate_operand" "=v,&vm, vm")
|
||||||
(plus:SI (match_operand:SI 1 "general_operand" "0, vim, vim")
|
(plus:SI (match_operand:SI 1 "general_operand" "0, vim, vim")
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2017-10-13 Sebastian Perta <sebastian.perta@renesas.com>
|
||||||
|
|
||||||
|
* config/rl78/adddi3.S: New assembly file.
|
||||||
|
* config/rl78/t-rl78: Added adddi3.S to LIB2ADD.
|
||||||
|
|
||||||
2017-10-13 Jakub Jelinek <jakub@redhat.com>
|
2017-10-13 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR target/82274
|
PR target/82274
|
||||||
|
|
|
@ -30,7 +30,8 @@ LIB2ADD = \
|
||||||
$(srcdir)/config/rl78/bit-count.S \
|
$(srcdir)/config/rl78/bit-count.S \
|
||||||
$(srcdir)/config/rl78/fpbit-sf.S \
|
$(srcdir)/config/rl78/fpbit-sf.S \
|
||||||
$(srcdir)/config/rl78/fpmath-sf.S \
|
$(srcdir)/config/rl78/fpmath-sf.S \
|
||||||
$(srcdir)/config/rl78/cmpsi2.S
|
$(srcdir)/config/rl78/cmpsi2.S \
|
||||||
|
$(srcdir)/config/rl78/adddi3.S
|
||||||
|
|
||||||
LIB2FUNCS_EXCLUDE = _clzhi2 _clzsi2 _ctzhi2 _ctzsi2 \
|
LIB2FUNCS_EXCLUDE = _clzhi2 _clzsi2 _ctzhi2 _ctzsi2 \
|
||||||
_popcounthi2 _popcountsi2 \
|
_popcounthi2 _popcountsi2 \
|
||||||
|
|
Loading…
Reference in New Issue