X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=sim%2Fsh64%2Fdefs-compact.h;h=e22dfb7f113a35f11c8d3ffbef754651f826d7f0;hb=8a0ebee658862bec66191df192c1d3b09bf0c943;hp=fb0b7e41640f3cd4e077fa7edff763a51a37567b;hpb=2ee563b53258d390d7446e90a67f465d504ae44c;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/sh64/defs-compact.h b/sim/sh64/defs-compact.h index fb0b7e4164..e22dfb7f11 100644 --- a/sim/sh64/defs-compact.h +++ b/sim/sh64/defs-compact.h @@ -2,23 +2,22 @@ THIS FILE IS MACHINE GENERATED WITH CGEN. -Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +Copyright 1996-2015 Free Software Foundation, Inc. -This file is part of the GNU Simulators. +This file is part of the GNU simulators. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + You should have received a copy of the GNU General Public License along + with this program; if not, see . */ @@ -30,27 +29,20 @@ with this program; if not, write to the Free Software Foundation, Inc., union sem_fields { struct { /* no operands */ int empty; - } fmt_empty; - struct { /* */ - SI f_dn; - } sfmt_fcnvds_compact; + } sfmt_empty; struct { /* */ IADDR i_disp12; } sfmt_bra_compact; struct { /* */ IADDR i_disp8; } sfmt_bf_compact; - struct { /* */ - SI f_imm4x2; - UINT f_rm; - } sfmt_movw11_compact; struct { /* */ SI f_imm8x2; UINT f_rn; } sfmt_movw10_compact; struct { /* */ SI f_imm4x2; - UINT f_rn; + UINT f_rm; } sfmt_movw5_compact; struct { /* */ SI f_imm8x4; @@ -60,6 +52,10 @@ union sem_fields { UINT f_imm4; UINT f_rm; } sfmt_movb5_compact; + struct { /* */ + INT f_imm20; + UINT f_rn; + } sfmt_movi20_compact; struct { /* */ SI f_vm; SI f_vn; @@ -68,11 +64,26 @@ union sem_fields { UINT f_imm8; UINT f_rn; } sfmt_addi_compact; + struct { /* */ + SI f_imm12x4; + UINT f_rm; + UINT f_rn; + } sfmt_movl12_compact; struct { /* */ SI f_imm4x4; UINT f_rm; UINT f_rn; } sfmt_movl5_compact; + struct { /* */ + SI f_dm; + SI f_imm12x8; + UINT f_rn; + } sfmt_fmov9_compact; + struct { /* */ + SI f_dn; + SI f_imm12x8; + UINT f_rm; + } sfmt_fmov8_compact; #if WITH_SCACHE_PBB /* Writeback handler. */ struct { @@ -141,10 +152,10 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_ADD_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4); \ - f_sub4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \ #define EXTRACT_IFMT_ADDI_COMPACT_VARS \ UINT f_op4; \ @@ -153,9 +164,9 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_ADDI_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_imm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); \ #define EXTRACT_IFMT_AND_COMPACT_VARS \ UINT f_op4; \ @@ -165,10 +176,10 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_AND_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4); \ - f_sub4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \ #define EXTRACT_IFMT_ANDI_COMPACT_VARS \ UINT f_op8; \ @@ -176,8 +187,8 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_ANDI_COMPACT_CODE \ length = 2; \ - f_op8 = EXTRACT_LSB0_UINT (insn, 16, 15, 8); \ - f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8); \ + f_op8 = EXTRACT_MSB0_UINT (insn, 16, 0, 8); \ + f_imm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); \ #define EXTRACT_IFMT_ANDB_COMPACT_VARS \ UINT f_op8; \ @@ -185,8 +196,8 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_ANDB_COMPACT_CODE \ length = 2; \ - f_op8 = EXTRACT_LSB0_UINT (insn, 16, 15, 8); \ - f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8); \ + f_op8 = EXTRACT_MSB0_UINT (insn, 16, 0, 8); \ + f_imm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); \ #define EXTRACT_IFMT_BF_COMPACT_VARS \ UINT f_op8; \ @@ -194,8 +205,8 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_BF_COMPACT_CODE \ length = 2; \ - f_op8 = EXTRACT_LSB0_UINT (insn, 16, 15, 8); \ - f_disp8 = ((((EXTRACT_LSB0_INT (insn, 16, 7, 8)) << (1))) + (((pc) + (4)))); \ + f_op8 = EXTRACT_MSB0_UINT (insn, 16, 0, 8); \ + f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) << (1))) + (((pc) + (4)))); \ #define EXTRACT_IFMT_BRA_COMPACT_VARS \ UINT f_op4; \ @@ -203,8 +214,8 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_BRA_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_disp12 = ((((EXTRACT_LSB0_INT (insn, 16, 11, 12)) << (1))) + (((pc) + (4)))); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_disp12 = ((((EXTRACT_MSB0_SINT (insn, 16, 4, 12)) << (1))) + (((pc) + (4)))); \ #define EXTRACT_IFMT_BRAF_COMPACT_VARS \ UINT f_op4; \ @@ -213,16 +224,16 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_BRAF_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_sub8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_sub8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); \ #define EXTRACT_IFMT_BRK_COMPACT_VARS \ UINT f_op16; \ unsigned int length; #define EXTRACT_IFMT_BRK_COMPACT_CODE \ length = 2; \ - f_op16 = EXTRACT_LSB0_UINT (insn, 16, 15, 16); \ + f_op16 = EXTRACT_MSB0_UINT (insn, 16, 0, 16); \ #define EXTRACT_IFMT_FABS_COMPACT_VARS \ UINT f_op4; \ @@ -231,9 +242,9 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_FABS_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_sub8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_sub8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); \ #define EXTRACT_IFMT_FADD_COMPACT_VARS \ UINT f_op4; \ @@ -243,23 +254,23 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_FADD_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4); \ - f_sub4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \ #define EXTRACT_IFMT_FCNVDS_COMPACT_VARS \ UINT f_op4; \ SI f_dn; \ - UINT f_8_1; \ + UINT f_7_1; \ UINT f_sub8; \ unsigned int length; #define EXTRACT_IFMT_FCNVDS_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_dn = ((EXTRACT_LSB0_UINT (insn, 16, 11, 3)) << (1)); \ - f_8_1 = EXTRACT_LSB0_UINT (insn, 16, 8, 1); \ - f_sub8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_dn = ((EXTRACT_MSB0_UINT (insn, 16, 4, 3)) << (1)); \ + f_7_1 = EXTRACT_MSB0_UINT (insn, 16, 7, 1); \ + f_sub8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); \ #define EXTRACT_IFMT_FIPR_COMPACT_VARS \ UINT f_op4; \ @@ -269,10 +280,10 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_FIPR_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_vn = ((EXTRACT_LSB0_UINT (insn, 16, 11, 2)) << (2)); \ - f_vm = ((EXTRACT_LSB0_UINT (insn, 16, 9, 2)) << (2)); \ - f_sub8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_vn = ((EXTRACT_MSB0_UINT (insn, 16, 4, 2)) << (2)); \ + f_vm = ((EXTRACT_MSB0_UINT (insn, 16, 6, 2)) << (2)); \ + f_sub8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); \ #define EXTRACT_IFMT_FLDS_COMPACT_VARS \ UINT f_op4; \ @@ -281,9 +292,9 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_FLDS_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_sub8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_sub8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); \ #define EXTRACT_IFMT_FMAC_COMPACT_VARS \ UINT f_op4; \ @@ -293,10 +304,23 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_FMAC_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4); \ - f_sub4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \ + +#define EXTRACT_IFMT_FMOV1_COMPACT_VARS \ + UINT f_op4; \ + UINT f_rn; \ + UINT f_rm; \ + UINT f_sub4; \ + unsigned int length; +#define EXTRACT_IFMT_FMOV1_COMPACT_CODE \ + length = 2; \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \ #define EXTRACT_IFMT_FMOV2_COMPACT_VARS \ UINT f_op4; \ @@ -306,10 +330,10 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_FMOV2_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4); \ - f_sub4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \ #define EXTRACT_IFMT_FMOV5_COMPACT_VARS \ UINT f_op4; \ @@ -319,10 +343,48 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_FMOV5_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4); \ - f_sub4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \ + +#define EXTRACT_IFMT_FMOV8_COMPACT_VARS \ + UINT f_op4; \ + SI f_dn; \ + UINT f_7_1; \ + UINT f_rm; \ + UINT f_sub4; \ + UINT f_16_4; \ + SI f_imm12x8; \ + unsigned int length; +#define EXTRACT_IFMT_FMOV8_COMPACT_CODE \ + length = 4; \ + f_op4 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ + f_dn = ((EXTRACT_MSB0_UINT (insn, 32, 4, 3)) << (1)); \ + f_7_1 = EXTRACT_MSB0_UINT (insn, 32, 7, 1); \ + f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ + f_16_4 = EXTRACT_MSB0_UINT (insn, 32, 16, 4); \ + f_imm12x8 = ((EXTRACT_MSB0_SINT (insn, 32, 20, 12)) << (3)); \ + +#define EXTRACT_IFMT_FMOV9_COMPACT_VARS \ + UINT f_op4; \ + UINT f_rn; \ + SI f_dm; \ + UINT f_11_1; \ + UINT f_sub4; \ + UINT f_16_4; \ + SI f_imm12x8; \ + unsigned int length; +#define EXTRACT_IFMT_FMOV9_COMPACT_CODE \ + length = 4; \ + f_op4 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ + f_dm = ((EXTRACT_MSB0_UINT (insn, 32, 8, 3)) << (1)); \ + f_11_1 = EXTRACT_MSB0_UINT (insn, 32, 11, 1); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ + f_16_4 = EXTRACT_MSB0_UINT (insn, 32, 16, 4); \ + f_imm12x8 = ((EXTRACT_MSB0_SINT (insn, 32, 20, 12)) << (3)); \ #define EXTRACT_IFMT_FTRV_COMPACT_VARS \ UINT f_op4; \ @@ -331,9 +393,26 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_FTRV_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_vn = ((EXTRACT_LSB0_UINT (insn, 16, 11, 2)) << (2)); \ - f_sub10 = EXTRACT_LSB0_UINT (insn, 16, 9, 10); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_vn = ((EXTRACT_MSB0_UINT (insn, 16, 4, 2)) << (2)); \ + f_sub10 = EXTRACT_MSB0_UINT (insn, 16, 6, 10); \ + +#define EXTRACT_IFMT_MOVI20_COMPACT_VARS \ + UINT f_op4; \ + UINT f_rn; \ + INT f_imm20_hi; \ + UINT f_imm20_lo; \ + INT f_imm20; \ + UINT f_sub4; \ + unsigned int length; +#define EXTRACT_IFMT_MOVI20_COMPACT_CODE \ + length = 4; \ + f_op4 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ + f_imm20_hi = EXTRACT_MSB0_SINT (insn, 32, 8, 4); \ + f_imm20_lo = EXTRACT_MSB0_UINT (insn, 32, 16, 16); \ + f_imm20 = ((((f_imm20_hi) << (16))) | (f_imm20_lo));\ + f_sub4 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ #define EXTRACT_IFMT_MOVB5_COMPACT_VARS \ UINT f_op8; \ @@ -342,9 +421,9 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_MOVB5_COMPACT_CODE \ length = 2; \ - f_op8 = EXTRACT_LSB0_UINT (insn, 16, 15, 8); \ - f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4); \ - f_imm4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \ + f_op8 = EXTRACT_MSB0_UINT (insn, 16, 0, 8); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_imm4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \ #define EXTRACT_IFMT_MOVL4_COMPACT_VARS \ UINT f_op8; \ @@ -352,8 +431,8 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_MOVL4_COMPACT_CODE \ length = 2; \ - f_op8 = EXTRACT_LSB0_UINT (insn, 16, 15, 8); \ - f_imm8x4 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (2)); \ + f_op8 = EXTRACT_MSB0_UINT (insn, 16, 0, 8); \ + f_imm8x4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2)); \ #define EXTRACT_IFMT_MOVL5_COMPACT_VARS \ UINT f_op4; \ @@ -363,10 +442,10 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_MOVL5_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4); \ - f_imm4x4 = ((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (2)); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_imm4x4 = ((EXTRACT_MSB0_UINT (insn, 16, 12, 4)) << (2)); \ #define EXTRACT_IFMT_MOVL10_COMPACT_VARS \ UINT f_op4; \ @@ -375,9 +454,26 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_MOVL10_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_imm8x4 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (2)); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_imm8x4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2)); \ + +#define EXTRACT_IFMT_MOVL12_COMPACT_VARS \ + UINT f_op4; \ + UINT f_rn; \ + UINT f_rm; \ + UINT f_sub4; \ + UINT f_16_4; \ + SI f_imm12x4; \ + unsigned int length; +#define EXTRACT_IFMT_MOVL12_COMPACT_CODE \ + length = 4; \ + f_op4 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ + f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ + f_sub4 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ + f_16_4 = EXTRACT_MSB0_UINT (insn, 32, 16, 4); \ + f_imm12x4 = ((EXTRACT_MSB0_SINT (insn, 32, 20, 12)) << (2)); \ #define EXTRACT_IFMT_MOVW4_COMPACT_VARS \ UINT f_op8; \ @@ -385,19 +481,19 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_MOVW4_COMPACT_CODE \ length = 2; \ - f_op8 = EXTRACT_LSB0_UINT (insn, 16, 15, 8); \ - f_imm8x2 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (1)); \ + f_op8 = EXTRACT_MSB0_UINT (insn, 16, 0, 8); \ + f_imm8x2 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1)); \ #define EXTRACT_IFMT_MOVW5_COMPACT_VARS \ UINT f_op8; \ - UINT f_rn; \ + UINT f_rm; \ SI f_imm4x2; \ unsigned int length; #define EXTRACT_IFMT_MOVW5_COMPACT_CODE \ length = 2; \ - f_op8 = EXTRACT_LSB0_UINT (insn, 16, 15, 8); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_imm4x2 = ((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (1)); \ + f_op8 = EXTRACT_MSB0_UINT (insn, 16, 0, 8); \ + f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ + f_imm4x2 = ((EXTRACT_MSB0_UINT (insn, 16, 12, 4)) << (1)); \ #define EXTRACT_IFMT_MOVW10_COMPACT_VARS \ UINT f_op4; \ @@ -406,19 +502,8 @@ struct scache { unsigned int length; #define EXTRACT_IFMT_MOVW10_COMPACT_CODE \ length = 2; \ - f_op4 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \ - f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4); \ - f_imm8x2 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (1)); \ - -#define EXTRACT_IFMT_MOVW11_COMPACT_VARS \ - UINT f_op8; \ - UINT f_rm; \ - SI f_imm4x2; \ - unsigned int length; -#define EXTRACT_IFMT_MOVW11_COMPACT_CODE \ - length = 2; \ - f_op8 = EXTRACT_LSB0_UINT (insn, 16, 15, 8); \ - f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4); \ - f_imm4x2 = ((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (1)); \ + f_op4 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ + f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ + f_imm8x2 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1)); \ #endif /* DEFS_SH64_COMPACT_H */