Commit b092b471 by Jim Wilson

*** empty log message ***

From-SVN: r1237
parent 23a900dc
...@@ -355,6 +355,13 @@ convert_move (to, from, unsignedp) ...@@ -355,6 +355,13 @@ convert_move (to, from, unsignedp)
return; return;
} }
#endif #endif
#ifdef HAVE_extendsfxf2
if (HAVE_extendsfxf2 && from_mode == SFmode && to_mode == XFmode)
{
emit_unop_insn (CODE_FOR_extendsfxf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_extendsftf2 #ifdef HAVE_extendsftf2
if (HAVE_extendsftf2 && from_mode == SFmode && to_mode == TFmode) if (HAVE_extendsftf2 && from_mode == SFmode && to_mode == TFmode)
{ {
...@@ -362,6 +369,13 @@ convert_move (to, from, unsignedp) ...@@ -362,6 +369,13 @@ convert_move (to, from, unsignedp)
return; return;
} }
#endif #endif
#ifdef HAVE_extenddfxf2
if (HAVE_extenddfxf2 && from_mode == DFmode && to_mode == XFmode)
{
emit_unop_insn (CODE_FOR_extenddfxf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_extenddftf2 #ifdef HAVE_extenddftf2
if (HAVE_extenddftf2 && from_mode == DFmode && to_mode == TFmode) if (HAVE_extenddftf2 && from_mode == DFmode && to_mode == TFmode)
{ {
...@@ -376,6 +390,13 @@ convert_move (to, from, unsignedp) ...@@ -376,6 +390,13 @@ convert_move (to, from, unsignedp)
return; return;
} }
#endif #endif
#ifdef HAVE_truncxfsf2
if (HAVE_truncxfsf2 && from_mode == XFmode && to_mode == SFmode)
{
emit_unop_insn (CODE_FOR_truncxfsf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_trunctfsf2 #ifdef HAVE_trunctfsf2
if (HAVE_trunctfsf2 && from_mode == TFmode && to_mode == SFmode) if (HAVE_trunctfsf2 && from_mode == TFmode && to_mode == SFmode)
{ {
...@@ -383,6 +404,13 @@ convert_move (to, from, unsignedp) ...@@ -383,6 +404,13 @@ convert_move (to, from, unsignedp)
return; return;
} }
#endif #endif
#ifdef HAVE_truncxfdf2
if (HAVE_truncxfdf2 && from_mode == XFmode && to_mode == DFmode)
{
emit_unop_insn (CODE_FOR_truncxfdf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_trunctfdf2 #ifdef HAVE_trunctfdf2
if (HAVE_trunctfdf2 && from_mode == TFmode && to_mode == DFmode) if (HAVE_trunctfdf2 && from_mode == TFmode && to_mode == DFmode)
{ {
...@@ -391,13 +419,72 @@ convert_move (to, from, unsignedp) ...@@ -391,13 +419,72 @@ convert_move (to, from, unsignedp)
} }
#endif #endif
if (from_mode == SFmode && to_mode == DFmode) libcall = (rtx) 0;
switch (from_mode)
{
case SFmode:
switch (to_mode)
{
case DFmode:
libcall = extendsfdf2_libfunc; libcall = extendsfdf2_libfunc;
else if (from_mode == DFmode && to_mode == SFmode) break;
case XFmode:
libcall = extendsfxf2_libfunc;
break;
case TFmode:
libcall = extendsftf2_libfunc;
break;
}
break;
case DFmode:
switch (to_mode)
{
case SFmode:
libcall = truncdfsf2_libfunc; libcall = truncdfsf2_libfunc;
else break;
/* This conversion is not implemented yet. There aren't any TFmode
library calls. */ case XFmode:
libcall = extenddfxf2_libfunc;
break;
case TFmode:
libcall = extenddftf2_libfunc;
break;
}
break;
case XFmode:
switch (to_mode)
{
case SFmode:
libcall = truncxfsf2_libfunc;
break;
case DFmode:
libcall = truncxfdf2_libfunc;
break;
}
break;
case TFmode:
switch (to_mode)
{
case SFmode:
libcall = trunctfsf2_libfunc;
break;
case DFmode:
libcall = trunctfdf2_libfunc;
break;
}
break;
}
if (libcall == (rtx) 0)
/* This conversion is not implemented yet. */
abort (); abort ();
emit_library_call (libcall, 1, to_mode, 1, from, from_mode); emit_library_call (libcall, 1, to_mode, 1, from, from_mode);
......
...@@ -341,37 +341,99 @@ enum optab_methods ...@@ -341,37 +341,99 @@ enum optab_methods
implicitly and not via optabs. */ implicitly and not via optabs. */
extern rtx extendsfdf2_libfunc; extern rtx extendsfdf2_libfunc;
extern rtx extendsfxf2_libfunc;
extern rtx extendsftf2_libfunc;
extern rtx extenddfxf2_libfunc;
extern rtx extenddftf2_libfunc;
extern rtx truncdfsf2_libfunc; extern rtx truncdfsf2_libfunc;
extern rtx truncxfsf2_libfunc;
extern rtx trunctfsf2_libfunc;
extern rtx truncxfdf2_libfunc;
extern rtx trunctfdf2_libfunc;
extern rtx memcpy_libfunc; extern rtx memcpy_libfunc;
extern rtx bcopy_libfunc; extern rtx bcopy_libfunc;
extern rtx memcmp_libfunc; extern rtx memcmp_libfunc;
extern rtx bcmp_libfunc; extern rtx bcmp_libfunc;
extern rtx memset_libfunc; extern rtx memset_libfunc;
extern rtx bzero_libfunc; extern rtx bzero_libfunc;
extern rtx eqsf2_libfunc; extern rtx eqsf2_libfunc;
extern rtx nesf2_libfunc; extern rtx nesf2_libfunc;
extern rtx gtsf2_libfunc; extern rtx gtsf2_libfunc;
extern rtx gesf2_libfunc; extern rtx gesf2_libfunc;
extern rtx ltsf2_libfunc; extern rtx ltsf2_libfunc;
extern rtx lesf2_libfunc; extern rtx lesf2_libfunc;
extern rtx eqdf2_libfunc; extern rtx eqdf2_libfunc;
extern rtx nedf2_libfunc; extern rtx nedf2_libfunc;
extern rtx gtdf2_libfunc; extern rtx gtdf2_libfunc;
extern rtx gedf2_libfunc; extern rtx gedf2_libfunc;
extern rtx ltdf2_libfunc; extern rtx ltdf2_libfunc;
extern rtx ledf2_libfunc; extern rtx ledf2_libfunc;
extern rtx floatdisf_libfunc;
extern rtx eqxf2_libfunc;
extern rtx nexf2_libfunc;
extern rtx gtxf2_libfunc;
extern rtx gexf2_libfunc;
extern rtx ltxf2_libfunc;
extern rtx lexf2_libfunc;
extern rtx eqtf2_libfunc;
extern rtx netf2_libfunc;
extern rtx gttf2_libfunc;
extern rtx getf2_libfunc;
extern rtx lttf2_libfunc;
extern rtx letf2_libfunc;
extern rtx floatsisf_libfunc; extern rtx floatsisf_libfunc;
extern rtx floatdidf_libfunc; extern rtx floatdisf_libfunc;
extern rtx floattisf_libfunc;
extern rtx floatsidf_libfunc; extern rtx floatsidf_libfunc;
extern rtx floatdidf_libfunc;
extern rtx floattidf_libfunc;
extern rtx floatsixf_libfunc;
extern rtx floatdixf_libfunc;
extern rtx floattixf_libfunc;
extern rtx floatsitf_libfunc;
extern rtx floatditf_libfunc;
extern rtx floattitf_libfunc;
extern rtx fixsfsi_libfunc; extern rtx fixsfsi_libfunc;
extern rtx fixsfdi_libfunc; extern rtx fixsfdi_libfunc;
extern rtx fixsfti_libfunc;
extern rtx fixdfsi_libfunc; extern rtx fixdfsi_libfunc;
extern rtx fixdfdi_libfunc; extern rtx fixdfdi_libfunc;
extern rtx fixdfti_libfunc;
extern rtx fixxfsi_libfunc;
extern rtx fixxfdi_libfunc;
extern rtx fixxfti_libfunc;
extern rtx fixtfsi_libfunc;
extern rtx fixtfdi_libfunc;
extern rtx fixtfti_libfunc;
extern rtx fixunssfsi_libfunc; extern rtx fixunssfsi_libfunc;
extern rtx fixunssfdi_libfunc; extern rtx fixunssfdi_libfunc;
extern rtx fixunssfti_libfunc;
extern rtx fixunsdfsi_libfunc; extern rtx fixunsdfsi_libfunc;
extern rtx fixunsdfdi_libfunc; extern rtx fixunsdfdi_libfunc;
extern rtx fixunsdfti_libfunc;
extern rtx fixunsxfsi_libfunc;
extern rtx fixunsxfdi_libfunc;
extern rtx fixunsxfti_libfunc;
extern rtx fixunstfsi_libfunc;
extern rtx fixunstfdi_libfunc;
extern rtx fixunstfti_libfunc;
typedef rtx (*rtxfun) (); typedef rtx (*rtxfun) ();
......
...@@ -83,37 +83,99 @@ optab strlen_optab; ...@@ -83,37 +83,99 @@ optab strlen_optab;
implicitly and not via optabs. */ implicitly and not via optabs. */
rtx extendsfdf2_libfunc; rtx extendsfdf2_libfunc;
rtx extendsfxf2_libfunc;
rtx extendsftf2_libfunc;
rtx extenddfxf2_libfunc;
rtx extenddftf2_libfunc;
rtx truncdfsf2_libfunc; rtx truncdfsf2_libfunc;
rtx truncxfsf2_libfunc;
rtx trunctfsf2_libfunc;
rtx truncxfdf2_libfunc;
rtx trunctfdf2_libfunc;
rtx memcpy_libfunc; rtx memcpy_libfunc;
rtx bcopy_libfunc; rtx bcopy_libfunc;
rtx memcmp_libfunc; rtx memcmp_libfunc;
rtx bcmp_libfunc; rtx bcmp_libfunc;
rtx memset_libfunc; rtx memset_libfunc;
rtx bzero_libfunc; rtx bzero_libfunc;
rtx eqsf2_libfunc; rtx eqsf2_libfunc;
rtx nesf2_libfunc; rtx nesf2_libfunc;
rtx gtsf2_libfunc; rtx gtsf2_libfunc;
rtx gesf2_libfunc; rtx gesf2_libfunc;
rtx ltsf2_libfunc; rtx ltsf2_libfunc;
rtx lesf2_libfunc; rtx lesf2_libfunc;
rtx eqdf2_libfunc; rtx eqdf2_libfunc;
rtx nedf2_libfunc; rtx nedf2_libfunc;
rtx gtdf2_libfunc; rtx gtdf2_libfunc;
rtx gedf2_libfunc; rtx gedf2_libfunc;
rtx ltdf2_libfunc; rtx ltdf2_libfunc;
rtx ledf2_libfunc; rtx ledf2_libfunc;
rtx floatdisf_libfunc;
rtx eqxf2_libfunc;
rtx nexf2_libfunc;
rtx gtxf2_libfunc;
rtx gexf2_libfunc;
rtx ltxf2_libfunc;
rtx lexf2_libfunc;
rtx eqtf2_libfunc;
rtx netf2_libfunc;
rtx gttf2_libfunc;
rtx getf2_libfunc;
rtx lttf2_libfunc;
rtx letf2_libfunc;
rtx floatsisf_libfunc; rtx floatsisf_libfunc;
rtx floatdidf_libfunc; rtx floatdisf_libfunc;
rtx floattisf_libfunc;
rtx floatsidf_libfunc; rtx floatsidf_libfunc;
rtx floatdidf_libfunc;
rtx floattidf_libfunc;
rtx floatsixf_libfunc;
rtx floatdixf_libfunc;
rtx floattixf_libfunc;
rtx floatsitf_libfunc;
rtx floatditf_libfunc;
rtx floattitf_libfunc;
rtx fixsfsi_libfunc; rtx fixsfsi_libfunc;
rtx fixsfdi_libfunc; rtx fixsfdi_libfunc;
rtx fixsfti_libfunc;
rtx fixdfsi_libfunc; rtx fixdfsi_libfunc;
rtx fixdfdi_libfunc; rtx fixdfdi_libfunc;
rtx fixdfti_libfunc;
rtx fixxfsi_libfunc;
rtx fixxfdi_libfunc;
rtx fixxfti_libfunc;
rtx fixtfsi_libfunc;
rtx fixtfdi_libfunc;
rtx fixtfti_libfunc;
rtx fixunssfsi_libfunc; rtx fixunssfsi_libfunc;
rtx fixunssfdi_libfunc; rtx fixunssfdi_libfunc;
rtx fixunssfti_libfunc;
rtx fixunsdfsi_libfunc; rtx fixunsdfsi_libfunc;
rtx fixunsdfdi_libfunc; rtx fixunsdfdi_libfunc;
rtx fixunsdfti_libfunc;
rtx fixunsxfsi_libfunc;
rtx fixunsxfdi_libfunc;
rtx fixunsxfti_libfunc;
rtx fixunstfsi_libfunc;
rtx fixunstfdi_libfunc;
rtx fixunstfti_libfunc;
/* Indexed by the rtx-code for a conditional (eg. EQ, LT,...) /* Indexed by the rtx-code for a conditional (eg. EQ, LT,...)
gives the gen_function to make a branch to test that condition. */ gives the gen_function to make a branch to test that condition. */
...@@ -1709,6 +1771,60 @@ emit_float_lib_cmp (x, y, comparison) ...@@ -1709,6 +1771,60 @@ emit_float_lib_cmp (x, y, comparison)
libfunc = ledf2_libfunc; libfunc = ledf2_libfunc;
break; break;
} }
else if (mode == XFmode)
switch (comparison)
{
case EQ:
libfunc = eqxf2_libfunc;
break;
case NE:
libfunc = nexf2_libfunc;
break;
case GT:
libfunc = gtxf2_libfunc;
break;
case GE:
libfunc = gexf2_libfunc;
break;
case LT:
libfunc = ltxf2_libfunc;
break;
case LE:
libfunc = lexf2_libfunc;
break;
}
else if (mode == TFmode)
switch (comparison)
{
case EQ:
libfunc = eqtf2_libfunc;
break;
case NE:
libfunc = netf2_libfunc;
break;
case GT:
libfunc = gttf2_libfunc;
break;
case GE:
libfunc = getf2_libfunc;
break;
case LT:
libfunc = lttf2_libfunc;
break;
case LE:
libfunc = letf2_libfunc;
break;
}
else else
{ {
enum machine_mode wider_mode; enum machine_mode wider_mode;
...@@ -2090,6 +2206,27 @@ init_fixtab () ...@@ -2090,6 +2206,27 @@ init_fixtab ()
fixtab[(int) DFmode][(int) TImode][0] = CODE_FOR_fixdfti2; fixtab[(int) DFmode][(int) TImode][0] = CODE_FOR_fixdfti2;
#endif #endif
#ifdef HAVE_fixxfqi2
if (HAVE_fixxfqi2)
fixtab[(int) XFmode][(int) QImode][0] = CODE_FOR_fixxfqi2;
#endif
#ifdef HAVE_fixxfhi2
if (HAVE_fixxfhi2)
fixtab[(int) XFmode][(int) HImode][0] = CODE_FOR_fixxfhi2;
#endif
#ifdef HAVE_fixxfsi2
if (HAVE_fixxfsi2)
fixtab[(int) XFmode][(int) SImode][0] = CODE_FOR_fixxfsi2;
#endif
#ifdef HAVE_fixxfdi2
if (HAVE_fixxfdi2)
fixtab[(int) XFmode][(int) DImode][0] = CODE_FOR_fixxfdi2;
#endif
#ifdef HAVE_fixxfti2
if (HAVE_fixxfti2)
fixtab[(int) XFmode][(int) TImode][0] = CODE_FOR_fixxfti2;
#endif
#ifdef HAVE_fixtfqi2 #ifdef HAVE_fixtfqi2
if (HAVE_fixtfqi2) if (HAVE_fixtfqi2)
fixtab[(int) TFmode][(int) QImode][0] = CODE_FOR_fixtfqi2; fixtab[(int) TFmode][(int) QImode][0] = CODE_FOR_fixtfqi2;
...@@ -2149,6 +2286,27 @@ init_fixtab () ...@@ -2149,6 +2286,27 @@ init_fixtab ()
fixtab[(int) DFmode][(int) TImode][1] = CODE_FOR_fixunsdfti2; fixtab[(int) DFmode][(int) TImode][1] = CODE_FOR_fixunsdfti2;
#endif #endif
#ifdef HAVE_fixunsxfqi2
if (HAVE_fixunsxfqi2)
fixtab[(int) XFmode][(int) QImode][1] = CODE_FOR_fixunsxfqi2;
#endif
#ifdef HAVE_fixunsxfhi2
if (HAVE_fixunsxfhi2)
fixtab[(int) XFmode][(int) HImode][1] = CODE_FOR_fixunsxfhi2;
#endif
#ifdef HAVE_fixunsxfsi2
if (HAVE_fixunsxfsi2)
fixtab[(int) XFmode][(int) SImode][1] = CODE_FOR_fixunsxfsi2;
#endif
#ifdef HAVE_fixunsxfdi2
if (HAVE_fixunsxfdi2)
fixtab[(int) XFmode][(int) DImode][1] = CODE_FOR_fixunsxfdi2;
#endif
#ifdef HAVE_fixunsxfti2
if (HAVE_fixunsxfti2)
fixtab[(int) XFmode][(int) TImode][1] = CODE_FOR_fixunsxfti2;
#endif
#ifdef HAVE_fixunstfqi2 #ifdef HAVE_fixunstfqi2
if (HAVE_fixunstfqi2) if (HAVE_fixunstfqi2)
fixtab[(int) TFmode][(int) QImode][1] = CODE_FOR_fixunstfqi2; fixtab[(int) TFmode][(int) QImode][1] = CODE_FOR_fixunstfqi2;
...@@ -2208,6 +2366,27 @@ init_fixtab () ...@@ -2208,6 +2366,27 @@ init_fixtab ()
fixtrunctab[(int) DFmode][(int) TImode][0] = CODE_FOR_fix_truncdfti2; fixtrunctab[(int) DFmode][(int) TImode][0] = CODE_FOR_fix_truncdfti2;
#endif #endif
#ifdef HAVE_fix_truncxfqi2
if (HAVE_fix_truncxfqi2)
fixtrunctab[(int) XFmode][(int) QImode][0] = CODE_FOR_fix_truncxfqi2;
#endif
#ifdef HAVE_fix_truncxfhi2
if (HAVE_fix_truncxfhi2)
fixtrunctab[(int) XFmode][(int) HImode][0] = CODE_FOR_fix_truncxfhi2;
#endif
#ifdef HAVE_fix_truncxfsi2
if (HAVE_fix_truncxfsi2)
fixtrunctab[(int) XFmode][(int) SImode][0] = CODE_FOR_fix_truncxfsi2;
#endif
#ifdef HAVE_fix_truncxfdi2
if (HAVE_fix_truncxfdi2)
fixtrunctab[(int) XFmode][(int) DImode][0] = CODE_FOR_fix_truncxfdi2;
#endif
#ifdef HAVE_fix_truncxfti2
if (HAVE_fix_truncxfti2)
fixtrunctab[(int) XFmode][(int) TImode][0] = CODE_FOR_fix_truncxfti2;
#endif
#ifdef HAVE_fix_trunctfqi2 #ifdef HAVE_fix_trunctfqi2
if (HAVE_fix_trunctfqi2) if (HAVE_fix_trunctfqi2)
fixtrunctab[(int) TFmode][(int) QImode][0] = CODE_FOR_fix_trunctfqi2; fixtrunctab[(int) TFmode][(int) QImode][0] = CODE_FOR_fix_trunctfqi2;
...@@ -2267,6 +2446,27 @@ init_fixtab () ...@@ -2267,6 +2446,27 @@ init_fixtab ()
fixtrunctab[(int) DFmode][(int) TImode][1] = CODE_FOR_fixuns_truncdfti2; fixtrunctab[(int) DFmode][(int) TImode][1] = CODE_FOR_fixuns_truncdfti2;
#endif #endif
#ifdef HAVE_fixuns_truncxfqi2
if (HAVE_fixuns_truncxfqi2)
fixtrunctab[(int) XFmode][(int) QImode][1] = CODE_FOR_fixuns_truncxfqi2;
#endif
#ifdef HAVE_fixuns_truncxfhi2
if (HAVE_fixuns_truncxfhi2)
fixtrunctab[(int) XFmode][(int) HImode][1] = CODE_FOR_fixuns_truncxfhi2;
#endif
#ifdef HAVE_fixuns_truncxfsi2
if (HAVE_fixuns_truncxfsi2)
fixtrunctab[(int) XFmode][(int) SImode][1] = CODE_FOR_fixuns_truncxfsi2;
#endif
#ifdef HAVE_fixuns_truncxfdi2
if (HAVE_fixuns_truncxfdi2)
fixtrunctab[(int) XFmode][(int) DImode][1] = CODE_FOR_fixuns_truncxfdi2;
#endif
#ifdef HAVE_fixuns_truncxfti2
if (HAVE_fixuns_truncxfti2)
fixtrunctab[(int) XFmode][(int) TImode][1] = CODE_FOR_fixuns_truncxfti2;
#endif
#ifdef HAVE_fixuns_trunctfqi2 #ifdef HAVE_fixuns_trunctfqi2
if (HAVE_fixuns_trunctfqi2) if (HAVE_fixuns_trunctfqi2)
fixtrunctab[(int) TFmode][(int) QImode][1] = CODE_FOR_fixuns_trunctfqi2; fixtrunctab[(int) TFmode][(int) QImode][1] = CODE_FOR_fixuns_trunctfqi2;
...@@ -2352,6 +2552,27 @@ init_floattab () ...@@ -2352,6 +2552,27 @@ init_floattab ()
floattab[(int) DFmode][(int) TImode][0] = CODE_FOR_floattidf2; floattab[(int) DFmode][(int) TImode][0] = CODE_FOR_floattidf2;
#endif #endif
#ifdef HAVE_floatqixf2
if (HAVE_floatqixf2)
floattab[(int) XFmode][(int) QImode][0] = CODE_FOR_floatqixf2;
#endif
#ifdef HAVE_floathixf2
if (HAVE_floathixf2)
floattab[(int) XFmode][(int) HImode][0] = CODE_FOR_floathixf2;
#endif
#ifdef HAVE_floatsixf2
if (HAVE_floatsixf2)
floattab[(int) XFmode][(int) SImode][0] = CODE_FOR_floatsixf2;
#endif
#ifdef HAVE_floatdixf2
if (HAVE_floatdixf2)
floattab[(int) XFmode][(int) DImode][0] = CODE_FOR_floatdixf2;
#endif
#ifdef HAVE_floattixf2
if (HAVE_floattixf2)
floattab[(int) XFmode][(int) TImode][0] = CODE_FOR_floattixf2;
#endif
#ifdef HAVE_floatqitf2 #ifdef HAVE_floatqitf2
if (HAVE_floatqitf2) if (HAVE_floatqitf2)
floattab[(int) TFmode][(int) QImode][0] = CODE_FOR_floatqitf2; floattab[(int) TFmode][(int) QImode][0] = CODE_FOR_floatqitf2;
...@@ -2415,6 +2636,27 @@ init_floattab () ...@@ -2415,6 +2636,27 @@ init_floattab ()
floattab[(int) DFmode][(int) TImode][1] = CODE_FOR_floatunstidf2; floattab[(int) DFmode][(int) TImode][1] = CODE_FOR_floatunstidf2;
#endif #endif
#ifdef HAVE_floatunsqixf2
if (HAVE_floatunsqixf2)
floattab[(int) XFmode][(int) QImode][1] = CODE_FOR_floatunsqixf2;
#endif
#ifdef HAVE_floatunshixf2
if (HAVE_floatunshixf2)
floattab[(int) XFmode][(int) HImode][1] = CODE_FOR_floatunshixf2;
#endif
#ifdef HAVE_floatunssixf2
if (HAVE_floatunssixf2)
floattab[(int) XFmode][(int) SImode][1] = CODE_FOR_floatunssixf2;
#endif
#ifdef HAVE_floatunsdixf2
if (HAVE_floatunsdixf2)
floattab[(int) XFmode][(int) DImode][1] = CODE_FOR_floatunsdixf2;
#endif
#ifdef HAVE_floatunstixf2
if (HAVE_floatunstixf2)
floattab[(int) XFmode][(int) TImode][1] = CODE_FOR_floatunstixf2;
#endif
#ifdef HAVE_floatunsqitf2 #ifdef HAVE_floatunsqitf2
if (HAVE_floatunsqitf2) if (HAVE_floatunsqitf2)
floattab[(int) TFmode][(int) QImode][1] = CODE_FOR_floatunsqitf2; floattab[(int) TFmode][(int) QImode][1] = CODE_FOR_floatunsqitf2;
...@@ -2541,8 +2783,8 @@ expand_float (to, from, unsignedp) ...@@ -2541,8 +2783,8 @@ expand_float (to, from, unsignedp)
else else
#endif #endif
/* No hardware instruction available; call a library /* No hardware instruction available; call a library rotine to convert from
to convert from SImode or DImode into SFmode or DFmode. */ SImode, DImode, or TImode into SFmode, DFmode, XFmode, or TFmode. */
{ {
rtx libfcn; rtx libfcn;
rtx insns; rtx insns;
...@@ -2563,6 +2805,8 @@ expand_float (to, from, unsignedp) ...@@ -2563,6 +2805,8 @@ expand_float (to, from, unsignedp)
libfcn = floatsisf_libfunc; libfcn = floatsisf_libfunc;
else if (GET_MODE (from) == DImode) else if (GET_MODE (from) == DImode)
libfcn = floatdisf_libfunc; libfcn = floatdisf_libfunc;
else if (GET_MODE (from) == TImode)
libfcn = floattisf_libfunc;
else else
abort (); abort ();
} }
...@@ -2572,6 +2816,30 @@ expand_float (to, from, unsignedp) ...@@ -2572,6 +2816,30 @@ expand_float (to, from, unsignedp)
libfcn = floatsidf_libfunc; libfcn = floatsidf_libfunc;
else if (GET_MODE (from) == DImode) else if (GET_MODE (from) == DImode)
libfcn = floatdidf_libfunc; libfcn = floatdidf_libfunc;
else if (GET_MODE (from) == TImode)
libfcn = floattidf_libfunc;
else
abort ();
}
else if (GET_MODE (to) == XFmode)
{
if (GET_MODE (from) == SImode)
libfcn = floatsixf_libfunc;
else if (GET_MODE (from) == DImode)
libfcn = floatdixf_libfunc;
else if (GET_MODE (from) == TImode)
libfcn = floattixf_libfunc;
else
abort ();
}
else if (GET_MODE (to) == TFmode)
{
if (GET_MODE (from) == SImode)
libfcn = floatsitf_libfunc;
else if (GET_MODE (from) == DImode)
libfcn = floatditf_libfunc;
else if (GET_MODE (from) == TImode)
libfcn = floattitf_libfunc;
else else
abort (); abort ();
} }
...@@ -2749,6 +3017,8 @@ expand_fix (to, from, unsignedp) ...@@ -2749,6 +3017,8 @@ expand_fix (to, from, unsignedp)
libfcn = unsignedp ? fixunssfsi_libfunc : fixsfsi_libfunc; libfcn = unsignedp ? fixunssfsi_libfunc : fixsfsi_libfunc;
else if (GET_MODE (to) == DImode) else if (GET_MODE (to) == DImode)
libfcn = unsignedp ? fixunssfdi_libfunc : fixsfdi_libfunc; libfcn = unsignedp ? fixunssfdi_libfunc : fixsfdi_libfunc;
else if (GET_MODE (to) == TImode)
libfcn = unsignedp ? fixunssfti_libfunc : fixsfti_libfunc;
else else
abort (); abort ();
} }
...@@ -2758,6 +3028,30 @@ expand_fix (to, from, unsignedp) ...@@ -2758,6 +3028,30 @@ expand_fix (to, from, unsignedp)
libfcn = unsignedp ? fixunsdfsi_libfunc : fixdfsi_libfunc; libfcn = unsignedp ? fixunsdfsi_libfunc : fixdfsi_libfunc;
else if (GET_MODE (to) == DImode) else if (GET_MODE (to) == DImode)
libfcn = unsignedp ? fixunsdfdi_libfunc : fixdfdi_libfunc; libfcn = unsignedp ? fixunsdfdi_libfunc : fixdfdi_libfunc;
else if (GET_MODE (to) == TImode)
libfcn = unsignedp ? fixunsdfti_libfunc : fixdfti_libfunc;
else
abort ();
}
else if (GET_MODE (from) == XFmode)
{
if (GET_MODE (to) == SImode)
libfcn = unsignedp ? fixunsxfsi_libfunc : fixxfsi_libfunc;
else if (GET_MODE (to) == DImode)
libfcn = unsignedp ? fixunsxfdi_libfunc : fixxfdi_libfunc;
else if (GET_MODE (to) == TImode)
libfcn = unsignedp ? fixunsxfti_libfunc : fixxfti_libfunc;
else
abort ();
}
else if (GET_MODE (from) == TFmode)
{
if (GET_MODE (to) == SImode)
libfcn = unsignedp ? fixunstfsi_libfunc : fixtfsi_libfunc;
else if (GET_MODE (to) == DImode)
libfcn = unsignedp ? fixunstfdi_libfunc : fixtfdi_libfunc;
else if (GET_MODE (to) == TImode)
libfcn = unsignedp ? fixunstfti_libfunc : fixtfti_libfunc;
else else
abort (); abort ();
} }
...@@ -2806,6 +3100,85 @@ init_optab (code) ...@@ -2806,6 +3100,85 @@ init_optab (code)
return op; return op;
} }
/* Initialize the libfunc fields of an entire group of entries in some
optab. Each entry is set equal to a string consisting of a leading
pair of underscores followed by a generic operation name followed by
a mode name (downshifted to lower case) followed by a single character
representing the number of operands for the given operation (which is
usually one of the characters '2', '3', or '4').
OPTABLE is the table in which libfunc fields are to be initialized.
FIRST_MODE is the first machine mode index in the given optab to
initialize.
LAST_MODE is the last machine mode index in the given optab to
initialize.
OPNAME is the generic (string) name of the operation.
SUFFIX is the character which specifies the number of operands for
the given generic operation.
*/
static void
init_libfuncs (optable, first_mode, last_mode, opname, suffix)
register optab optable;
register char *opname;
register enum machine_mode first_mode;
register enum machine_mode last_mode;
register char suffix;
{
register enum machine_mode mode;
register unsigned opname_len = strlen (opname);
for (mode = first_mode; mode <= last_mode; mode++)
{
register char *mname = mode_name[(int) mode];
register unsigned mname_len = strlen (mname);
register char *libfunc_name
= (char *) xmalloc (2 + opname_len + mname_len + 1 + 1);
register char *p;
register char *q;
p = libfunc_name;
*p++ = '_';
*p++ = '_';
for (q = opname; *q; )
*p++ = *q++;
for (q = mname; *q; q++)
*p++ = tolower (*q);
*p++ = suffix;
*p++ = '\0';
optable->handlers[(int) mode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, libfunc_name);
}
}
/* Initialize the libfunc fields of an entire group of entries in some
optab which correspond to all integer mode operations. The parameters
have the same meaning as similarly named ones for the `init_libfuncs'
routine. (See above). */
static void
init_integral_libfuncs (optable, opname, suffix)
register optab optable;
register char *opname;
register char suffix;
{
init_libfuncs (optable, SImode, TImode, opname, suffix);
}
/* Initialize the libfunc fields of an entire group of entries in some
optab which correspond to all real mode operations. The parameters
have the same meaning as similarly named ones for the `init_libfuncs'
routine. (See above). */
static void
init_floating_libfuncs (optable, opname, suffix)
register optab optable;
register char *opname;
register char suffix;
{
init_libfuncs (optable, SFmode, TFmode, opname, suffix);
}
/* Call this once to initialize the contents of the optabs /* Call this once to initialize the contents of the optabs
appropriately for the current target machine. */ appropriately for the current target machine. */
...@@ -2888,14 +3261,16 @@ init_optabs () ...@@ -2888,14 +3261,16 @@ init_optabs ()
if (HAVE_adddf3) if (HAVE_adddf3)
add_optab->handlers[(int) DFmode].insn_code = CODE_FOR_adddf3; add_optab->handlers[(int) DFmode].insn_code = CODE_FOR_adddf3;
#endif #endif
#ifdef HAVE_addxf3
if (HAVE_addxf3)
add_optab->handlers[(int) XFmode].insn_code = CODE_FOR_addxf3;
#endif
#ifdef HAVE_addtf3 #ifdef HAVE_addtf3
if (HAVE_addtf3) if (HAVE_addtf3)
add_optab->handlers[(int) TFmode].insn_code = CODE_FOR_addtf3; add_optab->handlers[(int) TFmode].insn_code = CODE_FOR_addtf3;
#endif #endif
add_optab->handlers[(int) SFmode].libfunc init_integral_libfuncs (add_optab, "add", '3');
= gen_rtx (SYMBOL_REF, Pmode, "__addsf3"); init_floating_libfuncs (add_optab, "add", '3');
add_optab->handlers[(int) DFmode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__adddf3");
#ifdef HAVE_subqi3 #ifdef HAVE_subqi3
if (HAVE_subqi3) if (HAVE_subqi3)
...@@ -2929,14 +3304,16 @@ init_optabs () ...@@ -2929,14 +3304,16 @@ init_optabs ()
if (HAVE_subdf3) if (HAVE_subdf3)
sub_optab->handlers[(int) DFmode].insn_code = CODE_FOR_subdf3; sub_optab->handlers[(int) DFmode].insn_code = CODE_FOR_subdf3;
#endif #endif
#ifdef HAVE_subxf3
if (HAVE_subxf3)
sub_optab->handlers[(int) XFmode].insn_code = CODE_FOR_subxf3;
#endif
#ifdef HAVE_subtf3 #ifdef HAVE_subtf3
if (HAVE_subtf3) if (HAVE_subtf3)
sub_optab->handlers[(int) TFmode].insn_code = CODE_FOR_subtf3; sub_optab->handlers[(int) TFmode].insn_code = CODE_FOR_subtf3;
#endif #endif
sub_optab->handlers[(int) SFmode].libfunc init_integral_libfuncs (sub_optab, "sub", '3');
= gen_rtx (SYMBOL_REF, Pmode, "__subsf3"); init_floating_libfuncs (sub_optab, "sub", '3');
sub_optab->handlers[(int) DFmode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__subdf3");
#ifdef HAVE_mulqi3 #ifdef HAVE_mulqi3
if (HAVE_mulqi3) if (HAVE_mulqi3)
...@@ -2970,29 +3347,29 @@ init_optabs () ...@@ -2970,29 +3347,29 @@ init_optabs ()
if (HAVE_muldf3) if (HAVE_muldf3)
smul_optab->handlers[(int) DFmode].insn_code = CODE_FOR_muldf3; smul_optab->handlers[(int) DFmode].insn_code = CODE_FOR_muldf3;
#endif #endif
#ifdef HAVE_mulxf3
if (HAVE_mulxf3)
smul_optab->handlers[(int) XFmode].insn_code = CODE_FOR_mulxf3;
#endif
#ifdef HAVE_multf3 #ifdef HAVE_multf3
if (HAVE_multf3) if (HAVE_multf3)
smul_optab->handlers[(int) TFmode].insn_code = CODE_FOR_multf3; smul_optab->handlers[(int) TFmode].insn_code = CODE_FOR_multf3;
#endif #endif
init_integral_libfuncs (smul_optab, "mul", '3');
init_floating_libfuncs (smul_optab, "mul", '3');
#ifdef MULSI3_LIBCALL #ifdef MULSI3_LIBCALL
smul_optab->handlers[(int) SImode].libfunc smul_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, MULSI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, MULSI3_LIBCALL);
#else
smul_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__mulsi3");
#endif #endif
#ifdef MULDI3_LIBCALL #ifdef MULDI3_LIBCALL
smul_optab->handlers[(int) DImode].libfunc smul_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, MULDI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, MULDI3_LIBCALL);
#else
smul_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__muldi3");
#endif #endif
smul_optab->handlers[(int) SFmode].libfunc #ifdef MULTI3_LIBCALL
= gen_rtx (SYMBOL_REF, Pmode, "__mulsf3"); smul_optab->handlers[(int) TImode].libfunc
smul_optab->handlers[(int) DFmode].libfunc = gen_rtx (SYMBOL_REF, Pmode, MULTI3_LIBCALL);
= gen_rtx (SYMBOL_REF, Pmode, "__muldf3"); #endif
#ifdef HAVE_mulqihi3 #ifdef HAVE_mulqihi3
if (HAVE_mulqihi3) if (HAVE_mulqihi3)
...@@ -3052,20 +3429,19 @@ init_optabs () ...@@ -3052,20 +3429,19 @@ init_optabs ()
if (HAVE_divti3) if (HAVE_divti3)
sdiv_optab->handlers[(int) TImode].insn_code = CODE_FOR_divti3; sdiv_optab->handlers[(int) TImode].insn_code = CODE_FOR_divti3;
#endif #endif
init_integral_libfuncs (sdiv_optab, "div", '3');
#ifdef DIVSI3_LIBCALL #ifdef DIVSI3_LIBCALL
sdiv_optab->handlers[(int) SImode].libfunc sdiv_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, DIVSI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, DIVSI3_LIBCALL);
#else
sdiv_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__divsi3");
#endif #endif
#ifdef DIVDI3_LIBCALL #ifdef DIVDI3_LIBCALL
sdiv_optab->handlers[(int) DImode].libfunc sdiv_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, DIVDI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, DIVDI3_LIBCALL);
#else #endif
sdiv_optab->handlers[(int) DImode].libfunc #ifdef DIVTI3_LIBCALL
= gen_rtx (SYMBOL_REF, Pmode, "__divdi3"); sdiv_optab->handlers[(int) TImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, DIVTI3_LIBCALL);
#endif #endif
#ifdef HAVE_udivqi3 #ifdef HAVE_udivqi3
...@@ -3092,20 +3468,19 @@ init_optabs () ...@@ -3092,20 +3468,19 @@ init_optabs ()
if (HAVE_udivti3) if (HAVE_udivti3)
udiv_optab->handlers[(int) TImode].insn_code = CODE_FOR_udivti3; udiv_optab->handlers[(int) TImode].insn_code = CODE_FOR_udivti3;
#endif #endif
init_integral_libfuncs (udiv_optab, "udiv", '3');
#ifdef UDIVSI3_LIBCALL #ifdef UDIVSI3_LIBCALL
udiv_optab->handlers[(int) SImode].libfunc udiv_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, UDIVSI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, UDIVSI3_LIBCALL);
#else
udiv_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__udivsi3");
#endif #endif
#ifdef UDIVDI3_LIBCALL #ifdef UDIVDI3_LIBCALL
udiv_optab->handlers[(int) DImode].libfunc udiv_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, UDIVDI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, UDIVDI3_LIBCALL);
#else #endif
udiv_optab->handlers[(int) DImode].libfunc #ifdef UDIVTI3_LIBCALL
= gen_rtx (SYMBOL_REF, Pmode, "__udivdi3"); udiv_optab->handlers[(int) TImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, UDIVTI3_LIBCALL);
#endif #endif
#ifdef HAVE_divmodqi4 #ifdef HAVE_divmodqi4
...@@ -3128,6 +3503,7 @@ init_optabs () ...@@ -3128,6 +3503,7 @@ init_optabs ()
if (HAVE_divmodti4) if (HAVE_divmodti4)
sdivmod_optab->handlers[(int) TImode].insn_code = CODE_FOR_divmodti4; sdivmod_optab->handlers[(int) TImode].insn_code = CODE_FOR_divmodti4;
#endif #endif
init_integral_libfuncs (sdivmod_optab, "divmod", '4');
#ifdef HAVE_udivmodqi4 #ifdef HAVE_udivmodqi4
if (HAVE_udivmodqi4) if (HAVE_udivmodqi4)
...@@ -3149,6 +3525,7 @@ init_optabs () ...@@ -3149,6 +3525,7 @@ init_optabs ()
if (HAVE_udivmodti4) if (HAVE_udivmodti4)
udivmod_optab->handlers[(int) TImode].insn_code = CODE_FOR_udivmodti4; udivmod_optab->handlers[(int) TImode].insn_code = CODE_FOR_udivmodti4;
#endif #endif
init_integral_libfuncs (udivmod_optab, "udivmod", '4');
#ifdef HAVE_modqi3 #ifdef HAVE_modqi3
if (HAVE_modqi3) if (HAVE_modqi3)
...@@ -3174,20 +3551,19 @@ init_optabs () ...@@ -3174,20 +3551,19 @@ init_optabs ()
if (HAVE_modti3) if (HAVE_modti3)
smod_optab->handlers[(int) TImode].insn_code = CODE_FOR_modti3; smod_optab->handlers[(int) TImode].insn_code = CODE_FOR_modti3;
#endif #endif
init_integral_libfuncs (smod_optab, "mod", '3');
#ifdef MODSI3_LIBCALL #ifdef MODSI3_LIBCALL
smod_optab->handlers[(int) SImode].libfunc smod_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, MODSI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, MODSI3_LIBCALL);
#else
smod_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__modsi3");
#endif #endif
#ifdef MODDI3_LIBCALL #ifdef MODDI3_LIBCALL
smod_optab->handlers[(int) DImode].libfunc smod_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, MODDI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, MODDI3_LIBCALL);
#else #endif
smod_optab->handlers[(int) DImode].libfunc #ifdef MODTI3_LIBCALL
= gen_rtx (SYMBOL_REF, Pmode, "__moddi3"); smod_optab->handlers[(int) TImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, MODTI3_LIBCALL);
#endif #endif
#ifdef HAVE_umodqi3 #ifdef HAVE_umodqi3
...@@ -3214,20 +3590,19 @@ init_optabs () ...@@ -3214,20 +3590,19 @@ init_optabs ()
if (HAVE_umodti3) if (HAVE_umodti3)
umod_optab->handlers[(int) TImode].insn_code = CODE_FOR_umodti3; umod_optab->handlers[(int) TImode].insn_code = CODE_FOR_umodti3;
#endif #endif
init_integral_libfuncs (umod_optab, "umod", '3');
#ifdef UMODSI3_LIBCALL #ifdef UMODSI3_LIBCALL
umod_optab->handlers[(int) SImode].libfunc umod_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, UMODSI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, UMODSI3_LIBCALL);
#else
umod_optab->handlers[(int) SImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__umodsi3");
#endif #endif
#ifdef UMODDI3_LIBCALL #ifdef UMODDI3_LIBCALL
umod_optab->handlers[(int) DImode].libfunc umod_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, UMODDI3_LIBCALL); = gen_rtx (SYMBOL_REF, Pmode, UMODDI3_LIBCALL);
#else #endif
umod_optab->handlers[(int) DImode].libfunc #ifdef UMODTI3_LIBCALL
= gen_rtx (SYMBOL_REF, Pmode, "__umoddi3"); umod_optab->handlers[(int) TImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, UMODTI3_LIBCALL);
#endif #endif
#ifdef HAVE_divsf3 #ifdef HAVE_divsf3
...@@ -3238,14 +3613,15 @@ init_optabs () ...@@ -3238,14 +3613,15 @@ init_optabs ()
if (HAVE_divdf3) if (HAVE_divdf3)
flodiv_optab->handlers[(int) DFmode].insn_code = CODE_FOR_divdf3; flodiv_optab->handlers[(int) DFmode].insn_code = CODE_FOR_divdf3;
#endif #endif
#ifdef HAVE_divxf3
if (HAVE_divxf3)
flodiv_optab->handlers[(int) XFmode].insn_code = CODE_FOR_divxf3;
#endif
#ifdef HAVE_divtf3 #ifdef HAVE_divtf3
if (HAVE_divtf3) if (HAVE_divtf3)
flodiv_optab->handlers[(int) TFmode].insn_code = CODE_FOR_divtf3; flodiv_optab->handlers[(int) TFmode].insn_code = CODE_FOR_divtf3;
#endif #endif
flodiv_optab->handlers[(int) SFmode].libfunc init_floating_libfuncs (flodiv_optab, "div", '3');
= gen_rtx (SYMBOL_REF, Pmode, "__divsf3");
flodiv_optab->handlers[(int) DFmode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__divdf3");
#ifdef HAVE_ftruncsf2 #ifdef HAVE_ftruncsf2
if (HAVE_ftruncsf2) if (HAVE_ftruncsf2)
...@@ -3255,10 +3631,15 @@ init_optabs () ...@@ -3255,10 +3631,15 @@ init_optabs ()
if (HAVE_ftruncdf2) if (HAVE_ftruncdf2)
ftrunc_optab->handlers[(int) DFmode].insn_code = CODE_FOR_ftruncdf2; ftrunc_optab->handlers[(int) DFmode].insn_code = CODE_FOR_ftruncdf2;
#endif #endif
#ifdef HAVE_ftruncxf2
if (HAVE_ftruncxf2)
ftrunc_optab->handlers[(int) XFmode].insn_code = CODE_FOR_ftruncxf2;
#endif
#ifdef HAVE_ftrunctf2 #ifdef HAVE_ftrunctf2
if (HAVE_ftrunctf2) if (HAVE_ftrunctf2)
ftrunc_optab->handlers[(int) TFmode].insn_code = CODE_FOR_ftrunctf2; ftrunc_optab->handlers[(int) TFmode].insn_code = CODE_FOR_ftrunctf2;
#endif #endif
init_floating_libfuncs (ftrunc_optab, "ftrunc", '2');
#ifdef HAVE_andqi3 #ifdef HAVE_andqi3
if (HAVE_andqi3) if (HAVE_andqi3)
...@@ -3284,6 +3665,7 @@ init_optabs () ...@@ -3284,6 +3665,7 @@ init_optabs ()
if (HAVE_andti3) if (HAVE_andti3)
and_optab->handlers[(int) TImode].insn_code = CODE_FOR_andti3; and_optab->handlers[(int) TImode].insn_code = CODE_FOR_andti3;
#endif #endif
init_integral_libfuncs (and_optab, "and", '3');
#ifdef HAVE_iorqi3 #ifdef HAVE_iorqi3
if (HAVE_iorqi3) if (HAVE_iorqi3)
...@@ -3309,6 +3691,7 @@ init_optabs () ...@@ -3309,6 +3691,7 @@ init_optabs ()
if (HAVE_iorti3) if (HAVE_iorti3)
ior_optab->handlers[(int) TImode].insn_code = CODE_FOR_iorti3; ior_optab->handlers[(int) TImode].insn_code = CODE_FOR_iorti3;
#endif #endif
init_integral_libfuncs (ior_optab, "ior", '3');
#ifdef HAVE_xorqi3 #ifdef HAVE_xorqi3
if (HAVE_xorqi3) if (HAVE_xorqi3)
...@@ -3334,6 +3717,7 @@ init_optabs () ...@@ -3334,6 +3717,7 @@ init_optabs ()
if (HAVE_xorti3) if (HAVE_xorti3)
xor_optab->handlers[(int) TImode].insn_code = CODE_FOR_xorti3; xor_optab->handlers[(int) TImode].insn_code = CODE_FOR_xorti3;
#endif #endif
init_integral_libfuncs (xor_optab, "xor", '3');
#ifdef HAVE_ashlqi3 #ifdef HAVE_ashlqi3
if (HAVE_ashlqi3) if (HAVE_ashlqi3)
...@@ -3359,10 +3743,7 @@ init_optabs () ...@@ -3359,10 +3743,7 @@ init_optabs ()
if (HAVE_ashlti3) if (HAVE_ashlti3)
ashl_optab->handlers[(int) TImode].insn_code = CODE_FOR_ashlti3; ashl_optab->handlers[(int) TImode].insn_code = CODE_FOR_ashlti3;
#endif #endif
ashl_optab->handlers[(int) SImode].libfunc init_integral_libfuncs (ashl_optab, "ashl", '3');
= gen_rtx (SYMBOL_REF, Pmode, "__ashlsi3");
ashl_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__ashldi3");
#ifdef HAVE_ashrqi3 #ifdef HAVE_ashrqi3
if (HAVE_ashrqi3) if (HAVE_ashrqi3)
...@@ -3388,10 +3769,7 @@ init_optabs () ...@@ -3388,10 +3769,7 @@ init_optabs ()
if (HAVE_ashrti3) if (HAVE_ashrti3)
ashr_optab->handlers[(int) TImode].insn_code = CODE_FOR_ashrti3; ashr_optab->handlers[(int) TImode].insn_code = CODE_FOR_ashrti3;
#endif #endif
ashr_optab->handlers[(int) SImode].libfunc init_integral_libfuncs (ashr_optab, "ashr", '3');
= gen_rtx (SYMBOL_REF, Pmode, "__ashrsi3");
ashr_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__ashrdi3");
#ifdef HAVE_lshlqi3 #ifdef HAVE_lshlqi3
if (HAVE_lshlqi3) if (HAVE_lshlqi3)
...@@ -3417,10 +3795,7 @@ init_optabs () ...@@ -3417,10 +3795,7 @@ init_optabs ()
if (HAVE_lshlti3) if (HAVE_lshlti3)
lshl_optab->handlers[(int) TImode].insn_code = CODE_FOR_lshlti3; lshl_optab->handlers[(int) TImode].insn_code = CODE_FOR_lshlti3;
#endif #endif
lshl_optab->handlers[(int) SImode].libfunc init_integral_libfuncs (lshl_optab, "lshl", '3');
= gen_rtx (SYMBOL_REF, Pmode, "__lshlsi3");
lshl_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__lshldi3");
#ifdef HAVE_lshrqi3 #ifdef HAVE_lshrqi3
if (HAVE_lshrqi3) if (HAVE_lshrqi3)
...@@ -3446,10 +3821,7 @@ init_optabs () ...@@ -3446,10 +3821,7 @@ init_optabs ()
if (HAVE_lshrti3) if (HAVE_lshrti3)
lshr_optab->handlers[(int) TImode].insn_code = CODE_FOR_lshrti3; lshr_optab->handlers[(int) TImode].insn_code = CODE_FOR_lshrti3;
#endif #endif
lshr_optab->handlers[(int) SImode].libfunc init_integral_libfuncs (lshr_optab, "lshr", '3');
= gen_rtx (SYMBOL_REF, Pmode, "__lshrsi3");
lshr_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__lshrdi3");
#ifdef HAVE_rotlqi3 #ifdef HAVE_rotlqi3
if (HAVE_rotlqi3) if (HAVE_rotlqi3)
...@@ -3475,10 +3847,7 @@ init_optabs () ...@@ -3475,10 +3847,7 @@ init_optabs ()
if (HAVE_rotlti3) if (HAVE_rotlti3)
rotl_optab->handlers[(int) TImode].insn_code = CODE_FOR_rotlti3; rotl_optab->handlers[(int) TImode].insn_code = CODE_FOR_rotlti3;
#endif #endif
rotl_optab->handlers[(int) SImode].libfunc init_integral_libfuncs (rotl_optab, "rotl", '3');
= gen_rtx (SYMBOL_REF, Pmode, "__rotlsi3");
rotl_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__rotldi3");
#ifdef HAVE_rotrqi3 #ifdef HAVE_rotrqi3
if (HAVE_rotrqi3) if (HAVE_rotrqi3)
...@@ -3504,10 +3873,7 @@ init_optabs () ...@@ -3504,10 +3873,7 @@ init_optabs ()
if (HAVE_rotrti3) if (HAVE_rotrti3)
rotr_optab->handlers[(int) TImode].insn_code = CODE_FOR_rotrti3; rotr_optab->handlers[(int) TImode].insn_code = CODE_FOR_rotrti3;
#endif #endif
rotr_optab->handlers[(int) SImode].libfunc init_integral_libfuncs (rotr_optab, "rotr", '3');
= gen_rtx (SYMBOL_REF, Pmode, "__rotrsi3");
rotr_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__rotrdi3");
#ifdef HAVE_sminqi3 #ifdef HAVE_sminqi3
if (HAVE_sminqi3) if (HAVE_sminqi3)
...@@ -3529,18 +3895,24 @@ init_optabs () ...@@ -3529,18 +3895,24 @@ init_optabs ()
if (HAVE_sminti3) if (HAVE_sminti3)
smin_optab->handlers[(int) TImode].insn_code = CODE_FOR_sminti3; smin_optab->handlers[(int) TImode].insn_code = CODE_FOR_sminti3;
#endif #endif
#ifdef HAVE_sminsf3 #ifdef HAVE_minsf3
if (HAVE_sminsf3) if (HAVE_minsf3)
smin_optab->handlers[(int) SFmode].insn_code = CODE_FOR_sminsf3; smin_optab->handlers[(int) SFmode].insn_code = CODE_FOR_minsf3;
#endif
#ifdef HAVE_mindf3
if (HAVE_mindf3)
smin_optab->handlers[(int) DFmode].insn_code = CODE_FOR_mindf3;
#endif #endif
#ifdef HAVE_smindf3 #ifdef HAVE_minxf3
if (HAVE_smindf3) if (HAVE_minxf3)
smin_optab->handlers[(int) DFmode].insn_code = CODE_FOR_smindf3; smin_optab->handlers[(int) XFmode].insn_code = CODE_FOR_minxf3;
#endif #endif
#ifdef HAVE_smintf3 #ifdef HAVE_mintf3
if (HAVE_smintf3) if (HAVE_mintf3)
smin_optab->handlers[(int) TFmode].insn_code = CODE_FOR_smintf3; smin_optab->handlers[(int) TFmode].insn_code = CODE_FOR_mintf3;
#endif #endif
init_integral_libfuncs (smin_optab, "min", '3');
init_floating_libfuncs (smin_optab, "min", '3');
#ifdef HAVE_smaxqi3 #ifdef HAVE_smaxqi3
if (HAVE_smaxqi3) if (HAVE_smaxqi3)
...@@ -3562,18 +3934,24 @@ init_optabs () ...@@ -3562,18 +3934,24 @@ init_optabs ()
if (HAVE_smaxti3) if (HAVE_smaxti3)
smax_optab->handlers[(int) TImode].insn_code = CODE_FOR_smaxti3; smax_optab->handlers[(int) TImode].insn_code = CODE_FOR_smaxti3;
#endif #endif
#ifdef HAVE_smaxsf3 #ifdef HAVE_maxsf3
if (HAVE_smaxsf3) if (HAVE_maxsf3)
smax_optab->handlers[(int) SFmode].insn_code = CODE_FOR_smaxsf3; smax_optab->handlers[(int) SFmode].insn_code = CODE_FOR_maxsf3;
#endif #endif
#ifdef HAVE_smaxdf3 #ifdef HAVE_maxdf3
if (HAVE_smaxdf3) if (HAVE_maxdf3)
smax_optab->handlers[(int) DFmode].insn_code = CODE_FOR_smaxdf3; smax_optab->handlers[(int) DFmode].insn_code = CODE_FOR_maxdf3;
#endif #endif
#ifdef HAVE_smaxtf3 #ifdef HAVE_maxxf3
if (HAVE_smaxtf3) if (HAVE_maxxf3)
smax_optab->handlers[(int) TFmode].insn_code = CODE_FOR_smaxtf3; smax_optab->handlers[(int) XFmode].insn_code = CODE_FOR_maxxf3;
#endif #endif
#ifdef HAVE_maxtf3
if (HAVE_maxtf3)
smax_optab->handlers[(int) TFmode].insn_code = CODE_FOR_maxtf3;
#endif
init_integral_libfuncs (smax_optab, "max", '3');
init_floating_libfuncs (smax_optab, "max", '3');
#ifdef HAVE_uminqi3 #ifdef HAVE_uminqi3
if (HAVE_uminqi3) if (HAVE_uminqi3)
...@@ -3595,6 +3973,7 @@ init_optabs () ...@@ -3595,6 +3973,7 @@ init_optabs ()
if (HAVE_uminti3) if (HAVE_uminti3)
umin_optab->handlers[(int) TImode].insn_code = CODE_FOR_uminti3; umin_optab->handlers[(int) TImode].insn_code = CODE_FOR_uminti3;
#endif #endif
init_integral_libfuncs (umin_optab, "umin", '3');
#ifdef HAVE_umaxqi3 #ifdef HAVE_umaxqi3
if (HAVE_umaxqi3) if (HAVE_umaxqi3)
...@@ -3616,6 +3995,7 @@ init_optabs () ...@@ -3616,6 +3995,7 @@ init_optabs ()
if (HAVE_umaxti3) if (HAVE_umaxti3)
umax_optab->handlers[(int) TImode].insn_code = CODE_FOR_umaxti3; umax_optab->handlers[(int) TImode].insn_code = CODE_FOR_umaxti3;
#endif #endif
init_integral_libfuncs (umax_optab, "umax", '3');
#ifdef HAVE_negqi2 #ifdef HAVE_negqi2
if (HAVE_negqi2) if (HAVE_negqi2)
...@@ -3649,18 +4029,16 @@ init_optabs () ...@@ -3649,18 +4029,16 @@ init_optabs ()
if (HAVE_negdf2) if (HAVE_negdf2)
neg_optab->handlers[(int) DFmode].insn_code = CODE_FOR_negdf2; neg_optab->handlers[(int) DFmode].insn_code = CODE_FOR_negdf2;
#endif #endif
#ifdef HAVE_negxf2
if (HAVE_negxf2)
neg_optab->handlers[(int) XFmode].insn_code = CODE_FOR_negxf2;
#endif
#ifdef HAVE_negtf2 #ifdef HAVE_negtf2
if (HAVE_negtf2) if (HAVE_negtf2)
neg_optab->handlers[(int) TFmode].insn_code = CODE_FOR_negtf2; neg_optab->handlers[(int) TFmode].insn_code = CODE_FOR_negtf2;
#endif #endif
neg_optab->handlers[(int) SImode].libfunc init_integral_libfuncs (neg_optab, "neg", '2');
= gen_rtx (SYMBOL_REF, Pmode, "__negsi2"); init_floating_libfuncs (neg_optab, "neg", '2');
neg_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__negdi2");
neg_optab->handlers[(int) SFmode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__negsf2");
neg_optab->handlers[(int) DFmode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__negdf2");
#ifdef HAVE_absqi2 #ifdef HAVE_absqi2
if (HAVE_absqi2) if (HAVE_absqi2)
...@@ -3694,6 +4072,10 @@ init_optabs () ...@@ -3694,6 +4072,10 @@ init_optabs ()
if (HAVE_absdf2) if (HAVE_absdf2)
abs_optab->handlers[(int) DFmode].insn_code = CODE_FOR_absdf2; abs_optab->handlers[(int) DFmode].insn_code = CODE_FOR_absdf2;
#endif #endif
#ifdef HAVE_absxf2
if (HAVE_absxf2)
abs_optab->handlers[(int) XFmode].insn_code = CODE_FOR_absxf2;
#endif
#ifdef HAVE_abstf2 #ifdef HAVE_abstf2
if (HAVE_abstf2) if (HAVE_abstf2)
abs_optab->handlers[(int) TFmode].insn_code = CODE_FOR_abstf2; abs_optab->handlers[(int) TFmode].insn_code = CODE_FOR_abstf2;
...@@ -3791,8 +4173,7 @@ init_optabs () ...@@ -3791,8 +4173,7 @@ init_optabs ()
if (HAVE_one_cmplti2) if (HAVE_one_cmplti2)
one_cmpl_optab->handlers[(int) TImode].insn_code = CODE_FOR_one_cmplti2; one_cmpl_optab->handlers[(int) TImode].insn_code = CODE_FOR_one_cmplti2;
#endif #endif
one_cmpl_optab->handlers[(int) SImode].libfunc init_integral_libfuncs (one_cmpl_optab, "one_cmpl", '2');
= gen_rtx (SYMBOL_REF, Pmode, "__one_cmplsi2");
#ifdef HAVE_ffsqi2 #ifdef HAVE_ffsqi2
if (HAVE_ffsqi2) if (HAVE_ffsqi2)
...@@ -3818,8 +4199,7 @@ init_optabs () ...@@ -3818,8 +4199,7 @@ init_optabs ()
if (HAVE_ffsti2) if (HAVE_ffsti2)
ffs_optab->handlers[(int) TImode].insn_code = CODE_FOR_ffsti2; ffs_optab->handlers[(int) TImode].insn_code = CODE_FOR_ffsti2;
#endif #endif
ffs_optab->handlers[(int) SImode].libfunc init_integral_libfuncs (ffs_optab, "ffs", '2');
= gen_rtx (SYMBOL_REF, Pmode, "ffs");
#ifdef HAVE_movqi #ifdef HAVE_movqi
if (HAVE_movqi) if (HAVE_movqi)
...@@ -3853,6 +4233,10 @@ init_optabs () ...@@ -3853,6 +4233,10 @@ init_optabs ()
if (HAVE_movdf) if (HAVE_movdf)
mov_optab->handlers[(int) DFmode].insn_code = CODE_FOR_movdf; mov_optab->handlers[(int) DFmode].insn_code = CODE_FOR_movdf;
#endif #endif
#ifdef HAVE_movxf
if (HAVE_movxf)
mov_optab->handlers[(int) XFmode].insn_code = CODE_FOR_movxf;
#endif
#ifdef HAVE_movtf #ifdef HAVE_movtf
if (HAVE_movtf) if (HAVE_movtf)
mov_optab->handlers[(int) TFmode].insn_code = CODE_FOR_movtf; mov_optab->handlers[(int) TFmode].insn_code = CODE_FOR_movtf;
...@@ -3923,10 +4307,19 @@ init_optabs () ...@@ -3923,10 +4307,19 @@ init_optabs ()
if (HAVE_cmpdf) if (HAVE_cmpdf)
cmp_optab->handlers[(int) DFmode].insn_code = CODE_FOR_cmpdf; cmp_optab->handlers[(int) DFmode].insn_code = CODE_FOR_cmpdf;
#endif #endif
#ifdef HAVE_cmpxf
if (HAVE_cmpxf)
cmp_optab->handlers[(int) XFmode].insn_code = CODE_FOR_cmpxf;
#endif
#ifdef HAVE_cmptf #ifdef HAVE_cmptf
if (HAVE_cmptf) if (HAVE_cmptf)
cmp_optab->handlers[(int) TFmode].insn_code = CODE_FOR_cmptf; cmp_optab->handlers[(int) TFmode].insn_code = CODE_FOR_cmptf;
#endif #endif
/* Comparison libcalls for integers MUST come in pairs, signed/unsigned. */
init_integral_libfuncs (cmp_optab, "cmp", '2');
init_integral_libfuncs (ucmp_optab, "ucmp", '2');
init_floating_libfuncs (cmp_optab, "cmp", '2');
#ifdef HAVE_tstqi #ifdef HAVE_tstqi
if (HAVE_tstqi) if (HAVE_tstqi)
tst_optab->handlers[(int) QImode].insn_code = CODE_FOR_tstqi; tst_optab->handlers[(int) QImode].insn_code = CODE_FOR_tstqi;
...@@ -3959,15 +4352,14 @@ init_optabs () ...@@ -3959,15 +4352,14 @@ init_optabs ()
if (HAVE_tstdf) if (HAVE_tstdf)
tst_optab->handlers[(int) DFmode].insn_code = CODE_FOR_tstdf; tst_optab->handlers[(int) DFmode].insn_code = CODE_FOR_tstdf;
#endif #endif
#ifdef HAVE_tstxf
if (HAVE_tstxf)
tst_optab->handlers[(int) XFmode].insn_code = CODE_FOR_tstxf;
#endif
#ifdef HAVE_tsttf #ifdef HAVE_tsttf
if (HAVE_tsttf) if (HAVE_tsttf)
tst_optab->handlers[(int) TFmode].insn_code = CODE_FOR_tsttf; tst_optab->handlers[(int) TFmode].insn_code = CODE_FOR_tsttf;
#endif #endif
/* Comparison libcalls for integers MUST come in pairs, signed/unsigned. */
cmp_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__cmpdi2");
ucmp_optab->handlers[(int) DImode].libfunc
= gen_rtx (SYMBOL_REF, Pmode, "__ucmpdi2");
#ifdef HAVE_beq #ifdef HAVE_beq
if (HAVE_beq) if (HAVE_beq)
...@@ -4055,37 +4447,99 @@ init_optabs () ...@@ -4055,37 +4447,99 @@ init_optabs ()
#endif #endif
extendsfdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__extendsfdf2"); extendsfdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__extendsfdf2");
extendsfxf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__extendsfxf2");
extendsftf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__extendsftf2");
extenddfxf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__extenddfxf2");
extenddftf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__extenddftf2");
truncdfsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__truncdfsf2"); truncdfsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__truncdfsf2");
truncxfsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__truncxfsf2");
trunctfsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__trunctfsf2");
truncxfdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__truncxfdf2");
trunctfdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__trunctfdf2");
memcpy_libfunc = gen_rtx (SYMBOL_REF, Pmode, "memcpy"); memcpy_libfunc = gen_rtx (SYMBOL_REF, Pmode, "memcpy");
bcopy_libfunc = gen_rtx (SYMBOL_REF, Pmode, "bcopy"); bcopy_libfunc = gen_rtx (SYMBOL_REF, Pmode, "bcopy");
memcmp_libfunc = gen_rtx (SYMBOL_REF, Pmode, "memcmp"); memcmp_libfunc = gen_rtx (SYMBOL_REF, Pmode, "memcmp");
bcmp_libfunc = gen_rtx (SYMBOL_REF, Pmode, "bcmp"); bcmp_libfunc = gen_rtx (SYMBOL_REF, Pmode, "bcmp");
memset_libfunc = gen_rtx (SYMBOL_REF, Pmode, "memset"); memset_libfunc = gen_rtx (SYMBOL_REF, Pmode, "memset");
bzero_libfunc = gen_rtx (SYMBOL_REF, Pmode, "bzero"); bzero_libfunc = gen_rtx (SYMBOL_REF, Pmode, "bzero");
eqsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__eqsf2"); eqsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__eqsf2");
nesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__nesf2"); nesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__nesf2");
gtsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gtsf2"); gtsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gtsf2");
gesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gesf2"); gesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gesf2");
ltsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__ltsf2"); ltsf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__ltsf2");
lesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__lesf2"); lesf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__lesf2");
eqdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__eqdf2"); eqdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__eqdf2");
nedf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__nedf2"); nedf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__nedf2");
gtdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gtdf2"); gtdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gtdf2");
gedf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gedf2"); gedf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gedf2");
ltdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__ltdf2"); ltdf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__ltdf2");
ledf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__ledf2"); ledf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__ledf2");
floatdisf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatdisf");
eqxf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__eqxf2");
nexf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__nexf2");
gtxf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gtxf2");
gexf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gexf2");
ltxf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__ltxf2");
lexf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__lexf2");
eqtf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__eqtf2");
netf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__netf2");
gttf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__gttf2");
getf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__getf2");
lttf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__lttf2");
letf2_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__letf2");
floatsisf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatsisf"); floatsisf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatsisf");
floatdidf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatdidf"); floatdisf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatdisf");
floattisf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floattisf");
floatsidf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatsidf"); floatsidf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatsidf");
floatdidf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatdidf");
floattidf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floattidf");
floatsixf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatsixf");
floatdixf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatdixf");
floattixf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floattixf");
floatsitf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatsitf");
floatditf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floatditf");
floattitf_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__floattitf");
fixsfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixsfsi"); fixsfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixsfsi");
fixsfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixsfdi"); fixsfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixsfdi");
fixsfti_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixsfti");
fixdfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixdfsi"); fixdfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixdfsi");
fixdfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixdfdi"); fixdfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixdfdi");
fixdfti_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixdfti");
fixxfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixxfsi");
fixxfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixxfdi");
fixxfti_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixxfti");
fixtfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixtfsi");
fixtfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixtfdi");
fixtfti_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixtfti");
fixunssfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunssfsi"); fixunssfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunssfsi");
fixunssfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunssfdi"); fixunssfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunssfdi");
fixunssfti_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunssfti");
fixunsdfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunsdfsi"); fixunsdfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunsdfsi");
fixunsdfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunsdfdi"); fixunsdfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunsdfdi");
fixunsdfti_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunsdfti");
fixunsxfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunsxfsi");
fixunsxfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunsxfdi");
fixunsxfti_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunsxfti");
fixunstfsi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunstfsi");
fixunstfdi_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunstfdi");
fixunstfti_libfunc = gen_rtx (SYMBOL_REF, Pmode, "__fixunstfti");
} }
#ifdef BROKEN_LDEXP #ifdef BROKEN_LDEXP
......
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