aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pru/pru.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/pru/pru.cc')
-rw-r--r--gcc/config/pru/pru.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/config/pru/pru.cc b/gcc/config/pru/pru.cc
index 322e319..3fdc56e 100644
--- a/gcc/config/pru/pru.cc
+++ b/gcc/config/pru/pru.cc
@@ -941,10 +941,19 @@ pru_init_libfuncs (void)
/* Long long. */
set_optab_libfunc (ashr_optab, DImode, "__pruabi_asrll");
- set_optab_libfunc (smul_optab, DImode, "__pruabi_mpyll");
set_optab_libfunc (ashl_optab, DImode, "__pruabi_lslll");
set_optab_libfunc (lshr_optab, DImode, "__pruabi_lsrll");
+ if (TARGET_OPT_MUL)
+ {
+ set_optab_libfunc (smul_optab, DImode, "__pruabi_mpyll");
+ }
+ else
+ {
+ set_optab_libfunc (smul_optab, DImode, "__pruabi_softmpyll");
+ set_optab_libfunc (smul_optab, SImode, "__pruabi_softmpyi");
+ }
+
set_optab_libfunc (sdiv_optab, SImode, "__pruabi_divi");
set_optab_libfunc (udiv_optab, SImode, "__pruabi_divu");
set_optab_libfunc (smod_optab, SImode, "__pruabi_remi");