1214571Sdim/* score-inst.h -- Score Instructions Table 2214571Sdim Copyright 2006 Free Software Foundation, Inc. 3214571Sdim Contributed by: 4214571Sdim Mei Ligang (ligang@sunnorth.com.cn) 5214571Sdim Pei-Lin Tsai (pltsai@sunplus.com) 6214571Sdim 7214571Sdim This file is part of GAS, the GNU Assembler. 8214571Sdim 9214571Sdim GAS is free software; you can redistribute it and/or modify 10214571Sdim it under the terms of the GNU General Public License as published by 11214571Sdim the Free Software Foundation; either version 2, or (at your option) 12214571Sdim any later version. 13214571Sdim 14214571Sdim GAS is distributed in the hope that it will be useful, 15214571Sdim but WITHOUT ANY WARRANTY; without even the implied warranty of 16214571Sdim MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17214571Sdim GNU General Public License for more details. 18214571Sdim 19214571Sdim You should have received a copy of the GNU General Public License 20214571Sdim along with GAS; see the file COPYING. If not, write to the Free 21214571Sdim Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 22214571Sdim 02110-1301, USA. */ 23214571Sdim 24214571Sdim#ifndef SCORE_INST_H 25214571Sdim#define SCORE_INST_H 26214571Sdim 27214571Sdim#define LDST_UNALIGN_MASK 0x0000007f 28214571Sdim#define UA_LCB 0x00000060 29214571Sdim#define UA_LCW 0x00000062 30214571Sdim#define UA_LCE 0x00000066 31214571Sdim#define UA_SCB 0x00000068 32214571Sdim#define UA_SCW 0x0000006a 33214571Sdim#define UA_SCE 0x0000006e 34214571Sdim#define UA_LL 0x0000000c 35214571Sdim#define UA_SC 0x0000000e 36214571Sdim#define LDST16_RR_MASK 0x0000000f 37214571Sdim#define N16_LW 8 38214571Sdim#define N16_LH 9 39214571Sdim#define N16_POP 10 40214571Sdim#define N16_LBU 11 41214571Sdim#define N16_SW 12 42214571Sdim#define N16_SH 13 43214571Sdim#define N16_PUSH 14 44214571Sdim#define N16_SB 15 45214571Sdim#define LDST16_RI_MASK 0x7007 46214571Sdim#define N16_LWP 0x7000 47214571Sdim#define N16_LHP 0x7001 48214571Sdim#define N16_LBUP 0x7003 49214571Sdim#define N16_SWP 0x7004 50214571Sdim#define N16_SHP 0x7005 51214571Sdim#define N16_SBP 0x7007 52214571Sdim#define N16_LIU 0x5000 53214571Sdim 54214571Sdim#define OPC_PSEUDOLDST_MASK 0x00000007 55214571Sdim 56214571Sdimenum 57214571Sdim{ 58214571Sdim INSN_LW = 0, 59214571Sdim INSN_LH = 1, 60214571Sdim INSN_LHU = 2, 61214571Sdim INSN_LB = 3, 62214571Sdim INSN_SW = 4, 63214571Sdim INSN_SH = 5, 64214571Sdim INSN_LBU = 6, 65214571Sdim INSN_SB = 7, 66214571Sdim}; 67214571Sdim 68214571Sdim/* Sub opcdoe opcode. */ 69214571Sdimenum 70214571Sdim{ 71214571Sdim INSN16_LBU = 11, 72214571Sdim INSN16_LH = 9, 73214571Sdim INSN16_LW = 8, 74214571Sdim INSN16_SB = 15, 75214571Sdim INSN16_SH = 13, 76214571Sdim INSN16_SW = 12, 77214571Sdim}; 78214571Sdim 79214571Sdimenum 80214571Sdim{ 81214571Sdim LDST_NOUPDATE = 0, 82214571Sdim LDST_PRE = 1, 83214571Sdim LDST_POST = 2, 84214571Sdim}; 85214571Sdim 86214571Sdimenum score_insn_type 87214571Sdim{ 88214571Sdim Rd_I4, 89214571Sdim Rd_I5, 90214571Sdim Rd_rvalueBP_I5, 91214571Sdim Rd_lvalueBP_I5, 92214571Sdim Rd_Rs_I5, 93214571Sdim x_Rs_I5, 94214571Sdim x_I5_x, 95214571Sdim Rd_I8, 96214571Sdim Rd_Rs_I14, 97214571Sdim I15, 98214571Sdim Rd_I16, 99214571Sdim Rd_rvalueRs_SI10, 100214571Sdim Rd_lvalueRs_SI10, 101214571Sdim Rd_rvalueRs_preSI12, 102214571Sdim Rd_rvalueRs_postSI12, 103214571Sdim Rd_lvalueRs_preSI12, 104214571Sdim Rd_lvalueRs_postSI12, 105214571Sdim Rd_Rs_SI14, 106214571Sdim Rd_rvalueRs_SI15, 107214571Sdim Rd_lvalueRs_SI15, 108214571Sdim Rd_SI16, 109214571Sdim PC_DISP8div2, 110214571Sdim PC_DISP11div2, 111214571Sdim PC_DISP19div2, 112214571Sdim PC_DISP24div2, 113214571Sdim Rd_Rs_Rs, 114214571Sdim x_Rs_x, 115214571Sdim x_Rs_Rs, 116214571Sdim Rd_Rs_x, 117214571Sdim Rd_x_Rs, 118214571Sdim Rd_x_x, 119214571Sdim Rd_Rs, 120214571Sdim Rd_HighRs, 121214571Sdim Rd_lvalueRs, 122214571Sdim Rd_rvalueRs, 123214571Sdim Rd_lvalue32Rs, 124214571Sdim Rd_rvalue32Rs, 125214571Sdim x_Rs, 126214571Sdim NO_OPD, 127214571Sdim NO16_OPD, 128214571Sdim OP5_rvalueRs_SI15, 129214571Sdim I5_Rs_Rs_I5_OP5, 130214571Sdim x_rvalueRs_post4, 131214571Sdim Rd_rvalueRs_post4, 132214571Sdim Rd_x_I5, 133214571Sdim Rd_lvalueRs_post4, 134214571Sdim x_lvalueRs_post4, 135214571Sdim Rd_LowRs, 136214571Sdim Rd_Rs_Rs_imm, 137214571Sdim Insn_Type_PCE, 138214571Sdim Insn_Type_SYN, 139214571Sdim Insn_GP, 140214571Sdim Insn_PIC, 141214571Sdim Insn_internal, 142214571Sdim}; 143214571Sdim 144214571Sdimenum score_data_type 145214571Sdim{ 146214571Sdim _IMM4 = 0, 147214571Sdim _IMM5, 148214571Sdim _IMM8, 149214571Sdim _IMM14, 150214571Sdim _IMM15, 151214571Sdim _IMM16, 152214571Sdim _SIMM10 = 6, 153214571Sdim _SIMM12, 154214571Sdim _SIMM14, 155214571Sdim _SIMM15, 156214571Sdim _SIMM16, 157214571Sdim _SIMM14_NEG = 11, 158214571Sdim _IMM16_NEG, 159214571Sdim _SIMM16_NEG, 160214571Sdim _IMM20, 161214571Sdim _IMM25, 162214571Sdim _DISP8div2 = 16, 163214571Sdim _DISP11div2, 164214571Sdim _DISP19div2, 165214571Sdim _DISP24div2, 166214571Sdim _VALUE, 167214571Sdim _VALUE_HI16, 168214571Sdim _VALUE_LO16, 169214571Sdim _VALUE_LDST_LO16 = 23, 170214571Sdim _SIMM16_LA, 171214571Sdim _IMM5_RSHIFT_1, 172214571Sdim _IMM5_RSHIFT_2, 173214571Sdim _SIMM16_LA_POS, 174214571Sdim _IMM5_RANGE_8_31, 175214571Sdim _IMM10_RSHIFT_2, 176214571Sdim _GP_IMM15 = 30, 177214571Sdim _GP_IMM14 = 31, 178214571Sdim _SIMM16_pic = 42, /* Index in score_df_range. */ 179214571Sdim _IMM16_LO16_pic = 43, 180214571Sdim _IMM16_pic = 44, 181214571Sdim}; 182214571Sdim 183214571Sdim#define REG_TMP 1 184214571Sdim 185214571Sdim#define OP_REG_TYPE (1 << 6) 186214571Sdim#define OP_IMM_TYPE (1 << 7) 187214571Sdim#define OP_SH_REGD (OP_REG_TYPE |20) 188214571Sdim#define OP_SH_REGS1 (OP_REG_TYPE |15) 189214571Sdim#define OP_SH_REGS2 (OP_REG_TYPE |10) 190214571Sdim#define OP_SH_I (OP_IMM_TYPE | 1) 191214571Sdim#define OP_SH_RI15 (OP_IMM_TYPE | 0) 192214571Sdim#define OP_SH_I12 (OP_IMM_TYPE | 3) 193214571Sdim#define OP_SH_DISP24 (OP_IMM_TYPE | 1) 194214571Sdim#define OP_SH_DISP19_p1 (OP_IMM_TYPE |15) 195214571Sdim#define OP_SH_DISP19_p2 (OP_IMM_TYPE | 1) 196214571Sdim#define OP_SH_I5 (OP_IMM_TYPE |10) 197214571Sdim#define OP_SH_I10 (OP_IMM_TYPE | 5) 198214571Sdim#define OP_SH_COPID (OP_IMM_TYPE | 5) 199214571Sdim#define OP_SH_TRAPI5 (OP_IMM_TYPE |15) 200214571Sdim#define OP_SH_I15 (OP_IMM_TYPE |10) 201214571Sdim 202214571Sdim#define OP16_SH_REGD (OP_REG_TYPE | 8) 203214571Sdim#define OP16_SH_REGS1 (OP_REG_TYPE | 4) 204214571Sdim#define OP16_SH_I45 (OP_IMM_TYPE | 3) 205214571Sdim#define OP16_SH_I8 (OP_IMM_TYPE | 0) 206214571Sdim#define OP16_SH_DISP8 (OP_IMM_TYPE | 0) 207214571Sdim#define OP16_SH_DISP11 (OP_IMM_TYPE | 1) 208214571Sdim 209214571Sdimstruct datafield_range 210214571Sdim{ 211214571Sdim int data_type; 212214571Sdim int bits; 213214571Sdim int range[2]; 214214571Sdim}; 215214571Sdim 216214571Sdimstruct datafield_range score_df_range[] = 217214571Sdim{ 218214571Sdim {_IMM4, 4, {0, (1 << 4) - 1}}, /* ( 0 ~ 15 ) */ 219214571Sdim {_IMM5, 5, {0, (1 << 5) - 1}}, /* ( 0 ~ 31 ) */ 220214571Sdim {_IMM8, 8, {0, (1 << 8) - 1}}, /* ( 0 ~ 255 ) */ 221214571Sdim {_IMM14, 14, {0, (1 << 14) - 1}}, /* ( 0 ~ 16383) */ 222214571Sdim {_IMM15, 15, {0, (1 << 15) - 1}}, /* ( 0 ~ 32767) */ 223214571Sdim {_IMM16, 16, {0, (1 << 16) - 1}}, /* ( 0 ~ 65535) */ 224214571Sdim {_SIMM10, 10, {-(1 << 9), (1 << 9) - 1}}, /* ( -512 ~ 511 ) */ 225214571Sdim {_SIMM12, 12, {-(1 << 11), (1 << 11) - 1}}, /* ( -2048 ~ 2047 ) */ 226214571Sdim {_SIMM14, 14, {-(1 << 13), (1 << 13) - 1}}, /* ( -8192 ~ 8191 ) */ 227214571Sdim {_SIMM15, 15, {-(1 << 14), (1 << 14) - 1}}, /* (-16384 ~ 16383) */ 228214571Sdim {_SIMM16, 16, {-(1 << 15), (1 << 15) - 1}}, /* (-32768 ~ 32767) */ 229214571Sdim {_SIMM14_NEG, 14, {-(1 << 13), (1 << 13) - 1}}, /* ( -8191 ~ 8192 ) */ 230214571Sdim {_IMM16_NEG, 16, {0, (1 << 16) - 1}}, /* (-65535 ~ 0 ) */ 231214571Sdim {_SIMM16_NEG, 16, {-(1 << 15), (1 << 15) - 1}}, /* (-32768 ~ 32767) */ 232214571Sdim {_IMM20, 20, {0, (1 << 20) - 1}}, 233214571Sdim {_IMM25, 25, {0, (1 << 25) - 1}}, 234214571Sdim {_DISP8div2, 8, {-(1 << 8), (1 << 8) - 1}}, /* ( -256 ~ 255 ) */ 235214571Sdim {_DISP11div2, 11, {0, 0}}, 236214571Sdim {_DISP19div2, 19, {-(1 << 19), (1 << 19) - 1}}, /* (-524288 ~ 524287) */ 237214571Sdim {_DISP24div2, 24, {0, 0}}, 238214571Sdim {_VALUE, 32, {0, ((unsigned int)1 << 31) - 1}}, 239214571Sdim {_VALUE_HI16, 16, {0, (1 << 16) - 1}}, 240214571Sdim {_VALUE_LO16, 16, {0, (1 << 16) - 1}}, 241214571Sdim {_VALUE_LDST_LO16, 16, {0, (1 << 16) - 1}}, 242214571Sdim {_SIMM16_LA, 16, {-(1 << 15), (1 << 15) - 1}}, /* (-32768 ~ 32767) */ 243214571Sdim {_IMM5_RSHIFT_1, 5, {0, (1 << 6) - 1}}, /* ( 0 ~ 63 ) */ 244214571Sdim {_IMM5_RSHIFT_2, 5, {0, (1 << 7) - 1}}, /* ( 0 ~ 127 ) */ 245214571Sdim {_SIMM16_LA_POS, 16, {0, (1 << 15) - 1}}, /* ( 0 ~ 32767) */ 246214571Sdim {_IMM5_RANGE_8_31, 5, {8, 31}}, /* But for cop0 the valid data : (8 ~ 31). */ 247214571Sdim {_IMM10_RSHIFT_2, 10, {-(1 << 11), (1 << 11) - 1}}, /* For ldc#, stc#. */ 248214571Sdim {_SIMM10, 10, {0, (1 << 10) - 1}}, /* ( -1024 ~ 1023 ) */ 249214571Sdim {_SIMM12, 12, {0, (1 << 12) - 1}}, /* ( -2048 ~ 2047 ) */ 250214571Sdim {_SIMM14, 14, {0, (1 << 14) - 1}}, /* ( -8192 ~ 8191 ) */ 251214571Sdim {_SIMM15, 15, {0, (1 << 15) - 1}}, /* (-16384 ~ 16383) */ 252214571Sdim {_SIMM16, 16, {0, (1 << 16) - 1}}, /* (-65536 ~ 65536) */ 253214571Sdim {_SIMM14_NEG, 14, {0, (1 << 16) - 1}}, /* ( -8191 ~ 8192 ) */ 254214571Sdim {_IMM16_NEG, 16, {0, (1 << 16) - 1}}, /* ( 65535 ~ 0 ) */ 255214571Sdim {_SIMM16_NEG, 16, {0, (1 << 16) - 1}}, /* ( 65535 ~ 0 ) */ 256214571Sdim {_IMM20, 20, {0, (1 << 20) - 1}}, /* (-32768 ~ 32767) */ 257214571Sdim {_IMM25, 25, {0, (1 << 25) - 1}}, /* (-32768 ~ 32767) */ 258214571Sdim {_GP_IMM15, 15, {0, (1 << 15) - 1}}, /* ( 0 ~ 65535) */ 259214571Sdim {_GP_IMM14, 14, {0, (1 << 14) - 1}}, /* ( 0 ~ 65535) */ 260214571Sdim {_SIMM16_pic, 16, {-(1 << 15), (1 << 15) - 1}}, /* (-32768 ~ 32767) */ 261214571Sdim {_IMM16_LO16_pic, 16, {0, (1 << 16) - 1}}, /* ( 65535 ~ 0 ) */ 262214571Sdim {_IMM16_pic, 16, {0, (1 << 16) - 1}}, /* ( 0 ~ 65535) */ 263214571Sdim}; 264214571Sdim 265214571Sdimstruct shift_bitmask 266214571Sdim{ 267214571Sdim int opd_type; 268214571Sdim int opd_num; 269214571Sdim struct datafield_range *df_range; 270214571Sdim int sh[4]; 271214571Sdim long fieldbits[4]; 272214571Sdim}; 273214571Sdim 274214571Sdimstruct shift_bitmask score_sh_bits_map[] = 275214571Sdim{ 276214571Sdim { 277214571Sdim Rd_I4, 2, &score_df_range[_IMM4], 278214571Sdim {OP16_SH_REGD, OP16_SH_I45, 0, 0}, 279214571Sdim {0xf, 0xf, 0, 0}, 280214571Sdim }, 281214571Sdim { 282214571Sdim Rd_I5, 2, &score_df_range[_IMM5], 283214571Sdim {OP16_SH_REGD, OP16_SH_I45, 0, 0}, 284214571Sdim {0xf, 0x1f, 0, 0}, 285214571Sdim }, 286214571Sdim { 287214571Sdim Rd_rvalueBP_I5, 2, &score_df_range[_IMM5], 288214571Sdim {OP16_SH_REGD, OP16_SH_I45, 0, 0}, 289214571Sdim {0xf, 0x1f, 0, 0}, 290214571Sdim }, 291214571Sdim { 292214571Sdim Rd_lvalueBP_I5, 2, &score_df_range[_IMM5], 293214571Sdim {OP16_SH_REGD, OP16_SH_I45, 0, 0}, 294214571Sdim {0xf, 0x1f, 0, 0}, 295214571Sdim }, 296214571Sdim { 297214571Sdim Rd_Rs_I5, 3, &score_df_range[_IMM5], 298214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_I5, 0}, 299214571Sdim {0x1f, 0x1f, 0x1f, 0}, 300214571Sdim }, 301214571Sdim { 302214571Sdim x_Rs_I5, 2, &score_df_range[_IMM5], 303214571Sdim {OP_SH_REGS1, OP_SH_I5, 0, 0}, 304214571Sdim {0x1f, 0x1f, 0, 0}, 305214571Sdim }, 306214571Sdim { 307214571Sdim x_I5_x, 1, &score_df_range[_IMM5], 308214571Sdim {OP_SH_TRAPI5, 0, 0, 0}, 309214571Sdim {0x1f, 0, 0, 0}, 310214571Sdim }, 311214571Sdim { 312214571Sdim Rd_I8, 2, &score_df_range[_IMM8], 313214571Sdim {OP16_SH_REGD, OP16_SH_I8, 0, 0}, 314214571Sdim {0xf, 0xff, 0, 0}, 315214571Sdim }, 316214571Sdim { 317214571Sdim Rd_Rs_I14, 3, &score_df_range[_IMM14], 318214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_I, 0}, 319214571Sdim {0x1f, 0x1f, 0x3fff, 0}, 320214571Sdim }, 321214571Sdim { 322214571Sdim I15, 1, &score_df_range[_IMM15], 323214571Sdim {OP_SH_I15, 0, 0, 0}, 324214571Sdim {0x7fff, 0, 0, 0}, 325214571Sdim }, 326214571Sdim { 327214571Sdim Rd_I16, 2, &score_df_range[_IMM16], 328214571Sdim {OP_SH_REGD, OP_SH_I, 0, 0}, 329214571Sdim {0x1f, 0xffff, 0, 0}, 330214571Sdim }, 331214571Sdim { 332214571Sdim Rd_rvalueRs_SI10, 3, &score_df_range[_SIMM10], 333214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_I10, 0}, 334214571Sdim {0x1f, 0x1f, 0x3ff, 0}, 335214571Sdim }, 336214571Sdim { 337214571Sdim Rd_lvalueRs_SI10, 3, &score_df_range[_SIMM10], 338214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_I10, 0}, 339214571Sdim {0x1f, 0x1f, 0x3ff, 0}, 340214571Sdim }, 341214571Sdim { 342214571Sdim Rd_rvalueRs_preSI12, 3, &score_df_range[_SIMM12], 343214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_I12, 0}, 344214571Sdim {0xf, 0xf, 0xfff, 0}, 345214571Sdim }, 346214571Sdim { 347214571Sdim Rd_rvalueRs_postSI12, 3, &score_df_range[_SIMM12], 348214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_I12, 0}, 349214571Sdim {0xf, 0xf, 0xfff, 0}, 350214571Sdim }, 351214571Sdim { 352214571Sdim Rd_lvalueRs_preSI12, 3, &score_df_range[_SIMM12], 353214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_I12, 0}, 354214571Sdim {0xf, 0xf, 0xfff, 0}, 355214571Sdim }, 356214571Sdim { 357214571Sdim Rd_lvalueRs_postSI12, 3, &score_df_range[_SIMM12], 358214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_I12, 0}, 359214571Sdim {0xf, 0xf, 0xfff, 0}, 360214571Sdim }, 361214571Sdim { 362214571Sdim Rd_Rs_SI14, 3, &score_df_range[_SIMM14], 363214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_I, 0}, 364214571Sdim {0x1f, 0x1f, 0x3fff, 0}, 365214571Sdim }, 366214571Sdim { 367214571Sdim Rd_rvalueRs_SI15, 3, &score_df_range[_SIMM15], 368214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_RI15, 0}, 369214571Sdim {0x1f, 0x1f, 0x7fff, 0}, 370214571Sdim }, 371214571Sdim { 372214571Sdim Rd_lvalueRs_SI15, 3, &score_df_range[_SIMM15], 373214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_RI15, 0}, 374214571Sdim {0x1f, 0x1f, 0x7fff, 0}, 375214571Sdim }, 376214571Sdim { 377214571Sdim Rd_SI16, 2, &score_df_range[_SIMM16], 378214571Sdim {OP_SH_REGD, OP_SH_I, 0, 0}, 379214571Sdim {0x1f, 0xffff, 0, 0}, 380214571Sdim }, 381214571Sdim { 382214571Sdim PC_DISP8div2, 1, &score_df_range[_DISP8div2], 383214571Sdim {OP16_SH_DISP8, 0, 0, 0}, 384214571Sdim {0xff, 0, 0, 0}, 385214571Sdim }, 386214571Sdim { 387214571Sdim PC_DISP11div2, 1, &score_df_range[_DISP11div2], 388214571Sdim {OP16_SH_DISP11, 0, 0, 0}, 389214571Sdim {0x7ff, 0, 0, 0}, 390214571Sdim }, 391214571Sdim { 392214571Sdim PC_DISP19div2, 2, &score_df_range[_DISP19div2], 393214571Sdim {OP_SH_DISP19_p1, OP_SH_DISP19_p2, 0, 0}, 394214571Sdim {0x3ff, 0x1ff, 0, 0}, 395214571Sdim }, 396214571Sdim { 397214571Sdim PC_DISP24div2, 1, &score_df_range[_DISP24div2], 398214571Sdim {OP_SH_DISP24, 0, 0, 0}, 399214571Sdim {0xffffff, 0, 0, 0}, 400214571Sdim }, 401214571Sdim { 402214571Sdim Rd_Rs_Rs, 3, NULL, 403214571Sdim {OP_SH_REGD, OP_SH_REGS1, OP_SH_REGS2, 0}, 404214571Sdim {0x1f, 0x1f, 0x1f, 0} 405214571Sdim }, 406214571Sdim { 407214571Sdim Rd_Rs_x, 2, NULL, 408214571Sdim {OP_SH_REGD, OP_SH_REGS1, 0, 0}, 409214571Sdim {0x1f, 0x1f, 0, 0}, 410214571Sdim }, 411214571Sdim { 412214571Sdim Rd_x_Rs, 2, NULL, 413214571Sdim {OP_SH_REGD, OP_SH_REGS2, 0, 0}, 414214571Sdim {0x1f, 0x1f, 0, 0}, 415214571Sdim }, 416214571Sdim { 417214571Sdim Rd_x_x, 1, NULL, 418214571Sdim {OP_SH_REGD, 0, 0, 0}, 419214571Sdim {0x1f, 0, 0, 0}, 420214571Sdim }, 421214571Sdim { 422214571Sdim x_Rs_Rs, 2, NULL, 423214571Sdim {OP_SH_REGS1, OP_SH_REGS2, 0, 0}, 424214571Sdim {0x1f, 0x1f, 0, 0}, 425214571Sdim }, 426214571Sdim { 427214571Sdim x_Rs_x, 1, NULL, 428214571Sdim {OP_SH_REGS1, 0, 0, 0}, 429214571Sdim {0x1f, 0, 0, 0}, 430214571Sdim }, 431214571Sdim { 432214571Sdim Rd_Rs, 2, NULL, 433214571Sdim {OP16_SH_REGD, OP16_SH_REGS1, 0, 0}, 434214571Sdim {0xf, 0xf, 0, 0}, 435214571Sdim }, 436214571Sdim { 437214571Sdim Rd_HighRs, 2, NULL, 438214571Sdim {OP16_SH_REGD, OP16_SH_REGS1, 0, 0}, 439214571Sdim {0xf, 0xf, 0x1f, 0}, 440214571Sdim }, 441214571Sdim { 442214571Sdim Rd_rvalueRs, 2, NULL, 443214571Sdim {OP16_SH_REGD, OP16_SH_REGS1, 0, 0}, 444214571Sdim {0xf, 0xf, 0, 0}, 445214571Sdim }, 446214571Sdim { 447214571Sdim Rd_lvalueRs, 2, NULL, 448214571Sdim {OP16_SH_REGD, OP16_SH_REGS1, 0, 0}, 449214571Sdim {0xf, 0xf, 0, 0} 450214571Sdim }, 451214571Sdim { 452214571Sdim Rd_lvalue32Rs, 2, NULL, 453214571Sdim {OP_SH_REGD, OP_SH_REGS1, 0, 0}, 454214571Sdim {0x1f, 0x1f, 0, 0}, 455214571Sdim }, 456214571Sdim { 457214571Sdim Rd_rvalue32Rs, 2, NULL, 458214571Sdim {OP_SH_REGD, OP_SH_REGS1, 0, 0}, 459214571Sdim {0x1f, 0x1f, 0, 0}, 460214571Sdim }, 461214571Sdim { 462214571Sdim x_Rs, 1, NULL, 463214571Sdim {OP16_SH_REGS1, 0, 0, 0}, 464214571Sdim {0xf, 0, 0, 0}, 465214571Sdim }, 466214571Sdim { 467214571Sdim NO_OPD, 0, NULL, 468214571Sdim {0, 0, 0, 0}, 469214571Sdim {0, 0, 0, 0}, 470214571Sdim }, 471214571Sdim { 472214571Sdim NO16_OPD, 0, NULL, 473214571Sdim {0, 0, 0, 0}, 474214571Sdim {0, 0, 0, 0}, 475214571Sdim }, 476214571Sdim}; 477214571Sdim 478214571Sdimstruct asm_opcode 479214571Sdim{ 480214571Sdim /* Instruction name. */ 481214571Sdim const char *template; 482214571Sdim 483214571Sdim /* Instruction Opcode. */ 484214571Sdim unsigned long value; 485214571Sdim 486214571Sdim /* Instruction bit mask. */ 487214571Sdim unsigned long bitmask; 488214571Sdim 489214571Sdim /* Relax instruction opcode. 0x8000 imply no relaxation. */ 490214571Sdim unsigned long relax_value; 491214571Sdim 492214571Sdim /* Instruction type. */ 493214571Sdim enum score_insn_type type; 494214571Sdim 495214571Sdim /* Function to call to parse args. */ 496214571Sdim void (*parms) (char *); 497214571Sdim}; 498214571Sdim 499214571Sdimenum insn_class 500214571Sdim{ 501214571Sdim INSN_CLASS_16, 502214571Sdim INSN_CLASS_32, 503214571Sdim INSN_CLASS_PCE, 504214571Sdim INSN_CLASS_SYN 505214571Sdim}; 506214571Sdim 507214571Sdim#endif 508