* 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:
Jeff Law 1994-02-05 18:18:49 +00:00
parent a2fcbaf22e
commit e59f322778
2 changed files with 48 additions and 13 deletions

View file

@ -1,5 +1,11 @@
Sat Feb 5 00:04:02 1994 Jeffrey A. Law (law@snake.cs.utah.edu) 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' * hppa-dis.c (print_insn_hppa): Do not emit a space after 'F'
or 'I' operands if the next format specifier is 'M' (fcmp or 'I' operands if the next format specifier is 'M' (fcmp
condition completer). condition completer).

View file

@ -377,7 +377,7 @@ print_insn_hppa (memaddr, info)
(*info->fprintf_func) (info->stream, "%s", opcode->name); (*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, " "); (*info->fprintf_func) (info->stream, " ");
for (s = opcode->args; *s != '\0'; ++s) 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); fput_fp_reg (GET_FIELD (insn, 27, 31), info);
break; break;
case '4': 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': 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': 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': 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': 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': case '5':
fput_const (extract_5_load (insn), info); fput_const (extract_5_load (insn), info);
break; break;
@ -618,8 +643,12 @@ print_insn_hppa (memaddr, info)
17, 18)]); 17, 18)]);
break; break;
case 'H': case 'H':
fputs_filtered (float_format_names[GET_FIELD if (GET_FIELD (insn, 26, 26) == 1)
(insn, 26, 26)], info); (*info->fprintf_func) (info->stream, "%s ",
float_format_names[0]);
else
(*info->fprintf_func) (info->stream, "%s ",
float_format_names[1]);
break; break;
case 'I': case 'I':
/* if no destination completer and not before a completer /* if no destination completer and not before a completer