* hppa-dis.c (print_insn_hppa): No space before 'H' operand.
Floating point format for 'H' operand is backwards from normal case (0 == double, 1 == single). For '4', '6', '7', '9', and '8' operands (fmpyadd and fmpysub), handle bizarre register translation correctly for single precision format.
This commit is contained in:
parent
a2fcbaf22e
commit
e59f322778
2 changed files with 48 additions and 13 deletions
|
@ -1,5 +1,11 @@
|
|||
Sat Feb 5 00:04:02 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
|
||||
|
||||
* hppa-dis.c (print_insn_hppa): No space before 'H' operand.
|
||||
Floating point format for 'H' operand is backwards from normal
|
||||
case (0 == double, 1 == single). For '4', '6', '7', '9', and '8'
|
||||
operands (fmpyadd and fmpysub), handle bizarre register
|
||||
translation correctly for single precision format.
|
||||
|
||||
* hppa-dis.c (print_insn_hppa): Do not emit a space after 'F'
|
||||
or 'I' operands if the next format specifier is 'M' (fcmp
|
||||
condition completer).
|
||||
|
|
|
@ -377,7 +377,7 @@ print_insn_hppa (memaddr, info)
|
|||
|
||||
(*info->fprintf_func) (info->stream, "%s", opcode->name);
|
||||
|
||||
if (!strchr ("cfCY<?!@-+&U>~nNZFIMadu|", opcode->args[0]))
|
||||
if (!strchr ("cfCY<?!@-+&U>~nHNZFIMadu|", opcode->args[0]))
|
||||
(*info->fprintf_func) (info->stream, " ");
|
||||
for (s = opcode->args; *s != '\0'; ++s)
|
||||
{
|
||||
|
@ -417,20 +417,45 @@ print_insn_hppa (memaddr, info)
|
|||
fput_fp_reg (GET_FIELD (insn, 27, 31), info);
|
||||
break;
|
||||
case '4':
|
||||
fput_fp_reg (GET_FIELD (insn, 6, 10), info);
|
||||
break;
|
||||
{
|
||||
int reg = GET_FIELD (insn, 6, 10);
|
||||
|
||||
reg |= (GET_FIELD (insn, 26, 26) << 4);
|
||||
fput_fp_reg (reg, info);
|
||||
break;
|
||||
}
|
||||
case '6':
|
||||
fput_fp_reg (GET_FIELD (insn, 11, 15), info);
|
||||
break;
|
||||
{
|
||||
int reg = GET_FIELD (insn, 11, 15);
|
||||
|
||||
reg |= (GET_FIELD (insn, 26, 26) << 4);
|
||||
fput_fp_reg (reg, info);
|
||||
break;
|
||||
}
|
||||
case '7':
|
||||
fput_fp_reg (GET_FIELD (insn, 27, 31), info);
|
||||
break;
|
||||
{
|
||||
int reg = GET_FIELD (insn, 27, 31);
|
||||
|
||||
reg |= (GET_FIELD (insn, 26, 26) << 4);
|
||||
fput_fp_reg (reg, info);
|
||||
break;
|
||||
}
|
||||
case '8':
|
||||
fput_fp_reg (GET_FIELD (insn, 16, 20), info);
|
||||
break;
|
||||
{
|
||||
int reg = GET_FIELD (insn, 16, 20);
|
||||
|
||||
reg |= (GET_FIELD (insn, 26, 26) << 4);
|
||||
fput_fp_reg (reg, info);
|
||||
break;
|
||||
}
|
||||
case '9':
|
||||
fput_fp_reg (GET_FIELD (insn, 21, 25), info);
|
||||
break;
|
||||
{
|
||||
int reg = GET_FIELD (insn, 21, 25);
|
||||
|
||||
reg |= (GET_FIELD (insn, 26, 26) << 4);
|
||||
fput_fp_reg (reg, info);
|
||||
break;
|
||||
}
|
||||
case '5':
|
||||
fput_const (extract_5_load (insn), info);
|
||||
break;
|
||||
|
@ -618,8 +643,12 @@ print_insn_hppa (memaddr, info)
|
|||
17, 18)]);
|
||||
break;
|
||||
case 'H':
|
||||
fputs_filtered (float_format_names[GET_FIELD
|
||||
(insn, 26, 26)], info);
|
||||
if (GET_FIELD (insn, 26, 26) == 1)
|
||||
(*info->fprintf_func) (info->stream, "%s ",
|
||||
float_format_names[0]);
|
||||
else
|
||||
(*info->fprintf_func) (info->stream, "%s ",
|
||||
float_format_names[1]);
|
||||
break;
|
||||
case 'I':
|
||||
/* if no destination completer and not before a completer
|
||||
|
|
Loading…
Reference in a new issue