Blame include/opcode/score-inst.h

Packit bbfece
/* score-inst.h -- Score Instructions Table
Packit bbfece
   Copyright (C) 2006-2018 Free Software Foundation, Inc.
Packit bbfece
   Contributed by: 
Packit bbfece
   Brain.lin (brain.lin@sunplusct.com)
Packit bbfece
   Mei Ligang (ligang@sunnorth.com.cn)
Packit bbfece
   Pei-Lin Tsai (pltsai@sunplus.com)
Packit bbfece
Packit bbfece
   This file is part of GAS, the GNU Assembler.
Packit bbfece
Packit bbfece
   GAS is free software; you can redistribute it and/or modify
Packit bbfece
   it under the terms of the GNU General Public License as published by
Packit bbfece
   the Free Software Foundation; either version 3, or (at your option)
Packit bbfece
   any later version.
Packit bbfece
Packit bbfece
   GAS is distributed in the hope that it will be useful,
Packit bbfece
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bbfece
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit bbfece
   GNU General Public License for more details.
Packit bbfece
Packit bbfece
   You should have received a copy of the GNU General Public License
Packit bbfece
   along with GAS; see the file COPYING3.  If not, write to the Free
Packit bbfece
   Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
Packit bbfece
   02110-1301, USA.  */
Packit bbfece
Packit bbfece
#ifndef SCORE_INST_H
Packit bbfece
#define SCORE_INST_H
Packit bbfece
Packit bbfece
#define LDST_UNALIGN_MASK 0x0000007f
Packit bbfece
#define UA_LCB		  0x00000060
Packit bbfece
#define UA_LCW		  0x00000062
Packit bbfece
#define UA_LCE		  0x00000066
Packit bbfece
#define UA_SCB		  0x00000068
Packit bbfece
#define UA_SCW		  0x0000006a
Packit bbfece
#define UA_SCE		  0x0000006e
Packit bbfece
#define UA_LL		  0x0000000c
Packit bbfece
#define UA_SC		  0x0000000e
Packit bbfece
#define LDST16_RR_MASK   0x0000000f
Packit bbfece
#define N16_LW           8
Packit bbfece
#define N16_LH           9
Packit bbfece
#define N16_POP          10
Packit bbfece
#define N16_LBU          11
Packit bbfece
#define N16_SW           12
Packit bbfece
#define N16_SH           13
Packit bbfece
#define N16_PUSH         14
Packit bbfece
#define N16_SB           15
Packit bbfece
#define LDST16_RI_MASK   0x7007
Packit bbfece
#define N16_LWP          0x7000
Packit bbfece
#define N16_LHP          0x7001
Packit bbfece
#define N16_LBUP         0x7003
Packit bbfece
#define N16_SWP          0x7004
Packit bbfece
#define N16_SHP          0x7005
Packit bbfece
#define N16_SBP          0x7007
Packit bbfece
#define N16_LIU          0x5000
Packit bbfece
Packit bbfece
#define OPC_PSEUDOLDST_MASK	0x00000007
Packit bbfece
Packit bbfece
enum
Packit bbfece
{
Packit bbfece
  INSN_LW = 0,
Packit bbfece
  INSN_LH = 1,
Packit bbfece
  INSN_LHU = 2,
Packit bbfece
  INSN_LB = 3,
Packit bbfece
  INSN_SW = 4,
Packit bbfece
  INSN_SH = 5,
Packit bbfece
  INSN_LBU = 6,
Packit bbfece
  INSN_SB = 7,
Packit bbfece
};
Packit bbfece
Packit bbfece
/* Sub opcdoe opcode.  */
Packit bbfece
enum
Packit bbfece
{
Packit bbfece
  INSN16_LBU = 11,
Packit bbfece
  INSN16_LH = 9,
Packit bbfece
  INSN16_LW = 8,
Packit bbfece
  INSN16_SB = 15,
Packit bbfece
  INSN16_SH = 13,
Packit bbfece
  INSN16_SW = 12,
Packit bbfece
};
Packit bbfece
Packit bbfece
enum
Packit bbfece
{
Packit bbfece
  LDST_NOUPDATE = 0,
Packit bbfece
  LDST_PRE = 1,
Packit bbfece
  LDST_POST = 2,
Packit bbfece
};
Packit bbfece
Packit bbfece
enum score_insn_type
Packit bbfece
{
Packit bbfece
  Rd_I4,
Packit bbfece
  Rd_I5,
Packit bbfece
  Rd_rvalueBP_I5,
Packit bbfece
  Rd_lvalueBP_I5,
Packit bbfece
  Rd_Rs_I5,
Packit bbfece
  x_Rs_I5,
Packit bbfece
  x_I5_x,
Packit bbfece
  Rd_I8,
Packit bbfece
  Rd_Rs_I14,
Packit bbfece
  I15,
Packit bbfece
  Rd_I16,
Packit bbfece
  Rd_I30, 
Packit bbfece
  Rd_I32, 
Packit bbfece
  Rd_rvalueRs_SI10,
Packit bbfece
  Rd_lvalueRs_SI10,
Packit bbfece
  Rd_rvalueRs_preSI12,
Packit bbfece
  Rd_rvalueRs_postSI12,
Packit bbfece
  Rd_lvalueRs_preSI12,
Packit bbfece
  Rd_lvalueRs_postSI12,
Packit bbfece
  Rd_Rs_SI14,
Packit bbfece
  Rd_rvalueRs_SI15,
Packit bbfece
  Rd_lvalueRs_SI15,
Packit bbfece
  Rd_SI5,
Packit bbfece
  Rd_SI6,
Packit bbfece
  Rd_SI16,
Packit bbfece
  PC_DISP8div2,
Packit bbfece
  PC_DISP11div2,
Packit bbfece
  PC_DISP19div2,
Packit bbfece
  PC_DISP24div2,
Packit bbfece
  Rd_Rs_Rs,
Packit bbfece
  x_Rs_x,
Packit bbfece
  x_Rs_Rs,
Packit bbfece
  Rd_Rs_x,
Packit bbfece
  Rd_x_Rs,
Packit bbfece
  Rd_x_x,
Packit bbfece
  Rd_Rs,
Packit bbfece
  Rd_HighRs,
Packit bbfece
  Rd_lvalueRs,
Packit bbfece
  Rd_rvalueRs,
Packit bbfece
  Rd_lvalue32Rs,
Packit bbfece
  Rd_rvalue32Rs,
Packit bbfece
  x_Rs,
Packit bbfece
  NO_OPD,
Packit bbfece
  NO16_OPD,
Packit bbfece
  OP5_rvalueRs_SI15,
Packit bbfece
  I5_Rs_Rs_I5_OP5,
Packit bbfece
  x_rvalueRs_post4,
Packit bbfece
  Rd_rvalueRs_post4,
Packit bbfece
  Rd_x_I5,
Packit bbfece
  Rd_lvalueRs_post4,
Packit bbfece
  x_lvalueRs_post4,
Packit bbfece
  Rd_LowRs,
Packit bbfece
  Rd_Rs_Rs_imm,
Packit bbfece
  Insn_Type_PCE,
Packit bbfece
  Insn_Type_SYN,
Packit bbfece
  Insn_GP,
Packit bbfece
  Insn_PIC,
Packit bbfece
  Insn_internal,
Packit bbfece
  Insn_BCMP,
Packit bbfece
  Ra_I9_I5,
Packit bbfece
};
Packit bbfece
Packit bbfece
enum score_data_type
Packit bbfece
{
Packit bbfece
  _IMM4 = 0,
Packit bbfece
  _IMM5,
Packit bbfece
  _IMM8,
Packit bbfece
  _IMM14,
Packit bbfece
  _IMM15,
Packit bbfece
  _IMM16,
Packit bbfece
  _SIMM10 = 6,
Packit bbfece
  _SIMM12,
Packit bbfece
  _SIMM14,
Packit bbfece
  _SIMM15,
Packit bbfece
  _SIMM16,
Packit bbfece
  _SIMM14_NEG = 11,
Packit bbfece
  _IMM16_NEG,
Packit bbfece
  _SIMM16_NEG,
Packit bbfece
  _IMM20,
Packit bbfece
  _IMM25,
Packit bbfece
  _DISP8div2 = 16,
Packit bbfece
  _DISP11div2,
Packit bbfece
  _DISP19div2,
Packit bbfece
  _DISP24div2,
Packit bbfece
  _VALUE,
Packit bbfece
  _VALUE_HI16,
Packit bbfece
  _VALUE_LO16,
Packit bbfece
  _VALUE_LDST_LO16 = 23,
Packit bbfece
  _SIMM16_LA,
Packit bbfece
  _IMM5_RSHIFT_1,
Packit bbfece
  _IMM5_RSHIFT_2,
Packit bbfece
  _SIMM16_LA_POS,
Packit bbfece
  _IMM5_RANGE_8_31,
Packit bbfece
  _IMM10_RSHIFT_2,
Packit bbfece
  _GP_IMM15 = 30,
Packit bbfece
  _GP_IMM14 = 31,
Packit bbfece
  _SIMM16_pic = 42,   /* Index in score_df_range.  */
Packit bbfece
  _IMM16_LO16_pic = 43,
Packit bbfece
  _IMM16_pic = 44,
Packit bbfece
Packit bbfece
  _SIMM5 = 45,
Packit bbfece
  _SIMM6 = 46,
Packit bbfece
  _IMM32 = 47,
Packit bbfece
  _SIMM32 = 48,
Packit bbfece
  _IMM11 = 49,
Packit bbfece
  _IMM5_MULTI_LOAD = 50,
Packit bbfece
};
Packit bbfece
Packit bbfece
#define REG_TMP			  1
Packit bbfece
Packit bbfece
#define OP_REG_TYPE             (1 << 6)
Packit bbfece
#define OP_IMM_TYPE             (1 << 7)
Packit bbfece
#define OP_SH_REGD              (OP_REG_TYPE |20)
Packit bbfece
#define	OP_SH_REGS1             (OP_REG_TYPE |15)
Packit bbfece
#define OP_SH_REGS2             (OP_REG_TYPE |10)
Packit bbfece
#define OP_SH_I                 (OP_IMM_TYPE | 1)
Packit bbfece
#define OP_SH_RI15              (OP_IMM_TYPE | 0)
Packit bbfece
#define OP_SH_I12               (OP_IMM_TYPE | 3)
Packit bbfece
#define OP_SH_DISP24            (OP_IMM_TYPE | 1)
Packit bbfece
#define OP_SH_DISP19_p1         (OP_IMM_TYPE |15)
Packit bbfece
#define OP_SH_DISP19_p2         (OP_IMM_TYPE | 1)
Packit bbfece
#define OP_SH_I5                (OP_IMM_TYPE |10)
Packit bbfece
#define OP_SH_I10               (OP_IMM_TYPE | 5)
Packit bbfece
#define OP_SH_COPID             (OP_IMM_TYPE | 5)
Packit bbfece
#define OP_SH_TRAPI5            (OP_IMM_TYPE |15)
Packit bbfece
#define OP_SH_I15               (OP_IMM_TYPE |10)
Packit bbfece
Packit bbfece
#define OP16_SH_REGD            (OP_REG_TYPE | 8)
Packit bbfece
#define	OP16_SH_REGS1           (OP_REG_TYPE | 4)
Packit bbfece
#define	OP16_SH_I45             (OP_IMM_TYPE | 3)
Packit bbfece
#define	OP16_SH_I8              (OP_IMM_TYPE | 0)
Packit bbfece
#define OP16_SH_DISP8           (OP_IMM_TYPE | 0)
Packit bbfece
#define OP16_SH_DISP11          (OP_IMM_TYPE | 1)
Packit bbfece
Packit bbfece
enum insn_class
Packit bbfece
{
Packit bbfece
  INSN_CLASS_16,
Packit bbfece
  INSN_CLASS_32,
Packit bbfece
  INSN_CLASS_48,
Packit bbfece
  INSN_CLASS_PCE,
Packit bbfece
  INSN_CLASS_SYN
Packit bbfece
};
Packit bbfece
Packit bbfece
/* s3_s7: Globals for both tc-score.c and elf32-score.c.  */
Packit bbfece
extern int score3;
Packit bbfece
extern int score7;
Packit bbfece
Packit bbfece
#endif