include/opcode/
* mips.h: Document new field descriptors +x, +X, +p, +P, +s, +S. Update comment before MIPS16 field descriptors to mention MIPS16. (OP_SH_BBITIND, OP_MASK_BBITIND): New bit mask and shift count for BBIT. (OP_SH_CINSPOS, OP_MASK_CINSPOS, OP_SH_CINSLM1, OP_MASK_CINSLM1): New bit masks and shift counts for cins and exts. gas/ * config/tc-mips.c (validate_mips_insn): Handle field descriptors +x, +X, +p, +P, +s, +S. (mips_ip): Likewise. opcodes/ * mips-dis.c (print_insn_args): Handle field descriptors +x, +p, +s, +S. * mips-opc.c (mips_builtin_opcodes): Add Octeon instructions baddu, bbit*, cins*, dmul, pop, dpop, exts*, mtm*, mtp*, syncs, syncw, syncws, vm3mulu, vm0 and vmulu. gas/testsuite/ * gas/mips/octeon.s, gas/mips/octeon.d: Add tests for baddu, bbit*, cins*, dmul, pop, dpop, exts*, mtm*, mtp*, syncs, syncw, syncws, vm3mulu, vm0 and vmulu. * gas/mips/octeon-ill.s, gas/mips/octeon-ill.s: New test. * gas/mips/mips.exp: Run it. Run octeon test with run_dump_test_arches.
This commit is contained in:
parent
9cdaf8733f
commit
d73fd47d38
|
@ -1,3 +1,12 @@
|
||||||
|
2008-06-12 Adam Nemet <anemet@caviumnetworks.com>
|
||||||
|
|
||||||
|
* mips.h: Document new field descriptors +x, +X, +p, +P, +s, +S.
|
||||||
|
Update comment before MIPS16 field descriptors to mention MIPS16.
|
||||||
|
(OP_SH_BBITIND, OP_MASK_BBITIND): New bit mask and shift count for
|
||||||
|
BBIT.
|
||||||
|
(OP_SH_CINSPOS, OP_MASK_CINSPOS, OP_SH_CINSLM1, OP_MASK_CINSLM1):
|
||||||
|
New bit masks and shift counts for cins and exts.
|
||||||
|
|
||||||
2008-04-28 Adam Nemet <anemet@caviumnetworks.com>
|
2008-04-28 Adam Nemet <anemet@caviumnetworks.com>
|
||||||
|
|
||||||
* mips.h (INSN_MACRO): Move it up to the the pinfo macros.
|
* mips.h (INSN_MACRO): Move it up to the the pinfo macros.
|
||||||
|
|
|
@ -215,6 +215,14 @@ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, US
|
||||||
#define OP_SH_UDI4 6
|
#define OP_SH_UDI4 6
|
||||||
#define OP_MASK_UDI4 0xfffff
|
#define OP_MASK_UDI4 0xfffff
|
||||||
|
|
||||||
|
/* Octeon */
|
||||||
|
#define OP_SH_BBITIND 16
|
||||||
|
#define OP_MASK_BBITIND 0x1f
|
||||||
|
#define OP_SH_CINSPOS 6
|
||||||
|
#define OP_MASK_CINSPOS 0x1f
|
||||||
|
#define OP_SH_CINSLM1 11
|
||||||
|
#define OP_MASK_CINSLM1 0x1f
|
||||||
|
|
||||||
/* This structure holds information for a particular instruction. */
|
/* This structure holds information for a particular instruction. */
|
||||||
|
|
||||||
struct mips_opcode
|
struct mips_opcode
|
||||||
|
@ -370,6 +378,19 @@ struct mips_opcode
|
||||||
"+3" UDI immediate bits 6-20
|
"+3" UDI immediate bits 6-20
|
||||||
"+4" UDI immediate bits 6-25
|
"+4" UDI immediate bits 6-25
|
||||||
|
|
||||||
|
Octeon:
|
||||||
|
"+x" Bit index field of bbit. Enforces: 0 <= index < 32.
|
||||||
|
"+X" Bit index field of bbit aliasing bbit32. Matches if 32 <= index < 64,
|
||||||
|
otherwise skips to next candidate.
|
||||||
|
"+p" Position field of cins/cins32/exts/exts32. Enforces 0 <= pos < 32.
|
||||||
|
"+P" Position field of cins/exts aliasing cins32/exts32. Matches if
|
||||||
|
32 <= pos < 64, otherwise skips to next candidate.
|
||||||
|
"+s" Length-minus-one field of cins/exts. Enforces: 0 <= lenm1 < 32.
|
||||||
|
"+S" Length-minus-one field of cins32/exts32 or cins/exts aliasing
|
||||||
|
cint32/exts32. Enforces non-negative value and that
|
||||||
|
pos + lenm1 < 32 or pos + lenm1 < 64 depending whether previous
|
||||||
|
position field is "+p" or "+P".
|
||||||
|
|
||||||
Other:
|
Other:
|
||||||
"()" parens surrounding optional value
|
"()" parens surrounding optional value
|
||||||
"," separates operands
|
"," separates operands
|
||||||
|
@ -385,8 +406,8 @@ struct mips_opcode
|
||||||
Extension character sequences used so far ("+" followed by the
|
Extension character sequences used so far ("+" followed by the
|
||||||
following), for quick reference when adding more:
|
following), for quick reference when adding more:
|
||||||
"1234"
|
"1234"
|
||||||
"ABCDEFGHIT"
|
"ABCDEFGHIPSTX"
|
||||||
"t"
|
"pstx"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* These are the bits which may be set in the pinfo field of an
|
/* These are the bits which may be set in the pinfo field of an
|
||||||
|
@ -962,11 +983,10 @@ extern int bfd_mips_num_opcodes;
|
||||||
#define MIPS16OP_MASK_IMM6 0x3f
|
#define MIPS16OP_MASK_IMM6 0x3f
|
||||||
#define MIPS16OP_SH_IMM6 5
|
#define MIPS16OP_SH_IMM6 5
|
||||||
|
|
||||||
/* These are the characters which may appears in the args field of an
|
/* These are the characters which may appears in the args field of a MIPS16
|
||||||
instruction. They appear in the order in which the fields appear
|
instruction. They appear in the order in which the fields appear when the
|
||||||
when the instruction is used. Commas and parentheses in the args
|
instruction is used. Commas and parentheses in the args string are ignored
|
||||||
string are ignored when assembling, and written into the output
|
when assembling, and written into the output when disassembling.
|
||||||
when disassembling.
|
|
||||||
|
|
||||||
"y" 3 bit register (MIPS16OP_*_RY)
|
"y" 3 bit register (MIPS16OP_*_RY)
|
||||||
"x" 3 bit register (MIPS16OP_*_RX)
|
"x" 3 bit register (MIPS16OP_*_RX)
|
||||||
|
|
Loading…
Reference in New Issue