1 /* 2 * Copyright (c) 2012-2014 Bastian Koppelmann C-Lab/University Paderborn 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 /* 19 * Opcode Masks for Tricore 20 * Format MASK_OP_InstrFormatName_Field 21 */ 22 23 /* This creates a mask with bits start .. end set to 1 and applies it to op */ 24 #define MASK_BITS_SHIFT(op, start, end) (extract32(op, (start), \ 25 (end) - (start) + 1)) 26 #define MASK_BITS_SHIFT_SEXT(op, start, end) (sextract32(op, (start),\ 27 (end) - (start) + 1)) 28 29 /* new opcode masks */ 30 31 #define MASK_OP_MAJOR(op) MASK_BITS_SHIFT(op, 0, 7) 32 33 /* 16-Bit Formats */ 34 #define MASK_OP_SB_DISP8(op) MASK_BITS_SHIFT(op, 8, 15) 35 #define MASK_OP_SB_DISP8_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 8, 15) 36 37 #define MASK_OP_SBC_CONST4(op) MASK_BITS_SHIFT(op, 12, 15) 38 #define MASK_OP_SBC_CONST4_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 12, 15) 39 #define MASK_OP_SBC_DISP4(op) MASK_BITS_SHIFT(op, 8, 11) 40 41 #define MASK_OP_SBR_S2(op) MASK_BITS_SHIFT(op, 12, 15) 42 #define MASK_OP_SBR_DISP4(op) MASK_BITS_SHIFT(op, 8, 11) 43 44 #define MASK_OP_SBRN_N(op) MASK_BITS_SHIFT(op, 12, 15) 45 #define MASK_OP_SBRN_DISP4(op) MASK_BITS_SHIFT(op, 8, 11) 46 47 #define MASK_OP_SC_CONST8(op) MASK_BITS_SHIFT(op, 8, 15) 48 49 #define MASK_OP_SLR_S2(op) MASK_BITS_SHIFT(op, 12, 15) 50 #define MASK_OP_SLR_D(op) MASK_BITS_SHIFT(op, 8, 11) 51 52 #define MASK_OP_SLRO_OFF4(op) MASK_BITS_SHIFT(op, 12, 15) 53 #define MASK_OP_SLRO_D(op) MASK_BITS_SHIFT(op, 8, 11) 54 55 #define MASK_OP_SR_OP2(op) MASK_BITS_SHIFT(op, 12, 15) 56 #define MASK_OP_SR_S1D(op) MASK_BITS_SHIFT(op, 8, 11) 57 58 #define MASK_OP_SRC_CONST4(op) MASK_BITS_SHIFT(op, 12, 15) 59 #define MASK_OP_SRC_CONST4_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 12, 15) 60 #define MASK_OP_SRC_S1D(op) MASK_BITS_SHIFT(op, 8, 11) 61 62 #define MASK_OP_SRO_S2(op) MASK_BITS_SHIFT(op, 12, 15) 63 #define MASK_OP_SRO_OFF4(op) MASK_BITS_SHIFT(op, 8, 11) 64 65 #define MASK_OP_SRR_S2(op) MASK_BITS_SHIFT(op, 12, 15) 66 #define MASK_OP_SRR_S1D(op) MASK_BITS_SHIFT(op, 8, 11) 67 68 #define MASK_OP_SRRS_S2(op) MASK_BITS_SHIFT(op, 12, 15) 69 #define MASK_OP_SRRS_S1D(op) MASK_BITS_SHIFT(op, 8, 11) 70 #define MASK_OP_SRRS_N(op) MASK_BITS_SHIFT(op, 6, 7) 71 72 #define MASK_OP_SSR_S2(op) MASK_BITS_SHIFT(op, 12, 15) 73 #define MASK_OP_SSR_S1(op) MASK_BITS_SHIFT(op, 8, 11) 74 75 #define MASK_OP_SSRO_OFF4(op) MASK_BITS_SHIFT(op, 12, 15) 76 #define MASK_OP_SSRO_S1(op) MASK_BITS_SHIFT(op, 8, 11) 77 78 /* 32-Bit Formats */ 79 80 /* ABS Format */ 81 #define MASK_OP_ABS_OFF18(op) (MASK_BITS_SHIFT(op, 16, 21) + \ 82 (MASK_BITS_SHIFT(op, 28, 31) << 6) + \ 83 (MASK_BITS_SHIFT(op, 22, 25) << 10) +\ 84 (MASK_BITS_SHIFT(op, 12, 15) << 14)) 85 #define MASK_OP_ABS_OP2(op) MASK_BITS_SHIFT(op, 26, 27) 86 #define MASK_OP_ABS_S1D(op) MASK_BITS_SHIFT(op, 8, 11) 87 88 /* ABSB Format */ 89 #define MASK_OP_ABSB_OFF18(op) MASK_OP_ABS_OFF18(op) 90 #define MASK_OP_ABSB_OP2(op) MASK_BITS_SHIFT(op, 26, 27) 91 #define MASK_OP_ABSB_B(op) MASK_BITS_SHIFT(op, 11, 11) 92 #define MASK_OP_ABSB_BPOS(op) MASK_BITS_SHIFT(op, 8, 10) 93 94 /* B Format */ 95 #define MASK_OP_B_DISP24(op) (MASK_BITS_SHIFT(op, 16, 31) + \ 96 (MASK_BITS_SHIFT(op, 8, 15) << 16)) 97 #define MASK_OP_B_DISP24_SEXT(op) (MASK_BITS_SHIFT(op, 16, 31) + \ 98 (MASK_BITS_SHIFT_SEXT(op, 8, 15) << 16)) 99 /* BIT Format */ 100 #define MASK_OP_BIT_D(op) MASK_BITS_SHIFT(op, 28, 31) 101 #define MASK_OP_BIT_POS2(op) MASK_BITS_SHIFT(op, 23, 27) 102 #define MASK_OP_BIT_OP2(op) MASK_BITS_SHIFT(op, 21, 22) 103 #define MASK_OP_BIT_POS1(op) MASK_BITS_SHIFT(op, 16, 20) 104 #define MASK_OP_BIT_S2(op) MASK_BITS_SHIFT(op, 12, 15) 105 #define MASK_OP_BIT_S1(op) MASK_BITS_SHIFT(op, 8, 11) 106 107 /* BO Format */ 108 #define MASK_OP_BO_OFF10(op) (MASK_BITS_SHIFT(op, 16, 21) + \ 109 (MASK_BITS_SHIFT(op, 28, 31) << 6)) 110 #define MASK_OP_BO_OFF10_SEXT(op) (MASK_BITS_SHIFT(op, 16, 21) + \ 111 (MASK_BITS_SHIFT_SEXT(op, 28, 31) << 6)) 112 #define MASK_OP_BO_OP2(op) MASK_BITS_SHIFT(op, 22, 27) 113 #define MASK_OP_BO_S2(op) MASK_BITS_SHIFT(op, 12, 15) 114 #define MASK_OP_BO_S1D(op) MASK_BITS_SHIFT(op, 8, 11) 115 116 /* BOL Format */ 117 #define MASK_OP_BOL_OFF16(op) ((MASK_BITS_SHIFT(op, 16, 21) + \ 118 (MASK_BITS_SHIFT(op, 28, 31) << 6)) + \ 119 (MASK_BITS_SHIFT(op, 22, 27) << 10)) 120 #define MASK_OP_BOL_OFF16_SEXT(op) ((MASK_BITS_SHIFT(op, 16, 21) + \ 121 (MASK_BITS_SHIFT(op, 28, 31) << 6)) + \ 122 (MASK_BITS_SHIFT_SEXT(op, 22, 27) << 10)) 123 #define MASK_OP_BOL_S2(op) MASK_BITS_SHIFT(op, 12, 15) 124 #define MASK_OP_BOL_S1D(op) MASK_BITS_SHIFT(op, 8, 11) 125 126 /* BRC Format */ 127 #define MASK_OP_BRC_OP2(op) MASK_BITS_SHIFT(op, 31, 31) 128 #define MASK_OP_BRC_DISP15(op) MASK_BITS_SHIFT(op, 16, 30) 129 #define MASK_OP_BRC_DISP15_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 16, 30) 130 #define MASK_OP_BRC_CONST4(op) MASK_BITS_SHIFT(op, 12, 15) 131 #define MASK_OP_BRC_CONST4_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 12, 15) 132 #define MASK_OP_BRC_S1(op) MASK_BITS_SHIFT(op, 8, 11) 133 134 /* BRN Format */ 135 #define MASK_OP_BRN_OP2(op) MASK_BITS_SHIFT(op, 31, 31) 136 #define MASK_OP_BRN_DISP15(op) MASK_BITS_SHIFT(op, 16, 30) 137 #define MASK_OP_BRN_DISP15_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 16, 30) 138 #define MASK_OP_BRN_N(op) (MASK_BITS_SHIFT(op, 12, 15) + \ 139 (MASK_BITS_SHIFT(op, 7, 7) << 4)) 140 #define MASK_OP_BRN_S1(op) MASK_BITS_SHIFT(op, 8, 11) 141 /* BRR Format */ 142 #define MASK_OP_BRR_OP2(op) MASK_BITS_SHIFT(op, 31, 31) 143 #define MASK_OP_BRR_DISP15(op) MASK_BITS_SHIFT(op, 16, 30) 144 #define MASK_OP_BRR_DISP15_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 16, 30) 145 #define MASK_OP_BRR_S2(op) MASK_BITS_SHIFT(op, 12, 15) 146 #define MASK_OP_BRR_S1(op) MASK_BITS_SHIFT(op, 8, 11) 147 148 /* META MASK for similar instr Formats */ 149 #define MASK_OP_META_D(op) MASK_BITS_SHIFT(op, 28, 31) 150 #define MASK_OP_META_S1(op) MASK_BITS_SHIFT(op, 8, 11) 151 152 /* RC Format */ 153 #define MASK_OP_RC_D(op) MASK_OP_META_D(op) 154 #define MASK_OP_RC_OP2(op) MASK_BITS_SHIFT(op, 21, 27) 155 #define MASK_OP_RC_CONST9(op) MASK_BITS_SHIFT(op, 12, 20) 156 #define MASK_OP_RC_CONST9_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 12, 20) 157 #define MASK_OP_RC_S1(op) MASK_OP_META_S1(op) 158 159 /* RCPW Format */ 160 161 #define MASK_OP_RCPW_D(op) MASK_OP_META_D(op) 162 #define MASK_OP_RCPW_POS(op) MASK_BITS_SHIFT(op, 23, 27) 163 #define MASK_OP_RCPW_OP2(op) MASK_BITS_SHIFT(op, 21, 22) 164 #define MASK_OP_RCPW_WIDTH(op) MASK_BITS_SHIFT(op, 16, 20) 165 #define MASK_OP_RCPW_CONST4(op) MASK_BITS_SHIFT(op, 12, 15) 166 #define MASK_OP_RCPW_S1(op) MASK_OP_META_S1(op) 167 168 /* RCR Format */ 169 170 #define MASK_OP_RCR_D(op) MASK_OP_META_D(op) 171 #define MASK_OP_RCR_S3(op) MASK_BITS_SHIFT(op, 24, 27) 172 #define MASK_OP_RCR_OP2(op) MASK_BITS_SHIFT(op, 21, 23) 173 #define MASK_OP_RCR_CONST9(op) MASK_BITS_SHIFT(op, 12, 20) 174 #define MASK_OP_RCR_CONST9_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 12, 20) 175 #define MASK_OP_RCR_S1(op) MASK_OP_META_S1(op) 176 177 /* RCRR Format */ 178 179 #define MASK_OP_RCRR_D(op) MASK_OP_META_D(op) 180 #define MASK_OP_RCRR_S3(op) MASK_BITS_SHIFT(op, 24, 27) 181 #define MASK_OP_RCRR_OP2(op) MASK_BITS_SHIFT(op, 21, 23) 182 #define MASK_OP_RCRR_CONST4(op) MASK_BITS_SHIFT(op, 12, 15) 183 #define MASK_OP_RCRR_S1(op) MASK_OP_META_S1(op) 184 185 /* RCRW Format */ 186 187 #define MASK_OP_RCRW_D(op) MASK_OP_META_D(op) 188 #define MASK_OP_RCRW_S3(op) MASK_BITS_SHIFT(op, 24, 27) 189 #define MASK_OP_RCRW_OP2(op) MASK_BITS_SHIFT(op, 21, 23) 190 #define MASK_OP_RCRW_WIDTH(op) MASK_BITS_SHIFT(op, 16, 20) 191 #define MASK_OP_RCRW_CONST4(op) MASK_BITS_SHIFT(op, 12, 15) 192 #define MASK_OP_RCRW_S1(op) MASK_OP_META_S1(op) 193 194 /* RLC Format */ 195 196 #define MASK_OP_RLC_D(op) MASK_OP_META_D(op) 197 #define MASK_OP_RLC_CONST16(op) MASK_BITS_SHIFT(op, 12, 27) 198 #define MASK_OP_RLC_CONST16_SEXT(op) MASK_BITS_SHIFT_SEXT(op, 12, 27) 199 #define MASK_OP_RLC_S1(op) MASK_OP_META_S1(op) 200 201 /* RR Format */ 202 #define MASK_OP_RR_D(op) MASK_OP_META_D(op) 203 #define MASK_OP_RR_OP2(op) MASK_BITS_SHIFT(op, 20, 27) 204 #define MASK_OP_RR_N(op) MASK_BITS_SHIFT(op, 16, 17) 205 #define MASK_OP_RR_S2(op) MASK_BITS_SHIFT(op, 12, 15) 206 #define MASK_OP_RR_S1(op) MASK_OP_META_S1(op) 207 208 /* RR1 Format */ 209 #define MASK_OP_RR1_D(op) MASK_OP_META_D(op) 210 #define MASK_OP_RR1_OP2(op) MASK_BITS_SHIFT(op, 18, 27) 211 #define MASK_OP_RR1_N(op) MASK_BITS_SHIFT(op, 16, 17) 212 #define MASK_OP_RR1_S2(op) MASK_BITS_SHIFT(op, 12, 15) 213 #define MASK_OP_RR1_S1(op) MASK_OP_META_S1(op) 214 215 /* RR2 Format */ 216 #define MASK_OP_RR2_D(op) MASK_OP_META_D(op) 217 #define MASK_OP_RR2_OP2(op) MASK_BITS_SHIFT(op, 16, 27) 218 #define MASK_OP_RR2_S2(op) MASK_BITS_SHIFT(op, 12, 15) 219 #define MASK_OP_RR2_S1(op) MASK_OP_META_S1(op) 220 221 /* RRPW Format */ 222 #define MASK_OP_RRPW_D(op) MASK_OP_META_D(op) 223 #define MASK_OP_RRPW_POS(op) MASK_BITS_SHIFT(op, 23, 27) 224 #define MASK_OP_RRPW_OP2(op) MASK_BITS_SHIFT(op, 21, 22) 225 #define MASK_OP_RRPW_WIDTH(op) MASK_BITS_SHIFT(op, 16, 20) 226 #define MASK_OP_RRPW_S2(op) MASK_BITS_SHIFT(op, 12, 15) 227 #define MASK_OP_RRPW_S1(op) MASK_OP_META_S1(op) 228 229 /* RRR Format */ 230 #define MASK_OP_RRR_D(op) MASK_OP_META_D(op) 231 #define MASK_OP_RRR_S3(op) MASK_BITS_SHIFT(op, 24, 27) 232 #define MASK_OP_RRR_OP2(op) MASK_BITS_SHIFT(op, 20, 23) 233 #define MASK_OP_RRR_N(op) MASK_BITS_SHIFT(op, 16, 17) 234 #define MASK_OP_RRR_S2(op) MASK_BITS_SHIFT(op, 12, 15) 235 #define MASK_OP_RRR_S1(op) MASK_OP_META_S1(op) 236 237 /* RRR1 Format */ 238 #define MASK_OP_RRR1_D(op) MASK_OP_META_D(op) 239 #define MASK_OP_RRR1_S3(op) MASK_BITS_SHIFT(op, 24, 27) 240 #define MASK_OP_RRR1_OP2(op) MASK_BITS_SHIFT(op, 18, 23) 241 #define MASK_OP_RRR1_N(op) MASK_BITS_SHIFT(op, 16, 17) 242 #define MASK_OP_RRR1_S2(op) MASK_BITS_SHIFT(op, 12, 15) 243 #define MASK_OP_RRR1_S1(op) MASK_OP_META_S1(op) 244 245 /* RRR2 Format */ 246 #define MASK_OP_RRR2_D(op) MASK_OP_META_D(op) 247 #define MASK_OP_RRR2_S3(op) MASK_BITS_SHIFT(op, 24, 27) 248 #define MASK_OP_RRR2_OP2(op) MASK_BITS_SHIFT(op, 16, 23) 249 #define MASK_OP_RRR2_S2(op) MASK_BITS_SHIFT(op, 12, 15) 250 #define MASK_OP_RRR2_S1(op) MASK_OP_META_S1(op) 251 252 /* RRRR Format */ 253 #define MASK_OP_RRRR_D(op) MASK_OP_META_D(op) 254 #define MASK_OP_RRRR_S3(op) MASK_BITS_SHIFT(op, 24, 27) 255 #define MASK_OP_RRRR_OP2(op) MASK_BITS_SHIFT(op, 21, 23) 256 #define MASK_OP_RRRR_S2(op) MASK_BITS_SHIFT(op, 12, 15) 257 #define MASK_OP_RRRR_S1(op) MASK_OP_META_S1(op) 258 259 /* RRRW Format */ 260 #define MASK_OP_RRRW_D(op) MASK_OP_META_D(op) 261 #define MASK_OP_RRRW_S3(op) MASK_BITS_SHIFT(op, 24, 27) 262 #define MASK_OP_RRRW_OP2(op) MASK_BITS_SHIFT(op, 21, 23) 263 #define MASK_OP_RRRW_WIDTH(op) MASK_BITS_SHIFT(op, 16, 20) 264 #define MASK_OP_RRRW_S2(op) MASK_BITS_SHIFT(op, 12, 15) 265 #define MASK_OP_RRRW_S1(op) MASK_OP_META_S1(op) 266 267 /* SYS Format */ 268 #define MASK_OP_SYS_OP2(op) MASK_BITS_SHIFT(op, 22, 27) 269 #define MASK_OP_SYS_S1D(op) MASK_OP_META_S1(op) 270 271 272 273 /* 274 * Tricore Opcodes Enums 275 * 276 * Format: OPC(1|2|M)_InstrLen_Name 277 * OPC1 = only op1 field is used 278 * OPC2 = op1 and op2 field used part of OPCM 279 * OPCM = op1 field used to group Instr 280 * InstrLen = 16|32 281 * Name = Name of Instr 282 */ 283 284 /* 16-Bit */ 285 enum { 286 287 OPCM_16_SR_SYSTEM = 0x00, 288 OPCM_16_SR_ACCU = 0x32, 289 290 OPC1_16_SRC_ADD = 0xc2, 291 OPC1_16_SRC_ADD_A15 = 0x92, 292 OPC1_16_SRC_ADD_15A = 0x9a, 293 OPC1_16_SRR_ADD = 0x42, 294 OPC1_16_SRR_ADD_A15 = 0x12, 295 OPC1_16_SRR_ADD_15A = 0x1a, 296 OPC1_16_SRC_ADD_A = 0xb0, 297 OPC1_16_SRR_ADD_A = 0x30, 298 OPC1_16_SRR_ADDS = 0x22, 299 OPC1_16_SRRS_ADDSC_A = 0x10, 300 OPC1_16_SC_AND = 0x16, 301 OPC1_16_SRR_AND = 0x26, 302 OPC1_16_SC_BISR = 0xe0, 303 OPC1_16_SRC_CADD = 0x8a, 304 OPC1_16_SRC_CADDN = 0xca, 305 OPC1_16_SB_CALL = 0x5c, 306 OPC1_16_SRC_CMOV = 0xaa, 307 OPC1_16_SRR_CMOV = 0x2a, 308 OPC1_16_SRC_CMOVN = 0xea, 309 OPC1_16_SRR_CMOVN = 0x6a, 310 OPC1_16_SRC_EQ = 0xba, 311 OPC1_16_SRR_EQ = 0x3a, 312 OPC1_16_SB_J = 0x3c, 313 OPC1_16_SBC_JEQ = 0x1e, 314 OPC1_16_SBC_JEQ2 = 0x9e, 315 OPC1_16_SBR_JEQ = 0x3e, 316 OPC1_16_SBR_JGEZ = 0xce, 317 OPC1_16_SBR_JGTZ = 0x4e, 318 OPC1_16_SR_JI = 0xdc, 319 OPC1_16_SBR_JLEZ = 0x8e, 320 OPC1_16_SBR_JLTZ = 0x0e, 321 OPC1_16_SBC_JNE = 0x5e, 322 OPC1_16_SBC_JNE2 = 0xde, 323 OPC1_16_SBR_JNE = 0x7e, 324 OPC1_16_SB_JNZ = 0xee, 325 OPC1_16_SBR_JNZ = 0xf6, 326 OPC1_16_SBR_JNZ_A = 0x7c, 327 OPC1_16_SBRN_JNZ_T = 0xae, 328 OPC1_16_SB_JZ = 0x6e, 329 OPC1_16_SBR_JZ = 0x76, 330 OPC1_16_SBR_JZ_A = 0xbc, 331 OPC1_16_SBRN_JZ_T = 0x2e, 332 OPC1_16_SC_LD_A = 0xd8, 333 OPC1_16_SLR_LD_A = 0xd4, 334 OPC1_16_SLR_LD_A_POSTINC = 0xc4, 335 OPC1_16_SLRO_LD_A = 0xc8, 336 OPC1_16_SRO_LD_A = 0xcc, 337 OPC1_16_SLR_LD_BU = 0x14, 338 OPC1_16_SLR_LD_BU_POSTINC = 0x04, 339 OPC1_16_SLRO_LD_BU = 0x08, 340 OPC1_16_SRO_LD_BU = 0x0c, 341 OPC1_16_SLR_LD_H = 0x94, 342 OPC1_16_SLR_LD_H_POSTINC = 0x84, 343 OPC1_16_SLRO_LD_H = 0x88, 344 OPC1_16_SRO_LD_H = 0x8c, 345 OPC1_16_SC_LD_W = 0x58, 346 OPC1_16_SLR_LD_W = 0x54, 347 OPC1_16_SLR_LD_W_POSTINC = 0x44, 348 OPC1_16_SLRO_LD_W = 0x48, 349 OPC1_16_SRO_LD_W = 0x4c, 350 OPC1_16_SBR_LOOP = 0xfc, 351 OPC1_16_SRC_LT = 0xfa, 352 OPC1_16_SRR_LT = 0x7a, 353 OPC1_16_SC_MOV = 0xda, 354 OPC1_16_SRC_MOV = 0x82, 355 OPC1_16_SRR_MOV = 0x02, 356 OPC1_16_SRC_MOV_E = 0xd2,/* 1.6 only */ 357 OPC1_16_SRC_MOV_A = 0xa0, 358 OPC1_16_SRR_MOV_A = 0x60, 359 OPC1_16_SRR_MOV_AA = 0x40, 360 OPC1_16_SRR_MOV_D = 0x80, 361 OPC1_16_SRR_MUL = 0xe2, 362 OPC1_16_SR_NOT = 0x46, 363 OPC1_16_SC_OR = 0x96, 364 OPC1_16_SRR_OR = 0xa6, 365 OPC1_16_SRC_SH = 0x06, 366 OPC1_16_SRC_SHA = 0x86, 367 OPC1_16_SC_ST_A = 0xf8, 368 OPC1_16_SRO_ST_A = 0xec, 369 OPC1_16_SSR_ST_A = 0xf4, 370 OPC1_16_SSR_ST_A_POSTINC = 0xe4, 371 OPC1_16_SSRO_ST_A = 0xe8, 372 OPC1_16_SRO_ST_B = 0x2c, 373 OPC1_16_SSR_ST_B = 0x34, 374 OPC1_16_SSR_ST_B_POSTINC = 0x24, 375 OPC1_16_SSRO_ST_B = 0x28, 376 OPC1_16_SRO_ST_H = 0xac, 377 OPC1_16_SSR_ST_H = 0xb4, 378 OPC1_16_SSR_ST_H_POSTINC = 0xa4, 379 OPC1_16_SSRO_ST_H = 0xa8, 380 OPC1_16_SC_ST_W = 0x78, 381 OPC1_16_SRO_ST_W = 0x6c, 382 OPC1_16_SSR_ST_W = 0x74, 383 OPC1_16_SSR_ST_W_POSTINC = 0x64, 384 OPC1_16_SSRO_ST_W = 0x68, 385 OPC1_16_SRR_SUB = 0xa2, 386 OPC1_16_SRR_SUB_A15B = 0x52, 387 OPC1_16_SRR_SUB_15AB = 0x5a, 388 OPC1_16_SC_SUB_A = 0x20, 389 OPC1_16_SRR_SUBS = 0x62, 390 OPC1_16_SRR_XOR = 0xc6, 391 392 }; 393 394 /* 395 * SR Format 396 */ 397 /* OPCM_16_SR_SYSTEM */ 398 enum { 399 400 OPC2_16_SR_NOP = 0x00, 401 OPC2_16_SR_RET = 0x09, 402 OPC2_16_SR_RFE = 0x08, 403 OPC2_16_SR_DEBUG = 0x0a, 404 OPC2_16_SR_FRET = 0x07, 405 }; 406 /* OPCM_16_SR_ACCU */ 407 enum { 408 OPC2_16_SR_RSUB = 0x05, 409 OPC2_16_SR_SAT_B = 0x00, 410 OPC2_16_SR_SAT_BU = 0x01, 411 OPC2_16_SR_SAT_H = 0x02, 412 OPC2_16_SR_SAT_HU = 0x03, 413 414 }; 415 416 /* 32-Bit */ 417 418 enum { 419 /* ABS Format 1, M */ 420 OPCM_32_ABS_LDW = 0x85, 421 OPCM_32_ABS_LDB = 0x05, 422 OPCM_32_ABS_LDMST_SWAP = 0xe5, 423 OPCM_32_ABS_LDST_CONTEXT = 0x15, 424 OPCM_32_ABS_STORE = 0xa5, 425 OPCM_32_ABS_STOREB_H = 0x25, 426 OPC1_32_ABS_STOREQ = 0x65, 427 OPC1_32_ABS_LD_Q = 0x45, 428 OPC1_32_ABS_LEA = 0xc5, 429 /* ABSB Format */ 430 OPC1_32_ABSB_ST_T = 0xd5, 431 /* B Format */ 432 OPC1_32_B_CALL = 0x6d, 433 OPC1_32_B_CALLA = 0xed, 434 OPC1_32_B_FCALL = 0x61, 435 OPC1_32_B_FCALLA = 0xe1, 436 OPC1_32_B_J = 0x1d, 437 OPC1_32_B_JA = 0x9d, 438 OPC1_32_B_JL = 0x5d, 439 OPC1_32_B_JLA = 0xdd, 440 /* Bit Format */ 441 OPCM_32_BIT_ANDACC = 0x47, 442 OPCM_32_BIT_LOGICAL_T1 = 0x87, 443 OPCM_32_BIT_INSERT = 0x67, 444 OPCM_32_BIT_LOGICAL_T2 = 0x07, 445 OPCM_32_BIT_ORAND = 0xc7, 446 OPCM_32_BIT_SH_LOGIC1 = 0x27, 447 OPCM_32_BIT_SH_LOGIC2 = 0xa7, 448 /* BO Format */ 449 OPCM_32_BO_ADDRMODE_POST_PRE_BASE = 0x89, 450 OPCM_32_BO_ADDRMODE_BITREVERSE_CIRCULAR = 0xa9, 451 OPCM_32_BO_ADDRMODE_LD_POST_PRE_BASE = 0x09, 452 OPCM_32_BO_ADDRMODE_LD_BITREVERSE_CIRCULAR = 0x29, 453 OPCM_32_BO_ADDRMODE_STCTX_POST_PRE_BASE = 0x49, 454 OPCM_32_BO_ADDRMODE_LDMST_BITREVERSE_CIRCULAR = 0x69, 455 /* BOL Format */ 456 OPC1_32_BOL_LD_A_LONGOFF = 0x99, 457 OPC1_32_BOL_LD_W_LONGOFF = 0x19, 458 OPC1_32_BOL_LEA_LONGOFF = 0xd9, 459 OPC1_32_BOL_ST_W_LONGOFF = 0x59, 460 OPC1_32_BOL_ST_A_LONGOFF = 0xb5, /* 1.6 only */ 461 OPC1_32_BOL_LD_B_LONGOFF = 0x79, /* 1.6 only */ 462 OPC1_32_BOL_LD_BU_LONGOFF = 0x39, /* 1.6 only */ 463 OPC1_32_BOL_LD_H_LONGOFF = 0xc9, /* 1.6 only */ 464 OPC1_32_BOL_LD_HU_LONGOFF = 0xb9, /* 1.6 only */ 465 OPC1_32_BOL_ST_B_LONGOFF = 0xe9, /* 1.6 only */ 466 OPC1_32_BOL_ST_H_LONGOFF = 0xf9, /* 1.6 only */ 467 /* BRC Format */ 468 OPCM_32_BRC_EQ_NEQ = 0xdf, 469 OPCM_32_BRC_GE = 0xff, 470 OPCM_32_BRC_JLT = 0xbf, 471 OPCM_32_BRC_JNE = 0x9f, 472 /* BRN Format */ 473 OPCM_32_BRN_JTT = 0x6f, 474 /* BRR Format */ 475 OPCM_32_BRR_EQ_NEQ = 0x5f, 476 OPCM_32_BRR_ADDR_EQ_NEQ = 0x7d, 477 OPCM_32_BRR_GE = 0x7f, 478 OPCM_32_BRR_JLT = 0x3f, 479 OPCM_32_BRR_JNE = 0x1f, 480 OPCM_32_BRR_JNZ = 0xbd, 481 OPCM_32_BRR_LOOP = 0xfd, 482 /* RC Format */ 483 OPCM_32_RC_LOGICAL_SHIFT = 0x8f, 484 OPCM_32_RC_ACCUMULATOR = 0x8b, 485 OPCM_32_RC_SERVICEROUTINE = 0xad, 486 OPCM_32_RC_MUL = 0x53, 487 /* RCPW Format */ 488 OPCM_32_RCPW_MASK_INSERT = 0xb7, 489 /* RCR Format */ 490 OPCM_32_RCR_COND_SELECT = 0xab, 491 OPCM_32_RCR_MADD = 0x13, 492 OPCM_32_RCR_MSUB = 0x33, 493 /* RCRR Format */ 494 OPC1_32_RCRR_INSERT = 0x97, 495 /* RCRW Format */ 496 OPCM_32_RCRW_MASK_INSERT = 0xd7, 497 /* RLC Format */ 498 OPC1_32_RLC_ADDI = 0x1b, 499 OPC1_32_RLC_ADDIH = 0x9b, 500 OPC1_32_RLC_ADDIH_A = 0x11, 501 OPC1_32_RLC_MFCR = 0x4d, 502 OPC1_32_RLC_MOV = 0x3b, 503 OPC1_32_RLC_MOV_64 = 0xfb, /* 1.6 only */ 504 OPC1_32_RLC_MOV_U = 0xbb, 505 OPC1_32_RLC_MOV_H = 0x7b, 506 OPC1_32_RLC_MOVH_A = 0x91, 507 OPC1_32_RLC_MTCR = 0xcd, 508 /* RR Format */ 509 OPCM_32_RR_LOGICAL_SHIFT = 0x0f, 510 OPCM_32_RR_ACCUMULATOR = 0x0b, 511 OPCM_32_RR_ADDRESS = 0x01, 512 OPCM_32_RR_DIVIDE = 0x4b, 513 OPCM_32_RR_IDIRECT = 0x2d, 514 /* RR1 Format */ 515 OPCM_32_RR1_MUL = 0xb3, 516 OPCM_32_RR1_MULQ = 0x93, 517 /* RR2 Format */ 518 OPCM_32_RR2_MUL = 0x73, 519 /* RRPW Format */ 520 OPCM_32_RRPW_EXTRACT_INSERT = 0x37, 521 OPC1_32_RRPW_DEXTR = 0x77, 522 /* RRR Format */ 523 OPCM_32_RRR_COND_SELECT = 0x2b, 524 OPCM_32_RRR_DIVIDE = 0x6b, 525 /* RRR1 Format */ 526 OPCM_32_RRR1_MADD = 0x83, 527 OPCM_32_RRR1_MADDQ_H = 0x43, 528 OPCM_32_RRR1_MADDSU_H = 0xc3, 529 OPCM_32_RRR1_MSUB_H = 0xa3, 530 OPCM_32_RRR1_MSUB_Q = 0x63, 531 OPCM_32_RRR1_MSUBAD_H = 0xe3, 532 /* RRR2 Format */ 533 OPCM_32_RRR2_MADD = 0x03, 534 OPCM_32_RRR2_MSUB = 0x23, 535 /* RRRR Format */ 536 OPCM_32_RRRR_EXTRACT_INSERT = 0x17, 537 /* RRRW Format */ 538 OPCM_32_RRRW_EXTRACT_INSERT = 0x57, 539 /* SYS Format */ 540 OPCM_32_SYS_INTERRUPTS = 0x0d, 541 OPC1_32_SYS_RSTV = 0x2f, 542 }; 543 544 545 546 /* 547 * ABS Format 548 */ 549 550 /* OPCM_32_ABS_LDW */ 551 enum { 552 553 OPC2_32_ABS_LD_A = 0x02, 554 OPC2_32_ABS_LD_D = 0x01, 555 OPC2_32_ABS_LD_DA = 0x03, 556 OPC2_32_ABS_LD_W = 0x00, 557 }; 558 559 /* OPCM_32_ABS_LDB */ 560 enum { 561 OPC2_32_ABS_LD_B = 0x00, 562 OPC2_32_ABS_LD_BU = 0x01, 563 OPC2_32_ABS_LD_H = 0x02, 564 OPC2_32_ABS_LD_HU = 0x03, 565 }; 566 /* OPCM_32_ABS_LDMST_SWAP */ 567 enum { 568 OPC2_32_ABS_LDMST = 0x01, 569 OPC2_32_ABS_SWAP_W = 0x00, 570 }; 571 /* OPCM_32_ABS_LDST_CONTEXT */ 572 enum { 573 OPC2_32_ABS_LDLCX = 0x02, 574 OPC2_32_ABS_LDUCX = 0x03, 575 OPC2_32_ABS_STLCX = 0x00, 576 OPC2_32_ABS_STUCX = 0x01, 577 }; 578 /* OPCM_32_ABS_STORE */ 579 enum { 580 OPC2_32_ABS_ST_A = 0x02, 581 OPC2_32_ABS_ST_D = 0x01, 582 OPC2_32_ABS_ST_DA = 0x03, 583 OPC2_32_ABS_ST_W = 0x00, 584 }; 585 /* OPCM_32_ABS_STOREB_H */ 586 enum { 587 OPC2_32_ABS_ST_B = 0x00, 588 OPC2_32_ABS_ST_H = 0x02, 589 }; 590 /* 591 * Bit Format 592 */ 593 /* OPCM_32_BIT_ANDACC */ 594 enum { 595 OPC2_32_BIT_AND_AND_T = 0x00, 596 OPC2_32_BIT_AND_ANDN_T = 0x03, 597 OPC2_32_BIT_AND_NOR_T = 0x02, 598 OPC2_32_BIT_AND_OR_T = 0x01, 599 }; 600 /* OPCM_32_BIT_LOGICAL_T */ 601 enum { 602 OPC2_32_BIT_AND_T = 0x00, 603 OPC2_32_BIT_ANDN_T = 0x03, 604 OPC2_32_BIT_NOR_T = 0x02, 605 OPC2_32_BIT_OR_T = 0x01, 606 }; 607 /* OPCM_32_BIT_INSERT */ 608 enum { 609 OPC2_32_BIT_INS_T = 0x00, 610 OPC2_32_BIT_INSN_T = 0x01, 611 }; 612 /* OPCM_32_BIT_LOGICAL_T2 */ 613 enum { 614 OPC2_32_BIT_NAND_T = 0x00, 615 OPC2_32_BIT_ORN_T = 0x01, 616 OPC2_32_BIT_XNOR_T = 0x02, 617 OPC2_32_BIT_XOR_T = 0x03, 618 }; 619 /* OPCM_32_BIT_ORAND */ 620 enum { 621 OPC2_32_BIT_OR_AND_T = 0x00, 622 OPC2_32_BIT_OR_ANDN_T = 0x03, 623 OPC2_32_BIT_OR_NOR_T = 0x02, 624 OPC2_32_BIT_OR_OR_T = 0x01, 625 }; 626 /*OPCM_32_BIT_SH_LOGIC1 */ 627 enum { 628 OPC2_32_BIT_SH_AND_T = 0x00, 629 OPC2_32_BIT_SH_ANDN_T = 0x03, 630 OPC2_32_BIT_SH_NOR_T = 0x02, 631 OPC2_32_BIT_SH_OR_T = 0x01, 632 }; 633 /* OPCM_32_BIT_SH_LOGIC2 */ 634 enum { 635 OPC2_32_BIT_SH_NAND_T = 0x00, 636 OPC2_32_BIT_SH_ORN_T = 0x01, 637 OPC2_32_BIT_SH_XNOR_T = 0x02, 638 OPC2_32_BIT_SH_XOR_T = 0x03, 639 }; 640 /* 641 * BO Format 642 */ 643 /* OPCM_32_BO_ADDRMODE_POST_PRE_BASE */ 644 enum { 645 OPC2_32_BO_CACHEA_I_SHORTOFF = 0x2e, 646 OPC2_32_BO_CACHEA_I_POSTINC = 0x0e, 647 OPC2_32_BO_CACHEA_I_PREINC = 0x1e, 648 OPC2_32_BO_CACHEA_W_SHORTOFF = 0x2c, 649 OPC2_32_BO_CACHEA_W_POSTINC = 0x0c, 650 OPC2_32_BO_CACHEA_W_PREINC = 0x1c, 651 OPC2_32_BO_CACHEA_WI_SHORTOFF = 0x2d, 652 OPC2_32_BO_CACHEA_WI_POSTINC = 0x0d, 653 OPC2_32_BO_CACHEA_WI_PREINC = 0x1d, 654 /* 1.3.1 only */ 655 OPC2_32_BO_CACHEI_W_SHORTOFF = 0x2b, 656 OPC2_32_BO_CACHEI_W_POSTINC = 0x0b, 657 OPC2_32_BO_CACHEI_W_PREINC = 0x1b, 658 OPC2_32_BO_CACHEI_WI_SHORTOFF = 0x2f, 659 OPC2_32_BO_CACHEI_WI_POSTINC = 0x0f, 660 OPC2_32_BO_CACHEI_WI_PREINC = 0x1f, 661 /* end 1.3.1 only */ 662 OPC2_32_BO_ST_A_SHORTOFF = 0x26, 663 OPC2_32_BO_ST_A_POSTINC = 0x06, 664 OPC2_32_BO_ST_A_PREINC = 0x16, 665 OPC2_32_BO_ST_B_SHORTOFF = 0x20, 666 OPC2_32_BO_ST_B_POSTINC = 0x00, 667 OPC2_32_BO_ST_B_PREINC = 0x10, 668 OPC2_32_BO_ST_D_SHORTOFF = 0x25, 669 OPC2_32_BO_ST_D_POSTINC = 0x05, 670 OPC2_32_BO_ST_D_PREINC = 0x15, 671 OPC2_32_BO_ST_DA_SHORTOFF = 0x27, 672 OPC2_32_BO_ST_DA_POSTINC = 0x07, 673 OPC2_32_BO_ST_DA_PREINC = 0x17, 674 OPC2_32_BO_ST_H_SHORTOFF = 0x22, 675 OPC2_32_BO_ST_H_POSTINC = 0x02, 676 OPC2_32_BO_ST_H_PREINC = 0x12, 677 OPC2_32_BO_ST_Q_SHORTOFF = 0x28, 678 OPC2_32_BO_ST_Q_POSTINC = 0x08, 679 OPC2_32_BO_ST_Q_PREINC = 0x18, 680 OPC2_32_BO_ST_W_SHORTOFF = 0x24, 681 OPC2_32_BO_ST_W_POSTINC = 0x04, 682 OPC2_32_BO_ST_W_PREINC = 0x14, 683 }; 684 /* OPCM_32_BO_ADDRMODE_BITREVERSE_CIRCULAR */ 685 enum { 686 OPC2_32_BO_CACHEA_I_BR = 0x0e, 687 OPC2_32_BO_CACHEA_I_CIRC = 0x1e, 688 OPC2_32_BO_CACHEA_W_BR = 0x0c, 689 OPC2_32_BO_CACHEA_W_CIRC = 0x1c, 690 OPC2_32_BO_CACHEA_WI_BR = 0x0d, 691 OPC2_32_BO_CACHEA_WI_CIRC = 0x1d, 692 OPC2_32_BO_ST_A_BR = 0x06, 693 OPC2_32_BO_ST_A_CIRC = 0x16, 694 OPC2_32_BO_ST_B_BR = 0x00, 695 OPC2_32_BO_ST_B_CIRC = 0x10, 696 OPC2_32_BO_ST_D_BR = 0x05, 697 OPC2_32_BO_ST_D_CIRC = 0x15, 698 OPC2_32_BO_ST_DA_BR = 0x07, 699 OPC2_32_BO_ST_DA_CIRC = 0x17, 700 OPC2_32_BO_ST_H_BR = 0x02, 701 OPC2_32_BO_ST_H_CIRC = 0x12, 702 OPC2_32_BO_ST_Q_BR = 0x08, 703 OPC2_32_BO_ST_Q_CIRC = 0x18, 704 OPC2_32_BO_ST_W_BR = 0x04, 705 OPC2_32_BO_ST_W_CIRC = 0x14, 706 }; 707 /* OPCM_32_BO_ADDRMODE_LD_POST_PRE_BASE */ 708 enum { 709 OPC2_32_BO_LD_A_SHORTOFF = 0x26, 710 OPC2_32_BO_LD_A_POSTINC = 0x06, 711 OPC2_32_BO_LD_A_PREINC = 0x16, 712 OPC2_32_BO_LD_B_SHORTOFF = 0x20, 713 OPC2_32_BO_LD_B_POSTINC = 0x00, 714 OPC2_32_BO_LD_B_PREINC = 0x10, 715 OPC2_32_BO_LD_BU_SHORTOFF = 0x21, 716 OPC2_32_BO_LD_BU_POSTINC = 0x01, 717 OPC2_32_BO_LD_BU_PREINC = 0x11, 718 OPC2_32_BO_LD_D_SHORTOFF = 0x25, 719 OPC2_32_BO_LD_D_POSTINC = 0x05, 720 OPC2_32_BO_LD_D_PREINC = 0x15, 721 OPC2_32_BO_LD_DA_SHORTOFF = 0x27, 722 OPC2_32_BO_LD_DA_POSTINC = 0x07, 723 OPC2_32_BO_LD_DA_PREINC = 0x17, 724 OPC2_32_BO_LD_H_SHORTOFF = 0x22, 725 OPC2_32_BO_LD_H_POSTINC = 0x02, 726 OPC2_32_BO_LD_H_PREINC = 0x12, 727 OPC2_32_BO_LD_HU_SHORTOFF = 0x23, 728 OPC2_32_BO_LD_HU_POSTINC = 0x03, 729 OPC2_32_BO_LD_HU_PREINC = 0x13, 730 OPC2_32_BO_LD_Q_SHORTOFF = 0x28, 731 OPC2_32_BO_LD_Q_POSTINC = 0x08, 732 OPC2_32_BO_LD_Q_PREINC = 0x18, 733 OPC2_32_BO_LD_W_SHORTOFF = 0x24, 734 OPC2_32_BO_LD_W_POSTINC = 0x04, 735 OPC2_32_BO_LD_W_PREINC = 0x14, 736 }; 737 /* OPCM_32_BO_ADDRMODE_LD_BITREVERSE_CIRCULAR */ 738 enum { 739 OPC2_32_BO_LD_A_BR = 0x06, 740 OPC2_32_BO_LD_A_CIRC = 0x16, 741 OPC2_32_BO_LD_B_BR = 0x00, 742 OPC2_32_BO_LD_B_CIRC = 0x10, 743 OPC2_32_BO_LD_BU_BR = 0x01, 744 OPC2_32_BO_LD_BU_CIRC = 0x11, 745 OPC2_32_BO_LD_D_BR = 0x05, 746 OPC2_32_BO_LD_D_CIRC = 0x15, 747 OPC2_32_BO_LD_DA_BR = 0x07, 748 OPC2_32_BO_LD_DA_CIRC = 0x17, 749 OPC2_32_BO_LD_H_BR = 0x02, 750 OPC2_32_BO_LD_H_CIRC = 0x12, 751 OPC2_32_BO_LD_HU_BR = 0x03, 752 OPC2_32_BO_LD_HU_CIRC = 0x13, 753 OPC2_32_BO_LD_Q_BR = 0x08, 754 OPC2_32_BO_LD_Q_CIRC = 0x18, 755 OPC2_32_BO_LD_W_BR = 0x04, 756 OPC2_32_BO_LD_W_CIRC = 0x14, 757 }; 758 /* OPCM_32_BO_ADDRMODE_STCTX_POST_PRE_BASE */ 759 enum { 760 OPC2_32_BO_LDLCX_SHORTOFF = 0x24, 761 OPC2_32_BO_LDMST_SHORTOFF = 0x21, 762 OPC2_32_BO_LDMST_POSTINC = 0x01, 763 OPC2_32_BO_LDMST_PREINC = 0x11, 764 OPC2_32_BO_LDUCX_SHORTOFF = 0x25, 765 OPC2_32_BO_LEA_SHORTOFF = 0x28, 766 OPC2_32_BO_STLCX_SHORTOFF = 0x26, 767 OPC2_32_BO_STUCX_SHORTOFF = 0x27, 768 OPC2_32_BO_SWAP_W_SHORTOFF = 0x20, 769 OPC2_32_BO_SWAP_W_POSTINC = 0x00, 770 OPC2_32_BO_SWAP_W_PREINC = 0x10, 771 OPC2_32_BO_CMPSWAP_W_SHORTOFF = 0x23, 772 OPC2_32_BO_CMPSWAP_W_POSTINC = 0x03, 773 OPC2_32_BO_CMPSWAP_W_PREINC = 0x13, 774 OPC2_32_BO_SWAPMSK_W_SHORTOFF = 0x22, 775 OPC2_32_BO_SWAPMSK_W_POSTINC = 0x02, 776 OPC2_32_BO_SWAPMSK_W_PREINC = 0x12, 777 }; 778 /*OPCM_32_BO_ADDRMODE_LDMST_BITREVERSE_CIRCULAR */ 779 enum { 780 OPC2_32_BO_LDMST_BR = 0x01, 781 OPC2_32_BO_LDMST_CIRC = 0x11, 782 OPC2_32_BO_SWAP_W_BR = 0x00, 783 OPC2_32_BO_SWAP_W_CIRC = 0x10, 784 OPC2_32_BO_CMPSWAP_W_BR = 0x03, 785 OPC2_32_BO_CMPSWAP_W_CIRC = 0x13, 786 OPC2_32_BO_SWAPMSK_W_BR = 0x02, 787 OPC2_32_BO_SWAPMSK_W_CIRC = 0x12, 788 }; 789 /* 790 * BRC Format 791 */ 792 /*OPCM_32_BRC_EQ_NEQ */ 793 enum { 794 OPC2_32_BRC_JEQ = 0x00, 795 OPC2_32_BRC_JNE = 0x01, 796 }; 797 /* OPCM_32_BRC_GE */ 798 enum { 799 OP2_32_BRC_JGE = 0x00, 800 OPC_32_BRC_JGE_U = 0x01, 801 }; 802 /* OPCM_32_BRC_JLT */ 803 enum { 804 OPC2_32_BRC_JLT = 0x00, 805 OPC2_32_BRC_JLT_U = 0x01, 806 }; 807 /* OPCM_32_BRC_JNE */ 808 enum { 809 OPC2_32_BRC_JNED = 0x01, 810 OPC2_32_BRC_JNEI = 0x00, 811 }; 812 /* 813 * BRN Format 814 */ 815 /* OPCM_32_BRN_JTT */ 816 enum { 817 OPC2_32_BRN_JNZ_T = 0x01, 818 OPC2_32_BRN_JZ_T = 0x00, 819 }; 820 /* 821 * BRR Format 822 */ 823 /* OPCM_32_BRR_EQ_NEQ */ 824 enum { 825 OPC2_32_BRR_JEQ = 0x00, 826 OPC2_32_BRR_JNE = 0x01, 827 }; 828 /* OPCM_32_BRR_ADDR_EQ_NEQ */ 829 enum { 830 OPC2_32_BRR_JEQ_A = 0x00, 831 OPC2_32_BRR_JNE_A = 0x01, 832 }; 833 /*OPCM_32_BRR_GE */ 834 enum { 835 OPC2_32_BRR_JGE = 0x00, 836 OPC2_32_BRR_JGE_U = 0x01, 837 }; 838 /* OPCM_32_BRR_JLT */ 839 enum { 840 OPC2_32_BRR_JLT = 0x00, 841 OPC2_32_BRR_JLT_U = 0x01, 842 }; 843 /* OPCM_32_BRR_JNE */ 844 enum { 845 OPC2_32_BRR_JNED = 0x01, 846 OPC2_32_BRR_JNEI = 0x00, 847 }; 848 /* OPCM_32_BRR_JNZ */ 849 enum { 850 OPC2_32_BRR_JNZ_A = 0x01, 851 OPC2_32_BRR_JZ_A = 0x00, 852 }; 853 /* OPCM_32_BRR_LOOP */ 854 enum { 855 OPC2_32_BRR_LOOP = 0x00, 856 OPC2_32_BRR_LOOPU = 0x01, 857 }; 858 /* 859 * RC Format 860 */ 861 /* OPCM_32_RC_LOGICAL_SHIFT */ 862 enum { 863 OPC2_32_RC_AND = 0x08, 864 OPC2_32_RC_ANDN = 0x0e, 865 OPC2_32_RC_NAND = 0x09, 866 OPC2_32_RC_NOR = 0x0b, 867 OPC2_32_RC_OR = 0x0a, 868 OPC2_32_RC_ORN = 0x0f, 869 OPC2_32_RC_SH = 0x00, 870 OPC2_32_RC_SH_H = 0x40, 871 OPC2_32_RC_SHA = 0x01, 872 OPC2_32_RC_SHA_H = 0x41, 873 OPC2_32_RC_SHAS = 0x02, 874 OPC2_32_RC_XNOR = 0x0d, 875 OPC2_32_RC_XOR = 0x0c, 876 }; 877 /* OPCM_32_RC_ACCUMULATOR */ 878 enum { 879 OPC2_32_RC_ABSDIF = 0x0e, 880 OPC2_32_RC_ABSDIFS = 0x0f, 881 OPC2_32_RC_ADD = 0x00, 882 OPC2_32_RC_ADDC = 0x05, 883 OPC2_32_RC_ADDS = 0x02, 884 OPC2_32_RC_ADDS_U = 0x03, 885 OPC2_32_RC_ADDX = 0x04, 886 OPC2_32_RC_AND_EQ = 0x20, 887 OPC2_32_RC_AND_GE = 0x24, 888 OPC2_32_RC_AND_GE_U = 0x25, 889 OPC2_32_RC_AND_LT = 0x22, 890 OPC2_32_RC_AND_LT_U = 0x23, 891 OPC2_32_RC_AND_NE = 0x21, 892 OPC2_32_RC_EQ = 0x10, 893 OPC2_32_RC_EQANY_B = 0x56, 894 OPC2_32_RC_EQANY_H = 0x76, 895 OPC2_32_RC_GE = 0x14, 896 OPC2_32_RC_GE_U = 0x15, 897 OPC2_32_RC_LT = 0x12, 898 OPC2_32_RC_LT_U = 0x13, 899 OPC2_32_RC_MAX = 0x1a, 900 OPC2_32_RC_MAX_U = 0x1b, 901 OPC2_32_RC_MIN = 0x18, 902 OPC2_32_RC_MIN_U = 0x19, 903 OPC2_32_RC_NE = 0x11, 904 OPC2_32_RC_OR_EQ = 0x27, 905 OPC2_32_RC_OR_GE = 0x2b, 906 OPC2_32_RC_OR_GE_U = 0x2c, 907 OPC2_32_RC_OR_LT = 0x29, 908 OPC2_32_RC_OR_LT_U = 0x2a, 909 OPC2_32_RC_OR_NE = 0x28, 910 OPC2_32_RC_RSUB = 0x08, 911 OPC2_32_RC_RSUBS = 0x0a, 912 OPC2_32_RC_RSUBS_U = 0x0b, 913 OPC2_32_RC_SH_EQ = 0x37, 914 OPC2_32_RC_SH_GE = 0x3b, 915 OPC2_32_RC_SH_GE_U = 0x3c, 916 OPC2_32_RC_SH_LT = 0x39, 917 OPC2_32_RC_SH_LT_U = 0x3a, 918 OPC2_32_RC_SH_NE = 0x38, 919 OPC2_32_RC_XOR_EQ = 0x2f, 920 OPC2_32_RC_XOR_GE = 0x33, 921 OPC2_32_RC_XOR_GE_U = 0x34, 922 OPC2_32_RC_XOR_LT = 0x31, 923 OPC2_32_RC_XOR_LT_U = 0x32, 924 OPC2_32_RC_XOR_NE = 0x30, 925 }; 926 /* OPCM_32_RC_SERVICEROUTINE */ 927 enum { 928 OPC2_32_RC_BISR = 0x00, 929 OPC2_32_RC_SYSCALL = 0x04, 930 }; 931 /* OPCM_32_RC_MUL */ 932 enum { 933 OPC2_32_RC_MUL_32 = 0x01, 934 OPC2_32_RC_MUL_64 = 0x03, 935 OPC2_32_RC_MULS_32 = 0x05, 936 OPC2_32_RC_MUL_U_64 = 0x02, 937 OPC2_32_RC_MULS_U_32 = 0x04, 938 }; 939 /* 940 * RCPW Format 941 */ 942 /* OPCM_32_RCPW_MASK_INSERT */ 943 enum { 944 OPC2_32_RCPW_IMASK = 0x01, 945 OPC2_32_RCPW_INSERT = 0x00, 946 }; 947 /* 948 * RCR Format 949 */ 950 /* OPCM_32_RCR_COND_SELECT */ 951 enum { 952 OPC2_32_RCR_CADD = 0x00, 953 OPC2_32_RCR_CADDN = 0x01, 954 OPC2_32_RCR_SEL = 0x04, 955 OPC2_32_RCR_SELN = 0x05, 956 }; 957 /* OPCM_32_RCR_MADD */ 958 enum { 959 OPC2_32_RCR_MADD_32 = 0x01, 960 OPC2_32_RCR_MADD_64 = 0x03, 961 OPC2_32_RCR_MADDS_32 = 0x05, 962 OPC2_32_RCR_MADDS_64 = 0x07, 963 OPC2_32_RCR_MADD_U_64 = 0x02, 964 OPC2_32_RCR_MADDS_U_32 = 0x04, 965 OPC2_32_RCR_MADDS_U_64 = 0x06, 966 }; 967 /* OPCM_32_RCR_MSUB */ 968 enum { 969 OPC2_32_RCR_MSUB_32 = 0x01, 970 OPC2_32_RCR_MSUB_64 = 0x03, 971 OPC2_32_RCR_MSUBS_32 = 0x05, 972 OPC2_32_RCR_MSUBS_64 = 0x07, 973 OPC2_32_RCR_MSUB_U_64 = 0x02, 974 OPC2_32_RCR_MSUBS_U_32 = 0x04, 975 OPC2_32_RCR_MSUBS_U_64 = 0x06, 976 }; 977 /* 978 * RCRW Format 979 */ 980 /* OPCM_32_RCRW_MASK_INSERT */ 981 enum { 982 OPC2_32_RCRW_IMASK = 0x01, 983 OPC2_32_RCRW_INSERT = 0x00, 984 }; 985 986 /* 987 * RR Format 988 */ 989 /* OPCM_32_RR_LOGICAL_SHIFT */ 990 enum { 991 OPC2_32_RR_AND = 0x08, 992 OPC2_32_RR_ANDN = 0x0e, 993 OPC2_32_RR_CLO = 0x1c, 994 OPC2_32_RR_CLO_H = 0x7d, 995 OPC2_32_RR_CLS = 0x1d, 996 OPC2_32_RR_CLS_H = 0x7e, 997 OPC2_32_RR_CLZ = 0x1b, 998 OPC2_32_RR_CLZ_H = 0x7c, 999 OPC2_32_RR_NAND = 0x09, 1000 OPC2_32_RR_NOR = 0x0b, 1001 OPC2_32_RR_OR = 0x0a, 1002 OPC2_32_RR_ORN = 0x0f, 1003 OPC2_32_RR_SH = 0x00, 1004 OPC2_32_RR_SH_H = 0x40, 1005 OPC2_32_RR_SHA = 0x01, 1006 OPC2_32_RR_SHA_H = 0x41, 1007 OPC2_32_RR_SHAS = 0x02, 1008 OPC2_32_RR_XNOR = 0x0d, 1009 OPC2_32_RR_XOR = 0x0c, 1010 }; 1011 /* OPCM_32_RR_ACCUMULATOR */ 1012 enum { 1013 OPC2_32_RR_ABS = 0x1c, 1014 OPC2_32_RR_ABS_B = 0x5c, 1015 OPC2_32_RR_ABS_H = 0x7c, 1016 OPC2_32_RR_ABSDIF = 0x0e, 1017 OPC2_32_RR_ABSDIF_B = 0x4e, 1018 OPC2_32_RR_ABSDIF_H = 0x6e, 1019 OPC2_32_RR_ABSDIFS = 0x0f, 1020 OPC2_32_RR_ABSDIFS_H = 0x6f, 1021 OPC2_32_RR_ABSS = 0x1d, 1022 OPC2_32_RR_ABSS_H = 0x7d, 1023 OPC2_32_RR_ADD = 0x00, 1024 OPC2_32_RR_ADD_B = 0x40, 1025 OPC2_32_RR_ADD_H = 0x60, 1026 OPC2_32_RR_ADDC = 0x05, 1027 OPC2_32_RR_ADDS = 0x02, 1028 OPC2_32_RR_ADDS_H = 0x62, 1029 OPC2_32_RR_ADDS_HU = 0x63, 1030 OPC2_32_RR_ADDS_U = 0x03, 1031 OPC2_32_RR_ADDX = 0x04, 1032 OPC2_32_RR_AND_EQ = 0x20, 1033 OPC2_32_RR_AND_GE = 0x24, 1034 OPC2_32_RR_AND_GE_U = 0x25, 1035 OPC2_32_RR_AND_LT = 0x22, 1036 OPC2_32_RR_AND_LT_U = 0x23, 1037 OPC2_32_RR_AND_NE = 0x21, 1038 OPC2_32_RR_EQ = 0x10, 1039 OPC2_32_RR_EQ_B = 0x50, 1040 OPC2_32_RR_EQ_H = 0x70, 1041 OPC2_32_RR_EQ_W = 0x90, 1042 OPC2_32_RR_EQANY_B = 0x56, 1043 OPC2_32_RR_EQANY_H = 0x76, 1044 OPC2_32_RR_GE = 0x14, 1045 OPC2_32_RR_GE_U = 0x15, 1046 OPC2_32_RR_LT = 0x12, 1047 OPC2_32_RR_LT_U = 0x13, 1048 OPC2_32_RR_LT_B = 0x52, 1049 OPC2_32_RR_LT_BU = 0x53, 1050 OPC2_32_RR_LT_H = 0x72, 1051 OPC2_32_RR_LT_HU = 0x73, 1052 OPC2_32_RR_LT_W = 0x92, 1053 OPC2_32_RR_LT_WU = 0x93, 1054 OPC2_32_RR_MAX = 0x1a, 1055 OPC2_32_RR_MAX_U = 0x1b, 1056 OPC2_32_RR_MAX_B = 0x5a, 1057 OPC2_32_RR_MAX_BU = 0x5b, 1058 OPC2_32_RR_MAX_H = 0x7a, 1059 OPC2_32_RR_MAX_HU = 0x7b, 1060 OPC2_32_RR_MIN = 0x18, 1061 OPC2_32_RR_MIN_U = 0x19, 1062 OPC2_32_RR_MIN_B = 0x58, 1063 OPC2_32_RR_MIN_BU = 0x59, 1064 OPC2_32_RR_MIN_H = 0x78, 1065 OPC2_32_RR_MIN_HU = 0x79, 1066 OPC2_32_RR_MOV = 0x1f, 1067 OPC2_32_RR_MOV_64 = 0x81, 1068 OPC2_32_RR_NE = 0x11, 1069 OPC2_32_RR_OR_EQ = 0x27, 1070 OPC2_32_RR_OR_GE = 0x2b, 1071 OPC2_32_RR_OR_GE_U = 0x2c, 1072 OPC2_32_RR_OR_LT = 0x29, 1073 OPC2_32_RR_OR_LT_U = 0x2a, 1074 OPC2_32_RR_OR_NE = 0x28, 1075 OPC2_32_RR_SAT_B = 0x5e, 1076 OPC2_32_RR_SAT_BU = 0x5f, 1077 OPC2_32_RR_SAT_H = 0x7e, 1078 OPC2_32_RR_SAT_HU = 0x7f, 1079 OPC2_32_RR_SH_EQ = 0x37, 1080 OPC2_32_RR_SH_GE = 0x3b, 1081 OPC2_32_RR_SH_GE_U = 0x3c, 1082 OPC2_32_RR_SH_LT = 0x39, 1083 OPC2_32_RR_SH_LT_U = 0x3a, 1084 OPC2_32_RR_SH_NE = 0x38, 1085 OPC2_32_RR_SUB = 0x08, 1086 OPC2_32_RR_SUB_B = 0x48, 1087 OPC2_32_RR_SUB_H = 0x68, 1088 OPC2_32_RR_SUBC = 0x0d, 1089 OPC2_32_RR_SUBS = 0x0a, 1090 OPC2_32_RR_SUBS_U = 0x0b, 1091 OPC2_32_RR_SUBS_H = 0x6a, 1092 OPC2_32_RR_SUBS_HU = 0x6b, 1093 OPC2_32_RR_SUBX = 0x0c, 1094 OPC2_32_RR_XOR_EQ = 0x2f, 1095 OPC2_32_RR_XOR_GE = 0x33, 1096 OPC2_32_RR_XOR_GE_U = 0x34, 1097 OPC2_32_RR_XOR_LT = 0x31, 1098 OPC2_32_RR_XOR_LT_U = 0x32, 1099 OPC2_32_RR_XOR_NE = 0x30, 1100 }; 1101 /* OPCM_32_RR_ADDRESS */ 1102 enum { 1103 OPC2_32_RR_ADD_A = 0x01, 1104 OPC2_32_RR_ADDSC_A = 0x60, 1105 OPC2_32_RR_ADDSC_AT = 0x62, 1106 OPC2_32_RR_EQ_A = 0x40, 1107 OPC2_32_RR_EQZ = 0x48, 1108 OPC2_32_RR_GE_A = 0x43, 1109 OPC2_32_RR_LT_A = 0x42, 1110 OPC2_32_RR_MOV_A = 0x63, 1111 OPC2_32_RR_MOV_AA = 0x00, 1112 OPC2_32_RR_MOV_D = 0x4c, 1113 OPC2_32_RR_NE_A = 0x41, 1114 OPC2_32_RR_NEZ_A = 0x49, 1115 OPC2_32_RR_SUB_A = 0x02, 1116 }; 1117 /* OPCM_32_RR_FLOAT */ 1118 enum { 1119 OPC2_32_RR_BMERGE = 0x01, 1120 OPC2_32_RR_BSPLIT = 0x09, 1121 OPC2_32_RR_DVINIT_B = 0x5a, 1122 OPC2_32_RR_DVINIT_BU = 0x4a, 1123 OPC2_32_RR_DVINIT_H = 0x3a, 1124 OPC2_32_RR_DVINIT_HU = 0x2a, 1125 OPC2_32_RR_DVINIT = 0x1a, 1126 OPC2_32_RR_DVINIT_U = 0x0a, 1127 OPC2_32_RR_PARITY = 0x02, 1128 OPC2_32_RR_UNPACK = 0x08, 1129 OPC2_32_RR_CRC32 = 0x03, 1130 OPC2_32_RR_DIV = 0x20, 1131 OPC2_32_RR_DIV_U = 0x21, 1132 OPC2_32_RR_MUL_F = 0x04, 1133 OPC2_32_RR_DIV_F = 0x05, 1134 OPC2_32_RR_FTOI = 0x10, 1135 OPC2_32_RR_ITOF = 0x14, 1136 OPC2_32_RR_CMP_F = 0x00, 1137 OPC2_32_RR_FTOIZ = 0x13, 1138 OPC2_32_RR_FTOQ31 = 0x11, 1139 OPC2_32_RR_FTOQ31Z = 0x18, 1140 OPC2_32_RR_FTOU = 0x12, 1141 OPC2_32_RR_FTOUZ = 0x17, 1142 OPC2_32_RR_Q31TOF = 0x15, 1143 OPC2_32_RR_QSEED_F = 0x19, 1144 OPC2_32_RR_UPDFL = 0x0c, 1145 OPC2_32_RR_UTOF = 0x16, 1146 }; 1147 /* OPCM_32_RR_IDIRECT */ 1148 enum { 1149 OPC2_32_RR_JI = 0x03, 1150 OPC2_32_RR_JLI = 0x02, 1151 OPC2_32_RR_CALLI = 0x00, 1152 OPC2_32_RR_FCALLI = 0x01, 1153 }; 1154 /* 1155 * RR1 Format 1156 */ 1157 /* OPCM_32_RR1_MUL */ 1158 enum { 1159 OPC2_32_RR1_MUL_H_32_LL = 0x1a, 1160 OPC2_32_RR1_MUL_H_32_LU = 0x19, 1161 OPC2_32_RR1_MUL_H_32_UL = 0x18, 1162 OPC2_32_RR1_MUL_H_32_UU = 0x1b, 1163 OPC2_32_RR1_MULM_H_64_LL = 0x1e, 1164 OPC2_32_RR1_MULM_H_64_LU = 0x1d, 1165 OPC2_32_RR1_MULM_H_64_UL = 0x1c, 1166 OPC2_32_RR1_MULM_H_64_UU = 0x1f, 1167 OPC2_32_RR1_MULR_H_16_LL = 0x0e, 1168 OPC2_32_RR1_MULR_H_16_LU = 0x0d, 1169 OPC2_32_RR1_MULR_H_16_UL = 0x0c, 1170 OPC2_32_RR1_MULR_H_16_UU = 0x0f, 1171 }; 1172 /* OPCM_32_RR1_MULQ */ 1173 enum { 1174 OPC2_32_RR1_MUL_Q_32 = 0x02, 1175 OPC2_32_RR1_MUL_Q_64 = 0x1b, 1176 OPC2_32_RR1_MUL_Q_32_L = 0x01, 1177 OPC2_32_RR1_MUL_Q_64_L = 0x19, 1178 OPC2_32_RR1_MUL_Q_32_U = 0x00, 1179 OPC2_32_RR1_MUL_Q_64_U = 0x18, 1180 OPC2_32_RR1_MUL_Q_32_LL = 0x05, 1181 OPC2_32_RR1_MUL_Q_32_UU = 0x04, 1182 OPC2_32_RR1_MULR_Q_32_L = 0x07, 1183 OPC2_32_RR1_MULR_Q_32_U = 0x06, 1184 }; 1185 /* 1186 * RR2 Format 1187 */ 1188 /* OPCM_32_RR2_MUL */ 1189 enum { 1190 OPC2_32_RR2_MUL_32 = 0x0a, 1191 OPC2_32_RR2_MUL_64 = 0x6a, 1192 OPC2_32_RR2_MULS_32 = 0x8a, 1193 OPC2_32_RR2_MUL_U_64 = 0x68, 1194 OPC2_32_RR2_MULS_U_32 = 0x88, 1195 }; 1196 /* 1197 * RRPW Format 1198 */ 1199 /* OPCM_32_RRPW_EXTRACT_INSERT */ 1200 enum { 1201 1202 OPC2_32_RRPW_EXTR = 0x02, 1203 OPC2_32_RRPW_EXTR_U = 0x03, 1204 OPC2_32_RRPW_IMASK = 0x01, 1205 OPC2_32_RRPW_INSERT = 0x00, 1206 }; 1207 /* 1208 * RRR Format 1209 */ 1210 /* OPCM_32_RRR_COND_SELECT */ 1211 enum { 1212 OPC2_32_RRR_CADD = 0x00, 1213 OPC2_32_RRR_CADDN = 0x01, 1214 OPC2_32_RRR_CSUB = 0x02, 1215 OPC2_32_RRR_CSUBN = 0x03, 1216 OPC2_32_RRR_SEL = 0x04, 1217 OPC2_32_RRR_SELN = 0x05, 1218 }; 1219 /* OPCM_32_RRR_FLOAT */ 1220 enum { 1221 OPC2_32_RRR_DVADJ = 0x0d, 1222 OPC2_32_RRR_DVSTEP = 0x0f, 1223 OPC2_32_RRR_DVSTEP_U = 0x0e, 1224 OPC2_32_RRR_IXMAX = 0x0a, 1225 OPC2_32_RRR_IXMAX_U = 0x0b, 1226 OPC2_32_RRR_IXMIN = 0x08, 1227 OPC2_32_RRR_IXMIN_U = 0x09, 1228 OPC2_32_RRR_PACK = 0x00, 1229 OPC2_32_RRR_ADD_F = 0x02, 1230 OPC2_32_RRR_SUB_F = 0x03, 1231 OPC2_32_RRR_MADD_F = 0x06, 1232 OPC2_32_RRR_MSUB_F = 0x07, 1233 }; 1234 /* 1235 * RRR1 Format 1236 */ 1237 /* OPCM_32_RRR1_MADD */ 1238 enum { 1239 OPC2_32_RRR1_MADD_H_LL = 0x1a, 1240 OPC2_32_RRR1_MADD_H_LU = 0x19, 1241 OPC2_32_RRR1_MADD_H_UL = 0x18, 1242 OPC2_32_RRR1_MADD_H_UU = 0x1b, 1243 OPC2_32_RRR1_MADDS_H_LL = 0x3a, 1244 OPC2_32_RRR1_MADDS_H_LU = 0x39, 1245 OPC2_32_RRR1_MADDS_H_UL = 0x38, 1246 OPC2_32_RRR1_MADDS_H_UU = 0x3b, 1247 OPC2_32_RRR1_MADDM_H_LL = 0x1e, 1248 OPC2_32_RRR1_MADDM_H_LU = 0x1d, 1249 OPC2_32_RRR1_MADDM_H_UL = 0x1c, 1250 OPC2_32_RRR1_MADDM_H_UU = 0x1f, 1251 OPC2_32_RRR1_MADDMS_H_LL = 0x3e, 1252 OPC2_32_RRR1_MADDMS_H_LU = 0x3d, 1253 OPC2_32_RRR1_MADDMS_H_UL = 0x3c, 1254 OPC2_32_RRR1_MADDMS_H_UU = 0x3f, 1255 OPC2_32_RRR1_MADDR_H_LL = 0x0e, 1256 OPC2_32_RRR1_MADDR_H_LU = 0x0d, 1257 OPC2_32_RRR1_MADDR_H_UL = 0x0c, 1258 OPC2_32_RRR1_MADDR_H_UU = 0x0f, 1259 OPC2_32_RRR1_MADDRS_H_LL = 0x2e, 1260 OPC2_32_RRR1_MADDRS_H_LU = 0x2d, 1261 OPC2_32_RRR1_MADDRS_H_UL = 0x2c, 1262 OPC2_32_RRR1_MADDRS_H_UU = 0x2f, 1263 }; 1264 /* OPCM_32_RRR1_MADDQ_H */ 1265 enum { 1266 OPC2_32_RRR1_MADD_Q_32 = 0x02, 1267 OPC2_32_RRR1_MADD_Q_64 = 0x1b, 1268 OPC2_32_RRR1_MADD_Q_32_L = 0x01, 1269 OPC2_32_RRR1_MADD_Q_64_L = 0x19, 1270 OPC2_32_RRR1_MADD_Q_32_U = 0x00, 1271 OPC2_32_RRR1_MADD_Q_64_U = 0x18, 1272 OPC2_32_RRR1_MADD_Q_32_LL = 0x05, 1273 OPC2_32_RRR1_MADD_Q_64_LL = 0x1d, 1274 OPC2_32_RRR1_MADD_Q_32_UU = 0x04, 1275 OPC2_32_RRR1_MADD_Q_64_UU = 0x1c, 1276 OPC2_32_RRR1_MADDS_Q_32 = 0x22, 1277 OPC2_32_RRR1_MADDS_Q_64 = 0x3b, 1278 OPC2_32_RRR1_MADDS_Q_32_L = 0x21, 1279 OPC2_32_RRR1_MADDS_Q_64_L = 0x39, 1280 OPC2_32_RRR1_MADDS_Q_32_U = 0x20, 1281 OPC2_32_RRR1_MADDS_Q_64_U = 0x38, 1282 OPC2_32_RRR1_MADDS_Q_32_LL = 0x25, 1283 OPC2_32_RRR1_MADDS_Q_64_LL = 0x3d, 1284 OPC2_32_RRR1_MADDS_Q_32_UU = 0x24, 1285 OPC2_32_RRR1_MADDS_Q_64_UU = 0x3c, 1286 OPC2_32_RRR1_MADDR_H_64_UL = 0x1e, 1287 OPC2_32_RRR1_MADDRS_H_64_UL = 0x3e, 1288 OPC2_32_RRR1_MADDR_Q_32_LL = 0x07, 1289 OPC2_32_RRR1_MADDR_Q_32_UU = 0x06, 1290 OPC2_32_RRR1_MADDRS_Q_32_LL = 0x27, 1291 OPC2_32_RRR1_MADDRS_Q_32_UU = 0x26, 1292 }; 1293 /* OPCM_32_RRR1_MADDSU_H */ 1294 enum { 1295 OPC2_32_RRR1_MADDSU_H_32_LL = 0x1a, 1296 OPC2_32_RRR1_MADDSU_H_32_LU = 0x19, 1297 OPC2_32_RRR1_MADDSU_H_32_UL = 0x18, 1298 OPC2_32_RRR1_MADDSU_H_32_UU = 0x1b, 1299 OPC2_32_RRR1_MADDSUS_H_32_LL = 0x3a, 1300 OPC2_32_RRR1_MADDSUS_H_32_LU = 0x39, 1301 OPC2_32_RRR1_MADDSUS_H_32_UL = 0x38, 1302 OPC2_32_RRR1_MADDSUS_H_32_UU = 0x3b, 1303 OPC2_32_RRR1_MADDSUM_H_64_LL = 0x1e, 1304 OPC2_32_RRR1_MADDSUM_H_64_LU = 0x1d, 1305 OPC2_32_RRR1_MADDSUM_H_64_UL = 0x1c, 1306 OPC2_32_RRR1_MADDSUM_H_64_UU = 0x1f, 1307 OPC2_32_RRR1_MADDSUMS_H_64_LL = 0x3e, 1308 OPC2_32_RRR1_MADDSUMS_H_64_LU = 0x3d, 1309 OPC2_32_RRR1_MADDSUMS_H_64_UL = 0x3c, 1310 OPC2_32_RRR1_MADDSUMS_H_64_UU = 0x3f, 1311 OPC2_32_RRR1_MADDSUR_H_16_LL = 0x0e, 1312 OPC2_32_RRR1_MADDSUR_H_16_LU = 0x0d, 1313 OPC2_32_RRR1_MADDSUR_H_16_UL = 0x0c, 1314 OPC2_32_RRR1_MADDSUR_H_16_UU = 0x0f, 1315 OPC2_32_RRR1_MADDSURS_H_16_LL = 0x2e, 1316 OPC2_32_RRR1_MADDSURS_H_16_LU = 0x2d, 1317 OPC2_32_RRR1_MADDSURS_H_16_UL = 0x2c, 1318 OPC2_32_RRR1_MADDSURS_H_16_UU = 0x2f, 1319 }; 1320 /* OPCM_32_RRR1_MSUB_H */ 1321 enum { 1322 OPC2_32_RRR1_MSUB_H_LL = 0x1a, 1323 OPC2_32_RRR1_MSUB_H_LU = 0x19, 1324 OPC2_32_RRR1_MSUB_H_UL = 0x18, 1325 OPC2_32_RRR1_MSUB_H_UU = 0x1b, 1326 OPC2_32_RRR1_MSUBS_H_LL = 0x3a, 1327 OPC2_32_RRR1_MSUBS_H_LU = 0x39, 1328 OPC2_32_RRR1_MSUBS_H_UL = 0x38, 1329 OPC2_32_RRR1_MSUBS_H_UU = 0x3b, 1330 OPC2_32_RRR1_MSUBM_H_LL = 0x1e, 1331 OPC2_32_RRR1_MSUBM_H_LU = 0x1d, 1332 OPC2_32_RRR1_MSUBM_H_UL = 0x1c, 1333 OPC2_32_RRR1_MSUBM_H_UU = 0x1f, 1334 OPC2_32_RRR1_MSUBMS_H_LL = 0x3e, 1335 OPC2_32_RRR1_MSUBMS_H_LU = 0x3d, 1336 OPC2_32_RRR1_MSUBMS_H_UL = 0x3c, 1337 OPC2_32_RRR1_MSUBMS_H_UU = 0x3f, 1338 OPC2_32_RRR1_MSUBR_H_LL = 0x0e, 1339 OPC2_32_RRR1_MSUBR_H_LU = 0x0d, 1340 OPC2_32_RRR1_MSUBR_H_UL = 0x0c, 1341 OPC2_32_RRR1_MSUBR_H_UU = 0x0f, 1342 OPC2_32_RRR1_MSUBRS_H_LL = 0x2e, 1343 OPC2_32_RRR1_MSUBRS_H_LU = 0x2d, 1344 OPC2_32_RRR1_MSUBRS_H_UL = 0x2c, 1345 OPC2_32_RRR1_MSUBRS_H_UU = 0x2f, 1346 }; 1347 /* OPCM_32_RRR1_MSUB_Q */ 1348 enum { 1349 OPC2_32_RRR1_MSUB_Q_32 = 0x02, 1350 OPC2_32_RRR1_MSUB_Q_64 = 0x1b, 1351 OPC2_32_RRR1_MSUB_Q_32_L = 0x01, 1352 OPC2_32_RRR1_MSUB_Q_64_L = 0x19, 1353 OPC2_32_RRR1_MSUB_Q_32_U = 0x00, 1354 OPC2_32_RRR1_MSUB_Q_64_U = 0x18, 1355 OPC2_32_RRR1_MSUB_Q_32_LL = 0x05, 1356 OPC2_32_RRR1_MSUB_Q_64_LL = 0x1d, 1357 OPC2_32_RRR1_MSUB_Q_32_UU = 0x04, 1358 OPC2_32_RRR1_MSUB_Q_64_UU = 0x1c, 1359 OPC2_32_RRR1_MSUBS_Q_32 = 0x22, 1360 OPC2_32_RRR1_MSUBS_Q_64 = 0x3b, 1361 OPC2_32_RRR1_MSUBS_Q_32_L = 0x21, 1362 OPC2_32_RRR1_MSUBS_Q_64_L = 0x39, 1363 OPC2_32_RRR1_MSUBS_Q_32_U = 0x20, 1364 OPC2_32_RRR1_MSUBS_Q_64_U = 0x38, 1365 OPC2_32_RRR1_MSUBS_Q_32_LL = 0x25, 1366 OPC2_32_RRR1_MSUBS_Q_64_LL = 0x3d, 1367 OPC2_32_RRR1_MSUBS_Q_32_UU = 0x24, 1368 OPC2_32_RRR1_MSUBS_Q_64_UU = 0x3c, 1369 OPC2_32_RRR1_MSUBR_H_64_UL = 0x1e, 1370 OPC2_32_RRR1_MSUBRS_H_64_UL = 0x3e, 1371 OPC2_32_RRR1_MSUBR_Q_32_LL = 0x07, 1372 OPC2_32_RRR1_MSUBR_Q_32_UU = 0x06, 1373 OPC2_32_RRR1_MSUBRS_Q_32_LL = 0x27, 1374 OPC2_32_RRR1_MSUBRS_Q_32_UU = 0x26, 1375 }; 1376 /* OPCM_32_RRR1_MSUBADS_H */ 1377 enum { 1378 OPC2_32_RRR1_MSUBAD_H_32_LL = 0x1a, 1379 OPC2_32_RRR1_MSUBAD_H_32_LU = 0x19, 1380 OPC2_32_RRR1_MSUBAD_H_32_UL = 0x18, 1381 OPC2_32_RRR1_MSUBAD_H_32_UU = 0x1b, 1382 OPC2_32_RRR1_MSUBADS_H_32_LL = 0x3a, 1383 OPC2_32_RRR1_MSUBADS_H_32_LU = 0x39, 1384 OPC2_32_RRR1_MSUBADS_H_32_UL = 0x38, 1385 OPC2_32_RRR1_MSUBADS_H_32_UU = 0x3b, 1386 OPC2_32_RRR1_MSUBADM_H_64_LL = 0x1e, 1387 OPC2_32_RRR1_MSUBADM_H_64_LU = 0x1d, 1388 OPC2_32_RRR1_MSUBADM_H_64_UL = 0x1c, 1389 OPC2_32_RRR1_MSUBADM_H_64_UU = 0x1f, 1390 OPC2_32_RRR1_MSUBADMS_H_64_LL = 0x3e, 1391 OPC2_32_RRR1_MSUBADMS_H_64_LU = 0x3d, 1392 OPC2_32_RRR1_MSUBADMS_H_64_UL = 0x3c, 1393 OPC2_32_RRR1_MSUBADMS_H_64_UU = 0x3f, 1394 OPC2_32_RRR1_MSUBADR_H_16_LL = 0x0e, 1395 OPC2_32_RRR1_MSUBADR_H_16_LU = 0x0d, 1396 OPC2_32_RRR1_MSUBADR_H_16_UL = 0x0c, 1397 OPC2_32_RRR1_MSUBADR_H_16_UU = 0x0f, 1398 OPC2_32_RRR1_MSUBADRS_H_16_LL = 0x2e, 1399 OPC2_32_RRR1_MSUBADRS_H_16_LU = 0x2d, 1400 OPC2_32_RRR1_MSUBADRS_H_16_UL = 0x2c, 1401 OPC2_32_RRR1_MSUBADRS_H_16_UU = 0x2f, 1402 }; 1403 /* 1404 * RRR2 Format 1405 */ 1406 /* OPCM_32_RRR2_MADD */ 1407 enum { 1408 OPC2_32_RRR2_MADD_32 = 0x0a, 1409 OPC2_32_RRR2_MADD_64 = 0x6a, 1410 OPC2_32_RRR2_MADDS_32 = 0x8a, 1411 OPC2_32_RRR2_MADDS_64 = 0xea, 1412 OPC2_32_RRR2_MADD_U_64 = 0x68, 1413 OPC2_32_RRR2_MADDS_U_32 = 0x88, 1414 OPC2_32_RRR2_MADDS_U_64 = 0xe8, 1415 }; 1416 /* OPCM_32_RRR2_MSUB */ 1417 enum { 1418 OPC2_32_RRR2_MSUB_32 = 0x0a, 1419 OPC2_32_RRR2_MSUB_64 = 0x6a, 1420 OPC2_32_RRR2_MSUBS_32 = 0x8a, 1421 OPC2_32_RRR2_MSUBS_64 = 0xea, 1422 OPC2_32_RRR2_MSUB_U_64 = 0x68, 1423 OPC2_32_RRR2_MSUBS_U_32 = 0x88, 1424 OPC2_32_RRR2_MSUBS_U_64 = 0xe8, 1425 }; 1426 /* 1427 * RRRR Format 1428 */ 1429 /* OPCM_32_RRRR_EXTRACT_INSERT */ 1430 enum { 1431 OPC2_32_RRRR_DEXTR = 0x04, 1432 OPC2_32_RRRR_EXTR = 0x02, 1433 OPC2_32_RRRR_EXTR_U = 0x03, 1434 OPC2_32_RRRR_INSERT = 0x00, 1435 }; 1436 /* 1437 * RRRW Format 1438 */ 1439 /* OPCM_32_RRRW_EXTRACT_INSERT */ 1440 enum { 1441 OPC2_32_RRRW_EXTR = 0x02, 1442 OPC2_32_RRRW_EXTR_U = 0x03, 1443 OPC2_32_RRRW_IMASK = 0x01, 1444 OPC2_32_RRRW_INSERT = 0x00, 1445 }; 1446 /* 1447 * SYS Format 1448 */ 1449 /* OPCM_32_SYS_INTERRUPTS */ 1450 enum { 1451 OPC2_32_SYS_DEBUG = 0x04, 1452 OPC2_32_SYS_DISABLE = 0x0d, 1453 OPC2_32_SYS_DSYNC = 0x12, 1454 OPC2_32_SYS_ENABLE = 0x0c, 1455 OPC2_32_SYS_ISYNC = 0x13, 1456 OPC2_32_SYS_NOP = 0x00, 1457 OPC2_32_SYS_RET = 0x06, 1458 OPC2_32_SYS_RFE = 0x07, 1459 OPC2_32_SYS_RFM = 0x05, 1460 OPC2_32_SYS_RSLCX = 0x09, 1461 OPC2_32_SYS_SVLCX = 0x08, 1462 OPC2_32_SYS_TRAPSV = 0x15, 1463 OPC2_32_SYS_TRAPV = 0x14, 1464 OPC2_32_SYS_RESTORE = 0x0e, 1465 OPC2_32_SYS_FRET = 0x03, 1466 }; 1467