remove code for unused FP modes

This commit is contained in:
YamaArashi
2016-03-06 15:28:54 -08:00
parent e91bc8b505
commit 60addc9c2c
8 changed files with 3 additions and 1939 deletions

View File

@@ -182,15 +182,6 @@ extern int target_flags;
fprintf (STREAM, "\n"); \
}
#define ASM_OUTPUT_LONG_DOUBLE(STREAM,VALUE) \
do { char dstr[30]; \
long l[3]; \
REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l); \
REAL_VALUE_TO_DECIMAL (VALUE, "%.20g", dstr); \
fprintf (STREAM, "\t.long 0x%lx,0x%lx,0x%lx\t%s long double %s\n", \
l[0], l[1], l[2], ASM_COMMENT_START, dstr); \
} while (0)
#define ASM_OUTPUT_DOUBLE(STREAM, VALUE) \
do { char dstr[30]; \
long l[2]; \

View File

@@ -6906,11 +6906,6 @@ add_const_value_attribute (die, rtl)
REAL_VALUE_TO_TARGET_DOUBLE (rv, array);
break;
case XFmode:
case TFmode:
REAL_VALUE_TO_TARGET_LONG_DOUBLE (rv, array);
break;
default:
abort ();
}

View File

@@ -1228,20 +1228,6 @@ operand_subword (op, i, validate_address, mode)
else
abort ();
}
else if (HOST_BITS_PER_WIDE_INT >= BITS_PER_WORD
&& GET_MODE_CLASS (mode) == MODE_FLOAT
&& GET_MODE_BITSIZE (mode) > 64
&& GET_CODE (op) == CONST_DOUBLE)
{
long k[4];
REAL_VALUE_TYPE rv;
REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_LONG_DOUBLE (rv, k);
if (BITS_PER_WORD == 32)
return GEN_INT ((HOST_WIDE_INT) k[i]);
}
#else /* no REAL_ARITHMETIC */
if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
&& HOST_BITS_PER_WIDE_INT == BITS_PER_WORD)

View File

@@ -593,150 +593,6 @@ convert_move (to, from, unsignedp)
return;
}
}
#ifdef HAVE_trunchfqf2
if (HAVE_trunchfqf2 && from_mode == HFmode && to_mode == QFmode)
{
emit_unop_insn (CODE_FOR_trunchfqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_trunctqfqf2
if (HAVE_trunctqfqf2 && from_mode == TQFmode && to_mode == QFmode)
{
emit_unop_insn (CODE_FOR_trunctqfqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncsfqf2
if (HAVE_truncsfqf2 && from_mode == SFmode && to_mode == QFmode)
{
emit_unop_insn (CODE_FOR_truncsfqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncdfqf2
if (HAVE_truncdfqf2 && from_mode == DFmode && to_mode == QFmode)
{
emit_unop_insn (CODE_FOR_truncdfqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncxfqf2
if (HAVE_truncxfqf2 && from_mode == XFmode && to_mode == QFmode)
{
emit_unop_insn (CODE_FOR_truncxfqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_trunctfqf2
if (HAVE_trunctfqf2 && from_mode == TFmode && to_mode == QFmode)
{
emit_unop_insn (CODE_FOR_trunctfqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_trunctqfhf2
if (HAVE_trunctqfhf2 && from_mode == TQFmode && to_mode == HFmode)
{
emit_unop_insn (CODE_FOR_trunctqfhf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncsfhf2
if (HAVE_truncsfhf2 && from_mode == SFmode && to_mode == HFmode)
{
emit_unop_insn (CODE_FOR_truncsfhf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncdfhf2
if (HAVE_truncdfhf2 && from_mode == DFmode && to_mode == HFmode)
{
emit_unop_insn (CODE_FOR_truncdfhf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncxfhf2
if (HAVE_truncxfhf2 && from_mode == XFmode && to_mode == HFmode)
{
emit_unop_insn (CODE_FOR_truncxfhf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_trunctfhf2
if (HAVE_trunctfhf2 && from_mode == TFmode && to_mode == HFmode)
{
emit_unop_insn (CODE_FOR_trunctfhf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncsftqf2
if (HAVE_truncsftqf2 && from_mode == SFmode && to_mode == TQFmode)
{
emit_unop_insn (CODE_FOR_truncsftqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncdftqf2
if (HAVE_truncdftqf2 && from_mode == DFmode && to_mode == TQFmode)
{
emit_unop_insn (CODE_FOR_truncdftqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncxftqf2
if (HAVE_truncxftqf2 && from_mode == XFmode && to_mode == TQFmode)
{
emit_unop_insn (CODE_FOR_truncxftqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_trunctftqf2
if (HAVE_trunctftqf2 && from_mode == TFmode && to_mode == TQFmode)
{
emit_unop_insn (CODE_FOR_trunctftqf2, to, from, UNKNOWN);
return;
}
#endif
#ifdef HAVE_truncdfsf2
if (HAVE_truncdfsf2 && from_mode == DFmode && to_mode == SFmode)
{
emit_unop_insn (CODE_FOR_truncdfsf2, to, from, UNKNOWN);
return;
}
#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
if (HAVE_trunctfsf2 && from_mode == TFmode && to_mode == SFmode)
{
emit_unop_insn (CODE_FOR_trunctfsf2, to, from, UNKNOWN);
return;
}
#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
if (HAVE_trunctfdf2 && from_mode == TFmode && to_mode == DFmode)
{
emit_unop_insn (CODE_FOR_trunctfdf2, to, from, UNKNOWN);
return;
}
#endif
libcall = (rtx) 0;
switch (from_mode)
@@ -747,15 +603,6 @@ convert_move (to, from, unsignedp)
case DFmode:
libcall = extendsfdf2_libfunc;
break;
case XFmode:
libcall = extendsfxf2_libfunc;
break;
case TFmode:
libcall = extendsftf2_libfunc;
break;
default:
break;
}
@@ -767,52 +614,11 @@ convert_move (to, from, unsignedp)
case SFmode:
libcall = truncdfsf2_libfunc;
break;
case XFmode:
libcall = extenddfxf2_libfunc;
break;
case TFmode:
libcall = extenddftf2_libfunc;
break;
default:
break;
}
break;
case XFmode:
switch (to_mode)
{
case SFmode:
libcall = truncxfsf2_libfunc;
break;
case DFmode:
libcall = truncxfdf2_libfunc;
break;
default:
break;
}
break;
case TFmode:
switch (to_mode)
{
case SFmode:
libcall = trunctfsf2_libfunc;
break;
case DFmode:
libcall = trunctfdf2_libfunc;
break;
default:
break;
}
break;
default:
break;
}

View File

@@ -3002,37 +3002,7 @@ emit_float_lib_cmp (x, y, comparison)
rtx libfunc = 0;
rtx result;
if (mode == HFmode)
switch (comparison)
{
case EQ:
libfunc = eqhf2_libfunc;
break;
case NE:
libfunc = nehf2_libfunc;
break;
case GT:
libfunc = gthf2_libfunc;
break;
case GE:
libfunc = gehf2_libfunc;
break;
case LT:
libfunc = lthf2_libfunc;
break;
case LE:
libfunc = lehf2_libfunc;
break;
default:
break;
}
else if (mode == SFmode)
if (mode == SFmode)
switch (comparison)
{
case EQ:
@@ -3089,66 +3059,6 @@ emit_float_lib_cmp (x, y, comparison)
libfunc = ledf2_libfunc;
break;
default:
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;
default:
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;
default:
break;
}
@@ -3749,28 +3659,6 @@ expand_float (to, from, unsignedp)
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
abort ();
}
else
abort ();
@@ -3972,28 +3860,6 @@ expand_fix (to, from, unsignedp)
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
abort ();
}
else
abort ();
@@ -4137,9 +4003,6 @@ void
init_optabs ()
{
int i;
#ifdef FIXUNS_TRUNC_LIKE_FIX_TRUNC
int j;
#endif
enum insn_code *p;
@@ -4230,14 +4093,6 @@ init_optabs ()
/* Fill in the optabs with the insns we support. */
init_all_optabs ();
#ifdef FIXUNS_TRUNC_LIKE_FIX_TRUNC
/* This flag says the same insns that convert to a signed fixnum
also convert validly to an unsigned one. */
for (i = 0; i < NUM_MACHINE_MODES; i++)
for (j = 0; j < NUM_MACHINE_MODES; j++)
fixtrunctab[i][j][1] = fixtrunctab[i][j][0];
#endif
#ifdef EXTRA_CC_MODES
init_mov_optab ();
#endif

1542
gcc/real.c

File diff suppressed because it is too large Load Diff

View File

@@ -97,8 +97,6 @@ extern void ereal_to_int (HOST_WIDE_INT *, HOST_WIDE_INT *,
REAL_VALUE_TYPE);
extern REAL_VALUE_TYPE ereal_ldexp (REAL_VALUE_TYPE, int);
extern void etartdouble (REAL_VALUE_TYPE, long *);
extern void etarldouble (REAL_VALUE_TYPE, long *);
extern void etardouble (REAL_VALUE_TYPE, long *);
extern long etarsingle (REAL_VALUE_TYPE);
extern void ereal_to_decimal (REAL_VALUE_TYPE, char *);
@@ -148,7 +146,6 @@ extern REAL_VALUE_TYPE real_value_truncate (enum machine_mode,
ereal_from_uint (&d, lo, hi, mode)
/* IN is a REAL_VALUE_TYPE. OUT is an array of longs. */
#define REAL_VALUE_TO_TARGET_LONG_DOUBLE(IN, OUT) (etartdouble ((IN), (OUT)))
#define REAL_VALUE_TO_TARGET_DOUBLE(IN, OUT) (etardouble ((IN), (OUT)))
/* IN is a REAL_VALUE_TYPE. OUT is a long. */

View File

@@ -1780,40 +1780,12 @@ assemble_real (d, mode)
switch (mode)
{
#ifdef ASM_OUTPUT_BYTE_FLOAT
case QFmode:
ASM_OUTPUT_BYTE_FLOAT (asm_out_file, d);
break;
#endif
#ifdef ASM_OUTPUT_SHORT_FLOAT
case HFmode:
ASM_OUTPUT_SHORT_FLOAT (asm_out_file, d);
break;
#endif
#ifdef ASM_OUTPUT_THREE_QUARTER_FLOAT
case TQFmode:
ASM_OUTPUT_THREE_QUARTER_FLOAT (asm_out_file, d);
break;
#endif
#ifdef ASM_OUTPUT_FLOAT
case SFmode:
ASM_OUTPUT_FLOAT (asm_out_file, d);
break;
#endif
#ifdef ASM_OUTPUT_DOUBLE
case DFmode:
ASM_OUTPUT_DOUBLE (asm_out_file, d);
break;
#endif
#ifdef ASM_OUTPUT_LONG_DOUBLE
case XFmode:
case TFmode:
ASM_OUTPUT_LONG_DOUBLE (asm_out_file, d);
break;
#endif
default:
abort ();
}