This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Patch: addb and addib 64 bit for hppa
- To: binutils at sourceware dot cygnus dot com
- Subject: Patch: addb and addib 64 bit for hppa
- From: "Jerry Quinn" <jquinn at nortelnetworks dot com>
- Date: Fri, 24 Sep 1999 20:53:53 +0000
This patch adds addb and addib 64 bit conditional branches. I added a test
case, but it doesn't work right now. The output of the HP assembler I used
for basic.exp doesn't look right, so I'm not quite sure what I should use. I
think gas is working correctly and that we could use it to generate the test
case now, but I'm not certain.
Jerry
Changelog entry:
Fri Sep 24 16:36:39 EDT 1999 Jerry Quinn <jerry.quinn.adv91@alum.dartmouth.org>
* include/opcode/hppa.h (pa_opcode): Add new entries for addb and addib.
* gas/config/tc-hppa.c (pa_ip): Remove unused args. Add code to '?W'
arg.
(pa_parse_addb_64_cmpltr): New function.
* opcodes/hppa-dis.c (print_insn_hppa): Removed unused args. Fix '?W'.
* basic.exp,branch2.s: Add tests for cmpb, cmpib, addb, and addib 64 bit
conditional branches.
*** orig/include/opcode/hppa.h Fri Sep 24 16:46:35 1999
--- gas-src/include/opcode/hppa.h Fri Sep 24 16:46:51 1999
***************
*** 281,290 ****
--- 281,292 ----
/* This entry is for the disassembler only. It will never be used by
assembler. */
{ "comb", 0x88000000, 0xfc000000, "?nnx,b,w", pa10, 0}, /* comb{tf} */
+ { "addb", 0xa0000000, 0xf4000000, "?Wnx,b,w", pa20, FLAG_STRICT},
{ "addb", 0xa0000000, 0xfc000000, "?@nx,b,w", pa10, 0}, /* addb{tf} */
/* This entry is for the disassembler only. It will never be used by
assembler. */
{ "addb", 0xa8000000, 0xfc000000, "?@nx,b,w", pa10, 0},
+ { "addib", 0xa4000000, 0xf4000000, "?Wn5,b,w", pa20, FLAG_STRICT},
{ "addib", 0xa4000000, 0xfc000000, "?@n5,b,w", pa10, 0}, /* addib{tf}*/
/* This entry is for the disassembler only. It will never be used by
assembler. */
*** orig/gas/config/tc-hppa.c Fri Sep 24 16:50:34 1999
--- gas-src/gas/config/tc-hppa.c Fri Sep 24 16:50:44 1999
***************
*** 497,502 ****
--- 497,503 ----
static int pa_parse_nonneg_add_cmpltr PARAMS ((char **, int));
static int pa_parse_cmpb_64_cmpltr PARAMS ((char **));
static int pa_parse_cmpib_64_cmpltr PARAMS ((char **));
+ static int pa_parse_addb_64_cmpltr PARAMS ((char **));
static void pa_block PARAMS ((int));
static void pa_brtab PARAMS ((int));
static void pa_try PARAMS ((int));
***************
*** 2317,2334 ****
}
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
! /* Handle negated add and branch condition. */
! case 'D':
! abort ();
!
! /* Handle wide-mode non-negated add and branch condition. */
! case 'w':
! abort ();
!
! /* Handle wide-mode negated add and branch condition. */
case 'W':
! abort();
!
/* Handle a negated or non-negated add and branch
condition. */
case '@':
--- 2318,2338 ----
}
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
! /* Handle 64 bit wide-mode add and branch condition. */
case 'W':
! cmpltr = pa_parse_addb_64_cmpltr (&s);
! if (cmpltr < 0)
! {
! as_bad (_("Invalid Add and Branch Condition: %c"), *s);
! cmpltr = 0;
! }
! else
! {
! /* Negated condition requires an opcode change. */
! opcode |= (cmpltr & 8) << 24;
! }
! INSERT_FIELD_AND_CONTINUE (opcode, cmpltr & 7, 13);
!
/* Handle a negated or non-negated add and branch
condition. */
case '@':
***************
*** 5578,5583 ****
--- 5582,5689 ----
/* Reset pointers if this was really a ,n for a branch instruction. */
if (cmpltr == 0 && *name == 'n' && isbranch)
+ *s = save_s;
+
+ return cmpltr;
+ }
+
+ /* Parse a 64 bit wide mode add and branch completer returning the number (for
+ encoding in instrutions) of the given completer. */
+
+ static int
+ pa_parse_addb_64_cmpltr (s)
+ char **s;
+ {
+ int cmpltr;
+ char *name = *s + 1;
+ char c;
+ char *save_s = *s;
+ int nullify = 0;
+
+ cmpltr = 0;
+ if (**s == ',')
+ {
+ *s += 1;
+ while (**s != ',' && **s != ' ' && **s != '\t')
+ *s += 1;
+ c = **s;
+ **s = 0x00;
+ if (strcmp (name, "=") == 0)
+ {
+ cmpltr = 1;
+ }
+ else if (strcmp (name, "<") == 0)
+ {
+ cmpltr = 2;
+ }
+ else if (strcmp (name, "<=") == 0)
+ {
+ cmpltr = 3;
+ }
+ else if (strcasecmp (name, "nuv") == 0)
+ {
+ cmpltr = 4;
+ }
+ else if (strcasecmp (name, "*=") == 0)
+ {
+ cmpltr = 5;
+ }
+ else if (strcasecmp (name, "*<") == 0)
+ {
+ cmpltr = 6;
+ }
+ else if (strcasecmp (name, "*<=") == 0)
+ {
+ cmpltr = 7;
+ }
+ else if (strcmp (name, "tr") == 0)
+ {
+ cmpltr = 8;
+ }
+ else if (strcmp (name, "<>") == 0)
+ {
+ cmpltr = 9;
+ }
+ else if (strcmp (name, ">=") == 0)
+ {
+ cmpltr = 10;
+ }
+ else if (strcmp (name, ">") == 0)
+ {
+ cmpltr = 11;
+ }
+ else if (strcasecmp (name, "uv") == 0)
+ {
+ cmpltr = 12;
+ }
+ else if (strcasecmp (name, "*<>") == 0)
+ {
+ cmpltr = 13;
+ }
+ else if (strcasecmp (name, "*>=") == 0)
+ {
+ cmpltr = 14;
+ }
+ else if (strcasecmp (name, "*>") == 0)
+ {
+ cmpltr = 15;
+ }
+ /* If we have something like addb,n then there is no condition
+ completer. */
+ else if (strcasecmp (name, "n") == 0)
+ {
+ cmpltr = 0;
+ nullify = 1;
+ }
+ else
+ {
+ cmpltr = -1;
+ }
+ **s = c;
+ }
+
+ /* Reset pointers if this was really a ,n for a branch instruction. */
+ if (nullify)
*s = save_s;
return cmpltr;
*** orig/opcodes/hppa-dis.c Fri Sep 24 16:12:24 1999
--- gas-src/opcodes/hppa-dis.c Fri Sep 24 13:17:37 1999
***************
*** 730,750 ****
add_cond_names[GET_FIELD (insn, 16, 18)]);
break;
- case 'D':
- (*info->fprintf_func) (info->stream, "%s",
- add_cond_names[GET_FIELD (insn, 16, 18)
- + 8]);
- break;
- case 'w':
- (*info->fprintf_func)
- (info->stream, "%s",
- wide_add_cond_names[GET_FIELD (insn, 16, 18)]);
- break;
-
case 'W':
(*info->fprintf_func)
(info->stream, "%s",
! wide_add_cond_names[GET_FIELD (insn, 16, 18) + 8]);
break;
case 'l':
--- 730,740 ----
add_cond_names[GET_FIELD (insn, 16, 18)]);
break;
case 'W':
(*info->fprintf_func)
(info->stream, "%s",
! wide_add_cond_names[GET_FIELD (insn, 16, 18) +
! GET_FIELD (insn, 4, 4) * 8]);
break;
case 'l':
diff -c orig/gas/testsuite/gas/hppa/basic/basic.exp gas-src/gas/testsuite/gas/hppa/basic/basic.exp
*** orig/gas/testsuite/gas/hppa/basic/basic.exp Thu Sep 23 13:52:28 1999
--- gas-src/gas/testsuite/gas/hppa/basic/basic.exp Fri Sep 24 15:55:40 1999
***************
*** 391,396 ****
--- 391,598 ----
-re "^ +\[0-9\]+ 0038 E8004F9D\[^\n\]*\n" { set x [expr $x+1] }
-re "^ +\[0-9\]+ 003c E8004001\[^\n\]*\n" { set x [expr $x+1] }
-re "^ +\[0-9\]+ 0040 E8044001\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0044 EBFF9FF5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0048 EBFF9FEF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 004c EBFFBFE5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0050 EBFFBFDF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0054 EA7F1FD5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0058 EA7F1FCF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 005c EA7F3FC5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0060 EA7F3FBF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0064 EBFFBFB5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0068 EBFFBFAF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 006c E8A0F000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0070 E8A0F002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0074 E840D000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0078 E840D002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 007c E8A0D000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0080 E8A0D002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0084 E8A0D001\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0088 E8A0D003\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 008c E8A0F000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0090 E8A0F002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0094 E8A0F001\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0098 E8A0F003\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 009c E4A0446C\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a0 E4A0046C\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a4 E4A0446E\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a8 E4A0046E\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ac 80801FF5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b0 80803FED\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b4 80805FED\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b8 80807FED\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00bc 80809FED\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c0 8080BFE5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c4 8080DFE5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c8 8080FFE5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00cc 88801FE5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d0 88803FDD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d4 88805FDD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d8 88807FDD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00dc 88809FDD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e0 8880BFD5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e4 8880DFD5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e8 8880FFD5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ec 80801FD7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f0 80803FCF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f4 80805FCF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f8 80807FCF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00fc 80809FCF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0100 8080BFC7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0104 8080DFC7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0108 8080FFC7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 010c 88801FC7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0110 88803FBF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0114 88805FBF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0118 88807FBF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 011c 88809FBF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0120 8880BFB7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0124 8880DFB7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0128 8880FFB7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 012c 9C801FB5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0130 9C803FAD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0134 9C805FAD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0138 9C807FAD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 013c 9C809FAD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0140 9C80BFA5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0144 9C80DFA5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0148 9C80FFA5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 014c BC801FA5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0150 BC803F9D\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0154 BC805F9D\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0158 BC807F9D\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 015c BC809F9D\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0160 BC80BF95\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0164 BC80DF95\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0168 BC80FF95\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 016c 9C801F97\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0170 9C803F8F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0174 9C805F8F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0178 9C807F8F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 017c 9C809F8F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0180 9C80BF87\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0184 9C80DF87\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0188 9C80FF87\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 018c BC801F87\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0190 BC803F7F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0194 BC805F7F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0198 BC807F7F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 019c BC809F7F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01a0 BC80BF77\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01a4 BC80DF77\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01a8 BC80FF77\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01ac 84801FF5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01b0 84803FED\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01b4 84805FED\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01b8 84807FED\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01bc 84809FED\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01c0 8480BFE5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01c4 8480DFE5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01c8 8480FFE5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01cc 8C801FE5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01d0 8C803FDD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01d4 8C805FDD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01d8 8C807FDD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01dc 8C809FDD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01e0 8C80BFD5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01e4 8C80DFD5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01e8 8C80FF55\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01ec 84801FD7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01f0 84803FCF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01f4 84805FCF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01f8 84807FCF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 01fc 84809FCF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0200 8480BFC7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0204 8480DFC7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0208 8480FFC7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 020c 8C801FC7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0210 8C803FBF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0214 8C805FBF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0218 8C807FBF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 021c 8C809FBF\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0220 8C80BFB7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0224 8C80DFB7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0228 8C80FFB7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 022c EC801FB5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0230 EC803FAD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0234 EC805FAD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0238 EC807FAD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 023c EC809FAD\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0240 EC80BFA5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0244 EC80DFA5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0248 EC80FFA5\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 024c EC801FA7\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0250 EC803F9F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0254 EC805F9F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0258 EC807F9F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 025c EC809F9F\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0260 EC80BF97\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0264 EC80DF97\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0268 EC80FF97\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 026c A0810000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0270 A0812000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0274 A0814000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0278 A0816000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 027c A0818000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0280 A081A000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0284 A081C000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0288 A081E000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 028c A8810000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0290 A8812000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0294 A8814000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0298 A8816000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 029c A8818000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02a0 A881A000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02a4 A881C000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02a8 A881E000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02ac A0810002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02b0 A0812002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02b4 A0814002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02b8 A0816002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02bc A0818002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02c0 A081A002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02c4 A081C002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02c8 A081E002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02cc A8810002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02d0 A8812002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02d4 A8814002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02d8 A8816002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02dc A8818002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02e0 A881A002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02e4 A881C002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02e8 A881E002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02ec A49F0000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02f0 A49F2000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02f4 A49F4000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02f8 A49F6000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 02fc A49F8000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0300 A49FA000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0304 A49FC000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0308 A49FE000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 030c AC9F0000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0310 AC9F2000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0314 AC9F4000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0318 AC9F6000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 031c AC9F8000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0320 AC9FA000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0324 AC9FC000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0328 AC9FE000\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 032c A49F0002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0330 A49F2002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0334 A49F4002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0338 A49F6002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 033c A49F8002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0340 A49FA002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0344 A49FC002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0348 A49FE002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 034c AC9F0002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0350 AC9F2002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0354 AC9F4002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0358 AC9F6002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 035c AC9F8002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0360 AC9FA002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0364 AC9FC002\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0368 AC9FE002\[^\n\]*\n" { set x [expr $x+1] }
-re "\[^\n\]*\n" { }
timeout { perror "timeout\n"; break }
eof { break }
***************
*** 402,408 ****
gas_finish
# Did we find what we were looking for? If not, flunk it.
! if [expr $x==17] then { pass $testname } else { fail $testname }
}
proc do_add {} {
--- 604,610 ----
gas_finish
# Did we find what we were looking for? If not, flunk it.
! if [expr $x==219] then { pass $testname } else { fail $testname }
}
proc do_add {} {
diff -c orig/gas/testsuite/gas/hppa/basic/branch2.s gas-src/gas/testsuite/gas/hppa/basic/branch2.s
*** orig/gas/testsuite/gas/hppa/basic/branch2.s Thu Sep 23 13:52:04 1999
--- gas-src/gas/testsuite/gas/hppa/basic/branch2.s Fri Sep 24 12:50:21 1999
***************
*** 9,15 ****
; immediate fields. We should also check the assorted field
; selectors to make sure they're handled correctly.
! bb_tests:
bb,< %r4,%sar,bb_tests
bb,>= %r4,%sar,bb_tests
bb,<,n %r4,%cr11,bb_tests
--- 9,15 ----
; immediate fields. We should also check the assorted field
; selectors to make sure they're handled correctly.
! bb_tests
bb,< %r4,%sar,bb_tests
bb,>= %r4,%sar,bb_tests
bb,<,n %r4,%cr11,bb_tests
***************
*** 23,32 ****
bb,*<,n %r4,5,bb_tests
bb,*>=,n %r4,5,bb_tests
! branch_stack:
clrbts
popbts 1
popbts 499
pushnom
pushbts %r4
--- 23,269 ----
bb,*<,n %r4,5,bb_tests
bb,*>=,n %r4,5,bb_tests
! branch_stack
clrbts
popbts 1
popbts 499
pushnom
pushbts %r4
+ branch_tests
+ b,l,push branch_tests,%r2
+ b,l,push,n branch_tests,%r2
+ b,l branch_tests,%r2
+ b,l,n branch_tests,%r2
+ b,l branch_tests,%r19
+ b,l,n branch_tests,%r19
+ b,gate branch_tests,%r19
+ b,gate,n branch_tests,%r19
+
+ ; The commented insns are used to get HP assembler to generate test reference
+ ; opcodes. The HP assembler doesn't support these pseudos despite listing
+ ; them in the architecture manual
+ ; call branch_tests
+ ; call,n branch_tests
+ b,l branch_tests,%r2
+ b,l,n branch_tests,%r2
+ ; call (%r5)
+ ; call,n (%r5)
+ ; ret
+ ; ret,n
+ bve,l (%r5),%r2
+ bve,l,n (%r5),%r2
+ bve (%r2)
+ bve,n (%r2)
+
+ bve (%r5)
+ bve,n (%r5)
+ bve,pop (%r5)
+ bve,pop,n (%r5)
+ bve,l (%r5),%r2
+ bve,l,n (%r5),%r2
+ bve,l,push (%r5),%r2
+ bve,l,push,n (%r5),%r2
+ be,l 0x1234(%sr1,%r5),%sr0,%r31
+ be,l 0x1234(%r5),%sr0,%r31
+ be,l,n 0x1234(%sr1,%r5),%sr0,%r31
+ be,l,n 0x1234(%r5),%sr0,%r31
+
+ cmpb_tests
+ cmpb %r0,%r4,cmpb_tests
+ cmpb,= %r0,%r4,cmpb_tests
+ cmpb,< %r0,%r4,cmpb_tests
+ cmpb,<= %r0,%r4,cmpb_tests
+ cmpb,<< %r0,%r4,cmpb_tests
+ cmpb,<<= %r0,%r4,cmpb_tests
+ cmpb,sv %r0,%r4,cmpb_tests
+ cmpb,od %r0,%r4,cmpb_tests
+ cmpb,tr %r0,%r4,cmpb_tests
+ cmpb,<> %r0,%r4,cmpb_tests
+ cmpb,>= %r0,%r4,cmpb_tests
+ cmpb,> %r0,%r4,cmpb_tests
+ cmpb,>>= %r0,%r4,cmpb_tests
+ cmpb,>> %r0,%r4,cmpb_tests
+ cmpb,nsv %r0,%r4,cmpb_tests
+ cmpb,ev %r0,%r4,cmpb_tests
+ cmpb_nullified_tests
+ cmpb,n %r0,%r4,cmpb_tests
+ cmpb,=,n %r0,%r4,cmpb_tests
+ cmpb,<,n %r0,%r4,cmpb_tests
+ cmpb,<=,n %r0,%r4,cmpb_tests
+ cmpb,<<,n %r0,%r4,cmpb_tests
+ cmpb,<<=,n %r0,%r4,cmpb_tests
+ cmpb,sv,n %r0,%r4,cmpb_tests
+ cmpb,od,n %r0,%r4,cmpb_tests
+ cmpb,tr,n %r0,%r4,cmpb_tests
+ cmpb,<>,n %r0,%r4,cmpb_tests
+ cmpb,>=,n %r0,%r4,cmpb_tests
+ cmpb,>,n %r0,%r4,cmpb_tests
+ cmpb,>>=,n %r0,%r4,cmpb_tests
+ cmpb,>>,n %r0,%r4,cmpb_tests
+ cmpb,nsv,n %r0,%r4,cmpb_tests
+ cmpb,ev,n %r0,%r4,cmpb_tests
+
+ cmpb_64_tests
+ cmpb,* %r0,%r4,cmpb_tests
+ cmpb,*= %r0,%r4,cmpb_tests
+ cmpb,*< %r0,%r4,cmpb_tests
+ cmpb,*<= %r0,%r4,cmpb_tests
+ cmpb,*<< %r0,%r4,cmpb_tests
+ cmpb,*<<= %r0,%r4,cmpb_tests
+ cmpb,*sv %r0,%r4,cmpb_tests
+ cmpb,*od %r0,%r4,cmpb_tests
+ cmpb,*tr %r0,%r4,cmpb_tests
+ cmpb,*<> %r0,%r4,cmpb_tests
+ cmpb,*>= %r0,%r4,cmpb_tests
+ cmpb,*> %r0,%r4,cmpb_tests
+ cmpb,*>>= %r0,%r4,cmpb_tests
+ cmpb,*>> %r0,%r4,cmpb_tests
+ cmpb,*nsv %r0,%r4,cmpb_tests
+ cmpb,*ev %r0,%r4,cmpb_tests
+ cmpb_64_nullified_tests
+ cmpb,*,n %r0,%r4,cmpb_tests
+ cmpb,*=,n %r0,%r4,cmpb_tests
+ cmpb,*<,n %r0,%r4,cmpb_tests
+ cmpb,*<=,n %r0,%r4,cmpb_tests
+ cmpb,*<<,n %r0,%r4,cmpb_tests
+ cmpb,*<<=,n %r0,%r4,cmpb_tests
+ cmpb,*sv,n %r0,%r4,cmpb_tests
+ cmpb,*od,n %r0,%r4,cmpb_tests
+ cmpb,*tr,n %r0,%r4,cmpb_tests
+ cmpb,*<>,n %r0,%r4,cmpb_tests
+ cmpb,*>=,n %r0,%r4,cmpb_tests
+ cmpb,*>,n %r0,%r4,cmpb_tests
+ cmpb,*>>=,n %r0,%r4,cmpb_tests
+ cmpb,*>>,n %r0,%r4,cmpb_tests
+ cmpb,*nsv,n %r0,%r4,cmpb_tests
+ cmpb,*ev,n %r0,%r4,cmpb_tests
+
+ cmpib_tests
+ cmpib 0,%r4,cmpib_tests
+ cmpib,= 0,%r4,cmpib_tests
+ cmpib,< 0,%r4,cmpib_tests
+ cmpib,<= 0,%r4,cmpib_tests
+ cmpib,<< 0,%r4,cmpib_tests
+ cmpib,<<= 0,%r4,cmpib_tests
+ cmpib,sv 0,%r4,cmpib_tests
+ cmpib,od 0,%r4,cmpib_tests
+ cmpib,tr 0,%r4,cmpib_tests
+ cmpib,<> 0,%r4,cmpib_tests
+ cmpib,>= 0,%r4,cmpib_tests
+ cmpib,> 0,%r4,cmpib_tests
+ cmpib,>>= 0,%r4,cmpib_tests
+ cmpib,>> 0,%r4,cmpib_tests
+ cmpib,nsv 0,%r4,cmpib_tests
+ cmpib,ev 0,%r4,cmpb_tests
+
+ cmpib_nullified_tests
+ cmpib,n 0,%r4,cmpib_tests
+ cmpib,=,n 0,%r4,cmpib_tests
+ cmpib,<,n 0,%r4,cmpib_tests
+ cmpib,<=,n 0,%r4,cmpib_tests
+ cmpib,<<,n 0,%r4,cmpib_tests
+ cmpib,<<=,n 0,%r4,cmpib_tests
+ cmpib,sv,n 0,%r4,cmpib_tests
+ cmpib,od,n 0,%r4,cmpib_tests
+ cmpib,tr,n 0,%r4,cmpib_tests
+ cmpib,<>,n 0,%r4,cmpib_tests
+ cmpib,>=,n 0,%r4,cmpib_tests
+ cmpib,>,n 0,%r4,cmpib_tests
+ cmpib,>>=,n 0,%r4,cmpib_tests
+ cmpib,>>,n 0,%r4,cmpib_tests
+ cmpib,nsv,n 0,%r4,cmpib_tests
+ cmpib,ev,n 0,%r4,cmpib_tests
+
+ cmpib_64_tests
+ cmpib,*<< 0,%r4,cmpib_tests
+ cmpib,*= 0,%r4,cmpib_tests
+ cmpib,*< 0,%r4,cmpib_tests
+ cmpib,*<= 0,%r4,cmpib_tests
+ cmpib,*>>= 0,%r4,cmpib_tests
+ cmpib,*<> 0,%r4,cmpib_tests
+ cmpib,*>= 0,%r4,cmpib_tests
+ cmpib,*> 0,%r4,cmpib_tests
+
+ cmpib_64_nullified_tests
+ cmpib,*<<,n 0,%r4,cmpib_tests
+ cmpib,*=,n 0,%r4,cmpib_tests
+ cmpib,*<,n 0,%r4,cmpib_tests
+ cmpib,*<=,n 0,%r4,cmpib_tests
+ cmpib,*>>=,n 0,%r4,cmpib_tests
+ cmpib,*<>,n 0,%r4,cmpib_tests
+ cmpib,*>=,n 0,%r4,cmpib_tests
+ cmpib,*>,n 0,%r4,cmpib_tests
+
+
+
+ addb_64_tests
+ addb %r1,%r4,addb_tests
+ addb,= %r1,%r4,addb_tests
+ addb,< %r1,%r4,addb_tests
+ addb,<= %r1,%r4,addb_tests
+ addb,nuv %r1,%r4,addb_tests
+ addb,*= %r1,%r4,addb_tests
+ addb,*< %r1,%r4,addb_tests
+ addb,*<= %r1,%r4,addb_tests
+ addb,tr %r1,%r4,addb_tests
+ addb,<> %r1,%r4,addb_tests
+ addb,>= %r1,%r4,addb_tests
+ addb,> %r1,%r4,addb_tests
+ addb,uv %r1,%r4,addb_tests
+ addb,*<> %r1,%r4,addb_tests
+ addb,*>= %r1,%r4,addb_tests
+ addb,*> %r1,%r4,addb_tests
+ addb_64_nullified_tests
+ addb,n %r1,%r4,addb_tests
+ addb,=,n %r1,%r4,addb_tests
+ addb,<,n %r1,%r4,addb_tests
+ addb,<=,n %r1,%r4,addb_tests
+ addb,nuv,n %r1,%r4,addb_tests
+ addb,*=,n %r1,%r4,addb_tests
+ addb,*<,n %r1,%r4,addb_tests
+ addb,*<=,n %r1,%r4,addb_tests
+ addb,tr,n %r1,%r4,addb_tests
+ addb,<>,n %r1,%r4,addb_tests
+ addb,>=,n %r1,%r4,addb_tests
+ addb,>,n %r1,%r4,addb_tests
+ addb,uv,n %r1,%r4,addb_tests
+ addb,*<>,n %r1,%r4,addb_tests
+ addb,*>=,n %r1,%r4,addb_tests
+ addb,*>,n %r1,%r4,addb_tests
+
+ addib_64_tests
+ addib -1,%r4,addib_tests
+ addib,= -1,%r4,addib_tests
+ addib,< -1,%r4,addib_tests
+ addib,<= -1,%r4,addib_tests
+ addib,nuv -1,%r4,addib_tests
+ addib,*= -1,%r4,addib_tests
+ addib,*< -1,%r4,addib_tests
+ addib,*<= -1,%r4,addib_tests
+ addib,tr -1,%r4,addib_tests
+ addib,<> -1,%r4,addib_tests
+ addib,>= -1,%r4,addib_tests
+ addib,> -1,%r4,addib_tests
+ addib,uv -1,%r4,addib_tests
+ addib,*<> -1,%r4,addib_tests
+ addib,*>= -1,%r4,addib_tests
+ addib,*> -1,%r4,addib_tests
+
+ addib_64_nullified_tests
+ addib,n -1,%r4,addib_tests
+ addib,=,n -1,%r4,addib_tests
+ addib,<,n -1,%r4,addib_tests
+ addib,<=,n -1,%r4,addib_tests
+ addib,nuv,n -1,%r4,addib_tests
+ addib,*=,n -1,%r4,addib_tests
+ addib,*<,n -1,%r4,addib_tests
+ addib,*<=,n -1,%r4,addib_tests
+ addib,tr,n -1,%r4,addib_tests
+ addib,<>,n -1,%r4,addib_tests
+ addib,>=,n -1,%r4,addib_tests
+ addib,>,n -1,%r4,addib_tests
+ addib,uv,n -1,%r4,addib_tests
+ addib,*<>,n -1,%r4,addib_tests
+ addib,*>=,n -1,%r4,addib_tests
+ addib,*>,n -1,%r4,addib_tests