* Patch: shift insns for pa2.0
@ 1999-08-23 8:03 Jerry Quinn
0 siblings, 0 replies; 3+ messages in thread
From: Jerry Quinn @ 1999-08-23 8:03 UTC (permalink / raw)
To: binutils
This patch adds the shift, extract and deposit instructions for pa 2.0
including new syntax for pa 1.0 instructions.
Changelog entry:
Mon Aug 23 10:56:06 EDT 1999 Jerry Quinn <jquinn@nortelnetworks.com>
* hppa.h (pa_opcodes): Add extrd, extrw, depd, depdi, depw, depwi. Add
supporting args.
* tc-hppa.c (pa_ip): Add args q, %, and |.
* hppa-dis.c (print_insn_hppa): Add args q, %, !, and |.
* gas/testsuite/gas/hppa/basic/basic.exp: Add new tests shift2.s,
shift3.s, extract2.s, extract3.s, deposit2.s, and deposit3.s.
* gas/testsuite/gas/hppa/basic/shift2.s, shift3.s, extract2.s, extract3.s,
deposit2.s, deposit3.s: New.
*** pa-prev/include/opcode/hppa.h Fri Aug 13 15:29:53 1999
--- gas-src/include/opcode/hppa.h Fri Aug 20 17:18:39 1999
***************
*** 70,78 ****
In the args field, the following characters are unused:
! ' "# %& +- / 34 6789:;< > @'
' BC JKLM XYZ[\] '
! ' de gh lm q y {|} '
Here are all the characters:
--- 70,78 ----
In the args field, the following characters are unused:
! ' "# & - / 34 6789:;< > @'
' BC JKLM XYZ[\] '
! ' de gh lm y { } '
Here are all the characters:
***************
*** 106,112 ****
--- 106,115 ----
31-p
~ 6 bit shift count at 20,22:26 encoded as 63-~.
P 5 bit bit position at 26
+ q 6 bit bit position at 20,22:26
T 5 bit field length at 31 (encoded as 32-T)
+ % 6 bit field length at 23,27:31 (variable extract/deposit)
+ | 6 bit field length at 19,27:31 (fixed extract/deposit)
A 13 bit immediate at 18 (to support the BREAK instruction)
^ like b, but describes a control register
! sar (cr11) register
***************
*** 432,441 ****
--- 435,456 ----
{ "shrpw", 0xd0000800, 0xfc001c00, "?xx,b,p,t", pa10, FLAG_STRICT},
{ "vshd", 0xd0000000, 0xfc001fe0, "?xx,b,t", pa10},
{ "shd", 0xd0000800, 0xfc001c00, "?xx,b,p,t", pa10},
+ { "extrd", 0xd0001200, 0xfc001ae0, "cS?Xb,!,%,x", pa20, FLAG_STRICT},
+ { "extrd", 0xd8000000, 0xfc000000, "cS?Xb,q,|,x", pa20, FLAG_STRICT},
+ { "extrw", 0xd0001000, 0xfc001be0, "cS?xb,!,T,x", pa10, FLAG_STRICT},
+ { "extrw", 0xd0001800, 0xfc001800, "cS?xb,P,T,x", pa10, FLAG_STRICT},
{ "vextru", 0xd0001000, 0xfc001fe0, "?xb,T,x", pa10},
{ "vextrs", 0xd0001400, 0xfc001fe0, "?xb,T,x", pa10},
{ "extru", 0xd0001800, 0xfc001c00, "?xb,P,T,x", pa10},
{ "extrs", 0xd0001c00, 0xfc001c00, "?xb,P,T,x", pa10},
+ { "depd", 0xd4000200, 0xfc001ae0, "cz?Xx,!,%,b", pa20, FLAG_STRICT},
+ { "depd", 0xf0000000, 0xfc000000, "cz?Xx,~,|,b", pa20, FLAG_STRICT},
+ { "depdi", 0xd4001200, 0xfc001ae0, "cz?X5,!,%,b", pa20, FLAG_STRICT},
+ { "depdi", 0xf4000000, 0xfc000000, "cz?X5,~,|,b", pa20, FLAG_STRICT},
+ { "depw", 0xd4000000, 0xfc001be0, "cz?xx,!,T,b", pa10, FLAG_STRICT},
+ { "depw", 0xd4000800, 0xfc001800, "cz?xx,p,T,b", pa10, FLAG_STRICT},
+ { "depwi", 0xd4001000, 0xfc001be0, "cz?x5,!,T,b", pa10, FLAG_STRICT},
+ { "depwi", 0xd4001800, 0xfc001be0, "cz?x5,p,T,b", pa10, FLAG_STRICT},
{ "zvdep", 0xd4000000, 0xfc001fe0, "?xx,T,b", pa10},
{ "vdep", 0xd4000400, 0xfc001fe0, "?xx,T,b", pa10},
{ "zdep", 0xd4000800, 0xfc001c00, "?xx,p,T,b", pa10},
*** pa-prev/gas/config/tc-hppa.c Fri Aug 13 15:29:40 1999
--- gas-src/gas/config/tc-hppa.c Fri Aug 20 17:13:46 1999
***************
*** 1819,1824 ****
--- 1819,1835 ----
INSERT_FIELD_AND_CONTINUE (opcode, flag, 6);
+ /* Handle zero/sign extension completer. */
+ case 'z':
+ flag = 1;
+ if (!strncasecmp (s, ",z", 2))
+ {
+ flag = 0;
+ s += 2;
+ }
+
+ INSERT_FIELD_AND_CONTINUE (opcode, flag, 10);
+
/* Handle add completer. */
case 'a':
flag = 1;
***************
*** 2781,2786 ****
--- 2792,2818 ----
opcode |= (num & 0x20) << 6;
INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 5);
+ /* Handle a 6 bit field length at 23,27:31. */
+ case '%':
+ flag = 0;
+ num = pa_get_absolute_expression (&the_insn, &s);
+ s = expr_end;
+ CHECK_FIELD (num, 64, 1, 0);
+ num--;
+ opcode |= (num & 0x20) << 3;
+ num = 31 - (num & 0x1f);
+ INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
+
+ /* Handle a 6 bit field length at 19,27:31. */
+ case '|':
+ num = pa_get_absolute_expression (&the_insn, &s);
+ s = expr_end;
+ CHECK_FIELD (num, 64, 1, 0);
+ num--;
+ opcode |= (num & 0x20) << 7;
+ num = 31 - (num & 0x1f);
+ INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
+
/* Handle a 5 bit bit position at 26. */
case 'P':
num = pa_get_absolute_expression (&the_insn, &s);
***************
*** 2788,2796 ****
CHECK_FIELD (num, 31, 0, 0);
INSERT_FIELD_AND_CONTINUE (opcode, num, 5);
/* Handle a 5 bit immediate at 10. */
case 'Q':
-
num = pa_get_absolute_expression (&the_insn, &s);
if (the_insn.exp.X_op != O_constant)
break;
--- 2820,2835 ----
CHECK_FIELD (num, 31, 0, 0);
INSERT_FIELD_AND_CONTINUE (opcode, num, 5);
+ /* Handle a 6 bit bit position at 20,22:26. */
+ case 'q':
+ num = pa_get_absolute_expression (&the_insn, &s);
+ s = expr_end;
+ CHECK_FIELD (num, 63, 0, 0);
+ opcode |= (num & 0x20) << 6;
+ INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 5);
+
/* Handle a 5 bit immediate at 10. */
case 'Q':
num = pa_get_absolute_expression (&the_insn, &s);
if (the_insn.exp.X_op != O_constant)
break;
*** pa-prev/opcodes/hppa-dis.c Fri Aug 13 15:30:05 1999
--- gas-src/opcodes/hppa-dis.c Fri Aug 20 16:47:09 1999
***************
*** 363,368 ****
--- 363,371 ----
case '^':
fput_creg (GET_FIELD (insn, 6, 10), info);
break;
+ case '!':
+ fput_creg (11, info);
+ break;
case 't':
fput_reg (GET_FIELD (insn, 27, 31), info);
break;
***************
*** 508,513 ****
--- 511,520 ----
if (GET_FIELD (insn, 25, 25))
(*info->fprintf_func) (info->stream, ",i");
break;
+ case 'z':
+ if (!GET_FIELD (insn, 21, 21))
+ (*info->fprintf_func) (info->stream, ",z");
+ break;
case 'a':
(*info->fprintf_func)
(info->stream, "%s", add_compl_names[GET_FIELD
***************
*** 782,791 ****
--- 789,822 ----
(*info->fprintf_func) (info->stream, "%d",
GET_FIELD (insn, 22, 26));
break;
+ case 'q':
+ {
+ int num;
+ num = GET_FIELD (insn, 20, 20) << 5;
+ num |= GET_FIELD (insn, 22, 26);
+ (*info->fprintf_func) (info->stream, "%d", num);
+ break;
+ }
case 'T':
(*info->fprintf_func) (info->stream, "%d",
32 - GET_FIELD (insn, 27, 31));
break;
+ case '%':
+ {
+ int num;
+ num = (GET_FIELD (insn, 23, 23) + 1) * 32;
+ num -= GET_FIELD (insn, 27, 31);
+ (*info->fprintf_func) (info->stream, "%d", num);
+ break;
+ }
+ case '|':
+ {
+ int num;
+ num = (GET_FIELD (insn, 19, 19) + 1) * 32;
+ num -= GET_FIELD (insn, 27, 31);
+ (*info->fprintf_func) (info->stream, "%d", num);
+ break;
+ }
case '$':
fput_const (GET_FIELD (insn, 20, 28), info);
break;
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/basic.exp gas-src/gas/testsuite/gas/hppa/basic/basic.exp
*** pa-prev/gas/testsuite/gas/hppa/basic/basic.exp Fri Aug 13 15:34:19 1999
--- gas-src/gas/testsuite/gas/hppa/basic/basic.exp Mon Aug 23 10:45:34 1999
***************
*** 2292,2297 ****
--- 2292,2387 ----
if [expr $x==16] then { pass $testname } else { fail $testname }
}
+ proc do_shift2 {} {
+ set testname "shift2.s: shift tests"
+ set x 0
+
+ gas_start "shift2.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D0A40006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D0A42006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D0A44006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D0A46006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D0A48006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D0A4A006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D0A4C006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D0A4E006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D0A40B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D0A42B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D0A44B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D0A46B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D0A48B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D0A4AB46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D0A4CB46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D0A4EB46\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==16] then { pass $testname } else { fail $testname }
+ }
+
+ proc do_shift3 {} {
+ set testname "shift3.s: shift3 tests"
+ set x 0
+
+ gas_start "shift3.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D0A40206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D0A42206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D0A44206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D0A46206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D0A48206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D0A4A206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D0A4C206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D0A4E206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D0A40F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D0A42F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D0A44F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D0A46F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D0A48F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D0A4AF46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D0A4CF46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D0A4EF46\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==16] then { pass $testname } else { fail $testname }
+ }
+
proc do_extract {} {
set testname "extract.s: extract tests"
set x 0
***************
*** 2353,2358 ****
--- 2443,2570 ----
if [expr $x==32] then { pass $testname } else { fail $testname }
}
+ proc do_extract2 {} {
+ set testname "extract2.s: extract2 tests"
+ set x 0
+
+ gas_start "extract2.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D08618B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D08638B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D08658B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D08678B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D08698B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D086B8B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D086D8B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D086F8B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D0861CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D0863CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D0865CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D0867CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D0869CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D086BCB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D086DCB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D086FCB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0040 D086101B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0044 D086301B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0048 D086501B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 004c D086701B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0050 D086901B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0054 D086B01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0058 D086D01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 005c D086F01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0060 D086141B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0064 D086341B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0068 D086541B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 006c D086741B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0070 D086941B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0074 D086B41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0078 D086D41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 007c D086F41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==32] then { pass $testname } else { fail $testname }
+ }
+
+ proc do_extract3 {} {
+ set testname "extract3.s: extract3 tests"
+ set x 0
+
+ gas_start "extract3.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D886015B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D886215B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D886415B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D886615B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D886815B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D886A15B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D886C15B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D886E15B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D886055B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D886255B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D886455B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D886655B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D886855B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D886A55B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D886C55B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D886E55B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0040 D086121B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0044 D086321B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0048 D086521B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 004c D086721B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0050 D086921B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0054 D086B21B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0058 D086D21B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 005c D086F21B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0060 D086161B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0064 D086361B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0068 D086561B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 006c D086761B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0070 D086961B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0074 D086B61B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0078 D086D61B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 007c D086F61B\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==32] then { pass $testname } else { fail $testname }
+ }
+
proc do_deposit {} {
set testname "deposit.s: deposit tests"
set x 0
***************
*** 2446,2451 ****
--- 2658,2849 ----
if [expr $x==64] then { pass $testname } else { fail $testname }
}
+ proc do_deposit2 {} {
+ set testname "deposit2.s: deposit2 tests"
+ set x 0
+
+ gas_start "deposit2.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D4C40B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D4C42B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D4C44B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D4C46B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D4C48B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D4C4AB56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D4C4CB56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D4C4EB56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D4C40F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D4C42F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D4C44F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D4C46F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D4C48F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D4C4AF56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D4C4CF56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D4C4EF56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0040 D4C4001B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0044 D4C4201B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0048 D4C4401B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 004c D4C4601B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0050 D4C4801B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0054 D4C4A01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0058 D4C4C01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 005c D4C4E01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0060 D4C4041B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0064 D4C4241B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0068 D4C4441B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 006c D4C4641B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0070 D4C4841B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0074 D4C4A41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0078 D4C4C41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 007c D4C4E41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0080 D4DF141B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0084 D4DF341B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0088 D4DF541B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 008c D4DF741B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0090 D4DF941B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0094 D4DFB41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0098 D4DFD41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 009c D4DFF41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a0 D4DF101B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a4 D4DF301B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a8 D4DF501B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ac D4DF701B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b0 D4DF901B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b4 D4DFB01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b8 D4DFD01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00bc D4DFF01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c0 D4DF1F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c4 D4DF3F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c8 D4DF5F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00cc D4DF7F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d0 D4DF9F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d4 D4DFBF76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d8 D4DFDF76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00dc D4DFFF76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e0 D4DF1B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e4 D4DF3B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e8 D4DF5B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ec D4DF7B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f0 D4DF9B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f4 D4DFBB76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f8 D4DFDB76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00fc D4DFFB76\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==64] then { pass $testname } else { fail $testname }
+ }
+
+ proc do_deposit3 {} {
+ set testname "deposit3.s: deposit3 tests"
+ set x 0
+
+ gas_start "deposit3.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 F0C40ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 F0C42ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 F0C44ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c F0C46ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 F0C48ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 F0C4AABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 F0C4CABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c F0C4EABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 F0C40EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 F0C42EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 F0C44EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c F0C46EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 F0C48EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 F0C4AEBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 F0C4CEBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c F0C4EEBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0040 D4C4021B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0044 D4C4221B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0048 D4C4421B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 004c D4C4621B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0050 D4C4821B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0054 D4C4A21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0058 D4C4C21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 005c D4C4E21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0060 D4C4061B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0064 D4C4261B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0068 D4C4461B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 006c D4C4661B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0070 D4C4861B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0074 D4C4A61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0078 D4C4C61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 007c D4C4E61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0080 D4DF161B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0084 D4DF361B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0088 D4DF561B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 008c D4DF761B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0090 D4DF961B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0094 D4DFB61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0098 D4DFD61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 009c D4DFF61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a0 D4DF121B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a4 D4DF321B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a8 D4DF521B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ac D4DF721B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b0 D4DF921B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b4 D4DFB21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b8 D4DFD21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00bc D4DFF21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c0 F4DF0EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c4 F4DF2EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c8 F4DF4EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00cc F4DF6EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d0 F4DF8EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d4 F4DFAEBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d8 F4DFCEBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00dc F4DFEEBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e0 F4DF0ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e4 F4DF2ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e8 F4DF4ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ec F4DF6ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f0 F4DF8ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f4 F4DFAABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f8 F4DFCABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00fc F4DFEABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==64] then { pass $testname } else { fail $testname }
+ }
+
proc do_system {} {
set testname "system.s: system tests"
set x 0
***************
*** 3429,3436 ****
--- 3827,3840 ----
do_addi
do_subi
do_shift
+ do_shift2
+ do_shift3
do_extract
+ do_extract2
+ do_extract3
do_deposit
+ do_deposit2
+ do_deposit3
do_system
do_system2
do_purge
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/deposit2.s gas-src/gas/testsuite/gas/hppa/basic/deposit2.s
*** pa-prev/gas/testsuite/gas/hppa/basic/deposit2.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/deposit2.s Fri Aug 20 17:39:08 1999
***************
*** 0 ****
--- 1,87 ----
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; Deposit instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ depw,z %r4,5,10,%r6
+ depw,z,= %r4,5,10,%r6
+ depw,z,< %r4,5,10,%r6
+ depw,z,od %r4,5,10,%r6
+ depw,z,tr %r4,5,10,%r6
+ depw,z,<> %r4,5,10,%r6
+ depw,z,>= %r4,5,10,%r6
+ depw,z,ev %r4,5,10,%r6
+
+ depw %r4,5,10,%r6
+ depw,= %r4,5,10,%r6
+ depw,< %r4,5,10,%r6
+ depw,od %r4,5,10,%r6
+ depw,tr %r4,5,10,%r6
+ depw,<> %r4,5,10,%r6
+ depw,>= %r4,5,10,%r6
+ depw,ev %r4,5,10,%r6
+
+ depw,z %r4,%sar,5,%r6
+ depw,z,= %r4,%sar,5,%r6
+ depw,z,< %r4,%sar,5,%r6
+ depw,z,od %r4,%sar,5,%r6
+ depw,z,tr %r4,%sar,5,%r6
+ depw,z,<> %r4,%sar,5,%r6
+ depw,z,>= %r4,%sar,5,%r6
+ depw,z,ev %r4,%sar,5,%r6
+
+ depw %r4,%sar,5,%r6
+ depw,= %r4,%sar,5,%r6
+ depw,< %r4,%sar,5,%r6
+ depw,od %r4,%sar,5,%r6
+ depw,tr %r4,%sar,5,%r6
+ depw,<> %r4,%sar,5,%r6
+ depw,>= %r4,%sar,5,%r6
+ depw,ev %r4,%sar,5,%r6
+
+ depwi -1,%sar,5,%r6
+ depwi,= -1,%sar,5,%r6
+ depwi,< -1,%sar,5,%r6
+ depwi,od -1,%sar,5,%r6
+ depwi,tr -1,%sar,5,%r6
+ depwi,<> -1,%sar,5,%r6
+ depwi,>= -1,%sar,5,%r6
+ depwi,ev -1,%sar,5,%r6
+
+ depwi,z -1,%sar,5,%r6
+ depwi,z,= -1,%sar,5,%r6
+ depwi,z,< -1,%sar,5,%r6
+ depwi,z,od -1,%sar,5,%r6
+ depwi,z,tr -1,%sar,5,%r6
+ depwi,z,<> -1,%sar,5,%r6
+ depwi,z,>= -1,%sar,5,%r6
+ depwi,z,ev -1,%sar,5,%r6
+
+ depwi -1,4,10,%r6
+ depwi,= -1,4,10,%r6
+ depwi,< -1,4,10,%r6
+ depwi,od -1,4,10,%r6
+ depwi,tr -1,4,10,%r6
+ depwi,<> -1,4,10,%r6
+ depwi,>= -1,4,10,%r6
+ depwi,ev -1,4,10,%r6
+
+ depwi,z -1,4,10,%r6
+ depwi,z,= -1,4,10,%r6
+ depwi,z,< -1,4,10,%r6
+ depwi,z,od -1,4,10,%r6
+ depwi,z,tr -1,4,10,%r6
+ depwi,z,<> -1,4,10,%r6
+ depwi,z,>= -1,4,10,%r6
+ depwi,z,ev -1,4,10,%r6
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/deposit3.s gas-src/gas/testsuite/gas/hppa/basic/deposit3.s
*** pa-prev/gas/testsuite/gas/hppa/basic/deposit3.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/deposit3.s Mon Aug 23 10:44:54 1999
***************
*** 0 ****
--- 1,88 ----
+ .LEVEL 2.0
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; PA 2.0 Deposit instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ depd,z,* %r4,10,5,%r6
+ depd,z,*= %r4,10,5,%r6
+ depd,z,*< %r4,10,5,%r6
+ depd,z,*od %r4,10,5,%r6
+ depd,z,*tr %r4,10,5,%r6
+ depd,z,*<> %r4,10,5,%r6
+ depd,z,*>= %r4,10,5,%r6
+ depd,z,*ev %r4,10,5,%r6
+
+ depd,* %r4,10,5,%r6
+ depd,*= %r4,10,5,%r6
+ depd,*< %r4,10,5,%r6
+ depd,*od %r4,10,5,%r6
+ depd,*tr %r4,10,5,%r6
+ depd,*<> %r4,10,5,%r6
+ depd,*>= %r4,10,5,%r6
+ depd,*ev %r4,10,5,%r6
+
+ depd,z,* %r4,%sar,5,%r6
+ depd,z,*= %r4,%sar,5,%r6
+ depd,z,*< %r4,%sar,5,%r6
+ depd,z,*od %r4,%sar,5,%r6
+ depd,z,*tr %r4,%sar,5,%r6
+ depd,z,*<> %r4,%sar,5,%r6
+ depd,z,*>= %r4,%sar,5,%r6
+ depd,z,*ev %r4,%sar,5,%r6
+
+ depd,* %r4,%sar,5,%r6
+ depd,*= %r4,%sar,5,%r6
+ depd,*< %r4,%sar,5,%r6
+ depd,*od %r4,%sar,5,%r6
+ depd,*tr %r4,%sar,5,%r6
+ depd,*<> %r4,%sar,5,%r6
+ depd,*>= %r4,%sar,5,%r6
+ depd,*ev %r4,%sar,5,%r6
+
+ depdi,* -1,%sar,5,%r6
+ depdi,*= -1,%sar,5,%r6
+ depdi,*< -1,%sar,5,%r6
+ depdi,*od -1,%sar,5,%r6
+ depdi,*tr -1,%sar,5,%r6
+ depdi,*<> -1,%sar,5,%r6
+ depdi,*>= -1,%sar,5,%r6
+ depdi,*ev -1,%sar,5,%r6
+
+ depdi,z,* -1,%sar,5,%r6
+ depdi,z,*= -1,%sar,5,%r6
+ depdi,z,*< -1,%sar,5,%r6
+ depdi,z,*od -1,%sar,5,%r6
+ depdi,z,*tr -1,%sar,5,%r6
+ depdi,z,*<> -1,%sar,5,%r6
+ depdi,z,*>= -1,%sar,5,%r6
+ depdi,z,*ev -1,%sar,5,%r6
+
+ depdi,* -1,10,4,%r6
+ depdi,*= -1,10,4,%r6
+ depdi,*< -1,10,4,%r6
+ depdi,*od -1,10,4,%r6
+ depdi,*tr -1,10,4,%r6
+ depdi,*<> -1,10,4,%r6
+ depdi,*>= -1,10,4,%r6
+ depdi,*ev -1,10,4,%r6
+
+ depdi,z,* -1,10,4,%r6
+ depdi,z,*= -1,10,4,%r6
+ depdi,z,*< -1,10,4,%r6
+ depdi,z,*od -1,10,4,%r6
+ depdi,z,*tr -1,10,4,%r6
+ depdi,z,*<> -1,10,4,%r6
+ depdi,z,*>= -1,10,4,%r6
+ depdi,z,*ev -1,10,4,%r6
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/extract2.s gas-src/gas/testsuite/gas/hppa/basic/extract2.s
*** pa-prev/gas/testsuite/gas/hppa/basic/extract2.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/extract2.s Fri Aug 20 17:37:00 1999
***************
*** 0 ****
--- 1,51 ----
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; Basic immediate instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ extrw,u %r4,5,10,%r6
+ extrw,u,= %r4,5,10,%r6
+ extrw,u,< %r4,5,10,%r6
+ extrw,u,od %r4,5,10,%r6
+ extrw,u,tr %r4,5,10,%r6
+ extrw,u,<> %r4,5,10,%r6
+ extrw,u,>= %r4,5,10,%r6
+ extrw,u,ev %r4,5,10,%r6
+
+ extrw,s %r4,5,10,%r6
+ extrw,s,= %r4,5,10,%r6
+ extrw,s,< %r4,5,10,%r6
+ extrw,s,od %r4,5,10,%r6
+ extrw,tr %r4,5,10,%r6
+ extrw,<> %r4,5,10,%r6
+ extrw,>= %r4,5,10,%r6
+ extrw,ev %r4,5,10,%r6
+
+ extrw,u %r4,%sar,5,%r6
+ extrw,u,= %r4,%sar,5,%r6
+ extrw,u,< %r4,%sar,5,%r6
+ extrw,u,od %r4,%sar,5,%r6
+ extrw,u,tr %r4,%sar,5,%r6
+ extrw,u,<> %r4,%sar,5,%r6
+ extrw,u,>= %r4,%sar,5,%r6
+ extrw,u,ev %r4,%sar,5,%r6
+
+ extrw,s %r4,%sar,5,%r6
+ extrw,s,= %r4,%sar,5,%r6
+ extrw,s,< %r4,%sar,5,%r6
+ extrw,s,od %r4,%sar,5,%r6
+ extrw,tr %r4,%sar,5,%r6
+ extrw,<> %r4,%sar,5,%r6
+ extrw,>= %r4,%sar,5,%r6
+ extrw,ev %r4,%sar,5,%r6
Binary files pa-prev/gas/testsuite/gas/hppa/basic/extract3.o and gas-src/gas/testsuite/gas/hppa/basic/extract3.o differ
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/extract3.s gas-src/gas/testsuite/gas/hppa/basic/extract3.s
*** pa-prev/gas/testsuite/gas/hppa/basic/extract3.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/extract3.s Mon Aug 23 10:42:34 1999
***************
*** 0 ****
--- 1,52 ----
+ .LEVEL 2.0
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; Basic immediate instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ extrd,u,* %r4,10,5,%r6
+ extrd,u,*= %r4,10,5,%r6
+ extrd,u,*< %r4,10,5,%r6
+ extrd,u,*od %r4,10,5,%r6
+ extrd,u,*tr %r4,10,5,%r6
+ extrd,u,*<> %r4,10,5,%r6
+ extrd,u,*>= %r4,10,5,%r6
+ extrd,u,*ev %r4,10,5,%r6
+
+ extrd,s,* %r4,10,5,%r6
+ extrd,s,*= %r4,10,5,%r6
+ extrd,s,*< %r4,10,5,%r6
+ extrd,s,*od %r4,10,5,%r6
+ extrd,*tr %r4,10,5,%r6
+ extrd,*<> %r4,10,5,%r6
+ extrd,*>= %r4,10,5,%r6
+ extrd,*ev %r4,10,5,%r6
+
+ extrd,u,* %r4,%sar,5,%r6
+ extrd,u,*= %r4,%sar,5,%r6
+ extrd,u,*< %r4,%sar,5,%r6
+ extrd,u,*od %r4,%sar,5,%r6
+ extrd,u,*tr %r4,%sar,5,%r6
+ extrd,u,*<> %r4,%sar,5,%r6
+ extrd,u,*>= %r4,%sar,5,%r6
+ extrd,u,*ev %r4,%sar,5,%r6
+
+ extrd,s,* %r4,%sar,5,%r6
+ extrd,s,*= %r4,%sar,5,%r6
+ extrd,s,*< %r4,%sar,5,%r6
+ extrd,s,*od %r4,%sar,5,%r6
+ extrd,*tr %r4,%sar,5,%r6
+ extrd,*<> %r4,%sar,5,%r6
+ extrd,*>= %r4,%sar,5,%r6
+ extrd,*ev %r4,%sar,5,%r6
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/shift2.s gas-src/gas/testsuite/gas/hppa/basic/shift2.s
*** pa-prev/gas/testsuite/gas/hppa/basic/shift2.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/shift2.s Mon Aug 23 10:16:55 1999
***************
*** 0 ****
--- 1,33 ----
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; PA 2.0 format shift right instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ shrpw %r4,%r5,%sar,%r6
+ shrpw,= %r4,%r5,%sar,%r6
+ shrpw,< %r4,%r5,%sar,%r6
+ shrpw,od %r4,%r5,%sar,%r6
+ shrpw,tr %r4,%r5,%cr11,%r6
+ shrpw,<> %r4,%r5,%cr11,%r6
+ shrpw,>= %r4,%r5,%cr11,%r6
+ shrpw,ev %r4,%r5,%cr11,%r6
+
+ shrpw %r4,%r5,5,%r6
+ shrpw,= %r4,%r5,5,%r6
+ shrpw,< %r4,%r5,5,%r6
+ shrpw,od %r4,%r5,5,%r6
+ shrpw,tr %r4,%r5,5,%r6
+ shrpw,<> %r4,%r5,5,%r6
+ shrpw,>= %r4,%r5,5,%r6
+ shrpw,ev %r4,%r5,5,%r6
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/shift3.s gas-src/gas/testsuite/gas/hppa/basic/shift3.s
*** pa-prev/gas/testsuite/gas/hppa/basic/shift3.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/shift3.s Mon Aug 23 10:42:11 1999
***************
*** 0 ****
--- 1,35 ----
+ .LEVEL 2.0
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; PA 2.0 shift right instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ shrpd,* %r4,%r5,%sar,%r6
+ shrpd,*= %r4,%r5,%sar,%r6
+ shrpd,*< %r4,%r5,%sar,%r6
+ shrpd,*od %r4,%r5,%sar,%r6
+ shrpd,*tr %r4,%r5,%cr11,%r6
+ shrpd,*<> %r4,%r5,%cr11,%r6
+ shrpd,*>= %r4,%r5,%cr11,%r6
+ shrpd,*ev %r4,%r5,%cr11,%r6
+
+ shrpd,* %r4,%r5,5,%r6
+ shrpd,*= %r4,%r5,5,%r6
+ shrpd,*< %r4,%r5,5,%r6
+ shrpd,*od %r4,%r5,5,%r6
+ shrpd,*tr %r4,%r5,5,%r6
+ shrpd,*<> %r4,%r5,5,%r6
+ shrpd,*>= %r4,%r5,5,%r6
+ shrpd,*ev %r4,%r5,5,%r6
+
^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <199908231509.IAA21861@cygnus.com>]
* Re: Patch: shift insns for pa2.0
[not found] <199908231509.IAA21861@cygnus.com>
@ 1999-08-28 4:04 ` Jeffrey A Law
0 siblings, 0 replies; 3+ messages in thread
From: Jeffrey A Law @ 1999-08-28 4:04 UTC (permalink / raw)
To: Jerry Quinn; +Cc: binutils
In message <199908231509.IAA21861@cygnus.com>you write:
> This patch adds the shift, extract and deposit instructions for pa 2.0
> including new syntax for pa 1.0 instructions.
>
> Changelog entry:
>
> Mon Aug 23 10:56:06 EDT 1999 Jerry Quinn <jquinn@nortelnetworks.com>
>
> * hppa.h (pa_opcodes): Add extrd, extrw, depd, depdi, depw, depwi. Add
> supporting args.
> * tc-hppa.c (pa_ip): Add args q, %, and |.
> * hppa-dis.c (print_insn_hppa): Add args q, %, !, and |.
> * gas/testsuite/gas/hppa/basic/basic.exp: Add new tests shift2.s,
> shift3.s, extract2.s, extract3.s, deposit2.s, and deposit3.s.
> * gas/testsuite/gas/hppa/basic/shift2.s, shift3.s, extract2.s,
> extract3.s, deposit2.s, deposit3.s: New.
Thanks. Installed.
jeff
^ permalink raw reply [flat|nested] 3+ messages in thread
* Patch: shift insns for pa2.0
@ 1999-08-23 8:03 Jerry Quinn
0 siblings, 0 replies; 3+ messages in thread
From: Jerry Quinn @ 1999-08-23 8:03 UTC (permalink / raw)
To: binutils
This patch adds the shift, extract and deposit instructions for pa 2.0
including new syntax for pa 1.0 instructions.
Changelog entry:
Mon Aug 23 10:56:06 EDT 1999 Jerry Quinn <jquinn@nortelnetworks.com>
* hppa.h (pa_opcodes): Add extrd, extrw, depd, depdi, depw, depwi. Add
supporting args.
* tc-hppa.c (pa_ip): Add args q, %, and |.
* hppa-dis.c (print_insn_hppa): Add args q, %, !, and |.
* gas/testsuite/gas/hppa/basic/basic.exp: Add new tests shift2.s,
shift3.s, extract2.s, extract3.s, deposit2.s, and deposit3.s.
* gas/testsuite/gas/hppa/basic/shift2.s, shift3.s, extract2.s, extract3.s,
deposit2.s, deposit3.s: New.
*** pa-prev/include/opcode/hppa.h Fri Aug 13 15:29:53 1999
--- gas-src/include/opcode/hppa.h Fri Aug 20 17:18:39 1999
***************
*** 70,78 ****
In the args field, the following characters are unused:
! ' "# %& +- / 34 6789:;< > @'
' BC JKLM XYZ[\] '
! ' de gh lm q y {|} '
Here are all the characters:
--- 70,78 ----
In the args field, the following characters are unused:
! ' "# & - / 34 6789:;< > @'
' BC JKLM XYZ[\] '
! ' de gh lm y { } '
Here are all the characters:
***************
*** 106,112 ****
--- 106,115 ----
31-p
~ 6 bit shift count at 20,22:26 encoded as 63-~.
P 5 bit bit position at 26
+ q 6 bit bit position at 20,22:26
T 5 bit field length at 31 (encoded as 32-T)
+ % 6 bit field length at 23,27:31 (variable extract/deposit)
+ | 6 bit field length at 19,27:31 (fixed extract/deposit)
A 13 bit immediate at 18 (to support the BREAK instruction)
^ like b, but describes a control register
! sar (cr11) register
***************
*** 432,441 ****
--- 435,456 ----
{ "shrpw", 0xd0000800, 0xfc001c00, "?xx,b,p,t", pa10, FLAG_STRICT},
{ "vshd", 0xd0000000, 0xfc001fe0, "?xx,b,t", pa10},
{ "shd", 0xd0000800, 0xfc001c00, "?xx,b,p,t", pa10},
+ { "extrd", 0xd0001200, 0xfc001ae0, "cS?Xb,!,%,x", pa20, FLAG_STRICT},
+ { "extrd", 0xd8000000, 0xfc000000, "cS?Xb,q,|,x", pa20, FLAG_STRICT},
+ { "extrw", 0xd0001000, 0xfc001be0, "cS?xb,!,T,x", pa10, FLAG_STRICT},
+ { "extrw", 0xd0001800, 0xfc001800, "cS?xb,P,T,x", pa10, FLAG_STRICT},
{ "vextru", 0xd0001000, 0xfc001fe0, "?xb,T,x", pa10},
{ "vextrs", 0xd0001400, 0xfc001fe0, "?xb,T,x", pa10},
{ "extru", 0xd0001800, 0xfc001c00, "?xb,P,T,x", pa10},
{ "extrs", 0xd0001c00, 0xfc001c00, "?xb,P,T,x", pa10},
+ { "depd", 0xd4000200, 0xfc001ae0, "cz?Xx,!,%,b", pa20, FLAG_STRICT},
+ { "depd", 0xf0000000, 0xfc000000, "cz?Xx,~,|,b", pa20, FLAG_STRICT},
+ { "depdi", 0xd4001200, 0xfc001ae0, "cz?X5,!,%,b", pa20, FLAG_STRICT},
+ { "depdi", 0xf4000000, 0xfc000000, "cz?X5,~,|,b", pa20, FLAG_STRICT},
+ { "depw", 0xd4000000, 0xfc001be0, "cz?xx,!,T,b", pa10, FLAG_STRICT},
+ { "depw", 0xd4000800, 0xfc001800, "cz?xx,p,T,b", pa10, FLAG_STRICT},
+ { "depwi", 0xd4001000, 0xfc001be0, "cz?x5,!,T,b", pa10, FLAG_STRICT},
+ { "depwi", 0xd4001800, 0xfc001be0, "cz?x5,p,T,b", pa10, FLAG_STRICT},
{ "zvdep", 0xd4000000, 0xfc001fe0, "?xx,T,b", pa10},
{ "vdep", 0xd4000400, 0xfc001fe0, "?xx,T,b", pa10},
{ "zdep", 0xd4000800, 0xfc001c00, "?xx,p,T,b", pa10},
*** pa-prev/gas/config/tc-hppa.c Fri Aug 13 15:29:40 1999
--- gas-src/gas/config/tc-hppa.c Fri Aug 20 17:13:46 1999
***************
*** 1819,1824 ****
--- 1819,1835 ----
INSERT_FIELD_AND_CONTINUE (opcode, flag, 6);
+ /* Handle zero/sign extension completer. */
+ case 'z':
+ flag = 1;
+ if (!strncasecmp (s, ",z", 2))
+ {
+ flag = 0;
+ s += 2;
+ }
+
+ INSERT_FIELD_AND_CONTINUE (opcode, flag, 10);
+
/* Handle add completer. */
case 'a':
flag = 1;
***************
*** 2781,2786 ****
--- 2792,2818 ----
opcode |= (num & 0x20) << 6;
INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 5);
+ /* Handle a 6 bit field length at 23,27:31. */
+ case '%':
+ flag = 0;
+ num = pa_get_absolute_expression (&the_insn, &s);
+ s = expr_end;
+ CHECK_FIELD (num, 64, 1, 0);
+ num--;
+ opcode |= (num & 0x20) << 3;
+ num = 31 - (num & 0x1f);
+ INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
+
+ /* Handle a 6 bit field length at 19,27:31. */
+ case '|':
+ num = pa_get_absolute_expression (&the_insn, &s);
+ s = expr_end;
+ CHECK_FIELD (num, 64, 1, 0);
+ num--;
+ opcode |= (num & 0x20) << 7;
+ num = 31 - (num & 0x1f);
+ INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
+
/* Handle a 5 bit bit position at 26. */
case 'P':
num = pa_get_absolute_expression (&the_insn, &s);
***************
*** 2788,2796 ****
CHECK_FIELD (num, 31, 0, 0);
INSERT_FIELD_AND_CONTINUE (opcode, num, 5);
/* Handle a 5 bit immediate at 10. */
case 'Q':
-
num = pa_get_absolute_expression (&the_insn, &s);
if (the_insn.exp.X_op != O_constant)
break;
--- 2820,2835 ----
CHECK_FIELD (num, 31, 0, 0);
INSERT_FIELD_AND_CONTINUE (opcode, num, 5);
+ /* Handle a 6 bit bit position at 20,22:26. */
+ case 'q':
+ num = pa_get_absolute_expression (&the_insn, &s);
+ s = expr_end;
+ CHECK_FIELD (num, 63, 0, 0);
+ opcode |= (num & 0x20) << 6;
+ INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 5);
+
/* Handle a 5 bit immediate at 10. */
case 'Q':
num = pa_get_absolute_expression (&the_insn, &s);
if (the_insn.exp.X_op != O_constant)
break;
*** pa-prev/opcodes/hppa-dis.c Fri Aug 13 15:30:05 1999
--- gas-src/opcodes/hppa-dis.c Fri Aug 20 16:47:09 1999
***************
*** 363,368 ****
--- 363,371 ----
case '^':
fput_creg (GET_FIELD (insn, 6, 10), info);
break;
+ case '!':
+ fput_creg (11, info);
+ break;
case 't':
fput_reg (GET_FIELD (insn, 27, 31), info);
break;
***************
*** 508,513 ****
--- 511,520 ----
if (GET_FIELD (insn, 25, 25))
(*info->fprintf_func) (info->stream, ",i");
break;
+ case 'z':
+ if (!GET_FIELD (insn, 21, 21))
+ (*info->fprintf_func) (info->stream, ",z");
+ break;
case 'a':
(*info->fprintf_func)
(info->stream, "%s", add_compl_names[GET_FIELD
***************
*** 782,791 ****
--- 789,822 ----
(*info->fprintf_func) (info->stream, "%d",
GET_FIELD (insn, 22, 26));
break;
+ case 'q':
+ {
+ int num;
+ num = GET_FIELD (insn, 20, 20) << 5;
+ num |= GET_FIELD (insn, 22, 26);
+ (*info->fprintf_func) (info->stream, "%d", num);
+ break;
+ }
case 'T':
(*info->fprintf_func) (info->stream, "%d",
32 - GET_FIELD (insn, 27, 31));
break;
+ case '%':
+ {
+ int num;
+ num = (GET_FIELD (insn, 23, 23) + 1) * 32;
+ num -= GET_FIELD (insn, 27, 31);
+ (*info->fprintf_func) (info->stream, "%d", num);
+ break;
+ }
+ case '|':
+ {
+ int num;
+ num = (GET_FIELD (insn, 19, 19) + 1) * 32;
+ num -= GET_FIELD (insn, 27, 31);
+ (*info->fprintf_func) (info->stream, "%d", num);
+ break;
+ }
case '$':
fput_const (GET_FIELD (insn, 20, 28), info);
break;
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/basic.exp gas-src/gas/testsuite/gas/hppa/basic/basic.exp
*** pa-prev/gas/testsuite/gas/hppa/basic/basic.exp Fri Aug 13 15:34:19 1999
--- gas-src/gas/testsuite/gas/hppa/basic/basic.exp Mon Aug 23 10:45:34 1999
***************
*** 2292,2297 ****
--- 2292,2387 ----
if [expr $x==16] then { pass $testname } else { fail $testname }
}
+ proc do_shift2 {} {
+ set testname "shift2.s: shift tests"
+ set x 0
+
+ gas_start "shift2.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D0A40006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D0A42006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D0A44006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D0A46006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D0A48006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D0A4A006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D0A4C006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D0A4E006\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D0A40B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D0A42B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D0A44B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D0A46B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D0A48B46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D0A4AB46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D0A4CB46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D0A4EB46\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==16] then { pass $testname } else { fail $testname }
+ }
+
+ proc do_shift3 {} {
+ set testname "shift3.s: shift3 tests"
+ set x 0
+
+ gas_start "shift3.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D0A40206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D0A42206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D0A44206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D0A46206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D0A48206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D0A4A206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D0A4C206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D0A4E206\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D0A40F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D0A42F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D0A44F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D0A46F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D0A48F46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D0A4AF46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D0A4CF46\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D0A4EF46\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==16] then { pass $testname } else { fail $testname }
+ }
+
proc do_extract {} {
set testname "extract.s: extract tests"
set x 0
***************
*** 2353,2358 ****
--- 2443,2570 ----
if [expr $x==32] then { pass $testname } else { fail $testname }
}
+ proc do_extract2 {} {
+ set testname "extract2.s: extract2 tests"
+ set x 0
+
+ gas_start "extract2.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D08618B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D08638B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D08658B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D08678B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D08698B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D086B8B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D086D8B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D086F8B6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D0861CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D0863CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D0865CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D0867CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D0869CB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D086BCB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D086DCB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D086FCB6\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0040 D086101B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0044 D086301B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0048 D086501B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 004c D086701B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0050 D086901B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0054 D086B01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0058 D086D01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 005c D086F01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0060 D086141B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0064 D086341B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0068 D086541B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 006c D086741B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0070 D086941B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0074 D086B41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0078 D086D41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 007c D086F41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==32] then { pass $testname } else { fail $testname }
+ }
+
+ proc do_extract3 {} {
+ set testname "extract3.s: extract3 tests"
+ set x 0
+
+ gas_start "extract3.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D886015B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D886215B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D886415B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D886615B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D886815B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D886A15B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D886C15B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D886E15B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D886055B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D886255B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D886455B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D886655B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D886855B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D886A55B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D886C55B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D886E55B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0040 D086121B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0044 D086321B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0048 D086521B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 004c D086721B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0050 D086921B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0054 D086B21B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0058 D086D21B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 005c D086F21B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0060 D086161B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0064 D086361B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0068 D086561B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 006c D086761B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0070 D086961B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0074 D086B61B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0078 D086D61B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 007c D086F61B\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==32] then { pass $testname } else { fail $testname }
+ }
+
proc do_deposit {} {
set testname "deposit.s: deposit tests"
set x 0
***************
*** 2446,2451 ****
--- 2658,2849 ----
if [expr $x==64] then { pass $testname } else { fail $testname }
}
+ proc do_deposit2 {} {
+ set testname "deposit2.s: deposit2 tests"
+ set x 0
+
+ gas_start "deposit2.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 D4C40B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 D4C42B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 D4C44B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c D4C46B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 D4C48B56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 D4C4AB56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 D4C4CB56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c D4C4EB56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 D4C40F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 D4C42F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 D4C44F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c D4C46F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 D4C48F56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 D4C4AF56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 D4C4CF56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c D4C4EF56\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0040 D4C4001B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0044 D4C4201B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0048 D4C4401B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 004c D4C4601B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0050 D4C4801B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0054 D4C4A01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0058 D4C4C01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 005c D4C4E01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0060 D4C4041B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0064 D4C4241B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0068 D4C4441B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 006c D4C4641B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0070 D4C4841B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0074 D4C4A41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0078 D4C4C41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 007c D4C4E41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0080 D4DF141B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0084 D4DF341B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0088 D4DF541B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 008c D4DF741B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0090 D4DF941B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0094 D4DFB41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0098 D4DFD41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 009c D4DFF41B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a0 D4DF101B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a4 D4DF301B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a8 D4DF501B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ac D4DF701B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b0 D4DF901B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b4 D4DFB01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b8 D4DFD01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00bc D4DFF01B\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c0 D4DF1F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c4 D4DF3F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c8 D4DF5F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00cc D4DF7F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d0 D4DF9F76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d4 D4DFBF76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d8 D4DFDF76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00dc D4DFFF76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e0 D4DF1B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e4 D4DF3B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e8 D4DF5B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ec D4DF7B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f0 D4DF9B76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f4 D4DFBB76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f8 D4DFDB76\[^\n]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00fc D4DFFB76\[^\n]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==64] then { pass $testname } else { fail $testname }
+ }
+
+ proc do_deposit3 {} {
+ set testname "deposit3.s: deposit3 tests"
+ set x 0
+
+ gas_start "deposit3.s" "-al"
+
+ # Check the assembled instruction against a table built by the HP assembler
+ # Any differences should be checked by hand -- with the number of problems
+ # I've seen in the HP assembler I don't completely trust it.
+ #
+ # Instead of having a variable for each match string just increment the
+ # total number of matches seen. That's simpler when testing large numbers
+ # of instructions (as these tests to).
+ while 1 {
+ expect {
+ -re "^ +\[0-9\]+ 0000 F0C40ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0004 F0C42ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0008 F0C44ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 000c F0C46ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0010 F0C48ABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0014 F0C4AABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0018 F0C4CABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 001c F0C4EABB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0020 F0C40EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0024 F0C42EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0028 F0C44EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 002c F0C46EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0030 F0C48EBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0034 F0C4AEBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0038 F0C4CEBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 003c F0C4EEBB\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0040 D4C4021B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0044 D4C4221B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0048 D4C4421B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 004c D4C4621B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0050 D4C4821B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0054 D4C4A21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0058 D4C4C21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 005c D4C4E21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0060 D4C4061B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0064 D4C4261B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0068 D4C4461B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 006c D4C4661B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0070 D4C4861B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0074 D4C4A61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0078 D4C4C61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 007c D4C4E61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0080 D4DF161B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0084 D4DF361B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0088 D4DF561B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 008c D4DF761B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0090 D4DF961B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0094 D4DFB61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0098 D4DFD61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 009c D4DFF61B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a0 D4DF121B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a4 D4DF321B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00a8 D4DF521B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ac D4DF721B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b0 D4DF921B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b4 D4DFB21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00b8 D4DFD21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00bc D4DFF21B\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c0 F4DF0EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c4 F4DF2EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00c8 F4DF4EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00cc F4DF6EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d0 F4DF8EBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d4 F4DFAEBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00d8 F4DFCEBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00dc F4DFEEBC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e0 F4DF0ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e4 F4DF2ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00e8 F4DF4ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00ec F4DF6ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f0 F4DF8ABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f4 F4DFAABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00f8 F4DFCABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 00fc F4DFEABC\[^\n\]*\n" { set x [expr $x+1] }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x==64] then { pass $testname } else { fail $testname }
+ }
+
proc do_system {} {
set testname "system.s: system tests"
set x 0
***************
*** 3429,3436 ****
--- 3827,3840 ----
do_addi
do_subi
do_shift
+ do_shift2
+ do_shift3
do_extract
+ do_extract2
+ do_extract3
do_deposit
+ do_deposit2
+ do_deposit3
do_system
do_system2
do_purge
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/deposit2.s gas-src/gas/testsuite/gas/hppa/basic/deposit2.s
*** pa-prev/gas/testsuite/gas/hppa/basic/deposit2.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/deposit2.s Fri Aug 20 17:39:08 1999
***************
*** 0 ****
--- 1,87 ----
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; Deposit instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ depw,z %r4,5,10,%r6
+ depw,z,= %r4,5,10,%r6
+ depw,z,< %r4,5,10,%r6
+ depw,z,od %r4,5,10,%r6
+ depw,z,tr %r4,5,10,%r6
+ depw,z,<> %r4,5,10,%r6
+ depw,z,>= %r4,5,10,%r6
+ depw,z,ev %r4,5,10,%r6
+
+ depw %r4,5,10,%r6
+ depw,= %r4,5,10,%r6
+ depw,< %r4,5,10,%r6
+ depw,od %r4,5,10,%r6
+ depw,tr %r4,5,10,%r6
+ depw,<> %r4,5,10,%r6
+ depw,>= %r4,5,10,%r6
+ depw,ev %r4,5,10,%r6
+
+ depw,z %r4,%sar,5,%r6
+ depw,z,= %r4,%sar,5,%r6
+ depw,z,< %r4,%sar,5,%r6
+ depw,z,od %r4,%sar,5,%r6
+ depw,z,tr %r4,%sar,5,%r6
+ depw,z,<> %r4,%sar,5,%r6
+ depw,z,>= %r4,%sar,5,%r6
+ depw,z,ev %r4,%sar,5,%r6
+
+ depw %r4,%sar,5,%r6
+ depw,= %r4,%sar,5,%r6
+ depw,< %r4,%sar,5,%r6
+ depw,od %r4,%sar,5,%r6
+ depw,tr %r4,%sar,5,%r6
+ depw,<> %r4,%sar,5,%r6
+ depw,>= %r4,%sar,5,%r6
+ depw,ev %r4,%sar,5,%r6
+
+ depwi -1,%sar,5,%r6
+ depwi,= -1,%sar,5,%r6
+ depwi,< -1,%sar,5,%r6
+ depwi,od -1,%sar,5,%r6
+ depwi,tr -1,%sar,5,%r6
+ depwi,<> -1,%sar,5,%r6
+ depwi,>= -1,%sar,5,%r6
+ depwi,ev -1,%sar,5,%r6
+
+ depwi,z -1,%sar,5,%r6
+ depwi,z,= -1,%sar,5,%r6
+ depwi,z,< -1,%sar,5,%r6
+ depwi,z,od -1,%sar,5,%r6
+ depwi,z,tr -1,%sar,5,%r6
+ depwi,z,<> -1,%sar,5,%r6
+ depwi,z,>= -1,%sar,5,%r6
+ depwi,z,ev -1,%sar,5,%r6
+
+ depwi -1,4,10,%r6
+ depwi,= -1,4,10,%r6
+ depwi,< -1,4,10,%r6
+ depwi,od -1,4,10,%r6
+ depwi,tr -1,4,10,%r6
+ depwi,<> -1,4,10,%r6
+ depwi,>= -1,4,10,%r6
+ depwi,ev -1,4,10,%r6
+
+ depwi,z -1,4,10,%r6
+ depwi,z,= -1,4,10,%r6
+ depwi,z,< -1,4,10,%r6
+ depwi,z,od -1,4,10,%r6
+ depwi,z,tr -1,4,10,%r6
+ depwi,z,<> -1,4,10,%r6
+ depwi,z,>= -1,4,10,%r6
+ depwi,z,ev -1,4,10,%r6
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/deposit3.s gas-src/gas/testsuite/gas/hppa/basic/deposit3.s
*** pa-prev/gas/testsuite/gas/hppa/basic/deposit3.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/deposit3.s Mon Aug 23 10:44:54 1999
***************
*** 0 ****
--- 1,88 ----
+ .LEVEL 2.0
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; PA 2.0 Deposit instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ depd,z,* %r4,10,5,%r6
+ depd,z,*= %r4,10,5,%r6
+ depd,z,*< %r4,10,5,%r6
+ depd,z,*od %r4,10,5,%r6
+ depd,z,*tr %r4,10,5,%r6
+ depd,z,*<> %r4,10,5,%r6
+ depd,z,*>= %r4,10,5,%r6
+ depd,z,*ev %r4,10,5,%r6
+
+ depd,* %r4,10,5,%r6
+ depd,*= %r4,10,5,%r6
+ depd,*< %r4,10,5,%r6
+ depd,*od %r4,10,5,%r6
+ depd,*tr %r4,10,5,%r6
+ depd,*<> %r4,10,5,%r6
+ depd,*>= %r4,10,5,%r6
+ depd,*ev %r4,10,5,%r6
+
+ depd,z,* %r4,%sar,5,%r6
+ depd,z,*= %r4,%sar,5,%r6
+ depd,z,*< %r4,%sar,5,%r6
+ depd,z,*od %r4,%sar,5,%r6
+ depd,z,*tr %r4,%sar,5,%r6
+ depd,z,*<> %r4,%sar,5,%r6
+ depd,z,*>= %r4,%sar,5,%r6
+ depd,z,*ev %r4,%sar,5,%r6
+
+ depd,* %r4,%sar,5,%r6
+ depd,*= %r4,%sar,5,%r6
+ depd,*< %r4,%sar,5,%r6
+ depd,*od %r4,%sar,5,%r6
+ depd,*tr %r4,%sar,5,%r6
+ depd,*<> %r4,%sar,5,%r6
+ depd,*>= %r4,%sar,5,%r6
+ depd,*ev %r4,%sar,5,%r6
+
+ depdi,* -1,%sar,5,%r6
+ depdi,*= -1,%sar,5,%r6
+ depdi,*< -1,%sar,5,%r6
+ depdi,*od -1,%sar,5,%r6
+ depdi,*tr -1,%sar,5,%r6
+ depdi,*<> -1,%sar,5,%r6
+ depdi,*>= -1,%sar,5,%r6
+ depdi,*ev -1,%sar,5,%r6
+
+ depdi,z,* -1,%sar,5,%r6
+ depdi,z,*= -1,%sar,5,%r6
+ depdi,z,*< -1,%sar,5,%r6
+ depdi,z,*od -1,%sar,5,%r6
+ depdi,z,*tr -1,%sar,5,%r6
+ depdi,z,*<> -1,%sar,5,%r6
+ depdi,z,*>= -1,%sar,5,%r6
+ depdi,z,*ev -1,%sar,5,%r6
+
+ depdi,* -1,10,4,%r6
+ depdi,*= -1,10,4,%r6
+ depdi,*< -1,10,4,%r6
+ depdi,*od -1,10,4,%r6
+ depdi,*tr -1,10,4,%r6
+ depdi,*<> -1,10,4,%r6
+ depdi,*>= -1,10,4,%r6
+ depdi,*ev -1,10,4,%r6
+
+ depdi,z,* -1,10,4,%r6
+ depdi,z,*= -1,10,4,%r6
+ depdi,z,*< -1,10,4,%r6
+ depdi,z,*od -1,10,4,%r6
+ depdi,z,*tr -1,10,4,%r6
+ depdi,z,*<> -1,10,4,%r6
+ depdi,z,*>= -1,10,4,%r6
+ depdi,z,*ev -1,10,4,%r6
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/extract2.s gas-src/gas/testsuite/gas/hppa/basic/extract2.s
*** pa-prev/gas/testsuite/gas/hppa/basic/extract2.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/extract2.s Fri Aug 20 17:37:00 1999
***************
*** 0 ****
--- 1,51 ----
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; Basic immediate instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ extrw,u %r4,5,10,%r6
+ extrw,u,= %r4,5,10,%r6
+ extrw,u,< %r4,5,10,%r6
+ extrw,u,od %r4,5,10,%r6
+ extrw,u,tr %r4,5,10,%r6
+ extrw,u,<> %r4,5,10,%r6
+ extrw,u,>= %r4,5,10,%r6
+ extrw,u,ev %r4,5,10,%r6
+
+ extrw,s %r4,5,10,%r6
+ extrw,s,= %r4,5,10,%r6
+ extrw,s,< %r4,5,10,%r6
+ extrw,s,od %r4,5,10,%r6
+ extrw,tr %r4,5,10,%r6
+ extrw,<> %r4,5,10,%r6
+ extrw,>= %r4,5,10,%r6
+ extrw,ev %r4,5,10,%r6
+
+ extrw,u %r4,%sar,5,%r6
+ extrw,u,= %r4,%sar,5,%r6
+ extrw,u,< %r4,%sar,5,%r6
+ extrw,u,od %r4,%sar,5,%r6
+ extrw,u,tr %r4,%sar,5,%r6
+ extrw,u,<> %r4,%sar,5,%r6
+ extrw,u,>= %r4,%sar,5,%r6
+ extrw,u,ev %r4,%sar,5,%r6
+
+ extrw,s %r4,%sar,5,%r6
+ extrw,s,= %r4,%sar,5,%r6
+ extrw,s,< %r4,%sar,5,%r6
+ extrw,s,od %r4,%sar,5,%r6
+ extrw,tr %r4,%sar,5,%r6
+ extrw,<> %r4,%sar,5,%r6
+ extrw,>= %r4,%sar,5,%r6
+ extrw,ev %r4,%sar,5,%r6
Binary files pa-prev/gas/testsuite/gas/hppa/basic/extract3.o and gas-src/gas/testsuite/gas/hppa/basic/extract3.o differ
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/extract3.s gas-src/gas/testsuite/gas/hppa/basic/extract3.s
*** pa-prev/gas/testsuite/gas/hppa/basic/extract3.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/extract3.s Mon Aug 23 10:42:34 1999
***************
*** 0 ****
--- 1,52 ----
+ .LEVEL 2.0
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; Basic immediate instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ extrd,u,* %r4,10,5,%r6
+ extrd,u,*= %r4,10,5,%r6
+ extrd,u,*< %r4,10,5,%r6
+ extrd,u,*od %r4,10,5,%r6
+ extrd,u,*tr %r4,10,5,%r6
+ extrd,u,*<> %r4,10,5,%r6
+ extrd,u,*>= %r4,10,5,%r6
+ extrd,u,*ev %r4,10,5,%r6
+
+ extrd,s,* %r4,10,5,%r6
+ extrd,s,*= %r4,10,5,%r6
+ extrd,s,*< %r4,10,5,%r6
+ extrd,s,*od %r4,10,5,%r6
+ extrd,*tr %r4,10,5,%r6
+ extrd,*<> %r4,10,5,%r6
+ extrd,*>= %r4,10,5,%r6
+ extrd,*ev %r4,10,5,%r6
+
+ extrd,u,* %r4,%sar,5,%r6
+ extrd,u,*= %r4,%sar,5,%r6
+ extrd,u,*< %r4,%sar,5,%r6
+ extrd,u,*od %r4,%sar,5,%r6
+ extrd,u,*tr %r4,%sar,5,%r6
+ extrd,u,*<> %r4,%sar,5,%r6
+ extrd,u,*>= %r4,%sar,5,%r6
+ extrd,u,*ev %r4,%sar,5,%r6
+
+ extrd,s,* %r4,%sar,5,%r6
+ extrd,s,*= %r4,%sar,5,%r6
+ extrd,s,*< %r4,%sar,5,%r6
+ extrd,s,*od %r4,%sar,5,%r6
+ extrd,*tr %r4,%sar,5,%r6
+ extrd,*<> %r4,%sar,5,%r6
+ extrd,*>= %r4,%sar,5,%r6
+ extrd,*ev %r4,%sar,5,%r6
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/shift2.s gas-src/gas/testsuite/gas/hppa/basic/shift2.s
*** pa-prev/gas/testsuite/gas/hppa/basic/shift2.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/shift2.s Mon Aug 23 10:16:55 1999
***************
*** 0 ****
--- 1,33 ----
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; PA 2.0 format shift right instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ shrpw %r4,%r5,%sar,%r6
+ shrpw,= %r4,%r5,%sar,%r6
+ shrpw,< %r4,%r5,%sar,%r6
+ shrpw,od %r4,%r5,%sar,%r6
+ shrpw,tr %r4,%r5,%cr11,%r6
+ shrpw,<> %r4,%r5,%cr11,%r6
+ shrpw,>= %r4,%r5,%cr11,%r6
+ shrpw,ev %r4,%r5,%cr11,%r6
+
+ shrpw %r4,%r5,5,%r6
+ shrpw,= %r4,%r5,5,%r6
+ shrpw,< %r4,%r5,5,%r6
+ shrpw,od %r4,%r5,5,%r6
+ shrpw,tr %r4,%r5,5,%r6
+ shrpw,<> %r4,%r5,5,%r6
+ shrpw,>= %r4,%r5,5,%r6
+ shrpw,ev %r4,%r5,5,%r6
diff -cN pa-prev/gas/testsuite/gas/hppa/basic/shift3.s gas-src/gas/testsuite/gas/hppa/basic/shift3.s
*** pa-prev/gas/testsuite/gas/hppa/basic/shift3.s Wed Dec 31 19:00:00 1969
--- gas-src/gas/testsuite/gas/hppa/basic/shift3.s Mon Aug 23 10:42:11 1999
***************
*** 0 ****
--- 1,35 ----
+ .LEVEL 2.0
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ ; PA 2.0 shift right instruction tests.
+ ;
+ ; We could/should test some of the corner cases for register and
+ ; immediate fields. We should also check the assorted field
+ ; selectors to make sure they're handled correctly.
+ shrpd,* %r4,%r5,%sar,%r6
+ shrpd,*= %r4,%r5,%sar,%r6
+ shrpd,*< %r4,%r5,%sar,%r6
+ shrpd,*od %r4,%r5,%sar,%r6
+ shrpd,*tr %r4,%r5,%cr11,%r6
+ shrpd,*<> %r4,%r5,%cr11,%r6
+ shrpd,*>= %r4,%r5,%cr11,%r6
+ shrpd,*ev %r4,%r5,%cr11,%r6
+
+ shrpd,* %r4,%r5,5,%r6
+ shrpd,*= %r4,%r5,5,%r6
+ shrpd,*< %r4,%r5,5,%r6
+ shrpd,*od %r4,%r5,5,%r6
+ shrpd,*tr %r4,%r5,5,%r6
+ shrpd,*<> %r4,%r5,5,%r6
+ shrpd,*>= %r4,%r5,5,%r6
+ shrpd,*ev %r4,%r5,5,%r6
+
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~1999-08-28 4:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-08-23 8:03 Patch: shift insns for pa2.0 Jerry Quinn
[not found] <199908231509.IAA21861@cygnus.com>
1999-08-28 4:04 ` Jeffrey A Law
-- strict thread matches above, loose matches on Subject: below --
1999-08-23 8:03 Jerry Quinn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).