diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2010-06-25 17:02:05 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2010-07-06 13:40:56 -0400 |
commit | 863fbac67138882b99fc60fcb0ec568bbad9a44f (patch) | |
tree | 1457799a6258d9502111f1da45f55b917ace56db /arch/tile | |
parent | 9f9c0382cda2334b35b40b00f4ed9d6f89f37a7b (diff) |
arch/tile: Shrink the tile-opcode files considerably.
The C file (tile-desc_{32,64}.c) was about 300KB before this change,
and is now shrunk down to 100K. The original file included support
for BFD in the binutils toolchain, which is not necessary in the
kernel; the kernel version only needs to include enough support to
enable the single-stepper and backtracer.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/tile')
-rw-r--r-- | arch/tile/include/asm/opcode-tile_32.h | 93 | ||||
-rw-r--r-- | arch/tile/include/asm/opcode-tile_64.h | 93 | ||||
-rw-r--r-- | arch/tile/kernel/tile-desc_32.c | 13358 |
3 files changed, 1017 insertions, 12527 deletions
diff --git a/arch/tile/include/asm/opcode-tile_32.h b/arch/tile/include/asm/opcode-tile_32.h index 90f8dd37253..eda60ecbae3 100644 --- a/arch/tile/include/asm/opcode-tile_32.h +++ b/arch/tile/include/asm/opcode-tile_32.h @@ -28,6 +28,7 @@ typedef enum TILE_OPC_MOVELI_SN, TILE_OPC_MOVELIS, TILE_OPC_PREFETCH, + TILE_OPC_RAISE, TILE_OPC_ADD, TILE_OPC_ADD_SN, TILE_OPC_ADDB, @@ -419,43 +420,6 @@ typedef enum #define TILE_ELF_NAME "elf32-tilepro" -enum -{ - TILE_SN_MAX_OPERANDS = 6 /* route */ -}; - -typedef enum -{ - TILE_SN_OPC_BZ, - TILE_SN_OPC_BNZ, - TILE_SN_OPC_JRR, - TILE_SN_OPC_FNOP, - TILE_SN_OPC_BLZ, - TILE_SN_OPC_NOP, - TILE_SN_OPC_MOVEI, - TILE_SN_OPC_MOVE, - TILE_SN_OPC_BGEZ, - TILE_SN_OPC_JR, - TILE_SN_OPC_BLEZ, - TILE_SN_OPC_BBNS, - TILE_SN_OPC_JALRR, - TILE_SN_OPC_BPT, - TILE_SN_OPC_JALR, - TILE_SN_OPC_SHR1, - TILE_SN_OPC_BGZ, - TILE_SN_OPC_BBS, - TILE_SN_OPC_SHL8II, - TILE_SN_OPC_ADDI, - TILE_SN_OPC_HALT, - TILE_SN_OPC_ROUTE, - TILE_SN_OPC_NONE -} tile_sn_mnemonic; - -extern const unsigned char tile_sn_route_encode[6 * 6 * 6]; -extern const signed char tile_sn_route_decode[256][3]; -extern const char tile_sn_direction_names[6][5]; -extern const signed char tile_sn_dest_map[6][6]; - static __inline unsigned int get_BrOff_SN(tile_bundle_bits num) @@ -1387,8 +1351,6 @@ create_UnShOpcodeExtension_Y1(int num) } -typedef unsigned short tile_sn_instruction_bits; - typedef enum { @@ -1519,41 +1481,10 @@ struct tile_opcode * index into the tile_operands[] table. */ unsigned char operands[TILE_NUM_PIPELINE_ENCODINGS][TILE_MAX_OPERANDS]; - /* A mask of which bits have predefined values for each pipeline. - * This is useful for disassembly. */ - tile_bundle_bits fixed_bit_masks[TILE_NUM_PIPELINE_ENCODINGS]; - - /* For each bit set in fixed_bit_masks, what the value is for this - * instruction. */ - tile_bundle_bits fixed_bit_values[TILE_NUM_PIPELINE_ENCODINGS]; }; extern const struct tile_opcode tile_opcodes[]; -struct tile_sn_opcode -{ - /* The opcode mnemonic, e.g. "add" */ - const char *name; - - /* The enum value for this mnemonic. */ - tile_sn_mnemonic mnemonic; - - /* How many operands are there? */ - unsigned char num_operands; - - /* The description of the operands. Each of these is an - * index into the tile_operands[] table. */ - unsigned char operands[TILE_SN_MAX_OPERANDS]; - - /* A mask of which bits have predefined values. - * This is useful for disassembly. */ - tile_sn_instruction_bits fixed_bit_mask; - - /* For each bit set in fixed_bit_masks, what its value is. */ - tile_sn_instruction_bits fixed_bit_values; -}; - -extern const struct tile_sn_opcode tile_sn_opcodes[]; /* Used for non-textual disassembly into structs. */ struct tile_decoded_instruction @@ -1571,27 +1502,5 @@ extern int parse_insn_tile(tile_bundle_bits bits, decoded[TILE_MAX_INSTRUCTIONS_PER_BUNDLE]); -/* Canonical names of all the registers. */ -/* ISSUE: This table lives in "tile-dis.c" */ -extern const char * const tile_register_names[]; - -/* Descriptor for a special-purpose register. */ -struct tile_spr -{ - /* The number */ - int number; - - /* The name */ - const char *name; -}; - -/* List of all the SPRs; ordered by increasing number. */ -extern const struct tile_spr tile_sprs[]; - -/* Number of special-purpose registers. */ -extern const int tile_num_sprs; - -extern const char * -get_tile_spr_name (int num); #endif /* opcode_tile_h */ diff --git a/arch/tile/include/asm/opcode-tile_64.h b/arch/tile/include/asm/opcode-tile_64.h index 90f8dd37253..eda60ecbae3 100644 --- a/arch/tile/include/asm/opcode-tile_64.h +++ b/arch/tile/include/asm/opcode-tile_64.h @@ -28,6 +28,7 @@ typedef enum TILE_OPC_MOVELI_SN, TILE_OPC_MOVELIS, TILE_OPC_PREFETCH, + TILE_OPC_RAISE, TILE_OPC_ADD, TILE_OPC_ADD_SN, TILE_OPC_ADDB, @@ -419,43 +420,6 @@ typedef enum #define TILE_ELF_NAME "elf32-tilepro" -enum -{ - TILE_SN_MAX_OPERANDS = 6 /* route */ -}; - -typedef enum -{ - TILE_SN_OPC_BZ, - TILE_SN_OPC_BNZ, - TILE_SN_OPC_JRR, - TILE_SN_OPC_FNOP, - TILE_SN_OPC_BLZ, - TILE_SN_OPC_NOP, - TILE_SN_OPC_MOVEI, - TILE_SN_OPC_MOVE, - TILE_SN_OPC_BGEZ, - TILE_SN_OPC_JR, - TILE_SN_OPC_BLEZ, - TILE_SN_OPC_BBNS, - TILE_SN_OPC_JALRR, - TILE_SN_OPC_BPT, - TILE_SN_OPC_JALR, - TILE_SN_OPC_SHR1, - TILE_SN_OPC_BGZ, - TILE_SN_OPC_BBS, - TILE_SN_OPC_SHL8II, - TILE_SN_OPC_ADDI, - TILE_SN_OPC_HALT, - TILE_SN_OPC_ROUTE, - TILE_SN_OPC_NONE -} tile_sn_mnemonic; - -extern const unsigned char tile_sn_route_encode[6 * 6 * 6]; -extern const signed char tile_sn_route_decode[256][3]; -extern const char tile_sn_direction_names[6][5]; -extern const signed char tile_sn_dest_map[6][6]; - static __inline unsigned int get_BrOff_SN(tile_bundle_bits num) @@ -1387,8 +1351,6 @@ create_UnShOpcodeExtension_Y1(int num) } -typedef unsigned short tile_sn_instruction_bits; - typedef enum { @@ -1519,41 +1481,10 @@ struct tile_opcode * index into the tile_operands[] table. */ unsigned char operands[TILE_NUM_PIPELINE_ENCODINGS][TILE_MAX_OPERANDS]; - /* A mask of which bits have predefined values for each pipeline. - * This is useful for disassembly. */ - tile_bundle_bits fixed_bit_masks[TILE_NUM_PIPELINE_ENCODINGS]; - - /* For each bit set in fixed_bit_masks, what the value is for this - * instruction. */ - tile_bundle_bits fixed_bit_values[TILE_NUM_PIPELINE_ENCODINGS]; }; extern const struct tile_opcode tile_opcodes[]; -struct tile_sn_opcode -{ - /* The opcode mnemonic, e.g. "add" */ - const char *name; - - /* The enum value for this mnemonic. */ - tile_sn_mnemonic mnemonic; - - /* How many operands are there? */ - unsigned char num_operands; - - /* The description of the operands. Each of these is an - * index into the tile_operands[] table. */ - unsigned char operands[TILE_SN_MAX_OPERANDS]; - - /* A mask of which bits have predefined values. - * This is useful for disassembly. */ - tile_sn_instruction_bits fixed_bit_mask; - - /* For each bit set in fixed_bit_masks, what its value is. */ - tile_sn_instruction_bits fixed_bit_values; -}; - -extern const struct tile_sn_opcode tile_sn_opcodes[]; /* Used for non-textual disassembly into structs. */ struct tile_decoded_instruction @@ -1571,27 +1502,5 @@ extern int parse_insn_tile(tile_bundle_bits bits, decoded[TILE_MAX_INSTRUCTIONS_PER_BUNDLE]); -/* Canonical names of all the registers. */ -/* ISSUE: This table lives in "tile-dis.c" */ -extern const char * const tile_register_names[]; - -/* Descriptor for a special-purpose register. */ -struct tile_spr -{ - /* The number */ - int number; - - /* The name */ - const char *name; -}; - -/* List of all the SPRs; ordered by increasing number. */ -extern const struct tile_spr tile_sprs[]; - -/* Number of special-purpose registers. */ -extern const int tile_num_sprs; - -extern const char * -get_tile_spr_name (int num); #endif /* opcode_tile_h */ diff --git a/arch/tile/kernel/tile-desc_32.c b/arch/tile/kernel/tile-desc_32.c index 3b78369f86b..69af0e150f7 100644 --- a/arch/tile/kernel/tile-desc_32.c +++ b/arch/tile/kernel/tile-desc_32.c @@ -1,12 +1,5 @@ -/* Define to include "bfd.h" and get actual BFD relocations below. */ -/* #define WANT_BFD_RELOCS */ - -#ifdef WANT_BFD_RELOCS -#include "bfd.h" -#define MAYBE_BFD_RELOC(X) (X) -#else -#define MAYBE_BFD_RELOC(X) -1 -#endif +/* This define is BFD_RELOC_##x for real bfd, or -1 for everyone else. */ +#define BFD_RELOC(x) -1 /* Special registers. */ #define TREG_LR 55 @@ -16,11014 +9,1193 @@ /* FIXME: Rename this. */ #include <asm/opcode-tile.h> +#include <linux/stddef.h> -const struct tile_opcode tile_opcodes[394] = +const struct tile_opcode tile_opcodes[395] = { - { "bpt", TILE_OPC_BPT, 0x2 /* pipes */, 0 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 0, /* can_bundle */ - { - /* operands */ - { 0, }, - { }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0ULL, - 0xfbffffff80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - -1ULL, - 0x400b3cae00000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "bpt", TILE_OPC_BPT, 0x2, 0, TREG_ZERO, 0, + { { 0, }, { }, { 0, }, { 0, }, { 0, } }, }, - { "info", TILE_OPC_INFO, 0xf /* pipes */, 1 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 0 }, - { 1 }, - { 2 }, - { 3 }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ff00fffULL, - 0xfff807ff80000000ULL, - 0x8000000078000fffULL, - 0xf80007ff80000000ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000050100fffULL, - 0x302007ff80000000ULL, - 0x8000000050000fffULL, - 0xc00007ff80000000ULL, - -1ULL - } + { "info", TILE_OPC_INFO, 0xf, 1, TREG_ZERO, 1, + { { 0 }, { 1 }, { 2 }, { 3 }, { 0, } }, }, - { "infol", TILE_OPC_INFOL, 0x3 /* pipes */, 1 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 4 }, - { 5 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x8000000070000fffULL, - 0xf80007ff80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000030000fffULL, - 0x200007ff80000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "infol", TILE_OPC_INFOL, 0x3, 1, TREG_ZERO, 1, + { { 4 }, { 5 }, { 0, }, { 0, }, { 0, } }, }, - { "j", TILE_OPC_J, 0x2 /* pipes */, 1 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 0, }, - { 6 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0ULL, - 0xf000000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - -1ULL, - 0x5000000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "j", TILE_OPC_J, 0x2, 1, TREG_ZERO, 1, + { { 0, }, { 6 }, { 0, }, { 0, }, { 0, } }, }, - { "jal", TILE_OPC_JAL, 0x2 /* pipes */, 1 /* num_operands */, - TREG_LR, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 0, }, - { 6 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0ULL, - 0xf000000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - -1ULL, - 0x6000000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "jal", TILE_OPC_JAL, 0x2, 1, TREG_LR, 1, + { { 0, }, { 6 }, { 0, }, { 0, }, { 0, } }, }, - { "move", TILE_OPC_MOVE, 0xf /* pipes */, 2 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8 }, - { 9, 10 }, - { 11, 12 }, - { 13, 14 }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffff000ULL, - 0xfffff80000000000ULL, - 0x80000000780ff000ULL, - 0xf807f80000000000ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000000cff000ULL, - 0x0833f80000000000ULL, - 0x80000000180bf000ULL, - 0x9805f80000000000ULL, - -1ULL - } + { "move", TILE_OPC_MOVE, 0xf, 2, TREG_ZERO, 1, + { { 7, 8 }, { 9, 10 }, { 11, 12 }, { 13, 14 }, { 0, } }, }, - { "move.sn", TILE_OPC_MOVE_SN, 0x3 /* pipes */, 2 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8 }, - { 9, 10 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffff000ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000008cff000ULL, - 0x0c33f80000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "move.sn", TILE_OPC_MOVE_SN, 0x3, 2, TREG_SN, 1, + { { 7, 8 }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, }, - { "movei", TILE_OPC_MOVEI, 0xf /* pipes */, 2 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 0 }, - { 9, 1 }, - { 11, 2 }, - { 13, 3 }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ff00fc0ULL, - 0xfff807e000000000ULL, - 0x8000000078000fc0ULL, - 0xf80007e000000000ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000040800fc0ULL, - 0x305807e000000000ULL, - 0x8000000058000fc0ULL, - 0xc80007e000000000ULL, - -1ULL - } + { "movei", TILE_OPC_MOVEI, 0xf, 2, TREG_ZERO, 1, + { { 7, 0 }, { 9, 1 }, { 11, 2 }, { 13, 3 }, { 0, } }, }, - { "movei.sn", TILE_OPC_MOVEI_SN, 0x3 /* pipes */, 2 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 0 }, - { 9, 1 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ff00fc0ULL, - 0xfff807e000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000048800fc0ULL, - 0x345807e000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "movei.sn", TILE_OPC_MOVEI_SN, 0x3, 2, TREG_SN, 1, + { { 7, 0 }, { 9, 1 }, { 0, }, { 0, }, { 0, } }, }, - { "moveli", TILE_OPC_MOVELI, 0x3 /* pipes */, 2 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 4 }, - { 9, 5 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x8000000070000fc0ULL, - 0xf80007e000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000020000fc0ULL, - 0x180007e000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "moveli", TILE_OPC_MOVELI, 0x3, 2, TREG_ZERO, 1, + { { 7, 4 }, { 9, 5 }, { 0, }, { 0, }, { 0, } }, }, - { "moveli.sn", TILE_OPC_MOVELI_SN, 0x3 /* pipes */, 2 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 4 }, - { 9, 5 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x8000000070000fc0ULL, - 0xf80007e000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000010000fc0ULL, - 0x100007e000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "moveli.sn", TILE_OPC_MOVELI_SN, 0x3, 2, TREG_SN, 1, + { { 7, 4 }, { 9, 5 }, { 0, }, { 0, }, { 0, } }, }, - { "movelis", TILE_OPC_MOVELIS, 0x3 /* pipes */, 2 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 4 }, - { 9, 5 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x8000000070000fc0ULL, - 0xf80007e000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000010000fc0ULL, - 0x100007e000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "movelis", TILE_OPC_MOVELIS, 0x3, 2, TREG_SN, 1, + { { 7, 4 }, { 9, 5 }, { 0, }, { 0, }, { 0, } }, }, - { "prefetch", TILE_OPC_PREFETCH, 0x12 /* pipes */, 1 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 0, }, - { 10 }, - { 0, }, - { 0, }, - { 15 } - }, - { - /* fixed_bit_masks */ - 0ULL, - 0xfffff81f80000000ULL, - 0ULL, - 0ULL, - 0x8700000003f00000ULL - }, - { - /* fixed_bit_values */ - -1ULL, - 0x400b501f80000000ULL, - -1ULL, - -1ULL, - 0x8000000003f00000ULL - } + { "prefetch", TILE_OPC_PREFETCH, 0x12, 1, TREG_ZERO, 1, + { { 0, }, { 10 }, { 0, }, { 0, }, { 15 } }, }, - { "add", TILE_OPC_ADD, 0xf /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 11, 12, 18 }, - { 13, 14, 19 }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x80000000780c0000ULL, - 0xf806000000000000ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x00000000000c0000ULL, - 0x0806000000000000ULL, - 0x8000000008000000ULL, - 0x8800000000000000ULL, - -1ULL - } + { "raise", TILE_OPC_RAISE, 0x2, 0, TREG_ZERO, 1, + { { 0, }, { }, { 0, }, { 0, }, { 0, } }, }, - { "add.sn", TILE_OPC_ADD_SN, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x00000000080c0000ULL, - 0x0c06000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "add", TILE_OPC_ADD, 0xf, 3, TREG_ZERO, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, }, - { "addb", TILE_OPC_ADDB, 0x3 /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000000040000ULL, - 0x0802000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "add.sn", TILE_OPC_ADD_SN, 0x3, 3, TREG_SN, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, }, - { "addb.sn", TILE_OPC_ADDB_SN, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000008040000ULL, - 0x0c02000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addb", TILE_OPC_ADDB, 0x3, 3, TREG_ZERO, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, }, - { "addbs_u", TILE_OPC_ADDBS_U, 0x3 /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000001880000ULL, - 0x0888000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addb.sn", TILE_OPC_ADDB_SN, 0x3, 3, TREG_SN, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, }, - { "addbs_u.sn", TILE_OPC_ADDBS_U_SN, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000009880000ULL, - 0x0c88000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addbs_u", TILE_OPC_ADDBS_U, 0x3, 3, TREG_ZERO, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, }, - { "addh", TILE_OPC_ADDH, 0x3 /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000000080000ULL, - 0x0804000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addbs_u.sn", TILE_OPC_ADDBS_U_SN, 0x3, 3, TREG_SN, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, }, - { "addh.sn", TILE_OPC_ADDH_SN, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000008080000ULL, - 0x0c04000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addh", TILE_OPC_ADDH, 0x3, 3, TREG_ZERO, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, }, - { "addhs", TILE_OPC_ADDHS, 0x3 /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x00000000018c0000ULL, - 0x088a000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addh.sn", TILE_OPC_ADDH_SN, 0x3, 3, TREG_SN, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, }, - { "addhs.sn", TILE_OPC_ADDHS_SN, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x00000000098c0000ULL, - 0x0c8a000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addhs", TILE_OPC_ADDHS, 0x3, 3, TREG_ZERO, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, }, - { "addi", TILE_OPC_ADDI, 0xf /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 0 }, - { 9, 10, 1 }, - { 11, 12, 2 }, - { 13, 14, 3 }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ff00000ULL, - 0xfff8000000000000ULL, - 0x8000000078000000ULL, - 0xf800000000000000ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000040300000ULL, - 0x3018000000000000ULL, - 0x8000000048000000ULL, - 0xb800000000000000ULL, - -1ULL - } + { "addhs.sn", TILE_OPC_ADDHS_SN, 0x3, 3, TREG_SN, 1, + { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, }, - { "addi.sn", TILE_OPC_ADDI_SN, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 0 }, - { 9, 10, 1 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000048300000ULL, - 0x3418000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addi", TILE_OPC_ADDI, 0xf, 3, TREG_ZERO, 1, + { { 7, 8, 0 }, { 9, 10, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, }, - { "addib", TILE_OPC_ADDIB, 0x3 /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 0 }, - { 9, 10, 1 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000040100000ULL, - 0x3008000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addi.sn", TILE_OPC_ADDI_SN, 0x3, 3, TREG_SN, 1, + { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, }, - { "addib.sn", TILE_OPC_ADDIB_SN, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 0 }, - { 9, 10, 1 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000048100000ULL, - 0x3408000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addib", TILE_OPC_ADDIB, 0x3, 3, TREG_ZERO, 1, + { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, }, - { "addih", TILE_OPC_ADDIH, 0x3 /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 0 }, - { 9, 10, 1 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000040200000ULL, - 0x3010000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addib.sn", TILE_OPC_ADDIB_SN, 0x3, 3, TREG_SN, 1, + { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, }, - { "addih.sn", TILE_OPC_ADDIH_SN, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 0 }, - { 9, 10, 1 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000048200000ULL, - 0x3410000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addih", TILE_OPC_ADDIH, 0x3, 3, TREG_ZERO, 1, + { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, }, - { "addli", TILE_OPC_ADDLI, 0x3 /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 4 }, - { 9, 10, 5 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x8000000070000000ULL, - 0xf800000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000020000000ULL, - 0x1800000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addih.sn", TILE_OPC_ADDIH_SN, 0x3, 3, TREG_SN, 1, + { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, }, - { "addli.sn", TILE_OPC_ADDLI_SN, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 4 }, - { 9, 10, 5 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x8000000070000000ULL, - 0xf800000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000010000000ULL, - 0x1000000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addli", TILE_OPC_ADDLI, 0x3, 3, TREG_ZERO, 1, + { { 7, 8, 4 }, { 9, 10, 5 }, { 0, }, { 0, }, { 0, } }, }, - { "addlis", TILE_OPC_ADDLIS, 0x3 /* pipes */, 3 /* num_operands */, - TREG_SN, /* implicitly_written_register */ - 1, /* can_bundle */ - { - /* operands */ - { 7, 8, 4 }, - { 9, 10, 5 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x8000000070000000ULL, - 0xf800000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000010000000ULL, - 0x1000000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addli.sn", TILE_OPC_ADDLI_SN, 0x3, 3, TREG_SN, 1, + { { 7, 8, 4 }, { 9, 10, 5 }, { 0, }, { 0, }, { 0, } }, }, - { "adds", TILE_OPC_ADDS, 0x3 /* pipes */, 3 /* num_operands */, - TREG_ZERO, /* implicitly_written_register */ - 1, |