mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-17 16:03:48 +08:00
mips16.S (__mips16_unordsf2, [...]): New.
2007-08-01 Sandra Loosemore <sandra@codesourcery.com> David Ung <davidu@mips.com> gcc/ * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New. (__mips16_unorddf2, __mips16_floatunsidf): New. * config/mips/mips.c (mips_init_libfuncs): Add optab entries for above functions. * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions. Co-Authored-By: David Ung <davidu@mips.com> From-SVN: r127128
This commit is contained in:
parent
cd976c16a3
commit
45059ab1e5
@ -1,3 +1,13 @@
|
||||
2007-08-01 Sandra Loosemore <sandra@codesourcery.com>
|
||||
David Ung <davidu@mips.com>
|
||||
|
||||
gcc/
|
||||
* config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
|
||||
(__mips16_unorddf2, __mips16_floatunsidf): New.
|
||||
* config/mips/mips.c (mips_init_libfuncs): Add optab entries for
|
||||
above functions.
|
||||
* config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
|
||||
|
||||
2007-08-01 Zdenek Dvorak <ook@ucw.cz>
|
||||
|
||||
* tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
|
||||
|
@ -10115,9 +10115,11 @@ mips_init_libfuncs (void)
|
||||
set_optab_libfunc (ge_optab, SFmode, "__mips16_gesf2");
|
||||
set_optab_libfunc (lt_optab, SFmode, "__mips16_ltsf2");
|
||||
set_optab_libfunc (le_optab, SFmode, "__mips16_lesf2");
|
||||
set_optab_libfunc (unord_optab, SFmode, "__mips16_unordsf2");
|
||||
|
||||
set_conv_libfunc (sfix_optab, SImode, SFmode, "__mips16_fix_truncsfsi");
|
||||
set_conv_libfunc (sfloat_optab, SFmode, SImode, "__mips16_floatsisf");
|
||||
set_conv_libfunc (ufloat_optab, SFmode, SImode, "__mips16_floatunsisf");
|
||||
|
||||
if (TARGET_DOUBLE_FLOAT)
|
||||
{
|
||||
@ -10132,12 +10134,14 @@ mips_init_libfuncs (void)
|
||||
set_optab_libfunc (ge_optab, DFmode, "__mips16_gedf2");
|
||||
set_optab_libfunc (lt_optab, DFmode, "__mips16_ltdf2");
|
||||
set_optab_libfunc (le_optab, DFmode, "__mips16_ledf2");
|
||||
set_optab_libfunc (unord_optab, DFmode, "__mips16_unorddf2");
|
||||
|
||||
set_conv_libfunc (sext_optab, DFmode, SFmode, "__mips16_extendsfdf2");
|
||||
set_conv_libfunc (trunc_optab, SFmode, DFmode, "__mips16_truncdfsf2");
|
||||
|
||||
set_conv_libfunc (sfix_optab, SImode, DFmode, "__mips16_fix_truncdfsi");
|
||||
set_conv_libfunc (sfloat_optab, DFmode, SImode, "__mips16_floatsidf");
|
||||
set_conv_libfunc (ufloat_optab, DFmode, SImode, "__mips16_floatunsidf");
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -286,6 +286,10 @@ CMPSF (__mips16_lesf2, c.le.s, 0, 1)
|
||||
#ifdef L_m16ltsf2
|
||||
CMPSF (__mips16_ltsf2, c.lt.s, -1, 0)
|
||||
#endif
|
||||
#ifdef L_m16unordsf2
|
||||
CMPSF(__mips16_unordsf2, c.un.s, 1, 0)
|
||||
#endif
|
||||
|
||||
|
||||
/* Single-precision conversions. */
|
||||
|
||||
@ -297,6 +301,21 @@ STARTFN (__mips16_floatsisf)
|
||||
ENDFN (__mips16_floatsisf)
|
||||
#endif
|
||||
|
||||
#ifdef L_m16fltunsisf
|
||||
STARTFN (__mips16_floatunsisf)
|
||||
bltz $4,1f
|
||||
j __mips16_floatsisf
|
||||
1:
|
||||
and $2,$4,1
|
||||
srl $3,$4,1
|
||||
or $2,$2,$3
|
||||
mtc1 $2,RET
|
||||
cvt.s.w RET,RET
|
||||
add.s RET,RET,RET
|
||||
MOVE_SF_RET (f, $31)
|
||||
ENDFN (__mips16_floatunsisf)
|
||||
#endif
|
||||
|
||||
#ifdef L_m16fix_truncsfsi
|
||||
STARTFN (__mips16_fix_truncsfsi)
|
||||
MOVE_SF_BYTE0 (t)
|
||||
@ -420,6 +439,9 @@ CMPDF (__mips16_ledf2, c.le.d, 0, 1)
|
||||
#ifdef L_m16ltdf2
|
||||
CMPDF (__mips16_ltdf2, c.lt.d, -1, 0)
|
||||
#endif
|
||||
#ifdef L_m16unorddf2
|
||||
CMPDF(__mips16_unorddf2, c.un.d, 1, 0)
|
||||
#endif
|
||||
|
||||
/* Double-precision conversions. */
|
||||
|
||||
@ -430,7 +452,18 @@ STARTFN (__mips16_floatsidf)
|
||||
MOVE_DF_RET (f, $31)
|
||||
ENDFN (__mips16_floatsidf)
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef L_m16fltunsidf
|
||||
STARTFN (__mips16_floatunsidf)
|
||||
MOVE_SI_BYTE0 (t)
|
||||
cvt.d.w RET,ARG1
|
||||
bgez $4,1f
|
||||
li.d ARG1, 4.294967296e+9
|
||||
add.d RET, RET, ARG1
|
||||
1: MOVE_DF_RET (f, $31)
|
||||
ENDFN (__mips16_floatunsidf)
|
||||
#endif
|
||||
|
||||
#ifdef L_m16fix_truncdfsi
|
||||
STARTFN (__mips16_fix_truncdfsi)
|
||||
MOVE_DF_BYTE0 (t)
|
||||
|
@ -1,11 +1,13 @@
|
||||
LIB1ASMSRC = mips/mips16.S
|
||||
LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \
|
||||
_m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \
|
||||
_m16fltsisf _m16fix_truncsfsi \
|
||||
_m16unordsf2 \
|
||||
_m16fltsisf _m16fix_truncsfsi _m16fltunsisf \
|
||||
_m16adddf3 _m16subdf3 _m16muldf3 _m16divdf3 \
|
||||
_m16extsfdf2 _m16trdfsf2 \
|
||||
_m16eqdf2 _m16nedf2 _m16gtdf2 _m16gedf2 _m16ledf2 _m16ltdf2 \
|
||||
_m16fltsidf _m16fix_truncdfsi \
|
||||
_m16unorddf2 \
|
||||
_m16fltsidf _m16fix_truncdfsi _m16fltunsidf \
|
||||
_m16retsf _m16retdf \
|
||||
_m16retsc _m16retdc \
|
||||
_m16stub1 _m16stub2 _m16stub5 _m16stub6 _m16stub9 _m16stub10 \
|
||||
|
Loading…
Reference in New Issue
Block a user