This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Patch: more new instructions for PA2.0


This patch adds a bunch of new instructions and pa2.0 syntax for existing
instructions.

-- 
Jerry Quinn                             Tel: (514) 761-8737
jquinn@nortelnetworks.com               Fax: (514) 761-8505
Speech Recognition Research


ChangeLog entry:

Wed Aug 11 15:21:27 EDT 1999  Jerry Quinn

    * hppa.h:  Document new completers and args.
    * hppa.h (pa_opcodes):  Add 64 bit patterns and pa2.0 syntax for uxor,
    uaddcm, dcor, addi, add, sub, subi, shladd, rfi, and probe.  Add pa2.0
    extensions for ssm, rsm, pdtlb, pitlb.  Add performance instructions
    pmenb and pmdis.
    * tc-hppa.c (pa_ip):  Absorb white space in instructions between args.
    Add new completers.  Fix bug in 64 bit condition handling.
    * hppa-dis.c (MASK_10, read_write_names, add_compl_names,
    extract_10U_store):  New.
    (print_insn_hppa):  Add new completers.

    * hppa/basic/add.s,addi.s,dcor.s,shladd.s,sub.s,subi.s,unit.s:  Add new
    syntax versions of instructions to tests. 
    * hppa/basic/add2.s,dcor2.s,perf.s,purge2.s,shladd2.s,sub2.s,system2.s,
    unit2.s:  New tests.
    * hppa/basic/basic.exp: Add new tests.

*** pa-prev/include/opcode/hppa.h	Thu Aug  5 17:23:43 1999
--- gas-src/include/opcode/hppa.h	Wed Aug 11 15:20:43 1999
***************
*** 71,78 ****
     In the args field, the following characters are unused:
  
  	'  "# %&    +-  /          :;< > @'
! 	'  C        LM       U   YZ[\]  '
! 	'   d       l              {|} '
  
     Here are all the characters:
  
--- 71,78 ----
     In the args field, the following characters are unused:
  
  	'  "# %&    +-  /          :;< > @'
! 	' BC        LM       U   YZ[\]  '
! 	'   de gh   lm   q         {|} '
  
     Here are all the characters:
  
***************
*** 104,110 ****
--- 104,125 ----
     cx   indexed load completer.
     cm   short load and store completer.
     cs   store bytes short completer.
+ 
+    cw	read/write completer for PROBE
+    cW	wide completer for MFCTL
+    cL	local processor completer for cache control
     cZ   System Control Completer (to support LPA, LHA, etc.)
+ 
+    ci	correction completer for DCOR
+    ca	add completer
+    cy	32 bit add carry completer
+    cY	64 bit add carry completer
+    cv	signed overflow trap completer
+    ct	trap on condition completer for ADDI, SUB
+    cT	trap on condition completer for UADDCM
+    cb	32 bit borrow completer for SUB
+    cB	64 bit borrow completer for SUB
+ 
     ch	left/right half completer
     cH	signed/unsigned saturation completer
     cS	signed/unsigned completer at 21
***************
*** 181,186 ****
--- 196,202 ----
  	low_sign_ext)
     R	5 bit immediate value at 15 (for the ssm, rsm, probei instructions)
  	(same as r above, except the value is in a different location)
+    U	10 bit immediate value at 15 (for SSM, RSM on pa2.0)
     Q	5 bit immediate value at 10 (a bit position specified in
  	the bb instruction. It's the same as r above, except the
          value is in a different location)
***************
*** 333,352 ****
--- 349,385 ----
  { "and",        0x08000200, 0xfc000fe0, "?lx,b,t", pa10},
  { "andcm",      0x08000020, 0xfc000fe0, "?Lx,b,t", pa20, FLAG_STRICT},
  { "andcm",      0x08000000, 0xfc000fe0, "?lx,b,t", pa10},
+ { "uxor",       0x080003a0, 0xfc000fe0, "?Ux,b,t", pa20, FLAG_STRICT},
  { "uxor",       0x08000380, 0xfc000fe0, "?ux,b,t", pa10},
+ { "uaddcm",     0x080009a0, 0xfc000fa0, "cT?Ux,b,t", pa20, FLAG_STRICT},
+ { "uaddcm",     0x08000980, 0xfc000fa0, "cT?ux,b,t", pa10, FLAG_STRICT},
  { "uaddcm",     0x08000980, 0xfc000fe0, "?ux,b,t", pa10},
  { "uaddcmt",    0x080009c0, 0xfc000fe0, "?ux,b,t", pa10},
+ { "dcor",       0x08000ba0, 0xfc1f0fa0, "ci?Ub,t", pa20, FLAG_STRICT},
+ { "dcor",       0x08000b80, 0xfc1f0fa0, "ci?ub,t", pa10, FLAG_STRICT},
  { "dcor",       0x08000b80, 0xfc1f0fe0, "?ub,t",   pa10},
  { "idcor",      0x08000bc0, 0xfc1f0fe0, "?ub,t",   pa10},
+ { "addi",       0xb0000000, 0xfc000000, "ct?ai,b,x", pa10, FLAG_STRICT},
+ { "addi",       0xb4000000, 0xfc000000, "cv?ai,b,x", pa10, FLAG_STRICT},
  { "addi",       0xb4000000, 0xfc000800, "?ai,b,x", pa10},
  { "addio",      0xb4000800, 0xfc000800, "?ai,b,x", pa10},
  { "addit",      0xb0000000, 0xfc000800, "?ai,b,x", pa10},
  { "addito",     0xb0000800, 0xfc000800, "?ai,b,x", pa10},
+ { "add",        0x08000720, 0xfc0007e0, "cY?Ax,b,t", pa20, FLAG_STRICT},
+ { "add",        0x08000700, 0xfc0007e0, "cy?ax,b,t", pa10, FLAG_STRICT},
+ { "add",        0x08000220, 0xfc0003e0, "ca?Ax,b,t", pa20, FLAG_STRICT},
+ { "add",        0x08000200, 0xfc0003e0, "ca?ax,b,t", pa10, FLAG_STRICT},
  { "add",        0x08000600, 0xfc000fe0, "?ax,b,t", pa10},
  { "addl",       0x08000a00, 0xfc000fe0, "?ax,b,t", pa10},
  { "addo",       0x08000e00, 0xfc000fe0, "?ax,b,t", pa10},
  { "addc",       0x08000700, 0xfc000fe0, "?ax,b,t", pa10},
  { "addco",      0x08000f00, 0xfc000fe0, "?ax,b,t", pa10},
+ { "sub",        0x080004e0, 0xfc0007e0, "ct?Sx,b,t", pa20, FLAG_STRICT},
+ { "sub",        0x080004c0, 0xfc0007e0, "ct?sx,b,t", pa10, FLAG_STRICT},
+ { "sub",        0x08000520, 0xfc0007e0, "cB?Sx,b,t", pa20, FLAG_STRICT},
+ { "sub",        0x08000500, 0xfc0007e0, "cb?sx,b,t", pa10, FLAG_STRICT},
+ { "sub",        0x08000420, 0xfc0007e0, "cv?Sx,b,t", pa20, FLAG_STRICT},
+ { "sub",        0x08000400, 0xfc0007e0, "cv?sx,b,t", pa10, FLAG_STRICT},
  { "sub",        0x08000400, 0xfc000fe0, "?sx,b,t", pa10},
  { "subo",       0x08000c00, 0xfc000fe0, "?sx,b,t", pa10},
  { "subb",       0x08000500, 0xfc000fe0, "?sx,b,t", pa10},
***************
*** 354,364 ****
--- 387,400 ----
  { "subt",       0x080004c0, 0xfc000fe0, "?sx,b,t", pa10},
  { "subto",      0x08000cc0, 0xfc000fe0, "?sx,b,t", pa10},
  { "ds",         0x08000440, 0xfc000fe0, "?sx,b,t", pa10},
+ { "subi",       0x94000000, 0xfc000000, "cv?si,b,x", pa10, FLAG_STRICT},
  { "subi",       0x94000000, 0xfc000800, "?si,b,x", pa10},
  { "subio",      0x94000800, 0xfc000800, "?si,b,x", pa10},
  { "cmpiclr",    0x90000800, 0xfc000800, "?Si,b,x", pa20, FLAG_STRICT},
  { "cmpiclr",    0x90000000, 0xfc000800, "?si,b,x", pa10, FLAG_STRICT},
  { "comiclr",    0x90000000, 0xfc000800, "?si,b,x", pa10},
+ { "shladd",     0x08000220, 0xfc000320, "ca?Ax,.,b,t", pa20, FLAG_STRICT},
+ { "shladd",     0x08000200, 0xfc000320, "ca?ax,.,b,t", pa10, FLAG_STRICT},
  { "sh1add",     0x08000640, 0xfc000fe0, "?ax,b,t", pa10},
  { "sh1addl",    0x08000a40, 0xfc000fe0, "?ax,b,t", pa10},
  { "sh1addo",    0x08000e40, 0xfc000fe0, "?ax,b,t", pa10},
***************
*** 407,415 ****
--- 443,454 ----
  /* System Control Instructions */
  
  { "break",      0x00000000, 0xfc001fe0, "r,A", pa10},
+ { "rfi",        0x00000c00, 0xffffff1f, "cr", pa10, FLAG_STRICT},
  { "rfi",        0x00000c00, 0xffffffff, "", pa10},
  { "rfir",       0x00000ca0, 0xffffffff, "", pa11},
+ { "ssm",        0x00000d60, 0xfc00ffe0, "U,t", pa20, FLAG_STRICT},
  { "ssm",        0x00000d60, 0xffe0ffe0, "R,t", pa10},
+ { "rsm",        0x00000e60, 0xfc00ffe0, "U,t", pa20, FLAG_STRICT},
  { "rsm",        0x00000e60, 0xffe0ffe0, "R,t", pa10},
  { "mtsm",       0x00001860, 0xffe0ffff, "x", pa10},
  { "ldsid",      0x000010a0, 0xfc1f3fe0, "(s,b),t", pa10},
***************
*** 419,427 ****
--- 458,471 ----
  { "mtsarcm",    0x016018C0, 0xffe0ffff, "x", pa20, FLAG_STRICT},
  { "mfia",       0x000014A0, 0xffffffe0, "t", pa20, FLAG_STRICT},
  { "mfsp",       0x000004a0, 0xffff1fe0, "S,t", pa10},
+ { "mfctl",      0x016048a0, 0xffffffe0, "cW!,t", pa20, FLAG_STRICT},
  { "mfctl",      0x000008a0, 0xfc1fffe0, "^,t", pa10},
  { "sync",       0x00000400, 0xffffffff, "", pa10},
  { "syncdma",    0x00100400, 0xffffffff, "", pa10},
+ { "probe",      0x04001180, 0xfc003fe0, "cw(s,b),x,t", pa10, FLAG_STRICT},
+ { "probe",      0x04001180, 0xfc003fe0, "cw(b),x,t", pa10, FLAG_STRICT},
+ { "probei",     0x04003180, 0xfc003fe0, "cw(s,b),R,t", pa10, FLAG_STRICT},
+ { "probei",     0x04003180, 0xfc003fe0, "cw(b),R,t", pa10, FLAG_STRICT},
  { "prober",     0x04001180, 0xfc003fe0, "(s,b),x,t", pa10},
  { "prober",     0x04001180, 0xfc003fe0, "(b),x,t", pa10},
  { "proberi",    0x04003180, 0xfc003fe0, "(s,b),R,t", pa10},
***************
*** 436,443 ****
--- 480,491 ----
  { "lha",        0x04001300, 0xfc003fc0, "cZx(b),t", pa10},
  { "lci",        0x04001300, 0xfc003fe0, "x(s,b),t", pa10},
  { "lci",        0x04001300, 0xfc003fe0, "x(b),t", pa10},
+ { "pdtlb",      0x04001600, 0xfc003fdf, "cLcZx(s,b)", pa20, FLAG_STRICT},
+ { "pdtlb",      0x04001600, 0xfc003fdf, "cLcZx(b)", pa20, FLAG_STRICT},
  { "pdtlb",      0x04001200, 0xfc003fdf, "cZx(s,b)", pa10},
  { "pdtlb",      0x04001200, 0xfc003fdf, "cZx(b)", pa10},
+ { "pitlb",      0x04000600, 0xfc001fdf, "cLcZx(S,b)", pa20, FLAG_STRICT},
+ { "pitlb",      0x04000600, 0xfc001fdf, "cLcZx(b)", pa20, FLAG_STRICT},
  { "pitlb",      0x04000200, 0xfc001fdf, "cZx(S,b)", pa10},
  { "pitlb",      0x04000200, 0xfc001fdf, "cZx(b)", pa10},
  { "pdtlbe",     0x04001240, 0xfc003fdf, "cZx(s,b)", pa10},
***************
*** 543,548 ****
--- 591,600 ----
  { "ftest",      0x30002420, 0xffffffff, "", pa10},
  { "fid",        0x30000000, 0xffffffff, "", pa11},
  
+ /* Performance Monitor Instructions */
+ 
+ { "pmdis",	0x30000280, 0xffffffdf, "N", pa20, FLAG_STRICT},
+ { "pmenb",	0x30000680, 0xffffffff, "", pa20, FLAG_STRICT},
  
  /* Assist Instructions */
  
*** pa-prev/gas/config/tc-hppa.c	Thu Aug  5 17:23:41 1999
--- gas-src/gas/config/tc-hppa.c	Wed Aug 11 13:24:58 1999
***************
*** 1529,1534 ****
--- 1529,1538 ----
           sure that the operands match.  */
        for (args = insn->args;; ++args)
  	{
+ 	  /* Absorb white space in instruction.  */
+ 	  while (*s == ' ' || *s == '\t')
+ 	    s++;
+ 
  	  switch (*args)
  	    {
  
***************
*** 1640,1645 ****
--- 1644,1656 ----
  	      CHECK_FIELD (num, 31, 0, 0);
  	      INSERT_FIELD_AND_CONTINUE (opcode, num, 16);
  
+ 	    /* Handle an unsigned 10 bit immediate at 15.  */
+ 	    case 'U':
+ 	      num = pa_get_absolute_expression (&the_insn, &s);
+ 	      s = expr_end;
+ 	      CHECK_FIELD (num, 1023, 0, 0);
+ 	      INSERT_FIELD_AND_CONTINUE (opcode, num, 16);
+ 
  	    /* Handle a 2 bit space identifier at 17.  */
  	    case 's':
  	      num = pa_parse_number (&s, 0);
***************
*** 1742,1747 ****
--- 1753,1799 ----
  		    INSERT_FIELD_AND_CONTINUE (opcode, a, 13);
  		  }
  
+ 		/* Handle a local processor completer.  */
+ 		case 'L':
+ 		  if (strncasecmp (s, ",l", 2) != 0)
+ 		    break;
+ 		  s += 2;
+ 		  continue;
+ 
+ 		/* Handle a PROBE read/write completer.  */
+ 		case 'w':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",w", 2))
+ 		    {
+ 		      flag = 1;
+ 		      s += 2;
+ 		    }
+ 		  else if (!strncasecmp (s, ",r", 2))
+ 		    {
+ 		      flag = 0;
+ 		      s += 2;
+ 		    }
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 6);
+ 
+ 		/* Handle MFCTL wide completer.  */
+ 		case 'W':	
+ 		  if (strncasecmp (s, ",w", 2) != 0)
+ 		    break;
+ 		  s += 2;
+ 		  continue;
+ 
+ 		/* Handle an RFI restore completer.  */
+ 		case 'r':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",r", 2))
+ 		    {
+ 		      flag = 5;
+ 		      s += 2;
+ 		    }
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 5);
+ 
  		/* Handle a system control completer.  */
  		case 'Z':
  		  if (*s == ',' && (*(s + 1) == 'm' || *(s + 1) == 'M'))
***************
*** 1754,1759 ****
--- 1806,1955 ----
  
  		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 5);
  
+ 		/* Handle intermediate/final completer for DCOR.  */
+ 		case 'i':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",i", 2))
+ 		    {
+ 		      flag = 1;
+ 		      s += 2;
+ 		    }
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 6);
+ 
+ 		/* Handle add completer.  */
+ 		case 'a':
+ 		  flag = 1;
+ 		  if (!strncasecmp (s, ",l", 2))
+ 		    {
+ 		      flag = 2;
+ 		      s += 2;
+ 		    }
+ 		  else if (!strncasecmp (s, ",tsv", 4))
+ 		    {
+ 		      flag = 3;
+ 		      s += 4;
+ 		    }
+ 		  
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 10);
+ 
+ 		/* Handle 64 bit carry for ADD.  */
+ 		case 'Y':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",dc,tsv", 7) ||
+ 		      !strncasecmp (s, ",tsv,dc", 7))
+ 		    {
+ 		      flag = 1;
+ 		      s += 7;
+ 		    }
+ 		  else if (!strncasecmp (s, ",dc", 3))
+ 		    {
+ 		      flag = 0;
+ 		      s += 3;
+ 		    }
+ 		  else
+ 		    break;
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 11);
+ 
+ 		/* Handle 32 bit carry for ADD.  */
+ 		case 'y':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",c,tsv", 6) ||
+ 		      !strncasecmp (s, ",tsv,c", 6))
+ 		    {
+ 		      flag = 1;
+ 		      s += 6;
+ 		    }
+ 		  else if (!strncasecmp (s, ",c", 2))
+ 		    {
+ 		      flag = 0;
+ 		      s += 2;
+ 		    }
+ 		  else
+ 		    break;
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 11);
+ 
+ 		/* Handle trap on signed overflow.  */
+ 		case 'v':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",tsv", 4))
+ 		    {
+ 		      flag = 1;
+ 		      s += 4;
+ 		    }
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 11);
+ 
+ 		/* Handle trap on condition and overflow.  */
+ 		case 't':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",tc,tsv", 7) ||
+ 		      !strncasecmp (s, ",tsv,tc", 7))
+ 		    {
+ 		      flag = 1;
+ 		      s += 7;
+ 		    }
+ 		  else if (!strncasecmp (s, ",tc", 3))
+ 		    {
+ 		      flag = 0;
+ 		      s += 3;
+ 		    }
+ 		  else
+ 		    break;
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 11);
+ 
+ 		/* Handle 64 bit borrow for SUB.  */
+ 		case 'B':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",db,tsv", 7) ||
+ 		      !strncasecmp (s, ",tsv,db", 7))
+ 		    {
+ 		      flag = 1;
+ 		      s += 7;
+ 		    }
+ 		  else if (!strncasecmp (s, ",db", 3))
+ 		    {
+ 		      flag = 0;
+ 		      s += 3;
+ 		    }
+ 		  else
+ 		    break;
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 11);
+ 
+ 		/* Handle 32 bit borrow for SUB.  */
+ 		case 'b':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",b,tsv", 6) ||
+ 		      !strncasecmp (s, ",tsv,b", 6))
+ 		    {
+ 		      flag = 1;
+ 		      s += 6;
+ 		    }
+ 		  else if (!strncasecmp (s, ",b", 2))
+ 		    {
+ 		      flag = 0;
+ 		      s += 2;
+ 		    }
+ 		  else
+ 		    break;
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 11);
+ 
+ 		/* Handle trap condition completer for UADDCM.  */
+ 		case 'T':
+ 		  flag = 0;
+ 		  if (!strncasecmp (s, ",tc", 3))
+ 		    {
+ 		      flag = 1;
+ 		      s += 3;
+ 		    }
+ 
+ 		  INSERT_FIELD_AND_CONTINUE (opcode, flag, 6);
+ 
  		/* Handle signed/unsigned at 21.  */
  		case 'S':
  		  {
***************
*** 1867,1873 ****
  		    if (*s == ',')
  		      {
  			s++;
- 			name = s;
  
  			/* 64 bit conditions.  */
  			if (*args == 'A')
--- 2063,2068 ----
***************
*** 1878,1883 ****
--- 2073,2079 ----
  			      break;
  			  }
  
+ 			name = s;
  			while (*s != ',' && *s != ' ' && *s != '\t')
  			  s += 1;
  			c = *s;
***************
*** 2027,2033 ****
  		    if (*s == ',')
  		      {
  			s++;
- 			name = s;
  
  			/* 64 bit conditions.  */
  			if (*args == 'S')
--- 2223,2228 ----
***************
*** 2038,2043 ****
--- 2233,2239 ----
  			      break;
  			  }
  			    
+ 			name = s;
  			while (*s != ',' && *s != ' ' && *s != '\t')
  			  s += 1;
  			c = *s;
***************
*** 2162,2168 ****
  		    if (*s == ',')
  		      {
  			s++;
- 			name = s;
  
  			/* 64 bit conditions.  */
  			if (*args == 'L')
--- 2358,2363 ----
***************
*** 2173,2178 ****
--- 2368,2374 ----
  			      break;
  			  }
  			    
+ 			name = s;
  			while (*s != ',' && *s != ' ' && *s != '\t')
  			  s += 1;
  			c = *s;
***************
*** 2229,2236 ****
  		      {
  			save_s = s++;
  
- 			name = s;
- 
  			/* 64 bit conditions.  */
  			if (*args == 'X')
  			  {
--- 2425,2430 ----
***************
*** 2240,2245 ****
--- 2434,2440 ----
  			      break;
  			  }
  			    
+ 			name = s;
  			while (*s != ',' && *s != ' ' && *s != '\t')
  			  s += 1;
  			c = *s;
*** pa-prev/opcodes/hppa-dis.c	Thu Aug  5 17:23:45 1999
--- gas-src/opcodes/hppa-dis.c	Mon Aug  9 19:57:30 1999
***************
*** 46,51 ****
--- 46,52 ----
  /* Get at various relevent fields of an instruction word. */
  
  #define MASK_5 0x1f
+ #define MASK_10 0x3ff
  #define MASK_11 0x7ff
  #define MASK_14 0x3fff
  #define MASK_21 0x1fffff
***************
*** 127,134 ****
  };
  static const char *const signed_unsigned_names[][3] = {",u", ",s"};
  static const char *const mix_half_names[][3] = {",l", ",r"};
! static const char *const saturation_names[][3] = {",us", ",ss", 0, ""};
! 
  
  /* For a bunch of different instructions form an index into a 
     completer name table. */
--- 128,138 ----
  };
  static const char *const signed_unsigned_names[][3] = {",u", ",s"};
  static const char *const mix_half_names[][3] = {",l", ",r"};
! static const char *const saturation_names[][4] = {",us", ",ss", 0, ""};
! static const char *const read_write_names[][3] = {",r", ",w"};
! static const char *const add_compl_names[] = {
!   0, "", ",l", ",tsv"
! };
  
  /* For a bunch of different instructions form an index into a 
     completer name table. */
***************
*** 235,240 ****
--- 239,252 ----
    return (word >> 16 & MASK_5);
  }
  
+ /* extract the 10 bit immediate field from a {sr}sm instruction */
+ static unsigned
+ extract_10U_store (word)
+      unsigned word;
+ {
+   return (word >> 16 & MASK_10);
+ }
+ 
  /* extract the immediate field from a bb instruction */
  static unsigned
  extract_5Q_store (word)
***************
*** 442,453 ****
--- 454,521 ----
  		      (*info->fprintf_func) (info->stream, "%s ",
  					     short_bytes_compl_names[GET_COMPL (insn)]);
  		      break;
+ 		    case 'L':
+ 		      (*info->fprintf_func) (info->stream, ",l");
+ 		      break;
+ 		    case 'w':
+ 		      (*info->fprintf_func) (info->stream, "%s ",
+ 					     read_write_names[GET_FIELD (insn, 25, 25)]);
+ 		      break;
+ 		    case 'W':
+ 		      (*info->fprintf_func) (info->stream, ",w");
+ 		      break;
+ 		    case 'r':
+ 		      if (GET_FIELD (insn, 23, 26) == 5)
+ 			(*info->fprintf_func) (info->stream, ",r");
+ 		      break;
  		    case 'Z':
  		      if (GET_FIELD (insn, 26, 26))
  			(*info->fprintf_func) (info->stream, ",m ");
  		      else
  			(*info->fprintf_func) (info->stream, " ");
  		      break;
+ 		    case 'i':
+ 		      if (GET_FIELD (insn, 25, 25))
+ 			(*info->fprintf_func) (info->stream, ",i");
+ 		      break;
+ 		    case 'a':
+ 		      (*info->fprintf_func)
+ 			(info->stream, "%s", add_compl_names[GET_FIELD
+ 							    (insn, 20, 21)]);
+ 		      break;
+ 		    case 'Y':
+ 		      (*info->fprintf_func)
+ 			(info->stream, ",dc%s", add_compl_names[GET_FIELD
+ 							       (insn, 20, 21)]);
+ 		      break;
+ 		    case 'y':
+ 		      (*info->fprintf_func)
+ 			(info->stream, ",c%s", add_compl_names[GET_FIELD
+ 							      (insn, 20, 21)]);
+ 		      break;
+ 		    case 'v':
+ 		      if (GET_FIELD (insn, 20, 20))
+ 			(*info->fprintf_func) (info->stream, ",tsv");
+ 		      break;
+ 		    case 't':
+ 		      (*info->fprintf_func) (info->stream, ",tc");
+ 		      if (GET_FIELD (insn, 20, 20))
+ 			(*info->fprintf_func) (info->stream, ",tsv");
+ 		      break;
+ 		    case 'B':
+ 		      (*info->fprintf_func) (info->stream, ",db");
+ 		      if (GET_FIELD (insn, 20, 20))
+ 			(*info->fprintf_func) (info->stream, ",tsv");
+ 		      break;
+ 		    case 'b':
+ 		      (*info->fprintf_func) (info->stream, ",b");
+ 		      if (GET_FIELD (insn, 20, 20))
+ 			(*info->fprintf_func) (info->stream, ",tsv");
+ 		      break;
+ 		    case 'T':
+ 		      if (GET_FIELD (insn, 25, 25))
+ 			(*info->fprintf_func) (info->stream, ",tc");
+ 		      break;
  		    case 'S':
  		      /* EXTRD/W has a following condition.  */
  		      if (*(s + 1) == '?')
***************
*** 615,620 ****
--- 683,691 ----
  		case 'R':
  		  fput_const (extract_5R_store (insn), info);
  		  break;
+ 		case 'U':
+ 		  fput_const (extract_10U_store (insn), info);
+ 		  break;
  		case 'Q':
  		  fput_const (extract_5Q_store (insn), info);
  		  break;
***************
*** 660,665 ****
--- 731,740 ----
  		case '.':
  		  (*info->fprintf_func) (info->stream, "%d",
  				    GET_FIELD (insn, 24, 25));
+ 		  break;
+ 		case '*':
+ 		  (*info->fprintf_func) (info->stream, "%d",
+ 				    GET_FIELD (insn, 22, 25));
  		  break;
  		case 'p':
  		  (*info->fprintf_func) (info->stream, "%d",


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]