summaryrefslogtreecommitdiff
path: root/opcodes/arc-nps400-tbl.h
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2016-06-02 14:03:23 +0100
committerNick Clifton <nickc@redhat.com>2016-06-02 14:03:23 +0100
commit4eb6f892502bad1ec4e1828d0140959bb004a3b6 (patch)
treeb1f2e98c1a8fde0077bc4831607528533b25a241 /opcodes/arc-nps400-tbl.h
parent5b6312fd20ef39f1531e37e7d2601c54d5658119 (diff)
Add support for 48 and 64 bit ARC instructions.
gas * config/tc-arc.c (parse_opcode_flags): New function. (find_opcode_match): Move flag parsing code out to new function. Ignore operands marked IGNORE. (build_fake_opcode_hash_entry): New function. (find_special_case_long_opcode): New function. (find_special_case): Lookup long opcodes. * testsuite/gas/arc/nps400-7.d: New file. * testsuite/gas/arc/nps400-7.s: New file. include * opcode/arc.h (MAX_INSN_ARGS): Increase to 16. (struct arc_long_opcode): New structure. (arc_long_opcodes): Declare. (arc_num_long_opcodes): Declare. opcodes * arc-dis.c (struct arc_operand_iterator): New structure. (find_format_from_table): All the old content from find_format, with some minor adjustments, and parameter renaming. (find_format_long_instructions): New function. (find_format): Rewritten. (arc_insn_length): Add LSB parameter. (extract_operand_value): New function. (operand_iterator_next): New function. (print_insn_arc): Use new functions to find opcode, and iterator over operands. * arc-opc.c (insert_nps_3bit_dst_short): New function. (extract_nps_3bit_dst_short): New function. (insert_nps_3bit_src2_short): New function. (extract_nps_3bit_src2_short): New function. (insert_nps_bitop1_size): New function. (extract_nps_bitop1_size): New function. (insert_nps_bitop2_size): New function. (extract_nps_bitop2_size): New function. (insert_nps_bitop_mod4_msb): New function. (extract_nps_bitop_mod4_msb): New function. (insert_nps_bitop_mod4_lsb): New function. (extract_nps_bitop_mod4_lsb): New function. (insert_nps_bitop_dst_pos3_pos4): New function. (extract_nps_bitop_dst_pos3_pos4): New function. (insert_nps_bitop_ins_ext): New function. (extract_nps_bitop_ins_ext): New function. (arc_operands): Add new operands. (arc_long_opcodes): New global array. (arc_num_long_opcodes): New global. * arc-nps400-tbl.h: Add comments referencing arc_long_opcodes.
Diffstat (limited to 'opcodes/arc-nps400-tbl.h')
-rw-r--r--opcodes/arc-nps400-tbl.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/opcodes/arc-nps400-tbl.h b/opcodes/arc-nps400-tbl.h
index c7019a98fc..473a586826 100644
--- a/opcodes/arc-nps400-tbl.h
+++ b/opcodes/arc-nps400-tbl.h
@@ -34,6 +34,21 @@
/* encode1<.f> */
{ "encode1", 0x48048000, 0xf80f8000, ARC_OPCODE_NPS400, BITOP, NONE, { NPS_R_DST_3B, NPS_R_SRC2_3B, NPS_BITOP_SRC_POS, NPS_BITOP_SIZE }, { C_NPS_F }},
+/* mrgb - 48 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* mrgb.cl - 48 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* mov2b - 48 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* mov2b.cl - 48 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* ext4 - 48 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* ext4.cl - 48 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* ins4 - 48 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* ins4.cl - 48 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* mov3b - 64 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* mov4b - 64 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* mov3bcl - 64 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* mov4bcl - 64 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* mov3b.cl - 64 bit instruction, see arc_long_opcodes in arc-opc.c. */
+/* mov4b.cl - 64 bit instruction, see arc_long_opcodes in arc-opc.c. */
+
/* rflt a,b,c 00111bbb00101110FBBBCCCCCCAAAAAA */
{ "rflt", 0x382e0000, 0xf8ff8000, ARC_OPCODE_NPS400, BITOP, NONE, { RA, RB, RC }, { 0 }},