diff options
Diffstat (limited to 'arch')
-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, /* can_bundle */ - { - /* operands */ - { 7, 8, 16 }, - { 9, 10, 17 }, - { 0, }, - { 0, }, - { 0, } - }, - { - /* fixed_bit_masks */ - 0x800000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - /* fixed_bit_values */ - 0x0000000001800000ULL, - 0x0884000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } + { "addlis", TILE_OPC_ADDLIS, 0x3, 3, TREG_SN, 1, + { { 7, 8, 4 }, { 9, 10, 5 }, { 0, }, { 0, }, { 0, } }, }, - { "adds.sn", TILE_OPC_ADDS_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, |