1 1.1 skrll /* score-inst.h -- Score Instructions Table 2 1.1.1.10 christos Copyright (C) 2006-2026 Free Software Foundation, Inc. 3 1.1 skrll Contributed by: 4 1.1.1.2 christos Brain.lin (brain.lin (at) sunplusct.com) 5 1.1 skrll Mei Ligang (ligang (at) sunnorth.com.cn) 6 1.1 skrll Pei-Lin Tsai (pltsai (at) sunplus.com) 7 1.1 skrll 8 1.1 skrll This file is part of GAS, the GNU Assembler. 9 1.1 skrll 10 1.1 skrll GAS is free software; you can redistribute it and/or modify 11 1.1 skrll it under the terms of the GNU General Public License as published by 12 1.1.1.2 christos the Free Software Foundation; either version 3, or (at your option) 13 1.1 skrll any later version. 14 1.1 skrll 15 1.1 skrll GAS is distributed in the hope that it will be useful, 16 1.1 skrll but WITHOUT ANY WARRANTY; without even the implied warranty of 17 1.1 skrll MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 1.1 skrll GNU General Public License for more details. 19 1.1 skrll 20 1.1 skrll You should have received a copy of the GNU General Public License 21 1.1.1.2 christos along with GAS; see the file COPYING3. If not, write to the Free 22 1.1 skrll Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 23 1.1 skrll 02110-1301, USA. */ 24 1.1 skrll 25 1.1 skrll #ifndef SCORE_INST_H 26 1.1 skrll #define SCORE_INST_H 27 1.1 skrll 28 1.1 skrll #define LDST_UNALIGN_MASK 0x0000007f 29 1.1 skrll #define UA_LCB 0x00000060 30 1.1 skrll #define UA_LCW 0x00000062 31 1.1 skrll #define UA_LCE 0x00000066 32 1.1 skrll #define UA_SCB 0x00000068 33 1.1 skrll #define UA_SCW 0x0000006a 34 1.1 skrll #define UA_SCE 0x0000006e 35 1.1 skrll #define UA_LL 0x0000000c 36 1.1 skrll #define UA_SC 0x0000000e 37 1.1 skrll #define LDST16_RR_MASK 0x0000000f 38 1.1 skrll #define N16_LW 8 39 1.1 skrll #define N16_LH 9 40 1.1 skrll #define N16_POP 10 41 1.1 skrll #define N16_LBU 11 42 1.1 skrll #define N16_SW 12 43 1.1 skrll #define N16_SH 13 44 1.1 skrll #define N16_PUSH 14 45 1.1 skrll #define N16_SB 15 46 1.1 skrll #define LDST16_RI_MASK 0x7007 47 1.1 skrll #define N16_LWP 0x7000 48 1.1 skrll #define N16_LHP 0x7001 49 1.1 skrll #define N16_LBUP 0x7003 50 1.1 skrll #define N16_SWP 0x7004 51 1.1 skrll #define N16_SHP 0x7005 52 1.1 skrll #define N16_SBP 0x7007 53 1.1 skrll #define N16_LIU 0x5000 54 1.1 skrll 55 1.1 skrll #define OPC_PSEUDOLDST_MASK 0x00000007 56 1.1 skrll 57 1.1 skrll enum 58 1.1 skrll { 59 1.1 skrll INSN_LW = 0, 60 1.1 skrll INSN_LH = 1, 61 1.1 skrll INSN_LHU = 2, 62 1.1 skrll INSN_LB = 3, 63 1.1 skrll INSN_SW = 4, 64 1.1 skrll INSN_SH = 5, 65 1.1 skrll INSN_LBU = 6, 66 1.1 skrll INSN_SB = 7, 67 1.1 skrll }; 68 1.1 skrll 69 1.1 skrll /* Sub opcdoe opcode. */ 70 1.1 skrll enum 71 1.1 skrll { 72 1.1 skrll INSN16_LBU = 11, 73 1.1 skrll INSN16_LH = 9, 74 1.1 skrll INSN16_LW = 8, 75 1.1 skrll INSN16_SB = 15, 76 1.1 skrll INSN16_SH = 13, 77 1.1 skrll INSN16_SW = 12, 78 1.1 skrll }; 79 1.1 skrll 80 1.1 skrll enum 81 1.1 skrll { 82 1.1 skrll LDST_NOUPDATE = 0, 83 1.1 skrll LDST_PRE = 1, 84 1.1 skrll LDST_POST = 2, 85 1.1 skrll }; 86 1.1 skrll 87 1.1 skrll enum score_insn_type 88 1.1 skrll { 89 1.1 skrll Rd_I4, 90 1.1 skrll Rd_I5, 91 1.1 skrll Rd_rvalueBP_I5, 92 1.1 skrll Rd_lvalueBP_I5, 93 1.1 skrll Rd_Rs_I5, 94 1.1 skrll x_Rs_I5, 95 1.1 skrll x_I5_x, 96 1.1 skrll Rd_I8, 97 1.1 skrll Rd_Rs_I14, 98 1.1 skrll I15, 99 1.1 skrll Rd_I16, 100 1.1.1.2 christos Rd_I30, 101 1.1.1.2 christos Rd_I32, 102 1.1 skrll Rd_rvalueRs_SI10, 103 1.1 skrll Rd_lvalueRs_SI10, 104 1.1 skrll Rd_rvalueRs_preSI12, 105 1.1 skrll Rd_rvalueRs_postSI12, 106 1.1 skrll Rd_lvalueRs_preSI12, 107 1.1 skrll Rd_lvalueRs_postSI12, 108 1.1 skrll Rd_Rs_SI14, 109 1.1 skrll Rd_rvalueRs_SI15, 110 1.1 skrll Rd_lvalueRs_SI15, 111 1.1.1.2 christos Rd_SI5, 112 1.1.1.2 christos Rd_SI6, 113 1.1 skrll Rd_SI16, 114 1.1 skrll PC_DISP8div2, 115 1.1 skrll PC_DISP11div2, 116 1.1 skrll PC_DISP19div2, 117 1.1 skrll PC_DISP24div2, 118 1.1 skrll Rd_Rs_Rs, 119 1.1 skrll x_Rs_x, 120 1.1 skrll x_Rs_Rs, 121 1.1 skrll Rd_Rs_x, 122 1.1 skrll Rd_x_Rs, 123 1.1 skrll Rd_x_x, 124 1.1 skrll Rd_Rs, 125 1.1 skrll Rd_HighRs, 126 1.1 skrll Rd_lvalueRs, 127 1.1 skrll Rd_rvalueRs, 128 1.1 skrll Rd_lvalue32Rs, 129 1.1 skrll Rd_rvalue32Rs, 130 1.1 skrll x_Rs, 131 1.1 skrll NO_OPD, 132 1.1 skrll NO16_OPD, 133 1.1 skrll OP5_rvalueRs_SI15, 134 1.1 skrll I5_Rs_Rs_I5_OP5, 135 1.1 skrll x_rvalueRs_post4, 136 1.1 skrll Rd_rvalueRs_post4, 137 1.1 skrll Rd_x_I5, 138 1.1 skrll Rd_lvalueRs_post4, 139 1.1 skrll x_lvalueRs_post4, 140 1.1 skrll Rd_LowRs, 141 1.1 skrll Rd_Rs_Rs_imm, 142 1.1 skrll Insn_Type_PCE, 143 1.1 skrll Insn_Type_SYN, 144 1.1 skrll Insn_GP, 145 1.1 skrll Insn_PIC, 146 1.1 skrll Insn_internal, 147 1.1.1.2 christos Insn_BCMP, 148 1.1.1.2 christos Ra_I9_I5, 149 1.1 skrll }; 150 1.1 skrll 151 1.1 skrll enum score_data_type 152 1.1 skrll { 153 1.1 skrll _IMM4 = 0, 154 1.1 skrll _IMM5, 155 1.1 skrll _IMM8, 156 1.1 skrll _IMM14, 157 1.1 skrll _IMM15, 158 1.1 skrll _IMM16, 159 1.1 skrll _SIMM10 = 6, 160 1.1 skrll _SIMM12, 161 1.1 skrll _SIMM14, 162 1.1 skrll _SIMM15, 163 1.1 skrll _SIMM16, 164 1.1 skrll _SIMM14_NEG = 11, 165 1.1 skrll _IMM16_NEG, 166 1.1 skrll _SIMM16_NEG, 167 1.1 skrll _IMM20, 168 1.1 skrll _IMM25, 169 1.1 skrll _DISP8div2 = 16, 170 1.1 skrll _DISP11div2, 171 1.1 skrll _DISP19div2, 172 1.1 skrll _DISP24div2, 173 1.1 skrll _VALUE, 174 1.1 skrll _VALUE_HI16, 175 1.1 skrll _VALUE_LO16, 176 1.1 skrll _VALUE_LDST_LO16 = 23, 177 1.1 skrll _SIMM16_LA, 178 1.1 skrll _IMM5_RSHIFT_1, 179 1.1 skrll _IMM5_RSHIFT_2, 180 1.1 skrll _SIMM16_LA_POS, 181 1.1 skrll _IMM5_RANGE_8_31, 182 1.1 skrll _IMM10_RSHIFT_2, 183 1.1 skrll _GP_IMM15 = 30, 184 1.1 skrll _GP_IMM14 = 31, 185 1.1 skrll _SIMM16_pic = 42, /* Index in score_df_range. */ 186 1.1 skrll _IMM16_LO16_pic = 43, 187 1.1 skrll _IMM16_pic = 44, 188 1.1.1.2 christos 189 1.1.1.2 christos _SIMM5 = 45, 190 1.1.1.2 christos _SIMM6 = 46, 191 1.1.1.2 christos _IMM32 = 47, 192 1.1.1.2 christos _SIMM32 = 48, 193 1.1.1.2 christos _IMM11 = 49, 194 1.1.1.2 christos _IMM5_MULTI_LOAD = 50, 195 1.1 skrll }; 196 1.1 skrll 197 1.1 skrll #define REG_TMP 1 198 1.1 skrll 199 1.1 skrll #define OP_REG_TYPE (1 << 6) 200 1.1 skrll #define OP_IMM_TYPE (1 << 7) 201 1.1 skrll #define OP_SH_REGD (OP_REG_TYPE |20) 202 1.1 skrll #define OP_SH_REGS1 (OP_REG_TYPE |15) 203 1.1 skrll #define OP_SH_REGS2 (OP_REG_TYPE |10) 204 1.1 skrll #define OP_SH_I (OP_IMM_TYPE | 1) 205 1.1 skrll #define OP_SH_RI15 (OP_IMM_TYPE | 0) 206 1.1 skrll #define OP_SH_I12 (OP_IMM_TYPE | 3) 207 1.1 skrll #define OP_SH_DISP24 (OP_IMM_TYPE | 1) 208 1.1 skrll #define OP_SH_DISP19_p1 (OP_IMM_TYPE |15) 209 1.1 skrll #define OP_SH_DISP19_p2 (OP_IMM_TYPE | 1) 210 1.1 skrll #define OP_SH_I5 (OP_IMM_TYPE |10) 211 1.1 skrll #define OP_SH_I10 (OP_IMM_TYPE | 5) 212 1.1 skrll #define OP_SH_COPID (OP_IMM_TYPE | 5) 213 1.1 skrll #define OP_SH_TRAPI5 (OP_IMM_TYPE |15) 214 1.1 skrll #define OP_SH_I15 (OP_IMM_TYPE |10) 215 1.1 skrll 216 1.1 skrll #define OP16_SH_REGD (OP_REG_TYPE | 8) 217 1.1 skrll #define OP16_SH_REGS1 (OP_REG_TYPE | 4) 218 1.1 skrll #define OP16_SH_I45 (OP_IMM_TYPE | 3) 219 1.1 skrll #define OP16_SH_I8 (OP_IMM_TYPE | 0) 220 1.1 skrll #define OP16_SH_DISP8 (OP_IMM_TYPE | 0) 221 1.1 skrll #define OP16_SH_DISP11 (OP_IMM_TYPE | 1) 222 1.1 skrll 223 1.1 skrll enum insn_class 224 1.1 skrll { 225 1.1 skrll INSN_CLASS_16, 226 1.1 skrll INSN_CLASS_32, 227 1.1.1.2 christos INSN_CLASS_48, 228 1.1 skrll INSN_CLASS_PCE, 229 1.1 skrll INSN_CLASS_SYN 230 1.1 skrll }; 231 1.1 skrll 232 1.1.1.2 christos /* s3_s7: Globals for both tc-score.c and elf32-score.c. */ 233 1.1.1.2 christos extern int score3; 234 1.1.1.2 christos extern int score7; 235 1.1.1.2 christos 236 1.1 skrll #endif 237