* hppa.h (pa_opcodes): Change completers in instructions to

use 'c' prefix.
This commit is contained in:
Jeff Law 1999-08-28 08:16:55 +00:00
parent 28252e6156
commit 5d4ba527e1
2 changed files with 99 additions and 89 deletions

View File

@ -1,5 +1,8 @@
Sat Aug 28 00:25:25 1999 Jerry Quinn <jquinn@nortelnetworks.com> Sat Aug 28 00:25:25 1999 Jerry Quinn <jquinn@nortelnetworks.com>
* hppa.h (pa_opcodes): Change completers in instructions to
use 'c' prefix.
* hppa.h (pa_opcodes): Add popbts, new forms of bb, havg, * hppa.h (pa_opcodes): Add popbts, new forms of bb, havg,
hshladd, hshradd, shrpd, and shrpw instructions. Update arg comments. hshladd, hshradd, shrpd, and shrpw instructions. Update arg comments.

View File

@ -98,6 +98,13 @@ Kinds of operands:
W 17 bit branch displacement (PC relative) W 17 bit branch displacement (PC relative)
z 17 bit branch displacement (just a number, not an address) z 17 bit branch displacement (just a number, not an address)
Completer operands all have 'c' as the prefix:
cx indexed load completer.
cm short load and store completer.
cs store bytes short completer.
cZ System Control Completer (to support LPA, LHA, etc.)
Condition operands all have '?' as the prefix: Condition operands all have '?' as the prefix:
?f Floating point compare conditions (encoded as 5 bits at 31) ?f Floating point compare conditions (encoded as 5 bits at 31)
@ -246,33 +253,33 @@ static const struct pa_opcode pa_opcodes[] =
{ "ldwm", 0x4c000000, 0xfc000000, "j(b),x", pa10}, { "ldwm", 0x4c000000, 0xfc000000, "j(b),x", pa10},
{ "stwm", 0x6c000000, 0xfc000000, "x,j(s,b)", pa10}, { "stwm", 0x6c000000, 0xfc000000, "x,j(s,b)", pa10},
{ "stwm", 0x6c000000, 0xfc000000, "x,j(b)", pa10}, { "stwm", 0x6c000000, 0xfc000000, "x,j(b)", pa10},
{ "ldwx", 0x0c000080, 0xfc001fc0, "cx(s,b),t", pa10}, { "ldwx", 0x0c000080, 0xfc001fc0, "cxx(s,b),t", pa10},
{ "ldwx", 0x0c000080, 0xfc001fc0, "cx(b),t", pa10}, { "ldwx", 0x0c000080, 0xfc001fc0, "cxx(b),t", pa10},
{ "ldhx", 0x0c000040, 0xfc001fc0, "cx(s,b),t", pa10}, { "ldhx", 0x0c000040, 0xfc001fc0, "cxx(s,b),t", pa10},
{ "ldhx", 0x0c000040, 0xfc001fc0, "cx(b),t", pa10}, { "ldhx", 0x0c000040, 0xfc001fc0, "cxx(b),t", pa10},
{ "ldbx", 0x0c000000, 0xfc001fc0, "cx(s,b),t", pa10}, { "ldbx", 0x0c000000, 0xfc001fc0, "cxx(s,b),t", pa10},
{ "ldbx", 0x0c000000, 0xfc001fc0, "cx(b),t", pa10}, { "ldbx", 0x0c000000, 0xfc001fc0, "cxx(b),t", pa10},
{ "ldwax", 0x0c000180, 0xfc00dfc0, "cx(b),t", pa10}, { "ldwax", 0x0c000180, 0xfc00dfc0, "cxx(b),t", pa10},
{ "ldcwx", 0x0c0001c0, 0xfc001fc0, "cx(s,b),t", pa10}, { "ldcwx", 0x0c0001c0, 0xfc001fc0, "cxx(s,b),t", pa10},
{ "ldcwx", 0x0c0001c0, 0xfc001fc0, "cx(b),t", pa10}, { "ldcwx", 0x0c0001c0, 0xfc001fc0, "cxx(b),t", pa10},
{ "ldws", 0x0c001080, 0xfc001fc0, "C5(s,b),t", pa10}, { "ldws", 0x0c001080, 0xfc001fc0, "cm5(s,b),t", pa10},
{ "ldws", 0x0c001080, 0xfc001fc0, "C5(b),t", pa10}, { "ldws", 0x0c001080, 0xfc001fc0, "cm5(b),t", pa10},
{ "ldhs", 0x0c001040, 0xfc001fc0, "C5(s,b),t", pa10}, { "ldhs", 0x0c001040, 0xfc001fc0, "cm5(s,b),t", pa10},
{ "ldhs", 0x0c001040, 0xfc001fc0, "C5(b),t", pa10}, { "ldhs", 0x0c001040, 0xfc001fc0, "cm5(b),t", pa10},
{ "ldbs", 0x0c001000, 0xfc001fc0, "C5(s,b),t", pa10}, { "ldbs", 0x0c001000, 0xfc001fc0, "cm5(s,b),t", pa10},
{ "ldbs", 0x0c001000, 0xfc001fc0, "C5(b),t", pa10}, { "ldbs", 0x0c001000, 0xfc001fc0, "cm5(b),t", pa10},
{ "ldwas", 0x0c001180, 0xfc00dfc0, "C5(b),t", pa10}, { "ldwas", 0x0c001180, 0xfc00dfc0, "cm5(b),t", pa10},
{ "ldcws", 0x0c0011c0, 0xfc001fc0, "C5(s,b),t", pa10}, { "ldcws", 0x0c0011c0, 0xfc001fc0, "cm5(s,b),t", pa10},
{ "ldcws", 0x0c0011c0, 0xfc001fc0, "C5(b),t", pa10}, { "ldcws", 0x0c0011c0, 0xfc001fc0, "cm5(b),t", pa10},
{ "stws", 0x0c001280, 0xfc001fc0, "Cx,V(s,b)", pa10}, { "stws", 0x0c001280, 0xfc001fc0, "cmx,V(s,b)", pa10},
{ "stws", 0x0c001280, 0xfc001fc0, "Cx,V(b)", pa10}, { "stws", 0x0c001280, 0xfc001fc0, "cmx,V(b)", pa10},
{ "sths", 0x0c001240, 0xfc001fc0, "Cx,V(s,b)", pa10}, { "sths", 0x0c001240, 0xfc001fc0, "cmx,V(s,b)", pa10},
{ "sths", 0x0c001240, 0xfc001fc0, "Cx,V(b)", pa10}, { "sths", 0x0c001240, 0xfc001fc0, "cmx,V(b)", pa10},
{ "stbs", 0x0c001200, 0xfc001fc0, "Cx,V(s,b)", pa10}, { "stbs", 0x0c001200, 0xfc001fc0, "cmx,V(s,b)", pa10},
{ "stbs", 0x0c001200, 0xfc001fc0, "Cx,V(b)", pa10}, { "stbs", 0x0c001200, 0xfc001fc0, "cmx,V(b)", pa10},
{ "stwas", 0x0c001380, 0xfc00dfc0, "Cx,V(b)", pa10}, { "stwas", 0x0c001380, 0xfc00dfc0, "cmx,V(b)", pa10},
{ "stbys", 0x0c001300, 0xfc001fc0, "Yx,V(s,b)", pa10}, { "stbys", 0x0c001300, 0xfc001fc0, "csx,V(s,b)", pa10},
{ "stbys", 0x0c001300, 0xfc001fc0, "Yx,V(b)", pa10}, { "stbys", 0x0c001300, 0xfc001fc0, "csx,V(b)", pa10},
/* Immediate instructions. */ /* Immediate instructions. */
{ "ldo", 0x34000000, 0xfc00c000, "j(b),x", pa10}, { "ldo", 0x34000000, 0xfc00c000, "j(b),x", pa10},
@ -413,20 +420,20 @@ static const struct pa_opcode pa_opcodes[] =
{ "probew", 0x040011c0, 0xfc003fe0, "(b),x,t", pa10}, { "probew", 0x040011c0, 0xfc003fe0, "(b),x,t", pa10},
{ "probewi", 0x040031c0, 0xfc003fe0, "(s,b),R,t", pa10}, { "probewi", 0x040031c0, 0xfc003fe0, "(s,b),R,t", pa10},
{ "probewi", 0x040031c0, 0xfc003fe0, "(b),R,t", pa10}, { "probewi", 0x040031c0, 0xfc003fe0, "(b),R,t", pa10},
{ "lpa", 0x04001340, 0xfc003fc0, "Zx(s,b),t", pa10}, { "lpa", 0x04001340, 0xfc003fc0, "cZx(s,b),t", pa10},
{ "lpa", 0x04001340, 0xfc003fc0, "Zx(b),t", pa10}, { "lpa", 0x04001340, 0xfc003fc0, "cZx(b),t", pa10},
{ "lha", 0x04001300, 0xfc003fc0, "Zx(s,b),t", pa10}, { "lha", 0x04001300, 0xfc003fc0, "cZx(s,b),t", pa10},
{ "lha", 0x04001300, 0xfc003fc0, "Zx(b),t", pa10}, { "lha", 0x04001300, 0xfc003fc0, "cZx(b),t", pa10},
{ "lci", 0x04001300, 0xfc003fe0, "x(s,b),t", pa10}, { "lci", 0x04001300, 0xfc003fe0, "x(s,b),t", pa10},
{ "lci", 0x04001300, 0xfc003fe0, "x(b),t", pa10}, { "lci", 0x04001300, 0xfc003fe0, "x(b),t", pa10},
{ "pdtlb", 0x04001200, 0xfc003fdf, "Zx(s,b)", pa10}, { "pdtlb", 0x04001200, 0xfc003fdf, "cZx(s,b)", pa10},
{ "pdtlb", 0x04001200, 0xfc003fdf, "Zx(b)", pa10}, { "pdtlb", 0x04001200, 0xfc003fdf, "cZx(b)", pa10},
{ "pitlb", 0x04000200, 0xfc001fdf, "Zx(S,b)", pa10}, { "pitlb", 0x04000200, 0xfc001fdf, "cZx(S,b)", pa10},
{ "pitlb", 0x04000200, 0xfc001fdf, "Zx(b)", pa10}, { "pitlb", 0x04000200, 0xfc001fdf, "cZx(b)", pa10},
{ "pdtlbe", 0x04001240, 0xfc003fdf, "Zx(s,b)", pa10}, { "pdtlbe", 0x04001240, 0xfc003fdf, "cZx(s,b)", pa10},
{ "pdtlbe", 0x04001240, 0xfc003fdf, "Zx(b)", pa10}, { "pdtlbe", 0x04001240, 0xfc003fdf, "cZx(b)", pa10},
{ "pitlbe", 0x04000240, 0xfc001fdf, "Zx(S,b)", pa10}, { "pitlbe", 0x04000240, 0xfc001fdf, "cZx(S,b)", pa10},
{ "pitlbe", 0x04000240, 0xfc001fdf, "Zx(b)", pa10}, { "pitlbe", 0x04000240, 0xfc001fdf, "cZx(b)", pa10},
{ "idtlba", 0x04001040, 0xfc003fff, "x,(s,b)", pa10}, { "idtlba", 0x04001040, 0xfc003fff, "x,(s,b)", pa10},
{ "idtlba", 0x04001040, 0xfc003fff, "x,(b)", pa10}, { "idtlba", 0x04001040, 0xfc003fff, "x,(b)", pa10},
{ "iitlba", 0x04000040, 0xfc001fff, "x,(S,b)", pa10}, { "iitlba", 0x04000040, 0xfc001fff, "x,(S,b)", pa10},
@ -435,16 +442,16 @@ static const struct pa_opcode pa_opcodes[] =
{ "idtlbp", 0x04001000, 0xfc003fff, "x,(b)", pa10}, { "idtlbp", 0x04001000, 0xfc003fff, "x,(b)", pa10},
{ "iitlbp", 0x04000000, 0xfc001fff, "x,(S,b)", pa10}, { "iitlbp", 0x04000000, 0xfc001fff, "x,(S,b)", pa10},
{ "iitlbp", 0x04000000, 0xfc001fff, "x,(b)", pa10}, { "iitlbp", 0x04000000, 0xfc001fff, "x,(b)", pa10},
{ "pdc", 0x04001380, 0xfc003fdf, "Zx(s,b)", pa10}, { "pdc", 0x04001380, 0xfc003fdf, "cZx(s,b)", pa10},
{ "pdc", 0x04001380, 0xfc003fdf, "Zx(b)", pa10}, { "pdc", 0x04001380, 0xfc003fdf, "cZx(b)", pa10},
{ "fdc", 0x04001280, 0xfc003fdf, "Zx(s,b)", pa10}, { "fdc", 0x04001280, 0xfc003fdf, "cZx(s,b)", pa10},
{ "fdc", 0x04001280, 0xfc003fdf, "Zx(b)", pa10}, { "fdc", 0x04001280, 0xfc003fdf, "cZx(b)", pa10},
{ "fic", 0x04000280, 0xfc001fdf, "Zx(S,b)", pa10}, { "fic", 0x04000280, 0xfc001fdf, "cZx(S,b)", pa10},
{ "fic", 0x04000280, 0xfc001fdf, "Zx(b)", pa10}, { "fic", 0x04000280, 0xfc001fdf, "cZx(b)", pa10},
{ "fdce", 0x040012c0, 0xfc003fdf, "Zx(s,b)", pa10}, { "fdce", 0x040012c0, 0xfc003fdf, "cZx(s,b)", pa10},
{ "fdce", 0x040012c0, 0xfc003fdf, "Zx(b)", pa10}, { "fdce", 0x040012c0, 0xfc003fdf, "cZx(b)", pa10},
{ "fice", 0x040002c0, 0xfc001fdf, "Zx(S,b)", pa10}, { "fice", 0x040002c0, 0xfc001fdf, "cZx(S,b)", pa10},
{ "fice", 0x040002c0, 0xfc001fdf, "Zx(b)", pa10}, { "fice", 0x040002c0, 0xfc001fdf, "cZx(b)", pa10},
{ "diag", 0x14000000, 0xfc000000, "D", pa10}, { "diag", 0x14000000, 0xfc000000, "D", pa10},
/* These may be specific to certain versions of the PA. Joel claimed /* These may be specific to certain versions of the PA. Joel claimed
@ -459,33 +466,33 @@ static const struct pa_opcode pa_opcodes[] =
/* gfw and gfr are not in the HP PA 1.1 manual, but they are in either /* gfw and gfr are not in the HP PA 1.1 manual, but they are in either
the Timex FPU or the Mustang ERS (not sure which) manual. */ the Timex FPU or the Mustang ERS (not sure which) manual. */
{ "gfw", 0x04001680, 0xfc003fdf, "Zx(s,b)", pa11}, { "gfw", 0x04001680, 0xfc003fdf, "cZx(s,b)", pa11},
{ "gfw", 0x04001680, 0xfc003fdf, "Zx(b)", pa11}, { "gfw", 0x04001680, 0xfc003fdf, "cZx(b)", pa11},
{ "gfr", 0x04001a80, 0xfc003fdf, "Zx(s,b)", pa11}, { "gfr", 0x04001a80, 0xfc003fdf, "cZx(s,b)", pa11},
{ "gfr", 0x04001a80, 0xfc003fdf, "Zx(b)", pa11}, { "gfr", 0x04001a80, 0xfc003fdf, "cZx(b)", pa11},
/* Floating Point Coprocessor Instructions */ /* Floating Point Coprocessor Instructions */
{ "fldwx", 0x24000000, 0xfc001f80, "cx(s,b),v", pa10}, { "fldwx", 0x24000000, 0xfc001f80, "cxx(s,b),v", pa10},
{ "fldwx", 0x24000000, 0xfc001f80, "cx(b),v", pa10}, { "fldwx", 0x24000000, 0xfc001f80, "cxx(b),v", pa10},
{ "flddx", 0x2c000000, 0xfc001fc0, "cx(s,b),y", pa10}, { "flddx", 0x2c000000, 0xfc001fc0, "cxx(s,b),y", pa10},
{ "flddx", 0x2c000000, 0xfc001fc0, "cx(b),y", pa10}, { "flddx", 0x2c000000, 0xfc001fc0, "cxx(b),y", pa10},
{ "fstwx", 0x24000200, 0xfc001f80, "cv,x(s,b)", pa10}, { "fstwx", 0x24000200, 0xfc001f80, "cxv,x(s,b)", pa10},
{ "fstwx", 0x24000200, 0xfc001f80, "cv,x(b)", pa10}, { "fstwx", 0x24000200, 0xfc001f80, "cxv,x(b)", pa10},
{ "fstdx", 0x2c000200, 0xfc001fc0, "cy,x(s,b)", pa10}, { "fstdx", 0x2c000200, 0xfc001fc0, "cxy,x(s,b)", pa10},
{ "fstdx", 0x2c000200, 0xfc001fc0, "cy,x(b)", pa10}, { "fstdx", 0x2c000200, 0xfc001fc0, "cxy,x(b)", pa10},
{ "fstqx", 0x3c000200, 0xfc001fc0, "cy,x(s,b)", pa10}, { "fstqx", 0x3c000200, 0xfc001fc0, "cxy,x(s,b)", pa10},
{ "fstqx", 0x3c000200, 0xfc001fc0, "cy,x(b)", pa10}, { "fstqx", 0x3c000200, 0xfc001fc0, "cxy,x(b)", pa10},
{ "fldws", 0x24001000, 0xfc001f80, "C5(s,b),v", pa10}, { "fldws", 0x24001000, 0xfc001f80, "cm5(s,b),v", pa10},
{ "fldws", 0x24001000, 0xfc001f80, "C5(b),v", pa10}, { "fldws", 0x24001000, 0xfc001f80, "cm5(b),v", pa10},
{ "fldds", 0x2c001000, 0xfc001fc0, "C5(s,b),y", pa10}, { "fldds", 0x2c001000, 0xfc001fc0, "cm5(s,b),y", pa10},
{ "fldds", 0x2c001000, 0xfc001fc0, "C5(b),y", pa10}, { "fldds", 0x2c001000, 0xfc001fc0, "cm5(b),y", pa10},
{ "fstws", 0x24001200, 0xfc001f80, "Cv,5(s,b)", pa10}, { "fstws", 0x24001200, 0xfc001f80, "cmv,5(s,b)", pa10},
{ "fstws", 0x24001200, 0xfc001f80, "Cv,5(b)", pa10}, { "fstws", 0x24001200, 0xfc001f80, "cmv,5(b)", pa10},
{ "fstds", 0x2c001200, 0xfc001fc0, "Cy,5(s,b)", pa10}, { "fstds", 0x2c001200, 0xfc001fc0, "cmy,5(s,b)", pa10},
{ "fstds", 0x2c001200, 0xfc001fc0, "Cy,5(b)", pa10}, { "fstds", 0x2c001200, 0xfc001fc0, "cmy,5(b)", pa10},
{ "fstqs", 0x3c001200, 0xfc001fc0, "Cy,5(s,b)", pa10}, { "fstqs", 0x3c001200, 0xfc001fc0, "cmy,5(s,b)", pa10},
{ "fstqs", 0x3c001200, 0xfc001fc0, "Cy,5(b)", pa10}, { "fstqs", 0x3c001200, 0xfc001fc0, "cmy,5(b)", pa10},
{ "fadd", 0x30000600, 0xfc00e7e0, "FE,X,v", pa10}, { "fadd", 0x30000600, 0xfc00e7e0, "FE,X,v", pa10},
{ "fadd", 0x38000600, 0xfc00e720, "IJ,K,v", pa10}, { "fadd", 0x38000600, 0xfc00e720, "IJ,K,v", pa10},
{ "fsub", 0x30002600, 0xfc00e7e0, "FE,X,v", pa10}, { "fsub", 0x30002600, 0xfc00e7e0, "FE,X,v", pa10},
@ -534,22 +541,22 @@ static const struct pa_opcode pa_opcodes[] =
{ "spop2", 0x10000400, 0xfc000600, "f,1Nb", pa10}, { "spop2", 0x10000400, 0xfc000600, "f,1Nb", pa10},
{ "spop3", 0x10000600, 0xfc000600, "f,0Nx,b", pa10}, { "spop3", 0x10000600, 0xfc000600, "f,0Nx,b", pa10},
{ "copr", 0x30000000, 0xfc000000, "u,2N", pa10}, { "copr", 0x30000000, 0xfc000000, "u,2N", pa10},
{ "cldwx", 0x24000000, 0xfc001e00, "ucx(s,b),t", pa10}, { "cldwx", 0x24000000, 0xfc001e00, "ucxx(s,b),t", pa10},
{ "cldwx", 0x24000000, 0xfc001e00, "ucx(b),t", pa10}, { "cldwx", 0x24000000, 0xfc001e00, "ucxx(b),t", pa10},
{ "clddx", 0x2c000000, 0xfc001e00, "ucx(s,b),t", pa10}, { "clddx", 0x2c000000, 0xfc001e00, "ucxx(s,b),t", pa10},
{ "clddx", 0x2c000000, 0xfc001e00, "ucx(b),t", pa10}, { "clddx", 0x2c000000, 0xfc001e00, "ucxx(b),t", pa10},
{ "cstwx", 0x24000200, 0xfc001e00, "uct,x(s,b)", pa10}, { "cstwx", 0x24000200, 0xfc001e00, "ucxt,x(s,b)", pa10},
{ "cstwx", 0x24000200, 0xfc001e00, "uct,x(b)", pa10}, { "cstwx", 0x24000200, 0xfc001e00, "ucxt,x(b)", pa10},
{ "cstdx", 0x2c000200, 0xfc001e00, "uct,x(s,b)", pa10}, { "cstdx", 0x2c000200, 0xfc001e00, "ucxt,x(s,b)", pa10},
{ "cstdx", 0x2c000200, 0xfc001e00, "uct,x(b)", pa10}, { "cstdx", 0x2c000200, 0xfc001e00, "ucxt,x(b)", pa10},
{ "cldws", 0x24001000, 0xfc001e00, "uC5(s,b),t", pa10}, { "cldws", 0x24001000, 0xfc001e00, "ucm5(s,b),t", pa10},
{ "cldws", 0x24001000, 0xfc001e00, "uC5(b),t", pa10}, { "cldws", 0x24001000, 0xfc001e00, "ucm5(b),t", pa10},
{ "cldds", 0x2c001000, 0xfc001e00, "uC5(s,b),t", pa10}, { "cldds", 0x2c001000, 0xfc001e00, "ucm5(s,b),t", pa10},
{ "cldds", 0x2c001000, 0xfc001e00, "uC5(b),t", pa10}, { "cldds", 0x2c001000, 0xfc001e00, "ucm5(b),t", pa10},
{ "cstws", 0x24001200, 0xfc001e00, "uCt,5(s,b)", pa10}, { "cstws", 0x24001200, 0xfc001e00, "ucmt,5(s,b)", pa10},
{ "cstws", 0x24001200, 0xfc001e00, "uCt,5(b)", pa10}, { "cstws", 0x24001200, 0xfc001e00, "ucmt,5(b)", pa10},
{ "cstds", 0x2c001200, 0xfc001e00, "uCt,5(s,b)", pa10}, { "cstds", 0x2c001200, 0xfc001e00, "ucmt,5(s,b)", pa10},
{ "cstds", 0x2c001200, 0xfc001e00, "uCt,5(b)", pa10}, { "cstds", 0x2c001200, 0xfc001e00, "ucmt,5(b)", pa10},
}; };
#define NUMOPCODES ((sizeof pa_opcodes)/(sizeof pa_opcodes[0])) #define NUMOPCODES ((sizeof pa_opcodes)/(sizeof pa_opcodes[0]))