From 0b3ae8114027ca525598ff469fbb12fd8957177b Mon Sep 17 00:00:00 2001 From: Jim Kingdon Date: Tue, 20 Jul 1993 00:17:37 +0000 Subject: [PATCH] * hppa.h: Add rfir instruction. --- include/opcode/ChangeLog | 4 + include/opcode/hppa.h | 319 +++++++-------------------------------- 2 files changed, 62 insertions(+), 261 deletions(-) diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index 0284dbda51c..e99160e6fb8 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,7 @@ +Mon Jul 19 17:17:03 1993 Jim Kingdon (kingdon@deneb.cygnus.com) + + * hppa.h: Add rfir instruction. + Sun Jul 18 16:28:08 1993 Jim Kingdon (kingdon@rtl.cygnus.com) * mips.h: Split the actual table out into ../../opcodes/mips-opc.c. diff --git a/include/opcode/hppa.h b/include/opcode/hppa.h index e5cf61149de..5c6f708119e 100644 --- a/include/opcode/hppa.h +++ b/include/opcode/hppa.h @@ -59,23 +59,21 @@ struct pa_opcode Bit positions in this description follow HP usage of lsb = 31, "at" is lsb of field. -#ifndef OLD_TABLE In the args field, the following characters must match exactly: '+,() ' In the args field, the following characters are unused: - ' "#$% ' *- ./ 34 6789:; = @' - ' B E HIJKL N QR X [\] _' - ' e gh lm qr v yz{|} ' + ' "#$% *+- ./ 3 :; = @' + ' B L N [\] _' + ' e gh lm qr yz{|} ' Here are all the characters: ' !"#$%&'()*+-,./0123456789:;<=>?@' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_' 'abcdefghijklmnopqrstuvwxyz{|}~' -#endif /* OLD_TABLE */ Kinds of operands: x register field at 15. @@ -88,13 +86,8 @@ Kinds of operands: C short load and store completer. Y Store Bytes Short completer < non-negated compare/subtract conditions. -#ifndef OLD_TABLE a compare/subtract conditions d non-negated add conditions -#else - - compare/subtract conditions - + non-negated add conditions -#endif /* OLD_TABLE */ & logical instruction conditions U unit instruction conditions > shift/extract/deposit conditions. @@ -109,24 +102,13 @@ Kinds of operands: Also these: -#ifdef OLD_TABLE - B either s,b or b where - - s 2 bit space specifier at 17. - b register field at 10. -#endif /* OLD_TABLE */ - p 5 bit shift count at 26 (to support the SHD instruction) encoded as 31-p P 5 bit bit position at 26 T 5 bit field length at 31 (encoded as 32-T) A 13 bit immediate at 18 (to support the BREAK instruction) -#ifndef OLD_TABLE ^ like b, but describes a control register Z System Control Completer (to support LPA, LHA, etc.) -#else - Z System Control Completer (to support LDA, LHA, etc.) -#endif /* OLD_TABLE */ D 26 bit immediate at 31 (to support the DIAG instruction) f 3 bit Special Function Unit identifier at 25 @@ -141,26 +123,15 @@ Also these: and 5 bits at 31 u 3 bit coprocessor unit identifier at 25 F Source Floating Point Operand Format Completer encoded 2 bits at 20 + I Source Floating Point Operand Format Completer encoded 1 bits at 20 + (for 0xe format FP instructions) G Destination Floating Point Operand Format Completer encoded 2 bits at 18 M Floating-Point Compare Conditions (encoded as 5 bits at 31) -#ifdef GAS - ? negated or non-negated compare/subtract conditions - (used only by 'comb' and 'comib' pseudo-instructions) - ! negated or non-negated add conditions - (used only by 'addb' and 'addib' pseudo-instructions) -#else GDB ? negated compare/subtract conditions. ! non-negated add conditions. - @ negated add conditions. -#endif -#ifndef OLD_TABLE -No longer used: - B either s,b or b where - - s 2 bit space specifier at 17. - b register field at 10. -#else + s 2 bit space specifier at 17. + b register field at 10. r 5 bit immediate value at 31 (for the break instruction) (very similar to V above, except the value is unsigned instead of low_sign_ext) @@ -175,6 +146,8 @@ And these (PJH) for PA-89 F.P. registers and instructions: v a 't' operand type extended to handle L/R register halves. E a 'b' operand type extended to handle L/R register halves. X an 'x' operand type extended to handle L/R register halves. + J a 'b' operand type further extended to handle extra 1.1 registers + K a 'x' operand type further extended to handle extra 1.1 registers 4 a variation of the 'b' operand type for 'fmpyadd' and 'fmpysub' 6 a variation of the 'x' operand type for 'fmpyadd' and 'fmpysub' 7 a variation of the 't' operand type for 'fmpyadd' and 'fmpysub' @@ -182,8 +155,6 @@ And these (PJH) for PA-89 F.P. registers and instructions: 9 5 bit register field at 25 (used in 'fmpyadd' and 'fmpysub') H Floating Point Operand Format at 26 for 'fmpyadd' and 'fmpysub' (very similar to 'F') -#endif /* OLD_TABLE */ - */ /* The order of the opcodes in this table is significant: @@ -208,7 +179,7 @@ static const struct pa_opcode pa_opcodes[] = { "copy", 0x08000240, 0xffe0ffe0, "x,t"}, /* or r,0,t */ { "mtsar", 0x01601840, 0xffe0ffff, "x"}, /* mtctl r,cr11 */ -#ifndef OLD_TABLE +/* Loads and Stores for integer registers. */ { "ldw", 0x48000000, 0xfc000000, "j(s,b),x"}, { "ldw", 0x48000000, 0xfc000000, "j(b),x"}, { "ldh", 0x44000000, 0xfc000000, "j(s,b),x"}, @@ -231,21 +202,7 @@ static const struct pa_opcode pa_opcodes[] = { "ldhx", 0x0c000040, 0xfc001fc0, "cx(b),t"}, { "ldbx", 0x0c000000, 0xfc001fc0, "cx(s,b),t"}, { "ldbx", 0x0c000000, 0xfc001fc0, "cx(b),t"}, -#else -{ "ldw", 0x48000000, 0xfc000000, "j(B),x"}, -{ "ldh", 0x44000000, 0xfc000000, "j(B),x"}, -{ "ldb", 0x40000000, 0xfc000000, "j(B),x"}, -{ "stw", 0x68000000, 0xfc000000, "x,j(B)"}, -{ "sth", 0x64000000, 0xfc000000, "x,j(B)"}, -{ "stb", 0x60000000, 0xfc000000, "x,j(B)"}, -{ "ldwm", 0x4c000000, 0xfc000000, "j(B),x"}, -{ "stwm", 0x6c000000, 0xfc000000, "x,j(B)"}, -{ "ldwx", 0x0c000080, 0xfc001fc0, "cx(B),t"}, -{ "ldhx", 0x0c000040, 0xfc001fc0, "cx(B),t"}, -{ "ldbx", 0x0c000000, 0xfc001fc0, "cx(B),t"}, -#endif /* OLD_TABLE */ { "ldwax", 0x0c000180, 0xfc00dfc0, "cx(b),t"}, -#ifndef OLD_TABLE { "ldcwx", 0x0c0001c0, 0xfc001fc0, "cx(s,b),t"}, { "ldcwx", 0x0c0001c0, 0xfc001fc0, "cx(b),t"}, { "ldws", 0x0c001080, 0xfc001fc0, "C5(s,b),t"}, @@ -254,14 +211,7 @@ static const struct pa_opcode pa_opcodes[] = { "ldhs", 0x0c001040, 0xfc001fc0, "C5(b),t"}, { "ldbs", 0x0c001000, 0xfc001fc0, "C5(s,b),t"}, { "ldbs", 0x0c001000, 0xfc001fc0, "C5(b),t"}, -#else -{ "ldcwx", 0x0c0001c0, 0xfc001fc0, "cx(B),t"}, -{ "ldws", 0x0c001080, 0xfc001fc0, "C5(B),t"}, -{ "ldhs", 0x0c001040, 0xfc001fc0, "C5(B),t"}, -{ "ldbs", 0x0c001000, 0xfc001fc0, "C5(B),t"}, -#endif /* OLD_TABLE */ { "ldwas", 0x0c001180, 0xfc00dfc0, "C5(b),t"}, -#ifndef OLD_TABLE { "ldcws", 0x0c0011c0, 0xfc001fc0, "C5(s,b),t"}, { "ldcws", 0x0c0011c0, 0xfc001fc0, "C5(b),t"}, { "stws", 0x0c001280, 0xfc001fc0, "Cx,V(s,b)"}, @@ -270,29 +220,21 @@ static const struct pa_opcode pa_opcodes[] = { "sths", 0x0c001240, 0xfc001fc0, "Cx,V(b)"}, { "stbs", 0x0c001200, 0xfc001fc0, "Cx,V(s,b)"}, { "stbs", 0x0c001200, 0xfc001fc0, "Cx,V(b)"}, -#else -{ "ldcws", 0x0c0011c0, 0xfc001fc0, "C5(B),t"}, -{ "stws", 0x0c001280, 0xfc001fc0, "Cx,V(B)"}, -{ "sths", 0x0c001240, 0xfc001fc0, "Cx,V(B)"}, -{ "stbs", 0x0c001200, 0xfc001fc0, "Cx,V(B)"}, -#endif /* OLD_TABLE */ { "stwas", 0x0c001380, 0xfc00dfc0, "Cx,V(b)"}, -#ifndef OLD_TABLE { "stbys", 0x0c001300, 0xfc001fc0, "Yx,V(s,b)"}, { "stbys", 0x0c001300, 0xfc001fc0, "Yx,V(b)"}, -#else -{ "stbys", 0x0c001300, 0xfc001fc0, "Yx,V(B)"}, -#endif /* OLD_TABLE */ + +/* Immediate instructions. */ { "ldo", 0x34000000, 0xfc00c000, "j(b),x"}, { "ldil", 0x20000000, 0xfc000000, "k,b"}, { "addil", 0x28000000, 0xfc000000, "k,b"}, + +/* Branching instructions. */ { "bl", 0xe8000000, 0xfc00e000, "nW,b", NORMAL}, { "gate", 0xe8002000, 0xfc00e000, "nW,b", NORMAL}, { "blr", 0xe8004000, 0xfc00e001, "nx,b", NORMAL}, -#ifndef OLD_TABLE -{ "bv", 0xe800c000, 0xfc00e001, "n(b)", NORMAL}, -#endif /* OLD_TABLE */ { "bv", 0xe800c000, 0xfc00e001, "nx(b)", NORMAL}, +{ "bv", 0xe800c000, 0xfc00e001, "n(b)", NORMAL}, { "be", 0xe0000000, 0xfc000000, "nW(S,b)", NORMAL}, { "ble", 0xe4000000, 0xfc000000, "nW(S,b)", NORMAL}, { "movb", 0xc8000000, 0xfc000000, ">nx,b,w", CONDITIONAL}, @@ -301,27 +243,15 @@ static const struct pa_opcode pa_opcodes[] = { "combf", 0x88000000, 0xfc000000, "