From feb129926a8d12656f1ca4b7a8bb10268d3af4fb Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 5 Aug 1999 23:02:01 +0000 Subject: * hppa-dis.c (print_insn_hppa): Change condition args to use '?' prefix. --- opcodes/ChangeLog | 5 +++ opcodes/hppa-dis.c | 126 ++++++++++++++++++++++++++++++----------------------- 2 files changed, 77 insertions(+), 54 deletions(-) (limited to 'opcodes') diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 0b2f3f5..428d9cc 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +Thu Aug 5 16:59:58 1999 Jerry Quinn + + * hppa-dis.c (print_insn_hppa): Change condition args to use + '?' prefix. + Wed Jul 28 04:33:58 1999 Jerry Quinn * hppa-dis.c (print_insn_hppa): Remove unnecessary test in 'E' diff --git a/opcodes/hppa-dis.c b/opcodes/hppa-dis.c index 8e48d67..eb2c612 100644 --- a/opcodes/hppa-dis.c +++ b/opcodes/hppa-dis.c @@ -305,7 +305,7 @@ print_insn_hppa (memaddr, info) (*info->fprintf_func) (info->stream, "%s", opcode->name); - if (!strchr ("cfCY~nHNZFIMadu|", opcode->args[0])) + if (!strchr ("cfCY?-+nHNZFIu", opcode->args[0])) (*info->fprintf_func) (info->stream, " "); for (s = opcode->args; *s != '\0'; ++s) { @@ -403,54 +403,77 @@ print_insn_hppa (memaddr, info) (*info->fprintf_func) (info->stream, "%s ", short_bytes_compl_names[GET_COMPL (insn)]); break; - /* these four conditions are for the set of instructions - which distinguish true/false conditions by opcode rather - than by the 'f' bit (sigh): comb, comib, addb, addib */ - case '<': - fputs_filtered (compare_cond_names[GET_FIELD (insn, 16, 18)], - info); - break; + + /* Handle conditions. */ case '?': - fputs_filtered (compare_cond_names[GET_FIELD (insn, 16, 18) - + GET_FIELD (insn, 4, 4) * 8], info); - break; - case '@': - fputs_filtered (add_cond_names[GET_FIELD (insn, 16, 18) - + GET_FIELD (insn, 4, 4) * 8], info); - break; - case 'a': - (*info->fprintf_func) (info->stream, "%s ", - compare_cond_names[GET_COND (insn)]); - break; - case 'd': - (*info->fprintf_func) (info->stream, "%s ", - add_cond_names[GET_COND (insn)]); - break; - case '!': - (*info->fprintf_func) (info->stream, "%s", - add_cond_names[GET_FIELD (insn, 16, 18)]); - break; + { + s++; + switch (*s) + { + case 'f': + (*info->fprintf_func) (info->stream, "%s ", + float_comp_names[GET_FIELD + (insn, 27, 31)]); + break; + + /* these four conditions are for the set of instructions + which distinguish true/false conditions by opcode + rather than by the 'f' bit (sigh): comb, comib, + addb, addib */ + case 't': + fputs_filtered (compare_cond_names[GET_FIELD (insn, 16, + 18)], + info); + break; + case 'n': + fputs_filtered (compare_cond_names[GET_FIELD (insn, 16, + 18) + + GET_FIELD (insn, 4, 4) * 8], info); + break; + case '@': + fputs_filtered (add_cond_names[GET_FIELD (insn, 16, 18) + + GET_FIELD (insn, 4, 4) * 8], info); + break; + case 's': + (*info->fprintf_func) (info->stream, "%s ", + compare_cond_names[GET_COND (insn)]); + break; + case 'a': + (*info->fprintf_func) (info->stream, "%s ", + add_cond_names[GET_COND (insn)]); + break; + case 'd': + (*info->fprintf_func) (info->stream, "%s", + add_cond_names[GET_FIELD (insn, + 16, + 18)]); + break; + + case 'l': + (*info->fprintf_func) (info->stream, "%s ", + logical_cond_names[GET_COND (insn)]); + break; + case 'u': + (*info->fprintf_func) (info->stream, "%s ", + unit_cond_names[GET_COND (insn)]); + break; + case 'y': + case 'x': + case 'b': + (*info->fprintf_func) + (info->stream, "%s", + shift_cond_names[GET_FIELD (insn, 16, 18)]); + + /* If the next character in args is 'n', it will handle + putting out the space. */ + if (s[1] != 'n') + (*info->fprintf_func) (info->stream, " "); + break; + + } + break; + } - case '&': - (*info->fprintf_func) (info->stream, "%s ", - logical_cond_names[GET_COND (insn)]); - break; - case 'U': - (*info->fprintf_func) (info->stream, "%s ", - unit_cond_names[GET_COND (insn)]); - break; - case '|': - case '>': - case '~': - (*info->fprintf_func) - (info->stream, "%s", - shift_cond_names[GET_FIELD (insn, 16, 18)]); - - /* If the next character in args is 'n', it will handle - putting out the space. */ - if (s[1] != 'n') - (*info->fprintf_func) (info->stream, " "); - break; case 'V': fput_const (extract_5_store (insn), info); break; @@ -565,7 +588,7 @@ print_insn_hppa (memaddr, info) case 'F': /* if no destination completer and not before a completer for fcmp, need a space here */ - if (GET_FIELD (insn, 21, 22) == 1 || s[1] == 'M') + if (GET_FIELD (insn, 21, 22) == 1 || s[1] == '?') fputs_filtered (float_format_names[GET_FIELD (insn, 19, 20)], info); else @@ -589,7 +612,7 @@ print_insn_hppa (memaddr, info) case 'I': /* if no destination completer and not before a completer for fcmp, need a space here */ - if (GET_FIELD (insn, 21, 22) == 1 || s[1] == 'M') + if (GET_FIELD (insn, 21, 22) == 1 || s[1] == '?') fputs_filtered (float_format_names[GET_FIELD (insn, 20, 20)], info); else @@ -610,11 +633,6 @@ print_insn_hppa (memaddr, info) else fput_fp_reg (GET_FIELD (insn, 11, 15), info); break; - case 'M': - (*info->fprintf_func) (info->stream, "%s ", - float_comp_names[GET_FIELD - (insn, 27, 31)]); - break; default: (*info->fprintf_func) (info->stream, "%c", *s); break; -- cgit v1.1