xtensa.c (xtensa_output_literal): Mask out high bits for floating-point values if HOST_BITS_PER_LONG > 32.
* config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits for floating-point values if HOST_BITS_PER_LONG > 32. Use split_double instead of operand_subword. From-SVN: r124578
This commit is contained in:
parent
520c62adcd
commit
74ed13f5c6
@ -1,3 +1,9 @@
|
||||
2007-05-09 Bob Wilson <bob.wilson@acm.org>
|
||||
|
||||
* config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
|
||||
for floating-point values if HOST_BITS_PER_LONG > 32. Use split_double
|
||||
instead of operand_subword.
|
||||
|
||||
2007-05-08 Bernd Schmidt <bernd.schmidt@analog.com>
|
||||
|
||||
* config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
|
||||
|
@ -1939,6 +1939,7 @@ xtensa_output_literal (FILE *file, rtx x, enum machine_mode mode, int labelno)
|
||||
long value_long[2];
|
||||
REAL_VALUE_TYPE r;
|
||||
int size;
|
||||
rtx first, second;
|
||||
|
||||
fprintf (file, "\t.literal .LC%u, ", (unsigned) labelno);
|
||||
|
||||
@ -1952,11 +1953,18 @@ xtensa_output_literal (FILE *file, rtx x, enum machine_mode mode, int labelno)
|
||||
{
|
||||
case SFmode:
|
||||
REAL_VALUE_TO_TARGET_SINGLE (r, value_long[0]);
|
||||
#if HOST_BITS_PER_LONG > 32
|
||||
value_long[0] &= 0xffffffff;
|
||||
#endif
|
||||
fprintf (file, "0x%08lx\n", value_long[0]);
|
||||
break;
|
||||
|
||||
case DFmode:
|
||||
REAL_VALUE_TO_TARGET_DOUBLE (r, value_long);
|
||||
#if HOST_BITS_PER_LONG > 32
|
||||
value_long[0] &= 0xffffffff;
|
||||
value_long[1] &= 0xffffffff;
|
||||
#endif
|
||||
fprintf (file, "0x%08lx, 0x%08lx\n",
|
||||
value_long[0], value_long[1]);
|
||||
break;
|
||||
@ -1978,9 +1986,10 @@ xtensa_output_literal (FILE *file, rtx x, enum machine_mode mode, int labelno)
|
||||
break;
|
||||
|
||||
case 8:
|
||||
output_addr_const (file, operand_subword (x, 0, 0, DImode));
|
||||
split_double (x, &first, &second);
|
||||
output_addr_const (file, first);
|
||||
fputs (", ", file);
|
||||
output_addr_const (file, operand_subword (x, 1, 0, DImode));
|
||||
output_addr_const (file, second);
|
||||
fputs ("\n", file);
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user