diff options
-rw-r--r-- | bfd/ChangeLog | 119 | ||||
-rw-r--r-- | bfd/bfd-in2.h | 54 | ||||
-rw-r--r-- | bfd/elf32-tilepro.c | 550 | ||||
-rw-r--r-- | bfd/elfxx-tilegx.c | 843 | ||||
-rw-r--r-- | bfd/libbfd.h | 54 | ||||
-rw-r--r-- | bfd/reloc.c | 96 | ||||
-rw-r--r-- | gas/ChangeLog | 37 | ||||
-rw-r--r-- | gas/config/tc-tilegx.c | 231 | ||||
-rw-r--r-- | gas/config/tc-tilepro.c | 121 | ||||
-rw-r--r-- | gas/doc/c-tilegx.texi | 101 | ||||
-rw-r--r-- | gas/doc/c-tilepro.texi | 35 | ||||
-rw-r--r-- | include/elf/ChangeLog | 57 | ||||
-rw-r--r-- | include/elf/tilegx.h | 48 | ||||
-rw-r--r-- | include/elf/tilepro.h | 18 | ||||
-rw-r--r-- | include/opcode/ChangeLog | 7 | ||||
-rw-r--r-- | include/opcode/tilegx.h | 2 | ||||
-rw-r--r-- | include/opcode/tilepro.h | 2 | ||||
-rw-r--r-- | opcodes/ChangeLog | 6 | ||||
-rw-r--r-- | opcodes/tilegx-opc.c | 930 | ||||
-rw-r--r-- | opcodes/tilepro-opc.c | 1091 |
20 files changed, 2868 insertions, 1534 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2af9699..982c9a2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,4 +1,123 @@ 2012-02-25 Walter Lee <walt@tilera.com> + * reloc.c: Add BFD_RELOC_TILEPRO_TLS_GD_CALL, + BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD, + BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD, + BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD, + BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD, + BFD_RELOC_TILEPRO_TLS_IE_LOAD, BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA, + BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE, + BFD_RELOC_TILEGX_TLS_GD_CALL, BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD, + BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD, + BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD, + BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD, BFD_RELOC_TILEGX_TLS_IE_LOAD, + BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD, + BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD, + BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD, BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD. + Delete BFD_RELOC_TILEGX_IMM16_X0_HW1_GOT, + BFD_RELOC_TILEGX_IMM16_X1_HW1_GOT, + BFD_RELOC_TILEGX_IMM16_X0_HW2_GOT, + BFD_RELOC_TILEGX_IMM16_X1_HW2_GOT, + BFD_RELOC_TILEGX_IMM16_X0_HW3_GOT, + BFD_RELOC_TILEGX_IMM16_X1_HW3_GOT, + BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_GOT, + BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_GOT, + BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_IE. + * elf32-tilepro.c (tilepro_elf_howto_table): Update tilepro + relocations. + (tilepro_reloc_map): Ditto. + (tilepro_info_to_howto_rela): Ditto. + (reloc_to_create_func): Ditto. + (tilepro_tls_translate_to_le): New. + (tilepro_tls_translate_to_ie): New. + (tilepro_elf_tls_transition): New. + (tilepro_elf_check_relocs): Handle new tls relocations. + (tilepro_elf_gc_sweep_hook): Ditto. + (allocate_dynrelocs): Ditto. + (tilepro_elf_relocate_section): Ditto. + (tilepro_replace_insn): New. + (insn_mask_X1): New. + (insn_mask_X0_no_dest_no_srca): New + (insn_mask_X1_no_dest_no_srca): New + (insn_mask_Y0_no_dest_no_srca): New + (insn_mask_Y1_no_dest_no_srca): New + (srca_mask_X0): New + (srca_mask_X1): New + (insn_tls_le_move_X1): New + (insn_tls_le_move_zero_X0X1): New + (insn_tls_ie_lw_X1): New + (insn_tls_ie_add_X0X1): New + (insn_tls_ie_add_Y0Y1): New + (insn_tls_gd_add_X0X1): New + (insn_tls_gd_add_Y0Y1): New + * elfxx-tilegx.c (tilegx_elf_howto_table): Update tilegx + relocations. + (tilegx_reloc_map): Ditto. + (tilegx_info_to_howto_rela): Ditto. + (reloc_to_create_func): Ditto. + (tilegx_elf_link_hash_table): New field disable_le_transition. + (tilegx_tls_translate_to_le): New. + (tilegx_tls_translate_to_ie): New. + (tilegx_elf_tls_transition): New. + (tilegx_elf_check_relocs): Handle new tls relocations. + (tilegx_elf_gc_sweep_hook): Ditto. + (allocate_dynrelocs): Ditto. + (tilegx_elf_relocate_section): Ditto. + (tilegx_copy_bits): New. + (tilegx_replace_insn): New. + (insn_mask_X1): New. + (insn_mask_X0_no_dest_no_srca): New. + (insn_mask_X1_no_dest_no_srca): New. + (insn_mask_Y0_no_dest_no_srca): New. + (insn_mask_Y1_no_dest_no_srca): New. + (insn_mask_X0_no_operand): New. + (insn_mask_X1_no_operand): New. + (insn_mask_Y0_no_operand): New. + (insn_mask_Y1_no_operand): New. + (insn_tls_ie_ld_X1): New. + (insn_tls_ie_ld4s_X1): New. + (insn_tls_ie_add_X0X1): New. + (insn_tls_ie_add_Y0Y1): New. + (insn_tls_ie_addx_X0X1): New. + (insn_tls_ie_addx_Y0Y1): New. + (insn_tls_gd_add_X0X1): New. + (insn_tls_gd_add_Y0Y1): New. + (insn_move_X0X1): New. + (insn_move_Y0Y1): New. + (insn_add_X0X1): New. + (insn_add_Y0Y1): New. + (insn_addx_X0X1): New. + (insn_addx_Y0Y1): New. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + +2012-02-25 Walter Lee <walt@tilera.com> * config.bfd (tilegx-*-*): rename little endian vector; add big endian vector. diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 4a92e47..9c77fed 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -4959,6 +4959,12 @@ the dynamic object into the runtime process image. */ BFD_RELOC_TILEPRO_SHAMT_X1, BFD_RELOC_TILEPRO_SHAMT_Y0, BFD_RELOC_TILEPRO_SHAMT_Y1, + BFD_RELOC_TILEPRO_TLS_GD_CALL, + BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD, + BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD, + BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD, + BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD, + BFD_RELOC_TILEPRO_TLS_IE_LOAD, BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD, BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD, BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO, @@ -4978,6 +4984,14 @@ the dynamic object into the runtime process image. */ BFD_RELOC_TILEPRO_TLS_DTPMOD32, BFD_RELOC_TILEPRO_TLS_DTPOFF32, BFD_RELOC_TILEPRO_TLS_TPOFF32, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA, /* Tilera TILE-Gx Relocations. */ BFD_RELOC_TILEGX_HW0, @@ -5037,52 +5051,44 @@ the dynamic object into the runtime process image. */ BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL, BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT, BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT, - BFD_RELOC_TILEGX_IMM16_X0_HW1_GOT, - BFD_RELOC_TILEGX_IMM16_X1_HW1_GOT, - BFD_RELOC_TILEGX_IMM16_X0_HW2_GOT, - BFD_RELOC_TILEGX_IMM16_X1_HW2_GOT, - BFD_RELOC_TILEGX_IMM16_X0_HW3_GOT, - BFD_RELOC_TILEGX_IMM16_X1_HW3_GOT, BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT, BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT, BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT, BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT, - BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_GOT, - BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_GOT, BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD, BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD, - BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_GD, - BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_GD, - BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_GD, - BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_GD, - BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_GD, - BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE, BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD, BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD, BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD, BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD, - BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_GD, - BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_GD, BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE, BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE, - BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_IE, - BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_IE, - BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_IE, - BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_IE, - BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_IE, - BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_IE, BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE, BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE, BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE, BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE, - BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_IE, - BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_IE, BFD_RELOC_TILEGX_TLS_DTPMOD64, BFD_RELOC_TILEGX_TLS_DTPOFF64, BFD_RELOC_TILEGX_TLS_TPOFF64, BFD_RELOC_TILEGX_TLS_DTPMOD32, BFD_RELOC_TILEGX_TLS_DTPOFF32, BFD_RELOC_TILEGX_TLS_TPOFF32, + BFD_RELOC_TILEGX_TLS_GD_CALL, + BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD, + BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD, + BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD, + BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD, + BFD_RELOC_TILEGX_TLS_IE_LOAD, + BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD, + BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD, + BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD, + BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD, /* Adapteva EPIPHANY - 8 bit signed pc-relative displacement */ BFD_RELOC_EPIPHANY_SIMM8, diff --git a/bfd/elf32-tilepro.c b/bfd/elf32-tilepro.c index 7b08aff..48a99aa 100644 --- a/bfd/elf32-tilepro.c +++ b/bfd/elf32-tilepro.c @@ -380,12 +380,26 @@ static reloc_howto_type tilepro_elf_howto_table [] = EMPTY_HOWTO (57), EMPTY_HOWTO (58), EMPTY_HOWTO (59), - EMPTY_HOWTO (60), - EMPTY_HOWTO (61), - EMPTY_HOWTO (62), - EMPTY_HOWTO (63), - EMPTY_HOWTO (64), - EMPTY_HOWTO (65), + + HOWTO (R_TILEPRO_TLS_GD_CALL, /* type */ + TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 29, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_TILEPRO_TLS_GD_CALL", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + -1, /* dst_mask */ + TRUE), /* pcrel_offset */ + + TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X0_TLS_GD_ADD, 0, 8), + TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X1_TLS_GD_ADD, 0, 8), + TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y0_TLS_GD_ADD, 0, 8), + TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y1_TLS_GD_ADD, 0, 8), + TILEPRO_IMM_HOWTO(R_TILEPRO_TLS_IE_LOAD, 0, 8), /* Offsets into the GOT of TLS Descriptors. */ @@ -454,17 +468,12 @@ static reloc_howto_type tilepro_elf_howto_table [] = -1, /* dst_mask */ TRUE), /* pcrel_offset */ -#define TILEPRO_IMM16_HOWTO_TLS_IE(name, rshift) \ - HOWTO (name, rshift, 1, 16, FALSE, 0, \ - complain_overflow_dont, bfd_elf_generic_reloc, \ - #name, FALSE, 0, 0xffff, TRUE) - - TILEPRO_IMM16_HOWTO_TLS_IE (R_TILEPRO_IMM16_X0_TLS_IE_LO, 0), - TILEPRO_IMM16_HOWTO_TLS_IE (R_TILEPRO_IMM16_X1_TLS_IE_LO, 0), - TILEPRO_IMM16_HOWTO_TLS_IE (R_TILEPRO_IMM16_X0_TLS_IE_HI, 16), - TILEPRO_IMM16_HOWTO_TLS_IE (R_TILEPRO_IMM16_X1_TLS_IE_HI, 16), - TILEPRO_IMM16_HOWTO_TLS_IE (R_TILEPRO_IMM16_X0_TLS_IE_HA, 16), - TILEPRO_IMM16_HOWTO_TLS_IE (R_TILEPRO_IMM16_X1_TLS_IE_HA, 16), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_IE_LO, 0), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_IE_LO, 0), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_IE_HI, 16), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_IE_HI, 16), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_IE_HA, 16), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_IE_HA, 16), /* These are common with the Solaris TLS implementation. */ HOWTO(R_TILEPRO_TLS_DTPMOD32, 0, 0, 0, FALSE, 0, complain_overflow_dont, @@ -475,8 +484,42 @@ static reloc_howto_type tilepro_elf_howto_table [] = FALSE, 0, 0xFFFFFFFF, TRUE), HOWTO(R_TILEPRO_TLS_TPOFF32, 0, 0, 0, FALSE, 0, complain_overflow_dont, bfd_elf_generic_reloc, "R_TILEPRO_TLS_TPOFF32", - FALSE, 0, 0, TRUE) + FALSE, 0, 0, TRUE), + HOWTO (R_TILEPRO_IMM16_X0_TLS_LE,/* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_TILEPRO_IMM16_X0_TLS_LE",/* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + -1, /* dst_mask */ + TRUE), /* pcrel_offset */ + + HOWTO (R_TILEPRO_IMM16_X1_TLS_LE,/* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_TILEPRO_IMM16_X1_TLS_LE",/* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + -1, /* dst_mask */ + TRUE), /* pcrel_offset */ + + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_LE_LO, 0), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_LE_LO, 0), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_LE_HI, 16), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_LE_HI, 16), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_LE_HA, 16), + TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_LE_HA, 16), }; static reloc_howto_type tilepro_elf_howto_table2 [] = @@ -590,6 +633,13 @@ static const reloc_map tilepro_reloc_map [] = TH_REMAP (BFD_RELOC_TILEPRO_SHAMT_Y0, R_TILEPRO_SHAMT_Y0) TH_REMAP (BFD_RELOC_TILEPRO_SHAMT_Y1, R_TILEPRO_SHAMT_Y1) + TH_REMAP (BFD_RELOC_TILEPRO_TLS_GD_CALL, R_TILEPRO_TLS_GD_CALL) + TH_REMAP (BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD, R_TILEPRO_IMM8_X0_TLS_GD_ADD) + TH_REMAP (BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD, R_TILEPRO_IMM8_X1_TLS_GD_ADD) + TH_REMAP (BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD, R_TILEPRO_IMM8_Y0_TLS_GD_ADD) + TH_REMAP (BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD, R_TILEPRO_IMM8_Y1_TLS_GD_ADD) + TH_REMAP (BFD_RELOC_TILEPRO_TLS_IE_LOAD, R_TILEPRO_TLS_IE_LOAD) + TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD, R_TILEPRO_IMM16_X0_TLS_GD) TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD, R_TILEPRO_IMM16_X1_TLS_GD) TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO, R_TILEPRO_IMM16_X0_TLS_GD_LO) @@ -612,6 +662,15 @@ static const reloc_map tilepro_reloc_map [] = TH_REMAP (BFD_RELOC_TILEPRO_TLS_DTPOFF32, R_TILEPRO_TLS_DTPOFF32) TH_REMAP (BFD_RELOC_TILEPRO_TLS_TPOFF32, R_TILEPRO_TLS_TPOFF32) + TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE, R_TILEPRO_IMM16_X0_TLS_LE) + TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE, R_TILEPRO_IMM16_X1_TLS_LE) + TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO, R_TILEPRO_IMM16_X0_TLS_LE_LO) + TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO, R_TILEPRO_IMM16_X1_TLS_LE_LO) + TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI, R_TILEPRO_IMM16_X0_TLS_LE_HI) + TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI, R_TILEPRO_IMM16_X1_TLS_LE_HI) + TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA, R_TILEPRO_IMM16_X0_TLS_LE_HA) + TH_REMAP (BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA, R_TILEPRO_IMM16_X1_TLS_LE_HA) + #undef TH_REMAP { BFD_RELOC_VTABLE_INHERIT, R_TILEPRO_GNU_VTINHERIT, tilepro_elf_howto_table2 }, @@ -745,7 +804,7 @@ tilepro_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, { unsigned int r_type = ELF32_R_TYPE (dst->r_info); - if (r_type <= (unsigned int) R_TILEPRO_TLS_TPOFF32) + if (r_type <= (unsigned int) R_TILEPRO_IMM16_X1_TLS_LE_HA) cache_ptr->howto = &tilepro_elf_howto_table [r_type]; else if (r_type - R_TILEPRO_GNU_VTINHERIT <= (unsigned int) R_TILEPRO_GNU_VTENTRY) @@ -845,7 +904,20 @@ static const tilepro_create_func reloc_to_create_func[] = create_Imm16_X0, create_Imm16_X1, create_Imm16_X0, - create_Imm16_X1 + create_Imm16_X1, + + NULL, + NULL, + NULL, + + create_Imm16_X0, + create_Imm16_X1, + create_Imm16_X0, + create_Imm16_X1, + create_Imm16_X0, + create_Imm16_X1, + create_Imm16_X0, + create_Imm16_X1, }; #define NELEMS(a) ((int) (sizeof (a) / sizeof ((a)[0]))) @@ -1288,6 +1360,99 @@ tilepro_elf_copy_indirect_symbol (struct bfd_link_info *info, _bfd_elf_link_hash_copy_indirect (info, dir, ind); } +static int +tilepro_tls_translate_to_le (int r_type) +{ + switch (r_type) + { + case R_TILEPRO_IMM16_X0_TLS_GD: + case R_TILEPRO_IMM16_X0_TLS_IE: + return R_TILEPRO_IMM16_X0_TLS_LE; + + case R_TILEPRO_IMM16_X1_TLS_GD: + case R_TILEPRO_IMM16_X1_TLS_IE: + return R_TILEPRO_IMM16_X1_TLS_LE; + + case R_TILEPRO_IMM16_X0_TLS_GD_LO: + case R_TILEPRO_IMM16_X0_TLS_IE_LO: + return R_TILEPRO_IMM16_X0_TLS_LE_LO; + + case R_TILEPRO_IMM16_X1_TLS_GD_LO: + case R_TILEPRO_IMM16_X1_TLS_IE_LO: + return R_TILEPRO_IMM16_X1_TLS_LE_LO; + + case R_TILEPRO_IMM16_X0_TLS_GD_HI: + case R_TILEPRO_IMM16_X0_TLS_IE_HI: + return R_TILEPRO_IMM16_X0_TLS_LE_HI; + + case R_TILEPRO_IMM16_X1_TLS_GD_HI: + case R_TILEPRO_IMM16_X1_TLS_IE_HI: + return R_TILEPRO_IMM16_X1_TLS_LE_HI; + + case R_TILEPRO_IMM16_X0_TLS_GD_HA: + case R_TILEPRO_IMM16_X0_TLS_IE_HA: + return R_TILEPRO_IMM16_X0_TLS_LE_HA; + + case R_TILEPRO_IMM16_X1_TLS_GD_HA: + case R_TILEPRO_IMM16_X1_TLS_IE_HA: + return R_TILEPRO_IMM16_X1_TLS_LE_HA; + } + return r_type; +} + +static int +tilepro_tls_translate_to_ie (int r_type) +{ + switch (r_type) + { + case R_TILEPRO_IMM16_X0_TLS_GD: + case R_TILEPRO_IMM16_X0_TLS_IE: + return R_TILEPRO_IMM16_X0_TLS_IE; + + case R_TILEPRO_IMM16_X1_TLS_GD: + case R_TILEPRO_IMM16_X1_TLS_IE: + return R_TILEPRO_IMM16_X1_TLS_IE; + + case R_TILEPRO_IMM16_X0_TLS_GD_LO: + case R_TILEPRO_IMM16_X0_TLS_IE_LO: + return R_TILEPRO_IMM16_X0_TLS_IE_LO; + + case R_TILEPRO_IMM16_X1_TLS_GD_LO: + case R_TILEPRO_IMM16_X1_TLS_IE_LO: + return R_TILEPRO_IMM16_X1_TLS_IE_LO; + + case R_TILEPRO_IMM16_X0_TLS_GD_HI: + case R_TILEPRO_IMM16_X0_TLS_IE_HI: + return R_TILEPRO_IMM16_X0_TLS_IE_HI; + + case R_TILEPRO_IMM16_X1_TLS_GD_HI: + case R_TILEPRO_IMM16_X1_TLS_IE_HI: + return R_TILEPRO_IMM16_X1_TLS_IE_HI; + + case R_TILEPRO_IMM16_X0_TLS_GD_HA: + case R_TILEPRO_IMM16_X0_TLS_IE_HA: + return R_TILEPRO_IMM16_X0_TLS_IE_HA; + + case R_TILEPRO_IMM16_X1_TLS_GD_HA: + case R_TILEPRO_IMM16_X1_TLS_IE_HA: + return R_TILEPRO_IMM16_X1_TLS_IE_HA; + } + return r_type; +} + +static int +tilepro_elf_tls_transition (struct bfd_link_info *info, int r_type, + int is_local) +{ + if (info->shared) + return r_type; + + if (is_local) + return tilepro_tls_translate_to_le (r_type); + else + return tilepro_tls_translate_to_ie (r_type); +} + /* Look through the relocs for a section during the first phase, and allocate space in the global offset table or procedure linkage table. */ @@ -1348,8 +1513,21 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, h = (struct elf_link_hash_entry *) h->root.u.i.link; } + r_type = tilepro_elf_tls_transition (info, r_type, h == NULL); switch (r_type) { + case R_TILEPRO_IMM16_X0_TLS_LE: + case R_TILEPRO_IMM16_X1_TLS_LE: + case R_TILEPRO_IMM16_X0_TLS_LE_LO: + case R_TILEPRO_IMM16_X1_TLS_LE_LO: + case R_TILEPRO_IMM16_X0_TLS_LE_HI: + case R_TILEPRO_IMM16_X1_TLS_LE_HI: + case R_TILEPRO_IMM16_X0_TLS_LE_HA: + case R_TILEPRO_IMM16_X1_TLS_LE_HA: + if (info->shared) + goto r_tilepro_plt32; + break; + case R_TILEPRO_IMM16_X0_TLS_GD: case R_TILEPRO_IMM16_X1_TLS_GD: case R_TILEPRO_IMM16_X0_TLS_GD_LO: @@ -1358,7 +1536,8 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, case R_TILEPRO_IMM16_X1_TLS_GD_HI: case R_TILEPRO_IMM16_X0_TLS_GD_HA: case R_TILEPRO_IMM16_X1_TLS_GD_HA: - tls_type = GOT_TLS_GD; + BFD_ASSERT (info->shared); + tls_type = GOT_TLS_GD; goto have_got_reference; case R_TILEPRO_IMM16_X0_TLS_IE: @@ -1454,6 +1633,24 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, } break; + case R_TILEPRO_TLS_GD_CALL: + if (info->shared) + { + /* These are basically R_TILEPRO_JOFFLONG_X1_PLT relocs + against __tls_get_addr. */ + struct bfd_link_hash_entry *bh = NULL; + if (! _bfd_generic_link_add_one_symbol (info, abfd, + "__tls_get_addr", 0, + bfd_und_section_ptr, 0, + NULL, FALSE, FALSE, + &bh)) + return FALSE; + h = (struct elf_link_hash_entry *) bh; + } + else + break; + /* Fall through */ + case R_TILEPRO_JOFFLONG_X1_PLT: /* This symbol requires a procedure linkage table entry. We actually build the entry in adjust_dynamic_symbol, @@ -1523,15 +1720,14 @@ tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, case R_TILEPRO_SHAMT_Y0: case R_TILEPRO_SHAMT_Y1: if (h != NULL) - { h->non_got_ref = 1; - if (!info->shared) - { - /* We may need a .plt entry if the function this reloc - refers to is in a shared lib. */ - h->plt.refcount += 1; - } + r_tilepro_plt32: + if (h != NULL && !info->shared) + { + /* We may need a .plt entry if the function this reloc + refers to is in a shared lib. */ + h->plt.refcount += 1; } /* If we are creating a shared library, and this is a reloc @@ -1725,6 +1921,7 @@ tilepro_elf_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, } r_type = ELF32_R_TYPE (rel->r_info); + r_type = tilepro_elf_tls_transition (info, r_type, h != NULL); switch (r_type) { case R_TILEPRO_IMM16_X0_GOT: @@ -1758,7 +1955,8 @@ tilepro_elf_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, } else { - if (local_got_refcounts[r_symndx] > 0) + if (local_got_refcounts && + local_got_refcounts[r_symndx] > 0) local_got_refcounts[r_symndx]--; } break; @@ -2040,7 +2238,14 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) h->needs_plt = 0; } - if (h->got.refcount > 0) + /* If a TLS_IE symbol is now local to the binary, make it a TLS_LE + requiring no TLS entry. */ + if (h->got.refcount > 0 + && !info->shared + && h->dynindx == -1 + && tilepro_elf_hash_entry(h)->tls_type == GOT_TLS_IE) + h->got.offset = (bfd_vma) -1; + else if (h->got.refcount > 0) { asection *s; bfd_boolean dyn; @@ -2467,6 +2672,87 @@ tpoff (struct bfd_link_info *info, bfd_vma address) return (address - htab->tls_sec->vma); } +/* Replace the MASK bits in ADDR with those in INSN, for the next + TILEPRO_BUNDLE_SIZE_IN_BYTES bytes. */ + +static void +tilepro_replace_insn (bfd_byte *addr, const bfd_byte *mask, + const bfd_byte *insn) +{ + int i; + for (i = 0; i < TILEPRO_BUNDLE_SIZE_IN_BYTES; i++) + { + addr[i] = (addr[i] & ~mask[i]) | (insn[i] & mask[i]); + } +} + +/* Mask to extract the bits corresponding to an instruction in a + specific pipe of a bundle. */ +static const bfd_byte insn_mask_X1[] = { + 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f +}; + +/* Mask to extract the bits corresponding to an instruction in a + specific pipe of a bundle, minus the destination operand and the + first source operand. */ +static const bfd_byte insn_mask_X0_no_dest_no_srca[] = { + 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00 +}; + +static const bfd_byte insn_mask_X1_no_dest_no_srca[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f +}; + +static const bfd_byte insn_mask_Y0_no_dest_no_srca[] = { + 0x00, 0xf0, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00 +}; + +static const bfd_byte insn_mask_Y1_no_dest_no_srca[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x78 +}; + +/* Mask to extract the first source operand of an instruction. */ +static const bfd_byte srca_mask_X0[] = { + 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const bfd_byte srca_mask_X1[] = { + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00 +}; + +/* Various instructions synthesized to support tls references. */ + +/* move r0, r0 in the X1 pipe, used for tls le. */ +static const bfd_byte insn_tls_le_move_X1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x33, 0x08 +}; + +/* move r0, zero in the X0 and X1 pipe, used for tls le. */ +static const bfd_byte insn_tls_le_move_zero_X0X1[] = { + 0xc0, 0xff, 0xcf, 0x00, 0xe0, 0xff, 0x33, 0x08 +}; + +/* lw r0, r0 in the X1 pipe, used for tls ie. */ +static const bfd_byte insn_tls_ie_lw_X1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0b, 0x40 +}; + +/* add r0, r0, tp in various pipes, used for tls ie. */ +static const bfd_byte insn_tls_ie_add_X0X1[] = { + 0x00, 0x50, 0x0f, 0x00, 0x00, 0xa8, 0x07, 0x08 +}; +static const bfd_byte insn_tls_ie_add_Y0Y1[] = { + 0x00, 0x50, 0x03, 0x08, 0x00, 0xa8, 0x01, 0x8c +}; + +/* move r0, r0 in various pipes, used for tls gd. */ +static const bfd_byte insn_tls_gd_add_X0X1[] = { + 0x00, 0xf0, 0xcf, 0x00, 0x00, 0xf8, 0x33, 0x08 +}; +static const bfd_byte insn_tls_gd_add_Y0Y1[] = { + 0x00, 0xf0, 0x0b, 0x18, 0x00, 0xf8, 0x05, 0x9c +}; + /* Relocate an TILEPRO ELF section. The RELOCATE_SECTION function is called by the new ELF backend linker @@ -2531,6 +2817,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, for (; rel < relend; rel++) { int r_type, tls_type; + bfd_boolean is_tls_iele, is_tls_le; reloc_howto_type *howto; unsigned long r_symndx; struct elf_link_hash_entry *h; @@ -2613,6 +2900,118 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, switch (r_type) { + case R_TILEPRO_TLS_GD_CALL: + case R_TILEPRO_IMM8_X0_TLS_GD_ADD: + case R_TILEPRO_IMM8_Y0_TLS_GD_ADD: + case R_TILEPRO_IMM8_X1_TLS_GD_ADD: + case R_TILEPRO_IMM8_Y1_TLS_GD_ADD: + case R_TILEPRO_IMM16_X0_TLS_GD_HA: + case R_TILEPRO_IMM16_X1_TLS_GD_HA: + case R_TILEPRO_IMM16_X0_TLS_IE_HA: + case R_TILEPRO_IMM16_X1_TLS_IE_HA: + tls_type = GOT_UNKNOWN; + if (h == NULL && local_got_offsets) + tls_type = + _bfd_tilepro_elf_local_got_tls_type (input_bfd) [r_symndx]; + else if (h != NULL) + tls_type = tilepro_elf_hash_entry(h)->tls_type; + + is_tls_iele = (! info->shared || tls_type == GOT_TLS_IE); + is_tls_le = is_tls_iele && (!info->shared + && (h == NULL || h->dynindx == -1)); + + if (r_type == R_TILEPRO_TLS_GD_CALL) + { + if (is_tls_le) + { + /* GD -> LE */ + tilepro_replace_insn (contents + rel->r_offset, + insn_mask_X1, insn_tls_le_move_X1); + continue; + } + else if (is_tls_iele) + { + /* GD -> IE */ + tilepro_replace_insn (contents + rel->r_offset, + insn_mask_X1, insn_tls_ie_lw_X1); + continue; + } + + /* GD -> GD */ + h = (struct elf_link_hash_entry *) + bfd_link_hash_lookup (info->hash, "__tls_get_addr", FALSE, + FALSE, TRUE); + BFD_ASSERT (h != NULL); + r_type = R_TILEPRO_JOFFLONG_X1_PLT; + howto = tilepro_elf_howto_table + r_type; + } + else if (r_type == R_TILEPRO_IMM16_X0_TLS_GD_HA + || r_type == R_TILEPRO_IMM16_X0_TLS_IE_HA) + { + if (is_tls_le) + tilepro_replace_insn (contents + rel->r_offset, srca_mask_X0, + insn_tls_le_move_zero_X0X1); + } + else if (r_type == R_TILEPRO_IMM16_X1_TLS_GD_HA + || r_type == R_TILEPRO_IMM16_X1_TLS_IE_HA) + { + if (is_tls_le) + tilepro_replace_insn (contents + rel->r_offset, srca_mask_X1, + insn_tls_le_move_zero_X0X1); + } + else + { + const bfd_byte *mask = NULL; + const bfd_byte *add_insn = NULL; + + switch (r_type) + { + case R_TILEPRO_IMM8_X0_TLS_GD_ADD: + add_insn = is_tls_iele ? insn_tls_ie_add_X0X1 + : insn_tls_gd_add_X0X1; + mask = insn_mask_X0_no_dest_no_srca; + break; + case R_TILEPRO_IMM8_X1_TLS_GD_ADD: + add_insn = is_tls_iele ? insn_tls_ie_add_X0X1 + : insn_tls_gd_add_X0X1; + mask = insn_mask_X1_no_dest_no_srca; + break; + case R_TILEPRO_IMM8_Y0_TLS_GD_ADD: + add_insn = is_tls_iele ? insn_tls_ie_add_Y0Y1 + : insn_tls_gd_add_Y0Y1; + mask = insn_mask_Y0_no_dest_no_srca; + break; + case R_TILEPRO_IMM8_Y1_TLS_GD_ADD: + add_insn = is_tls_iele ? insn_tls_ie_add_Y0Y1 + : insn_tls_gd_add_Y0Y1; + mask = insn_mask_Y1_no_dest_no_srca; + break; + } + + tilepro_replace_insn (contents + rel->r_offset, mask, add_insn); + + continue; + } + break; + case R_TILEPRO_TLS_IE_LOAD: + if (!info->shared && (h == NULL || h->dynindx == -1)) + /* IE -> LE */ + tilepro_replace_insn (contents + rel->r_offset, + insn_mask_X1_no_dest_no_srca, + insn_tls_le_move_X1); + else + /* IE -> IE */ + tilepro_replace_insn (contents + rel->r_offset, + insn_mask_X1_no_dest_no_srca, + insn_tls_ie_lw_X1); + continue; + break; + default: + break; + } + + switch (r_type) + { case R_TILEPRO_IMM16_X0_GOT: case R_TILEPRO_IMM16_X1_GOT: case R_TILEPRO_IMM16_X0_GOT_LO: @@ -2908,6 +3307,45 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } break; + case R_TILEPRO_IMM16_X0_TLS_LE: + case R_TILEPRO_IMM16_X1_TLS_LE: + case R_TILEPRO_IMM16_X0_TLS_LE_LO: + case R_TILEPRO_IMM16_X1_TLS_LE_LO: + case R_TILEPRO_IMM16_X0_TLS_LE_HI: + case R_TILEPRO_IMM16_X1_TLS_LE_HI: + case R_TILEPRO_IMM16_X0_TLS_LE_HA: + case R_TILEPRO_IMM16_X1_TLS_LE_HA: + if (info->shared) + { + Elf_Internal_Rela outrel; + bfd_boolean skip; + + BFD_ASSERT (sreloc != NULL); + skip = FALSE; + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = TRUE; + else if (outrel.r_offset == (bfd_vma) -2) + skip = TRUE; + outrel.r_offset += (input_section->output_section->vma + + input_section->output_offset); + if (skip) + memset (&outrel, 0, sizeof outrel); + else + { + outrel.r_info = ELF32_R_INFO (0, r_type); + outrel.r_addend = relocation - dtpoff_base (info) + + rel->r_addend; + } + + tilepro_elf_append_rela_32 (output_bfd, sreloc, &outrel); + continue; + } + relocation = tpoff (info, relocation); + break; + case R_TILEPRO_IMM16_X0_TLS_GD: case R_TILEPRO_IMM16_X1_TLS_GD: case R_TILEPRO_IMM16_X0_TLS_GD_LO: @@ -2916,9 +3354,6 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, case R_TILEPRO_IMM16_X1_TLS_GD_HI: case R_TILEPRO_IMM16_X0_TLS_GD_HA: case R_TILEPRO_IMM16_X1_TLS_GD_HA: - tls_type = GOT_TLS_GD; - goto have_tls_reference; - case R_TILEPRO_IMM16_X0_TLS_IE: case R_TILEPRO_IMM16_X1_TLS_IE: case R_TILEPRO_IMM16_X0_TLS_IE_LO: @@ -2927,45 +3362,32 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, case R_TILEPRO_IMM16_X1_TLS_IE_HI: case R_TILEPRO_IMM16_X0_TLS_IE_HA: case R_TILEPRO_IMM16_X1_TLS_IE_HA: - tls_type = GOT_TLS_IE; - /* Fall through. */ - - have_tls_reference: + r_type = tilepro_elf_tls_transition (info, r_type, h == NULL); + tls_type = GOT_UNKNOWN; if (h == NULL && local_got_offsets) tls_type = _bfd_tilepro_elf_local_got_tls_type (input_bfd) [r_symndx]; else if (h != NULL) { tls_type = tilepro_elf_hash_entry(h)->tls_type; + if (!info->shared && h->dynindx == -1 && tls_type == GOT_TLS_IE) + r_type = tilepro_tls_translate_to_le (r_type); } if (tls_type == GOT_TLS_IE) - switch (r_type) - { - case R_TILEPRO_IMM16_X0_TLS_GD: - r_type = R_TILEPRO_IMM16_X0_TLS_IE; - break; - case R_TILEPRO_IMM16_X1_TLS_GD: - r_type = R_TILEPRO_IMM16_X1_TLS_IE; - break; - case R_TILEPRO_IMM16_X0_TLS_GD_LO: - r_type = R_TILEPRO_IMM16_X0_TLS_IE_LO; - break; - case R_TILEPRO_IMM16_X1_TLS_GD_LO: - r_type = R_TILEPRO_IMM16_X1_TLS_IE_LO; - break; - case R_TILEPRO_IMM16_X0_TLS_GD_HI: - r_type = R_TILEPRO_IMM16_X0_TLS_IE_HI; - break; - case R_TILEPRO_IMM16_X1_TLS_GD_HI: - r_type = R_TILEPRO_IMM16_X1_TLS_IE_HI; - break; - case R_TILEPRO_IMM16_X0_TLS_GD_HA: - r_type = R_TILEPRO_IMM16_X0_TLS_IE_HA; - break; - case R_TILEPRO_IMM16_X1_TLS_GD_HA: - r_type = R_TILEPRO_IMM16_X1_TLS_IE_HA; - break; - } + r_type = tilepro_tls_translate_to_ie (r_type); + + if (r_type == R_TILEPRO_IMM16_X0_TLS_LE + || r_type == R_TILEPRO_IMM16_X1_TLS_LE + || r_type == R_TILEPRO_IMM16_X0_TLS_LE_LO + || r_type == R_TILEPRO_IMM16_X1_TLS_LE_LO + || r_type == R_TILEPRO_IMM16_X0_TLS_LE_HI + || r_type == R_TILEPRO_IMM16_X1_TLS_LE_HI + || r_type == R_TILEPRO_IMM16_X0_TLS_LE_HA + || r_type == R_TILEPRO_IMM16_X1_TLS_LE_HA) + { + relocation = tpoff (info, relocation); + break; + } if (h != NULL) { diff --git a/bfd/elfxx-tilegx.c b/bfd/elfxx-tilegx.c index 2aaa3d3..27e5179 100644 --- a/bfd/elfxx-tilegx.c +++ b/bfd/elfxx-tilegx.c @@ -490,35 +490,38 @@ static reloc_howto_type tilegx_elf_howto_table [] = TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW0_GOT, 0), TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW0_GOT, 0), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW1_GOT, 16), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW1_GOT, 16), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW2_GOT, 32), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW2_GOT, 32), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW3_GOT, 48), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW3_GOT, 48), + /* These relocs are currently not defined. */ + EMPTY_HOWTO (66), + EMPTY_HOWTO (67), + EMPTY_HOWTO (68), + EMPTY_HOWTO (69), + EMPTY_HOWTO (70), + EMPTY_HOWTO (71), TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW0_LAST_GOT, 0), TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW0_LAST_GOT, 0), TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW1_LAST_GOT, 16), TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW1_LAST_GOT, 16), - TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW2_LAST_GOT, 32), - TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW2_LAST_GOT, 32), + /* These relocs are currently not defined. */ + EMPTY_HOWTO (76), + EMPTY_HOWTO (77), TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW0_TLS_GD, 0), TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW0_TLS_GD, 0), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW1_TLS_GD, 16), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW1_TLS_GD, 16), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW2_TLS_GD, 32), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW2_TLS_GD, 32), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW3_TLS_GD, 48), - TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW3_TLS_GD, 48), + + TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW0_TLS_LE, 0), + TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW0_TLS_LE, 0), + TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE, 0), + TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE, 0), + TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE, 16), + TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE, 16), TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD, 0), TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD, 0), TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD, 16), TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD, 16), - TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD, 32), - TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD, 32), + EMPTY_HOWTO (90), + EMPTY_HOWTO (91), #define TILEGX_IMM16_HOWTO_TLS_IE(name, rshift) \ HOWTO (name, rshift, 1, 16, FALSE, 0, \ @@ -527,12 +530,12 @@ static reloc_howto_type tilegx_elf_howto_table [] = TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW0_TLS_IE, 0), TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW0_TLS_IE, 0), - TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW1_TLS_IE, 16), - TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW1_TLS_IE, 16), - TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW2_TLS_IE, 32), - TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW2_TLS_IE, 32), - TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW3_TLS_IE, 48), - TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW3_TLS_IE, 48), + EMPTY_HOWTO (94), + EMPTY_HOWTO (95), + EMPTY_HOWTO (96), + EMPTY_HOWTO (97), + EMPTY_HOWTO (98), + EMPTY_HOWTO (99), #define TILEGX_IMM16_HOWTO_LAST_TLS_IE(name, rshift) \ HOWTO (name, rshift, 1, 16, FALSE, 0, \ @@ -543,8 +546,8 @@ static reloc_howto_type tilegx_elf_howto_table [] = TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE, 0), TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE, 16), TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE, 16), - TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE, 32), - TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE, 32), + EMPTY_HOWTO (104), + EMPTY_HOWTO (105), HOWTO(R_TILEGX_TLS_DTPMOD64, 0, 0, 0, FALSE, 0, complain_overflow_dont, bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPMOD64", @@ -564,7 +567,31 @@ static reloc_howto_type tilegx_elf_howto_table [] = FALSE, 0, -1, TRUE), HOWTO(R_TILEGX_TLS_TPOFF32, 0, 0, 0, FALSE, 0, complain_overflow_dont, bfd_elf_generic_reloc, "R_TILEGX_TLS_TPOFF32", - FALSE, 0, 0, TRUE) + FALSE, 0, 0, TRUE), + + HOWTO (R_TILEGX_TLS_GD_CALL, /* type */ + TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 27, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_TILEGX_TLS_GD_CALL", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + -1, /* dst_mask */ + TRUE), /* pcrel_offset */ + + TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0_TLS_GD_ADD, 0, 8), + TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1_TLS_GD_ADD, 0, 8), + TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0_TLS_GD_ADD, 0, 8), + TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1_TLS_GD_ADD, 0, 8), + TILEGX_IMM_HOWTO(R_TILEGX_TLS_IE_LOAD, 0, 8), + TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0_TLS_ADD, 0, 8), + TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1_TLS_ADD, 0, 8), + TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0_TLS_ADD, 0, 8), + TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1_TLS_ADD, 0, 8), }; static reloc_howto_type tilegx_elf_howto_table2 [] = @@ -686,46 +713,28 @@ static const reloc_map tilegx_reloc_map [] = SIMPLE_REMAP (TILEGX_IMM16_X1_HW2_LAST_PCREL) SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_GOT) SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_GOT) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_GOT) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_GOT) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW2_GOT) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW2_GOT) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW3_GOT) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW3_GOT) SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_LAST_GOT) SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_LAST_GOT) SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_LAST_GOT) SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_LAST_GOT) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW2_LAST_GOT) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW2_LAST_GOT) SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_TLS_GD) SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_TLS_GD) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_TLS_GD) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_TLS_GD) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW2_TLS_GD) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW2_TLS_GD) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW3_TLS_GD) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW3_TLS_GD) + SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_TLS_LE) + SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_TLS_LE) + SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_LAST_TLS_LE) + SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_LAST_TLS_LE) + SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_LAST_TLS_LE) + SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_LAST_TLS_LE) SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_LAST_TLS_GD) SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_LAST_TLS_GD) SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_LAST_TLS_GD) SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_LAST_TLS_GD) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW2_LAST_TLS_GD) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW2_LAST_TLS_GD) SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_TLS_IE) SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_TLS_IE) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_TLS_IE) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_TLS_IE) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW2_TLS_IE) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW2_TLS_IE) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW3_TLS_IE) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW3_TLS_IE) SIMPLE_REMAP (TILEGX_IMM16_X0_HW0_LAST_TLS_IE) SIMPLE_REMAP (TILEGX_IMM16_X1_HW0_LAST_TLS_IE) SIMPLE_REMAP (TILEGX_IMM16_X0_HW1_LAST_TLS_IE) SIMPLE_REMAP (TILEGX_IMM16_X1_HW1_LAST_TLS_IE) - SIMPLE_REMAP (TILEGX_IMM16_X0_HW2_LAST_TLS_IE) - SIMPLE_REMAP (TILEGX_IMM16_X1_HW2_LAST_TLS_IE) SIMPLE_REMAP (TILEGX_TLS_DTPMOD64) SIMPLE_REMAP (TILEGX_TLS_DTPOFF64) @@ -735,6 +744,17 @@ static const reloc_map tilegx_reloc_map [] = SIMPLE_REMAP (TILEGX_TLS_DTPOFF32) SIMPLE_REMAP (TILEGX_TLS_TPOFF32) + SIMPLE_REMAP (TILEGX_TLS_GD_CALL) + SIMPLE_REMAP (TILEGX_IMM8_X0_TLS_GD_ADD) + SIMPLE_REMAP (TILEGX_IMM8_X1_TLS_GD_ADD) + SIMPLE_REMAP (TILEGX_IMM8_Y0_TLS_GD_ADD) + SIMPLE_REMAP (TILEGX_IMM8_Y1_TLS_GD_ADD) + SIMPLE_REMAP (TILEGX_TLS_IE_LOAD) + SIMPLE_REMAP (TILEGX_IMM8_X0_TLS_ADD) + SIMPLE_REMAP (TILEGX_IMM8_X1_TLS_ADD) + SIMPLE_REMAP (TILEGX_IMM8_Y0_TLS_ADD) + SIMPLE_REMAP (TILEGX_IMM8_Y1_TLS_ADD) + #undef SIMPLE_REMAP #undef TH_REMAP @@ -824,6 +844,10 @@ struct tilegx_elf_link_hash_table asection *sdynbss; asection *srelbss; + /* Whether LE transition has been disabled for some of the + sections. */ + bfd_boolean disable_le_transition; + /* Small local sym to section mapping cache. */ struct sym_cache sym_cache; }; @@ -920,7 +944,7 @@ tilegx_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, { unsigned int r_type = TILEGX_ELF_R_TYPE (dst->r_info); - if (r_type <= (unsigned int) R_TILEGX_TLS_TPOFF32) + if (r_type <= (unsigned int) R_TILEGX_IMM8_Y1_TLS_ADD) cache_ptr->howto = &tilegx_elf_howto_table [r_type]; else if (r_type - R_TILEGX_GNU_VTINHERIT <= (unsigned int) R_TILEGX_GNU_VTENTRY) @@ -1003,10 +1027,18 @@ static const tilegx_create_func reloc_to_create_func[] = create_Imm16_X1, create_Imm16_X0, create_Imm16_X1, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, create_Imm16_X0, create_Imm16_X1, create_Imm16_X0, create_Imm16_X1, + NULL, + NULL, create_Imm16_X0, create_Imm16_X1, create_Imm16_X0, @@ -1019,30 +1051,20 @@ static const tilegx_create_func reloc_to_create_func[] = create_Imm16_X1, create_Imm16_X0, create_Imm16_X1, + NULL, + NULL, create_Imm16_X0, create_Imm16_X1, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, create_Imm16_X0, create_Imm16_X1, create_Imm16_X0, create_Imm16_X1, - create_Imm16_X0, - create_Imm16_X1, - create_Imm16_X0, - create_Imm16_X1, - create_Imm16_X0, - create_Imm16_X1, - create_Imm16_X0, - create_Imm16_X1, - create_Imm16_X0, - create_Imm16_X1, - create_Imm16_X0, - create_Imm16_X1, - create_Imm16_X0, - create_Imm16_X1, - create_Imm16_X0, - create_Imm16_X1, - create_Imm16_X0, - create_Imm16_X1 }; static void @@ -1538,6 +1560,83 @@ tilegx_elf_copy_indirect_symbol (struct bfd_link_info *info, _bfd_elf_link_hash_copy_indirect (info, dir, ind); } +static int +tilegx_tls_translate_to_le (int r_type) +{ + switch (r_type) + { + case R_TILEGX_IMM16_X0_HW0_TLS_GD: + case R_TILEGX_IMM16_X0_HW0_TLS_IE: + return R_TILEGX_IMM16_X0_HW0_TLS_LE; + + case R_TILEGX_IMM16_X1_HW0_TLS_GD: + case R_TILEGX_IMM16_X1_HW0_TLS_IE: + return R_TILEGX_IMM16_X1_HW0_TLS_LE; + + case R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: + case R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: + return R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE; + + case R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: + case R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: + return R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE; + + case R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: + case R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: + return R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE; + + case R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: + case R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: + return R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE; + } + return r_type; +} + +static int +tilegx_tls_translate_to_ie (int r_type) +{ + switch (r_type) + { + case R_TILEGX_IMM16_X0_HW0_TLS_GD: + case R_TILEGX_IMM16_X0_HW0_TLS_IE: + return R_TILEGX_IMM16_X0_HW0_TLS_IE; + + case R_TILEGX_IMM16_X1_HW0_TLS_GD: + case R_TILEGX_IMM16_X1_HW0_TLS_IE: + return R_TILEGX_IMM16_X1_HW0_TLS_IE; + + case R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: + case R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: + return R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE; + + case R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: + case R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: + return R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE; + + case R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: + case R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: + return R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE; + + case R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: + case R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: + return R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE; + } + return r_type; +} + +static int +tilegx_elf_tls_transition (struct bfd_link_info *info, int r_type, + int is_local, bfd_boolean disable_le_transition) +{ + if (info->shared) + return r_type; + + if (is_local && !disable_le_transition) + return tilegx_tls_translate_to_le (r_type); + else + return tilegx_tls_translate_to_ie (r_type); +} + /* Look through the relocs for a section during the first phase, and allocate space in the global offset table or procedure linkage table. */ @@ -1553,6 +1652,7 @@ tilegx_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, const Elf_Internal_Rela *rel_end; asection *sreloc; int num_relocs; + bfd_boolean has_tls_gd_or_ie = FALSE, has_tls_add = FALSE; if (info->relocatable) return TRUE; @@ -1571,6 +1671,33 @@ tilegx_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, htab->elf.dynobj = abfd; rel_end = relocs + num_relocs; + + /* Check whether to do optimization to transform TLS GD/IE + referehces to TLS LE. We disable it if we're linking with old + TLS code sequences that do not support such optimization. Old + TLS code sequences have tls_gd_call/tls_ie_load relocations but + no tls_add relocations. */ + for (rel = relocs; rel < rel_end && !has_tls_add; rel++) + { + int r_type = TILEGX_ELF_R_TYPE (rel->r_info); + switch (r_type) + { + case R_TILEGX_TLS_GD_CALL: + case R_TILEGX_TLS_IE_LOAD: + has_tls_gd_or_ie = TRUE; + break; + case R_TILEGX_IMM8_X0_TLS_ADD: + case R_TILEGX_IMM8_Y0_TLS_ADD: + case R_TILEGX_IMM8_X1_TLS_ADD: + case R_TILEGX_IMM8_Y1_TLS_ADD: + has_tls_add = TRUE; + break; + } + } + + sec->sec_flg0 = (has_tls_gd_or_ie && !has_tls_add); + htab->disable_le_transition |= sec->sec_flg0; + for (rel = relocs; rel < rel_end; rel++) { unsigned int r_type; @@ -1598,39 +1725,36 @@ tilegx_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, h = (struct elf_link_hash_entry *) h->root.u.i.link; } + r_type = tilegx_elf_tls_transition (info, r_type, h == NULL, + sec->sec_flg0); switch (r_type) { + case R_TILEGX_IMM16_X0_HW0_TLS_LE: + case R_TILEGX_IMM16_X1_HW0_TLS_LE: + case R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: + case R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: + case R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: + case R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: + if (info->shared) + goto r_tilegx_plt32; + break; + case R_TILEGX_IMM16_X0_HW0_TLS_GD: case R_TILEGX_IMM16_X1_HW0_TLS_GD: - case R_TILEGX_IMM16_X0_HW1_TLS_GD: - case R_TILEGX_IMM16_X1_HW1_TLS_GD: - case R_TILEGX_IMM16_X0_HW2_TLS_GD: - case R_TILEGX_IMM16_X1_HW2_TLS_GD: - case R_TILEGX_IMM16_X0_HW3_TLS_GD: - case R_TILEGX_IMM16_X1_HW3_TLS_GD: case R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: case R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: case R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: case R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: - case R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD: - case R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD: - tls_type = GOT_TLS_GD; + BFD_ASSERT (info->shared); + tls_type = GOT_TLS_GD; goto have_got_reference; case R_TILEGX_IMM16_X0_HW0_TLS_IE: case R_TILEGX_IMM16_X1_HW0_TLS_IE: - case R_TILEGX_IMM16_X0_HW1_TLS_IE: - case R_TILEGX_IMM16_X1_HW1_TLS_IE: - case R_TILEGX_IMM16_X0_HW2_TLS_IE: - case R_TILEGX_IMM16_X1_HW2_TLS_IE: - case R_TILEGX_IMM16_X0_HW3_TLS_IE: - case R_TILEGX_IMM16_X1_HW3_TLS_IE: case R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: case R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: case R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: case R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: - case R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE: - case R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE: tls_type = GOT_TLS_IE; if (info->shared) info->flags |= DF_STATIC_TLS; @@ -1638,18 +1762,10 @@ tilegx_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, case R_TILEGX_IMM16_X0_HW0_GOT: case R_TILEGX_IMM16_X1_HW0_GOT: - case R_TILEGX_IMM16_X0_HW1_GOT: - case R_TILEGX_IMM16_X1_HW1_GOT: - case R_TILEGX_IMM16_X0_HW2_GOT: - case R_TILEGX_IMM16_X1_HW2_GOT: - case R_TILEGX_IMM16_X0_HW3_GOT: - case R_TILEGX_IMM16_X1_HW3_GOT: case R_TILEGX_IMM16_X0_HW0_LAST_GOT: case R_TILEGX_IMM16_X1_HW0_LAST_GOT: case R_TILEGX_IMM16_X0_HW1_LAST_GOT: case R_TILEGX_IMM16_X1_HW1_LAST_GOT: - case R_TILEGX_IMM16_X0_HW2_LAST_GOT: - case R_TILEGX_IMM16_X1_HW2_LAST_GOT: tls_type = GOT_NORMAL; /* Fall Through */ @@ -1720,6 +1836,24 @@ tilegx_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, } break; + case R_TILEGX_TLS_GD_CALL: + if (info->shared) + { + /* These are basically R_TILEGX_JUMPOFF_X1_PLT relocs + against __tls_get_addr. */ + struct bfd_link_hash_entry *bh = NULL; + if (! _bfd_generic_link_add_one_symbol (info, abfd, + "__tls_get_addr", 0, + bfd_und_section_ptr, 0, + NULL, FALSE, FALSE, + &bh)) + return FALSE; + h = (struct elf_link_hash_entry *) bh; + } + else + break; + /* Fall through */ + case R_TILEGX_JUMPOFF_X1_PLT: /* This symbol requires a procedure linkage table entry. We actually build the entry in adjust_dynamic_symbol, @@ -1805,16 +1939,15 @@ tilegx_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, case R_TILEGX_IMM16_X0_HW2_LAST: case R_TILEGX_IMM16_X1_HW2_LAST: if (h != NULL) - { - h->non_got_ref = 1; + h->non_got_ref = 1; - if (!info->shared) - { - /* We may need a .plt entry if the function this reloc - refers to is in a shared lib. */ - h->plt.refcount += 1; - } - } + r_tilegx_plt32: + if (h != NULL && !info->shared) + { + /* We may need a .plt entry if the function this reloc + refers to is in a shared lib. */ + h->plt.refcount += 1; + } /* If we are creating a shared library, and this is a reloc against a global symbol, or a non PC relative reloc @@ -2008,51 +2141,28 @@ tilegx_elf_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, } r_type = TILEGX_ELF_R_TYPE (rel->r_info); - + r_type = tilegx_elf_tls_transition (info, r_type, h != NULL, + sec->sec_flg0); switch (r_type) { case R_TILEGX_IMM16_X0_HW0_GOT: case R_TILEGX_IMM16_X1_HW0_GOT: - case R_TILEGX_IMM16_X0_HW1_GOT: - case R_TILEGX_IMM16_X1_HW1_GOT: - case R_TILEGX_IMM16_X0_HW2_GOT: - case R_TILEGX_IMM16_X1_HW2_GOT: - case R_TILEGX_IMM16_X0_HW3_GOT: - case R_TILEGX_IMM16_X1_HW3_GOT: case R_TILEGX_IMM16_X0_HW0_LAST_GOT: case R_TILEGX_IMM16_X1_HW0_LAST_GOT: case R_TILEGX_IMM16_X0_HW1_LAST_GOT: case R_TILEGX_IMM16_X1_HW1_LAST_GOT: - case R_TILEGX_IMM16_X0_HW2_LAST_GOT: - case R_TILEGX_IMM16_X1_HW2_LAST_GOT: case R_TILEGX_IMM16_X0_HW0_TLS_GD: case R_TILEGX_IMM16_X1_HW0_TLS_GD: - case R_TILEGX_IMM16_X0_HW1_TLS_GD: - case R_TILEGX_IMM16_X1_HW1_TLS_GD: - case R_TILEGX_IMM16_X0_HW2_TLS_GD: - case R_TILEGX_IMM16_X1_HW2_TLS_GD: - case R_TILEGX_IMM16_X0_HW3_TLS_GD: - case R_TILEGX_IMM16_X1_HW3_TLS_GD: case R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: case R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: case R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: case R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: - case R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD: - case R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD: case R_TILEGX_IMM16_X0_HW0_TLS_IE: case R_TILEGX_IMM16_X1_HW0_TLS_IE: - case R_TILEGX_IMM16_X0_HW1_TLS_IE: - case R_TILEGX_IMM16_X1_HW1_TLS_IE: - case R_TILEGX_IMM16_X0_HW2_TLS_IE: - case R_TILEGX_IMM16_X1_HW2_TLS_IE: - case R_TILEGX_IMM16_X0_HW3_TLS_IE: - case R_TILEGX_IMM16_X1_HW3_TLS_IE: case R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: case R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: case R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: case R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: - case R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE: - case R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE: if (h != NULL) { if (h->got.refcount > 0) @@ -2060,7 +2170,8 @@ tilegx_elf_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, } else { - if (local_got_refcounts[r_symndx] > 0) + if (local_got_refcounts && + local_got_refcounts[r_symndx] > 0) local_got_refcounts[r_symndx]--; } break; @@ -2361,7 +2472,15 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) h->needs_plt = 0; } - if (h->got.refcount > 0) + /* If a TLS_IE symbol is now local to the binary, make it a TLS_LE + requiring no TLS entry. */ + if (h->got.refcount > 0 + && !htab->disable_le_transition + && !info->shared + && h->dynindx == -1 + && tilegx_elf_hash_entry(h)->tls_type == GOT_TLS_IE) + h->got.offset = (bfd_vma) -1; + else if (h->got.refcount > 0) { asection *s; bfd_boolean dyn; @@ -2781,6 +2900,125 @@ tpoff (struct bfd_link_info *info, bfd_vma address) return (address - htab->tls_sec->vma); } +/* Copy SIZE bits from FROM to TO at address ADDR. */ + +static void +tilegx_copy_bits (bfd_byte *addr, int from, int to, int size) +{ + int i; + for (i = 0; i < size; i++) + { + int from_byte = (from + i) / 8; + int from_bit = (from + i) % 8; + int to_byte = (to + i) / 8; + int to_bit = (to + i) % 8; + bfd_byte to_mask = 1 << to_bit; + addr[to_byte] = (addr[to_byte] & ~to_mask) + | ((addr[from_byte] >> from_bit << to_bit) & to_mask); + } +} + +/* Replace the MASK bits in ADDR with those in INSN, for the next + TILEGX_BUNDLE_SIZE_IN_BYTES bytes. */ + +static void +tilegx_replace_insn (bfd_byte *addr, const bfd_byte *mask, + const bfd_byte *insn) +{ + int i; + for (i = 0; i < TILEGX_BUNDLE_SIZE_IN_BYTES; i++) + { + addr[i] = (addr[i] & ~mask[i]) | (insn[i] & mask[i]); + } +} + +/* Mask to extract the bits corresponding to an instruction in a + specific pipe of a bundle. */ +static const bfd_byte insn_mask_X1[] = { + 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x3f +}; + +/* Mask to extract the bits corresponding to an instruction in a + specific pipe of a bundle, minus the destination operand and the + first source operand. */ +static const bfd_byte insn_mask_X0_no_dest_no_srca[] = { + 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00 +}; + +static const bfd_byte insn_mask_X1_no_dest_no_srca[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x3f +}; + +static const bfd_byte insn_mask_Y0_no_dest_no_srca[] = { + 0x00, 0xf0, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00 +}; +static const bfd_byte insn_mask_Y1_no_dest_no_srca[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x3c +}; + +/* Mask to extract the bits corresponding to an instruction in a + specific pipe of a bundle, minus the register operands. */ +static const bfd_byte insn_mask_X0_no_operand[] = { + 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00 +}; + +static const bfd_byte insn_mask_X1_no_operand[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f +}; + +static const bfd_byte insn_mask_Y0_no_operand[] = { + 0x00, 0x00, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00 +}; + +static const bfd_byte insn_mask_Y1_no_operand[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3c +}; + +/* Various instructions synthesized to support tls references. */ + +/* ld r0, r0 in the X1 pipe, used for tls ie. */ +static const bfd_byte insn_tls_ie_ld_X1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x6a, 0x28 +}; + +/* ld4s r0, r0 in the X1 pipe, used for tls ie. */ +static const bfd_byte insn_tls_ie_ld4s_X1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x6a, 0x28 +}; + +/* add r0, r0, tp in various pipes, used for tls ie. */ +static const bfd_byte insn_tls_ie_add_X0X1[] = { + 0x00, 0x50, 0x0f, 0x50, 0x00, 0xa8, 0x07, 0x28 +}; +static const bfd_byte insn_tls_ie_add_Y0Y1[] = { + 0x00, 0x50, 0x27, 0x2c, 0x00, 0xa8, 0x13, 0x9a +}; + +/* addx r0, r0, tp in various pipes, used for tls ie. */ +static const bfd_byte insn_tls_ie_addx_X0X1[] = { + 0x00, 0x50, 0x0b, 0x50, 0x00, 0xa8, 0x05, 0x28 +}; +static const bfd_byte insn_tls_ie_addx_Y0Y1[] = { + 0x00, 0x50, 0x03, 0x2c, 0x00, 0xa8, 0x01, 0x9a +}; + +/* move r0, r0 in various pipes, used for tls gd. */ +static const bfd_byte insn_tls_gd_add_X0X1[] = { + 0x00, 0xf0, 0x07, 0x51, 0x00, 0xf8, 0x3b, 0x28 +}; +static const bfd_byte insn_tls_gd_add_Y0Y1[] = { + 0x00, 0xf0, 0x0b, 0x54, 0x00, 0xf8, 0x05, 0xae +}; + +static const bfd_byte *insn_move_X0X1 = insn_tls_gd_add_X0X1; +static const bfd_byte *insn_move_Y0Y1 = insn_tls_gd_add_Y0Y1; + +static const bfd_byte *insn_add_X0X1 = insn_tls_ie_add_X0X1; +static const bfd_byte *insn_add_Y0Y1 = insn_tls_ie_add_Y0Y1; + +static const bfd_byte *insn_addx_X0X1 = insn_tls_ie_addx_X0X1; +static const bfd_byte *insn_addx_Y0Y1 = insn_tls_ie_addx_Y0Y1; + /* Relocate an TILEGX ELF section. The RELOCATE_SECTION function is called by the new ELF backend linker @@ -2845,6 +3083,7 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, for (; rel < relend; rel++) { int r_type, tls_type; + bfd_boolean is_tls_iele, is_tls_le; reloc_howto_type *howto; unsigned long r_symndx; struct elf_link_hash_entry *h; @@ -2927,20 +3166,203 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, switch (r_type) { + case R_TILEGX_TLS_GD_CALL: + case R_TILEGX_IMM8_X0_TLS_GD_ADD: + case R_TILEGX_IMM8_Y0_TLS_GD_ADD: + case R_TILEGX_IMM8_X1_TLS_GD_ADD: + case R_TILEGX_IMM8_Y1_TLS_GD_ADD: + case R_TILEGX_IMM8_X0_TLS_ADD: + case R_TILEGX_IMM8_Y0_TLS_ADD: + case R_TILEGX_IMM8_X1_TLS_ADD: + case R_TILEGX_IMM8_Y1_TLS_ADD: + tls_type = GOT_UNKNOWN; + if (h == NULL && local_got_offsets) + tls_type = + _bfd_tilegx_elf_local_got_tls_type (input_bfd) [r_symndx]; + else if (h != NULL) + tls_type = tilegx_elf_hash_entry(h)->tls_type; + + is_tls_iele = (! info->shared || tls_type == GOT_TLS_IE); + is_tls_le = is_tls_iele && (!input_section->sec_flg0 + && !info->shared + && (h == NULL || h->dynindx == -1)); + + if (r_type == R_TILEGX_TLS_GD_CALL) + { + if (is_tls_le) + { + /* GD -> LE */ + tilegx_replace_insn (contents + rel->r_offset, + insn_mask_X1, insn_move_X0X1); + continue; + } + else if (is_tls_iele) + { + /* GD -> IE */ + if (ABI_64_P (output_bfd)) + tilegx_replace_insn (contents + rel->r_offset, + insn_mask_X1, insn_tls_ie_ld_X1); + else + tilegx_replace_insn (contents + rel->r_offset, + insn_mask_X1, insn_tls_ie_ld4s_X1); + continue; + } + + /* GD -> GD */ + h = (struct elf_link_hash_entry *) + bfd_link_hash_lookup (info->hash, "__tls_get_addr", FALSE, + FALSE, TRUE); + BFD_ASSERT (h != NULL); + r_type = R_TILEGX_JUMPOFF_X1_PLT; + howto = tilegx_elf_howto_table + r_type; + } + else if (r_type == R_TILEGX_IMM8_X0_TLS_ADD + || r_type == R_TILEGX_IMM8_X1_TLS_ADD + || r_type == R_TILEGX_IMM8_Y0_TLS_ADD + || r_type == R_TILEGX_IMM8_Y1_TLS_ADD) + { + bfd_boolean is_pipe0 = + (r_type == R_TILEGX_IMM8_X0_TLS_ADD + || r_type == R_TILEGX_IMM8_Y0_TLS_ADD); + bfd_boolean is_X0X1 = + (r_type == R_TILEGX_IMM8_X0_TLS_ADD + || r_type == R_TILEGX_IMM8_X1_TLS_ADD); + int dest_begin = is_pipe0 ? 0 : 31; + int src_begin; + const bfd_byte *insn; + const bfd_byte *mask; + + if (is_tls_le) + { + /* 1. copy dest operand into the first source operand. + 2. change the opcode to "move". */ + src_begin = is_pipe0 ? 6 : 37; + insn = is_X0X1 ? insn_move_X0X1 : insn_move_Y0Y1; + + switch (r_type) + { + case R_TILEGX_IMM8_X0_TLS_ADD: + mask = insn_mask_X0_no_dest_no_srca; + break; + case R_TILEGX_IMM8_X1_TLS_ADD: + mask = insn_mask_X1_no_dest_no_srca; + break; + case R_TILEGX_IMM8_Y0_TLS_ADD: + mask = insn_mask_Y0_no_dest_no_srca; + break; + case R_TILEGX_IMM8_Y1_TLS_ADD: + mask = insn_mask_Y1_no_dest_no_srca; + break; + } + } + else + { + /* 1. copy dest operand into the second source operand. + 2. change the opcode to "add". */ + src_begin = is_pipe0 ? 12 : 43; + if (ABI_64_P (output_bfd)) + insn = is_X0X1 ? insn_add_X0X1 : insn_add_Y0Y1; + else + insn = is_X0X1 ? insn_addx_X0X1 : insn_addx_Y0Y1; + + switch (r_type) + { + case R_TILEGX_IMM8_X0_TLS_ADD: + mask = insn_mask_X0_no_operand; + break; + case R_TILEGX_IMM8_X1_TLS_ADD: + mask = insn_mask_X1_no_operand; + break; + case R_TILEGX_IMM8_Y0_TLS_ADD: + mask = insn_mask_Y0_no_operand; + break; + case R_TILEGX_IMM8_Y1_TLS_ADD: + mask = insn_mask_Y1_no_operand; + break; + } + } + + tilegx_copy_bits (contents + rel->r_offset, dest_begin, + src_begin, 6); + tilegx_replace_insn (contents + rel->r_offset, mask, insn); + + continue; + } + else + { + const bfd_byte *mask = NULL; + const bfd_byte *add_insn = NULL; + bfd_boolean is_64bit = ABI_64_P (output_bfd); + + switch (r_type) + { + case R_TILEGX_IMM8_X0_TLS_GD_ADD: + add_insn = is_tls_iele + ? (is_64bit ? insn_tls_ie_add_X0X1 : insn_tls_ie_addx_X0X1) + : insn_tls_gd_add_X0X1; + mask = insn_mask_X0_no_dest_no_srca; + break; + case R_TILEGX_IMM8_X1_TLS_GD_ADD: + add_insn = is_tls_iele + ? (is_64bit ? insn_tls_ie_add_X0X1 : insn_tls_ie_addx_X0X1) + : insn_tls_gd_add_X0X1; + mask = insn_mask_X1_no_dest_no_srca; + break; + case R_TILEGX_IMM8_Y0_TLS_GD_ADD: + add_insn = is_tls_iele + ? (is_64bit ? insn_tls_ie_add_Y0Y1 : insn_tls_ie_addx_Y0Y1) + : insn_tls_gd_add_Y0Y1; + mask = insn_mask_Y0_no_dest_no_srca; + break; + case R_TILEGX_IMM8_Y1_TLS_GD_ADD: + add_insn = is_tls_iele + ? (is_64bit ? insn_tls_ie_add_Y0Y1 : insn_tls_ie_addx_Y0Y1) + : insn_tls_gd_add_Y0Y1; + mask = insn_mask_Y1_no_dest_no_srca; + break; + } + + tilegx_replace_insn (contents + rel->r_offset, mask, add_insn); + + continue; + } + break; + case R_TILEGX_TLS_IE_LOAD: + if (!input_section->sec_flg0 + && !info->shared + && (h == NULL || h->dynindx == -1)) + { + /* IE -> LE */ + tilegx_replace_insn (contents + rel->r_offset, + insn_mask_X1_no_dest_no_srca, + insn_move_X0X1); + } + else + { + /* IE -> IE */ + if (ABI_64_P (output_bfd)) + tilegx_replace_insn (contents + rel->r_offset, + insn_mask_X1_no_dest_no_srca, + insn_tls_ie_ld_X1); + else + tilegx_replace_insn (contents + rel->r_offset, + insn_mask_X1_no_dest_no_srca, + insn_tls_ie_ld4s_X1); + } + continue; + break; + default: + break; + } + + switch (r_type) + { case R_TILEGX_IMM16_X0_HW0_GOT: case R_TILEGX_IMM16_X1_HW0_GOT: - case R_TILEGX_IMM16_X0_HW1_GOT: - case R_TILEGX_IMM16_X1_HW1_GOT: - case R_TILEGX_IMM16_X0_HW2_GOT: - case R_TILEGX_IMM16_X1_HW2_GOT: - case R_TILEGX_IMM16_X0_HW3_GOT: - case R_TILEGX_IMM16_X1_HW3_GOT: case R_TILEGX_IMM16_X0_HW0_LAST_GOT: case R_TILEGX_IMM16_X1_HW0_LAST_GOT: case R_TILEGX_IMM16_X0_HW1_LAST_GOT: case R_TILEGX_IMM16_X1_HW1_LAST_GOT: - case R_TILEGX_IMM16_X0_HW2_LAST_GOT: - case R_TILEGX_IMM16_X1_HW2_LAST_GOT: /* Relocation is to the entry for this symbol in the global offset table. */ if (htab->elf.sgot == NULL) @@ -3248,92 +3670,83 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } break; + case R_TILEGX_IMM16_X0_HW0_TLS_LE: + case R_TILEGX_IMM16_X1_HW0_TLS_LE: + case R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: + case R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: + case R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: + case R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: + if (info->shared) + { + Elf_Internal_Rela outrel; + bfd_boolean skip; + + BFD_ASSERT (sreloc != NULL); + skip = FALSE; + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = TRUE; + else if (outrel.r_offset == (bfd_vma) -2) + skip = TRUE; + outrel.r_offset += (input_section->output_section->vma + + input_section->output_offset); + if (skip) + memset (&outrel, 0, sizeof outrel); + else + { + outrel.r_info = TILEGX_ELF_R_INFO (htab, NULL, 0, r_type); + outrel.r_addend = relocation - dtpoff_base (info) + + rel->r_addend; + } + + tilegx_elf_append_rela (output_bfd, sreloc, &outrel); + continue; + } + relocation = tpoff (info, relocation); + break; + case R_TILEGX_IMM16_X0_HW0_TLS_GD: case R_TILEGX_IMM16_X1_HW0_TLS_GD: - case R_TILEGX_IMM16_X0_HW1_TLS_GD: - case R_TILEGX_IMM16_X1_HW1_TLS_GD: - case R_TILEGX_IMM16_X0_HW2_TLS_GD: - case R_TILEGX_IMM16_X1_HW2_TLS_GD: - case R_TILEGX_IMM16_X0_HW3_TLS_GD: - case R_TILEGX_IMM16_X1_HW3_TLS_GD: case R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: case R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: case R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: case R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: - case R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD: - case R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD: - tls_type = GOT_TLS_GD; - goto have_tls_reference; - case R_TILEGX_IMM16_X0_HW0_TLS_IE: case R_TILEGX_IMM16_X1_HW0_TLS_IE: - case R_TILEGX_IMM16_X0_HW1_TLS_IE: - case R_TILEGX_IMM16_X1_HW1_TLS_IE: - case R_TILEGX_IMM16_X0_HW2_TLS_IE: - case R_TILEGX_IMM16_X1_HW2_TLS_IE: - case R_TILEGX_IMM16_X0_HW3_TLS_IE: - case R_TILEGX_IMM16_X1_HW3_TLS_IE: case R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: case R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: case R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: case R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: - case R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE: - case R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE: - tls_type = GOT_TLS_IE; - /* Fall through. */ - - have_tls_reference: + r_type = tilegx_elf_tls_transition (info, r_type, h == NULL, + input_section->sec_flg0); + tls_type = GOT_UNKNOWN; if (h == NULL && local_got_offsets) - tls_type = _bfd_tilegx_elf_local_got_tls_type (input_bfd) [r_symndx]; + tls_type = + _bfd_tilegx_elf_local_got_tls_type (input_bfd) [r_symndx]; else if (h != NULL) - tls_type = tilegx_elf_hash_entry(h)->tls_type; + { + tls_type = tilegx_elf_hash_entry(h)->tls_type; + if (!info->shared && h->dynindx == -1 && tls_type == GOT_TLS_IE) + r_type = (!input_section->sec_flg0 + ? tilegx_tls_translate_to_le (r_type) + : tilegx_tls_translate_to_ie (r_type)); + } if (tls_type == GOT_TLS_IE) - switch (r_type) - { - case R_TILEGX_IMM16_X0_HW0_TLS_GD: - r_type = R_TILEGX_IMM16_X0_HW0_TLS_IE; - break; - case R_TILEGX_IMM16_X1_HW0_TLS_GD: - r_type = R_TILEGX_IMM16_X1_HW0_TLS_IE; - break; - case R_TILEGX_IMM16_X0_HW1_TLS_GD: - r_type = R_TILEGX_IMM16_X0_HW1_TLS_IE; - break; - case R_TILEGX_IMM16_X1_HW1_TLS_GD: - r_type = R_TILEGX_IMM16_X1_HW1_TLS_IE; - break; - case R_TILEGX_IMM16_X0_HW2_TLS_GD: - r_type = R_TILEGX_IMM16_X0_HW2_TLS_IE; - break; - case R_TILEGX_IMM16_X1_HW2_TLS_GD: - r_type = R_TILEGX_IMM16_X1_HW2_TLS_IE; - break; - case R_TILEGX_IMM16_X0_HW3_TLS_GD: - r_type = R_TILEGX_IMM16_X0_HW3_TLS_IE; - break; - case R_TILEGX_IMM16_X1_HW3_TLS_GD: - r_type = R_TILEGX_IMM16_X1_HW3_TLS_IE; - break; - case R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: - r_type = R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE; - break; - case R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: - r_type = R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE; - break; - case R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: - r_type = R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE; - break; - case R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: - r_type = R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE; - break; - case R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD: - r_type = R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE; - break; - case R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD: - r_type = R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE; - break; - } + r_type = tilegx_tls_translate_to_ie (r_type); + + if (r_type == R_TILEGX_IMM16_X0_HW0_TLS_LE + || r_type == R_TILEGX_IMM16_X1_HW0_TLS_LE + || r_type == R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE + || r_type == R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE + || r_type == R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE + || r_type == R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE) + { + relocation = tpoff (info, relocation); + break; + } if (h != NULL) { @@ -3386,18 +3799,10 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, { case R_TILEGX_IMM16_X0_HW0_TLS_IE: case R_TILEGX_IMM16_X1_HW0_TLS_IE: - case R_TILEGX_IMM16_X0_HW1_TLS_IE: - case R_TILEGX_IMM16_X1_HW1_TLS_IE: - case R_TILEGX_IMM16_X0_HW2_TLS_IE: - case R_TILEGX_IMM16_X1_HW2_TLS_IE: - case R_TILEGX_IMM16_X0_HW3_TLS_IE: - case R_TILEGX_IMM16_X1_HW3_TLS_IE: case R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: case R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: case R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: case R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: - case R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE: - case R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE: if (need_relocs) { TILEGX_ELF_PUT_WORD (htab, output_bfd, 0, htab->elf.sgot->contents + off); @@ -3418,18 +3823,10 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, case R_TILEGX_IMM16_X0_HW0_TLS_GD: case R_TILEGX_IMM16_X1_HW0_TLS_GD: - case R_TILEGX_IMM16_X0_HW1_TLS_GD: - case R_TILEGX_IMM16_X1_HW1_TLS_GD: - case R_TILEGX_IMM16_X0_HW2_TLS_GD: - case R_TILEGX_IMM16_X1_HW2_TLS_GD: - case R_TILEGX_IMM16_X0_HW3_TLS_GD: - case R_TILEGX_IMM16_X1_HW3_TLS_GD: case R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: case R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: case R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: case R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: - case R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD: - case R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD: if (need_relocs) { outrel.r_offset = (htab->elf.sgot->output_section->vma + htab->elf.sgot->output_offset + off); diff --git a/bfd/libbfd.h b/bfd/libbfd.h index 62f128f..78860ff 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -2406,6 +2406,12 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_TILEPRO_SHAMT_X1", "BFD_RELOC_TILEPRO_SHAMT_Y0", "BFD_RELOC_TILEPRO_SHAMT_Y1", + "BFD_RELOC_TILEPRO_TLS_GD_CALL", + "BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD", + "BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD", + "BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD", + "BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD", + "BFD_RELOC_TILEPRO_TLS_IE_LOAD", "BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD", "BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD", "BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO", @@ -2425,6 +2431,14 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_TILEPRO_TLS_DTPMOD32", "BFD_RELOC_TILEPRO_TLS_DTPOFF32", "BFD_RELOC_TILEPRO_TLS_TPOFF32", + "BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE", + "BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE", + "BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO", + "BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO", + "BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI", + "BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI", + "BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA", + "BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA", "BFD_RELOC_TILEGX_HW0", "BFD_RELOC_TILEGX_HW1", "BFD_RELOC_TILEGX_HW2", @@ -2482,52 +2496,44 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL", "BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT", "BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT", - "BFD_RELOC_TILEGX_IMM16_X0_HW1_GOT", - "BFD_RELOC_TILEGX_IMM16_X1_HW1_GOT", - "BFD_RELOC_TILEGX_IMM16_X0_HW2_GOT", - "BFD_RELOC_TILEGX_IMM16_X1_HW2_GOT", - "BFD_RELOC_TILEGX_IMM16_X0_HW3_GOT", - "BFD_RELOC_TILEGX_IMM16_X1_HW3_GOT", "BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT", "BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT", "BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT", "BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT", - "BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_GOT", - "BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_GOT", "BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD", "BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD", - "BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_GD", - "BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_GD", - "BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_GD", - "BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_GD", - "BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_GD", - "BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_GD", + "BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE", + "BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE", + "BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE", + "BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE", + "BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE", + "BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE", "BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD", "BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD", "BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD", "BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD", - "BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_GD", - "BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_GD", "BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE", "BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE", - "BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_IE", - "BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_IE", - "BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_IE", - "BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_IE", - "BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_IE", - "BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_IE", "BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE", "BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE", "BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE", "BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE", - "BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_IE", - "BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_IE", "BFD_RELOC_TILEGX_TLS_DTPMOD64", "BFD_RELOC_TILEGX_TLS_DTPOFF64", "BFD_RELOC_TILEGX_TLS_TPOFF64", "BFD_RELOC_TILEGX_TLS_DTPMOD32", "BFD_RELOC_TILEGX_TLS_DTPOFF32", "BFD_RELOC_TILEGX_TLS_TPOFF32", + "BFD_RELOC_TILEGX_TLS_GD_CALL", + "BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD", + "BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD", + "BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD", + "BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD", + "BFD_RELOC_TILEGX_TLS_IE_LOAD", + "BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD", + "BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD", + "BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD", + "BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD", "BFD_RELOC_EPIPHANY_SIMM8", "BFD_RELOC_EPIPHANY_SIMM24", "BFD_RELOC_EPIPHANY_HIGH", diff --git a/bfd/reloc.c b/bfd/reloc.c index ac1ecb5..4e1958c 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -5799,6 +5799,18 @@ ENUMX ENUMX BFD_RELOC_TILEPRO_SHAMT_Y1 ENUMX + BFD_RELOC_TILEPRO_TLS_GD_CALL +ENUMX + BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD +ENUMX + BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD +ENUMX + BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD +ENUMX + BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD +ENUMX + BFD_RELOC_TILEPRO_TLS_IE_LOAD +ENUMX BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD ENUMX BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD @@ -5836,6 +5848,22 @@ ENUMX BFD_RELOC_TILEPRO_TLS_DTPOFF32 ENUMX BFD_RELOC_TILEPRO_TLS_TPOFF32 +ENUMX + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE +ENUMX + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE +ENUMX + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO +ENUMX + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO +ENUMX + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI +ENUMX + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI +ENUMX + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA +ENUMX + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA ENUMDOC Tilera TILEPro Relocations. @@ -5954,18 +5982,6 @@ ENUMX ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW1_GOT -ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW1_GOT -ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW2_GOT -ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW2_GOT -ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW3_GOT -ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW3_GOT -ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT @@ -5974,25 +5990,21 @@ ENUMX ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_GOT -ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_GOT -ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_GD + BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_GD + BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_GD + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_GD + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_GD + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_GD + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD ENUMX @@ -6002,26 +6014,10 @@ ENUMX ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_GD -ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_GD -ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_IE -ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_IE -ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_IE -ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_IE -ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_IE -ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_IE -ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE @@ -6030,10 +6026,6 @@ ENUMX ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE ENUMX - BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_IE -ENUMX - BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_IE -ENUMX BFD_RELOC_TILEGX_TLS_DTPMOD64 ENUMX BFD_RELOC_TILEGX_TLS_DTPOFF64 @@ -6045,6 +6037,26 @@ ENUMX BFD_RELOC_TILEGX_TLS_DTPOFF32 ENUMX BFD_RELOC_TILEGX_TLS_TPOFF32 +ENUMX + BFD_RELOC_TILEGX_TLS_GD_CALL +ENUMX + BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD +ENUMX + BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD +ENUMX + BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD +ENUMX + BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD +ENUMX + BFD_RELOC_TILEGX_TLS_IE_LOAD +ENUMX + BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD +ENUMX + BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD +ENUMX + BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD +ENUMX + BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD ENUMDOC Tilera TILE-Gx Relocations. diff --git a/gas/ChangeLog b/gas/ChangeLog index b419ac0..5e5f50b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,42 @@ 2012-02-25 Walter Lee <walt@tilera.com> + * tc-tilepro.c (O_tls_le): Define operator. + (O_tls_le_lo16): Ditto. + (O_tls_le_hi16): Ditto. + (O_tls_le_ha16): Ditto. + (O_tls_gd_call): Ditto. + (O_tls_gd_add): Ditto. + (O_tls_ie_load): Ditto. + (md_begin): Delete old operators; handle new operators. + (emit_tilepro_instruction): Ditto. + (md_apply_fix): Ditto. + * tc-tilegx.c (O_hw1_got): Delete operator. + (O_hw2_got): Ditto. + (O_hw3_got): Ditto. + (O_hw2_last_got): Ditto. + (O_hw1_tls_gd): Ditto. + (O_hw2_tls_gd): Ditto. + (O_hw3_tls_gd): Ditto. + (O_hw2_last_tls_gd): Ditto. + (O_hw1_tls_ie): Ditto. + (O_hw2_tls_ie): Ditto. + (O_hw3_tls_ie): Ditto. + (O_hw2_last_tls_ie): Ditto. + (O_hw0_tls_le): Define operator. + (O_hw0_last_tls_le): Ditto. + (O_hw1_last_tls_le): Ditto. + (O_tls_gd_call): Ditto. + (O_tls_gd_add): Ditto. + (O_tls_ie_load): Ditto. + (O_tls_add): Ditto. + (md_begin): Delete old operators; handle new operators. + (emit_tilegx_instruction): Ditto. + (md_apply_fix): Ditto. + * doc/c-tilegx.texi: Delete old operators; document new operators. + * doc/c-tilepro.texi: Ditto. + +2012-02-25 Walter Lee <walt@tilera.com> + * tc-tilepro.c (apply_special_operator): delete cases for got and tls operators. (md_apply_fix): Ditto. diff --git a/gas/config/tc-tilegx.c b/gas/config/tc-tilegx.c index 49bf093..eda36c0 100644 --- a/gas/config/tc-tilegx.c +++ b/gas/config/tc-tilegx.c @@ -157,27 +157,22 @@ md_show_usage (FILE *stream) #define O_hw1_last O_md6 #define O_hw2_last O_md7 #define O_hw0_got O_md8 -#define O_hw1_got O_md9 -#define O_hw2_got O_md10 -#define O_hw3_got O_md11 -#define O_hw0_last_got O_md12 -#define O_hw1_last_got O_md13 -#define O_hw2_last_got O_md14 -#define O_plt O_md15 -#define O_hw0_tls_gd O_md16 -#define O_hw1_tls_gd O_md17 -#define O_hw2_tls_gd O_md18 -#define O_hw3_tls_gd O_md19 -#define O_hw0_last_tls_gd O_md20 -#define O_hw1_last_tls_gd O_md21 -#define O_hw2_last_tls_gd O_md22 -#define O_hw0_tls_ie O_md23 -#define O_hw1_tls_ie O_md24 -#define O_hw2_tls_ie O_md25 -#define O_hw3_tls_ie O_md26 -#define O_hw0_last_tls_ie O_md27 -#define O_hw1_last_tls_ie O_md28 -#define O_hw2_last_tls_ie O_md29 +#define O_hw0_last_got O_md9 +#define O_hw1_last_got O_md10 +#define O_plt O_md11 +#define O_hw0_tls_gd O_md12 +#define O_hw0_last_tls_gd O_md13 +#define O_hw1_last_tls_gd O_md14 +#define O_hw0_tls_ie O_md15 +#define O_hw0_last_tls_ie O_md16 +#define O_hw1_last_tls_ie O_md17 +#define O_hw0_tls_le O_md18 +#define O_hw0_last_tls_le O_md19 +#define O_hw1_last_tls_le O_md20 +#define O_tls_gd_call O_md21 +#define O_tls_gd_add O_md22 +#define O_tls_ie_load O_md23 +#define O_tls_add O_md24 static struct hash_control *special_operator_hash; @@ -289,27 +284,22 @@ md_begin (void) /* hw3_last is a convenience alias for the equivalent hw3. */ hash_insert (special_operator_hash, "hw3_last", (void*)O_hw3); INSERT_SPECIAL_OP (hw0_got); - INSERT_SPECIAL_OP (hw1_got); - INSERT_SPECIAL_OP (hw2_got); - INSERT_SPECIAL_OP (hw3_got); INSERT_SPECIAL_OP (hw0_last_got); INSERT_SPECIAL_OP (hw1_last_got); - INSERT_SPECIAL_OP (hw2_last_got); INSERT_SPECIAL_OP(plt); INSERT_SPECIAL_OP (hw0_tls_gd); - INSERT_SPECIAL_OP (hw1_tls_gd); - INSERT_SPECIAL_OP (hw2_tls_gd); - INSERT_SPECIAL_OP (hw3_tls_gd); INSERT_SPECIAL_OP (hw0_last_tls_gd); INSERT_SPECIAL_OP (hw1_last_tls_gd); - INSERT_SPECIAL_OP (hw2_last_tls_gd); INSERT_SPECIAL_OP (hw0_tls_ie); - INSERT_SPECIAL_OP (hw1_tls_ie); - INSERT_SPECIAL_OP (hw2_tls_ie); - INSERT_SPECIAL_OP (hw3_tls_ie); INSERT_SPECIAL_OP (hw0_last_tls_ie); INSERT_SPECIAL_OP (hw1_last_tls_ie); - INSERT_SPECIAL_OP (hw2_last_tls_ie); + INSERT_SPECIAL_OP (hw0_tls_le); + INSERT_SPECIAL_OP (hw0_last_tls_le); + INSERT_SPECIAL_OP (hw1_last_tls_le); + INSERT_SPECIAL_OP (tls_gd_call); + INSERT_SPECIAL_OP (tls_gd_add); + INSERT_SPECIAL_OP (tls_ie_load); + INSERT_SPECIAL_OP (tls_add); #undef INSERT_SPECIAL_OP /* Initialize op_hash hash table. */ @@ -566,21 +556,6 @@ emit_tilegx_instruction (tilegx_bundle_bits bits, require_symbol = 1; break; - case O_hw1_got: - HANDLE_OP16 (HW1_GOT); - require_symbol = 1; - break; - - case O_hw2_got: - HANDLE_OP16 (HW2_GOT); - require_symbol = 1; - break; - - case O_hw3_got: - HANDLE_OP16 (HW3_GOT); - require_symbol = 1; - break; - case O_hw0_last_got: HANDLE_OP16 (HW0_LAST_GOT); require_symbol = 1; @@ -591,88 +566,132 @@ emit_tilegx_instruction (tilegx_bundle_bits bits, require_symbol = 1; break; - case O_hw2_last_got: - HANDLE_OP16 (HW2_LAST_GOT); - require_symbol = 1; - break; - case O_hw0_tls_gd: HANDLE_OP16 (HW0_TLS_GD); require_symbol = 1; break; - case O_hw1_tls_gd: - HANDLE_OP16 (HW1_TLS_GD); + case O_hw0_last_tls_gd: + HANDLE_OP16 (HW0_LAST_TLS_GD); require_symbol = 1; break; - case O_hw2_tls_gd: - HANDLE_OP16 (HW2_TLS_GD); + case O_hw1_last_tls_gd: + HANDLE_OP16 (HW1_LAST_TLS_GD); require_symbol = 1; break; - case O_hw3_tls_gd: - HANDLE_OP16 (HW3_TLS_GD); + case O_hw0_tls_ie: + HANDLE_OP16 (HW0_TLS_IE); require_symbol = 1; break; - case O_hw0_last_tls_gd: - HANDLE_OP16 (HW0_LAST_TLS_GD); + case O_hw0_last_tls_ie: + HANDLE_OP16 (HW0_LAST_TLS_IE); require_symbol = 1; break; - case O_hw1_last_tls_gd: - HANDLE_OP16 (HW1_LAST_TLS_GD); + case O_hw1_last_tls_ie: + HANDLE_OP16 (HW1_LAST_TLS_IE); require_symbol = 1; break; - case O_hw2_last_tls_gd: - HANDLE_OP16 (HW2_LAST_TLS_GD); + case O_hw0_tls_le: + HANDLE_OP16 (HW0_TLS_LE); require_symbol = 1; break; - case O_hw0_tls_ie: - HANDLE_OP16 (HW0_TLS_IE); + case O_hw0_last_tls_le: + HANDLE_OP16 (HW0_LAST_TLS_LE); require_symbol = 1; break; - case O_hw1_tls_ie: - HANDLE_OP16 (HW1_TLS_IE); + case O_hw1_last_tls_le: + HANDLE_OP16 (HW1_LAST_TLS_LE); require_symbol = 1; break; - case O_hw2_tls_ie: - HANDLE_OP16 (HW2_TLS_IE); - require_symbol = 1; - break; +#undef HANDLE_OP16 - case O_hw3_tls_ie: - HANDLE_OP16 (HW3_TLS_IE); + case O_plt: + switch (reloc) + { + case BFD_RELOC_TILEGX_JUMPOFF_X1: + reloc = BFD_RELOC_TILEGX_JUMPOFF_X1_PLT; + break; + default: + die = 1; + break; + } + use_subexp = 1; require_symbol = 1; break; - case O_hw0_last_tls_ie: - HANDLE_OP16 (HW0_LAST_TLS_IE); + case O_tls_gd_call: + switch (reloc) + { + case BFD_RELOC_TILEGX_JUMPOFF_X1: + reloc = BFD_RELOC_TILEGX_TLS_GD_CALL; + break; + default: + die = 1; + break; + } + use_subexp = 1; require_symbol = 1; break; - case O_hw1_last_tls_ie: - HANDLE_OP16 (HW1_LAST_TLS_IE); + case O_tls_gd_add: + switch (reloc) + { + case BFD_RELOC_TILEGX_IMM8_X0: + reloc = BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD; + break; + case BFD_RELOC_TILEGX_IMM8_X1: + reloc = BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD; + break; + case BFD_RELOC_TILEGX_IMM8_Y0: + reloc = BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD; + break; + case BFD_RELOC_TILEGX_IMM8_Y1: + reloc = BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD; + break; + default: + die = 1; + break; + } + use_subexp = 1; require_symbol = 1; break; - case O_hw2_last_tls_ie: - HANDLE_OP16 (HW2_LAST_TLS_IE); + case O_tls_ie_load: + switch (reloc) + { + case BFD_RELOC_TILEGX_IMM8_X1: + reloc = BFD_RELOC_TILEGX_TLS_IE_LOAD; + break; + default: + die = 1; + break; + } + use_subexp = 1; require_symbol = 1; break; -#undef HANDLE_OP16 - - case O_plt: + case O_tls_add: switch (reloc) { - case BFD_RELOC_TILEGX_JUMPOFF_X1: - reloc = BFD_RELOC_TILEGX_JUMPOFF_X1_PLT; + case BFD_RELOC_TILEGX_IMM8_X0: + reloc = BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD; + break; + case BFD_RELOC_TILEGX_IMM8_X1: + reloc = BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD; + break; + case BFD_RELOC_TILEGX_IMM8_Y0: + reloc = BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD; + break; + case BFD_RELOC_TILEGX_IMM8_Y1: + reloc = BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD; break; default: die = 1; @@ -1486,34 +1505,34 @@ md_apply_fix (fixS *fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED) #ifdef OBJ_ELF switch (fixP->fx_r_type) { + case BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD: + case BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD: + case BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD: + case BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD: + case BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD: + case BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD: + case BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD: + case BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD: case BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD: case BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE: case BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: case BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X0_HW1_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X1_HW1_TLS_IE: case BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: case BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: + case BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE: + case BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE: + case BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: + case BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: case BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: case BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X0_HW2_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X1_HW2_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_GD: - case BFD_RELOC_TILEGX_IMM16_X0_HW3_TLS_IE: - case BFD_RELOC_TILEGX_IMM16_X1_HW3_TLS_IE: + case BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE: + case BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE: + case BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: + case BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: + case BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: + case BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: + case BFD_RELOC_TILEGX_TLS_GD_CALL: + case BFD_RELOC_TILEGX_TLS_IE_LOAD: case BFD_RELOC_TILEGX_TLS_DTPMOD64: case BFD_RELOC_TILEGX_TLS_DTPOFF64: case BFD_RELOC_TILEGX_TLS_TPOFF64: diff --git a/gas/config/tc-tilepro.c b/gas/config/tc-tilepro.c index 581028d..0b378c2 100644 --- a/gas/config/tc-tilepro.c +++ b/gas/config/tc-tilepro.c @@ -103,14 +103,14 @@ md_show_usage (FILE *stream) /* Extra expression types. */ -#define O_lo16 O_md1 -#define O_hi16 O_md2 -#define O_ha16 O_md3 -#define O_got O_md4 +#define O_lo16 O_md1 +#define O_hi16 O_md2 +#define O_ha16 O_md3 +#define O_got O_md4 #define O_got_lo16 O_md5 #define O_got_hi16 O_md6 #define O_got_ha16 O_md7 -#define O_plt O_md8 +#define O_plt O_md8 #define O_tls_gd O_md9 #define O_tls_gd_lo16 O_md10 #define O_tls_gd_hi16 O_md11 @@ -119,6 +119,13 @@ md_show_usage (FILE *stream) #define O_tls_ie_lo16 O_md14 #define O_tls_ie_hi16 O_md15 #define O_tls_ie_ha16 O_md16 +#define O_tls_le O_md17 +#define O_tls_le_lo16 O_md18 +#define O_tls_le_hi16 O_md19 +#define O_tls_le_ha16 O_md20 +#define O_tls_gd_call O_md21 +#define O_tls_gd_add O_md22 +#define O_tls_ie_load O_md23 static struct hash_control *special_operator_hash; @@ -230,6 +237,13 @@ md_begin (void) INSERT_SPECIAL_OP(tls_ie_lo16); INSERT_SPECIAL_OP(tls_ie_hi16); INSERT_SPECIAL_OP(tls_ie_ha16); + INSERT_SPECIAL_OP(tls_le); + INSERT_SPECIAL_OP(tls_le_lo16); + INSERT_SPECIAL_OP(tls_le_hi16); + INSERT_SPECIAL_OP(tls_le_ha16); + INSERT_SPECIAL_OP(tls_gd_call); + INSERT_SPECIAL_OP(tls_gd_add); + INSERT_SPECIAL_OP(tls_ie_load); #undef INSERT_SPECIAL_OP /* Initialize op_hash hash table. */ @@ -516,6 +530,26 @@ emit_tilepro_instruction (tilepro_bundle_bits bits, require_symbol = 1; break; + case O_tls_le: + HANDLE_OP16 (TLS_LE); + require_symbol = 1; + break; + + case O_tls_le_lo16: + HANDLE_OP16 (TLS_LE_LO); + require_symbol = 1; + break; + + case O_tls_le_hi16: + HANDLE_OP16 (TLS_LE_HI); + require_symbol = 1; + break; + + case O_tls_le_ha16: + HANDLE_OP16 (TLS_LE_HA); + require_symbol = 1; + break; + #undef HANDLE_OP16 case O_plt: @@ -532,6 +566,57 @@ emit_tilepro_instruction (tilepro_bundle_bits bits, require_symbol = 1; break; + case O_tls_gd_call: + switch (reloc) + { + case BFD_RELOC_TILEPRO_JOFFLONG_X1: + reloc = BFD_RELOC_TILEPRO_TLS_GD_CALL; + break; + default: + die = 1; + break; + } + use_subexp = 1; + require_symbol = 1; + break; + + case O_tls_gd_add: + switch (reloc) + { + case BFD_RELOC_TILEPRO_IMM8_X0: + reloc = BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD; + break; + case BFD_RELOC_TILEPRO_IMM8_X1: + reloc = BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD; + break; + case BFD_RELOC_TILEPRO_IMM8_Y0: + reloc = BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD; + break; + case BFD_RELOC_TILEPRO_IMM8_Y1: + reloc = BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD; + break; + default: + die = 1; + break; + } + use_subexp = 1; + require_symbol = 1; + break; + + case O_tls_ie_load: + switch (reloc) + { + case BFD_RELOC_TILEPRO_IMM8_X1: + reloc = BFD_RELOC_TILEPRO_TLS_IE_LOAD; + break; + default: + die = 1; + break; + } + use_subexp = 1; + require_symbol = 1; + break; + default: /* Do nothing. */ break; @@ -1298,22 +1383,36 @@ md_apply_fix (fixS *fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED) #ifdef OBJ_ELF switch (fixP->fx_r_type) { + case BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD: + case BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD: + case BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD: + case BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD: case BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD: case BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD: - case BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE: - case BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE: case BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO: case BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO: - case BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO: - case BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO: case BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI: case BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI: - case BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI: - case BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI: case BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA: case BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA: + case BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE: + case BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE: + case BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO: + case BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO: + case BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI: + case BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI: case BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA: case BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA: + case BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE: + case BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE: + case BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO: + case BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO: + case BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI: + case BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI: + case BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA: + case BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA: + case BFD_RELOC_TILEPRO_TLS_GD_CALL: + case BFD_RELOC_TILEPRO_TLS_IE_LOAD: case BFD_RELOC_TILEPRO_TLS_DTPMOD32: case BFD_RELOC_TILEPRO_TLS_DTPOFF32: case BFD_RELOC_TILEPRO_TLS_TPOFF32: diff --git a/gas/doc/c-tilegx.texi b/gas/doc/c-tilegx.texi index c2f5bc1..268cc4f 100644 --- a/gas/doc/c-tilegx.texi +++ b/gas/doc/c-tilegx.texi @@ -218,21 +218,6 @@ shl16insli r0, r0, hw0(sym) This modifier is used to load bits 0-15 of the symbol's offset in the GOT entry corresponding to the symbol. -@item hw1_got - -This modifier is used to load bits 16-31 of the symbol's offset in the -GOT entry corresponding to the symbol. - -@item hw2_got - -This modifier is used to load bits 32-47 of the symbol's offset in the -GOT entry corresponding to the symbol. - -@item hw3_got - -This modifier is used to load bits 48-63 of the symbol's offset in the -GOT entry corresponding to the symbol. - @item hw0_last_got This modifier yields the same value as @code{hw0_got}, but it also @@ -240,13 +225,9 @@ checks that the value does not overflow. @item hw1_last_got -This modifier yields the same value as @code{hw1_got}, but it also -checks that the value does not overflow. - -@item hw2_last_got - -This modifier yields the same value as @code{hw2_got}, but it also -checks that the value does not overflow. +This modifier is used to load bits 16-31 of the symbol's offset in the +GOT entry corresponding to the symbol, and it also checks that the +value does not overflow. @item plt @@ -267,24 +248,6 @@ This modifier is used to load bits 0-15 of the offset of the GOT entry of the symbol's TLS descriptor, to be used for general-dynamic TLS accesses. -@item hw1_tls_gd - -This modifier is used to load bits 16-31 of the offset of the GOT -entry of the symbol's TLS descriptor, to be used for general-dynamic -TLS accesses. - -@item hw2_tls_gd - -This modifier is used to load bits 32-47 of the offset of the GOT -entry of the symbol's TLS descriptor, to be used for general-dynamic -TLS accesses. - -@item hw3_tls_gd - -This modifier is used to load bits 48-63 of the offset of the GOT -entry of the symbol's TLS descriptor, to be used for general-dynamic -TLS accesses. - @item hw0_last_tls_gd This modifier yields the same value as @code{hw0_tls_gd}, but it also @@ -292,13 +255,9 @@ checks that the value does not overflow. @item hw1_last_tls_gd -This modifier yields the same value as @code{hw1_tls_gd}, but it also -checks that the value does not overflow. - -@item hw2_last_tls_gd - -This modifier yields the same value as @code{hw2_tls_gd}, but it also -checks that the value does not overflow. +This modifier is used to load bits 16-31 of the offset of the GOT +entry of the symbol's TLS descriptor, to be used for general-dynamic +TLS accesses. It also checks that the value does not overflow. @item hw0_tls_ie @@ -306,38 +265,48 @@ This modifier is used to load bits 0-15 of the offset of the GOT entry containing the offset of the symbol's address from the TCB, to be used for initial-exec TLS accesses. -@item hw1_tls_ie +@item hw0_last_tls_ie + +This modifier yields the same value as @code{hw0_tls_ie}, but it also +checks that the value does not overflow. + +@item hw1_last_tls_ie This modifier is used to load bits 16-31 of the offset of the GOT entry containing the offset of the symbol's address from the TCB, to -be used for initial-exec TLS accesses. +be used for initial-exec TLS accesses. It also checks that the value +does not overflow. -@item hw2_tls_ie +@item hw0_tls_le -This modifier is used to load bits 32-47 of the offset of the GOT entry -containing the offset of the symbol's address from the TCB, to be used -for initial-exec TLS accesses. +This modifier is used to load bits 0-15 of the offset of the symbol's +address from the TCB, to be used for local-exec TLS accesses. -@item hw3_tls_ie +@item hw0_last_tls_le -This modifier is used to load bits 48-63 of the offset of the GOT -entry containing the offset of the symbol's address from the TCB, to -be used for initial-exec TLS accesses. +This modifier yields the same value as @code{hw0_tls_le}, but it also +checks that the value does not overflow. -@item hw0_last_tls_ie +@item hw1_last_tls_le -This modifier yields the same value as @code{hw0_tls_ie}, but it also -checks that the value does not overflow. +This modifier is used to load bits 16-31 of the offset of the symbol's +address from the TCB, to be used for local-exec TLS accesses. It +also checks that the value does not overflow. -@item hw1_last_tls_ie +@item tls_gd_call -This modifier yields the same value as @code{hw1_tls_ie}, but it also -checks that the value does not overflow. +This modifier is used to tag an instrution as the ``call'' part of a +calling sequence for a TLS GD reference of its operand. -@item hw2_last_tls_ie +@item tls_gd_add -This modifier yields the same value as @code{hw2_tls_ie}, but it also -checks that the value does not overflow. +This modifier is used to tag an instruction as the ``add'' part of a +calling sequence for a TLS GD reference of its operand. + +@item tls_ie_load + +This modifier is used to tag an instruction as the ``load'' part of a +calling sequence for a TLS IE reference of its operand. @end table diff --git a/gas/doc/c-tilepro.texi b/gas/doc/c-tilepro.texi index bbccdfb..5d80c4f 100644 --- a/gas/doc/c-tilepro.texi +++ b/gas/doc/c-tilepro.texi @@ -261,6 +261,41 @@ to be used for initial-exec TLS accesses. This modifier is like @code{tls_ie_hi16}, but it adds one to the value if @code{tls_ie_lo16} of the input value is negative. +@item tls_le + +This modifier is used to load the offset of the symbol's address from +the TCB, to be used for local-exec TLS accesses. + +@item tls_le_lo16 + +This modifier is used to load the low 16 bits of the offset of the +symbol's address from the TCB, to be used for local-exec TLS accesses. + +@item tls_le_hi16 + +This modifier is used to load the high 16 bits of the offset of the +symbol's address from the TCB, to be used for local-exec TLS accesses. + +@item tls_le_ha16 + +This modifier is like @code{tls_le_hi16}, but it adds one to the value +if @code{tls_le_lo16} of the input value is negative. + +@item tls_gd_call + +This modifier is used to tag an instrution as the ``call'' part of a +calling sequence for a TLS GD reference of its operand. + +@item tls_gd_add + +This modifier is used to tag an instruction as the ``add'' part of a +calling sequence for a TLS GD reference of its operand. + +@item tls_ie_load + +This modifier is used to tag an instruction as the ``load'' part of a +calling sequence for a TLS IE reference of its operand. + @end table @node TILEPro Directives diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index 86179bf..1535dfb 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,60 @@ +2012-02-25 Walter Lee <walt@tilera.com> + + * tilegx.h (R_TILEGX_IMM16_X0_HW1_GOT): Delete. + (R_TILEGX_IMM16_X1_HW1_GOT): Ditto. + (R_TILEGX_IMM16_X0_HW2_GOT): Ditto. + (R_TILEGX_IMM16_X1_HW2_GOT): Ditto. + (R_TILEGX_IMM16_X0_HW3_GOT): Ditto. + (R_TILEGX_IMM16_X1_HW3_GOT): Ditto. + (R_TILEGX_IMM16_X0_HW2_LAST_GOT): Ditto. + (R_TILEGX_IMM16_X1_HW2_LAST_GOT): Ditto. + (R_TILEGX_IMM16_X0_HW1_TLS_GD): Ditto. + (R_TILEGX_IMM16_X1_HW1_TLS_GD): Ditto. + (R_TILEGX_IMM16_X0_HW2_TLS_GD): Ditto. + (R_TILEGX_IMM16_X1_HW2_TLS_GD): Ditto. + (R_TILEGX_IMM16_X0_HW3_TLS_GD): Ditto. + (R_TILEGX_IMM16_X1_HW3_TLS_GD): Ditto. + (R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD): Ditto. + (R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD): Ditto. + (R_TILEGX_IMM16_X0_HW1_TLS_IE): Ditto. + (R_TILEGX_IMM16_X1_HW1_TLS_IE): Ditto. + (R_TILEGX_IMM16_X0_HW2_TLS_IE): Ditto. + (R_TILEGX_IMM16_X1_HW2_TLS_IE): Ditto. + (R_TILEGX_IMM16_X0_HW3_TLS_IE): Ditto. + (R_TILEGX_IMM16_X1_HW3_TLS_IE): Ditto. + (R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE): Ditto. + (R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE): Ditto. + (R_TILEGX_IMM16_X0_HW0_TLS_LE): New relocation. + (R_TILEGX_IMM16_X1_HW0_TLS_LE): Ditto. + (R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE): Ditto. + (R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE): Ditto. + (R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE): Ditto. + (R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE): Ditto. + (R_TILEGX_TLS_GD_CALL): Ditto. + (R_TILEGX_IMM8_X0_TLS_GD_ADD): Ditto. + (R_TILEGX_IMM8_X1_TLS_GD_ADD): Ditto. + (R_TILEGX_IMM8_Y0_TLS_GD_ADD): Ditto. + (R_TILEGX_IMM8_Y1_TLS_GD_ADD): Ditto. + (R_TILEGX_TLS_IE_LOAD): Ditto. + (R_TILEGX_IMM8_X0_TLS_ADD): Ditto. + (R_TILEGX_IMM8_X1_TLS_ADD): Ditto. + (R_TILEGX_IMM8_Y0_TLS_ADD): Ditto. + (R_TILEGX_IMM8_Y1_TLS_ADD): Ditto. + * tilepro.h (R_TILEPRO_TLS_GD_CALL): New relocation. + (R_TILEPRO_IMM8_X0_TLS_GD_ADD): Ditto. + (R_TILEPRO_IMM8_X1_TLS_GD_ADD): Ditto. + (R_TILEPRO_IMM8_Y0_TLS_GD_ADD): Ditto. + (R_TILEPRO_IMM8_Y1_TLS_GD_ADD): Ditto. + (R_TILEPRO_TLS_IE_LOAD): Ditto. + (R_TILEPRO_IMM16_X0_TLS_LE): Ditto. + (R_TILEPRO_IMM16_X1_TLS_LE): Ditto. + (R_TILEPRO_IMM16_X0_TLS_LE_LO): Ditto. + (R_TILEPRO_IMM16_X1_TLS_LE_LO): Ditto. + (R_TILEPRO_IMM16_X0_TLS_LE_HI): Ditto. + (R_TILEPRO_IMM16_X1_TLS_LE_HI): Ditto. + (R_TILEPRO_IMM16_X0_TLS_LE_HA): Ditto. + (R_TILEPRO_IMM16_X1_TLS_LE_HA): Ditto. + 2011-12-22 DJ Delorie <dj@redhat.com> * rl78.h (R_RL78_RH_RELAX, R_RL78_RH_SFR, R_RL78_RH_SADDR): New. diff --git a/include/elf/tilegx.h b/include/elf/tilegx.h index d276f2e..004ce28 100644 --- a/include/elf/tilegx.h +++ b/include/elf/tilegx.h @@ -104,48 +104,37 @@ START_RELOC_NUMBERS (elf_tilegx_reloc_type) RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_GOT, 64) RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_GOT, 65) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_GOT, 66) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_GOT, 67) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_GOT, 68) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_GOT, 69) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW3_GOT, 70) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW3_GOT, 71) + /* Relocs 66-71 are currently not defined. */ + RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_GOT, 72) RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_GOT, 73) RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_GOT, 74) RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_GOT, 75) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_LAST_GOT, 76) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_LAST_GOT, 77) + /* Relocs 76-77 are currently not defined. */ RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_TLS_GD, 78) RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_TLS_GD, 79) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_TLS_GD, 80) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_TLS_GD, 81) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_TLS_GD, 82) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_TLS_GD, 83) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW3_TLS_GD, 84) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW3_TLS_GD, 85) + RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_TLS_LE, 80) + RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_TLS_LE, 81) + RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE, 82) + RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE, 83) + RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE, 84) + RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE, 85) RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD, 86) RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD, 87) RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD, 88) RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD, 89) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_LAST_TLS_GD, 90) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_LAST_TLS_GD, 91) + /* Relocs 90-91 are currently not defined. */ RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_TLS_IE, 92) RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_TLS_IE, 93) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_TLS_IE, 94) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_TLS_IE, 95) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_TLS_IE, 96) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_TLS_IE, 97) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW3_TLS_IE, 98) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW3_TLS_IE, 99) + /* Relocs 94-99 are currently not defined. */ + RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE, 100) RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE, 101) RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE, 102) RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE, 103) - RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_LAST_TLS_IE, 104) - RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_LAST_TLS_IE, 105) + /* Relocs 104-105 are currently not defined. */ RELOC_NUMBER (R_TILEGX_TLS_DTPMOD64, 106) RELOC_NUMBER (R_TILEGX_TLS_DTPOFF64, 107) @@ -154,6 +143,17 @@ START_RELOC_NUMBERS (elf_tilegx_reloc_type) RELOC_NUMBER (R_TILEGX_TLS_DTPOFF32, 110) RELOC_NUMBER (R_TILEGX_TLS_TPOFF32, 111) + RELOC_NUMBER (R_TILEGX_TLS_GD_CALL, 112) + RELOC_NUMBER (R_TILEGX_IMM8_X0_TLS_GD_ADD, 113) + RELOC_NUMBER (R_TILEGX_IMM8_X1_TLS_GD_ADD, 114) + RELOC_NUMBER (R_TILEGX_IMM8_Y0_TLS_GD_ADD, 115) + RELOC_NUMBER (R_TILEGX_IMM8_Y1_TLS_GD_ADD, 116) + RELOC_NUMBER (R_TILEGX_TLS_IE_LOAD, 117) + RELOC_NUMBER (R_TILEGX_IMM8_X0_TLS_ADD, 118) + RELOC_NUMBER (R_TILEGX_IMM8_X1_TLS_ADD, 119) + RELOC_NUMBER (R_TILEGX_IMM8_Y0_TLS_ADD, 120) + RELOC_NUMBER (R_TILEGX_IMM8_Y1_TLS_ADD, 121) + /* These are GNU extensions to enable C++ vtable garbage collection. */ RELOC_NUMBER (R_TILEGX_GNU_VTINHERIT, 128) RELOC_NUMBER (R_TILEGX_GNU_VTENTRY, 129) diff --git a/include/elf/tilepro.h b/include/elf/tilepro.h index 899697f..0079a2f 100644 --- a/include/elf/tilepro.h +++ b/include/elf/tilepro.h @@ -96,7 +96,14 @@ START_RELOC_NUMBERS (elf_tilepro_reloc_type) RELOC_NUMBER (R_TILEPRO_DEST_IMM8_X1, 55) - /* Relocs 56-65 are currently not defined. */ + /* Relocs 56-59 are currently not defined. */ + + RELOC_NUMBER (R_TILEPRO_TLS_GD_CALL, 60) + RELOC_NUMBER (R_TILEPRO_IMM8_X0_TLS_GD_ADD, 61) + RELOC_NUMBER (R_TILEPRO_IMM8_X1_TLS_GD_ADD, 62) + RELOC_NUMBER (R_TILEPRO_IMM8_Y0_TLS_GD_ADD, 63) + RELOC_NUMBER (R_TILEPRO_IMM8_Y1_TLS_GD_ADD, 64) + RELOC_NUMBER (R_TILEPRO_TLS_IE_LOAD, 65) RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_GD, 66) RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_GD, 67) @@ -120,6 +127,15 @@ START_RELOC_NUMBERS (elf_tilepro_reloc_type) RELOC_NUMBER (R_TILEPRO_TLS_DTPOFF32, 83) RELOC_NUMBER (R_TILEPRO_TLS_TPOFF32, 84) + RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_LE, 85) + RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_LE, 86) + RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_LE_LO, 87) + RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_LE_LO, 88) + RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_LE_HI, 89) + RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_LE_HI, 90) + RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_LE_HA, 91) + RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_LE_HA, 92) + /* These are GNU extensions to enable C++ vtable garbage collection. */ RELOC_NUMBER (R_TILEPRO_GNU_VTINHERIT, 128) RELOC_NUMBER (R_TILEPRO_GNU_VTENTRY, 129) diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index 7e2c14e..5241b37 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,10 @@ +2012-02-25 Walter Lee <walt@tilera.com> + + * tilegx.h (tilegx_mnemonic): Add TILEGX_OPC_LD4S_TLS, + TILEGX_OPC_LD_TLS. + * tilepro.h (tilepro_mnemonic): Add TILEPRO_OPC_LW_TLS, + TILEPRO_OPC_LW_TLS_SN. + 2012-02-08 H.J. Lu <hongjiu.lu@intel.com> * i386.h (XACQUIRE_PREFIX_OPCODE): New. diff --git a/include/opcode/tilegx.h b/include/opcode/tilegx.h index 95a9ca7..c11fc16 100644 --- a/include/opcode/tilegx.h +++ b/include/opcode/tilegx.h @@ -34,6 +34,8 @@ typedef enum TILEGX_OPC_BPT, TILEGX_OPC_INFO, TILEGX_OPC_INFOL, + TILEGX_OPC_LD4S_TLS, + TILEGX_OPC_LD_TLS, TILEGX_OPC_MOVE, TILEGX_OPC_MOVEI, TILEGX_OPC_MOVELI, diff --git a/include/opcode/tilepro.h b/include/opcode/tilepro.h index 91e2a2b..767926b 100644 --- a/include/opcode/tilepro.h +++ b/include/opcode/tilepro.h @@ -36,6 +36,8 @@ typedef enum TILEPRO_OPC_INFOL, TILEPRO_OPC_J, TILEPRO_OPC_JAL, + TILEPRO_OPC_LW_TLS, + TILEPRO_OPC_LW_TLS_SN, TILEPRO_OPC_MOVE, TILEPRO_OPC_MOVE_SN, TILEPRO_OPC_MOVEI, diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index b3f5c76..70d5f34 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2012-02-25 Walter Lee <walt@tilera.com> + + * tilegx-opc.c: Handle TILEGX_OPC_LD4S_TLS and TILEGX_OPC_LD_TLS. + * tilepro-opc.c: Handle TILEPRO_OPC_LW_TLS and + TILEPRO_OPC_LW_TLS_SN. + 2012-02-21 H.J. Lu <hongjiu.lu@intel.com> * i386-opc.h (HLEPrefixNone): New. diff --git a/opcodes/tilegx-opc.c b/opcodes/tilegx-opc.c index 4f97019..682dd1b 100644 --- a/opcodes/tilegx-opc.c +++ b/opcodes/tilegx-opc.c @@ -41,7 +41,7 @@ #include <stddef.h> #endif -const struct tilegx_opcode tilegx_opcodes[334] = +const struct tilegx_opcode tilegx_opcodes[336] = { { "bpt", TILEGX_OPC_BPT, 0x2, 0, TREG_ZERO, 0, { { 0, }, { }, { 0, }, { 0, }, { 0, } }, @@ -100,8 +100,46 @@ const struct tilegx_opcode tilegx_opcodes[334] = } #endif }, + { "ld4s_tls", TILEGX_OPC_LD4S_TLS, 0x2, 3, TREG_ZERO, 1, + { { 0, }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, +#ifndef DISASM_ONLY + { + 0ULL, + 0xfffff80000000000ULL, + 0ULL, + 0ULL, + 0ULL + }, + { + -1ULL, + 0x1858000000000000ULL, + -1ULL, + -1ULL, + -1ULL + } +#endif + }, + { "ld_tls", TILEGX_OPC_LD_TLS, 0x2, 3, TREG_ZERO, 1, + { { 0, }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, +#ifndef DISASM_ONLY + { + 0ULL, + 0xfffff80000000000ULL, + 0ULL, + 0ULL, + 0ULL + }, + { + -1ULL, + 0x18a0000000000000ULL, + -1ULL, + -1ULL, + -1ULL + } +#endif + }, { "move", TILEGX_OPC_MOVE, 0xf, 2, TREG_ZERO, 1, - { { 6, 7 }, { 8, 9 }, { 10, 11 }, { 12, 13 }, { 0, } }, + { { 8, 9 }, { 6, 7 }, { 10, 11 }, { 12, 13 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -120,7 +158,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "movei", TILEGX_OPC_MOVEI, 0xf, 2, TREG_ZERO, 1, - { { 6, 0 }, { 8, 1 }, { 10, 2 }, { 12, 3 }, { 0, } }, + { { 8, 0 }, { 6, 1 }, { 10, 2 }, { 12, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00fc0ULL, @@ -139,7 +177,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "moveli", TILEGX_OPC_MOVELI, 0x3, 2, TREG_ZERO, 1, - { { 6, 4 }, { 8, 5 }, { 0, }, { 0, }, { 0, } }, + { { 8, 4 }, { 6, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc000000070000fc0ULL, @@ -158,7 +196,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "prefetch", TILEGX_OPC_PREFETCH, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -291,7 +329,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "prefetch_l1", TILEGX_OPC_PREFETCH_L1, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -310,7 +348,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "prefetch_l1_fault", TILEGX_OPC_PREFETCH_L1_FAULT, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -329,7 +367,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "prefetch_l2", TILEGX_OPC_PREFETCH_L2, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -348,7 +386,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "prefetch_l2_fault", TILEGX_OPC_PREFETCH_L2_FAULT, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -367,7 +405,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "prefetch_l3", TILEGX_OPC_PREFETCH_L3, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -386,7 +424,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "prefetch_l3_fault", TILEGX_OPC_PREFETCH_L3_FAULT, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -424,7 +462,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "add", TILEGX_OPC_ADD, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -443,7 +481,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "addi", TILEGX_OPC_ADDI, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -462,7 +500,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "addli", TILEGX_OPC_ADDLI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 4 }, { 8, 9, 5 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc000000070000000ULL, @@ -481,7 +519,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "addx", TILEGX_OPC_ADDX, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -500,7 +538,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "addxi", TILEGX_OPC_ADDXI, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -519,7 +557,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "addxli", TILEGX_OPC_ADDXLI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 4 }, { 8, 9, 5 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc000000070000000ULL, @@ -538,7 +576,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "addxsc", TILEGX_OPC_ADDXSC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -557,7 +595,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "and", TILEGX_OPC_AND, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -576,7 +614,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "andi", TILEGX_OPC_ANDI, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -595,7 +633,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "beqz", TILEGX_OPC_BEQZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -614,7 +652,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "beqzt", TILEGX_OPC_BEQZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -633,7 +671,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bfexts", TILEGX_OPC_BFEXTS, 0x1, 4, TREG_ZERO, 1, - { { 6, 7, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007f000000ULL, @@ -652,7 +690,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bfextu", TILEGX_OPC_BFEXTU, 0x1, 4, TREG_ZERO, 1, - { { 6, 7, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007f000000ULL, @@ -671,7 +709,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bfins", TILEGX_OPC_BFINS, 0x1, 4, TREG_ZERO, 1, - { { 23, 7, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007f000000ULL, @@ -690,7 +728,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bgez", TILEGX_OPC_BGEZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -709,7 +747,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bgezt", TILEGX_OPC_BGEZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -728,7 +766,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bgtz", TILEGX_OPC_BGTZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -747,7 +785,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bgtzt", TILEGX_OPC_BGTZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -766,7 +804,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "blbc", TILEGX_OPC_BLBC, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -785,7 +823,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "blbct", TILEGX_OPC_BLBCT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -804,7 +842,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "blbs", TILEGX_OPC_BLBS, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -823,7 +861,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "blbst", TILEGX_OPC_BLBST, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -842,7 +880,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "blez", TILEGX_OPC_BLEZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -861,7 +899,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "blezt", TILEGX_OPC_BLEZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -880,7 +918,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bltz", TILEGX_OPC_BLTZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -899,7 +937,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bltzt", TILEGX_OPC_BLTZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -918,7 +956,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bnez", TILEGX_OPC_BNEZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -937,7 +975,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "bnezt", TILEGX_OPC_BNEZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -956,7 +994,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "clz", TILEGX_OPC_CLZ, 0x5, 2, TREG_ZERO, 1, - { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, + { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -975,7 +1013,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmoveqz", TILEGX_OPC_CMOVEQZ, 0x5, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -994,7 +1032,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmovnez", TILEGX_OPC_CMOVNEZ, 0x5, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1013,7 +1051,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmpeq", TILEGX_OPC_CMPEQ, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1032,7 +1070,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmpeqi", TILEGX_OPC_CMPEQI, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -1051,7 +1089,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmpexch", TILEGX_OPC_CMPEXCH, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1070,7 +1108,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmpexch4", TILEGX_OPC_CMPEXCH4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1089,7 +1127,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmples", TILEGX_OPC_CMPLES, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1108,7 +1146,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmpleu", TILEGX_OPC_CMPLEU, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1127,7 +1165,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmplts", TILEGX_OPC_CMPLTS, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1146,7 +1184,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmpltsi", TILEGX_OPC_CMPLTSI, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -1165,7 +1203,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmpltu", TILEGX_OPC_CMPLTU, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1184,7 +1222,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmpltui", TILEGX_OPC_CMPLTUI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -1203,7 +1241,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmpne", TILEGX_OPC_CMPNE, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1222,7 +1260,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmul", TILEGX_OPC_CMUL, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1241,7 +1279,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmula", TILEGX_OPC_CMULA, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1260,7 +1298,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmulaf", TILEGX_OPC_CMULAF, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1279,7 +1317,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmulf", TILEGX_OPC_CMULF, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1298,7 +1336,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmulfr", TILEGX_OPC_CMULFR, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1317,7 +1355,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmulh", TILEGX_OPC_CMULH, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1336,7 +1374,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "cmulhr", TILEGX_OPC_CMULHR, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1355,7 +1393,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "crc32_32", TILEGX_OPC_CRC32_32, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1374,7 +1412,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "crc32_8", TILEGX_OPC_CRC32_8, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1393,7 +1431,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ctz", TILEGX_OPC_CTZ, 0x5, 2, TREG_ZERO, 1, - { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, + { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -1412,7 +1450,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "dblalign", TILEGX_OPC_DBLALIGN, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1431,7 +1469,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "dblalign2", TILEGX_OPC_DBLALIGN2, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1450,7 +1488,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "dblalign4", TILEGX_OPC_DBLALIGN4, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1469,7 +1507,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "dblalign6", TILEGX_OPC_DBLALIGN6, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1507,7 +1545,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "dtlbpr", TILEGX_OPC_DTLBPR, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1526,7 +1564,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "exch", TILEGX_OPC_EXCH, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1545,7 +1583,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "exch4", TILEGX_OPC_EXCH4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1564,7 +1602,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fdouble_add_flags", TILEGX_OPC_FDOUBLE_ADD_FLAGS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1583,7 +1621,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fdouble_addsub", TILEGX_OPC_FDOUBLE_ADDSUB, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1602,7 +1640,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fdouble_mul_flags", TILEGX_OPC_FDOUBLE_MUL_FLAGS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1621,7 +1659,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fdouble_pack1", TILEGX_OPC_FDOUBLE_PACK1, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1640,7 +1678,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fdouble_pack2", TILEGX_OPC_FDOUBLE_PACK2, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1659,7 +1697,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fdouble_sub_flags", TILEGX_OPC_FDOUBLE_SUB_FLAGS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1678,7 +1716,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fdouble_unpack_max", TILEGX_OPC_FDOUBLE_UNPACK_MAX, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1697,7 +1735,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fdouble_unpack_min", TILEGX_OPC_FDOUBLE_UNPACK_MIN, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1716,7 +1754,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fetchadd", TILEGX_OPC_FETCHADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1735,7 +1773,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fetchadd4", TILEGX_OPC_FETCHADD4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1754,7 +1792,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fetchaddgez", TILEGX_OPC_FETCHADDGEZ, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1773,7 +1811,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fetchaddgez4", TILEGX_OPC_FETCHADDGEZ4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1792,7 +1830,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fetchand", TILEGX_OPC_FETCHAND, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1811,7 +1849,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fetchand4", TILEGX_OPC_FETCHAND4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1830,7 +1868,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fetchor", TILEGX_OPC_FETCHOR, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1849,7 +1887,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fetchor4", TILEGX_OPC_FETCHOR4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1868,7 +1906,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "finv", TILEGX_OPC_FINV, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1887,7 +1925,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "flush", TILEGX_OPC_FLUSH, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1944,7 +1982,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fsingle_add1", TILEGX_OPC_FSINGLE_ADD1, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1963,7 +2001,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fsingle_addsub2", TILEGX_OPC_FSINGLE_ADDSUB2, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -1982,7 +2020,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fsingle_mul1", TILEGX_OPC_FSINGLE_MUL1, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -2001,7 +2039,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fsingle_mul2", TILEGX_OPC_FSINGLE_MUL2, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -2020,7 +2058,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fsingle_pack1", TILEGX_OPC_FSINGLE_PACK1, 0x5, 2, TREG_ZERO, 1, - { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, + { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -2039,7 +2077,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fsingle_pack2", TILEGX_OPC_FSINGLE_PACK2, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -2058,7 +2096,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "fsingle_sub1", TILEGX_OPC_FSINGLE_SUB1, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -2077,7 +2115,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "icoh", TILEGX_OPC_ICOH, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2115,7 +2153,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "inv", TILEGX_OPC_INV, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2191,7 +2229,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "jalr", TILEGX_OPC_JALR, 0xa, 1, TREG_LR, 1, - { { 0, }, { 9 }, { 0, }, { 13 }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2210,7 +2248,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "jalrp", TILEGX_OPC_JALRP, 0xa, 1, TREG_LR, 1, - { { 0, }, { 9 }, { 0, }, { 13 }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2229,7 +2267,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "jr", TILEGX_OPC_JR, 0xa, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 13 }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2248,7 +2286,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "jrp", TILEGX_OPC_JRP, 0xa, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 13 }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2267,7 +2305,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld", TILEGX_OPC_LD, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2286,7 +2324,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld1s", TILEGX_OPC_LD1S, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2305,7 +2343,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld1s_add", TILEGX_OPC_LD1S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2324,7 +2362,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld1u", TILEGX_OPC_LD1U, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2343,7 +2381,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld1u_add", TILEGX_OPC_LD1U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2362,7 +2400,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld2s", TILEGX_OPC_LD2S, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2381,7 +2419,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld2s_add", TILEGX_OPC_LD2S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2400,7 +2438,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld2u", TILEGX_OPC_LD2U, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2419,7 +2457,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld2u_add", TILEGX_OPC_LD2U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2438,7 +2476,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld4s", TILEGX_OPC_LD4S, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2457,7 +2495,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld4s_add", TILEGX_OPC_LD4S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2476,7 +2514,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld4u", TILEGX_OPC_LD4U, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2495,7 +2533,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld4u_add", TILEGX_OPC_LD4U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2514,7 +2552,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ld_add", TILEGX_OPC_LD_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2533,7 +2571,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldna", TILEGX_OPC_LDNA, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2552,7 +2590,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldna_add", TILEGX_OPC_LDNA_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2571,7 +2609,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt", TILEGX_OPC_LDNT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2590,7 +2628,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt1s", TILEGX_OPC_LDNT1S, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2609,7 +2647,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt1s_add", TILEGX_OPC_LDNT1S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2628,7 +2666,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt1u", TILEGX_OPC_LDNT1U, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2647,7 +2685,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt1u_add", TILEGX_OPC_LDNT1U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2666,7 +2704,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt2s", TILEGX_OPC_LDNT2S, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2685,7 +2723,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt2s_add", TILEGX_OPC_LDNT2S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2704,7 +2742,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt2u", TILEGX_OPC_LDNT2U, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2723,7 +2761,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt2u_add", TILEGX_OPC_LDNT2U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2742,7 +2780,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt4s", TILEGX_OPC_LDNT4S, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2761,7 +2799,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt4s_add", TILEGX_OPC_LDNT4S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2780,7 +2818,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt4u", TILEGX_OPC_LDNT4U, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2799,7 +2837,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt4u_add", TILEGX_OPC_LDNT4U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2818,7 +2856,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ldnt_add", TILEGX_OPC_LDNT_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2837,7 +2875,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "lnk", TILEGX_OPC_LNK, 0xa, 1, TREG_ZERO, 1, - { { 0, }, { 8 }, { 0, }, { 12 }, { 0, } }, + { { 0, }, { 6 }, { 0, }, { 12 }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2875,7 +2913,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mfspr", TILEGX_OPC_MFSPR, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 8, 27 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 6, 27 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2894,7 +2932,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mm", TILEGX_OPC_MM, 0x1, 4, TREG_ZERO, 1, - { { 23, 7, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007f000000ULL, @@ -2913,7 +2951,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mnz", TILEGX_OPC_MNZ, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -2932,7 +2970,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mtspr", TILEGX_OPC_MTSPR, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 28, 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 28, 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2951,7 +2989,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_hs_hs", TILEGX_OPC_MUL_HS_HS, 0x5, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -2970,7 +3008,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_hs_hu", TILEGX_OPC_MUL_HS_HU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -2989,7 +3027,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_hs_ls", TILEGX_OPC_MUL_HS_LS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3008,7 +3046,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_hs_lu", TILEGX_OPC_MUL_HS_LU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3027,7 +3065,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_hu_hu", TILEGX_OPC_MUL_HU_HU, 0x5, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3046,7 +3084,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_hu_ls", TILEGX_OPC_MUL_HU_LS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3065,7 +3103,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_hu_lu", TILEGX_OPC_MUL_HU_LU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3084,7 +3122,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_ls_ls", TILEGX_OPC_MUL_LS_LS, 0x5, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3103,7 +3141,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_ls_lu", TILEGX_OPC_MUL_LS_LU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3122,7 +3160,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mul_lu_lu", TILEGX_OPC_MUL_LU_LU, 0x5, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3141,7 +3179,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_hs_hs", TILEGX_OPC_MULA_HS_HS, 0x5, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3160,7 +3198,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_hs_hu", TILEGX_OPC_MULA_HS_HU, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3179,7 +3217,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_hs_ls", TILEGX_OPC_MULA_HS_LS, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3198,7 +3236,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_hs_lu", TILEGX_OPC_MULA_HS_LU, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3217,7 +3255,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_hu_hu", TILEGX_OPC_MULA_HU_HU, 0x5, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3236,7 +3274,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_hu_ls", TILEGX_OPC_MULA_HU_LS, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3255,7 +3293,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_hu_lu", TILEGX_OPC_MULA_HU_LU, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3274,7 +3312,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_ls_ls", TILEGX_OPC_MULA_LS_LS, 0x5, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3293,7 +3331,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_ls_lu", TILEGX_OPC_MULA_LS_LU, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3312,7 +3350,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mula_lu_lu", TILEGX_OPC_MULA_LU_LU, 0x5, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3331,7 +3369,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mulax", TILEGX_OPC_MULAX, 0x5, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3350,7 +3388,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mulx", TILEGX_OPC_MULX, 0x5, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3369,7 +3407,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "mz", TILEGX_OPC_MZ, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3426,7 +3464,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "nor", TILEGX_OPC_NOR, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3445,7 +3483,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "or", TILEGX_OPC_OR, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3464,7 +3502,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "ori", TILEGX_OPC_ORI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -3483,7 +3521,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "pcnt", TILEGX_OPC_PCNT, 0x5, 2, TREG_ZERO, 1, - { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, + { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -3502,7 +3540,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "revbits", TILEGX_OPC_REVBITS, 0x5, 2, TREG_ZERO, 1, - { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, + { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -3521,7 +3559,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "revbytes", TILEGX_OPC_REVBYTES, 0x5, 2, TREG_ZERO, 1, - { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, + { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -3540,7 +3578,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "rotl", TILEGX_OPC_ROTL, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3559,7 +3597,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "rotli", TILEGX_OPC_ROTLI, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3578,7 +3616,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shl", TILEGX_OPC_SHL, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3597,7 +3635,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shl16insli", TILEGX_OPC_SHL16INSLI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 4 }, { 8, 9, 5 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc000000070000000ULL, @@ -3616,7 +3654,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shl1add", TILEGX_OPC_SHL1ADD, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3635,7 +3673,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shl1addx", TILEGX_OPC_SHL1ADDX, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3654,7 +3692,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shl2add", TILEGX_OPC_SHL2ADD, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3673,7 +3711,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shl2addx", TILEGX_OPC_SHL2ADDX, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3692,7 +3730,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shl3add", TILEGX_OPC_SHL3ADD, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3711,7 +3749,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shl3addx", TILEGX_OPC_SHL3ADDX, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3730,7 +3768,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shli", TILEGX_OPC_SHLI, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3749,7 +3787,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shlx", TILEGX_OPC_SHLX, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3768,7 +3806,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shlxi", TILEGX_OPC_SHLXI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3787,7 +3825,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shrs", TILEGX_OPC_SHRS, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3806,7 +3844,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shrsi", TILEGX_OPC_SHRSI, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3825,7 +3863,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shru", TILEGX_OPC_SHRU, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3844,7 +3882,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shrui", TILEGX_OPC_SHRUI, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3863,7 +3901,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shrux", TILEGX_OPC_SHRUX, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3882,7 +3920,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shruxi", TILEGX_OPC_SHRUXI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3901,7 +3939,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "shufflebytes", TILEGX_OPC_SHUFFLEBYTES, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -3920,7 +3958,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "st", TILEGX_OPC_ST, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 14, 33 } }, + { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } }, #ifndef DISASM_ONLY { 0ULL, @@ -3939,7 +3977,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "st1", TILEGX_OPC_ST1, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 14, 33 } }, + { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } }, #ifndef DISASM_ONLY { 0ULL, @@ -3977,7 +4015,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "st2", TILEGX_OPC_ST2, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 14, 33 } }, + { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } }, #ifndef DISASM_ONLY { 0ULL, @@ -4015,7 +4053,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "st4", TILEGX_OPC_ST4, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 14, 33 } }, + { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } }, #ifndef DISASM_ONLY { 0ULL, @@ -4072,7 +4110,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "stnt", TILEGX_OPC_STNT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -4091,7 +4129,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "stnt1", TILEGX_OPC_STNT1, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -4129,7 +4167,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "stnt2", TILEGX_OPC_STNT2, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -4167,7 +4205,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "stnt4", TILEGX_OPC_STNT4, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -4224,7 +4262,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "sub", TILEGX_OPC_SUB, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4243,7 +4281,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "subx", TILEGX_OPC_SUBX, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4262,7 +4300,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "subxsc", TILEGX_OPC_SUBXSC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4357,7 +4395,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "tblidxb0", TILEGX_OPC_TBLIDXB0, 0x5, 2, TREG_ZERO, 1, - { { 23, 7 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, + { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -4376,7 +4414,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "tblidxb1", TILEGX_OPC_TBLIDXB1, 0x5, 2, TREG_ZERO, 1, - { { 23, 7 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, + { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -4395,7 +4433,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "tblidxb2", TILEGX_OPC_TBLIDXB2, 0x5, 2, TREG_ZERO, 1, - { { 23, 7 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, + { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -4414,7 +4452,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "tblidxb3", TILEGX_OPC_TBLIDXB3, 0x5, 2, TREG_ZERO, 1, - { { 23, 7 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, + { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffff000ULL, @@ -4433,7 +4471,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1add", TILEGX_OPC_V1ADD, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4452,7 +4490,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1addi", TILEGX_OPC_V1ADDI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -4471,7 +4509,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1adduc", TILEGX_OPC_V1ADDUC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4490,7 +4528,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1adiffu", TILEGX_OPC_V1ADIFFU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4509,7 +4547,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1avgu", TILEGX_OPC_V1AVGU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4528,7 +4566,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1cmpeq", TILEGX_OPC_V1CMPEQ, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4547,7 +4585,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1cmpeqi", TILEGX_OPC_V1CMPEQI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -4566,7 +4604,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1cmples", TILEGX_OPC_V1CMPLES, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4585,7 +4623,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1cmpleu", TILEGX_OPC_V1CMPLEU, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4604,7 +4642,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1cmplts", TILEGX_OPC_V1CMPLTS, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4623,7 +4661,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1cmpltsi", TILEGX_OPC_V1CMPLTSI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -4642,7 +4680,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1cmpltu", TILEGX_OPC_V1CMPLTU, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4661,7 +4699,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1cmpltui", TILEGX_OPC_V1CMPLTUI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -4680,7 +4718,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1cmpne", TILEGX_OPC_V1CMPNE, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4699,7 +4737,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1ddotpu", TILEGX_OPC_V1DDOTPU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4718,7 +4756,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1ddotpua", TILEGX_OPC_V1DDOTPUA, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4737,7 +4775,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1ddotpus", TILEGX_OPC_V1DDOTPUS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4756,7 +4794,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1ddotpusa", TILEGX_OPC_V1DDOTPUSA, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4775,7 +4813,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1dotp", TILEGX_OPC_V1DOTP, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4794,7 +4832,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1dotpa", TILEGX_OPC_V1DOTPA, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4813,7 +4851,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1dotpu", TILEGX_OPC_V1DOTPU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4832,7 +4870,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1dotpua", TILEGX_OPC_V1DOTPUA, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4851,7 +4889,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1dotpus", TILEGX_OPC_V1DOTPUS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4870,7 +4908,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1dotpusa", TILEGX_OPC_V1DOTPUSA, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4889,7 +4927,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1int_h", TILEGX_OPC_V1INT_H, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4908,7 +4946,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1int_l", TILEGX_OPC_V1INT_L, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4927,7 +4965,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1maxu", TILEGX_OPC_V1MAXU, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4946,7 +4984,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1maxui", TILEGX_OPC_V1MAXUI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -4965,7 +5003,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1minu", TILEGX_OPC_V1MINU, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -4984,7 +5022,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1minui", TILEGX_OPC_V1MINUI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -5003,7 +5041,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1mnz", TILEGX_OPC_V1MNZ, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5022,7 +5060,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1multu", TILEGX_OPC_V1MULTU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5041,7 +5079,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1mulu", TILEGX_OPC_V1MULU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5060,7 +5098,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1mulus", TILEGX_OPC_V1MULUS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5079,7 +5117,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1mz", TILEGX_OPC_V1MZ, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5098,7 +5136,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1sadau", TILEGX_OPC_V1SADAU, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5117,7 +5155,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1sadu", TILEGX_OPC_V1SADU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5136,7 +5174,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1shl", TILEGX_OPC_V1SHL, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5155,7 +5193,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1shli", TILEGX_OPC_V1SHLI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5174,7 +5212,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1shrs", TILEGX_OPC_V1SHRS, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5193,7 +5231,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1shrsi", TILEGX_OPC_V1SHRSI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5212,7 +5250,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1shru", TILEGX_OPC_V1SHRU, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5231,7 +5269,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1shrui", TILEGX_OPC_V1SHRUI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5250,7 +5288,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1sub", TILEGX_OPC_V1SUB, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5269,7 +5307,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v1subuc", TILEGX_OPC_V1SUBUC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5288,7 +5326,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2add", TILEGX_OPC_V2ADD, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5307,7 +5345,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2addi", TILEGX_OPC_V2ADDI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -5326,7 +5364,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2addsc", TILEGX_OPC_V2ADDSC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5345,7 +5383,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2adiffs", TILEGX_OPC_V2ADIFFS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5364,7 +5402,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2avgs", TILEGX_OPC_V2AVGS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5383,7 +5421,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2cmpeq", TILEGX_OPC_V2CMPEQ, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5402,7 +5440,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2cmpeqi", TILEGX_OPC_V2CMPEQI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -5421,7 +5459,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2cmples", TILEGX_OPC_V2CMPLES, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5440,7 +5478,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2cmpleu", TILEGX_OPC_V2CMPLEU, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5459,7 +5497,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2cmplts", TILEGX_OPC_V2CMPLTS, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5478,7 +5516,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2cmpltsi", TILEGX_OPC_V2CMPLTSI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -5497,7 +5535,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2cmpltu", TILEGX_OPC_V2CMPLTU, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5516,7 +5554,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2cmpltui", TILEGX_OPC_V2CMPLTUI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -5535,7 +5573,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2cmpne", TILEGX_OPC_V2CMPNE, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5554,7 +5592,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2dotp", TILEGX_OPC_V2DOTP, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5573,7 +5611,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2dotpa", TILEGX_OPC_V2DOTPA, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5592,7 +5630,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2int_h", TILEGX_OPC_V2INT_H, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5611,7 +5649,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2int_l", TILEGX_OPC_V2INT_L, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5630,7 +5668,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2maxs", TILEGX_OPC_V2MAXS, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5649,7 +5687,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2maxsi", TILEGX_OPC_V2MAXSI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -5668,7 +5706,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2mins", TILEGX_OPC_V2MINS, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5687,7 +5725,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2minsi", TILEGX_OPC_V2MINSI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -5706,7 +5744,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2mnz", TILEGX_OPC_V2MNZ, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5725,7 +5763,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2mulfsc", TILEGX_OPC_V2MULFSC, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5744,7 +5782,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2muls", TILEGX_OPC_V2MULS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5763,7 +5801,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2mults", TILEGX_OPC_V2MULTS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5782,7 +5820,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2mz", TILEGX_OPC_V2MZ, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5801,7 +5839,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2packh", TILEGX_OPC_V2PACKH, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5820,7 +5858,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2packl", TILEGX_OPC_V2PACKL, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5839,7 +5877,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2packuc", TILEGX_OPC_V2PACKUC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5858,7 +5896,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2sadas", TILEGX_OPC_V2SADAS, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5877,7 +5915,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2sadau", TILEGX_OPC_V2SADAU, 0x1, 3, TREG_ZERO, 1, - { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5896,7 +5934,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2sads", TILEGX_OPC_V2SADS, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5915,7 +5953,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2sadu", TILEGX_OPC_V2SADU, 0x1, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5934,7 +5972,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2shl", TILEGX_OPC_V2SHL, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5953,7 +5991,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2shli", TILEGX_OPC_V2SHLI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5972,7 +6010,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2shlsc", TILEGX_OPC_V2SHLSC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -5991,7 +6029,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2shrs", TILEGX_OPC_V2SHRS, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6010,7 +6048,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2shrsi", TILEGX_OPC_V2SHRSI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6029,7 +6067,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2shru", TILEGX_OPC_V2SHRU, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6048,7 +6086,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2shrui", TILEGX_OPC_V2SHRUI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6067,7 +6105,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2sub", TILEGX_OPC_V2SUB, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6086,7 +6124,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v2subsc", TILEGX_OPC_V2SUBSC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6105,7 +6143,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4add", TILEGX_OPC_V4ADD, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6124,7 +6162,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4addsc", TILEGX_OPC_V4ADDSC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6143,7 +6181,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4int_h", TILEGX_OPC_V4INT_H, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6162,7 +6200,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4int_l", TILEGX_OPC_V4INT_L, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6181,7 +6219,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4packsc", TILEGX_OPC_V4PACKSC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6200,7 +6238,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4shl", TILEGX_OPC_V4SHL, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6219,7 +6257,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4shlsc", TILEGX_OPC_V4SHLSC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6238,7 +6276,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4shrs", TILEGX_OPC_V4SHRS, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6257,7 +6295,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4shru", TILEGX_OPC_V4SHRU, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6276,7 +6314,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4sub", TILEGX_OPC_V4SUB, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6295,7 +6333,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "v4subsc", TILEGX_OPC_V4SUBSC, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6314,7 +6352,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "wh64", TILEGX_OPC_WH64, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -6333,7 +6371,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "xor", TILEGX_OPC_XOR, 0xf, 3, TREG_ZERO, 1, - { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, + { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ffc0000ULL, @@ -6352,7 +6390,7 @@ const struct tilegx_opcode tilegx_opcodes[334] = #endif }, { "xori", TILEGX_OPC_XORI, 0x3, 3, TREG_ZERO, 1, - { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0xc00000007ff00000ULL, @@ -6672,7 +6710,7 @@ static const unsigned short decode_X0_fsm[936] = TILEGX_OPC_INFOL, }; -static const unsigned short decode_X1_fsm[1206] = +static const unsigned short decode_X1_fsm[1266] = { BITFIELD(53, 9) /* index 0 */, CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), @@ -6718,8 +6756,8 @@ static const unsigned short decode_X1_fsm[1206] = TILEGX_OPC_BLEZT, TILEGX_OPC_BLEZ, TILEGX_OPC_BLEZ, TILEGX_OPC_BLTZT, TILEGX_OPC_BLTZT, TILEGX_OPC_BLTZ, TILEGX_OPC_BLTZ, TILEGX_OPC_BNEZT, TILEGX_OPC_BNEZT, TILEGX_OPC_BNEZ, TILEGX_OPC_BNEZ, CHILD(528), CHILD(578), - CHILD(598), CHILD(663), CHILD(683), CHILD(688), CHILD(693), CHILD(698), - CHILD(703), CHILD(708), CHILD(713), CHILD(718), TILEGX_OPC_NONE, + CHILD(598), CHILD(703), CHILD(723), CHILD(728), CHILD(753), CHILD(758), + CHILD(763), CHILD(768), CHILD(773), CHILD(778), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, @@ -6747,8 +6785,8 @@ static const unsigned short decode_X1_fsm[1206] = TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, - CHILD(723), CHILD(740), CHILD(772), CHILD(789), CHILD(1108), CHILD(1125), - CHILD(1142), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, + CHILD(783), CHILD(800), CHILD(832), CHILD(849), CHILD(1168), CHILD(1185), + CHILD(1202), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, @@ -6762,7 +6800,7 @@ static const unsigned short decode_X1_fsm[1206] = TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1159), TILEGX_OPC_NONE, + TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1219), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, @@ -6778,20 +6816,20 @@ static const unsigned short decode_X1_fsm[1206] = TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), - CHILD(1176), + TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), + CHILD(1236), BITFIELD(37, 2) /* index 513 */, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(518), BITFIELD(39, 2) /* index 518 */, @@ -6851,68 +6889,96 @@ static const unsigned short decode_X1_fsm[1206] = TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_PREFETCH_ADD_L2, BITFIELD(31, 2) /* index 648 */, - TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, CHILD(653), - BITFIELD(33, 2) /* index 653 */, - TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, CHILD(658), - BITFIELD(35, 2) /* index 658 */, - TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, - TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - BITFIELD(51, 2) /* index 663 */, - CHILD(668), TILEGX_OPC_LDNT1S_ADD, TILEGX_OPC_LDNT1U_ADD, - TILEGX_OPC_LDNT2S_ADD, - BITFIELD(31, 2) /* index 668 */, - TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(673), + CHILD(653), CHILD(653), CHILD(653), CHILD(673), + BITFIELD(43, 2) /* index 653 */, + CHILD(658), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, + BITFIELD(45, 2) /* index 658 */, + CHILD(663), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, + BITFIELD(47, 2) /* index 663 */, + CHILD(668), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, + BITFIELD(49, 2) /* index 668 */, + TILEGX_OPC_LD4S_TLS, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, + TILEGX_OPC_LD4S_ADD, BITFIELD(33, 2) /* index 673 */, - TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(678), + CHILD(653), CHILD(653), CHILD(653), CHILD(678), BITFIELD(35, 2) /* index 678 */, + CHILD(653), CHILD(653), CHILD(653), CHILD(683), + BITFIELD(43, 2) /* index 683 */, + CHILD(688), TILEGX_OPC_PREFETCH_ADD_L3_FAULT, + TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, + BITFIELD(45, 2) /* index 688 */, + CHILD(693), TILEGX_OPC_PREFETCH_ADD_L3_FAULT, + TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, + BITFIELD(47, 2) /* index 693 */, + CHILD(698), TILEGX_OPC_PREFETCH_ADD_L3_FAULT, + TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, + BITFIELD(49, 2) /* index 698 */, + TILEGX_OPC_LD4S_TLS, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, + TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, + BITFIELD(51, 2) /* index 703 */, + CHILD(708), TILEGX_OPC_LDNT1S_ADD, TILEGX_OPC_LDNT1U_ADD, + TILEGX_OPC_LDNT2S_ADD, + BITFIELD(31, 2) /* index 708 */, + TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(713), + BITFIELD(33, 2) /* index 713 */, + TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(718), + BITFIELD(35, 2) /* index 718 */, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_PREFETCH_ADD_L3, - BITFIELD(51, 2) /* index 683 */, + BITFIELD(51, 2) /* index 723 */, TILEGX_OPC_LDNT2U_ADD, TILEGX_OPC_LDNT4S_ADD, TILEGX_OPC_LDNT4U_ADD, TILEGX_OPC_LDNT_ADD, - BITFIELD(51, 2) /* index 688 */, - TILEGX_OPC_LD_ADD, TILEGX_OPC_LDNA_ADD, TILEGX_OPC_MFSPR, TILEGX_OPC_MTSPR, - BITFIELD(51, 2) /* index 693 */, + BITFIELD(51, 2) /* index 728 */, + CHILD(733), TILEGX_OPC_LDNA_ADD, TILEGX_OPC_MFSPR, TILEGX_OPC_MTSPR, + BITFIELD(43, 2) /* index 733 */, + CHILD(738), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, + BITFIELD(45, 2) /* index 738 */, + CHILD(743), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, + BITFIELD(47, 2) /* index 743 */, + CHILD(748), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, + BITFIELD(49, 2) /* index 748 */, + TILEGX_OPC_LD_TLS, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, + BITFIELD(51, 2) /* index 753 */, TILEGX_OPC_ORI, TILEGX_OPC_ST1_ADD, TILEGX_OPC_ST2_ADD, TILEGX_OPC_ST4_ADD, - BITFIELD(51, 2) /* index 698 */, + BITFIELD(51, 2) /* index 758 */, TILEGX_OPC_STNT1_ADD, TILEGX_OPC_STNT2_ADD, TILEGX_OPC_STNT4_ADD, TILEGX_OPC_STNT_ADD, - BITFIELD(51, 2) /* index 703 */, + BITFIELD(51, 2) /* index 763 */, TILEGX_OPC_ST_ADD, TILEGX_OPC_V1ADDI, TILEGX_OPC_V1CMPEQI, TILEGX_OPC_V1CMPLTSI, - BITFIELD(51, 2) /* index 708 */, + BITFIELD(51, 2) /* index 768 */, TILEGX_OPC_V1CMPLTUI, TILEGX_OPC_V1MAXUI, TILEGX_OPC_V1MINUI, TILEGX_OPC_V2ADDI, - BITFIELD(51, 2) /* index 713 */, + BITFIELD(51, 2) /* index 773 */, TILEGX_OPC_V2CMPEQI, TILEGX_OPC_V2CMPLTSI, TILEGX_OPC_V2CMPLTUI, TILEGX_OPC_V2MAXSI, - BITFIELD(51, 2) /* index 718 */, + BITFIELD(51, 2) /* index 778 */, TILEGX_OPC_V2MINSI, TILEGX_OPC_XORI, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(49, 4) /* index 723 */, + BITFIELD(49, 4) /* index 783 */, TILEGX_OPC_NONE, TILEGX_OPC_ADDXSC, TILEGX_OPC_ADDX, TILEGX_OPC_ADD, TILEGX_OPC_AND, TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPEXCH4, TILEGX_OPC_CMPEXCH, TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU, TILEGX_OPC_CMPNE, TILEGX_OPC_DBLALIGN2, TILEGX_OPC_DBLALIGN4, TILEGX_OPC_DBLALIGN6, - BITFIELD(49, 4) /* index 740 */, + BITFIELD(49, 4) /* index 800 */, TILEGX_OPC_EXCH4, TILEGX_OPC_EXCH, TILEGX_OPC_FETCHADD4, TILEGX_OPC_FETCHADDGEZ4, TILEGX_OPC_FETCHADDGEZ, TILEGX_OPC_FETCHADD, TILEGX_OPC_FETCHAND4, TILEGX_OPC_FETCHAND, TILEGX_OPC_FETCHOR4, TILEGX_OPC_FETCHOR, TILEGX_OPC_MNZ, TILEGX_OPC_MZ, TILEGX_OPC_NOR, - CHILD(757), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX, - BITFIELD(43, 2) /* index 757 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(762), - BITFIELD(45, 2) /* index 762 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(767), - BITFIELD(47, 2) /* index 767 */, + CHILD(817), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX, + BITFIELD(43, 2) /* index 817 */, + TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(822), + BITFIELD(45, 2) /* index 822 */, + TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(827), + BITFIELD(47, 2) /* index 827 */, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE, - BITFIELD(49, 4) /* index 772 */, + BITFIELD(49, 4) /* index 832 */, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADDX, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL3ADDX, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHLX, TILEGX_OPC_SHL, TILEGX_OPC_SHRS, TILEGX_OPC_SHRUX, TILEGX_OPC_SHRU, TILEGX_OPC_ST1, TILEGX_OPC_ST2, TILEGX_OPC_ST4, TILEGX_OPC_STNT1, TILEGX_OPC_STNT2, TILEGX_OPC_STNT4, - BITFIELD(46, 7) /* index 789 */, + BITFIELD(46, 7) /* index 849 */, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, @@ -6922,8 +6988,8 @@ static const unsigned short decode_X1_fsm[1206] = TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, - TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, CHILD(918), CHILD(927), - CHILD(1006), CHILD(1090), CHILD(1099), TILEGX_OPC_NONE, TILEGX_OPC_NONE, + TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, CHILD(978), CHILD(987), + CHILD(1066), CHILD(1150), CHILD(1159), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, @@ -6950,122 +7016,122 @@ static const unsigned short decode_X1_fsm[1206] = TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, - BITFIELD(43, 3) /* index 918 */, + BITFIELD(43, 3) /* index 978 */, TILEGX_OPC_NONE, TILEGX_OPC_DRAIN, TILEGX_OPC_DTLBPR, TILEGX_OPC_FINV, TILEGX_OPC_FLUSHWB, TILEGX_OPC_FLUSH, TILEGX_OPC_FNOP, TILEGX_OPC_ICOH, - BITFIELD(43, 3) /* index 927 */, - CHILD(936), TILEGX_OPC_INV, TILEGX_OPC_IRET, TILEGX_OPC_JALRP, - TILEGX_OPC_JALR, TILEGX_OPC_JRP, TILEGX_OPC_JR, CHILD(991), - BITFIELD(31, 2) /* index 936 */, - CHILD(941), CHILD(966), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(33, 2) /* index 941 */, - TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(946), - BITFIELD(35, 2) /* index 946 */, - TILEGX_OPC_ILL, CHILD(951), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(37, 2) /* index 951 */, - TILEGX_OPC_ILL, CHILD(956), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(39, 2) /* index 956 */, - TILEGX_OPC_ILL, CHILD(961), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(41, 2) /* index 961 */, + BITFIELD(43, 3) /* index 987 */, + CHILD(996), TILEGX_OPC_INV, TILEGX_OPC_IRET, TILEGX_OPC_JALRP, + TILEGX_OPC_JALR, TILEGX_OPC_JRP, TILEGX_OPC_JR, CHILD(1051), + BITFIELD(31, 2) /* index 996 */, + CHILD(1001), CHILD(1026), TILEGX_OPC_ILL, TILEGX_OPC_ILL, + BITFIELD(33, 2) /* index 1001 */, + TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(1006), + BITFIELD(35, 2) /* index 1006 */, + TILEGX_OPC_ILL, CHILD(1011), TILEGX_OPC_ILL, TILEGX_OPC_ILL, + BITFIELD(37, 2) /* index 1011 */, + TILEGX_OPC_ILL, CHILD(1016), TILEGX_OPC_ILL, TILEGX_OPC_ILL, + BITFIELD(39, 2) /* index 1016 */, + TILEGX_OPC_ILL, CHILD(1021), TILEGX_OPC_ILL, TILEGX_OPC_ILL, + BITFIELD(41, 2) /* index 1021 */, TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_BPT, TILEGX_OPC_ILL, - BITFIELD(33, 2) /* index 966 */, - TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(971), - BITFIELD(35, 2) /* index 971 */, - TILEGX_OPC_ILL, CHILD(976), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(37, 2) /* index 976 */, - TILEGX_OPC_ILL, CHILD(981), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(39, 2) /* index 981 */, - TILEGX_OPC_ILL, CHILD(986), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(41, 2) /* index 986 */, + BITFIELD(33, 2) /* index 1026 */, + TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(1031), + BITFIELD(35, 2) /* index 1031 */, + TILEGX_OPC_ILL, CHILD(1036), TILEGX_OPC_ILL, TILEGX_OPC_ILL, + BITFIELD(37, 2) /* index 1036 */, + TILEGX_OPC_ILL, CHILD(1041), TILEGX_OPC_ILL, TILEGX_OPC_ILL, + BITFIELD(39, 2) /* index 1041 */, + TILEGX_OPC_ILL, CHILD(1046), TILEGX_OPC_ILL, TILEGX_OPC_ILL, + BITFIELD(41, 2) /* index 1046 */, TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_RAISE, TILEGX_OPC_ILL, - BITFIELD(31, 2) /* index 991 */, - TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(996), - BITFIELD(33, 2) /* index 996 */, - TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1001), - BITFIELD(35, 2) /* index 1001 */, + BITFIELD(31, 2) /* index 1051 */, + TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1056), + BITFIELD(33, 2) /* index 1056 */, + TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1061), + BITFIELD(35, 2) /* index 1061 */, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_PREFETCH_L1_FAULT, - BITFIELD(43, 3) /* index 1006 */, - CHILD(1015), CHILD(1030), CHILD(1045), CHILD(1060), CHILD(1075), + BITFIELD(43, 3) /* index 1066 */, + CHILD(1075), CHILD(1090), CHILD(1105), CHILD(1120), CHILD(1135), TILEGX_OPC_LDNA, TILEGX_OPC_LDNT1S, TILEGX_OPC_LDNT1U, - BITFIELD(31, 2) /* index 1015 */, - TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1020), - BITFIELD(33, 2) /* index 1020 */, - TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1025), - BITFIELD(35, 2) /* index 1025 */, + BITFIELD(31, 2) /* index 1075 */, + TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1080), + BITFIELD(33, 2) /* index 1080 */, + TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1085), + BITFIELD(35, 2) /* index 1085 */, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_PREFETCH, - BITFIELD(31, 2) /* index 1030 */, - TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1035), - BITFIELD(33, 2) /* index 1035 */, - TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1040), - BITFIELD(35, 2) /* index 1040 */, + BITFIELD(31, 2) /* index 1090 */, + TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1095), + BITFIELD(33, 2) /* index 1095 */, + TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1100), + BITFIELD(35, 2) /* index 1100 */, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_PREFETCH_L2_FAULT, - BITFIELD(31, 2) /* index 1045 */, - TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1050), - BITFIELD(33, 2) /* index 1050 */, - TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1055), - BITFIELD(35, 2) /* index 1055 */, + BITFIELD(31, 2) /* index 1105 */, + TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1110), + BITFIELD(33, 2) /* index 1110 */, + TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1115), + BITFIELD(35, 2) /* index 1115 */, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_PREFETCH_L2, - BITFIELD(31, 2) /* index 1060 */, - TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1065), - BITFIELD(33, 2) /* index 1065 */, - TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1070), - BITFIELD(35, 2) /* index 1070 */, + BITFIELD(31, 2) /* index 1120 */, + TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1125), + BITFIELD(33, 2) /* index 1125 */, + TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1130), + BITFIELD(35, 2) /* index 1130 */, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_PREFETCH_L3_FAULT, - BITFIELD(31, 2) /* index 1075 */, - TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1080), - BITFIELD(33, 2) /* index 1080 */, - TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1085), - BITFIELD(35, 2) /* index 1085 */, + BITFIELD(31, 2) /* index 1135 */, + TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1140), + BITFIELD(33, 2) /* index 1140 */, + TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1145), + BITFIELD(35, 2) /* index 1145 */, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_PREFETCH_L3, - BITFIELD(43, 3) /* index 1090 */, + BITFIELD(43, 3) /* index 1150 */, TILEGX_OPC_LDNT2S, TILEGX_OPC_LDNT2U, TILEGX_OPC_LDNT4S, TILEGX_OPC_LDNT4U, TILEGX_OPC_LDNT, TILEGX_OPC_LD, TILEGX_OPC_LNK, TILEGX_OPC_MF, - BITFIELD(43, 3) /* index 1099 */, + BITFIELD(43, 3) /* index 1159 */, TILEGX_OPC_NAP, TILEGX_OPC_NOP, TILEGX_OPC_SWINT0, TILEGX_OPC_SWINT1, TILEGX_OPC_SWINT2, TILEGX_OPC_SWINT3, TILEGX_OPC_WH64, TILEGX_OPC_NONE, - BITFIELD(49, 4) /* index 1108 */, + BITFIELD(49, 4) /* index 1168 */, TILEGX_OPC_V1MAXU, TILEGX_OPC_V1MINU, TILEGX_OPC_V1MNZ, TILEGX_OPC_V1MZ, TILEGX_OPC_V1SHL, TILEGX_OPC_V1SHRS, TILEGX_OPC_V1SHRU, TILEGX_OPC_V1SUBUC, TILEGX_OPC_V1SUB, TILEGX_OPC_V2ADDSC, TILEGX_OPC_V2ADD, TILEGX_OPC_V2CMPEQ, TILEGX_OPC_V2CMPLES, TILEGX_OPC_V2CMPLEU, TILEGX_OPC_V2CMPLTS, TILEGX_OPC_V2CMPLTU, - BITFIELD(49, 4) /* index 1125 */, + BITFIELD(49, 4) /* index 1185 */, TILEGX_OPC_V2CMPNE, TILEGX_OPC_V2INT_H, TILEGX_OPC_V2INT_L, TILEGX_OPC_V2MAXS, TILEGX_OPC_V2MINS, TILEGX_OPC_V2MNZ, TILEGX_OPC_V2MZ, TILEGX_OPC_V2PACKH, TILEGX_OPC_V2PACKL, TILEGX_OPC_V2PACKUC, TILEGX_OPC_V2SHLSC, TILEGX_OPC_V2SHL, TILEGX_OPC_V2SHRS, TILEGX_OPC_V2SHRU, TILEGX_OPC_V2SUBSC, TILEGX_OPC_V2SUB, - BITFIELD(49, 4) /* index 1142 */, + BITFIELD(49, 4) /* index 1202 */, TILEGX_OPC_V4ADDSC, TILEGX_OPC_V4ADD, TILEGX_OPC_V4INT_H, TILEGX_OPC_V4INT_L, TILEGX_OPC_V4PACKSC, TILEGX_OPC_V4SHLSC, TILEGX_OPC_V4SHL, TILEGX_OPC_V4SHRS, TILEGX_OPC_V4SHRU, TILEGX_OPC_V4SUBSC, TILEGX_OPC_V4SUB, TILEGX_OPC_XOR, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(49, 4) /* index 1159 */, + BITFIELD(49, 4) /* index 1219 */, TILEGX_OPC_NONE, TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHLXI, TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, TILEGX_OPC_SHRUXI, TILEGX_OPC_V1SHLI, TILEGX_OPC_V1SHRSI, TILEGX_OPC_V1SHRUI, TILEGX_OPC_V2SHLI, TILEGX_OPC_V2SHRSI, TILEGX_OPC_V2SHRUI, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(31, 2) /* index 1176 */, + BITFIELD(31, 2) /* index 1236 */, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1181), - BITFIELD(33, 2) /* index 1181 */, + CHILD(1241), + BITFIELD(33, 2) /* index 1241 */, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1186), - BITFIELD(35, 2) /* index 1186 */, + CHILD(1246), + BITFIELD(35, 2) /* index 1246 */, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1191), - BITFIELD(37, 2) /* index 1191 */, + CHILD(1251), + BITFIELD(37, 2) /* index 1251 */, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1196), - BITFIELD(39, 2) /* index 1196 */, + CHILD(1256), + BITFIELD(39, 2) /* index 1256 */, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1201), - BITFIELD(41, 2) /* index 1201 */, + CHILD(1261), + BITFIELD(41, 2) /* index 1261 */, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_INFOL, }; @@ -7328,22 +7394,22 @@ const struct tilegx_operand tilegx_operands[35] = { TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), 6, 0, 0, 1, 0, 0, - create_Dest_X0, get_Dest_X0 + create_Dest_X1, get_Dest_X1 }, { TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), 6, 0, 1, 0, 0, 0, - create_SrcA_X0, get_SrcA_X0 + create_SrcA_X1, get_SrcA_X1 }, { TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), 6, 0, 0, 1, 0, 0, - create_Dest_X1, get_Dest_X1 + create_Dest_X0, get_Dest_X0 }, { TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), 6, 0, 1, 0, 0, 0, - create_SrcA_X1, get_SrcA_X1 + create_SrcA_X0, get_SrcA_X0 }, { TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), diff --git a/opcodes/tilepro-opc.c b/opcodes/tilepro-opc.c index c3f6be4..9158d0e 100644 --- a/opcodes/tilepro-opc.c +++ b/opcodes/tilepro-opc.c @@ -41,7 +41,7 @@ #include <stddef.h> #endif -const struct tilepro_opcode tilepro_opcodes[395] = +const struct tilepro_opcode tilepro_opcodes[397] = { { "bpt", TILEPRO_OPC_BPT, 0x2, 0, TREG_ZERO, 0, { { 0, }, { }, { 0, }, { 0, }, { 0, } }, @@ -138,8 +138,46 @@ const struct tilepro_opcode tilepro_opcodes[395] = } #endif }, + { "lw_tls", TILEPRO_OPC_LW_TLS, 0x2, 3, TREG_ZERO, 1, + { { 0, }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, +#ifndef DISASM_ONLY + { + 0ULL, + 0xfffff80000000000ULL, + 0ULL, + 0ULL, + 0ULL + }, + { + -1ULL, + 0x30d0000000000000ULL, + -1ULL, + -1ULL, + -1ULL + } +#endif + }, + { "lw_tls.sn", TILEPRO_OPC_LW_TLS_SN, 0x2, 3, TREG_SN, 1, + { { 0, }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, +#ifndef DISASM_ONLY + { + 0ULL, + 0xfffff80000000000ULL, + 0ULL, + 0ULL, + 0ULL + }, + { + -1ULL, + 0x34d0000000000000ULL, + -1ULL, + -1ULL, + -1ULL + } +#endif + }, { "move", TILEPRO_OPC_MOVE, 0xf, 2, TREG_ZERO, 1, - { { 7, 8 }, { 9, 10 }, { 11, 12 }, { 13, 14 }, { 0, } }, + { { 9, 10 }, { 7, 8 }, { 11, 12 }, { 13, 14 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -158,7 +196,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "move.sn", TILEPRO_OPC_MOVE_SN, 0x3, 2, TREG_SN, 1, - { { 7, 8 }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10 }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -177,7 +215,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "movei", TILEPRO_OPC_MOVEI, 0xf, 2, TREG_ZERO, 1, - { { 7, 0 }, { 9, 1 }, { 11, 2 }, { 13, 3 }, { 0, } }, + { { 9, 0 }, { 7, 1 }, { 11, 2 }, { 13, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00fc0ULL, @@ -196,7 +234,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "movei.sn", TILEPRO_OPC_MOVEI_SN, 0x3, 2, TREG_SN, 1, - { { 7, 0 }, { 9, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 0 }, { 7, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00fc0ULL, @@ -215,7 +253,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "moveli", TILEPRO_OPC_MOVELI, 0x3, 2, TREG_ZERO, 1, - { { 7, 4 }, { 9, 5 }, { 0, }, { 0, }, { 0, } }, + { { 9, 4 }, { 7, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x8000000070000fc0ULL, @@ -234,7 +272,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "moveli.sn", TILEPRO_OPC_MOVELI_SN, 0x3, 2, TREG_SN, 1, - { { 7, 4 }, { 9, 5 }, { 0, }, { 0, }, { 0, } }, + { { 9, 4 }, { 7, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x8000000070000fc0ULL, @@ -253,7 +291,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "movelis", TILEPRO_OPC_MOVELIS, 0x3, 2, TREG_SN, 1, - { { 7, 4 }, { 9, 5 }, { 0, }, { 0, }, { 0, } }, + { { 9, 4 }, { 7, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x8000000070000fc0ULL, @@ -272,7 +310,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "prefetch", TILEPRO_OPC_PREFETCH, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 15 } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 15 } }, #ifndef DISASM_ONLY { 0ULL, @@ -310,7 +348,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "add", TILEPRO_OPC_ADD, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -329,7 +367,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "add.sn", TILEPRO_OPC_ADD_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -348,7 +386,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addb", TILEPRO_OPC_ADDB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -367,7 +405,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addb.sn", TILEPRO_OPC_ADDB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -386,7 +424,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addbs_u", TILEPRO_OPC_ADDBS_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -405,7 +443,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addbs_u.sn", TILEPRO_OPC_ADDBS_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -424,7 +462,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addh", TILEPRO_OPC_ADDH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -443,7 +481,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addh.sn", TILEPRO_OPC_ADDH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -462,7 +500,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addhs", TILEPRO_OPC_ADDHS, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -481,7 +519,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addhs.sn", TILEPRO_OPC_ADDHS_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -500,7 +538,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addi", TILEPRO_OPC_ADDI, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -519,7 +557,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addi.sn", TILEPRO_OPC_ADDI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -538,7 +576,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addib", TILEPRO_OPC_ADDIB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -557,7 +595,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addib.sn", TILEPRO_OPC_ADDIB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -576,7 +614,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addih", TILEPRO_OPC_ADDIH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -595,7 +633,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addih.sn", TILEPRO_OPC_ADDIH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -614,7 +652,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addli", TILEPRO_OPC_ADDLI, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 4 }, { 9, 10, 5 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 4 }, { 7, 8, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x8000000070000000ULL, @@ -633,7 +671,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addli.sn", TILEPRO_OPC_ADDLI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 4 }, { 9, 10, 5 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 4 }, { 7, 8, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x8000000070000000ULL, @@ -652,7 +690,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "addlis", TILEPRO_OPC_ADDLIS, 0x3, 3, TREG_SN, 1, - { { 7, 8, 4 }, { 9, 10, 5 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 4 }, { 7, 8, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x8000000070000000ULL, @@ -671,7 +709,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "adds", TILEPRO_OPC_ADDS, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -690,7 +728,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "adds.sn", TILEPRO_OPC_ADDS_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -709,7 +747,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "adiffb_u", TILEPRO_OPC_ADIFFB_U, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -728,7 +766,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "adiffb_u.sn", TILEPRO_OPC_ADIFFB_U_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -747,7 +785,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "adiffh", TILEPRO_OPC_ADIFFH, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -766,7 +804,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "adiffh.sn", TILEPRO_OPC_ADIFFH_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -785,7 +823,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "and", TILEPRO_OPC_AND, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -804,7 +842,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "and.sn", TILEPRO_OPC_AND_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -823,7 +861,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "andi", TILEPRO_OPC_ANDI, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -842,7 +880,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "andi.sn", TILEPRO_OPC_ANDI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -861,7 +899,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "auli", TILEPRO_OPC_AULI, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 4 }, { 9, 10, 5 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 4 }, { 7, 8, 5 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x8000000070000000ULL, @@ -880,7 +918,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "avgb_u", TILEPRO_OPC_AVGB_U, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -899,7 +937,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "avgb_u.sn", TILEPRO_OPC_AVGB_U_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -918,7 +956,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "avgh", TILEPRO_OPC_AVGH, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -937,7 +975,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "avgh.sn", TILEPRO_OPC_AVGH_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -956,7 +994,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bbns", TILEPRO_OPC_BBNS, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -975,7 +1013,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bbns.sn", TILEPRO_OPC_BBNS_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -994,7 +1032,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bbnst", TILEPRO_OPC_BBNST, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1013,7 +1051,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bbnst.sn", TILEPRO_OPC_BBNST_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1032,7 +1070,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bbs", TILEPRO_OPC_BBS, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1051,7 +1089,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bbs.sn", TILEPRO_OPC_BBS_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1070,7 +1108,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bbst", TILEPRO_OPC_BBST, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1089,7 +1127,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bbst.sn", TILEPRO_OPC_BBST_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1108,7 +1146,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bgez", TILEPRO_OPC_BGEZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1127,7 +1165,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bgez.sn", TILEPRO_OPC_BGEZ_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1146,7 +1184,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bgezt", TILEPRO_OPC_BGEZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1165,7 +1203,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bgezt.sn", TILEPRO_OPC_BGEZT_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1184,7 +1222,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bgz", TILEPRO_OPC_BGZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1203,7 +1241,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bgz.sn", TILEPRO_OPC_BGZ_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1222,7 +1260,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bgzt", TILEPRO_OPC_BGZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1241,7 +1279,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bgzt.sn", TILEPRO_OPC_BGZT_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1260,7 +1298,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bitx", TILEPRO_OPC_BITX, 0x5, 2, TREG_ZERO, 1, - { { 7, 8 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -1279,7 +1317,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bitx.sn", TILEPRO_OPC_BITX_SN, 0x1, 2, TREG_SN, 1, - { { 7, 8 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -1298,7 +1336,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "blez", TILEPRO_OPC_BLEZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1317,7 +1355,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "blez.sn", TILEPRO_OPC_BLEZ_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1336,7 +1374,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "blezt", TILEPRO_OPC_BLEZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1355,7 +1393,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "blezt.sn", TILEPRO_OPC_BLEZT_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1374,7 +1412,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "blz", TILEPRO_OPC_BLZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1393,7 +1431,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "blz.sn", TILEPRO_OPC_BLZ_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1412,7 +1450,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "blzt", TILEPRO_OPC_BLZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1431,7 +1469,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "blzt.sn", TILEPRO_OPC_BLZT_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1450,7 +1488,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bnz", TILEPRO_OPC_BNZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1469,7 +1507,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bnz.sn", TILEPRO_OPC_BNZ_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1488,7 +1526,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bnzt", TILEPRO_OPC_BNZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1507,7 +1545,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bnzt.sn", TILEPRO_OPC_BNZT_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1526,7 +1564,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bytex", TILEPRO_OPC_BYTEX, 0x5, 2, TREG_ZERO, 1, - { { 7, 8 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -1545,7 +1583,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bytex.sn", TILEPRO_OPC_BYTEX_SN, 0x1, 2, TREG_SN, 1, - { { 7, 8 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -1564,7 +1602,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bz", TILEPRO_OPC_BZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1583,7 +1621,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bz.sn", TILEPRO_OPC_BZ_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1602,7 +1640,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bzt", TILEPRO_OPC_BZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1621,7 +1659,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "bzt.sn", TILEPRO_OPC_BZT_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 10, 20 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8, 20 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1640,7 +1678,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "clz", TILEPRO_OPC_CLZ, 0x5, 2, TREG_ZERO, 1, - { { 7, 8 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -1659,7 +1697,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "clz.sn", TILEPRO_OPC_CLZ_SN, 0x1, 2, TREG_SN, 1, - { { 7, 8 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -1678,7 +1716,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "crc32_32", TILEPRO_OPC_CRC32_32, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -1697,7 +1735,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "crc32_32.sn", TILEPRO_OPC_CRC32_32_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -1716,7 +1754,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "crc32_8", TILEPRO_OPC_CRC32_8, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -1735,7 +1773,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "crc32_8.sn", TILEPRO_OPC_CRC32_8_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -1754,7 +1792,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "ctz", TILEPRO_OPC_CTZ, 0x5, 2, TREG_ZERO, 1, - { { 7, 8 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -1773,7 +1811,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "ctz.sn", TILEPRO_OPC_CTZ_SN, 0x1, 2, TREG_SN, 1, - { { 7, 8 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -1811,7 +1849,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "dtlbpr", TILEPRO_OPC_DTLBPR, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1830,7 +1868,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "dword_align", TILEPRO_OPC_DWORD_ALIGN, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -1849,7 +1887,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "dword_align.sn", TILEPRO_OPC_DWORD_ALIGN_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -1868,7 +1906,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "finv", TILEPRO_OPC_FINV, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1887,7 +1925,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "flush", TILEPRO_OPC_FLUSH, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1925,7 +1963,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "icoh", TILEPRO_OPC_ICOH, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -1963,7 +2001,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "inthb", TILEPRO_OPC_INTHB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -1982,7 +2020,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "inthb.sn", TILEPRO_OPC_INTHB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2001,7 +2039,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "inthh", TILEPRO_OPC_INTHH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2020,7 +2058,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "inthh.sn", TILEPRO_OPC_INTHH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2039,7 +2077,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "intlb", TILEPRO_OPC_INTLB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2058,7 +2096,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "intlb.sn", TILEPRO_OPC_INTLB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2077,7 +2115,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "intlh", TILEPRO_OPC_INTLH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2096,7 +2134,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "intlh.sn", TILEPRO_OPC_INTLH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2115,7 +2153,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "inv", TILEPRO_OPC_INV, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2191,7 +2229,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "jalr", TILEPRO_OPC_JALR, 0x2, 1, TREG_LR, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2210,7 +2248,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "jalrp", TILEPRO_OPC_JALRP, 0x2, 1, TREG_LR, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2267,7 +2305,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "jr", TILEPRO_OPC_JR, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2286,7 +2324,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "jrp", TILEPRO_OPC_JRP, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2305,7 +2343,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lb", TILEPRO_OPC_LB, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 23, 15 } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 23, 15 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2324,7 +2362,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lb.sn", TILEPRO_OPC_LB_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2343,7 +2381,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lb_u", TILEPRO_OPC_LB_U, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 23, 15 } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 23, 15 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2362,7 +2400,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lb_u.sn", TILEPRO_OPC_LB_U_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2381,7 +2419,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lbadd", TILEPRO_OPC_LBADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2400,7 +2438,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lbadd.sn", TILEPRO_OPC_LBADD_SN, 0x2, 3, TREG_SN, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2419,7 +2457,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lbadd_u", TILEPRO_OPC_LBADD_U, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2438,7 +2476,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lbadd_u.sn", TILEPRO_OPC_LBADD_U_SN, 0x2, 3, TREG_SN, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2457,7 +2495,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lh", TILEPRO_OPC_LH, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 23, 15 } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 23, 15 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2476,7 +2514,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lh.sn", TILEPRO_OPC_LH_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2495,7 +2533,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lh_u", TILEPRO_OPC_LH_U, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 23, 15 } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 23, 15 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2514,7 +2552,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lh_u.sn", TILEPRO_OPC_LH_U_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2533,7 +2571,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lhadd", TILEPRO_OPC_LHADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2552,7 +2590,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lhadd.sn", TILEPRO_OPC_LHADD_SN, 0x2, 3, TREG_SN, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2571,7 +2609,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lhadd_u", TILEPRO_OPC_LHADD_U, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2590,7 +2628,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lhadd_u.sn", TILEPRO_OPC_LHADD_U_SN, 0x2, 3, TREG_SN, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2609,7 +2647,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lnk", TILEPRO_OPC_LNK, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2628,7 +2666,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lnk.sn", TILEPRO_OPC_LNK_SN, 0x2, 1, TREG_SN, 1, - { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2647,7 +2685,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lw", TILEPRO_OPC_LW, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 23, 15 } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 23, 15 } }, #ifndef DISASM_ONLY { 0ULL, @@ -2666,7 +2704,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lw.sn", TILEPRO_OPC_LW_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2685,7 +2723,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lw_na", TILEPRO_OPC_LW_NA, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2704,7 +2742,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lw_na.sn", TILEPRO_OPC_LW_NA_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2723,7 +2761,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lwadd", TILEPRO_OPC_LWADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2742,7 +2780,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lwadd.sn", TILEPRO_OPC_LWADD_SN, 0x2, 3, TREG_SN, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2761,7 +2799,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lwadd_na", TILEPRO_OPC_LWADD_NA, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2780,7 +2818,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "lwadd_na.sn", TILEPRO_OPC_LWADD_NA_SN, 0x2, 3, TREG_SN, 1, - { { 0, }, { 9, 24, 1 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 24, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2799,7 +2837,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "maxb_u", TILEPRO_OPC_MAXB_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2818,7 +2856,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "maxb_u.sn", TILEPRO_OPC_MAXB_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2837,7 +2875,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "maxh", TILEPRO_OPC_MAXH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2856,7 +2894,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "maxh.sn", TILEPRO_OPC_MAXH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -2875,7 +2913,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "maxib_u", TILEPRO_OPC_MAXIB_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -2894,7 +2932,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "maxib_u.sn", TILEPRO_OPC_MAXIB_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -2913,7 +2951,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "maxih", TILEPRO_OPC_MAXIH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -2932,7 +2970,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "maxih.sn", TILEPRO_OPC_MAXIH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -2970,7 +3008,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mfspr", TILEPRO_OPC_MFSPR, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 25 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 25 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -2989,7 +3027,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "minb_u", TILEPRO_OPC_MINB_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3008,7 +3046,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "minb_u.sn", TILEPRO_OPC_MINB_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3027,7 +3065,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "minh", TILEPRO_OPC_MINH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3046,7 +3084,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "minh.sn", TILEPRO_OPC_MINH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3065,7 +3103,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "minib_u", TILEPRO_OPC_MINIB_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -3084,7 +3122,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "minib_u.sn", TILEPRO_OPC_MINIB_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -3103,7 +3141,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "minih", TILEPRO_OPC_MINIH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -3122,7 +3160,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "minih.sn", TILEPRO_OPC_MINIH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -3141,7 +3179,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mm", TILEPRO_OPC_MM, 0x3, 5, TREG_ZERO, 1, - { { 7, 8, 16, 26, 27 }, { 9, 10, 17, 28, 29 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16, 26, 27 }, { 7, 8, 17, 28, 29 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x8000000070000000ULL, @@ -3160,7 +3198,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mnz", TILEPRO_OPC_MNZ, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3179,7 +3217,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mnz.sn", TILEPRO_OPC_MNZ_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3198,7 +3236,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mnzb", TILEPRO_OPC_MNZB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3217,7 +3255,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mnzb.sn", TILEPRO_OPC_MNZB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3236,7 +3274,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mnzh", TILEPRO_OPC_MNZH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3255,7 +3293,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mnzh.sn", TILEPRO_OPC_MNZH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3274,7 +3312,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mtspr", TILEPRO_OPC_MTSPR, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 30, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 30, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -3293,7 +3331,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhh_ss", TILEPRO_OPC_MULHH_SS, 0x5, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 11, 12, 18 }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 11, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3312,7 +3350,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhh_ss.sn", TILEPRO_OPC_MULHH_SS_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3331,7 +3369,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhh_su", TILEPRO_OPC_MULHH_SU, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3350,7 +3388,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhh_su.sn", TILEPRO_OPC_MULHH_SU_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3369,7 +3407,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhh_uu", TILEPRO_OPC_MULHH_UU, 0x5, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 11, 12, 18 }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 11, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3388,7 +3426,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhh_uu.sn", TILEPRO_OPC_MULHH_UU_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3407,7 +3445,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhha_ss", TILEPRO_OPC_MULHHA_SS, 0x5, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3426,7 +3464,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhha_ss.sn", TILEPRO_OPC_MULHHA_SS_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3445,7 +3483,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhha_su", TILEPRO_OPC_MULHHA_SU, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3464,7 +3502,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhha_su.sn", TILEPRO_OPC_MULHHA_SU_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3483,7 +3521,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhha_uu", TILEPRO_OPC_MULHHA_UU, 0x5, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3502,7 +3540,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhha_uu.sn", TILEPRO_OPC_MULHHA_UU_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3521,7 +3559,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhhsa_uu", TILEPRO_OPC_MULHHSA_UU, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3540,7 +3578,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhhsa_uu.sn", TILEPRO_OPC_MULHHSA_UU_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3559,7 +3597,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhl_ss", TILEPRO_OPC_MULHL_SS, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3578,7 +3616,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhl_ss.sn", TILEPRO_OPC_MULHL_SS_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3597,7 +3635,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhl_su", TILEPRO_OPC_MULHL_SU, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3616,7 +3654,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhl_su.sn", TILEPRO_OPC_MULHL_SU_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3635,7 +3673,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhl_us", TILEPRO_OPC_MULHL_US, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3654,7 +3692,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhl_us.sn", TILEPRO_OPC_MULHL_US_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3673,7 +3711,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhl_uu", TILEPRO_OPC_MULHL_UU, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3692,7 +3730,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhl_uu.sn", TILEPRO_OPC_MULHL_UU_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3711,7 +3749,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhla_ss", TILEPRO_OPC_MULHLA_SS, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3730,7 +3768,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhla_ss.sn", TILEPRO_OPC_MULHLA_SS_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3749,7 +3787,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhla_su", TILEPRO_OPC_MULHLA_SU, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3768,7 +3806,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhla_su.sn", TILEPRO_OPC_MULHLA_SU_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3787,7 +3825,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhla_us", TILEPRO_OPC_MULHLA_US, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3806,7 +3844,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhla_us.sn", TILEPRO_OPC_MULHLA_US_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3825,7 +3863,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhla_uu", TILEPRO_OPC_MULHLA_UU, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3844,7 +3882,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhla_uu.sn", TILEPRO_OPC_MULHLA_UU_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3863,7 +3901,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhlsa_uu", TILEPRO_OPC_MULHLSA_UU, 0x5, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3882,7 +3920,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulhlsa_uu.sn", TILEPRO_OPC_MULHLSA_UU_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3901,7 +3939,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulll_ss", TILEPRO_OPC_MULLL_SS, 0x5, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 11, 12, 18 }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 11, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3920,7 +3958,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulll_ss.sn", TILEPRO_OPC_MULLL_SS_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3939,7 +3977,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulll_su", TILEPRO_OPC_MULLL_SU, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3958,7 +3996,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulll_su.sn", TILEPRO_OPC_MULLL_SU_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3977,7 +4015,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulll_uu", TILEPRO_OPC_MULLL_UU, 0x5, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 11, 12, 18 }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 11, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -3996,7 +4034,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulll_uu.sn", TILEPRO_OPC_MULLL_UU_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4015,7 +4053,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mullla_ss", TILEPRO_OPC_MULLLA_SS, 0x5, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4034,7 +4072,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mullla_ss.sn", TILEPRO_OPC_MULLLA_SS_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4053,7 +4091,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mullla_su", TILEPRO_OPC_MULLLA_SU, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4072,7 +4110,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mullla_su.sn", TILEPRO_OPC_MULLLA_SU_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4091,7 +4129,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mullla_uu", TILEPRO_OPC_MULLLA_UU, 0x5, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4110,7 +4148,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mullla_uu.sn", TILEPRO_OPC_MULLLA_UU_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4129,7 +4167,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulllsa_uu", TILEPRO_OPC_MULLLSA_UU, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4148,7 +4186,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mulllsa_uu.sn", TILEPRO_OPC_MULLLSA_UU_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4167,7 +4205,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mvnz", TILEPRO_OPC_MVNZ, 0x5, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4186,7 +4224,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mvnz.sn", TILEPRO_OPC_MVNZ_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4205,7 +4243,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mvz", TILEPRO_OPC_MVZ, 0x5, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 31, 12, 18 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4224,7 +4262,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mvz.sn", TILEPRO_OPC_MVZ_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4243,7 +4281,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mz", TILEPRO_OPC_MZ, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4262,7 +4300,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mz.sn", TILEPRO_OPC_MZ_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4281,7 +4319,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mzb", TILEPRO_OPC_MZB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4300,7 +4338,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mzb.sn", TILEPRO_OPC_MZB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4319,7 +4357,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mzh", TILEPRO_OPC_MZH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4338,7 +4376,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "mzh.sn", TILEPRO_OPC_MZH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4395,7 +4433,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "nor", TILEPRO_OPC_NOR, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4414,7 +4452,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "nor.sn", TILEPRO_OPC_NOR_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4433,7 +4471,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "or", TILEPRO_OPC_OR, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4452,7 +4490,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "or.sn", TILEPRO_OPC_OR_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4471,7 +4509,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "ori", TILEPRO_OPC_ORI, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -4490,7 +4528,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "ori.sn", TILEPRO_OPC_ORI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -4509,7 +4547,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "packbs_u", TILEPRO_OPC_PACKBS_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4528,7 +4566,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "packbs_u.sn", TILEPRO_OPC_PACKBS_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4547,7 +4585,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "packhb", TILEPRO_OPC_PACKHB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4566,7 +4604,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "packhb.sn", TILEPRO_OPC_PACKHB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4585,7 +4623,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "packhs", TILEPRO_OPC_PACKHS, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4604,7 +4642,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "packhs.sn", TILEPRO_OPC_PACKHS_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4623,7 +4661,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "packlb", TILEPRO_OPC_PACKLB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4642,7 +4680,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "packlb.sn", TILEPRO_OPC_PACKLB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4661,7 +4699,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "pcnt", TILEPRO_OPC_PCNT, 0x5, 2, TREG_ZERO, 1, - { { 7, 8 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 11, 12 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -4680,7 +4718,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "pcnt.sn", TILEPRO_OPC_PCNT_SN, 0x1, 2, TREG_SN, 1, - { { 7, 8 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -4699,7 +4737,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "rl", TILEPRO_OPC_RL, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4718,7 +4756,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "rl.sn", TILEPRO_OPC_RL_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4737,7 +4775,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "rli", TILEPRO_OPC_RLI, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 11, 12, 34 }, { 13, 14, 35 }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 11, 12, 34 }, { 13, 14, 35 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -4756,7 +4794,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "rli.sn", TILEPRO_OPC_RLI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -4775,7 +4813,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "s1a", TILEPRO_OPC_S1A, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4794,7 +4832,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "s1a.sn", TILEPRO_OPC_S1A_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4813,7 +4851,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "s2a", TILEPRO_OPC_S2A, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4832,7 +4870,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "s2a.sn", TILEPRO_OPC_S2A_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4851,7 +4889,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "s3a", TILEPRO_OPC_S3A, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4870,7 +4908,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "s3a.sn", TILEPRO_OPC_S3A_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4889,7 +4927,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadab_u", TILEPRO_OPC_SADAB_U, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4908,7 +4946,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadab_u.sn", TILEPRO_OPC_SADAB_U_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4927,7 +4965,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadah", TILEPRO_OPC_SADAH, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4946,7 +4984,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadah.sn", TILEPRO_OPC_SADAH_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4965,7 +5003,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadah_u", TILEPRO_OPC_SADAH_U, 0x1, 3, TREG_ZERO, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -4984,7 +5022,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadah_u.sn", TILEPRO_OPC_SADAH_U_SN, 0x1, 3, TREG_SN, 1, - { { 21, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5003,7 +5041,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadb_u", TILEPRO_OPC_SADB_U, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5022,7 +5060,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadb_u.sn", TILEPRO_OPC_SADB_U_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5041,7 +5079,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadh", TILEPRO_OPC_SADH, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5060,7 +5098,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadh.sn", TILEPRO_OPC_SADH_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5079,7 +5117,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadh_u", TILEPRO_OPC_SADH_U, 0x1, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5098,7 +5136,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sadh_u.sn", TILEPRO_OPC_SADH_U_SN, 0x1, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5117,7 +5155,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sb", TILEPRO_OPC_SB, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 10, 17 }, { 0, }, { 0, }, { 15, 36 } }, + { { 0, }, { 8, 17 }, { 0, }, { 0, }, { 15, 36 } }, #ifndef DISASM_ONLY { 0ULL, @@ -5155,7 +5193,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seq", TILEPRO_OPC_SEQ, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5174,7 +5212,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seq.sn", TILEPRO_OPC_SEQ_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5193,7 +5231,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqb", TILEPRO_OPC_SEQB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5212,7 +5250,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqb.sn", TILEPRO_OPC_SEQB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5231,7 +5269,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqh", TILEPRO_OPC_SEQH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5250,7 +5288,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqh.sn", TILEPRO_OPC_SEQH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5269,7 +5307,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqi", TILEPRO_OPC_SEQI, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -5288,7 +5326,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqi.sn", TILEPRO_OPC_SEQI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -5307,7 +5345,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqib", TILEPRO_OPC_SEQIB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -5326,7 +5364,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqib.sn", TILEPRO_OPC_SEQIB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -5345,7 +5383,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqih", TILEPRO_OPC_SEQIH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -5364,7 +5402,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "seqih.sn", TILEPRO_OPC_SEQIH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -5383,7 +5421,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sh", TILEPRO_OPC_SH, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 10, 17 }, { 0, }, { 0, }, { 15, 36 } }, + { { 0, }, { 8, 17 }, { 0, }, { 0, }, { 15, 36 } }, #ifndef DISASM_ONLY { 0ULL, @@ -5421,7 +5459,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shl", TILEPRO_OPC_SHL, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5440,7 +5478,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shl.sn", TILEPRO_OPC_SHL_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5459,7 +5497,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shlb", TILEPRO_OPC_SHLB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5478,7 +5516,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shlb.sn", TILEPRO_OPC_SHLB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5497,7 +5535,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shlh", TILEPRO_OPC_SHLH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5516,7 +5554,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shlh.sn", TILEPRO_OPC_SHLH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5535,7 +5573,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shli", TILEPRO_OPC_SHLI, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 11, 12, 34 }, { 13, 14, 35 }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 11, 12, 34 }, { 13, 14, 35 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5554,7 +5592,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shli.sn", TILEPRO_OPC_SHLI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5573,7 +5611,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shlib", TILEPRO_OPC_SHLIB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5592,7 +5630,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shlib.sn", TILEPRO_OPC_SHLIB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5611,7 +5649,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shlih", TILEPRO_OPC_SHLIH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5630,7 +5668,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shlih.sn", TILEPRO_OPC_SHLIH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5649,7 +5687,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shr", TILEPRO_OPC_SHR, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5668,7 +5706,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shr.sn", TILEPRO_OPC_SHR_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5687,7 +5725,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shrb", TILEPRO_OPC_SHRB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5706,7 +5744,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shrb.sn", TILEPRO_OPC_SHRB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5725,7 +5763,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shrh", TILEPRO_OPC_SHRH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5744,7 +5782,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shrh.sn", TILEPRO_OPC_SHRH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5763,7 +5801,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shri", TILEPRO_OPC_SHRI, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 11, 12, 34 }, { 13, 14, 35 }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 11, 12, 34 }, { 13, 14, 35 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5782,7 +5820,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shri.sn", TILEPRO_OPC_SHRI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5801,7 +5839,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shrib", TILEPRO_OPC_SHRIB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5820,7 +5858,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shrib.sn", TILEPRO_OPC_SHRIB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5839,7 +5877,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shrih", TILEPRO_OPC_SHRIH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5858,7 +5896,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "shrih.sn", TILEPRO_OPC_SHRIH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -5877,7 +5915,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slt", TILEPRO_OPC_SLT, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5896,7 +5934,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slt.sn", TILEPRO_OPC_SLT_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5915,7 +5953,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slt_u", TILEPRO_OPC_SLT_U, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5934,7 +5972,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slt_u.sn", TILEPRO_OPC_SLT_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5953,7 +5991,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltb", TILEPRO_OPC_SLTB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5972,7 +6010,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltb.sn", TILEPRO_OPC_SLTB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -5991,7 +6029,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltb_u", TILEPRO_OPC_SLTB_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6010,7 +6048,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltb_u.sn", TILEPRO_OPC_SLTB_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6029,7 +6067,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slte", TILEPRO_OPC_SLTE, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6048,7 +6086,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slte.sn", TILEPRO_OPC_SLTE_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6067,7 +6105,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slte_u", TILEPRO_OPC_SLTE_U, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6086,7 +6124,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slte_u.sn", TILEPRO_OPC_SLTE_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6105,7 +6143,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slteb", TILEPRO_OPC_SLTEB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6124,7 +6162,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slteb.sn", TILEPRO_OPC_SLTEB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6143,7 +6181,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slteb_u", TILEPRO_OPC_SLTEB_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6162,7 +6200,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slteb_u.sn", TILEPRO_OPC_SLTEB_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6181,7 +6219,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slteh", TILEPRO_OPC_SLTEH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6200,7 +6238,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slteh.sn", TILEPRO_OPC_SLTEH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6219,7 +6257,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slteh_u", TILEPRO_OPC_SLTEH_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6238,7 +6276,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slteh_u.sn", TILEPRO_OPC_SLTEH_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6257,7 +6295,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slth", TILEPRO_OPC_SLTH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6276,7 +6314,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slth.sn", TILEPRO_OPC_SLTH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6295,7 +6333,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slth_u", TILEPRO_OPC_SLTH_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6314,7 +6352,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slth_u.sn", TILEPRO_OPC_SLTH_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6333,7 +6371,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slti", TILEPRO_OPC_SLTI, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6352,7 +6390,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slti.sn", TILEPRO_OPC_SLTI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6371,7 +6409,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slti_u", TILEPRO_OPC_SLTI_U, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 11, 12, 2 }, { 13, 14, 3 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6390,7 +6428,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "slti_u.sn", TILEPRO_OPC_SLTI_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6409,7 +6447,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltib", TILEPRO_OPC_SLTIB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6428,7 +6466,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltib.sn", TILEPRO_OPC_SLTIB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6447,7 +6485,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltib_u", TILEPRO_OPC_SLTIB_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6466,7 +6504,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltib_u.sn", TILEPRO_OPC_SLTIB_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6485,7 +6523,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltih", TILEPRO_OPC_SLTIH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6504,7 +6542,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltih.sn", TILEPRO_OPC_SLTIH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6523,7 +6561,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltih_u", TILEPRO_OPC_SLTIH_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6542,7 +6580,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sltih_u.sn", TILEPRO_OPC_SLTIH_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -6561,7 +6599,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sne", TILEPRO_OPC_SNE, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6580,7 +6618,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sne.sn", TILEPRO_OPC_SNE_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6599,7 +6637,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sneb", TILEPRO_OPC_SNEB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6618,7 +6656,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sneb.sn", TILEPRO_OPC_SNEB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6637,7 +6675,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sneh", TILEPRO_OPC_SNEH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6656,7 +6694,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sneh.sn", TILEPRO_OPC_SNEH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6675,7 +6713,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sra", TILEPRO_OPC_SRA, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6694,7 +6732,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sra.sn", TILEPRO_OPC_SRA_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6713,7 +6751,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "srab", TILEPRO_OPC_SRAB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6732,7 +6770,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "srab.sn", TILEPRO_OPC_SRAB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6751,7 +6789,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "srah", TILEPRO_OPC_SRAH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6770,7 +6808,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "srah.sn", TILEPRO_OPC_SRAH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6789,7 +6827,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "srai", TILEPRO_OPC_SRAI, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 11, 12, 34 }, { 13, 14, 35 }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 11, 12, 34 }, { 13, 14, 35 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -6808,7 +6846,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "srai.sn", TILEPRO_OPC_SRAI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -6827,7 +6865,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sraib", TILEPRO_OPC_SRAIB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -6846,7 +6884,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sraib.sn", TILEPRO_OPC_SRAIB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -6865,7 +6903,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sraih", TILEPRO_OPC_SRAIH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -6884,7 +6922,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sraih.sn", TILEPRO_OPC_SRAIH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 32 }, { 9, 10, 33 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 32 }, { 7, 8, 33 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffe0000ULL, @@ -6903,7 +6941,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sub", TILEPRO_OPC_SUB, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6922,7 +6960,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sub.sn", TILEPRO_OPC_SUB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6941,7 +6979,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subb", TILEPRO_OPC_SUBB, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6960,7 +6998,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subb.sn", TILEPRO_OPC_SUBB_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6979,7 +7017,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subbs_u", TILEPRO_OPC_SUBBS_U, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -6998,7 +7036,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subbs_u.sn", TILEPRO_OPC_SUBBS_U_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -7017,7 +7055,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subh", TILEPRO_OPC_SUBH, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -7036,7 +7074,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subh.sn", TILEPRO_OPC_SUBH_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -7055,7 +7093,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subhs", TILEPRO_OPC_SUBHS, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -7074,7 +7112,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subhs.sn", TILEPRO_OPC_SUBHS_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -7093,7 +7131,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subs", TILEPRO_OPC_SUBS, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -7112,7 +7150,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "subs.sn", TILEPRO_OPC_SUBS_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -7131,7 +7169,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "sw", TILEPRO_OPC_SW, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 10, 17 }, { 0, }, { 0, }, { 15, 36 } }, + { { 0, }, { 8, 17 }, { 0, }, { 0, }, { 15, 36 } }, #ifndef DISASM_ONLY { 0ULL, @@ -7245,7 +7283,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tblidxb0", TILEPRO_OPC_TBLIDXB0, 0x5, 2, TREG_ZERO, 1, - { { 21, 8 }, { 0, }, { 31, 12 }, { 0, }, { 0, } }, + { { 21, 10 }, { 0, }, { 31, 12 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -7264,7 +7302,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tblidxb0.sn", TILEPRO_OPC_TBLIDXB0_SN, 0x1, 2, TREG_SN, 1, - { { 21, 8 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -7283,7 +7321,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tblidxb1", TILEPRO_OPC_TBLIDXB1, 0x5, 2, TREG_ZERO, 1, - { { 21, 8 }, { 0, }, { 31, 12 }, { 0, }, { 0, } }, + { { 21, 10 }, { 0, }, { 31, 12 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -7302,7 +7340,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tblidxb1.sn", TILEPRO_OPC_TBLIDXB1_SN, 0x1, 2, TREG_SN, 1, - { { 21, 8 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -7321,7 +7359,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tblidxb2", TILEPRO_OPC_TBLIDXB2, 0x5, 2, TREG_ZERO, 1, - { { 21, 8 }, { 0, }, { 31, 12 }, { 0, }, { 0, } }, + { { 21, 10 }, { 0, }, { 31, 12 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -7340,7 +7378,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tblidxb2.sn", TILEPRO_OPC_TBLIDXB2_SN, 0x1, 2, TREG_SN, 1, - { { 21, 8 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -7359,7 +7397,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tblidxb3", TILEPRO_OPC_TBLIDXB3, 0x5, 2, TREG_ZERO, 1, - { { 21, 8 }, { 0, }, { 31, 12 }, { 0, }, { 0, } }, + { { 21, 10 }, { 0, }, { 31, 12 }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -7378,7 +7416,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tblidxb3.sn", TILEPRO_OPC_TBLIDXB3_SN, 0x1, 2, TREG_SN, 1, - { { 21, 8 }, { 0, }, { 0, }, { 0, }, { 0, } }, + { { 21, 10 }, { 0, }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffff000ULL, @@ -7397,7 +7435,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tns", TILEPRO_OPC_TNS, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -7416,7 +7454,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "tns.sn", TILEPRO_OPC_TNS_SN, 0x2, 2, TREG_SN, 1, - { { 0, }, { 9, 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 7, 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -7435,7 +7473,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "wh64", TILEPRO_OPC_WH64, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 10 }, { 0, }, { 0, }, { 0, } }, + { { 0, }, { 8 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0ULL, @@ -7454,7 +7492,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "xor", TILEPRO_OPC_XOR, 0xf, 3, TREG_ZERO, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 11, 12, 18 }, { 13, 14, 19 }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -7473,7 +7511,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "xor.sn", TILEPRO_OPC_XOR_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 16 }, { 9, 10, 17 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 16 }, { 7, 8, 17 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ffc0000ULL, @@ -7492,7 +7530,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "xori", TILEPRO_OPC_XORI, 0x3, 3, TREG_ZERO, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -7511,7 +7549,7 @@ const struct tilepro_opcode tilepro_opcodes[395] = #endif }, { "xori.sn", TILEPRO_OPC_XORI_SN, 0x3, 3, TREG_SN, 1, - { { 7, 8, 0 }, { 9, 10, 1 }, { 0, }, { 0, }, { 0, } }, + { { 9, 10, 0 }, { 7, 8, 1 }, { 0, }, { 0, }, { 0, } }, #ifndef DISASM_ONLY { 0x800000007ff00000ULL, @@ -7935,7 +7973,7 @@ static const unsigned short decode_X0_fsm[1153] = TILEPRO_OPC_TBLIDXB3_SN, TILEPRO_OPC_NONE, }; -static const unsigned short decode_X1_fsm[1540] = +static const unsigned short decode_X1_fsm[1580] = { BITFIELD(54, 9) /* index 0 */, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, @@ -7979,7 +8017,7 @@ static const unsigned short decode_X1_fsm[1540] = TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, - CHILD(941), CHILD(950), CHILD(974), CHILD(983), TILEPRO_OPC_NONE, + CHILD(961), CHILD(970), CHILD(994), CHILD(1003), TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_MM, @@ -7990,11 +8028,11 @@ static const unsigned short decode_X1_fsm[1540] = TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, - TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, CHILD(992), + TILEPRO_OPC_MM, TILEPRO_OPC_MM, TILEPRO_OPC_MM, CHILD(1032), TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, - TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, CHILD(1334), + TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, CHILD(1374), TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, @@ -8223,43 +8261,62 @@ static const unsigned short decode_X1_fsm[1540] = TILEPRO_OPC_SLTI, TILEPRO_OPC_SLTI_U, TILEPRO_OPC_XORI, TILEPRO_OPC_LBADD, TILEPRO_OPC_LBADD_U, BITFIELD(51, 3) /* index 932 */, - TILEPRO_OPC_LHADD, TILEPRO_OPC_LHADD_U, TILEPRO_OPC_LWADD, - TILEPRO_OPC_LWADD_NA, TILEPRO_OPC_SBADD, TILEPRO_OPC_SHADD, - TILEPRO_OPC_SWADD, TILEPRO_OPC_NONE, - BITFIELD(51, 3) /* index 941 */, + TILEPRO_OPC_LHADD, TILEPRO_OPC_LHADD_U, CHILD(941), TILEPRO_OPC_LWADD_NA, + TILEPRO_OPC_SBADD, TILEPRO_OPC_SHADD, TILEPRO_OPC_SWADD, TILEPRO_OPC_NONE, + BITFIELD(43, 2) /* index 941 */, + CHILD(946), TILEPRO_OPC_LWADD, TILEPRO_OPC_LWADD, TILEPRO_OPC_LWADD, + BITFIELD(45, 2) /* index 946 */, + CHILD(951), TILEPRO_OPC_LWADD, TILEPRO_OPC_LWADD, TILEPRO_OPC_LWADD, + BITFIELD(47, 2) /* index 951 */, + CHILD(956), TILEPRO_OPC_LWADD, TILEPRO_OPC_LWADD, TILEPRO_OPC_LWADD, + BITFIELD(49, 2) /* index 956 */, + TILEPRO_OPC_LW_TLS, TILEPRO_OPC_LWADD, TILEPRO_OPC_LWADD, TILEPRO_OPC_LWADD, + BITFIELD(51, 3) /* index 961 */, TILEPRO_OPC_NONE, TILEPRO_OPC_ADDIB_SN, TILEPRO_OPC_ADDIH_SN, TILEPRO_OPC_ADDI_SN, TILEPRO_OPC_ANDI_SN, TILEPRO_OPC_MAXIB_U_SN, TILEPRO_OPC_MAXIH_SN, TILEPRO_OPC_MFSPR, - BITFIELD(51, 3) /* index 950 */, - TILEPRO_OPC_MINIB_U_SN, TILEPRO_OPC_MINIH_SN, TILEPRO_OPC_MTSPR, CHILD(959), + BITFIELD(51, 3) /* index 970 */, + TILEPRO_OPC_MINIB_U_SN, TILEPRO_OPC_MINIH_SN, TILEPRO_OPC_MTSPR, CHILD(979), TILEPRO_OPC_SEQIB_SN, TILEPRO_OPC_SEQIH_SN, TILEPRO_OPC_SEQI_SN, TILEPRO_OPC_SLTIB_SN, - BITFIELD(37, 2) /* index 959 */, - TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, CHILD(964), - BITFIELD(39, 2) /* index 964 */, - TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, CHILD(969), - BITFIELD(41, 2) /* index 969 */, + BITFIELD(37, 2) /* index 979 */, + TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, CHILD(984), + BITFIELD(39, 2) /* index 984 */, + TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, CHILD(989), + BITFIELD(41, 2) /* index 989 */, TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, TILEPRO_OPC_ORI_SN, TILEPRO_OPC_MOVEI_SN, - BITFIELD(51, 3) /* index 974 */, + BITFIELD(51, 3) /* index 994 */, TILEPRO_OPC_SLTIB_U_SN, TILEPRO_OPC_SLTIH_SN, TILEPRO_OPC_SLTIH_U_SN, TILEPRO_OPC_SLTI_SN, TILEPRO_OPC_SLTI_U_SN, TILEPRO_OPC_XORI_SN, TILEPRO_OPC_LBADD_SN, TILEPRO_OPC_LBADD_U_SN, - BITFIELD(51, 3) /* index 983 */, - TILEPRO_OPC_LHADD_SN, TILEPRO_OPC_LHADD_U_SN, TILEPRO_OPC_LWADD_SN, + BITFIELD(51, 3) /* index 1003 */, + TILEPRO_OPC_LHADD_SN, TILEPRO_OPC_LHADD_U_SN, CHILD(1012), TILEPRO_OPC_LWADD_NA_SN, TILEPRO_OPC_SBADD, TILEPRO_OPC_SHADD, TILEPRO_OPC_SWADD, TILEPRO_OPC_NONE, - BITFIELD(46, 7) /* index 992 */, + BITFIELD(43, 2) /* index 1012 */, + CHILD(1017), TILEPRO_OPC_LWADD_SN, TILEPRO_OPC_LWADD_SN, + TILEPRO_OPC_LWADD_SN, + BITFIELD(45, 2) /* index 1017 */, + CHILD(1022), TILEPRO_OPC_LWADD_SN, TILEPRO_OPC_LWADD_SN, + TILEPRO_OPC_LWADD_SN, + BITFIELD(47, 2) /* index 1022 */, + CHILD(1027), TILEPRO_OPC_LWADD_SN, TILEPRO_OPC_LWADD_SN, + TILEPRO_OPC_LWADD_SN, + BITFIELD(49, 2) /* index 1027 */, + TILEPRO_OPC_LW_TLS_SN, TILEPRO_OPC_LWADD_SN, TILEPRO_OPC_LWADD_SN, + TILEPRO_OPC_LWADD_SN, + BITFIELD(46, 7) /* index 1032 */, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, - CHILD(1121), CHILD(1121), CHILD(1121), CHILD(1121), CHILD(1124), - CHILD(1124), CHILD(1124), CHILD(1124), CHILD(1127), CHILD(1127), - CHILD(1127), CHILD(1127), CHILD(1130), CHILD(1130), CHILD(1130), - CHILD(1130), CHILD(1133), CHILD(1133), CHILD(1133), CHILD(1133), - CHILD(1136), CHILD(1136), CHILD(1136), CHILD(1136), CHILD(1139), - CHILD(1139), CHILD(1139), CHILD(1139), CHILD(1142), CHILD(1142), - CHILD(1142), CHILD(1142), CHILD(1145), CHILD(1145), CHILD(1145), - CHILD(1145), CHILD(1148), CHILD(1148), CHILD(1148), CHILD(1148), - CHILD(1151), CHILD(1242), CHILD(1290), CHILD(1323), TILEPRO_OPC_NONE, + CHILD(1161), CHILD(1161), CHILD(1161), CHILD(1161), CHILD(1164), + CHILD(1164), CHILD(1164), CHILD(1164), CHILD(1167), CHILD(1167), + CHILD(1167), CHILD(1167), CHILD(1170), CHILD(1170), CHILD(1170), + CHILD(1170), CHILD(1173), CHILD(1173), CHILD(1173), CHILD(1173), + CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1179), + CHILD(1179), CHILD(1179), CHILD(1179), CHILD(1182), CHILD(1182), + CHILD(1182), CHILD(1182), CHILD(1185), CHILD(1185), CHILD(1185), + CHILD(1185), CHILD(1188), CHILD(1188), CHILD(1188), CHILD(1188), + CHILD(1191), CHILD(1282), CHILD(1330), CHILD(1363), TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, @@ -8280,130 +8337,130 @@ static const unsigned short decode_X1_fsm[1540] = TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1121 */, + BITFIELD(53, 1) /* index 1161 */, TILEPRO_OPC_RLI, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1124 */, + BITFIELD(53, 1) /* index 1164 */, TILEPRO_OPC_SHLIB, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1127 */, + BITFIELD(53, 1) /* index 1167 */, TILEPRO_OPC_SHLIH, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1130 */, + BITFIELD(53, 1) /* index 1170 */, TILEPRO_OPC_SHLI, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1133 */, + BITFIELD(53, 1) /* index 1173 */, TILEPRO_OPC_SHRIB, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1136 */, + BITFIELD(53, 1) /* index 1176 */, TILEPRO_OPC_SHRIH, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1139 */, + BITFIELD(53, 1) /* index 1179 */, TILEPRO_OPC_SHRI, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1142 */, + BITFIELD(53, 1) /* index 1182 */, TILEPRO_OPC_SRAIB, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1145 */, + BITFIELD(53, 1) /* index 1185 */, TILEPRO_OPC_SRAIH, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1148 */, + BITFIELD(53, 1) /* index 1188 */, TILEPRO_OPC_SRAI, TILEPRO_OPC_NONE, - BITFIELD(43, 3) /* index 1151 */, - TILEPRO_OPC_NONE, CHILD(1160), CHILD(1163), CHILD(1166), CHILD(1169), - CHILD(1172), CHILD(1175), CHILD(1178), - BITFIELD(53, 1) /* index 1160 */, + BITFIELD(43, 3) /* index 1191 */, + TILEPRO_OPC_NONE, CHILD(1200), CHILD(1203), CHILD(1206), CHILD(1209), + CHILD(1212), CHILD(1215), CHILD(1218), + BITFIELD(53, 1) /* index 1200 */, TILEPRO_OPC_DRAIN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1163 */, + BITFIELD(53, 1) /* index 1203 */, TILEPRO_OPC_DTLBPR, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1166 */, + BITFIELD(53, 1) /* index 1206 */, TILEPRO_OPC_FINV, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1169 */, + BITFIELD(53, 1) /* index 1209 */, TILEPRO_OPC_FLUSH, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1172 */, + BITFIELD(53, 1) /* index 1212 */, TILEPRO_OPC_FNOP, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1175 */, + BITFIELD(53, 1) /* index 1215 */, TILEPRO_OPC_ICOH, TILEPRO_OPC_NONE, - BITFIELD(31, 2) /* index 1178 */, - CHILD(1183), CHILD(1211), CHILD(1239), CHILD(1239), - BITFIELD(53, 1) /* index 1183 */, - CHILD(1186), TILEPRO_OPC_NONE, - BITFIELD(33, 2) /* index 1186 */, - TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, CHILD(1191), - BITFIELD(35, 2) /* index 1191 */, - TILEPRO_OPC_ILL, CHILD(1196), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, - BITFIELD(37, 2) /* index 1196 */, - TILEPRO_OPC_ILL, CHILD(1201), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, - BITFIELD(39, 2) /* index 1201 */, - TILEPRO_OPC_ILL, CHILD(1206), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, - BITFIELD(41, 2) /* index 1206 */, + BITFIELD(31, 2) /* index 1218 */, + CHILD(1223), CHILD(1251), CHILD(1279), CHILD(1279), + BITFIELD(53, 1) /* index 1223 */, + CHILD(1226), TILEPRO_OPC_NONE, + BITFIELD(33, 2) /* index 1226 */, + TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, CHILD(1231), + BITFIELD(35, 2) /* index 1231 */, + TILEPRO_OPC_ILL, CHILD(1236), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, + BITFIELD(37, 2) /* index 1236 */, + TILEPRO_OPC_ILL, CHILD(1241), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, + BITFIELD(39, 2) /* index 1241 */, + TILEPRO_OPC_ILL, CHILD(1246), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, + BITFIELD(41, 2) /* index 1246 */, TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, TILEPRO_OPC_BPT, TILEPRO_OPC_ILL, - BITFIELD(53, 1) /* index 1211 */, - CHILD(1214), TILEPRO_OPC_NONE, - BITFIELD(33, 2) /* index 1214 */, - TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, CHILD(1219), - BITFIELD(35, 2) /* index 1219 */, - TILEPRO_OPC_ILL, CHILD(1224), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, - BITFIELD(37, 2) /* index 1224 */, - TILEPRO_OPC_ILL, CHILD(1229), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, - BITFIELD(39, 2) /* index 1229 */, - TILEPRO_OPC_ILL, CHILD(1234), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, - BITFIELD(41, 2) /* index 1234 */, + BITFIELD(53, 1) /* index 1251 */, + CHILD(1254), TILEPRO_OPC_NONE, + BITFIELD(33, 2) /* index 1254 */, + TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, CHILD(1259), + BITFIELD(35, 2) /* index 1259 */, + TILEPRO_OPC_ILL, CHILD(1264), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, + BITFIELD(37, 2) /* index 1264 */, + TILEPRO_OPC_ILL, CHILD(1269), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, + BITFIELD(39, 2) /* index 1269 */, + TILEPRO_OPC_ILL, CHILD(1274), TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, + BITFIELD(41, 2) /* index 1274 */, TILEPRO_OPC_ILL, TILEPRO_OPC_ILL, TILEPRO_OPC_RAISE, TILEPRO_OPC_ILL, - BITFIELD(53, 1) /* index 1239 */, + BITFIELD(53, 1) /* index 1279 */, TILEPRO_OPC_ILL, TILEPRO_OPC_NONE, - BITFIELD(43, 3) /* index 1242 */, - CHILD(1251), CHILD(1254), CHILD(1257), CHILD(1275), CHILD(1278), - CHILD(1281), CHILD(1284), CHILD(1287), - BITFIELD(53, 1) /* index 1251 */, + BITFIELD(43, 3) /* index 1282 */, + CHILD(1291), CHILD(1294), CHILD(1297), CHILD(1315), CHILD(1318), + CHILD(1321), CHILD(1324), CHILD(1327), + BITFIELD(53, 1) /* index 1291 */, TILEPRO_OPC_INV, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1254 */, + BITFIELD(53, 1) /* index 1294 */, TILEPRO_OPC_IRET, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1257 */, - CHILD(1260), TILEPRO_OPC_NONE, - BITFIELD(31, 2) /* index 1260 */, - TILEPRO_OPC_LB, TILEPRO_OPC_LB, TILEPRO_OPC_LB, CHILD(1265), - BITFIELD(33, 2) /* index 1265 */, - TILEPRO_OPC_LB, TILEPRO_OPC_LB, TILEPRO_OPC_LB, CHILD(1270), - BITFIELD(35, 2) /* index 1270 */, + BITFIELD(53, 1) /* index 1297 */, + CHILD(1300), TILEPRO_OPC_NONE, + BITFIELD(31, 2) /* index 1300 */, + TILEPRO_OPC_LB, TILEPRO_OPC_LB, TILEPRO_OPC_LB, CHILD(1305), + BITFIELD(33, 2) /* index 1305 */, + TILEPRO_OPC_LB, TILEPRO_OPC_LB, TILEPRO_OPC_LB, CHILD(1310), + BITFIELD(35, 2) /* index 1310 */, TILEPRO_OPC_LB, TILEPRO_OPC_LB, TILEPRO_OPC_LB, TILEPRO_OPC_PREFETCH, - BITFIELD(53, 1) /* index 1275 */, + BITFIELD(53, 1) /* index 1315 */, TILEPRO_OPC_LB_U, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1278 */, + BITFIELD(53, 1) /* index 1318 */, TILEPRO_OPC_LH, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1281 */, + BITFIELD(53, 1) /* index 1321 */, TILEPRO_OPC_LH_U, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1284 */, + BITFIELD(53, 1) /* index 1324 */, TILEPRO_OPC_LW, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1287 */, + BITFIELD(53, 1) /* index 1327 */, TILEPRO_OPC_MF, TILEPRO_OPC_NONE, - BITFIELD(43, 3) /* index 1290 */, - CHILD(1299), CHILD(1302), CHILD(1305), CHILD(1308), CHILD(1311), - CHILD(1314), CHILD(1317), CHILD(1320), - BITFIELD(53, 1) /* index 1299 */, + BITFIELD(43, 3) /* index 1330 */, + CHILD(1339), CHILD(1342), CHILD(1345), CHILD(1348), CHILD(1351), + CHILD(1354), CHILD(1357), CHILD(1360), + BITFIELD(53, 1) /* index 1339 */, TILEPRO_OPC_NAP, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1302 */, + BITFIELD(53, 1) /* index 1342 */, TILEPRO_OPC_NOP, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1305 */, + BITFIELD(53, 1) /* index 1345 */, TILEPRO_OPC_SWINT0, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1308 */, + BITFIELD(53, 1) /* index 1348 */, TILEPRO_OPC_SWINT1, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1311 */, + BITFIELD(53, 1) /* index 1351 */, TILEPRO_OPC_SWINT2, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1314 */, + BITFIELD(53, 1) /* index 1354 */, TILEPRO_OPC_SWINT3, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1317 */, + BITFIELD(53, 1) /* index 1357 */, TILEPRO_OPC_TNS, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1320 */, + BITFIELD(53, 1) /* index 1360 */, TILEPRO_OPC_WH64, TILEPRO_OPC_NONE, - BITFIELD(43, 2) /* index 1323 */, - CHILD(1328), TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, - BITFIELD(45, 1) /* index 1328 */, - CHILD(1331), TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1331 */, + BITFIELD(43, 2) /* index 1363 */, + CHILD(1368), TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, + BITFIELD(45, 1) /* index 1368 */, + CHILD(1371), TILEPRO_OPC_NONE, + BITFIELD(53, 1) /* index 1371 */, TILEPRO_OPC_LW_NA, TILEPRO_OPC_NONE, - BITFIELD(46, 7) /* index 1334 */, + BITFIELD(46, 7) /* index 1374 */, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, - CHILD(1463), CHILD(1463), CHILD(1463), CHILD(1463), CHILD(1466), - CHILD(1466), CHILD(1466), CHILD(1466), CHILD(1469), CHILD(1469), - CHILD(1469), CHILD(1469), CHILD(1472), CHILD(1472), CHILD(1472), - CHILD(1472), CHILD(1475), CHILD(1475), CHILD(1475), CHILD(1475), - CHILD(1478), CHILD(1478), CHILD(1478), CHILD(1478), CHILD(1481), - CHILD(1481), CHILD(1481), CHILD(1481), CHILD(1484), CHILD(1484), - CHILD(1484), CHILD(1484), CHILD(1487), CHILD(1487), CHILD(1487), - CHILD(1487), CHILD(1490), CHILD(1490), CHILD(1490), CHILD(1490), - CHILD(1151), CHILD(1493), CHILD(1517), CHILD(1529), TILEPRO_OPC_NONE, + CHILD(1503), CHILD(1503), CHILD(1503), CHILD(1503), CHILD(1506), + CHILD(1506), CHILD(1506), CHILD(1506), CHILD(1509), CHILD(1509), + CHILD(1509), CHILD(1509), CHILD(1512), CHILD(1512), CHILD(1512), + CHILD(1512), CHILD(1515), CHILD(1515), CHILD(1515), CHILD(1515), + CHILD(1518), CHILD(1518), CHILD(1518), CHILD(1518), CHILD(1521), + CHILD(1521), CHILD(1521), CHILD(1521), CHILD(1524), CHILD(1524), + CHILD(1524), CHILD(1524), CHILD(1527), CHILD(1527), CHILD(1527), + CHILD(1527), CHILD(1530), CHILD(1530), CHILD(1530), CHILD(1530), + CHILD(1191), CHILD(1533), CHILD(1557), CHILD(1569), TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, @@ -8424,49 +8481,49 @@ static const unsigned short decode_X1_fsm[1540] = TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1463 */, + BITFIELD(53, 1) /* index 1503 */, TILEPRO_OPC_RLI_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1466 */, + BITFIELD(53, 1) /* index 1506 */, TILEPRO_OPC_SHLIB_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1469 */, + BITFIELD(53, 1) /* index 1509 */, TILEPRO_OPC_SHLIH_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1472 */, + BITFIELD(53, 1) /* index 1512 */, TILEPRO_OPC_SHLI_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1475 */, + BITFIELD(53, 1) /* index 1515 */, TILEPRO_OPC_SHRIB_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1478 */, + BITFIELD(53, 1) /* index 1518 */, TILEPRO_OPC_SHRIH_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1481 */, + BITFIELD(53, 1) /* index 1521 */, TILEPRO_OPC_SHRI_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1484 */, + BITFIELD(53, 1) /* index 1524 */, TILEPRO_OPC_SRAIB_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1487 */, + BITFIELD(53, 1) /* index 1527 */, TILEPRO_OPC_SRAIH_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1490 */, + BITFIELD(53, 1) /* index 1530 */, TILEPRO_OPC_SRAI_SN, TILEPRO_OPC_NONE, - BITFIELD(43, 3) /* index 1493 */, - CHILD(1251), CHILD(1254), CHILD(1502), CHILD(1505), CHILD(1508), - CHILD(1511), CHILD(1514), CHILD(1287), - BITFIELD(53, 1) /* index 1502 */, + BITFIELD(43, 3) /* index 1533 */, + CHILD(1291), CHILD(1294), CHILD(1542), CHILD(1545), CHILD(1548), + CHILD(1551), CHILD(1554), CHILD(1327), + BITFIELD(53, 1) /* index 1542 */, TILEPRO_OPC_LB_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1505 */, + BITFIELD(53, 1) /* index 1545 */, TILEPRO_OPC_LB_U_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1508 */, + BITFIELD(53, 1) /* index 1548 */, TILEPRO_OPC_LH_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1511 */, + BITFIELD(53, 1) /* index 1551 */, TILEPRO_OPC_LH_U_SN, TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1514 */, + BITFIELD(53, 1) /* index 1554 */, TILEPRO_OPC_LW_SN, TILEPRO_OPC_NONE, - BITFIELD(43, 3) /* index 1517 */, - CHILD(1299), CHILD(1302), CHILD(1305), CHILD(1308), CHILD(1311), - CHILD(1314), CHILD(1526), CHILD(1320), - BITFIELD(53, 1) /* index 1526 */, + BITFIELD(43, 3) /* index 1557 */, + CHILD(1339), CHILD(1342), CHILD(1345), CHILD(1348), CHILD(1351), + CHILD(1354), CHILD(1566), CHILD(1360), + BITFIELD(53, 1) /* index 1566 */, TILEPRO_OPC_TNS_SN, TILEPRO_OPC_NONE, - BITFIELD(43, 2) /* index 1529 */, - CHILD(1534), TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, - BITFIELD(45, 1) /* index 1534 */, - CHILD(1537), TILEPRO_OPC_NONE, - BITFIELD(53, 1) /* index 1537 */, + BITFIELD(43, 2) /* index 1569 */, + CHILD(1574), TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, TILEPRO_OPC_NONE, + BITFIELD(45, 1) /* index 1574 */, + CHILD(1577), TILEPRO_OPC_NONE, + BITFIELD(53, 1) /* index 1577 */, TILEPRO_OPC_LW_NA_SN, TILEPRO_OPC_NONE, }; @@ -9358,22 +9415,22 @@ const struct tilepro_operand tilepro_operands[43] = { TILEPRO_OP_TYPE_REGISTER, BFD_RELOC(NONE), 6, 0, 0, 1, 0, 0, - create_Dest_X0, get_Dest_X0 + create_Dest_X1, get_Dest_X1 }, { TILEPRO_OP_TYPE_REGISTER, BFD_RELOC(NONE), 6, 0, 1, 0, 0, 0, - create_SrcA_X0, get_SrcA_X0 + create_SrcA_X1, get_SrcA_X1 }, { TILEPRO_OP_TYPE_REGISTER, BFD_RELOC(NONE), 6, 0, 0, 1, 0, 0, - create_Dest_X1, get_Dest_X1 + create_Dest_X0, get_Dest_X0 }, { TILEPRO_OP_TYPE_REGISTER, BFD_RELOC(NONE), 6, 0, 1, 0, 0, 0, - create_SrcA_X1, get_SrcA_X1 + create_SrcA_X0, get_SrcA_X0 }, { TILEPRO_OP_TYPE_REGISTER, BFD_RELOC(NONE), |