2003-08-05 Jason Eckhardt <jle@rice.edu>

* config/tc-i860.c (i860_process_insn): Don't handle dual-bit
        setting during flop argument parsing.  Instead, do it after
        instruction is fully parsed.
This commit is contained in:
Jason Eckhardt 2003-08-06 04:31:58 +00:00
parent 9d7e2ba5ae
commit 07c7854e59
2 changed files with 21 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2003-08-05 Jason Eckhardt <jle@rice.edu>
* config/tc-i860.c (i860_process_insn): Don't handle dual-bit
setting during flop argument parsing. Instead, do it after
instruction is fully parsed.
2003-08-05 Jason Eckhardt <jle@rice.edu>
* doc/c-i860.texi: Mention that .dual, .enddual, and .atmp

View File

@ -638,12 +638,6 @@ i860_process_insn (char *str)
case 'g':
opcode |= mask << 16;
if (dual_mode != DUAL_OFF)
opcode |= (1 << 9);
if (dual_mode == DUAL_DDOT)
dual_mode = DUAL_OFF;
if (dual_mode == DUAL_ONDDOT)
dual_mode = DUAL_ON;
if ((opcode & (1 << 10)) && mask != 0
&& (mask == ((opcode >> 11) & 0x1f)))
as_warn (_("Pipelined instruction: fsrc1 = fdest"));
@ -934,6 +928,21 @@ i860_process_insn (char *str)
break;
}
/* Set the dual bit on this instruction if necessary. */
if (dual_mode != DUAL_OFF)
{
if ((opcode & 0xfc000000) == 0x48000000 || opcode == 0xb0000000)
{
opcode |= (1 << 9);
if (dual_mode == DUAL_DDOT)
dual_mode = DUAL_OFF;
else if (dual_mode == DUAL_ONDDOT)
dual_mode = DUAL_ON;
}
else if (dual_mode == DUAL_DDOT || dual_mode == DUAL_ONDDOT)
as_bad (_("Prefix 'd.' invalid for instruction `%s'"), insn->name);
}
the_insn.opcode = opcode;
/* Only recognize XP instructions when the user has requested it. */