1409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Print mips instructions for GDB, the GNU debugger, or for objdump. 2409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2000, 2001, 2002, 2003 4409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Free Software Foundation, Inc. 5409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Contributed by Nobuyuki Hikichi(hikichi@sra.co.jp). 6409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 7409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThis file is part of GDB, GAS, and the GNU binutils. 8409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 9409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThis program is free software; you can redistribute it and/or modify 10409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliit under the terms of the GNU General Public License as published by 11409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallithe Free Software Foundation; either version 2 of the License, or 12409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli(at your option) any later version. 13409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 14409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThis program is distributed in the hope that it will be useful, 15409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallibut WITHOUT ANY WARRANTY; without even the implied warranty of 16409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliGNU General Public License for more details. 18409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 19409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliYou should have received a copy of the GNU General Public License 20409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallialong with this program; if not, see <http://www.gnu.org/licenses/>. */ 21409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 22cc33b2d8035092608c7cba4154e9c44452727e1bDavid 'Digit' Turner#include "disas/bfd.h" 23409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 24409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mips.h. Mips opcode list for GDB, the GNU debugger. 25409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 26409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Free Software Foundation, Inc. 27409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Contributed by Ralph Campbell and OSF 28409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Commented and modified by Ian Lance Taylor, Cygnus Support 29409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 30409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThis file is part of GDB, GAS, and the GNU binutils. 31409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 32409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliGDB, GAS, and the GNU binutils are free software; you can redistribute 33409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallithem and/or modify them under the terms of the GNU General Public 34409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliLicense as published by the Free Software Foundation; either version 35409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli1, or (at your option) any later version. 36409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 37409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliGDB, GAS, and the GNU binutils are distributed in the hope that they 38409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliwill be useful, but WITHOUT ANY WARRANTY; without even the implied 39409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 40409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallithe GNU General Public License for more details. 41409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 42409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliYou should have received a copy of the GNU General Public License 43409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallialong with this file; see the file COPYING. If not, 44409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallisee <http://www.gnu.org/licenses/>. */ 45409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 46409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are bit masks and shift counts to use to access the various 47409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fields of an instruction. To retrieve the X field of an 48409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction, use the expression 49409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (i >> OP_SH_X) & OP_MASK_X 50409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli To set the same field (to j), use 51409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli i = (i &~ (OP_MASK_X << OP_SH_X)) | (j << OP_SH_X) 52409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 53409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Make sure you use fields that are appropriate for the instruction, 54409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli of course. 55409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 56409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The 'i' format uses OP, RS, RT and IMMEDIATE. 57409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 58409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The 'j' format uses OP and TARGET. 59409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 60409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The 'r' format uses OP, RS, RT, RD, SHAMT and FUNCT. 61409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 62409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The 'b' format uses OP, RS, RT and DELTA. 63409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 64409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The floating point 'i' format uses OP, RS, RT and IMMEDIATE. 65409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 66409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The floating point 'r' format uses OP, FMT, FT, FS, FD and FUNCT. 67409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 68409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli A breakpoint instruction uses OP, CODE and SPEC (10 bits of the 69409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli breakpoint instruction are not defined; Kane says the breakpoint 70409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli code field in BREAK is 20 bits; yet MIPS assemblers and debuggers 71409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli only use ten bits). An optional two-operand form of break/sdbbp 72409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli allows the lower ten bits to be set too, and MIPS32 and later 73409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli architectures allow 20 bits to be set with a signal operand 74409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (using CODE20). 75409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 76409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The syscall instruction uses CODE20. 77409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 78409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The general coprocessor instructions use COPZ. */ 79409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 80409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_OP 0x3f 81409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_OP 26 82409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_RS 0x1f 83409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_RS 21 84409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FR 0x1f 85409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FR 21 86409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FMT 0x1f 87409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FMT 21 88409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_BCC 0x7 89409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_BCC 18 90409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CODE 0x3ff 91409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CODE 16 92409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CODE2 0x3ff 93409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CODE2 6 94409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_RT 0x1f 95409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_RT 16 96409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FT 0x1f 97409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FT 16 98409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CACHE 0x1f 99409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CACHE 16 100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_RD 0x1f 101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_RD 11 102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FS 0x1f 103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FS 11 104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_PREFX 0x1f 105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_PREFX 11 106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CCC 0x7 107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CCC 8 108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CODE20 0xfffff /* 20 bit syscall/breakpoint code. */ 109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CODE20 6 110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SHAMT 0x1f 111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SHAMT 6 112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FD 0x1f 113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FD 6 114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_TARGET 0x3ffffff 115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_TARGET 0 116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COPZ 0x1ffffff 117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_COPZ 0 118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_IMMEDIATE 0xffff 119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_IMMEDIATE 0 120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DELTA 0xffff 121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DELTA 0 122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FUNCT 0x3f 123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FUNCT 0 124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SPEC 0x3f 125409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SPEC 0 126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_LOCC 8 /* FP condition code. */ 127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_HICC 18 /* FP condition code. */ 128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CC 0x7 129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_COP1NORM 25 /* Normal COP1 encoding. */ 130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COP1NORM 0x1 /* a single bit. */ 131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_COP1SPEC 21 /* COP1 encodings. */ 132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COP1SPEC 0xf 133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COP1SCLR 0x4 134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COP1CMP 0x3 135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_COP1CMP 4 136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FORMAT 21 /* FP short format field. */ 137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FORMAT 0x7 138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_TRUE 16 139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_TRUE 0x1 140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_GE 17 141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_GE 0x01 142409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UNSIGNED 16 143409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UNSIGNED 0x1 144409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_HINT 16 145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_HINT 0x1f 146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MMI 0 /* Multimedia (parallel) op. */ 147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MMI 0x3f 148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MMISUB 6 149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MMISUB 0x1f 150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_PERFREG 0x1f /* Performance monitoring. */ 151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_PERFREG 1 152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SEL 0 /* Coprocessor select field. */ 153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SEL 0x7 /* The sel field of mfcZ and mtcZ. */ 154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CODE19 6 /* 19 bit wait code. */ 155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CODE19 0x7ffff 156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_ALN 21 157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_ALN 0x7 158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_VSEL 21 159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_VSEL 0x1f 160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_VECBYTE 0x7 /* Selector field is really 4 bits, 161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli but 0x8-0xf don't select bytes. */ 162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_VECBYTE 22 163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_VECALIGN 0x7 /* Vector byte-align (alni.ob) op. */ 164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_VECALIGN 21 165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_INSMSB 0x1f /* "ins" MSB. */ 166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_INSMSB 11 167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_EXTMSBD 0x1f /* "ext" MSBD. */ 168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_EXTMSBD 11 169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_COP0 0x10 171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_COP1 0x11 172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_COP2 0x12 173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_COP3 0x13 174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LWC1 0x31 175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LWC2 0x32 176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LWC3 0x33 /* a.k.a. pref */ 177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LDC1 0x35 178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LDC2 0x36 179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LDC3 0x37 /* a.k.a. ld */ 180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SWC1 0x39 181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SWC2 0x3a 182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SWC3 0x3b 183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SDC1 0x3d 184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SDC2 0x3e 185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SDC3 0x3f /* a.k.a. sd */ 186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS DSP ASE */ 188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DSPACC 11 189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DSPACC 0x3 190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DSPACC_S 21 191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DSPACC_S 0x3 192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DSPSFT 20 193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DSPSFT 0x3f 194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DSPSFT_7 19 195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DSPSFT_7 0x7f 196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SA3 21 197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SA3 0x7 198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SA4 21 199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SA4 0xf 200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_IMM8 16 201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_IMM8 0xff 202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_IMM10 16 203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_IMM10 0x3ff 204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_WRDSP 11 205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_WRDSP 0x3f 206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_RDDSP 16 207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_RDDSP 0x3f 208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_BP 11 209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_BP 0x3 210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS MT ASE */ 212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MT_U 5 213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MT_U 0x1 214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MT_H 4 215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MT_H 0x1 216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MTACC_T 18 217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MTACC_T 0x3 218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MTACC_D 13 219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MTACC_D 0x3 220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_COP0 0x10 222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_COP1 0x11 223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_COP2 0x12 224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_COP3 0x13 225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LWC1 0x31 226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LWC2 0x32 227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LWC3 0x33 /* a.k.a. pref */ 228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LDC1 0x35 229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LDC2 0x36 230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_LDC3 0x37 /* a.k.a. ld */ 231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SWC1 0x39 232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SWC2 0x3a 233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SWC3 0x3b 234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SDC1 0x3d 235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SDC2 0x3e 236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_OP_SDC3 0x3f /* a.k.a. sd */ 237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Values in the 'VSEL' field. */ 239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MDMX_FMTSEL_IMM_QH 0x1d 240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MDMX_FMTSEL_IMM_OB 0x1e 241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MDMX_FMTSEL_VEC_QH 0x15 242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MDMX_FMTSEL_VEC_OB 0x16 243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* UDI */ 245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UDI1 6 246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UDI1 0x1f 247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UDI2 6 248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UDI2 0x3ff 249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UDI3 6 250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UDI3 0x7fff 251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UDI4 6 252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UDI4 0xfffff 253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* This structure holds information for a particular instruction. */ 254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_opcode 256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* The name of the instruction. */ 258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char *name; 259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* A string describing the arguments for this instruction. */ 260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char *args; 261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* The basic opcode for the instruction. When assembling, this 262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli opcode is modified by the arguments to produce the actual opcode 263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli that is used. If pinfo is INSN_MACRO, then this is 0. */ 264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned long match; 265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* If pinfo is not INSN_MACRO, then this is a bit mask for the 266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli relevant portions of the opcode when disassembling. If the 267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli actual opcode anded with the match field equals the opcode field, 268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli then we have found the correct instruction. If pinfo is 269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_MACRO, then this field is the macro identifier. */ 270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned long mask; 271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* For a macro, this is INSN_MACRO. Otherwise, it is a collection 272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli of bits describing the instruction, notably any relevant hazard 273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli information. */ 274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned long pinfo; 275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* A collection of additional bits describing the instruction. */ 276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned long pinfo2; 277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* A collection of bits describing the instruction sets of which this 278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction or macro is a member. */ 279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned long membership; 280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the characters which may appear in the args field of an 283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction. They appear in the order in which the fields appear 284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli when the instruction is used. Commas and parentheses in the args 285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli string are ignored when assembling, and written into the output 286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli when disassembling. 287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Each of these characters corresponds to a mask field defined above. 289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "<" 5 bit shift amount (OP_*_SHAMT) 291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ">" shift amount between 32 and 63, stored after subtracting 32 (OP_*_SHAMT) 292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "a" 26 bit target address (OP_*_TARGET) 293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "b" 5 bit base register (OP_*_RS) 294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c" 10 bit breakpoint code (OP_*_CODE) 295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "d" 5 bit destination register specifier (OP_*_RD) 296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "h" 5 bit prefx hint (OP_*_PREFX) 297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "i" 16 bit unsigned immediate (OP_*_IMMEDIATE) 298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "j" 16 bit signed immediate (OP_*_DELTA) 299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "k" 5 bit cache opcode in target register position (OP_*_CACHE) 300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Also used for immediate operands in vr5400 vector insns. 301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "o" 16 bit signed offset (OP_*_DELTA) 302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "p" 16 bit PC relative branch target address (OP_*_DELTA) 303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "q" 10 bit extra breakpoint code (OP_*_CODE2) 304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "r" 5 bit same register used as both source and target (OP_*_RS) 305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "s" 5 bit source register specifier (OP_*_RS) 306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "t" 5 bit target register (OP_*_RT) 307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "u" 16 bit upper 16 bits of address (OP_*_IMMEDIATE) 308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "v" 5 bit same register used as both source and destination (OP_*_RS) 309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "w" 5 bit same register used as both target and destination (OP_*_RT) 310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "U" 5 bit same destination register in both OP_*_RD and OP_*_RT 311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (used by clo and clz) 312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "C" 25 bit coprocessor function code (OP_*_COPZ) 313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "B" 20 bit syscall/breakpoint function code (OP_*_CODE20) 314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "J" 19 bit wait function code (OP_*_CODE19) 315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "x" accept and ignore register name 316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "z" must be zero register 317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "K" 5 bit Hardware Register (rdhwr instruction) (OP_*_RD) 318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+A" 5 bit ins/ext/dins/dext/dinsm/dextm position, which becomes 319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli LSB (OP_*_SHAMT). 320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Enforces: 0 <= pos < 32. 321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+B" 5 bit ins/dins size, which becomes MSB (OP_*_INSMSB). 322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Requires that "+A" or "+E" occur first to set position. 323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Enforces: 0 < (pos+size) <= 32. 324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+C" 5 bit ext/dext size, which becomes MSBD (OP_*_EXTMSBD). 325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Requires that "+A" or "+E" occur first to set position. 326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Enforces: 0 < (pos+size) <= 32. 327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (Also used by "dext" w/ different limits, but limits for 328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli that are checked by the M_DEXT macro.) 329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+E" 5 bit dinsu/dextu position, which becomes LSB-32 (OP_*_SHAMT). 330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Enforces: 32 <= pos < 64. 331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+F" 5 bit "dinsm/dinsu" size, which becomes MSB-32 (OP_*_INSMSB). 332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Requires that "+A" or "+E" occur first to set position. 333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Enforces: 32 < (pos+size) <= 64. 334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+G" 5 bit "dextm" size, which becomes MSBD-32 (OP_*_EXTMSBD). 335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Requires that "+A" or "+E" occur first to set position. 336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Enforces: 32 < (pos+size) <= 64. 337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+H" 5 bit "dextu" size, which becomes MSBD (OP_*_EXTMSBD). 338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Requires that "+A" or "+E" occur first to set position. 339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Enforces: 32 < (pos+size) <= 64. 340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Floating point instructions: 342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "D" 5 bit destination register (OP_*_FD) 343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "M" 3 bit compare condition code (OP_*_CCC) (only used for mips4 and up) 344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "N" 3 bit branch condition code (OP_*_BCC) (only used for mips4 and up) 345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "S" 5 bit fs source 1 register (OP_*_FS) 346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "T" 5 bit ft source 2 register (OP_*_FT) 347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "R" 5 bit fr source 3 register (OP_*_FR) 348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "V" 5 bit same register used as floating source and destination (OP_*_FS) 349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "W" 5 bit same register used as floating target and destination (OP_*_FT) 350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Coprocessor instructions: 352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "E" 5 bit target register (OP_*_RT) 353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "G" 5 bit destination register (OP_*_RD) 354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "H" 3 bit sel field for (d)mtc* and (d)mfc* (OP_*_SEL) 355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "P" 5 bit performance-monitor register (OP_*_PERFREG) 356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "e" 5 bit vector register byte specifier (OP_*_VECBYTE) 357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "%" 3 bit immediate vr5400 vector alignment operand (OP_*_VECALIGN) 358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli see also "k" above 359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+D" Combined destination register ("G") and sel ("H") for CP0 ops, 360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for pretty-printing in disassembly only. 361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Macro instructions: 363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "A" General 32 bit expression 364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "I" 32 bit immediate (value placed in imm_expr). 365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+I" 32 bit immediate (value placed in imm2_expr). 366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "F" 64 bit floating point constant in .rdata 367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "L" 64 bit floating point constant in .lit8 368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "f" 32 bit floating point constant 369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "l" 32 bit floating point constant in .lit4 370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli MDMX instruction operands (note that while these use the FP register 372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fields, they accept both $fN and $vN names for the registers): 373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "O" MDMX alignment offset (OP_*_ALN) 374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "Q" MDMX vector/scalar/immediate source (OP_*_VSEL and OP_*_FT) 375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "X" MDMX destination register (OP_*_FD) 376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "Y" MDMX source register (OP_*_FS) 377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "Z" MDMX source register (OP_*_FT) 378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli DSP ASE usage: 380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "2" 2 bit unsigned immediate for byte align (OP_*_BP) 381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "3" 3 bit unsigned immediate (OP_*_SA3) 382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "4" 4 bit unsigned immediate (OP_*_SA4) 383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "5" 8 bit unsigned immediate (OP_*_IMM8) 384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "6" 5 bit unsigned immediate (OP_*_RS) 385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "7" 2 bit dsp accumulator register (OP_*_DSPACC) 386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "8" 6 bit unsigned immediate (OP_*_WRDSP) 387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "9" 2 bit dsp accumulator register (OP_*_DSPACC_S) 388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "0" 6 bit signed immediate (OP_*_DSPSFT) 389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ":" 7 bit signed immediate (OP_*_DSPSFT_7) 390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "'" 6 bit unsigned immediate (OP_*_RDDSP) 391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "@" 10 bit signed immediate (OP_*_IMM10) 392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli MT ASE usage: 394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "!" 1 bit usermode flag (OP_*_MT_U) 395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$" 1 bit load high flag (OP_*_MT_H) 396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "*" 2 bit dsp/smartmips accumulator register (OP_*_MTACC_T) 397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "&" 2 bit dsp/smartmips accumulator register (OP_*_MTACC_D) 398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "g" 5 bit coprocessor 1 and 2 destination register (OP_*_RD) 399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+t" 5 bit coprocessor 0 destination register (OP_*_RT) 400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+T" 5 bit coprocessor 0 destination register (OP_*_RT) - disassembly only 401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli UDI immediates: 403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+1" UDI immediate bits 6-10 404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+2" UDI immediate bits 6-15 405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+3" UDI immediate bits 6-20 406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+4" UDI immediate bits 6-25 407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Other: 409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "()" parens surrounding optional value 410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "," separates operands 411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "[]" brackets around index for vector-op scalar operand specifier (vr5400) 412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "+" Start of extension sequence. 413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Characters used so far, for quick reference when adding more: 415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "234567890" 416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "%[]<>(),+:'@!$*&" 417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "abcdefghijklopqrstuvwxz" 419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Extension character sequences used so far ("+" followed by the 421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli following), for quick reference when adding more: 422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "1234" 423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "ABCDEFGHIT" 424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "t" 425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli*/ 426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the bits which may be set in the pinfo field of an 428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instructions, if it is not equal to INSN_MACRO. */ 429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the general purpose register in OP_*_RD. */ 431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_GPR_D 0x00000001 432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the general purpose register in OP_*_RT. */ 433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_GPR_T 0x00000002 434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies general purpose register 31. */ 435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_GPR_31 0x00000004 436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the floating point register in OP_*_FD. */ 437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_FPR_D 0x00000008 438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the floating point register in OP_*_FS. */ 439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_FPR_S 0x00000010 440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the floating point register in OP_*_FT. */ 441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_FPR_T 0x00000020 442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the general purpose register in OP_*_RS. */ 443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_GPR_S 0x00000040 444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the general purpose register in OP_*_RT. */ 445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_GPR_T 0x00000080 446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the floating point register in OP_*_FS. */ 447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_FPR_S 0x00000100 448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the floating point register in OP_*_FT. */ 449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_FPR_T 0x00000200 450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the floating point register in OP_*_FR. */ 451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_FPR_R 0x00000400 452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies coprocessor condition code. */ 453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_COND_CODE 0x00000800 454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads coprocessor condition code. */ 455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_COND_CODE 0x00001000 456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* TLB operation. */ 457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_TLB 0x00002000 458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads coprocessor register other than floating point register. */ 459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COP 0x00004000 460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction loads value from memory, requiring delay. */ 461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_LOAD_MEMORY_DELAY 0x00008000 462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction loads value from coprocessor, requiring delay. */ 463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_LOAD_COPROC_DELAY 0x00010000 464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction has unconditional branch delay slot. */ 465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_UNCOND_BRANCH_DELAY 0x00020000 466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction has conditional branch delay slot. */ 467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COND_BRANCH_DELAY 0x00040000 468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Conditional branch likely: if branch not taken, insn nullified. */ 469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COND_BRANCH_LIKELY 0x00080000 470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Moves to coprocessor register, requiring delay. */ 471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COPROC_MOVE_DELAY 0x00100000 472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Loads coprocessor register from memory, requiring delay. */ 473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COPROC_MEMORY_DELAY 0x00200000 474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the HI register. */ 475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_HI 0x00400000 476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the LO register. */ 477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_LO 0x00800000 478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the HI register. */ 479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_HI 0x01000000 480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the LO register. */ 481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_LO 0x02000000 482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Takes a trap (easier to keep out of delay slot). */ 483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_TRAP 0x04000000 484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction stores value into memory. */ 485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_STORE_MEMORY 0x08000000 486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction uses single precision floating point. */ 487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define FP_S 0x10000000 488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction uses double precision floating point. */ 489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define FP_D 0x20000000 490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction is part of the tx39's integer multiply family. */ 491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MULT 0x40000000 492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction synchronize shared memory. */ 493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_SYNC 0x80000000 494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the bits which may be set in the pinfo2 field of an 496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction. */ 497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction is a simple alias (I.E. "move" for daddu/addu/or) */ 499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN2_ALIAS 0x00000001 500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction reads MDMX accumulator. */ 501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN2_READ_MDMX_ACC 0x00000002 502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction writes MDMX accumulator. */ 503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN2_WRITE_MDMX_ACC 0x00000004 504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction is actually a macro. It should be ignored by the 506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli disassembler, and requires special treatment by the assembler. */ 507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MACRO 0xffffffff 508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Masks used to mark instructions to indicate which MIPS ISA level 510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli they were introduced in. ISAs, as defined below, are logical 511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ORs of these bits, indicating that they support the instructions 512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli defined at the given level. */ 513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA_MASK 0x00000fff 515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA1 0x00000001 516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA2 0x00000002 517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA3 0x00000004 518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA4 0x00000008 519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA5 0x00000010 520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA32 0x00000020 521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA64 0x00000040 522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA32R2 0x00000080 523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA64R2 0x00000100 524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Masks used for MIPS-defined ASEs. */ 526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ASE_MASK 0x0000f000 527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* DSP ASE */ 529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_DSP 0x00001000 530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_DSP64 0x00002000 531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS 16 ASE */ 532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MIPS16 0x00004000 533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS-3D ASE */ 534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MIPS3D 0x00008000 535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Chip specific instructions. These are bitmasks. */ 537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS R4650 instruction. */ 539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4650 0x00010000 540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* LSI R4010 instruction. */ 541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4010 0x00020000 542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR4100 instruction. */ 543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4100 0x00040000 544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Toshiba R3900 instruction. */ 545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_3900 0x00080000 546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS R10000 instruction. */ 547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_10000 0x00100000 548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Broadcom SB-1 instruction. */ 549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_SB1 0x00200000 550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR4111/VR4181 instruction. */ 551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4111 0x00400000 552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR4120 instruction. */ 553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4120 0x00800000 554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR5400 instruction. */ 555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_5400 0x01000000 556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR5500 instruction. */ 557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_5500 0x02000000 558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MDMX ASE */ 560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MDMX 0x04000000 561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MT ASE */ 562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MT 0x08000000 563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* SmartMIPS ASE */ 564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_SMARTMIPS 0x10000000 565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* DSP R2 ASE */ 566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_DSPR2 0x20000000 567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 5685aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner/* ST Microelectronics Loongson 2E. */ 5695aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner#define INSN_LOONGSON_2E 0x40000000 5705aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner/* ST Microelectronics Loongson 2F. */ 5715aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner#define INSN_LOONGSON_2F 0x80000000 5725aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner 573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS ISA defines, use instead of hardcoding ISA level. */ 574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 575a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#ifndef ISA_MIPS1 576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_UNKNOWN 0 /* Gas internal use. */ 577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_MIPS1 (INSN_ISA1) 578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_MIPS2 (ISA_MIPS1 | INSN_ISA2) 579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_MIPS3 (ISA_MIPS2 | INSN_ISA3) 580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_MIPS4 (ISA_MIPS3 | INSN_ISA4) 581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_MIPS5 (ISA_MIPS4 | INSN_ISA5) 582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_MIPS32 (ISA_MIPS2 | INSN_ISA32) 584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_MIPS64 (ISA_MIPS5 | INSN_ISA32 | INSN_ISA64) 585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_MIPS32R2 (ISA_MIPS32 | INSN_ISA32R2) 587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define ISA_MIPS64R2 (ISA_MIPS64 | INSN_ISA32R2 | INSN_ISA64R2) 588a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#endif // ISA_MIPS1 589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* CPU defines, use instead of hardcoding processor number. Keep this 591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli in sync with bfd/archures.c in order for machine selection to work. */ 592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_UNKNOWN 0 /* Gas internal use. */ 593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R3000 3000 594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R3900 3900 595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4000 4000 596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4010 4010 597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_VR4100 4100 598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4111 4111 599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_VR4120 4120 600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4300 4300 601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4400 4400 602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4600 4600 603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4650 4650 604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R5000 5000 605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_VR5400 5400 606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_VR5500 5500 607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R6000 6000 608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_RM7000 7000 609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R8000 8000 610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R10000 10000 611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R12000 12000 612a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner 613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS16 16 614a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#define CPU_SB1 12310201 /* octal 'SB', 01. */ 615a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner 616a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#ifndef CPU_MIPS32 617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS32 32 618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS32R2 33 619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS5 5 620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS64 64 621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS64R2 65 622a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#endif // !CPU_MIPS32 623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Test for membership in an ISA including chip specific ISAs. INSN 625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli is pointer to an element of the opcode table; ISA is the specified 626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ISA/ASE bitmask to test against; and CPU is the CPU specific ISA to 627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli test, or zero if no CPU specific ISA test is desired. */ 628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0 630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OPCODE_IS_MEMBER(insn, isa, cpu) \ 631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (((insn)->membership & isa) != 0 \ 632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_R4650 && ((insn)->membership & INSN_4650) != 0) \ 633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_RM7000 && ((insn)->membership & INSN_4650) != 0) \ 634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_RM9000 && ((insn)->membership & INSN_4650) != 0) \ 635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_R4010 && ((insn)->membership & INSN_4010) != 0) \ 636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_VR4100 && ((insn)->membership & INSN_4100) != 0) \ 637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_R3900 && ((insn)->membership & INSN_3900) != 0) \ 638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || ((cpu == CPU_R10000 || cpu == CPU_R12000) \ 639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && ((insn)->membership & INSN_10000) != 0) \ 640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_SB1 && ((insn)->membership & INSN_SB1) != 0) \ 641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_R4111 && ((insn)->membership & INSN_4111) != 0) \ 642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_VR4120 && ((insn)->membership & INSN_4120) != 0) \ 643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_VR5400 && ((insn)->membership & INSN_5400) != 0) \ 644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (cpu == CPU_VR5500 && ((insn)->membership & INSN_5500) != 0) \ 645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || 0) /* Please keep this term for easier source merging. */ 646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#else 647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OPCODE_IS_MEMBER(insn, isa, cpu) \ 648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (1 != 0) 649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif 650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* This is a list of macro expanded instructions. 652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _I appended means immediate 654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _A appended means address 655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _AB appended means address with base register 656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _D appended means 64 bit floating point constant 657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _S appended means 32 bit floating point constant. */ 658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallienum 660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ABS, 662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ADD_I, 663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ADDU_I, 664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_AND_I, 665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BALIGN, 666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BEQ, 667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BEQ_I, 668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BEQL_I, 669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGE, 670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGEL, 671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGE_I, 672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGEL_I, 673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGEU, 674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGEUL, 675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGEU_I, 676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGEUL_I, 677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGT, 678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGTL, 679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGT_I, 680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGTL_I, 681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGTU, 682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGTUL, 683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGTU_I, 684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BGTUL_I, 685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLE, 686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLEL, 687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLE_I, 688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLEL_I, 689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLEU, 690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLEUL, 691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLEU_I, 692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLEUL_I, 693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLT, 694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLTL, 695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLT_I, 696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLTL_I, 697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLTU, 698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLTUL, 699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLTU_I, 700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BLTUL_I, 701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BNE, 702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BNE_I, 703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_BNEL_I, 704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_CACHE_AB, 705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DABS, 706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DADD_I, 707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DADDU_I, 708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DDIV_3, 709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DDIV_3I, 710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DDIVU_3, 711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DDIVU_3I, 712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DEXT, 713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DINS, 714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DIV_3, 715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DIV_3I, 716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DIVU_3, 717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DIVU_3I, 718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DLA_AB, 719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DLCA_AB, 720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DLI, 721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DMUL, 722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DMUL_I, 723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DMULO, 724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DMULO_I, 725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DMULOU, 726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DMULOU_I, 727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DREM_3, 728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DREM_3I, 729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DREMU_3, 730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DREMU_3I, 731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DSUB_I, 732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DSUBU_I, 733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DSUBU_I_2, 734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_J_A, 735409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_JAL_1, 736409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_JAL_2, 737409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_JAL_A, 738409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_L_DOB, 739409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_L_DAB, 740409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LA_AB, 741409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LB_A, 742409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LB_AB, 743409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LBU_A, 744409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LBU_AB, 745409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LCA_AB, 746409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LD_A, 747409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LD_OB, 748409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LD_AB, 749409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LDC1_AB, 750409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LDC2_AB, 751409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LDC3_AB, 752409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LDL_AB, 753409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LDR_AB, 754409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LH_A, 755409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LH_AB, 756409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LHU_A, 757409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LHU_AB, 758409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LI, 759409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LI_D, 760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LI_DD, 761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LI_S, 762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LI_SS, 763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LL_AB, 764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LLD_AB, 765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LS_A, 766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LW_A, 767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LW_AB, 768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWC0_A, 769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWC0_AB, 770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWC1_A, 771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWC1_AB, 772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWC2_A, 773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWC2_AB, 774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWC3_A, 775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWC3_AB, 776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWL_A, 777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWL_AB, 778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWR_A, 779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWR_AB, 780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_LWU_AB, 781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_MOVE, 782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_MUL, 783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_MUL_I, 784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_MULO, 785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_MULO_I, 786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_MULOU, 787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_MULOU_I, 788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_NOR_I, 789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_OR_I, 790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_REM_3, 791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_REM_3I, 792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_REMU_3, 793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_REMU_3I, 794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DROL, 795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ROL, 796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DROL_I, 797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ROL_I, 798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DROR, 799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ROR, 800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_DROR_I, 801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ROR_I, 802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_S_DA, 803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_S_DOB, 804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_S_DAB, 805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_S_S, 806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SC_AB, 807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SCD_AB, 808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SD_A, 809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SD_OB, 810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SD_AB, 811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SDC1_AB, 812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SDC2_AB, 813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SDC3_AB, 814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SDL_AB, 815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SDR_AB, 816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SEQ, 817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SEQ_I, 818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SGE, 819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SGE_I, 820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SGEU, 821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SGEU_I, 822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SGT, 823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SGT_I, 824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SGTU, 825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SGTU_I, 826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SLE, 827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SLE_I, 828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SLEU, 829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SLEU_I, 830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SLT_I, 831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SLTU_I, 832409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SNE, 833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SNE_I, 834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SB_A, 835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SB_AB, 836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SH_A, 837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SH_AB, 838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SW_A, 839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SW_AB, 840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWC0_A, 841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWC0_AB, 842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWC1_A, 843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWC1_AB, 844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWC2_A, 845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWC2_AB, 846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWC3_A, 847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWC3_AB, 848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWL_A, 849409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWL_AB, 850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWR_A, 851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SWR_AB, 852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SUB_I, 853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SUBU_I, 854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_SUBU_I_2, 855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_TEQ_I, 856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_TGE_I, 857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_TGEU_I, 858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_TLT_I, 859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_TLTU_I, 860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_TNE_I, 861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_TRUNCWD, 862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_TRUNCWS, 863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ULD, 864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ULD_A, 865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ULH, 866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ULH_A, 867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ULHU, 868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ULHU_A, 869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ULW, 870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_ULW_A, 871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_USH, 872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_USH_A, 873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_USW, 874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_USW_A, 875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_USD, 876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_USD_A, 877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_XOR_I, 878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_COP0, 879409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_COP1, 880409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_COP2, 881409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_COP3, 882409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli M_NUM_MACROS 883409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 884409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 885409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 886409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The order of overloaded instructions matters. Label arguments and 887409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli register arguments look the same. Instructions that can have either 888409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for arguments must apear in the correct order in this table for the 889409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli assembler to pick the right one. In other words, entries with 890409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immediate operands must apear after the same instruction with 891409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli registers. 892409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 893409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Many instructions are short hand for other instructions (i.e., The 894409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli jal <register> instruction is short for jalr <register>). */ 895409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 896409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern const struct mips_opcode mips_builtin_opcodes[]; 897409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern const int bfd_mips_num_builtin_opcodes; 898409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern struct mips_opcode *mips_opcodes; 899409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern int bfd_mips_num_opcodes; 900409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define NUMOPCODES bfd_mips_num_opcodes 901409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 902409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 903409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The rest of this file adds definitions for the mips16 TinyRISC 904409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli processor. */ 905409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 906409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the bitmasks and shift counts used for the different 907409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fields in the instruction formats. Other than OP, no masks are 908409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli provided for the fixed portions of an instruction, since they are 909409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli not needed. 910409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 911409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The I format uses IMM11. 912409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 913409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The RI format uses RX and IMM8. 914409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 915409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The RR format uses RX, and RY. 916409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 917409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The RRI format uses RX, RY, and IMM5. 918409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 919409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The RRR format uses RX, RY, and RZ. 920409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 921409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The RRI_A format uses RX, RY, and IMM4. 922409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 923409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The SHIFT format uses RX, RY, and SHAMT. 924409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 925409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The I8 format uses IMM8. 926409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 927409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The I8_MOVR32 format uses RY and REGR32. 928409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 929409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The IR_MOV32R format uses REG32R and MOV32Z. 930409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 931409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The I64 format uses IMM8. 932409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 933409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The RI64 format uses RY and IMM5. 934409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli */ 935409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 936409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_OP 0x1f 937409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_OP 11 938409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM11 0x7ff 939409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM11 0 940409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_RX 0x7 941409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_RX 8 942409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM8 0xff 943409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM8 0 944409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_RY 0x7 945409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_RY 5 946409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM5 0x1f 947409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM5 0 948409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_RZ 0x7 949409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_RZ 2 950409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM4 0xf 951409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM4 0 952409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_REGR32 0x1f 953409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_REGR32 0 954409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_REG32R 0x1f 955409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_REG32R 3 956409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_EXTRACT_REG32R(i) ((((i) >> 5) & 7) | ((i) & 0x18)) 957409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_MOVE32Z 0x7 958409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_MOVE32Z 0 959409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM6 0x3f 960409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM6 5 961409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 962409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the characters which may appears in the args field of an 963409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction. They appear in the order in which the fields appear 964409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli when the instruction is used. Commas and parentheses in the args 965409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli string are ignored when assembling, and written into the output 966409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli when disassembling. 967409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 968409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "y" 3 bit register (MIPS16OP_*_RY) 969409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "x" 3 bit register (MIPS16OP_*_RX) 970409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "z" 3 bit register (MIPS16OP_*_RZ) 971409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "Z" 3 bit register (MIPS16OP_*_MOVE32Z) 972409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "v" 3 bit same register as source and destination (MIPS16OP_*_RX) 973409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "w" 3 bit same register as source and destination (MIPS16OP_*_RY) 974409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "0" zero register ($0) 975409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "S" stack pointer ($sp or $29) 976409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "P" program counter 977409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "R" return address register ($ra or $31) 978409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "X" 5 bit MIPS register (MIPS16OP_*_REGR32) 979409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "Y" 5 bit MIPS register (MIPS16OP_*_REG32R) 980409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "6" 6 bit unsigned break code (MIPS16OP_*_IMM6) 981409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "a" 26 bit jump address 982409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "e" 11 bit extension value 983409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "l" register list for entry instruction 984409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "L" register list for exit instruction 985409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 986409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli The remaining codes may be extended. Except as otherwise noted, 987409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli the full extended operand is a 16 bit signed value. 988409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "<" 3 bit unsigned shift count * 0 (MIPS16OP_*_RZ) (full 5 bit unsigned) 989409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ">" 3 bit unsigned shift count * 0 (MIPS16OP_*_RX) (full 5 bit unsigned) 990409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "[" 3 bit unsigned shift count * 0 (MIPS16OP_*_RZ) (full 6 bit unsigned) 991409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "]" 3 bit unsigned shift count * 0 (MIPS16OP_*_RX) (full 6 bit unsigned) 992409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "4" 4 bit signed immediate * 0 (MIPS16OP_*_IMM4) (full 15 bit signed) 993409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "5" 5 bit unsigned immediate * 0 (MIPS16OP_*_IMM5) 994409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "H" 5 bit unsigned immediate * 2 (MIPS16OP_*_IMM5) 995409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "W" 5 bit unsigned immediate * 4 (MIPS16OP_*_IMM5) 996409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "D" 5 bit unsigned immediate * 8 (MIPS16OP_*_IMM5) 997409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "j" 5 bit signed immediate * 0 (MIPS16OP_*_IMM5) 998409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "8" 8 bit unsigned immediate * 0 (MIPS16OP_*_IMM8) 999409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "V" 8 bit unsigned immediate * 4 (MIPS16OP_*_IMM8) 1000409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "C" 8 bit unsigned immediate * 8 (MIPS16OP_*_IMM8) 1001409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "U" 8 bit unsigned immediate * 0 (MIPS16OP_*_IMM8) (full 16 bit unsigned) 1002409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "k" 8 bit signed immediate * 0 (MIPS16OP_*_IMM8) 1003409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "K" 8 bit signed immediate * 8 (MIPS16OP_*_IMM8) 1004409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "p" 8 bit conditional branch address (MIPS16OP_*_IMM8) 1005409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "q" 11 bit branch address (MIPS16OP_*_IMM11) 1006409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "A" 8 bit PC relative address * 4 (MIPS16OP_*_IMM8) 1007409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "B" 5 bit PC relative address * 8 (MIPS16OP_*_IMM5) 1008409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "E" 5 bit PC relative address * 4 (MIPS16OP_*_IMM5) 1009409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli */ 1010409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1011409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Save/restore encoding for the args field when all 4 registers are 1012409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli either saved as arguments or saved/restored as statics. */ 1013409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_ALL_ARGS 0xe 1014409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_ALL_STATICS 0xb 1015409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1016409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* For the mips16, we use the same opcode table format and a few of 1017409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli the same flags. However, most of the flags are different. */ 1018409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1019409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the register in MIPS16OP_*_RX. */ 1020409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_X 0x00000001 1021409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the register in MIPS16OP_*_RY. */ 1022409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_Y 0x00000002 1023409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the register in MIPS16OP_*_RZ. */ 1024409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_Z 0x00000004 1025409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the T ($24) register. */ 1026409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_T 0x00000008 1027409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the SP ($29) register. */ 1028409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_SP 0x00000010 1029409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the RA ($31) register. */ 1030409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_31 0x00000020 1031409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the general purpose register in MIPS16OP_*_REG32R. */ 1032409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_GPR_Y 0x00000040 1033409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the register in MIPS16OP_*_RX. */ 1034409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_X 0x00000080 1035409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the register in MIPS16OP_*_RY. */ 1036409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_Y 0x00000100 1037409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the register in MIPS16OP_*_MOVE32Z. */ 1038409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_Z 0x00000200 1039409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the T ($24) register. */ 1040409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_T 0x00000400 1041409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the SP ($29) register. */ 1042409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_SP 0x00000800 1043409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the RA ($31) register. */ 1044409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_31 0x00001000 1045409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the program counter. */ 1046409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_PC 0x00002000 1047409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the general purpose register in MIPS16OP_*_REGR32. */ 1048409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_GPR_X 0x00004000 1049409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Is a branch insn. */ 1050409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_BRANCH 0x00010000 1051409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1052409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The following flags have the same value for the mips16 opcode 1053409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli table: 1054409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_UNCOND_BRANCH_DELAY 1055409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_COND_BRANCH_DELAY 1056409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_COND_BRANCH_LIKELY (never used) 1057409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_READ_HI 1058409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_READ_LO 1059409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_WRITE_HI 1060409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_WRITE_LO 1061409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_TRAP 1062409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli INSN_ISA3 1063409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli */ 1064409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1065409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern const struct mips_opcode mips16_opcodes[]; 1066409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern const int bfd_mips16_num_opcodes; 1067409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1068409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Short hand so the lines aren't too long. */ 1069409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1070409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define LDD INSN_LOAD_MEMORY_DELAY 1071409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define LCD INSN_LOAD_COPROC_DELAY 1072409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define UBD INSN_UNCOND_BRANCH_DELAY 1073409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CBD INSN_COND_BRANCH_DELAY 1074409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define COD INSN_COPROC_MOVE_DELAY 1075409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CLD INSN_COPROC_MEMORY_DELAY 1076409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CBL INSN_COND_BRANCH_LIKELY 1077409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define TRAP INSN_TRAP 1078409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define SM INSN_STORE_MEMORY 1079409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1080409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_d INSN_WRITE_GPR_D 1081409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_t INSN_WRITE_GPR_T 1082409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_31 INSN_WRITE_GPR_31 1083409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_D INSN_WRITE_FPR_D 1084409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_T INSN_WRITE_FPR_T 1085409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_S INSN_WRITE_FPR_S 1086409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_s INSN_READ_GPR_S 1087409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_b INSN_READ_GPR_S 1088409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_t INSN_READ_GPR_T 1089409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_S INSN_READ_FPR_S 1090409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_T INSN_READ_FPR_T 1091409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_R INSN_READ_FPR_R 1092409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_CC INSN_WRITE_COND_CODE 1093409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_CC INSN_READ_COND_CODE 1094409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_C0 INSN_COP 1095409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_C1 INSN_COP 1096409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_C2 INSN_COP 1097409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_C3 INSN_COP 1098409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_C0 INSN_COP 1099409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_C1 INSN_COP 1100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_C2 INSN_COP 1101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_C3 INSN_COP 1102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_HI INSN_WRITE_HI 1104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_HI INSN_READ_HI 1105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MOD_HI WR_HI|RD_HI 1106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_LO INSN_WRITE_LO 1108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_LO INSN_READ_LO 1109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MOD_LO WR_LO|RD_LO 1110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_HILO WR_HI|WR_LO 1112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_HILO RD_HI|RD_LO 1113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MOD_HILO WR_HILO|RD_HILO 1114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define IS_M INSN_MULT 1116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_MACC INSN2_WRITE_MDMX_ACC 1118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_MACC INSN2_READ_MDMX_ACC 1119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I1 INSN_ISA1 1121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I2 INSN_ISA2 1122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I3 INSN_ISA3 1123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I4 INSN_ISA4 1124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I5 INSN_ISA5 1125409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I32 INSN_ISA32 1126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I64 INSN_ISA64 1127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I33 INSN_ISA32R2 1128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I65 INSN_ISA64R2 1129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS64 MIPS-3D ASE support. */ 1131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I16 INSN_MIPS16 1132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS32 SmartMIPS ASE support. */ 1134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define SMT INSN_SMARTMIPS 1135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS64 MIPS-3D ASE support. */ 1137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define M3D INSN_MIPS3D 1138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS64 MDMX ASE support. */ 1140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MX INSN_MDMX 1141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 11425aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner#define IL2E (INSN_LOONGSON_2E) 11435aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner#define IL2F (INSN_LOONGSON_2F) 11445aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner 1145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define P3 INSN_4650 1146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define L1 INSN_4010 1147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define V1 (INSN_4100 | INSN_4111 | INSN_4120) 1148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define T3 INSN_3900 1149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define M1 INSN_10000 1150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define SB1 INSN_SB1 1151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N411 INSN_4111 1152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N412 INSN_4120 1153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N5 (INSN_5400 | INSN_5500) 1154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N54 INSN_5400 1155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N55 INSN_5500 1156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define G1 (T3 \ 1158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ) 1159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define G2 (T3 \ 1161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ) 1162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define G3 (I4 \ 1164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ) 1165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS DSP ASE support. 1167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli NOTE: 1168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1. MIPS DSP ASE includes 4 accumulators ($ac0 - $ac3). $ac0 is the pair 1169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli of original HI and LO. $ac1, $ac2 and $ac3 are new registers, and have 1170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli the same structure as $ac0 (HI + LO). For DSP instructions that write or 1171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli read accumulators (that may be $ac0), we add WR_a (WR_HILO) or RD_a 1172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (RD_HILO) attributes, such that HILO dependencies are maintained 1173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli conservatively. 1174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2. For some mul. instructions that use integer registers as destinations 1176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli but destroy HI+LO as side-effect, we add WR_HILO to their attributes. 1177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3. MIPS DSP ASE includes a new DSP control register, which has 6 fields 1179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (ccond, outflag, EFI, c, scount, pos). Many DSP instructions read or write 1180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli certain fields of the DSP control register. For simplicity, we decide not 1181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli to track dependencies of these fields. 1182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli However, "bposge32" is a branch instruction that depends on the "pos" 1183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli field. In order to make sure that GAS does not reorder DSP instructions 1184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli that writes the "pos" field and "bposge32", we add DSP_VOLA (INSN_TRAP) 1185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli attribute to those instructions that write the "pos" field. */ 1186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_a WR_HILO /* Write dsp accumulators (reuse WR_HILO) */ 1188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_a RD_HILO /* Read dsp accumulators (reuse RD_HILO) */ 1189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MOD_a WR_a|RD_a 1190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define DSP_VOLA INSN_TRAP 1191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define D32 INSN_DSP 1192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define D33 INSN_DSPR2 1193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define D64 INSN_DSP64 1194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS MT ASE support. */ 1196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MT32 INSN_MT 1197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The order of overloaded instructions matters. Label arguments and 1199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli register arguments look the same. Instructions that can have either 1200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for arguments must apear in the correct order in this table for the 1201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli assembler to pick the right one. In other words, entries with 1202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immediate operands must apear after the same instruction with 1203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli registers. 1204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Because of the lookup algorithm used, entries with the same opcode 1206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli name must be contiguous. 1207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Many instructions are short hand for other instructions (i.e., The 1209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli jal <register> instruction is short for jalr <register>). */ 1210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliconst struct mips_opcode mips_builtin_opcodes[] = 1212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 1213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These instructions appear first so that the disassembler will find 1214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli them first. The assemblers uses a hash table based on the 1215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction name anyhow. */ 1216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* name, args, match, mask, pinfo, membership */ 1217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pref", "k,o(b)", 0xcc000000, 0xfc000000, RD_b, 0, I4|I32|G3 }, 1218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"prefx", "h,t(b)", 0x4c00000f, 0xfc0007ff, RD_b|RD_t, 0, I4|I33 }, 1219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nop", "", 0x00000000, 0xffffffff, 0, INSN2_ALIAS, I1 }, /* sll */ 1220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ssnop", "", 0x00000040, 0xffffffff, 0, INSN2_ALIAS, I32|N55 }, /* sll */ 1221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ehb", "", 0x000000c0, 0xffffffff, 0, INSN2_ALIAS, I33 }, /* sll */ 1222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li", "t,j", 0x24000000, 0xffe00000, WR_t, INSN2_ALIAS, I1 }, /* addiu */ 1223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li", "t,i", 0x34000000, 0xffe00000, WR_t, INSN2_ALIAS, I1 }, /* ori */ 1224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li", "t,I", 0, (int) M_LI, INSN_MACRO, 0, I1 }, 1225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"move", "d,s", 0, (int) M_MOVE, INSN_MACRO, 0, I1 }, 1226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"move", "d,s", 0x0000002d, 0xfc1f07ff, WR_d|RD_s, INSN2_ALIAS, I3 },/* daddu */ 1227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"move", "d,s", 0x00000021, 0xfc1f07ff, WR_d|RD_s, INSN2_ALIAS, I1 },/* addu */ 1228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"move", "d,s", 0x00000025, 0xfc1f07ff, WR_d|RD_s, INSN2_ALIAS, I1 },/* or */ 1229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"b", "p", 0x10000000, 0xffff0000, UBD, INSN2_ALIAS, I1 },/* beq 0,0 */ 1230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"b", "p", 0x04010000, 0xffff0000, UBD, INSN2_ALIAS, I1 },/* bgez 0 */ 1231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bal", "p", 0x04110000, 0xffff0000, UBD|WR_31, INSN2_ALIAS, I1 },/* bgezal 0*/ 1232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 1233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"abs", "d,v", 0, (int) M_ABS, INSN_MACRO, 0, I1 }, 1234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"abs.s", "D,V", 0x46000005, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, 1235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"abs.d", "D,V", 0x46200005, 0xffff003f, WR_D|RD_S|FP_D, 0, I1 }, 1236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"abs.ps", "D,V", 0x46c00005, 0xffff003f, WR_D|RD_S|FP_D, 0, I5|I33 }, 1237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add", "d,v,t", 0x00000020, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 1238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add", "t,r,I", 0, (int) M_ADD_I, INSN_MACRO, 0, I1 }, 1239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.s", "D,V,T", 0x46000000, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, I1 }, 1240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.d", "D,V,T", 0x46200000, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I1 }, 1241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ob", "X,Y,Q", 0x7800000b, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 1242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ob", "D,S,T", 0x4ac0000b, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ob", "D,S,T[e]", 0x4800000b, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 1244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ob", "D,S,k", 0x4bc0000b, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ps", "D,V,T", 0x46c00000, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, 1246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.qh", "X,Y,Q", 0x7820000b, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 1247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"adda.ob", "Y,Q", 0x78000037, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, 1248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"adda.qh", "Y,Q", 0x78200037, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, 1249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addi", "t,r,j", 0x20000000, 0xfc000000, WR_t|RD_s, 0, I1 }, 1250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addiu", "t,r,j", 0x24000000, 0xfc000000, WR_t|RD_s, 0, I1 }, 1251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addl.ob", "Y,Q", 0x78000437, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, 1252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addl.qh", "Y,Q", 0x78200437, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, 1253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addr.ps", "D,S,T", 0x46c00018, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, M3D }, 1254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu", "d,v,t", 0x00000021, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 1255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu", "t,r,I", 0, (int) M_ADDU_I, INSN_MACRO, 0, I1 }, 1256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alni.ob", "X,Y,Z,O", 0x78000018, 0xff00003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 1257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alni.ob", "D,S,T,%", 0x48000018, 0xff00003f, WR_D|RD_S|RD_T, 0, N54 }, 1258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alni.qh", "X,Y,Z,O", 0x7800001a, 0xff00003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 1259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alnv.ps", "D,V,T,s", 0x4c00001e, 0xfc00003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, 1260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alnv.ob", "X,Y,Z,s", 0x78000019, 0xfc00003f, WR_D|RD_S|RD_T|RD_s|FP_D, 0, MX|SB1 }, 1261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alnv.qh", "X,Y,Z,s", 0x7800001b, 0xfc00003f, WR_D|RD_S|RD_T|RD_s|FP_D, 0, MX }, 1262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and", "d,v,t", 0x00000024, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 1263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and", "t,r,I", 0, (int) M_AND_I, INSN_MACRO, 0, I1 }, 1264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.ob", "X,Y,Q", 0x7800000c, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 1265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.ob", "D,S,T", 0x4ac0000c, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.ob", "D,S,T[e]", 0x4800000c, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 1267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.ob", "D,S,k", 0x4bc0000c, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.qh", "X,Y,Q", 0x7820000c, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 1269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"andi", "t,r,i", 0x30000000, 0xfc000000, WR_t|RD_s, 0, I1 }, 1270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* b is at the top of the table. */ 1271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* bal is at the top of the table. */ 1272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* bc0[tf]l? are at the bottom of the table. */ 1273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1any2f", "N,p", 0x45200000, 0xffe30000, CBD|RD_CC|FP_S, 0, M3D }, 1274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1any2t", "N,p", 0x45210000, 0xffe30000, CBD|RD_CC|FP_S, 0, M3D }, 1275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1any4f", "N,p", 0x45400000, 0xffe30000, CBD|RD_CC|FP_S, 0, M3D }, 1276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1any4t", "N,p", 0x45410000, 0xffe30000, CBD|RD_CC|FP_S, 0, M3D }, 1277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1f", "p", 0x45000000, 0xffff0000, CBD|RD_CC|FP_S, 0, I1 }, 1278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1f", "N,p", 0x45000000, 0xffe30000, CBD|RD_CC|FP_S, 0, I4|I32 }, 1279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1fl", "p", 0x45020000, 0xffff0000, CBL|RD_CC|FP_S, 0, I2|T3 }, 1280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1fl", "N,p", 0x45020000, 0xffe30000, CBL|RD_CC|FP_S, 0, I4|I32 }, 1281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1t", "p", 0x45010000, 0xffff0000, CBD|RD_CC|FP_S, 0, I1 }, 1282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1t", "N,p", 0x45010000, 0xffe30000, CBD|RD_CC|FP_S, 0, I4|I32 }, 1283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1tl", "p", 0x45030000, 0xffff0000, CBL|RD_CC|FP_S, 0, I2|T3 }, 1284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1tl", "N,p", 0x45030000, 0xffe30000, CBL|RD_CC|FP_S, 0, I4|I32 }, 1285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* bc2* are at the bottom of the table. */ 1286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* bc3* are at the bottom of the table. */ 1287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beqz", "s,p", 0x10000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, 1288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beqzl", "s,p", 0x50000000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, 1289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beq", "s,t,p", 0x10000000, 0xfc000000, CBD|RD_s|RD_t, 0, I1 }, 1290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beq", "s,I,p", 0, (int) M_BEQ_I, INSN_MACRO, 0, I1 }, 1291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beql", "s,t,p", 0x50000000, 0xfc000000, CBL|RD_s|RD_t, 0, I2|T3 }, 1292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beql", "s,I,p", 0, (int) M_BEQL_I, INSN_MACRO, 0, I2|T3 }, 1293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bge", "s,t,p", 0, (int) M_BGE, INSN_MACRO, 0, I1 }, 1294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bge", "s,I,p", 0, (int) M_BGE_I, INSN_MACRO, 0, I1 }, 1295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgel", "s,t,p", 0, (int) M_BGEL, INSN_MACRO, 0, I2|T3 }, 1296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgel", "s,I,p", 0, (int) M_BGEL_I, INSN_MACRO, 0, I2|T3 }, 1297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgeu", "s,t,p", 0, (int) M_BGEU, INSN_MACRO, 0, I1 }, 1298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgeu", "s,I,p", 0, (int) M_BGEU_I, INSN_MACRO, 0, I1 }, 1299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgeul", "s,t,p", 0, (int) M_BGEUL, INSN_MACRO, 0, I2|T3 }, 1300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgeul", "s,I,p", 0, (int) M_BGEUL_I, INSN_MACRO, 0, I2|T3 }, 1301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgez", "s,p", 0x04010000, 0xfc1f0000, CBD|RD_s, 0, I1 }, 1302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgezl", "s,p", 0x04030000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, 1303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgezal", "s,p", 0x04110000, 0xfc1f0000, CBD|RD_s|WR_31, 0, I1 }, 1304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgezall", "s,p", 0x04130000, 0xfc1f0000, CBL|RD_s|WR_31, 0, I2|T3 }, 1305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgt", "s,t,p", 0, (int) M_BGT, INSN_MACRO, 0, I1 }, 1306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgt", "s,I,p", 0, (int) M_BGT_I, INSN_MACRO, 0, I1 }, 1307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtl", "s,t,p", 0, (int) M_BGTL, INSN_MACRO, 0, I2|T3 }, 1308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtl", "s,I,p", 0, (int) M_BGTL_I, INSN_MACRO, 0, I2|T3 }, 1309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtu", "s,t,p", 0, (int) M_BGTU, INSN_MACRO, 0, I1 }, 1310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtu", "s,I,p", 0, (int) M_BGTU_I, INSN_MACRO, 0, I1 }, 1311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtul", "s,t,p", 0, (int) M_BGTUL, INSN_MACRO, 0, I2|T3 }, 1312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtul", "s,I,p", 0, (int) M_BGTUL_I, INSN_MACRO, 0, I2|T3 }, 1313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtz", "s,p", 0x1c000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, 1314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtzl", "s,p", 0x5c000000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, 1315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ble", "s,t,p", 0, (int) M_BLE, INSN_MACRO, 0, I1 }, 1316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ble", "s,I,p", 0, (int) M_BLE_I, INSN_MACRO, 0, I1 }, 1317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blel", "s,t,p", 0, (int) M_BLEL, INSN_MACRO, 0, I2|T3 }, 1318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blel", "s,I,p", 0, (int) M_BLEL_I, INSN_MACRO, 0, I2|T3 }, 1319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bleu", "s,t,p", 0, (int) M_BLEU, INSN_MACRO, 0, I1 }, 1320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bleu", "s,I,p", 0, (int) M_BLEU_I, INSN_MACRO, 0, I1 }, 1321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bleul", "s,t,p", 0, (int) M_BLEUL, INSN_MACRO, 0, I2|T3 }, 1322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bleul", "s,I,p", 0, (int) M_BLEUL_I, INSN_MACRO, 0, I2|T3 }, 1323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blez", "s,p", 0x18000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, 1324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blezl", "s,p", 0x58000000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, 1325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blt", "s,t,p", 0, (int) M_BLT, INSN_MACRO, 0, I1 }, 1326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blt", "s,I,p", 0, (int) M_BLT_I, INSN_MACRO, 0, I1 }, 1327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltl", "s,t,p", 0, (int) M_BLTL, INSN_MACRO, 0, I2|T3 }, 1328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltl", "s,I,p", 0, (int) M_BLTL_I, INSN_MACRO, 0, I2|T3 }, 1329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltu", "s,t,p", 0, (int) M_BLTU, INSN_MACRO, 0, I1 }, 1330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltu", "s,I,p", 0, (int) M_BLTU_I, INSN_MACRO, 0, I1 }, 1331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltul", "s,t,p", 0, (int) M_BLTUL, INSN_MACRO, 0, I2|T3 }, 1332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltul", "s,I,p", 0, (int) M_BLTUL_I, INSN_MACRO, 0, I2|T3 }, 1333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltz", "s,p", 0x04000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, 1334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltzl", "s,p", 0x04020000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, 1335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltzal", "s,p", 0x04100000, 0xfc1f0000, CBD|RD_s|WR_31, 0, I1 }, 1336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltzall", "s,p", 0x04120000, 0xfc1f0000, CBL|RD_s|WR_31, 0, I2|T3 }, 1337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bnez", "s,p", 0x14000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, 1338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bnezl", "s,p", 0x54000000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, 1339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bne", "s,t,p", 0x14000000, 0xfc000000, CBD|RD_s|RD_t, 0, I1 }, 1340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bne", "s,I,p", 0, (int) M_BNE_I, INSN_MACRO, 0, I1 }, 1341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bnel", "s,t,p", 0x54000000, 0xfc000000, CBL|RD_s|RD_t, 0, I2|T3 }, 1342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bnel", "s,I,p", 0, (int) M_BNEL_I, INSN_MACRO, 0, I2|T3 }, 1343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"break", "", 0x0000000d, 0xffffffff, TRAP, 0, I1 }, 1344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"break", "c", 0x0000000d, 0xfc00ffff, TRAP, 0, I1 }, 1345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"break", "c,q", 0x0000000d, 0xfc00003f, TRAP, 0, I1 }, 1346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.d", "S,T", 0x46200030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.d", "M,S,T", 0x46200030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.s", "S,T", 0x46000030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.s", "M,S,T", 0x46000030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.ps", "S,T", 0x46c00030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.ps", "M,S,T", 0x46c00030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.d", "S,T", 0x46200031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.d", "M,S,T", 0x46200031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.s", "S,T", 0x46000031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.s", "M,S,T", 0x46000031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.ps", "S,T", 0x46c00031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.ps", "M,S,T", 0x46c00031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.d", "S,T", 0x46200032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.d", "M,S,T", 0x46200032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.s", "S,T", 0x46000032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.s", "M,S,T", 0x46000032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ob", "Y,Q", 0x78000001, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX|SB1 }, 1363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ob", "S,T", 0x4ac00001, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ob", "S,T[e]", 0x48000001, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ob", "S,k", 0x4bc00001, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ps", "S,T", 0x46c00032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ps", "M,S,T", 0x46c00032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.qh", "Y,Q", 0x78200001, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX }, 1369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.d", "S,T", 0x46200033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.d", "M,S,T", 0x46200033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.s", "S,T", 0x46000033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.s", "M,S,T", 0x46000033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.ps","S,T", 0x46c00033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.ps","M,S,T", 0x46c00033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.d", "S,T", 0x46200034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.d", "M,S,T", 0x46200034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.s", "S,T", 0x46000034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.s", "M,S,T", 0x46000034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.ps","S,T", 0x46c00034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.ps","M,S,T", 0x46c00034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.d", "S,T", 0x46200035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.d", "M,S,T", 0x46200035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.s", "S,T", 0x46000035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.s", "M,S,T", 0x46000035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.ps","S,T", 0x46c00035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.ps","M,S,T", 0x46c00035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.d", "S,T", 0x46200036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.d", "M,S,T", 0x46200036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.s", "S,T", 0x46000036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.s", "M,S,T", 0x46000036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.ps","S,T", 0x46c00036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.ps","M,S,T", 0x46c00036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.d", "S,T", 0x46200037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.d", "M,S,T", 0x46200037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.s", "S,T", 0x46000037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.s", "M,S,T", 0x46000037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.ps","S,T", 0x46c00037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.ps","M,S,T", 0x46c00037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.d", "S,T", 0x46200038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.d", "M,S,T", 0x46200038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.s", "S,T", 0x46000038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.s", "M,S,T", 0x46000038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.ps", "S,T", 0x46c00038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.ps", "M,S,T", 0x46c00038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.d","S,T", 0x46200039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.d","M,S,T", 0x46200039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.s","S,T", 0x46000039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.s","M,S,T", 0x46000039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.ps","S,T", 0x46c00039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.ps","M,S,T", 0x46c00039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.d", "S,T", 0x4620003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.d", "M,S,T", 0x4620003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.s", "S,T", 0x4600003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.s", "M,S,T", 0x4600003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.ps","S,T", 0x46c0003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.ps","M,S,T", 0x46c0003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.d", "S,T", 0x4620003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.d", "M,S,T", 0x4620003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.s", "S,T", 0x4600003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.s", "M,S,T", 0x4600003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.ps","S,T", 0x46c0003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.ps","M,S,T", 0x46c0003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.d", "S,T", 0x4620003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.d", "M,S,T", 0x4620003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.s", "S,T", 0x4600003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.s", "M,S,T", 0x4600003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ob", "Y,Q", 0x78000004, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX|SB1 }, 1428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ob", "S,T", 0x4ac00004, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ob", "S,T[e]", 0x48000004, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ob", "S,k", 0x4bc00004, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ps", "S,T", 0x46c0003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ps", "M,S,T", 0x46c0003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.qh", "Y,Q", 0x78200004, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX }, 1434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.d", "S,T", 0x4620003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.d", "M,S,T", 0x4620003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.s", "S,T", 0x4600003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.s", "M,S,T", 0x4600003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.ps","S,T", 0x46c0003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.ps","M,S,T", 0x46c0003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.d", "S,T", 0x4620003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.d", "M,S,T", 0x4620003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.s", "S,T", 0x4600003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.s", "M,S,T", 0x4600003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ob", "Y,Q", 0x78000005, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX|SB1 }, 1445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ob", "S,T", 0x4ac00005, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ob", "S,T[e]", 0x48000005, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ob", "S,k", 0x4bc00005, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ps", "S,T", 0x46c0003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ps", "M,S,T", 0x46c0003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.qh", "Y,Q", 0x78200005, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX }, 1451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.d", "S,T", 0x4620003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, 1452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.d", "M,S,T", 0x4620003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, 1453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.s", "S,T", 0x4600003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, 1454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.s", "M,S,T", 0x4600003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, 1455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.ps","S,T", 0x46c0003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.ps","M,S,T", 0x46c0003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, 1457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.eq.d", "M,S,T", 0x46200072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.eq.ps", "M,S,T", 0x46c00072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.eq.s", "M,S,T", 0x46000072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.f.d", "M,S,T", 0x46200070, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.f.ps", "M,S,T", 0x46c00070, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.f.s", "M,S,T", 0x46000070, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.le.d", "M,S,T", 0x4620007e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.le.ps", "M,S,T", 0x46c0007e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.le.s", "M,S,T", 0x4600007e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.lt.d", "M,S,T", 0x4620007c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.lt.ps", "M,S,T", 0x46c0007c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.lt.s", "M,S,T", 0x4600007c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.nge.d", "M,S,T", 0x4620007d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.nge.ps","M,S,T", 0x46c0007d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.nge.s", "M,S,T", 0x4600007d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngl.d", "M,S,T", 0x4620007b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngl.ps","M,S,T", 0x46c0007b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngl.s", "M,S,T", 0x4600007b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngle.d","M,S,T", 0x46200079, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngle.ps","M,S,T",0x46c00079, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngle.s","M,S,T", 0x46000079, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngt.d", "M,S,T", 0x4620007f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngt.ps","M,S,T", 0x46c0007f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngt.s", "M,S,T", 0x4600007f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ole.d", "M,S,T", 0x46200076, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ole.ps","M,S,T", 0x46c00076, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ole.s", "M,S,T", 0x46000076, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.olt.d", "M,S,T", 0x46200074, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.olt.ps","M,S,T", 0x46c00074, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.olt.s", "M,S,T", 0x46000074, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.seq.d", "M,S,T", 0x4620007a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.seq.ps","M,S,T", 0x46c0007a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.seq.s", "M,S,T", 0x4600007a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.sf.d", "M,S,T", 0x46200078, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.sf.ps", "M,S,T", 0x46c00078, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.sf.s", "M,S,T", 0x46000078, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ueq.d", "M,S,T", 0x46200073, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ueq.ps","M,S,T", 0x46c00073, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ueq.s", "M,S,T", 0x46000073, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ule.d", "M,S,T", 0x46200077, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ule.ps","M,S,T", 0x46c00077, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ule.s", "M,S,T", 0x46000077, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ult.d", "M,S,T", 0x46200075, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ult.ps","M,S,T", 0x46c00075, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ult.s", "M,S,T", 0x46000075, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.un.d", "M,S,T", 0x46200071, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.un.ps", "M,S,T", 0x46c00071, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, 1504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.un.s", "M,S,T", 0x46000071, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, 1505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* CW4010 instructions which are aliases for the cache instruction. */ 1506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flushi", "", 0xbc010000, 0xffffffff, 0, 0, L1 }, 1507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flushd", "", 0xbc020000, 0xffffffff, 0, 0, L1 }, 1508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flushid", "", 0xbc030000, 0xffffffff, 0, 0, L1 }, 1509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wb", "o(b)", 0xbc040000, 0xfc1f0000, SM|RD_b, 0, L1 }, 1510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cache", "k,o(b)", 0xbc000000, 0xfc000000, RD_b, 0, I3|I32|T3}, 1511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cache", "k,A(b)", 0, (int) M_CACHE_AB, INSN_MACRO, 0, I3|I32|T3}, 1512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ceil.l.d", "D,S", 0x4620000a, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, 1513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ceil.l.s", "D,S", 0x4600000a, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, 1514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ceil.w.d", "D,S", 0x4620000e, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, 1515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ceil.w.s", "D,S", 0x4600000e, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, 1516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc0", "t,G", 0x40400000, 0xffe007ff, LCD|WR_t|RD_C0, 0, I1 }, 1517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc1", "t,G", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1|FP_S, 0, I1 }, 1518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc1", "t,S", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1|FP_S, 0, I1 }, 1519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* cfc2 is at the bottom of the table. */ 1520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* cfc3 is at the bottom of the table. */ 1521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cftc1", "d,E", 0x41000023, 0xffe007ff, TRAP|LCD|WR_d|RD_C1|FP_S, 0, MT32 }, 1522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cftc1", "d,T", 0x41000023, 0xffe007ff, TRAP|LCD|WR_d|RD_C1|FP_S, 0, MT32 }, 1523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cftc2", "d,E", 0x41000025, 0xffe007ff, TRAP|LCD|WR_d|RD_C2, 0, MT32 }, 1524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"clo", "U,s", 0x70000021, 0xfc0007ff, WR_d|WR_t|RD_s, 0, I32|N55 }, 1525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"clz", "U,s", 0x70000020, 0xfc0007ff, WR_d|WR_t|RD_s, 0, I32|N55 }, 1526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc0", "t,G", 0x40c00000, 0xffe007ff, COD|RD_t|WR_CC, 0, I1 }, 1527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc1", "t,G", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, 0, I1 }, 1528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc1", "t,S", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, 0, I1 }, 1529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* ctc2 is at the bottom of the table. */ 1530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* ctc3 is at the bottom of the table. */ 1531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cttc1", "t,g", 0x41800023, 0xffe007ff, TRAP|COD|RD_t|WR_CC|FP_S, 0, MT32 }, 1532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cttc1", "t,S", 0x41800023, 0xffe007ff, TRAP|COD|RD_t|WR_CC|FP_S, 0, MT32 }, 1533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cttc2", "t,g", 0x41800025, 0xffe007ff, TRAP|COD|RD_t|WR_CC, 0, MT32 }, 1534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.d.l", "D,S", 0x46a00021, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, 1535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.d.s", "D,S", 0x46000021, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I1 }, 1536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.d.w", "D,S", 0x46800021, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I1 }, 1537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.l.d", "D,S", 0x46200025, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, 1538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.l.s", "D,S", 0x46000025, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, 1539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.l", "D,S", 0x46a00020, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, 1540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.d", "D,S", 0x46200020, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I1 }, 1541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.w", "D,S", 0x46800020, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, 1542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.pl","D,S", 0x46c00028, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I5|I33 }, 1543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.pu","D,S", 0x46c00020, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I5|I33 }, 1544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.w.d", "D,S", 0x46200024, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I1 }, 1545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.w.s", "D,S", 0x46000024, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, 1546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.ps.pw", "D,S", 0x46800026, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, M3D }, 1547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.ps.s","D,V,T", 0x46000026, 0xffe0003f, WR_D|RD_S|RD_T|FP_S|FP_D, 0, I5|I33 }, 1548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.pw.ps", "D,S", 0x46c00024, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, M3D }, 1549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dabs", "d,v", 0, (int) M_DABS, INSN_MACRO, 0, I3 }, 1550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dadd", "d,v,t", 0x0000002c, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I3 }, 1551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dadd", "t,r,I", 0, (int) M_DADD_I, INSN_MACRO, 0, I3 }, 1552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"daddi", "t,r,j", 0x60000000, 0xfc000000, WR_t|RD_s, 0, I3 }, 1553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"daddiu", "t,r,j", 0x64000000, 0xfc000000, WR_t|RD_s, 0, I3 }, 1554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"daddu", "d,v,t", 0x0000002d, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I3 }, 1555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"daddu", "t,r,I", 0, (int) M_DADDU_I, INSN_MACRO, 0, I3 }, 1556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dbreak", "", 0x7000003f, 0xffffffff, 0, 0, N5 }, 1557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dclo", "U,s", 0x70000025, 0xfc0007ff, RD_s|WR_d|WR_t, 0, I64|N55 }, 1558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dclz", "U,s", 0x70000024, 0xfc0007ff, RD_s|WR_d|WR_t, 0, I64|N55 }, 1559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dctr and dctw are used on the r5000. */ 1560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dctr", "o(b)", 0xbc050000, 0xfc1f0000, RD_b, 0, I3 }, 1561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dctw", "o(b)", 0xbc090000, 0xfc1f0000, RD_b, 0, I3 }, 1562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"deret", "", 0x4200001f, 0xffffffff, 0, 0, I32|G2 }, 1563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dext", "t,r,I,+I", 0, (int) M_DEXT, INSN_MACRO, 0, I65 }, 1564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dext", "t,r,+A,+C", 0x7c000003, 0xfc00003f, WR_t|RD_s, 0, I65 }, 1565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextm", "t,r,+A,+G", 0x7c000001, 0xfc00003f, WR_t|RD_s, 0, I65 }, 1566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextu", "t,r,+E,+H", 0x7c000002, 0xfc00003f, WR_t|RD_s, 0, I65 }, 1567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* For ddiv, see the comments about div. */ 1568409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddiv", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, 1569409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddiv", "d,v,t", 0, (int) M_DDIV_3, INSN_MACRO, 0, I3 }, 1570409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddiv", "d,v,I", 0, (int) M_DDIV_3I, INSN_MACRO, 0, I3 }, 1571409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* For ddivu, see the comments about div. */ 1572409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddivu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, 1573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddivu", "d,v,t", 0, (int) M_DDIVU_3, INSN_MACRO, 0, I3 }, 1574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddivu", "d,v,I", 0, (int) M_DDIVU_3I, INSN_MACRO, 0, I3 }, 1575409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"di", "", 0x41606000, 0xffffffff, WR_t|WR_C0, 0, I33 }, 1576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"di", "t", 0x41606000, 0xffe0ffff, WR_t|WR_C0, 0, I33 }, 1577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dins", "t,r,I,+I", 0, (int) M_DINS, INSN_MACRO, 0, I65 }, 1578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dins", "t,r,+A,+B", 0x7c000007, 0xfc00003f, WR_t|RD_s, 0, I65 }, 1579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dinsm", "t,r,+A,+F", 0x7c000005, 0xfc00003f, WR_t|RD_s, 0, I65 }, 1580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dinsu", "t,r,+E,+F", 0x7c000006, 0xfc00003f, WR_t|RD_s, 0, I65 }, 1581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The MIPS assembler treats the div opcode with two operands as 1582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli though the first operand appeared twice (the first operand is both 1583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli a source and a destination). To get the div machine instruction, 1584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli you must use an explicit destination of $0. */ 1585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I1 }, 1586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div", "z,t", 0x0000001a, 0xffe0ffff, RD_s|RD_t|WR_HILO, 0, I1 }, 1587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div", "d,v,t", 0, (int) M_DIV_3, INSN_MACRO, 0, I1 }, 1588409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div", "d,v,I", 0, (int) M_DIV_3I, INSN_MACRO, 0, I1 }, 1589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div.d", "D,V,T", 0x46200003, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I1 }, 1590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div.s", "D,V,T", 0x46000003, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, I1 }, 1591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div.ps", "D,V,T", 0x46c00003, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, SB1 }, 1592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* For divu, see the comments about div. */ 1593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"divu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I1 }, 1594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"divu", "z,t", 0x0000001b, 0xffe0ffff, RD_s|RD_t|WR_HILO, 0, I1 }, 1595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"divu", "d,v,t", 0, (int) M_DIVU_3, INSN_MACRO, 0, I1 }, 1596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"divu", "d,v,I", 0, (int) M_DIVU_3I, INSN_MACRO, 0, I1 }, 1597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dla", "t,A(b)", 0, (int) M_DLA_AB, INSN_MACRO, 0, I3 }, 1598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dlca", "t,A(b)", 0, (int) M_DLCA_AB, INSN_MACRO, 0, I3 }, 1599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dli", "t,j", 0x24000000, 0xffe00000, WR_t, 0, I3 }, /* addiu */ 1600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dli", "t,i", 0x34000000, 0xffe00000, WR_t, 0, I3 }, /* ori */ 1601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dli", "t,I", 0, (int) M_DLI, INSN_MACRO, 0, I3 }, 1602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacc", "d,s,t", 0x00000029, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, 1603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacchi", "d,s,t", 0x00000229, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, 1604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacchis", "d,s,t", 0x00000629, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, 1605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacchiu", "d,s,t", 0x00000269, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, 1606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacchius", "d,s,t", 0x00000669, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, 1607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmaccs", "d,s,t", 0x00000429, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, 1608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmaccu", "d,s,t", 0x00000069, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, 1609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmaccus", "d,s,t", 0x00000469, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, 1610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmadd16", "s,t", 0x00000029, 0xfc00ffff, RD_s|RD_t|MOD_LO, 0, N411 }, 1611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc0", "t,G", 0x40200000, 0xffe007ff, LCD|WR_t|RD_C0, 0, I3 }, 1612409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc0", "t,+D", 0x40200000, 0xffe007f8, LCD|WR_t|RD_C0, 0, I64 }, 1613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc0", "t,G,H", 0x40200000, 0xffe007f8, LCD|WR_t|RD_C0, 0, I64 }, 1614409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmt", "", 0x41600bc1, 0xffffffff, TRAP, 0, MT32 }, 1615409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmt", "t", 0x41600bc1, 0xffe0ffff, TRAP|WR_t, 0, MT32 }, 1616409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc0", "t,G", 0x40a00000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC, 0, I3 }, 1617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc0", "t,+D", 0x40a00000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, 0, I64 }, 1618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc0", "t,G,H", 0x40a00000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, 0, I64 }, 1619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc1", "t,S", 0x44200000, 0xffe007ff, LCD|WR_t|RD_S|FP_D, 0, I3 }, 1620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc1", "t,G", 0x44200000, 0xffe007ff, LCD|WR_t|RD_S|FP_D, 0, I3 }, 1621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc1", "t,S", 0x44a00000, 0xffe007ff, COD|RD_t|WR_S|FP_D, 0, I3 }, 1622409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc1", "t,G", 0x44a00000, 0xffe007ff, COD|RD_t|WR_S|FP_D, 0, I3 }, 1623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dmfc2 is at the bottom of the table. */ 1624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dmtc2 is at the bottom of the table. */ 1625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dmfc3 is at the bottom of the table. */ 1626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dmtc3 is at the bottom of the table. */ 1627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmul", "d,v,t", 0, (int) M_DMUL, INSN_MACRO, 0, I3 }, 1628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmul", "d,v,I", 0, (int) M_DMUL_I, INSN_MACRO, 0, I3 }, 1629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmulo", "d,v,t", 0, (int) M_DMULO, INSN_MACRO, 0, I3 }, 1630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmulo", "d,v,I", 0, (int) M_DMULO_I, INSN_MACRO, 0, I3 }, 1631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmulou", "d,v,t", 0, (int) M_DMULOU, INSN_MACRO, 0, I3 }, 1632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmulou", "d,v,I", 0, (int) M_DMULOU_I, INSN_MACRO, 0, I3 }, 1633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmult", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, 1634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmultu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, 1635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dneg", "d,w", 0x0000002e, 0xffe007ff, WR_d|RD_t, 0, I3 }, /* dsub 0 */ 1636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dnegu", "d,w", 0x0000002f, 0xffe007ff, WR_d|RD_t, 0, I3 }, /* dsubu 0*/ 1637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drem", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, 1638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drem", "d,v,t", 3, (int) M_DREM_3, INSN_MACRO, 0, I3 }, 1639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drem", "d,v,I", 3, (int) M_DREM_3I, INSN_MACRO, 0, I3 }, 1640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dremu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, 1641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dremu", "d,v,t", 3, (int) M_DREMU_3, INSN_MACRO, 0, I3 }, 1642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dremu", "d,v,I", 3, (int) M_DREMU_3I, INSN_MACRO, 0, I3 }, 1643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dret", "", 0x7000003e, 0xffffffff, 0, 0, N5 }, 1644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drol", "d,v,t", 0, (int) M_DROL, INSN_MACRO, 0, I3 }, 1645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drol", "d,v,I", 0, (int) M_DROL_I, INSN_MACRO, 0, I3 }, 1646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dror", "d,v,t", 0, (int) M_DROR, INSN_MACRO, 0, I3 }, 1647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dror", "d,v,I", 0, (int) M_DROR_I, INSN_MACRO, 0, I3 }, 1648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dror", "d,w,<", 0x0020003a, 0xffe0003f, WR_d|RD_t, 0, N5|I65 }, 1649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drorv", "d,t,s", 0x00000056, 0xfc0007ff, RD_t|RD_s|WR_d, 0, N5|I65 }, 1650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dror32", "d,w,<", 0x0020003e, 0xffe0003f, WR_d|RD_t, 0, N5|I65 }, 1651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotl", "d,v,t", 0, (int) M_DROL, INSN_MACRO, 0, I65 }, 1652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotl", "d,v,I", 0, (int) M_DROL_I, INSN_MACRO, 0, I65 }, 1653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotr", "d,v,t", 0, (int) M_DROR, INSN_MACRO, 0, I65 }, 1654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotr", "d,v,I", 0, (int) M_DROR_I, INSN_MACRO, 0, I65 }, 1655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotrv", "d,t,s", 0x00000056, 0xfc0007ff, RD_t|RD_s|WR_d, 0, I65 }, 1656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotr32", "d,w,<", 0x0020003e, 0xffe0003f, WR_d|RD_t, 0, I65 }, 1657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsbh", "d,w", 0x7c0000a4, 0xffe007ff, WR_d|RD_t, 0, I65 }, 1658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dshd", "d,w", 0x7c000164, 0xffe007ff, WR_d|RD_t, 0, I65 }, 1659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsllv", "d,t,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, 1660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsll32", "d,w,<", 0x0000003c, 0xffe0003f, WR_d|RD_t, 0, I3 }, 1661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsll", "d,w,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, /* dsllv */ 1662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsll", "d,w,>", 0x0000003c, 0xffe0003f, WR_d|RD_t, 0, I3 }, /* dsll32 */ 1663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsll", "d,w,<", 0x00000038, 0xffe0003f, WR_d|RD_t, 0, I3 }, 1664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrav", "d,t,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, 1665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsra32", "d,w,<", 0x0000003f, 0xffe0003f, WR_d|RD_t, 0, I3 }, 1666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsra", "d,w,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, /* dsrav */ 1667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsra", "d,w,>", 0x0000003f, 0xffe0003f, WR_d|RD_t, 0, I3 }, /* dsra32 */ 1668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsra", "d,w,<", 0x0000003b, 0xffe0003f, WR_d|RD_t, 0, I3 }, 1669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrlv", "d,t,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, 1670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrl32", "d,w,<", 0x0000003e, 0xffe0003f, WR_d|RD_t, 0, I3 }, 1671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrl", "d,w,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, /* dsrlv */ 1672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrl", "d,w,>", 0x0000003e, 0xffe0003f, WR_d|RD_t, 0, I3 }, /* dsrl32 */ 1673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrl", "d,w,<", 0x0000003a, 0xffe0003f, WR_d|RD_t, 0, I3 }, 1674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsub", "d,v,t", 0x0000002e, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I3 }, 1675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsub", "d,v,I", 0, (int) M_DSUB_I, INSN_MACRO, 0, I3 }, 1676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsubu", "d,v,t", 0x0000002f, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I3 }, 1677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsubu", "d,v,I", 0, (int) M_DSUBU_I, INSN_MACRO, 0, I3 }, 1678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dvpe", "", 0x41600001, 0xffffffff, TRAP, 0, MT32 }, 1679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dvpe", "t", 0x41600001, 0xffe0ffff, TRAP|WR_t, 0, MT32 }, 1680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ei", "", 0x41606020, 0xffffffff, WR_t|WR_C0, 0, I33 }, 1681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ei", "t", 0x41606020, 0xffe0ffff, WR_t|WR_C0, 0, I33 }, 1682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"emt", "", 0x41600be1, 0xffffffff, TRAP, 0, MT32 }, 1683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"emt", "t", 0x41600be1, 0xffe0ffff, TRAP|WR_t, 0, MT32 }, 1684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"eret", "", 0x42000018, 0xffffffff, 0, 0, I3|I32 }, 1685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"evpe", "", 0x41600021, 0xffffffff, TRAP, 0, MT32 }, 1686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"evpe", "t", 0x41600021, 0xffe0ffff, TRAP|WR_t, 0, MT32 }, 1687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ext", "t,r,+A,+C", 0x7c000000, 0xfc00003f, WR_t|RD_s, 0, I33 }, 1688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"floor.l.d", "D,S", 0x4620000b, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, 1689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"floor.l.s", "D,S", 0x4600000b, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, 1690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"floor.w.d", "D,S", 0x4620000f, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, 1691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"floor.w.s", "D,S", 0x4600000f, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, 1692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"hibernate","", 0x42000023, 0xffffffff, 0, 0, V1 }, 1693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ins", "t,r,+A,+B", 0x7c000004, 0xfc00003f, WR_t|RD_s, 0, I33 }, 1694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jr", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, 0, I1 }, 1695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* jr.hb is officially MIPS{32,64}R2, but it works on R1 as jr with 1696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli the same hazard barrier effect. */ 1697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jr.hb", "s", 0x00000408, 0xfc1fffff, UBD|RD_s, 0, I32 }, 1698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"j", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, 0, I1 }, /* jr */ 1699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* SVR4 PIC code requires special handling for j, so it must be a 1700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli macro. */ 1701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"j", "a", 0, (int) M_J_A, INSN_MACRO, 0, I1 }, 1702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* This form of j is used by the disassembler and internally by the 1703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli assembler, but will never match user input (because the line above 1704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli will match first). */ 1705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"j", "a", 0x08000000, 0xfc000000, UBD, 0, I1 }, 1706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalr", "s", 0x0000f809, 0xfc1fffff, UBD|RD_s|WR_d, 0, I1 }, 1707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalr", "d,s", 0x00000009, 0xfc1f07ff, UBD|RD_s|WR_d, 0, I1 }, 1708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* jalr.hb is officially MIPS{32,64}R2, but it works on R1 as jalr 1709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli with the same hazard barrier effect. */ 1710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalr.hb", "s", 0x0000fc09, 0xfc1fffff, UBD|RD_s|WR_d, 0, I32 }, 1711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalr.hb", "d,s", 0x00000409, 0xfc1f07ff, UBD|RD_s|WR_d, 0, I32 }, 1712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* SVR4 PIC code requires special handling for jal, so it must be a 1713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli macro. */ 1714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jal", "d,s", 0, (int) M_JAL_2, INSN_MACRO, 0, I1 }, 1715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jal", "s", 0, (int) M_JAL_1, INSN_MACRO, 0, I1 }, 1716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jal", "a", 0, (int) M_JAL_A, INSN_MACRO, 0, I1 }, 1717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* This form of jal is used by the disassembler and internally by the 1718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli assembler, but will never match user input (because the line above 1719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli will match first). */ 1720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jal", "a", 0x0c000000, 0xfc000000, UBD|WR_31, 0, I1 }, 1721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalx", "a", 0x74000000, 0xfc000000, UBD|WR_31, 0, I16 }, 1722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"la", "t,A(b)", 0, (int) M_LA_AB, INSN_MACRO, 0, I1 }, 1723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lb", "t,o(b)", 0x80000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, 1724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lb", "t,A(b)", 0, (int) M_LB_AB, INSN_MACRO, 0, I1 }, 1725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lbu", "t,o(b)", 0x90000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, 1726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lbu", "t,A(b)", 0, (int) M_LBU_AB, INSN_MACRO, 0, I1 }, 1727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lca", "t,A(b)", 0, (int) M_LCA_AB, INSN_MACRO, 0, I1 }, 1728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ld", "t,o(b)", 0xdc000000, 0xfc000000, WR_t|RD_b, 0, I3 }, 1729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ld", "t,o(b)", 0, (int) M_LD_OB, INSN_MACRO, 0, I1 }, 1730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ld", "t,A(b)", 0, (int) M_LD_AB, INSN_MACRO, 0, I1 }, 1731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc1", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, 0, I2 }, 1732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc1", "E,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, 0, I2 }, 1733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc1", "T,A(b)", 0, (int) M_LDC1_AB, INSN_MACRO, 0, I2 }, 1734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc1", "E,A(b)", 0, (int) M_LDC1_AB, INSN_MACRO, 0, I2 }, 1735409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.d", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, 0, I2 }, /* ldc1 */ 1736409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.d", "T,o(b)", 0, (int) M_L_DOB, INSN_MACRO, 0, I1 }, 1737409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.d", "T,A(b)", 0, (int) M_L_DAB, INSN_MACRO, 0, I1 }, 1738409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc2", "E,o(b)", 0xd8000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I2 }, 1739409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc2", "E,A(b)", 0, (int) M_LDC2_AB, INSN_MACRO, 0, I2 }, 1740409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc3", "E,o(b)", 0xdc000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I2 }, 1741409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc3", "E,A(b)", 0, (int) M_LDC3_AB, INSN_MACRO, 0, I2 }, 1742409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldl", "t,o(b)", 0x68000000, 0xfc000000, LDD|WR_t|RD_b, 0, I3 }, 1743409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldl", "t,A(b)", 0, (int) M_LDL_AB, INSN_MACRO, 0, I3 }, 1744409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldr", "t,o(b)", 0x6c000000, 0xfc000000, LDD|WR_t|RD_b, 0, I3 }, 1745409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldr", "t,A(b)", 0, (int) M_LDR_AB, INSN_MACRO, 0, I3 }, 1746409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldxc1", "D,t(b)", 0x4c000001, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|FP_D, 0, I4|I33 }, 1747409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lh", "t,o(b)", 0x84000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, 1748409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lh", "t,A(b)", 0, (int) M_LH_AB, INSN_MACRO, 0, I1 }, 1749409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lhu", "t,o(b)", 0x94000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, 1750409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lhu", "t,A(b)", 0, (int) M_LHU_AB, INSN_MACRO, 0, I1 }, 1751409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* li is at the start of the table. */ 1752409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li.d", "t,F", 0, (int) M_LI_D, INSN_MACRO, 0, I1 }, 1753409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li.d", "T,L", 0, (int) M_LI_DD, INSN_MACRO, 0, I1 }, 1754409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li.s", "t,f", 0, (int) M_LI_S, INSN_MACRO, 0, I1 }, 1755409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li.s", "T,l", 0, (int) M_LI_SS, INSN_MACRO, 0, I1 }, 1756409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ll", "t,o(b)", 0xc0000000, 0xfc000000, LDD|RD_b|WR_t, 0, I2 }, 1757409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ll", "t,A(b)", 0, (int) M_LL_AB, INSN_MACRO, 0, I2 }, 1758409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lld", "t,o(b)", 0xd0000000, 0xfc000000, LDD|RD_b|WR_t, 0, I3 }, 1759409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lld", "t,A(b)", 0, (int) M_LLD_AB, INSN_MACRO, 0, I3 }, 1760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lui", "t,u", 0x3c000000, 0xffe00000, WR_t, 0, I1 }, 1761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"luxc1", "D,t(b)", 0x4c000005, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|FP_D, 0, I5|I33|N55}, 1762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lw", "t,o(b)", 0x8c000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, 1763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lw", "t,A(b)", 0, (int) M_LW_AB, INSN_MACRO, 0, I1 }, 1764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc0", "E,o(b)", 0xc0000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I1 }, 1765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc0", "E,A(b)", 0, (int) M_LWC0_AB, INSN_MACRO, 0, I1 }, 1766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc1", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, 0, I1 }, 1767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc1", "E,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, 0, I1 }, 1768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc1", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO, 0, I1 }, 1769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc1", "E,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO, 0, I1 }, 1770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.s", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, 0, I1 }, /* lwc1 */ 1771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.s", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO, 0, I1 }, 1772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc2", "E,o(b)", 0xc8000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I1 }, 1773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc2", "E,A(b)", 0, (int) M_LWC2_AB, INSN_MACRO, 0, I1 }, 1774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc3", "E,o(b)", 0xcc000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I1 }, 1775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc3", "E,A(b)", 0, (int) M_LWC3_AB, INSN_MACRO, 0, I1 }, 1776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwl", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, 1777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwl", "t,A(b)", 0, (int) M_LWL_AB, INSN_MACRO, 0, I1 }, 1778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lcache", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t, 0, I2 }, /* same */ 1779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lcache", "t,A(b)", 0, (int) M_LWL_AB, INSN_MACRO, 0, I2 }, /* as lwl */ 1780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwr", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, 1781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwr", "t,A(b)", 0, (int) M_LWR_AB, INSN_MACRO, 0, I1 }, 1782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flush", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t, 0, I2 }, /* same */ 1783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flush", "t,A(b)", 0, (int) M_LWR_AB, INSN_MACRO, 0, I2 }, /* as lwr */ 1784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"fork", "d,s,t", 0x7c000008, 0xfc0007ff, TRAP|WR_d|RD_s|RD_t, 0, MT32 }, 1785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwu", "t,o(b)", 0x9c000000, 0xfc000000, LDD|RD_b|WR_t, 0, I3 }, 1786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwu", "t,A(b)", 0, (int) M_LWU_AB, INSN_MACRO, 0, I3 }, 1787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwxc1", "D,t(b)", 0x4c000000, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|FP_D, 0, I4|I33 }, 1788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwxs", "d,t(b)", 0x70000088, 0xfc0007ff, LDD|RD_b|RD_t|WR_d, 0, SMT }, 1789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macc", "d,s,t", 0x00000028, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, 1790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macc", "d,s,t", 0x00000158, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maccs", "d,s,t", 0x00000428, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, 1792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchi", "d,s,t", 0x00000228, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, 1793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchi", "d,s,t", 0x00000358, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchis", "d,s,t", 0x00000628, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, 1795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchiu", "d,s,t", 0x00000268, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, 1796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchiu", "d,s,t", 0x00000359, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchius","d,s,t", 0x00000668, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, 1798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maccu", "d,s,t", 0x00000068, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, 1799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maccu", "d,s,t", 0x00000159, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maccus", "d,s,t", 0x00000468, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, 1801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mad", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, P3 }, 1802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, P3 }, 1803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd.d", "D,R,S,T", 0x4c000021, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4|I33 }, 1804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd.s", "D,R,S,T", 0x4c000020, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0, I4|I33 }, 1805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd.ps", "D,R,S,T", 0x4c000026, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5|I33 }, 1806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, 1807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, 1808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, G1 }, 1809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd", "7,s,t", 0x70000000, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 1810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd", "d,s,t", 0x70000000, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0, G1 }, 1811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddp", "s,t", 0x70000441, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, SMT }, 1812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, 1813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, 1814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, G1 }, 1815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu", "7,s,t", 0x70000001, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 1816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu", "d,s,t", 0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0, G1 }, 1817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd16", "s,t", 0x00000028, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, N411 }, 1818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.ob", "X,Y,Q", 0x78000007, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 1819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.ob", "D,S,T", 0x4ac00007, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.ob", "D,S,T[e]", 0x48000007, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 1821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.ob", "D,S,k", 0x4bc00007, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.qh", "X,Y,Q", 0x78200007, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 1823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfpc", "t,P", 0x4000c801, 0xffe0ffc1, LCD|WR_t|RD_C0, 0, M1|N5 }, 1824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfps", "t,P", 0x4000c800, 0xffe0ffc1, LCD|WR_t|RD_C0, 0, M1|N5 }, 1825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftacx", "d", 0x41020021, 0xffff07ff, TRAP|WR_d|RD_a, 0, MT32 }, 1826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftacx", "d,*", 0x41020021, 0xfff307ff, TRAP|WR_d|RD_a, 0, MT32 }, 1827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc0", "d,+t", 0x41000000, 0xffe007ff, TRAP|LCD|WR_d|RD_C0, 0, MT32 }, 1828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc0", "d,+T", 0x41000000, 0xffe007f8, TRAP|LCD|WR_d|RD_C0, 0, MT32 }, 1829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc0", "d,E,H", 0x41000000, 0xffe007f8, TRAP|LCD|WR_d|RD_C0, 0, MT32 }, 1830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc1", "d,T", 0x41000022, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_S, 0, MT32 }, 1831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc1", "d,E", 0x41000022, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_S, 0, MT32 }, 1832409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc2", "d,E", 0x41000024, 0xffe007ff, TRAP|LCD|WR_d|RD_C2, 0, MT32 }, 1833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftdsp", "d", 0x41100021, 0xffff07ff, TRAP|WR_d, 0, MT32 }, 1834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftgpr", "d,t", 0x41000020, 0xffe007ff, TRAP|WR_d|RD_t, 0, MT32 }, 1835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthc1", "d,T", 0x41000032, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_D, 0, MT32 }, 1836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthc1", "d,E", 0x41000032, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_D, 0, MT32 }, 1837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthc2", "d,E", 0x41000034, 0xffe007ff, TRAP|LCD|WR_d|RD_C2, 0, MT32 }, 1838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthi", "d", 0x41010021, 0xffff07ff, TRAP|WR_d|RD_a, 0, MT32 }, 1839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthi", "d,*", 0x41010021, 0xfff307ff, TRAP|WR_d|RD_a, 0, MT32 }, 1840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftlo", "d", 0x41000021, 0xffff07ff, TRAP|WR_d|RD_a, 0, MT32 }, 1841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftlo", "d,*", 0x41000021, 0xfff307ff, TRAP|WR_d|RD_a, 0, MT32 }, 1842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftr", "d,t,!,H,$", 0x41000000, 0xffe007c8, TRAP|WR_d, 0, MT32 }, 1843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc0", "t,G", 0x40000000, 0xffe007ff, LCD|WR_t|RD_C0, 0, I1 }, 1844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc0", "t,+D", 0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, 0, I32 }, 1845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc0", "t,G,H", 0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, 0, I32 }, 1846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc1", "t,S", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, 0, I1 }, 1847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc1", "t,G", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, 0, I1 }, 1848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc1", "t,S", 0x44600000, 0xffe007ff, LCD|WR_t|RD_S|FP_D, 0, I33 }, 1849409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc1", "t,G", 0x44600000, 0xffe007ff, LCD|WR_t|RD_S|FP_D, 0, I33 }, 1850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mfc2 is at the bottom of the table. */ 1851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mfhc2 is at the bottom of the table. */ 1852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mfc3 is at the bottom of the table. */ 1853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfdr", "t,G", 0x7000003d, 0xffe007ff, LCD|WR_t|RD_C0, 0, N5 }, 1854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhi", "d", 0x00000010, 0xffff07ff, WR_d|RD_HI, 0, I1 }, 1855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhi", "d,9", 0x00000010, 0xff9f07ff, WR_d|RD_HI, 0, D32 }, 1856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mflo", "d", 0x00000012, 0xffff07ff, WR_d|RD_LO, 0, I1 }, 1857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mflo", "d,9", 0x00000012, 0xff9f07ff, WR_d|RD_LO, 0, D32 }, 1858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mflhxu", "d", 0x00000052, 0xffff07ff, WR_d|MOD_HILO, 0, SMT }, 1859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.ob", "X,Y,Q", 0x78000006, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 1860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.ob", "D,S,T", 0x4ac00006, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.ob", "D,S,T[e]", 0x48000006, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 1862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.ob", "D,S,k", 0x4bc00006, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.qh", "X,Y,Q", 0x78200006, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 1864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mov.d", "D,S", 0x46200006, 0xffff003f, WR_D|RD_S|FP_D, 0, I1 }, 1865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mov.s", "D,S", 0x46000006, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, 1866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mov.ps", "D,S", 0x46c00006, 0xffff003f, WR_D|RD_S|FP_D, 0, I5|I33 }, 1867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf", "d,s,N", 0x00000001, 0xfc0307ff, WR_d|RD_s|RD_CC|FP_S|FP_D, 0, I4|I32 }, 1868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.d", "D,S,N", 0x46200011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, I4|I32 }, 1869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.l", "D,S,N", 0x46a00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, MX|SB1 }, 1870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.l", "X,Y,N", 0x46a00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, MX|SB1 }, 1871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.s", "D,S,N", 0x46000011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S, 0, I4|I32 }, 1872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.ps", "D,S,N", 0x46c00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, I5|I33 }, 1873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn", "d,v,t", 0x0000000b, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I4|I32 }, 1874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ffc", "d,v", 0x0000000b, 0xfc1f07ff, WR_d|RD_s, 0, L1 }, 1875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.d", "D,S,t", 0x46200013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, I4|I32 }, 1876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.l", "D,S,t", 0x46a00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, MX|SB1 }, 1877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.l", "X,Y,t", 0x46a00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, MX|SB1 }, 1878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.s", "D,S,t", 0x46000013, 0xffe0003f, WR_D|RD_S|RD_t|FP_S, 0, I4|I32 }, 1879409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.ps", "D,S,t", 0x46c00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, I5|I33 }, 1880409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt", "d,s,N", 0x00010001, 0xfc0307ff, WR_d|RD_s|RD_CC|FP_S|FP_D, 0, I4|I32 }, 1881409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.d", "D,S,N", 0x46210011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, I4|I32 }, 1882409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.l", "D,S,N", 0x46a10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, MX|SB1 }, 1883409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.l", "X,Y,N", 0x46a10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, MX|SB1 }, 1884409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.s", "D,S,N", 0x46010011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S, 0, I4|I32 }, 1885409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.ps", "D,S,N", 0x46c10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, I5|I33 }, 1886409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz", "d,v,t", 0x0000000a, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I4|I32 }, 1887409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ffs", "d,v", 0x0000000a, 0xfc1f07ff, WR_d|RD_s, 0, L1 }, 1888409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.d", "D,S,t", 0x46200012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, I4|I32 }, 1889409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.l", "D,S,t", 0x46a00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, MX|SB1 }, 1890409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.l", "X,Y,t", 0x46a00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, MX|SB1 }, 1891409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.s", "D,S,t", 0x46000012, 0xffe0003f, WR_D|RD_S|RD_t|FP_S, 0, I4|I32 }, 1892409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.ps", "D,S,t", 0x46c00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, I5|I33 }, 1893409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msac", "d,s,t", 0x000001d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1894409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msacu", "d,s,t", 0x000001d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1895409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msachi", "d,s,t", 0x000003d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1896409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msachiu", "d,s,t", 0x000003d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1897409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* move is at the top of the table. */ 1898409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msgn.qh", "X,Y,Q", 0x78200000, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 1899409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub.d", "D,R,S,T", 0x4c000029, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4|I33 }, 1900409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub.s", "D,R,S,T", 0x4c000028, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0, I4|I33 }, 1901409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub.ps", "D,R,S,T", 0x4c00002e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5|I33 }, 1902409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub", "s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, 1903409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub", "s,t", 0x70000004, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, 1904409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub", "7,s,t", 0x70000004, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 1905409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msubu", "s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, 1906409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msubu", "s,t", 0x70000005, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, 1907409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msubu", "7,s,t", 0x70000005, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 1908409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtpc", "t,P", 0x4080c801, 0xffe0ffc1, COD|RD_t|WR_C0, 0, M1|N5 }, 1909409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtps", "t,P", 0x4080c800, 0xffe0ffc1, COD|RD_t|WR_C0, 0, M1|N5 }, 1910409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc0", "t,G", 0x40800000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC, 0, I1 }, 1911409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc0", "t,+D", 0x40800000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, 0, I32 }, 1912409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc0", "t,G,H", 0x40800000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, 0, I32 }, 1913409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc1", "t,S", 0x44800000, 0xffe007ff, COD|RD_t|WR_S|FP_S, 0, I1 }, 1914409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc1", "t,G", 0x44800000, 0xffe007ff, COD|RD_t|WR_S|FP_S, 0, I1 }, 1915409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc1", "t,S", 0x44e00000, 0xffe007ff, COD|RD_t|WR_S|FP_D, 0, I33 }, 1916409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc1", "t,G", 0x44e00000, 0xffe007ff, COD|RD_t|WR_S|FP_D, 0, I33 }, 1917409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mtc2 is at the bottom of the table. */ 1918409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mthc2 is at the bottom of the table. */ 1919409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mtc3 is at the bottom of the table. */ 1920409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtdr", "t,G", 0x7080003d, 0xffe007ff, COD|RD_t|WR_C0, 0, N5 }, 1921409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthi", "s", 0x00000011, 0xfc1fffff, RD_s|WR_HI, 0, I1 }, 1922409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthi", "s,7", 0x00000011, 0xfc1fe7ff, RD_s|WR_HI, 0, D32 }, 1923409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtlo", "s", 0x00000013, 0xfc1fffff, RD_s|WR_LO, 0, I1 }, 1924409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtlo", "s,7", 0x00000013, 0xfc1fe7ff, RD_s|WR_LO, 0, D32 }, 1925409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtlhx", "s", 0x00000053, 0xfc1fffff, RD_s|MOD_HILO, 0, SMT }, 1926409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc0", "t,G", 0x41800000, 0xffe007ff, TRAP|COD|RD_t|WR_C0|WR_CC, 0, MT32 }, 1927409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc0", "t,+D", 0x41800000, 0xffe007f8, TRAP|COD|RD_t|WR_C0|WR_CC, 0, MT32 }, 1928409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc0", "t,G,H", 0x41800000, 0xffe007f8, TRAP|COD|RD_t|WR_C0|WR_CC, 0, MT32 }, 1929409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc1", "t,S", 0x41800022, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_S, 0, MT32 }, 1930409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc1", "t,G", 0x41800022, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_S, 0, MT32 }, 1931409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc2", "t,g", 0x41800024, 0xffe007ff, TRAP|COD|RD_t|WR_C2|WR_CC, 0, MT32 }, 1932409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttacx", "t", 0x41801021, 0xffe0ffff, TRAP|WR_a|RD_t, 0, MT32 }, 1933409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttacx", "t,&", 0x41801021, 0xffe09fff, TRAP|WR_a|RD_t, 0, MT32 }, 1934409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttdsp", "t", 0x41808021, 0xffe0ffff, TRAP|RD_t, 0, MT32 }, 1935409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttgpr", "t,d", 0x41800020, 0xffe007ff, TRAP|WR_d|RD_t, 0, MT32 }, 1936409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthc1", "t,S", 0x41800032, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_D, 0, MT32 }, 1937409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthc1", "t,G", 0x41800032, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_D, 0, MT32 }, 1938409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthc2", "t,g", 0x41800034, 0xffe007ff, TRAP|COD|RD_t|WR_C2|WR_CC, 0, MT32 }, 1939409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthi", "t", 0x41800821, 0xffe0ffff, TRAP|WR_a|RD_t, 0, MT32 }, 1940409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthi", "t,&", 0x41800821, 0xffe09fff, TRAP|WR_a|RD_t, 0, MT32 }, 1941409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttlo", "t", 0x41800021, 0xffe0ffff, TRAP|WR_a|RD_t, 0, MT32 }, 1942409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttlo", "t,&", 0x41800021, 0xffe09fff, TRAP|WR_a|RD_t, 0, MT32 }, 1943409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttr", "t,d,!,H,$", 0x41800000, 0xffe007c8, TRAP|RD_t, 0, MT32 }, 1944409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.d", "D,V,T", 0x46200002, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I1 }, 1945409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.s", "D,V,T", 0x46000002, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, I1 }, 1946409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ob", "X,Y,Q", 0x78000030, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 1947409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ob", "D,S,T", 0x4ac00030, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1948409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ob", "D,S,T[e]", 0x48000030, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 1949409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ob", "D,S,k", 0x4bc00030, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 1950409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ps", "D,V,T", 0x46c00002, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, 1951409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.qh", "X,Y,Q", 0x78200030, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 1952409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul", "d,v,t", 0x70000002, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, I32|P3|N55}, 1953409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul", "d,s,t", 0x00000058, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N54 }, 1954409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul", "d,v,t", 0, (int) M_MUL, INSN_MACRO, 0, I1 }, 1955409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul", "d,v,I", 0, (int) M_MUL_I, INSN_MACRO, 0, I1 }, 1956409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.ob", "Y,Q", 0x78000033, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, 1957409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.ob", "S,T", 0x4ac00033, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1958409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.ob", "S,T[e]", 0x48000033, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1959409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.ob", "S,k", 0x4bc00033, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1960409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.qh", "Y,Q", 0x78200033, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, 1961409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulhi", "d,s,t", 0x00000258, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1962409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulhiu", "d,s,t", 0x00000259, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1963409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.ob", "Y,Q", 0x78000433, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, 1964409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.ob", "S,T", 0x4ac00433, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1965409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.ob", "S,T[e]", 0x48000433, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1966409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.ob", "S,k", 0x4bc00433, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1967409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.qh", "Y,Q", 0x78200433, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, 1968409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulo", "d,v,t", 0, (int) M_MULO, INSN_MACRO, 0, I1 }, 1969409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulo", "d,v,I", 0, (int) M_MULO_I, INSN_MACRO, 0, I1 }, 1970409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulou", "d,v,t", 0, (int) M_MULOU, INSN_MACRO, 0, I1 }, 1971409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulou", "d,v,I", 0, (int) M_MULOU_I, INSN_MACRO, 0, I1 }, 1972409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulr.ps", "D,S,T", 0x46c0001a, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, M3D }, 1973409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls", "d,s,t", 0x000000d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1974409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsu", "d,s,t", 0x000000d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1975409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulshi", "d,s,t", 0x000002d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1976409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulshiu", "d,s,t", 0x000002d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1977409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.ob", "Y,Q", 0x78000032, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, 1978409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.ob", "S,T", 0x4ac00032, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1979409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.ob", "S,T[e]", 0x48000032, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1980409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.ob", "S,k", 0x4bc00032, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1981409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.qh", "Y,Q", 0x78200032, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, 1982409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.ob", "Y,Q", 0x78000432, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, 1983409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.ob", "S,T", 0x4ac00432, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1984409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.ob", "S,T[e]", 0x48000432, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1985409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.ob", "S,k", 0x4bc00432, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, 1986409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.qh", "Y,Q", 0x78200432, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, 1987409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mult", "s,t", 0x00000018, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, I1 }, 1988409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mult", "7,s,t", 0x00000018, 0xfc00e7ff, WR_a|RD_s|RD_t, 0, D33 }, 1989409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mult", "d,s,t", 0x00000018, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0, G1 }, 1990409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"multp", "s,t", 0x00000459, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, SMT }, 1991409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"multu", "s,t", 0x00000019, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, I1 }, 1992409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"multu", "7,s,t", 0x00000019, 0xfc00e7ff, WR_a|RD_s|RD_t, 0, D33 }, 1993409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"multu", "d,s,t", 0x00000019, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0, G1 }, 1994409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulu", "d,s,t", 0x00000059, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, 1995409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"neg", "d,w", 0x00000022, 0xffe007ff, WR_d|RD_t, 0, I1 }, /* sub 0 */ 1996409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"negu", "d,w", 0x00000023, 0xffe007ff, WR_d|RD_t, 0, I1 }, /* subu 0 */ 1997409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"neg.d", "D,V", 0x46200007, 0xffff003f, WR_D|RD_S|FP_D, 0, I1 }, 1998409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"neg.s", "D,V", 0x46000007, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, 1999409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"neg.ps", "D,V", 0x46c00007, 0xffff003f, WR_D|RD_S|FP_D, 0, I5|I33 }, 2000409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmadd.d", "D,R,S,T", 0x4c000031, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4|I33 }, 2001409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmadd.s", "D,R,S,T", 0x4c000030, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0, I4|I33 }, 2002409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmadd.ps","D,R,S,T", 0x4c000036, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5|I33 }, 2003409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmsub.d", "D,R,S,T", 0x4c000039, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4|I33 }, 2004409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmsub.s", "D,R,S,T", 0x4c000038, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0, I4|I33 }, 2005409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmsub.ps","D,R,S,T", 0x4c00003e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5|I33 }, 2006409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* nop is at the start of the table. */ 2007409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor", "d,v,t", 0x00000027, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 2008409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor", "t,r,I", 0, (int) M_NOR_I, INSN_MACRO, 0, I1 }, 2009409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.ob", "X,Y,Q", 0x7800000f, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2010409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.ob", "D,S,T", 0x4ac0000f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2011409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.ob", "D,S,T[e]", 0x4800000f, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 2012409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.ob", "D,S,k", 0x4bc0000f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2013409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.qh", "X,Y,Q", 0x7820000f, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2014409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"not", "d,v", 0x00000027, 0xfc1f07ff, WR_d|RD_s|RD_t, 0, I1 },/*nor d,s,0*/ 2015409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or", "d,v,t", 0x00000025, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 2016409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or", "t,r,I", 0, (int) M_OR_I, INSN_MACRO, 0, I1 }, 2017409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.ob", "X,Y,Q", 0x7800000e, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2018409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.ob", "D,S,T", 0x4ac0000e, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2019409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.ob", "D,S,T[e]", 0x4800000e, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 2020409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.ob", "D,S,k", 0x4bc0000e, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2021409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.qh", "X,Y,Q", 0x7820000e, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2022409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ori", "t,r,i", 0x34000000, 0xfc000000, WR_t|RD_s, 0, I1 }, 2023409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pabsdiff.ob", "X,Y,Q",0x78000009, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, SB1 }, 2024409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pabsdiffc.ob", "Y,Q", 0x78000035, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, SB1 }, 2025409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pavg.ob", "X,Y,Q", 0x78000008, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, SB1 }, 2026409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.ob", "X,Y,Q", 0x78000002, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2027409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.ob", "D,S,T", 0x4ac00002, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2028409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.ob", "D,S,T[e]",0x48000002, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 2029409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.ob", "D,S,k", 0x4bc00002, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2030409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.qh", "X,Y,Q", 0x78200002, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2031409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.ob", "X,Y,Q", 0x78000003, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2032409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.ob", "D,S,T", 0x4ac00003, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2033409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.ob", "D,S,T[e]",0x48000003, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 2034409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.ob", "D,S,k", 0x4bc00003, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2035409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.qh", "X,Y,Q", 0x78200003, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2036409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pll.ps", "D,V,T", 0x46c0002c, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, 2037409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"plu.ps", "D,V,T", 0x46c0002d, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, 2038409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* pref and prefx are at the start of the table. */ 2039409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pul.ps", "D,V,T", 0x46c0002e, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, 2040409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"puu.ps", "D,V,T", 0x46c0002f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, 2041409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pperm", "s,t", 0x70000481, 0xfc00ffff, MOD_HILO|RD_s|RD_t, 0, SMT }, 2042409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rach.ob", "X", 0x7a00003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX|SB1 }, 2043409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rach.ob", "D", 0x4a00003f, 0xfffff83f, WR_D, 0, N54 }, 2044409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rach.qh", "X", 0x7a20003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX }, 2045409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racl.ob", "X", 0x7800003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX|SB1 }, 2046409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racl.ob", "D", 0x4800003f, 0xfffff83f, WR_D, 0, N54 }, 2047409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racl.qh", "X", 0x7820003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX }, 2048409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racm.ob", "X", 0x7900003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX|SB1 }, 2049409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racm.ob", "D", 0x4900003f, 0xfffff83f, WR_D, 0, N54 }, 2050409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racm.qh", "X", 0x7920003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX }, 2051409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip.d", "D,S", 0x46200015, 0xffff003f, WR_D|RD_S|FP_D, 0, I4|I33 }, 2052409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip.ps","D,S", 0x46c00015, 0xffff003f, WR_D|RD_S|FP_D, 0, SB1 }, 2053409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip.s", "D,S", 0x46000015, 0xffff003f, WR_D|RD_S|FP_S, 0, I4|I33 }, 2054409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip1.d", "D,S", 0x4620001d, 0xffff003f, WR_D|RD_S|FP_D, 0, M3D }, 2055409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip1.ps", "D,S", 0x46c0001d, 0xffff003f, WR_D|RD_S|FP_S, 0, M3D }, 2056409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip1.s", "D,S", 0x4600001d, 0xffff003f, WR_D|RD_S|FP_S, 0, M3D }, 2057409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip2.d", "D,S,T", 0x4620001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, M3D }, 2058409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip2.ps", "D,S,T", 0x46c0001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, M3D }, 2059409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip2.s", "D,S,T", 0x4600001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, M3D }, 2060409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rem", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I1 }, 2061409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rem", "d,v,t", 0, (int) M_REM_3, INSN_MACRO, 0, I1 }, 2062409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rem", "d,v,I", 0, (int) M_REM_3I, INSN_MACRO, 0, I1 }, 2063409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"remu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I1 }, 2064409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"remu", "d,v,t", 0, (int) M_REMU_3, INSN_MACRO, 0, I1 }, 2065409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"remu", "d,v,I", 0, (int) M_REMU_3I, INSN_MACRO, 0, I1 }, 2066409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rdhwr", "t,K", 0x7c00003b, 0xffe007ff, WR_t, 0, I33 }, 2067409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rdpgpr", "d,w", 0x41400000, 0xffe007ff, WR_d, 0, I33 }, 2068409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rfe", "", 0x42000010, 0xffffffff, 0, 0, I1|T3 }, 2069409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rnas.qh", "X,Q", 0x78200025, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, 2070409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rnau.ob", "X,Q", 0x78000021, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX|SB1 }, 2071409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rnau.qh", "X,Q", 0x78200021, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, 2072409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rnes.qh", "X,Q", 0x78200026, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, 2073409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rneu.ob", "X,Q", 0x78000022, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX|SB1 }, 2074409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rneu.qh", "X,Q", 0x78200022, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, 2075409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rol", "d,v,t", 0, (int) M_ROL, INSN_MACRO, 0, I1 }, 2076409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rol", "d,v,I", 0, (int) M_ROL_I, INSN_MACRO, 0, I1 }, 2077409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ror", "d,v,t", 0, (int) M_ROR, INSN_MACRO, 0, I1 }, 2078409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ror", "d,v,I", 0, (int) M_ROR_I, INSN_MACRO, 0, I1 }, 2079409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ror", "d,w,<", 0x00200002, 0xffe0003f, WR_d|RD_t, 0, N5|I33|SMT }, 2080409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rorv", "d,t,s", 0x00000046, 0xfc0007ff, RD_t|RD_s|WR_d, 0, N5|I33|SMT }, 2081409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotl", "d,v,t", 0, (int) M_ROL, INSN_MACRO, 0, I33|SMT }, 2082409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotl", "d,v,I", 0, (int) M_ROL_I, INSN_MACRO, 0, I33|SMT }, 2083409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotr", "d,v,t", 0, (int) M_ROR, INSN_MACRO, 0, I33|SMT }, 2084409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotr", "d,v,I", 0, (int) M_ROR_I, INSN_MACRO, 0, I33|SMT }, 2085409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotrv", "d,t,s", 0x00000046, 0xfc0007ff, RD_t|RD_s|WR_d, 0, I33|SMT }, 2086409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"round.l.d", "D,S", 0x46200008, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, 2087409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"round.l.s", "D,S", 0x46000008, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, 2088409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"round.w.d", "D,S", 0x4620000c, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, 2089409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"round.w.s", "D,S", 0x4600000c, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, 2090409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt.d", "D,S", 0x46200016, 0xffff003f, WR_D|RD_S|FP_D, 0, I4|I33 }, 2091409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt.ps","D,S", 0x46c00016, 0xffff003f, WR_D|RD_S|FP_D, 0, SB1 }, 2092409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt.s", "D,S", 0x46000016, 0xffff003f, WR_D|RD_S|FP_S, 0, I4|I33 }, 2093409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt1.d", "D,S", 0x4620001e, 0xffff003f, WR_D|RD_S|FP_D, 0, M3D }, 2094409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt1.ps", "D,S", 0x46c0001e, 0xffff003f, WR_D|RD_S|FP_S, 0, M3D }, 2095409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt1.s", "D,S", 0x4600001e, 0xffff003f, WR_D|RD_S|FP_S, 0, M3D }, 2096409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt2.d", "D,S,T", 0x4620001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, M3D }, 2097409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt2.ps", "D,S,T", 0x46c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, M3D }, 2098409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt2.s", "D,S,T", 0x4600001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, M3D }, 2099409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rzs.qh", "X,Q", 0x78200024, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, 2100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rzu.ob", "X,Q", 0x78000020, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX|SB1 }, 2101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rzu.ob", "D,k", 0x4bc00020, 0xffe0f83f, WR_D|RD_S|RD_T, 0, N54 }, 2102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rzu.qh", "X,Q", 0x78200020, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, 2103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sb", "t,o(b)", 0xa0000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, 2104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sb", "t,A(b)", 0, (int) M_SB_AB, INSN_MACRO, 0, I1 }, 2105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sc", "t,o(b)", 0xe0000000, 0xfc000000, SM|RD_t|WR_t|RD_b, 0, I2 }, 2106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sc", "t,A(b)", 0, (int) M_SC_AB, INSN_MACRO, 0, I2 }, 2107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"scd", "t,o(b)", 0xf0000000, 0xfc000000, SM|RD_t|WR_t|RD_b, 0, I3 }, 2108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"scd", "t,A(b)", 0, (int) M_SCD_AB, INSN_MACRO, 0, I3 }, 2109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sd", "t,o(b)", 0xfc000000, 0xfc000000, SM|RD_t|RD_b, 0, I3 }, 2110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sd", "t,o(b)", 0, (int) M_SD_OB, INSN_MACRO, 0, I1 }, 2111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sd", "t,A(b)", 0, (int) M_SD_AB, INSN_MACRO, 0, I1 }, 2112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp", "", 0x0000000e, 0xffffffff, TRAP, 0, G2 }, 2113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp", "c", 0x0000000e, 0xfc00ffff, TRAP, 0, G2 }, 2114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp", "c,q", 0x0000000e, 0xfc00003f, TRAP, 0, G2 }, 2115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp", "", 0x7000003f, 0xffffffff, TRAP, 0, I32 }, 2116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp", "B", 0x7000003f, 0xfc00003f, TRAP, 0, I32 }, 2117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc1", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, 0, I2 }, 2118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc1", "E,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, 0, I2 }, 2119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc1", "T,A(b)", 0, (int) M_SDC1_AB, INSN_MACRO, 0, I2 }, 2120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc1", "E,A(b)", 0, (int) M_SDC1_AB, INSN_MACRO, 0, I2 }, 2121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc2", "E,o(b)", 0xf8000000, 0xfc000000, SM|RD_C2|RD_b, 0, I2 }, 2122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc2", "E,A(b)", 0, (int) M_SDC2_AB, INSN_MACRO, 0, I2 }, 2123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc3", "E,o(b)", 0xfc000000, 0xfc000000, SM|RD_C3|RD_b, 0, I2 }, 2124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc3", "E,A(b)", 0, (int) M_SDC3_AB, INSN_MACRO, 0, I2 }, 2125409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.d", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, 0, I2 }, 2126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.d", "T,o(b)", 0, (int) M_S_DOB, INSN_MACRO, 0, I1 }, 2127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.d", "T,A(b)", 0, (int) M_S_DAB, INSN_MACRO, 0, I1 }, 2128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdl", "t,o(b)", 0xb0000000, 0xfc000000, SM|RD_t|RD_b, 0, I3 }, 2129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdl", "t,A(b)", 0, (int) M_SDL_AB, INSN_MACRO, 0, I3 }, 2130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdr", "t,o(b)", 0xb4000000, 0xfc000000, SM|RD_t|RD_b, 0, I3 }, 2131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdr", "t,A(b)", 0, (int) M_SDR_AB, INSN_MACRO, 0, I3 }, 2132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdxc1", "S,t(b)", 0x4c000009, 0xfc0007ff, SM|RD_S|RD_t|RD_b|FP_D, 0, I4|I33 }, 2133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"seb", "d,w", 0x7c000420, 0xffe007ff, WR_d|RD_t, 0, I33 }, 2134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"seh", "d,w", 0x7c000620, 0xffe007ff, WR_d|RD_t, 0, I33 }, 2135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"selsl", "d,v,t", 0x00000005, 0xfc0007ff, WR_d|RD_s|RD_t, 0, L1 }, 2136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"selsr", "d,v,t", 0x00000001, 0xfc0007ff, WR_d|RD_s|RD_t, 0, L1 }, 2137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"seq", "d,v,t", 0, (int) M_SEQ, INSN_MACRO, 0, I1 }, 2138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"seq", "d,v,I", 0, (int) M_SEQ_I, INSN_MACRO, 0, I1 }, 2139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sge", "d,v,t", 0, (int) M_SGE, INSN_MACRO, 0, I1 }, 2140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sge", "d,v,I", 0, (int) M_SGE_I, INSN_MACRO, 0, I1 }, 2141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgeu", "d,v,t", 0, (int) M_SGEU, INSN_MACRO, 0, I1 }, 2142409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgeu", "d,v,I", 0, (int) M_SGEU_I, INSN_MACRO, 0, I1 }, 2143409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgt", "d,v,t", 0, (int) M_SGT, INSN_MACRO, 0, I1 }, 2144409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgt", "d,v,I", 0, (int) M_SGT_I, INSN_MACRO, 0, I1 }, 2145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgtu", "d,v,t", 0, (int) M_SGTU, INSN_MACRO, 0, I1 }, 2146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgtu", "d,v,I", 0, (int) M_SGTU_I, INSN_MACRO, 0, I1 }, 2147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sh", "t,o(b)", 0xa4000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, 2148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sh", "t,A(b)", 0, (int) M_SH_AB, INSN_MACRO, 0, I1 }, 2149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.bfla.qh", "X,Y,Z", 0x7a20001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixh.ob", "X,Y,Z", 0x7980001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixh.ob", "D,S,T", 0x4980001f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixh.qh", "X,Y,Z", 0x7820001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixl.ob", "X,Y,Z", 0x79c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixl.ob", "D,S,T", 0x49c0001f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixl.qh", "X,Y,Z", 0x78a0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.pach.ob", "X,Y,Z", 0x7900001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.pach.ob", "D,S,T", 0x4900001f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.pach.qh", "X,Y,Z", 0x7920001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.pacl.ob", "D,S,T", 0x4940001f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.repa.qh", "X,Y,Z", 0x7b20001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.repb.qh", "X,Y,Z", 0x7ba0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.upsl.ob", "X,Y,Z", 0x78c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sle", "d,v,t", 0, (int) M_SLE, INSN_MACRO, 0, I1 }, 2164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sle", "d,v,I", 0, (int) M_SLE_I, INSN_MACRO, 0, I1 }, 2165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sleu", "d,v,t", 0, (int) M_SLEU, INSN_MACRO, 0, I1 }, 2166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sleu", "d,v,I", 0, (int) M_SLEU_I, INSN_MACRO, 0, I1 }, 2167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sllv", "d,t,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, 2168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll", "d,w,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, /* sllv */ 2169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll", "d,w,<", 0x00000000, 0xffe0003f, WR_d|RD_t, 0, I1 }, 2170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll.ob", "X,Y,Q", 0x78000010, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll.ob", "D,S,T[e]", 0x48000010, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 2172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll.ob", "D,S,k", 0x4bc00010, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll.qh", "X,Y,Q", 0x78200010, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"slt", "d,v,t", 0x0000002a, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 2175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"slt", "d,v,I", 0, (int) M_SLT_I, INSN_MACRO, 0, I1 }, 2176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"slti", "t,r,j", 0x28000000, 0xfc000000, WR_t|RD_s, 0, I1 }, 2177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sltiu", "t,r,j", 0x2c000000, 0xfc000000, WR_t|RD_s, 0, I1 }, 2178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sltu", "d,v,t", 0x0000002b, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 2179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sltu", "d,v,I", 0, (int) M_SLTU_I, INSN_MACRO, 0, I1 }, 2180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sne", "d,v,t", 0, (int) M_SNE, INSN_MACRO, 0, I1 }, 2181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sne", "d,v,I", 0, (int) M_SNE_I, INSN_MACRO, 0, I1 }, 2182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sqrt.d", "D,S", 0x46200004, 0xffff003f, WR_D|RD_S|FP_D, 0, I2 }, 2183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sqrt.s", "D,S", 0x46000004, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, 2184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sqrt.ps", "D,S", 0x46c00004, 0xffff003f, WR_D|RD_S|FP_D, 0, SB1 }, 2185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srav", "d,t,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, 2186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sra", "d,w,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, /* srav */ 2187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sra", "d,w,<", 0x00000003, 0xffe0003f, WR_d|RD_t, 0, I1 }, 2188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sra.qh", "X,Y,Q", 0x78200013, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srlv", "d,t,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, 2190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl", "d,w,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, /* srlv */ 2191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl", "d,w,<", 0x00000002, 0xffe0003f, WR_d|RD_t, 0, I1 }, 2192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl.ob", "X,Y,Q", 0x78000012, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl.ob", "D,S,T[e]", 0x48000012, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 2194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl.ob", "D,S,k", 0x4bc00012, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl.qh", "X,Y,Q", 0x78200012, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* ssnop is at the start of the table. */ 2197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"standby", "", 0x42000021, 0xffffffff, 0, 0, V1 }, 2198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub", "d,v,t", 0x00000022, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 2199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub", "d,v,I", 0, (int) M_SUB_I, INSN_MACRO, 0, I1 }, 2200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.d", "D,V,T", 0x46200001, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I1 }, 2201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.s", "D,V,T", 0x46000001, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, I1 }, 2202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ob", "X,Y,Q", 0x7800000a, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ob", "D,S,T", 0x4ac0000a, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ob", "D,S,T[e]", 0x4800000a, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 2205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ob", "D,S,k", 0x4bc0000a, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ps", "D,V,T", 0x46c00001, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, 2207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.qh", "X,Y,Q", 0x7820000a, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"suba.ob", "Y,Q", 0x78000036, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, 2209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"suba.qh", "Y,Q", 0x78200036, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, 2210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subl.ob", "Y,Q", 0x78000436, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, 2211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subl.qh", "Y,Q", 0x78200436, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, 2212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu", "d,v,t", 0x00000023, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 2213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu", "d,v,I", 0, (int) M_SUBU_I, INSN_MACRO, 0, I1 }, 2214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"suspend", "", 0x42000022, 0xffffffff, 0, 0, V1 }, 2215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"suxc1", "S,t(b)", 0x4c00000d, 0xfc0007ff, SM|RD_S|RD_t|RD_b, 0, I5|I33|N55}, 2216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sw", "t,o(b)", 0xac000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, 2217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sw", "t,A(b)", 0, (int) M_SW_AB, INSN_MACRO, 0, I1 }, 2218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc0", "E,o(b)", 0xe0000000, 0xfc000000, SM|RD_C0|RD_b, 0, I1 }, 2219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc0", "E,A(b)", 0, (int) M_SWC0_AB, INSN_MACRO, 0, I1 }, 2220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc1", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, 0, I1 }, 2221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc1", "E,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, 0, I1 }, 2222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc1", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO, 0, I1 }, 2223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc1", "E,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO, 0, I1 }, 2224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.s", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, 0, I1 }, /* swc1 */ 2225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.s", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO, 0, I1 }, 2226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc2", "E,o(b)", 0xe8000000, 0xfc000000, SM|RD_C2|RD_b, 0, I1 }, 2227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc2", "E,A(b)", 0, (int) M_SWC2_AB, INSN_MACRO, 0, I1 }, 2228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc3", "E,o(b)", 0xec000000, 0xfc000000, SM|RD_C3|RD_b, 0, I1 }, 2229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc3", "E,A(b)", 0, (int) M_SWC3_AB, INSN_MACRO, 0, I1 }, 2230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swl", "t,o(b)", 0xa8000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, 2231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swl", "t,A(b)", 0, (int) M_SWL_AB, INSN_MACRO, 0, I1 }, 2232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"scache", "t,o(b)", 0xa8000000, 0xfc000000, RD_t|RD_b, 0, I2 }, /* same */ 2233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"scache", "t,A(b)", 0, (int) M_SWL_AB, INSN_MACRO, 0, I2 }, /* as swl */ 2234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swr", "t,o(b)", 0xb8000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, 2235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swr", "t,A(b)", 0, (int) M_SWR_AB, INSN_MACRO, 0, I1 }, 2236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"invalidate", "t,o(b)",0xb8000000, 0xfc000000, RD_t|RD_b, 0, I2 }, /* same */ 2237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"invalidate", "t,A(b)",0, (int) M_SWR_AB, INSN_MACRO, 0, I2 }, /* as swr */ 2238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swxc1", "S,t(b)", 0x4c000008, 0xfc0007ff, SM|RD_S|RD_t|RD_b|FP_S, 0, I4|I33 }, 2239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sync", "", 0x0000000f, 0xffffffff, INSN_SYNC, 0, I2|G1 }, 2240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sync.p", "", 0x0000040f, 0xffffffff, INSN_SYNC, 0, I2 }, 2241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sync.l", "", 0x0000000f, 0xffffffff, INSN_SYNC, 0, I2 }, 2242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"synci", "o(b)", 0x041f0000, 0xfc1f0000, SM|RD_b, 0, I33 }, 2243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"syscall", "", 0x0000000c, 0xffffffff, TRAP, 0, I1 }, 2244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"syscall", "B", 0x0000000c, 0xfc00003f, TRAP, 0, I1 }, 2245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teqi", "s,j", 0x040c0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, 2246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teq", "s,t", 0x00000034, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, 2247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teq", "s,t,q", 0x00000034, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, 2248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teq", "s,j", 0x040c0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* teqi */ 2249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teq", "s,I", 0, (int) M_TEQ_I, INSN_MACRO, 0, I2 }, 2250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgei", "s,j", 0x04080000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, 2251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tge", "s,t", 0x00000030, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, 2252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tge", "s,t,q", 0x00000030, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, 2253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tge", "s,j", 0x04080000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tgei */ 2254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tge", "s,I", 0, (int) M_TGE_I, INSN_MACRO, 0, I2 }, 2255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeiu", "s,j", 0x04090000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, 2256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeu", "s,t", 0x00000031, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, 2257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeu", "s,t,q", 0x00000031, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, 2258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeu", "s,j", 0x04090000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tgeiu */ 2259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeu", "s,I", 0, (int) M_TGEU_I, INSN_MACRO, 0, I2 }, 2260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlbp", "", 0x42000008, 0xffffffff, INSN_TLB, 0, I1 }, 2261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlbr", "", 0x42000001, 0xffffffff, INSN_TLB, 0, I1 }, 2262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlbwi", "", 0x42000002, 0xffffffff, INSN_TLB, 0, I1 }, 2263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlbwr", "", 0x42000006, 0xffffffff, INSN_TLB, 0, I1 }, 2264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlti", "s,j", 0x040a0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, 2265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlt", "s,t", 0x00000032, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, 2266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlt", "s,t,q", 0x00000032, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, 2267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlt", "s,j", 0x040a0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tlti */ 2268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlt", "s,I", 0, (int) M_TLT_I, INSN_MACRO, 0, I2 }, 2269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltiu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, 2270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltu", "s,t", 0x00000033, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, 2271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltu", "s,t,q", 0x00000033, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, 2272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tltiu */ 2273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltu", "s,I", 0, (int) M_TLTU_I, INSN_MACRO, 0, I2 }, 2274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tnei", "s,j", 0x040e0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, 2275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tne", "s,t", 0x00000036, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, 2276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tne", "s,t,q", 0x00000036, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, 2277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tne", "s,j", 0x040e0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tnei */ 2278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tne", "s,I", 0, (int) M_TNE_I, INSN_MACRO, 0, I2 }, 2279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.l.d", "D,S", 0x46200009, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, 2280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.l.s", "D,S", 0x46000009, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, 2281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.d", "D,S", 0x4620000d, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, 2282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.d", "D,S,x", 0x4620000d, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, 2283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.d", "D,S,t", 0, (int) M_TRUNCWD, INSN_MACRO, 0, I1 }, 2284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.s", "D,S", 0x4600000d, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, 2285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.s", "D,S,x", 0x4600000d, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, 2286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.s", "D,S,t", 0, (int) M_TRUNCWS, INSN_MACRO, 0, I1 }, 2287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"uld", "t,o(b)", 0, (int) M_ULD, INSN_MACRO, 0, I3 }, 2288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"uld", "t,A(b)", 0, (int) M_ULD_A, INSN_MACRO, 0, I3 }, 2289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulh", "t,o(b)", 0, (int) M_ULH, INSN_MACRO, 0, I1 }, 2290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulh", "t,A(b)", 0, (int) M_ULH_A, INSN_MACRO, 0, I1 }, 2291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulhu", "t,o(b)", 0, (int) M_ULHU, INSN_MACRO, 0, I1 }, 2292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulhu", "t,A(b)", 0, (int) M_ULHU_A, INSN_MACRO, 0, I1 }, 2293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulw", "t,o(b)", 0, (int) M_ULW, INSN_MACRO, 0, I1 }, 2294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulw", "t,A(b)", 0, (int) M_ULW_A, INSN_MACRO, 0, I1 }, 2295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"usd", "t,o(b)", 0, (int) M_USD, INSN_MACRO, 0, I3 }, 2296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"usd", "t,A(b)", 0, (int) M_USD_A, INSN_MACRO, 0, I3 }, 2297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ush", "t,o(b)", 0, (int) M_USH, INSN_MACRO, 0, I1 }, 2298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ush", "t,A(b)", 0, (int) M_USH_A, INSN_MACRO, 0, I1 }, 2299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"usw", "t,o(b)", 0, (int) M_USW, INSN_MACRO, 0, I1 }, 2300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"usw", "t,A(b)", 0, (int) M_USW_A, INSN_MACRO, 0, I1 }, 2301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wach.ob", "Y", 0x7a00003e, 0xffff07ff, RD_S|FP_D, WR_MACC, MX|SB1 }, 2302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wach.ob", "S", 0x4a00003e, 0xffff07ff, RD_S, 0, N54 }, 2303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wach.qh", "Y", 0x7a20003e, 0xffff07ff, RD_S|FP_D, WR_MACC, MX }, 2304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wacl.ob", "Y,Z", 0x7800003e, 0xffe007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, 2305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wacl.ob", "S,T", 0x4800003e, 0xffe007ff, RD_S|RD_T, 0, N54 }, 2306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wacl.qh", "Y,Z", 0x7820003e, 0xffe007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, 2307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wait", "", 0x42000020, 0xffffffff, TRAP, 0, I3|I32 }, 2308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wait", "J", 0x42000020, 0xfe00003f, TRAP, 0, I32|N55 }, 2309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"waiti", "", 0x42000020, 0xffffffff, TRAP, 0, L1 }, 2310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wrpgpr", "d,w", 0x41c00000, 0xffe007ff, RD_t, 0, I33 }, 2311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wsbh", "d,w", 0x7c0000a0, 0xffe007ff, WR_d|RD_t, 0, I33 }, 2312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor", "d,v,t", 0x00000026, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, 2313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor", "t,r,I", 0, (int) M_XOR_I, INSN_MACRO, 0, I1 }, 2314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.ob", "X,Y,Q", 0x7800000d, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, 2315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.ob", "D,S,T", 0x4ac0000d, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.ob", "D,S,T[e]", 0x4800000d, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, 2317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.ob", "D,S,k", 0x4bc0000d, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, 2318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.qh", "X,Y,Q", 0x7820000d, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, 2319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xori", "t,r,i", 0x38000000, 0xfc000000, WR_t|RD_s, 0, I1 }, 2320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"yield", "s", 0x7c000009, 0xfc1fffff, TRAP|RD_s, 0, MT32 }, 2321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"yield", "d,s", 0x7c000009, 0xfc1f07ff, TRAP|WR_d|RD_s, 0, MT32 }, 2322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* User Defined Instruction. */ 2324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi0", "s,t,d,+1",0x70000010, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi0", "s,t,+2", 0x70000010, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi0", "s,+3", 0x70000010, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi0", "+4", 0x70000010, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi1", "s,t,d,+1",0x70000011, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi1", "s,t,+2", 0x70000011, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi1", "s,+3", 0x70000011, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi1", "+4", 0x70000011, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi2", "s,t,d,+1",0x70000012, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi2", "s,t,+2", 0x70000012, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi2", "s,+3", 0x70000012, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi2", "+4", 0x70000012, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi3", "s,t,d,+1",0x70000013, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi3", "s,t,+2", 0x70000013, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi3", "s,+3", 0x70000013, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi3", "+4", 0x70000013, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi4", "s,t,d,+1",0x70000014, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi4", "s,t,+2", 0x70000014, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi4", "s,+3", 0x70000014, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi4", "+4", 0x70000014, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi5", "s,t,d,+1",0x70000015, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi5", "s,t,+2", 0x70000015, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi5", "s,+3", 0x70000015, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi5", "+4", 0x70000015, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi6", "s,t,d,+1",0x70000016, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi6", "s,t,+2", 0x70000016, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi6", "s,+3", 0x70000016, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi6", "+4", 0x70000016, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi7", "s,t,d,+1",0x70000017, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi7", "s,t,+2", 0x70000017, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi7", "s,+3", 0x70000017, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi7", "+4", 0x70000017, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi8", "s,t,d,+1",0x70000018, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi8", "s,t,+2", 0x70000018, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi8", "s,+3", 0x70000018, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi8", "+4", 0x70000018, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi9", "s,t,d,+1",0x70000019, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi9", "s,t,+2", 0x70000019, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi9", "s,+3", 0x70000019, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi9", "+4", 0x70000019, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi10", "s,t,d,+1",0x7000001a, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi10", "s,t,+2", 0x7000001a, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi10", "s,+3", 0x7000001a, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi10", "+4", 0x7000001a, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi11", "s,t,d,+1",0x7000001b, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi11", "s,t,+2", 0x7000001b, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi11", "s,+3", 0x7000001b, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi11", "+4", 0x7000001b, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi12", "s,t,d,+1",0x7000001c, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi12", "s,t,+2", 0x7000001c, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi12", "s,+3", 0x7000001c, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi12", "+4", 0x7000001c, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi13", "s,t,d,+1",0x7000001d, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi13", "s,t,+2", 0x7000001d, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi13", "s,+3", 0x7000001d, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi13", "+4", 0x7000001d, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi14", "s,t,d,+1",0x7000001e, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi14", "s,t,+2", 0x7000001e, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi14", "s,+3", 0x7000001e, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi14", "+4", 0x7000001e, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi15", "s,t,d,+1",0x7000001f, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi15", "s,t,+2", 0x7000001f, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi15", "s,+3", 0x7000001f, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi15", "+4", 0x7000001f, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, 2388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Coprocessor 2 move/branch operations overlap with VR5400 .ob format 2390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instructions so they are here for the latters to take precedence. */ 2391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2f", "p", 0x49000000, 0xffff0000, CBD|RD_CC, 0, I1 }, 2392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2f", "N,p", 0x49000000, 0xffe30000, CBD|RD_CC, 0, I32 }, 2393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2fl", "p", 0x49020000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, 2394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2fl", "N,p", 0x49020000, 0xffe30000, CBL|RD_CC, 0, I32 }, 2395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2t", "p", 0x49010000, 0xffff0000, CBD|RD_CC, 0, I1 }, 2396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2t", "N,p", 0x49010000, 0xffe30000, CBD|RD_CC, 0, I32 }, 2397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2tl", "p", 0x49030000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, 2398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2tl", "N,p", 0x49030000, 0xffe30000, CBL|RD_CC, 0, I32 }, 2399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc2", "t,G", 0x48400000, 0xffe007ff, LCD|WR_t|RD_C2, 0, I1 }, 2400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc2", "t,G", 0x48c00000, 0xffe007ff, COD|RD_t|WR_CC, 0, I1 }, 2401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc2", "t,G", 0x48200000, 0xffe007ff, LCD|WR_t|RD_C2, 0, I3 }, 2402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc2", "t,G,H", 0x48200000, 0xffe007f8, LCD|WR_t|RD_C2, 0, I64 }, 2403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc2", "t,G", 0x48a00000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, 0, I3 }, 2404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc2", "t,G,H", 0x48a00000, 0xffe007f8, COD|RD_t|WR_C2|WR_CC, 0, I64 }, 2405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc2", "t,G", 0x48000000, 0xffe007ff, LCD|WR_t|RD_C2, 0, I1 }, 2406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc2", "t,G,H", 0x48000000, 0xffe007f8, LCD|WR_t|RD_C2, 0, I32 }, 2407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc2", "t,G", 0x48600000, 0xffe007ff, LCD|WR_t|RD_C2, 0, I33 }, 2408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc2", "t,G,H", 0x48600000, 0xffe007f8, LCD|WR_t|RD_C2, 0, I33 }, 2409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc2", "t,i", 0x48600000, 0xffe00000, LCD|WR_t|RD_C2, 0, I33 }, 2410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc2", "t,G", 0x48800000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, 0, I1 }, 2411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc2", "t,G,H", 0x48800000, 0xffe007f8, COD|RD_t|WR_C2|WR_CC, 0, I32 }, 2412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc2", "t,G", 0x48e00000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, 0, I33 }, 2413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc2", "t,G,H", 0x48e00000, 0xffe007f8, COD|RD_t|WR_C2|WR_CC, 0, I33 }, 2414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc2", "t,i", 0x48e00000, 0xffe00000, COD|RD_t|WR_C2|WR_CC, 0, I33 }, 2415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Coprocessor 3 move/branch operations overlap with MIPS IV COP1X 2417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instructions, so they are here for the latters to take precedence. */ 2418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc3f", "p", 0x4d000000, 0xffff0000, CBD|RD_CC, 0, I1 }, 2419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc3fl", "p", 0x4d020000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, 2420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc3t", "p", 0x4d010000, 0xffff0000, CBD|RD_CC, 0, I1 }, 2421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc3tl", "p", 0x4d030000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, 2422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc3", "t,G", 0x4c400000, 0xffe007ff, LCD|WR_t|RD_C3, 0, I1 }, 2423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc3", "t,G", 0x4cc00000, 0xffe007ff, COD|RD_t|WR_CC, 0, I1 }, 2424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc3", "t,G", 0x4c200000, 0xffe007ff, LCD|WR_t|RD_C3, 0, I3 }, 2425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc3", "t,G", 0x4ca00000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC, 0, I3 }, 2426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc3", "t,G", 0x4c000000, 0xffe007ff, LCD|WR_t|RD_C3, 0, I1 }, 2427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc3", "t,G,H", 0x4c000000, 0xffe007f8, LCD|WR_t|RD_C3, 0, I32 }, 2428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc3", "t,G", 0x4c800000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC, 0, I1 }, 2429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc3", "t,G,H", 0x4c800000, 0xffe007f8, COD|RD_t|WR_C3|WR_CC, 0, I32 }, 2430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* No hazard protection on coprocessor instructions--they shouldn't 2432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli change the state of the processor and if they do it's up to the 2433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli user to put in nops as necessary. These are at the end so that the 2434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli disassembler recognizes more specific versions first. */ 2435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c0", "C", 0x42000000, 0xfe000000, 0, 0, I1 }, 2436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c1", "C", 0x46000000, 0xfe000000, 0, 0, I1 }, 2437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c2", "C", 0x4a000000, 0xfe000000, 0, 0, I1 }, 2438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c3", "C", 0x4e000000, 0xfe000000, 0, 0, I1 }, 2439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cop0", "C", 0, (int) M_COP0, INSN_MACRO, 0, I1 }, 2440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cop1", "C", 0, (int) M_COP1, INSN_MACRO, 0, I1 }, 2441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cop2", "C", 0, (int) M_COP2, INSN_MACRO, 0, I1 }, 2442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cop3", "C", 0, (int) M_COP3, INSN_MACRO, 0, I1 }, 2443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Conflicts with the 4650's "mul" instruction. Nobody's using the 2444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4010 any more, so move this insn out of the way. If the object 2445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli format gave us more info, we could do this right. */ 2446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addciu", "t,r,j", 0x70000000, 0xfc000000, WR_t|RD_s, 0, L1 }, 2447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS DSP ASE */ 2448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.ph", "d,t", 0x7c000252, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.pw", "d,t", 0x7c000456, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.qh", "d,t", 0x7c000256, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.w", "d,t", 0x7c000452, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq.ph", "d,s,t", 0x7c000290, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq.pw", "d,s,t", 0x7c000494, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq.qh", "d,s,t", 0x7c000294, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq_s.ph", "d,s,t", 0x7c000390, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq_s.pw", "d,s,t", 0x7c000594, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq_s.qh", "d,s,t", 0x7c000394, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq_s.w", "d,s,t", 0x7c000590, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addsc", "d,s,t", 0x7c000410, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu.ob", "d,s,t", 0x7c000014, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu.qb", "d,s,t", 0x7c000010, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu_s.ob", "d,s,t", 0x7c000114, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu_s.qb", "d,s,t", 0x7c000110, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addwc", "d,s,t", 0x7c000450, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bitrev", "d,t", 0x7c0006d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bposge32", "p", 0x041c0000, 0xffff0000, CBD, 0, D32 }, 2467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bposge64", "p", 0x041d0000, 0xffff0000, CBD, 0, D64 }, 2468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.eq.ph", "s,t", 0x7c000211, 0xfc00ffff, RD_s|RD_t, 0, D32 }, 2469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.eq.pw", "s,t", 0x7c000415, 0xfc00ffff, RD_s|RD_t, 0, D64 }, 2470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.eq.qh", "s,t", 0x7c000215, 0xfc00ffff, RD_s|RD_t, 0, D64 }, 2471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.eq.ob", "d,s,t", 0x7c000115, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.eq.qb", "d,s,t", 0x7c000111, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.le.ob", "d,s,t", 0x7c000195, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.le.qb", "d,s,t", 0x7c000191, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.lt.ob", "d,s,t", 0x7c000155, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.lt.qb", "d,s,t", 0x7c000151, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.le.ph", "s,t", 0x7c000291, 0xfc00ffff, RD_s|RD_t, 0, D32 }, 2478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.le.pw", "s,t", 0x7c000495, 0xfc00ffff, RD_s|RD_t, 0, D64 }, 2479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.le.qh", "s,t", 0x7c000295, 0xfc00ffff, RD_s|RD_t, 0, D64 }, 2480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.lt.ph", "s,t", 0x7c000251, 0xfc00ffff, RD_s|RD_t, 0, D32 }, 2481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.lt.pw", "s,t", 0x7c000455, 0xfc00ffff, RD_s|RD_t, 0, D64 }, 2482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.lt.qh", "s,t", 0x7c000255, 0xfc00ffff, RD_s|RD_t, 0, D64 }, 2483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.eq.ob", "s,t", 0x7c000015, 0xfc00ffff, RD_s|RD_t, 0, D64 }, 2484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.eq.qb", "s,t", 0x7c000011, 0xfc00ffff, RD_s|RD_t, 0, D32 }, 2485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.le.ob", "s,t", 0x7c000095, 0xfc00ffff, RD_s|RD_t, 0, D64 }, 2486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.le.qb", "s,t", 0x7c000091, 0xfc00ffff, RD_s|RD_t, 0, D32 }, 2487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.lt.ob", "s,t", 0x7c000055, 0xfc00ffff, RD_s|RD_t, 0, D64 }, 2488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.lt.qb", "s,t", 0x7c000051, 0xfc00ffff, RD_s|RD_t, 0, D32 }, 2489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextpdp", "t,7,6", 0x7c0002bc, 0xfc00e7ff, WR_t|RD_a|DSP_VOLA, 0, D64 }, 2490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextpdpv", "t,7,s", 0x7c0002fc, 0xfc00e7ff, WR_t|RD_a|RD_s|DSP_VOLA, 0, D64 }, 2491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextp", "t,7,6", 0x7c0000bc, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, 2492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextpv", "t,7,s", 0x7c0000fc, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, 2493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr.l", "t,7,6", 0x7c00043c, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, 2494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_r.l", "t,7,6", 0x7c00053c, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, 2495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_rs.l", "t,7,6", 0x7c0005bc, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, 2496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_rs.w", "t,7,6", 0x7c0001bc, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, 2497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_r.w", "t,7,6", 0x7c00013c, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, 2498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_s.h", "t,7,6", 0x7c0003bc, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, 2499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv.l", "t,7,s", 0x7c00047c, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, 2500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_r.l", "t,7,s", 0x7c00057c, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, 2501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_rs.l", "t,7,s", 0x7c0005fc, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, 2502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_rs.w", "t,7,s", 0x7c0001fc, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, 2503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_r.w", "t,7,s", 0x7c00017c, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, 2504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_s.h", "t,7,s", 0x7c0003fc, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, 2505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv.w", "t,7,s", 0x7c00007c, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, 2506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr.w", "t,7,6", 0x7c00003c, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, 2507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dinsv", "t,s", 0x7c00000d, 0xfc00ffff, WR_t|RD_s, 0, D64 }, 2508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmadd", "7,s,t", 0x7c000674, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmaddu", "7,s,t", 0x7c000774, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmsub", "7,s,t", 0x7c0006f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmsubu", "7,s,t", 0x7c0007f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmthlip", "s,7", 0x7c0007fc, 0xfc1fe7ff, RD_s|MOD_a|DSP_VOLA, 0, D64 }, 2513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaq_sa.l.pw", "7,s,t", 0x7c000334, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaq_sa.l.w", "7,s,t", 0x7c000330, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaq_s.w.ph", "7,s,t", 0x7c000130, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaq_s.w.qh", "7,s,t", 0x7c000134, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpau.h.obl", "7,s,t", 0x7c0000f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpau.h.obr", "7,s,t", 0x7c0001f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpau.h.qbl", "7,s,t", 0x7c0000f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpau.h.qbr", "7,s,t", 0x7c0001f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsq_sa.l.pw", "7,s,t", 0x7c000374, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsq_sa.l.w", "7,s,t", 0x7c000370, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsq_s.w.ph", "7,s,t", 0x7c000170, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsq_s.w.qh", "7,s,t", 0x7c000174, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsu.h.obl", "7,s,t", 0x7c0002f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsu.h.obr", "7,s,t", 0x7c0003f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsu.h.qbl", "7,s,t", 0x7c0002f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsu.h.qbr", "7,s,t", 0x7c0003f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dshilo", "7,:", 0x7c0006bc, 0xfc07e7ff, MOD_a, 0, D64 }, 2530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dshilov", "7,s", 0x7c0006fc, 0xfc1fe7ff, MOD_a|RD_s, 0, D64 }, 2531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extpdp", "t,7,6", 0x7c0002b8, 0xfc00e7ff, WR_t|RD_a|DSP_VOLA, 0, D32 }, 2532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extpdpv", "t,7,s", 0x7c0002f8, 0xfc00e7ff, WR_t|RD_a|RD_s|DSP_VOLA, 0, D32 }, 2533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extp", "t,7,6", 0x7c0000b8, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, 2534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extpv", "t,7,s", 0x7c0000f8, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, 2535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extr_rs.w", "t,7,6", 0x7c0001b8, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, 2536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extr_r.w", "t,7,6", 0x7c000138, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, 2537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extr_s.h", "t,7,6", 0x7c0003b8, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, 2538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extrv_rs.w", "t,7,s", 0x7c0001f8, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, 2539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extrv_r.w", "t,7,s", 0x7c000178, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, 2540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extrv_s.h", "t,7,s", 0x7c0003f8, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, 2541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extrv.w", "t,7,s", 0x7c000078, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, 2542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extr.w", "t,7,6", 0x7c000038, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, 2543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"insv", "t,s", 0x7c00000c, 0xfc00ffff, WR_t|RD_s, 0, D32 }, 2544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lbux", "d,t(b)", 0x7c00018a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b, 0, D32 }, 2545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldx", "d,t(b)", 0x7c00020a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b, 0, D64 }, 2546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lhx", "d,t(b)", 0x7c00010a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b, 0, D32 }, 2547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwx", "d,t(b)", 0x7c00000a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b, 0, D32 }, 2548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.phl", "7,s,t", 0x7c000430, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.phr", "7,s,t", 0x7c0004b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.qhll", "7,s,t", 0x7c000434, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.qhlr", "7,s,t", 0x7c000474, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.qhrl", "7,s,t", 0x7c0004b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.qhrr", "7,s,t", 0x7c0004f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.l.pwl", "7,s,t", 0x7c000734, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.l.pwr", "7,s,t", 0x7c0007b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.phl", "7,s,t", 0x7c000530, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.phr", "7,s,t", 0x7c0005b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.qhll", "7,s,t", 0x7c000534, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.qhlr", "7,s,t", 0x7c000574, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.qhrl", "7,s,t", 0x7c0005b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.qhrr", "7,s,t", 0x7c0005f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"modsub", "d,s,t", 0x7c000490, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthlip", "s,7", 0x7c0007f8, 0xfc1fe7ff, RD_s|MOD_a|DSP_VOLA, 0, D32 }, 2564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleq_s.pw.qhl", "d,s,t", 0x7c000714, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, 2565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleq_s.pw.qhr", "d,s,t", 0x7c000754, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, 2566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleq_s.w.phl", "d,s,t", 0x7c000710, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, 2567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleq_s.w.phr", "d,s,t", 0x7c000750, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, 2568409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleu_s.ph.qbl", "d,s,t", 0x7c000190, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, 2569409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleu_s.ph.qbr", "d,s,t", 0x7c0001d0, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, 2570409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleu_s.qh.obl", "d,s,t", 0x7c000194, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, 2571409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleu_s.qh.obr", "d,s,t", 0x7c0001d4, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, 2572409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_rs.ph", "d,s,t", 0x7c0007d0, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, 2573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_rs.qh", "d,s,t", 0x7c0007d4, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, 2574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsaq_s.l.pw", "7,s,t", 0x7c0003b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2575409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsaq_s.w.ph", "7,s,t", 0x7c0001b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, 2576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsaq_s.w.qh", "7,s,t", 0x7c0001b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, 2577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"packrl.ph", "d,s,t", 0x7c000391, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"packrl.pw", "d,s,t", 0x7c000395, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.ob", "d,s,t", 0x7c0000d5, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.ph", "d,s,t", 0x7c0002d1, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.pw", "d,s,t", 0x7c0004d5, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.qb", "d,s,t", 0x7c0000d1, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.qh", "d,s,t", 0x7c0002d5, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.pw.qhla", "d,t", 0x7c000396, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.pw.qhl", "d,t", 0x7c000316, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.pw.qhra", "d,t", 0x7c0003d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.pw.qhr", "d,t", 0x7c000356, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2588409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.s.l.pwl", "d,t", 0x7c000516, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.s.l.pwr", "d,t", 0x7c000556, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.ph.qbla", "d,t", 0x7c000192, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.ph.qbl", "d,t", 0x7c000112, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.ph.qbra", "d,t", 0x7c0001d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.ph.qbr", "d,t", 0x7c000152, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.pw.qhla", "d,t", 0x7c000196, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.pw.qhl", "d,t", 0x7c000116, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.pw.qhra", "d,t", 0x7c0001d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.pw.qhr", "d,t", 0x7c000156, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.w.phl", "d,t", 0x7c000312, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.w.phr", "d,t", 0x7c000352, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.ph.qbla", "d,t", 0x7c000792, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.ph.qbl", "d,t", 0x7c000712, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.ph.qbra", "d,t", 0x7c0007d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.ph.qbr", "d,t", 0x7c000752, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.qh.obla", "d,t", 0x7c000796, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.qh.obl", "d,t", 0x7c000716, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.qh.obra", "d,t", 0x7c0007d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.qh.obr", "d,t", 0x7c000756, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.ob.qh", "d,s,t", 0x7c000315, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.ph.w", "d,s,t", 0x7c000511, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.pw.l", "d,s,t", 0x7c000715, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.qb.ph", "d,s,t", 0x7c000311, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2612409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.qh.pw", "d,s,t", 0x7c000515, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq_rs.ph.w", "d,s,t", 0x7c000551, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2614409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq_rs.qh.pw", "d,s,t", 0x7c000555, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2615409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrqu_s.ob.qh", "d,s,t", 0x7c0003d5, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2616409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrqu_s.qb.ph", "d,s,t", 0x7c0003d1, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"raddu.l.ob", "d,s", 0x7c000514, 0xfc1f07ff, WR_d|RD_s, 0, D64 }, 2618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"raddu.w.qb", "d,s", 0x7c000510, 0xfc1f07ff, WR_d|RD_s, 0, D32 }, 2619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rddsp", "d", 0x7fff04b8, 0xffff07ff, WR_d, 0, D32 }, 2620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rddsp", "d,'", 0x7c0004b8, 0xffc007ff, WR_d, 0, D32 }, 2621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.ob", "d,5", 0x7c000096, 0xff0007ff, WR_d, 0, D64 }, 2622409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.ph", "d,@", 0x7c000292, 0xfc0007ff, WR_d, 0, D32 }, 2623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.pw", "d,@", 0x7c000496, 0xfc0007ff, WR_d, 0, D64 }, 2624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.qb", "d,5", 0x7c000092, 0xff0007ff, WR_d, 0, D32 }, 2625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.qh", "d,@", 0x7c000296, 0xfc0007ff, WR_d, 0, D64 }, 2626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.ob", "d,t", 0x7c0000d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.ph", "d,t", 0x7c0002d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.pw", "d,t", 0x7c0004d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.qb", "d,t", 0x7c0000d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, 2630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.qh", "d,t", 0x7c0002d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, 2631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shilo", "7,0", 0x7c0006b8, 0xfc0fe7ff, MOD_a, 0, D32 }, 2632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shilov", "7,s", 0x7c0006f8, 0xfc1fe7ff, MOD_a|RD_s, 0, D32 }, 2633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.ob", "d,t,3", 0x7c000017, 0xff0007ff, WR_d|RD_t, 0, D64 }, 2634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.ph", "d,t,4", 0x7c000213, 0xfe0007ff, WR_d|RD_t, 0, D32 }, 2635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.pw", "d,t,6", 0x7c000417, 0xfc0007ff, WR_d|RD_t, 0, D64 }, 2636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.qb", "d,t,3", 0x7c000013, 0xff0007ff, WR_d|RD_t, 0, D32 }, 2637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.qh", "d,t,4", 0x7c000217, 0xfe0007ff, WR_d|RD_t, 0, D64 }, 2638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll_s.ph", "d,t,4", 0x7c000313, 0xfe0007ff, WR_d|RD_t, 0, D32 }, 2639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll_s.pw", "d,t,6", 0x7c000517, 0xfc0007ff, WR_d|RD_t, 0, D64 }, 2640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll_s.qh", "d,t,4", 0x7c000317, 0xfe0007ff, WR_d|RD_t, 0, D64 }, 2641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll_s.w", "d,t,6", 0x7c000513, 0xfc0007ff, WR_d|RD_t, 0, D32 }, 2642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.ob", "d,t,s", 0x7c000097, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.ph", "d,t,s", 0x7c000293, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.pw", "d,t,s", 0x7c000497, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.qb", "d,t,s", 0x7c000093, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.qh", "d,t,s", 0x7c000297, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv_s.ph", "d,t,s", 0x7c000393, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv_s.pw", "d,t,s", 0x7c000597, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv_s.qh", "d,t,s", 0x7c000397, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv_s.w", "d,t,s", 0x7c000593, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra.ph", "d,t,4", 0x7c000253, 0xfe0007ff, WR_d|RD_t, 0, D32 }, 2652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra.pw", "d,t,6", 0x7c000457, 0xfc0007ff, WR_d|RD_t, 0, D64 }, 2653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra.qh", "d,t,4", 0x7c000257, 0xfe0007ff, WR_d|RD_t, 0, D64 }, 2654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.ph", "d,t,4", 0x7c000353, 0xfe0007ff, WR_d|RD_t, 0, D32 }, 2655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.pw", "d,t,6", 0x7c000557, 0xfc0007ff, WR_d|RD_t, 0, D64 }, 2656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.qh", "d,t,4", 0x7c000357, 0xfe0007ff, WR_d|RD_t, 0, D64 }, 2657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.w", "d,t,6", 0x7c000553, 0xfc0007ff, WR_d|RD_t, 0, D32 }, 2658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav.ph", "d,t,s", 0x7c0002d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav.pw", "d,t,s", 0x7c0004d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav.qh", "d,t,s", 0x7c0002d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.ph", "d,t,s", 0x7c0003d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.pw", "d,t,s", 0x7c0005d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.qh", "d,t,s", 0x7c0003d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.w", "d,t,s", 0x7c0005d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrl.ob", "d,t,3", 0x7c000057, 0xff0007ff, WR_d|RD_t, 0, D64 }, 2666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrl.qb", "d,t,3", 0x7c000053, 0xff0007ff, WR_d|RD_t, 0, D32 }, 2667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrlv.ob", "d,t,s", 0x7c0000d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrlv.qb", "d,t,s", 0x7c0000d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq.ph", "d,s,t", 0x7c0002d0, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq.pw", "d,s,t", 0x7c0004d4, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq.qh", "d,s,t", 0x7c0002d4, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq_s.ph", "d,s,t", 0x7c0003d0, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq_s.pw", "d,s,t", 0x7c0005d4, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq_s.qh", "d,s,t", 0x7c0003d4, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq_s.w", "d,s,t", 0x7c0005d0, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu.ob", "d,s,t", 0x7c000054, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu.qb", "d,s,t", 0x7c000050, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu_s.ob", "d,s,t", 0x7c000154, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, 2679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu_s.qb", "d,s,t", 0x7c000150, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, 2680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wrdsp", "s", 0x7c1ffcf8, 0xfc1fffff, RD_s|DSP_VOLA, 0, D32 }, 2681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wrdsp", "s,8", 0x7c0004f8, 0xfc1e07ff, RD_s|DSP_VOLA, 0, D32 }, 2682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS DSP ASE Rev2 */ 2683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.qb", "d,t", 0x7c000052, 0xffe007ff, WR_d|RD_t, 0, D33 }, 2684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu.ph", "d,s,t", 0x7c000210, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu_s.ph", "d,s,t", 0x7c000310, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"adduh.qb", "d,s,t", 0x7c000018, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"adduh_r.qb", "d,s,t", 0x7c000098, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"append", "t,s,h", 0x7c000031, 0xfc0007ff, WR_t|RD_t|RD_s, 0, D33 }, 2689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"balign", "t,s,I", 0, (int) M_BALIGN, INSN_MACRO, 0, D33 }, 2690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"balign", "t,s,2", 0x7c000431, 0xfc00e7ff, WR_t|RD_t|RD_s, 0, D33 }, 2691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgdu.eq.qb", "d,s,t", 0x7c000611, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgdu.lt.qb", "d,s,t", 0x7c000651, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgdu.le.qb", "d,s,t", 0x7c000691, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpa.w.ph", "7,s,t", 0x7c000030, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 2695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dps.w.ph", "7,s,t", 0x7c000070, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 2696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ph", "d,s,t", 0x7c000318, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, 2697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul_s.ph", "d,s,t", 0x7c000398, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, 2698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_rs.w", "d,s,t", 0x7c0005d8, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, 2699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_s.ph", "d,s,t", 0x7c000790, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, 2700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_s.w", "d,s,t", 0x7c000598, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, 2701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsa.w.ph", "7,s,t", 0x7c0000b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 2702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precr.qb.ph", "d,s,t", 0x7c000351, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precr_sra.ph.w", "t,s,h", 0x7c000791, 0xfc0007ff, WR_t|RD_t|RD_s, 0, D33 }, 2704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precr_sra_r.ph.w", "t,s,h", 0x7c0007d1, 0xfc0007ff, WR_t|RD_t|RD_s, 0, D33 }, 2705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"prepend", "t,s,h", 0x7c000071, 0xfc0007ff, WR_t|RD_t|RD_s, 0, D33 }, 2706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra.qb", "d,t,3", 0x7c000113, 0xff0007ff, WR_d|RD_t, 0, D33 }, 2707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.qb", "d,t,3", 0x7c000153, 0xff0007ff, WR_d|RD_t, 0, D33 }, 2708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav.qb", "d,t,s", 0x7c000193, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.qb", "d,t,s", 0x7c0001d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrl.ph", "d,t,4", 0x7c000653, 0xfe0007ff, WR_d|RD_t, 0, D33 }, 2711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrlv.ph", "d,t,s", 0x7c0006d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu.ph", "d,s,t", 0x7c000250, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu_s.ph", "d,s,t", 0x7c000350, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subuh.qb", "d,s,t", 0x7c000058, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subuh_r.qb", "d,s,t", 0x7c0000d8, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addqh.ph", "d,s,t", 0x7c000218, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addqh_r.ph", "d,s,t", 0x7c000298, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addqh.w", "d,s,t", 0x7c000418, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addqh_r.w", "d,s,t", 0x7c000498, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subqh.ph", "d,s,t", 0x7c000258, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subqh_r.ph", "d,s,t", 0x7c0002d8, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subqh.w", "d,s,t", 0x7c000458, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subqh_r.w", "d,s,t", 0x7c0004d8, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, 2724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpax.w.ph", "7,s,t", 0x7c000230, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 2725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsx.w.ph", "7,s,t", 0x7c000270, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 2726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaqx_s.w.ph", "7,s,t", 0x7c000630, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 2727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaqx_sa.w.ph", "7,s,t", 0x7c0006b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 2728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsqx_s.w.ph", "7,s,t", 0x7c000670, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 2729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsqx_sa.w.ph", "7,s,t", 0x7c0006f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, 2730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Move bc0* after mftr and mttr to avoid opcode collision. */ 2731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc0f", "p", 0x41000000, 0xffff0000, CBD|RD_CC, 0, I1 }, 2732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc0fl", "p", 0x41020000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, 2733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc0t", "p", 0x41010000, 0xffff0000, CBD|RD_CC, 0, I1 }, 2734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc0tl", "p", 0x41030000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, 27355aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner/* ST Microelectronics Loongson-2E and -2F. */ 27365aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"mult.g", "d,s,t", 0x7c000018, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27375aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"mult.g", "d,s,t", 0x70000010, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27385aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"multu.g", "d,s,t", 0x7c000019, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27395aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"multu.g", "d,s,t", 0x70000012, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27405aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmult.g", "d,s,t", 0x7c00001c, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27415aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmult.g", "d,s,t", 0x70000011, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27425aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmultu.g", "d,s,t", 0x7c00001d, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27435aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmultu.g", "d,s,t", 0x70000013, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27445aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"div.g", "d,s,t", 0x7c00001a, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27455aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"div.g", "d,s,t", 0x70000014, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27465aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"divu.g", "d,s,t", 0x7c00001b, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27475aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"divu.g", "d,s,t", 0x70000016, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27485aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"ddiv.g", "d,s,t", 0x7c00001e, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27495aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"ddiv.g", "d,s,t", 0x70000015, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27505aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"ddivu.g", "d,s,t", 0x7c00001f, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27515aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"ddivu.g", "d,s,t", 0x70000017, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27525aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"mod.g", "d,s,t", 0x7c000022, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27535aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"mod.g", "d,s,t", 0x7000001c, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27545aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"modu.g", "d,s,t", 0x7c000023, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27555aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"modu.g", "d,s,t", 0x7000001e, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27565aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmod.g", "d,s,t", 0x7c000026, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27575aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmod.g", "d,s,t", 0x7000001d, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 27585aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmodu.g", "d,s,t", 0x7c000027, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2E }, 27595aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmodu.g", "d,s,t", 0x7000001f, 0xfc0007ff, RD_s|RD_t|WR_d, 0, IL2F }, 2760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS_NUM_OPCODES \ 2763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ((sizeof mips_builtin_opcodes) / (sizeof (mips_builtin_opcodes[0]))) 2764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliconst int bfd_mips_num_builtin_opcodes = MIPS_NUM_OPCODES; 2765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* const removed from the following to allow for dynamic extensions to the 2767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli * built-in instruction set. */ 2768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_opcode *mips_opcodes = 2769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (struct mips_opcode *) mips_builtin_opcodes; 2770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliint bfd_mips_num_opcodes = MIPS_NUM_OPCODES; 2771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#undef MIPS_NUM_OPCODES 2772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Mips instructions are at maximum this many bytes long. */ 2774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSNLEN 4 2775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* FIXME: These should be shared with gdb somehow. */ 2778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_cp0sel_name 2780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int cp0reg; 2782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int sel; 2783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char * const name; 2784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The mips16 registers. */ 2787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const unsigned int mips16_to_32_reg_map[] = 2788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 16, 17, 2, 3, 4, 5, 6, 7 2790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define mips16_reg_names(rn) mips_gpr_names[mips16_to_32_reg_map[rn]] 2793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_gpr_names_numeric[32] = 2796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", 2798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", 2799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23", 2800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$24", "$25", "$26", "$27", "$28", "$29", "$30", "$31" 2801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_gpr_names_oldabi[32] = 2804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3", 2806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", 2807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", 2808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "t8", "t9", "k0", "k1", "gp", "sp", "s8", "ra" 2809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_gpr_names_newabi[32] = 2812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3", 2814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "a4", "a5", "a6", "a7", "t0", "t1", "t2", "t3", 2815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", 2816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "t8", "t9", "k0", "k1", "gp", "sp", "s8", "ra" 2817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_fpr_names_numeric[32] = 2820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$f0", "$f1", "$f2", "$f3", "$f4", "$f5", "$f6", "$f7", 2822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$f8", "$f9", "$f10", "$f11", "$f12", "$f13", "$f14", "$f15", 2823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$f16", "$f17", "$f18", "$f19", "$f20", "$f21", "$f22", "$f23", 2824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$f24", "$f25", "$f26", "$f27", "$f28", "$f29", "$f30", "$f31" 2825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_fpr_names_32[32] = 2828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "fv0", "fv0f", "fv1", "fv1f", "ft0", "ft0f", "ft1", "ft1f", 2830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "ft2", "ft2f", "ft3", "ft3f", "fa0", "fa0f", "fa1", "fa1f", 2831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "ft4", "ft4f", "ft5", "ft5f", "fs0", "fs0f", "fs1", "fs1f", 2832409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "fs2", "fs2f", "fs3", "fs3f", "fs4", "fs4f", "fs5", "fs5f" 2833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_fpr_names_n32[32] = 2836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "fv0", "ft14", "fv1", "ft15", "ft0", "ft1", "ft2", "ft3", 2838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "ft4", "ft5", "ft6", "ft7", "fa0", "fa1", "fa2", "fa3", 2839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "fa4", "fa5", "fa6", "fa7", "fs0", "ft8", "fs1", "ft9", 2840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "fs2", "ft10", "fs3", "ft11", "fs4", "ft12", "fs5", "ft13" 2841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_fpr_names_64[32] = 2844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "fv0", "ft12", "fv1", "ft13", "ft0", "ft1", "ft2", "ft3", 2846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "ft4", "ft5", "ft6", "ft7", "fa0", "fa1", "fa2", "fa3", 2847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "fa4", "fa5", "fa6", "fa7", "ft8", "ft9", "ft10", "ft11", 2848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "fs0", "fs1", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7" 2849409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_cp0_names_numeric[32] = 2852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", 2854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", 2855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23", 2856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$24", "$25", "$26", "$27", "$28", "$29", "$30", "$31" 2857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_cp0_names_mips3264[32] = 2860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_index", "c0_random", "c0_entrylo0", "c0_entrylo1", 2862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_context", "c0_pagemask", "c0_wired", "$7", 2863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_badvaddr", "c0_count", "c0_entryhi", "c0_compare", 2864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_status", "c0_cause", "c0_epc", "c0_prid", 2865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_config", "c0_lladdr", "c0_watchlo", "c0_watchhi", 2866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_xcontext", "$21", "$22", "c0_debug", 2867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_depc", "c0_perfcnt", "c0_errctl", "c0_cacheerr", 2868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_taglo", "c0_taghi", "c0_errorepc", "c0_desave", 2869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name mips_cp0sel_names_mips3264[] = 2872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4, 1, "c0_contextconfig" }, 2874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 0, 1, "c0_mvpcontrol" }, 2875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 0, 2, "c0_mvpconf0" }, 2876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 0, 3, "c0_mvpconf1" }, 2877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 1, 1, "c0_vpecontrol" }, 2878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 1, 2, "c0_vpeconf0" }, 2879409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 1, 3, "c0_vpeconf1" }, 2880409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 1, 4, "c0_yqmask" }, 2881409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 1, 5, "c0_vpeschedule" }, 2882409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 1, 6, "c0_vpeschefback" }, 2883409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 2, 1, "c0_tcstatus" }, 2884409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 2, 2, "c0_tcbind" }, 2885409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 2, 3, "c0_tcrestart" }, 2886409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 2, 4, "c0_tchalt" }, 2887409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 2, 5, "c0_tccontext" }, 2888409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 2, 6, "c0_tcschedule" }, 2889409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 2, 7, "c0_tcschefback" }, 2890409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 5, 1, "c0_pagegrain" }, 2891409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 6, 1, "c0_srsconf0" }, 2892409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 6, 2, "c0_srsconf1" }, 2893409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 6, 3, "c0_srsconf2" }, 2894409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 6, 4, "c0_srsconf3" }, 2895409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 6, 5, "c0_srsconf4" }, 2896409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 12, 1, "c0_intctl" }, 2897409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 12, 2, "c0_srsctl" }, 2898409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 12, 3, "c0_srsmap" }, 2899409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 15, 1, "c0_ebase" }, 2900409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 16, 1, "c0_config1" }, 2901409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 16, 2, "c0_config2" }, 2902409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 16, 3, "c0_config3" }, 2903409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 1, "c0_watchlo,1" }, 2904409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 2, "c0_watchlo,2" }, 2905409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 3, "c0_watchlo,3" }, 2906409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 4, "c0_watchlo,4" }, 2907409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 5, "c0_watchlo,5" }, 2908409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 6, "c0_watchlo,6" }, 2909409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 7, "c0_watchlo,7" }, 2910409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 1, "c0_watchhi,1" }, 2911409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 2, "c0_watchhi,2" }, 2912409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 3, "c0_watchhi,3" }, 2913409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 4, "c0_watchhi,4" }, 2914409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 5, "c0_watchhi,5" }, 2915409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 6, "c0_watchhi,6" }, 2916409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 7, "c0_watchhi,7" }, 2917409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 23, 1, "c0_tracecontrol" }, 2918409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 23, 2, "c0_tracecontrol2" }, 2919409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 23, 3, "c0_usertracedata" }, 2920409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 23, 4, "c0_tracebpc" }, 2921409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 1, "c0_perfcnt,1" }, 2922409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 2, "c0_perfcnt,2" }, 2923409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 3, "c0_perfcnt,3" }, 2924409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 4, "c0_perfcnt,4" }, 2925409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 5, "c0_perfcnt,5" }, 2926409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 6, "c0_perfcnt,6" }, 2927409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 7, "c0_perfcnt,7" }, 2928409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 27, 1, "c0_cacheerr,1" }, 2929409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 27, 2, "c0_cacheerr,2" }, 2930409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 27, 3, "c0_cacheerr,3" }, 2931409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 1, "c0_datalo" }, 2932409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 2, "c0_taglo1" }, 2933409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 3, "c0_datalo1" }, 2934409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 4, "c0_taglo2" }, 2935409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 5, "c0_datalo2" }, 2936409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 6, "c0_taglo3" }, 2937409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 7, "c0_datalo3" }, 2938409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 1, "c0_datahi" }, 2939409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 2, "c0_taghi1" }, 2940409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 3, "c0_datahi1" }, 2941409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 4, "c0_taghi2" }, 2942409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 5, "c0_datahi2" }, 2943409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 6, "c0_taghi3" }, 2944409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 7, "c0_datahi3" }, 2945409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2946409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2947409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_cp0_names_mips3264r2[32] = 2948409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2949409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_index", "c0_random", "c0_entrylo0", "c0_entrylo1", 2950409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_context", "c0_pagemask", "c0_wired", "c0_hwrena", 2951409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_badvaddr", "c0_count", "c0_entryhi", "c0_compare", 2952409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_status", "c0_cause", "c0_epc", "c0_prid", 2953409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_config", "c0_lladdr", "c0_watchlo", "c0_watchhi", 2954409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_xcontext", "$21", "$22", "c0_debug", 2955409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_depc", "c0_perfcnt", "c0_errctl", "c0_cacheerr", 2956409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_taglo", "c0_taghi", "c0_errorepc", "c0_desave", 2957409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 2958409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2959409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name mips_cp0sel_names_mips3264r2[] = 2960409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 2961409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4, 1, "c0_contextconfig" }, 2962409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 5, 1, "c0_pagegrain" }, 2963409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 12, 1, "c0_intctl" }, 2964409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 12, 2, "c0_srsctl" }, 2965409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 12, 3, "c0_srsmap" }, 2966409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 15, 1, "c0_ebase" }, 2967409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 16, 1, "c0_config1" }, 2968409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 16, 2, "c0_config2" }, 2969409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 16, 3, "c0_config3" }, 2970409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 1, "c0_watchlo,1" }, 2971409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 2, "c0_watchlo,2" }, 2972409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 3, "c0_watchlo,3" }, 2973409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 4, "c0_watchlo,4" }, 2974409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 5, "c0_watchlo,5" }, 2975409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 6, "c0_watchlo,6" }, 2976409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 7, "c0_watchlo,7" }, 2977409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 1, "c0_watchhi,1" }, 2978409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 2, "c0_watchhi,2" }, 2979409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 3, "c0_watchhi,3" }, 2980409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 4, "c0_watchhi,4" }, 2981409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 5, "c0_watchhi,5" }, 2982409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 6, "c0_watchhi,6" }, 2983409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 7, "c0_watchhi,7" }, 2984409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 23, 1, "c0_tracecontrol" }, 2985409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 23, 2, "c0_tracecontrol2" }, 2986409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 23, 3, "c0_usertracedata" }, 2987409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 23, 4, "c0_tracebpc" }, 2988409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 1, "c0_perfcnt,1" }, 2989409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 2, "c0_perfcnt,2" }, 2990409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 3, "c0_perfcnt,3" }, 2991409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 4, "c0_perfcnt,4" }, 2992409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 5, "c0_perfcnt,5" }, 2993409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 6, "c0_perfcnt,6" }, 2994409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 7, "c0_perfcnt,7" }, 2995409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 27, 1, "c0_cacheerr,1" }, 2996409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 27, 2, "c0_cacheerr,2" }, 2997409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 27, 3, "c0_cacheerr,3" }, 2998409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 1, "c0_datalo" }, 2999409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 2, "c0_taglo1" }, 3000409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 3, "c0_datalo1" }, 3001409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 4, "c0_taglo2" }, 3002409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 5, "c0_datalo2" }, 3003409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 6, "c0_taglo3" }, 3004409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 7, "c0_datalo3" }, 3005409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 1, "c0_datahi" }, 3006409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 2, "c0_taghi1" }, 3007409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 3, "c0_datahi1" }, 3008409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 4, "c0_taghi2" }, 3009409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 5, "c0_datahi2" }, 3010409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 6, "c0_taghi3" }, 3011409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 7, "c0_datahi3" }, 3012409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 3013409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3014409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* SB-1: MIPS64 (mips_cp0_names_mips3264) with minor mods. */ 3015409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_cp0_names_sb1[32] = 3016409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3017409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_index", "c0_random", "c0_entrylo0", "c0_entrylo1", 3018409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_context", "c0_pagemask", "c0_wired", "$7", 3019409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_badvaddr", "c0_count", "c0_entryhi", "c0_compare", 3020409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_status", "c0_cause", "c0_epc", "c0_prid", 3021409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_config", "c0_lladdr", "c0_watchlo", "c0_watchhi", 3022409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_xcontext", "$21", "$22", "c0_debug", 3023409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_depc", "c0_perfcnt", "c0_errctl", "c0_cacheerr_i", 3024409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "c0_taglo_i", "c0_taghi_i", "c0_errorepc", "c0_desave", 3025409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 3026409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3027409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name mips_cp0sel_names_sb1[] = 3028409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3029409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 16, 1, "c0_config1" }, 3030409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 18, 1, "c0_watchlo,1" }, 3031409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 19, 1, "c0_watchhi,1" }, 3032409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 22, 0, "c0_perftrace" }, 3033409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 23, 3, "c0_edebug" }, 3034409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 1, "c0_perfcnt,1" }, 3035409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 2, "c0_perfcnt,2" }, 3036409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 3, "c0_perfcnt,3" }, 3037409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 4, "c0_perfcnt,4" }, 3038409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 5, "c0_perfcnt,5" }, 3039409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 6, "c0_perfcnt,6" }, 3040409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 25, 7, "c0_perfcnt,7" }, 3041409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 26, 1, "c0_buserr_pa" }, 3042409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 27, 1, "c0_cacheerr_d" }, 3043409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 27, 3, "c0_cacheerr_d_pa" }, 3044409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 1, "c0_datalo_i" }, 3045409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 2, "c0_taglo_d" }, 3046409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 28, 3, "c0_datalo_d" }, 3047409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 1, "c0_datahi_i" }, 3048409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 2, "c0_taghi_d" }, 3049409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 29, 3, "c0_datahi_d" }, 3050409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 3051409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3052409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_hwr_names_numeric[32] = 3053409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3054409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", 3055409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", 3056409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23", 3057409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$24", "$25", "$26", "$27", "$28", "$29", "$30", "$31" 3058409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 3059409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3060409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_hwr_names_mips3264r2[32] = 3061409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3062409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "hwr_cpunum", "hwr_synci_step", "hwr_cc", "hwr_ccres", 3063409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$4", "$5", "$6", "$7", 3064409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", 3065409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23", 3066409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli "$24", "$25", "$26", "$27", "$28", "$29", "$30", "$31" 3067409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 3068409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3069409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_abi_choice 3070409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3071409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char *name; 3072409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char * const *gpr_names; 3073409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char * const *fpr_names; 3074409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 3075409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 30765aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turnerstatic struct mips_abi_choice mips_abi_choices[] = 3077409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3078409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "numeric", mips_gpr_names_numeric, mips_fpr_names_numeric }, 3079409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "32", mips_gpr_names_oldabi, mips_fpr_names_32 }, 3080409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "n32", mips_gpr_names_newabi, mips_fpr_names_n32 }, 3081409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "64", mips_gpr_names_newabi, mips_fpr_names_64 }, 3082409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 3083409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3084409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_arch_choice 3085409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3086409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char *name; 3087409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int bfd_mach_valid; 3088409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned long bfd_mach; 3089409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int processor; 3090409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int isa; 3091409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char * const *cp0_names; 3092409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_cp0sel_name *cp0sel_names; 3093409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int cp0sel_names_len; 3094409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char * const *hwr_names; 3095409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 3096409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3097409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips3000 3000 3098409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips3900 3900 3099409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4000 4000 3100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4010 4010 3101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4100 4100 3102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4111 4111 3103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4120 4120 3104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4300 4300 3105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4400 4400 3106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4600 4600 3107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4650 4650 3108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips5000 5000 3109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips5400 5400 3110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips5500 5500 3111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips6000 6000 3112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips7000 7000 3113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips8000 8000 3114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips9000 9000 3115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips10000 10000 3116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips12000 12000 3117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips16 16 3118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips5 5 3119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */ 3120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mipsisa32 32 3121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mipsisa32r2 33 3122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mipsisa64 64 3123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mipsisa64r2 65 3124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 31255aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turnerstatic const struct mips_arch_choice mips_arch_choices[] = 3126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "numeric", 0, 0, 0, 0, 3128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r3000", 1, bfd_mach_mips3000, CPU_R3000, ISA_MIPS1, 3131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r3900", 1, bfd_mach_mips3900, CPU_R3900, ISA_MIPS1, 3133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r4000", 1, bfd_mach_mips4000, CPU_R4000, ISA_MIPS3, 3135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r4010", 1, bfd_mach_mips4010, CPU_R4010, ISA_MIPS2, 3137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "vr4100", 1, bfd_mach_mips4100, CPU_VR4100, ISA_MIPS3, 3139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "vr4111", 1, bfd_mach_mips4111, CPU_R4111, ISA_MIPS3, 3141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3142409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "vr4120", 1, bfd_mach_mips4120, CPU_VR4120, ISA_MIPS3, 3143409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3144409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r4300", 1, bfd_mach_mips4300, CPU_R4300, ISA_MIPS3, 3145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r4400", 1, bfd_mach_mips4400, CPU_R4400, ISA_MIPS3, 3147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r4600", 1, bfd_mach_mips4600, CPU_R4600, ISA_MIPS3, 3149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r4650", 1, bfd_mach_mips4650, CPU_R4650, ISA_MIPS3, 3151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r5000", 1, bfd_mach_mips5000, CPU_R5000, ISA_MIPS4, 3153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "vr5400", 1, bfd_mach_mips5400, CPU_VR5400, ISA_MIPS4, 3155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "vr5500", 1, bfd_mach_mips5500, CPU_VR5500, ISA_MIPS4, 3157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r6000", 1, bfd_mach_mips6000, CPU_R6000, ISA_MIPS2, 3159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "rm7000", 1, bfd_mach_mips7000, CPU_RM7000, ISA_MIPS4, 3161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "rm9000", 1, bfd_mach_mips7000, CPU_RM7000, ISA_MIPS4, 3163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r8000", 1, bfd_mach_mips8000, CPU_R8000, ISA_MIPS4, 3165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r10000", 1, bfd_mach_mips10000, CPU_R10000, ISA_MIPS4, 3167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "r12000", 1, bfd_mach_mips12000, CPU_R12000, ISA_MIPS4, 3169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "mips5", 1, bfd_mach_mips5, CPU_MIPS5, ISA_MIPS5, 3171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* For stock MIPS32, disassemble all applicable MIPS-specified ASEs. 3174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Note that MIPS-3D and MDMX are not applicable to MIPS32. (See 3175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _MIPS32 Architecture For Programmers Volume I: Introduction to the 3176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli MIPS32 Architecture_ (MIPS Document Number MD00082, Revision 0.95), 3177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli page 1. */ 3178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "mips32", 1, bfd_mach_mipsisa32, CPU_MIPS32, 3179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ISA_MIPS32 | INSN_MIPS16 | INSN_SMARTMIPS, 3180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_mips3264, 3181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_mips3264, ARRAY_SIZE (mips_cp0sel_names_mips3264), 3182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names_numeric }, 3183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "mips32r2", 1, bfd_mach_mipsisa32r2, CPU_MIPS32R2, 3185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (ISA_MIPS32R2 | INSN_MIPS16 | INSN_SMARTMIPS | INSN_DSP | INSN_DSPR2 3186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli | INSN_MIPS3D | INSN_MT), 3187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_mips3264r2, 3188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2), 3189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names_mips3264r2 }, 3190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* For stock MIPS64, disassemble all applicable MIPS-specified ASEs. */ 3192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "mips64", 1, bfd_mach_mipsisa64, CPU_MIPS64, 3193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ISA_MIPS64 | INSN_MIPS16 | INSN_MIPS3D | INSN_MDMX, 3194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_mips3264, 3195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_mips3264, ARRAY_SIZE (mips_cp0sel_names_mips3264), 3196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names_numeric }, 3197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "mips64r2", 1, bfd_mach_mipsisa64r2, CPU_MIPS64R2, 3199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (ISA_MIPS64R2 | INSN_MIPS16 | INSN_MIPS3D | INSN_DSP | INSN_DSPR2 3200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli | INSN_DSP64 | INSN_MT | INSN_MDMX), 3201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_mips3264r2, 3202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2), 3203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names_mips3264r2 }, 3204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "sb1", 1, bfd_mach_mips_sb1, CPU_SB1, 3206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ISA_MIPS64 | INSN_MIPS3D | INSN_SB1, 3207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_sb1, 3208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_sb1, ARRAY_SIZE (mips_cp0sel_names_sb1), 3209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names_numeric }, 3210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* This entry, mips16, is here only for ISA/processor selection; do 3212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli not print its name. */ 3213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { "", 1, bfd_mach_mips16, CPU_MIPS16, ISA_MIPS3 | INSN_MIPS16, 3214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, 3215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}; 3216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* ISA and processor type to disassemble for, and register names to use. 3218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli set_default_mips_dis_options and parse_mips_dis_options fill in these 3219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli values. */ 3220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int mips_processor; 3221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int mips_isa; 3222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const *mips_gpr_names; 3223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const *mips_fpr_names; 3224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const *mips_cp0_names; 3225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name *mips_cp0sel_names; 3226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int mips_cp0sel_names_len; 3227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const *mips_hwr_names; 3228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Other options */ 3230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int no_aliases; /* If set disassemble as most general inst. */ 3231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_abi_choice * 3233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallichoose_abi_by_name (const char *name, unsigned int namelen) 3234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_abi_choice *c; 3236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int i; 3237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (i = 0, c = NULL; i < ARRAY_SIZE (mips_abi_choices) && c == NULL; i++) 3239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (strncmp (mips_abi_choices[i].name, name, namelen) == 0 3240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && strlen (mips_abi_choices[i].name) == namelen) 3241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli c = &mips_abi_choices[i]; 3242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return c; 3244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 3245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_arch_choice * 3247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallichoose_arch_by_name (const char *name, unsigned int namelen) 3248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_arch_choice *c = NULL; 3250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int i; 3251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (i = 0, c = NULL; i < ARRAY_SIZE (mips_arch_choices) && c == NULL; i++) 3253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (strncmp (mips_arch_choices[i].name, name, namelen) == 0 3254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && strlen (mips_arch_choices[i].name) == namelen) 3255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli c = &mips_arch_choices[i]; 3256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return c; 3258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 3259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_arch_choice * 3261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallichoose_arch_by_number (unsigned long mach) 3262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli static unsigned long hint_bfd_mach; 3264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli static const struct mips_arch_choice *hint_arch_choice; 3265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_arch_choice *c; 3266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int i; 3267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* We optimize this because even if the user specifies no 3269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli flags, this will be done for every instruction! */ 3270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (hint_bfd_mach == mach 3271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && hint_arch_choice != NULL 3272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && hint_arch_choice->bfd_mach == hint_bfd_mach) 3273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return hint_arch_choice; 3274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (i = 0, c = NULL; i < ARRAY_SIZE (mips_arch_choices) && c == NULL; i++) 3276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (mips_arch_choices[i].bfd_mach_valid 3278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && mips_arch_choices[i].bfd_mach == mach) 3279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli c = &mips_arch_choices[i]; 3281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli hint_bfd_mach = mach; 3282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli hint_arch_choice = c; 3283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return c; 3286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 3287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void 3289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliset_default_mips_dis_options (struct disassemble_info *info) 3290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_arch_choice *chosen_arch; 3292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Defaults: mipsIII/r3000 (?!), (o)32-style ("oldabi") GPR names, 3294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli and numeric FPR, CP0 register, and HWR names. */ 3295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_isa = ISA_MIPS3; 3296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_processor = CPU_R3000; 3297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names = mips_gpr_names_oldabi; 3298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_fpr_names = mips_fpr_names_numeric; 3299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names = mips_cp0_names_numeric; 3300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names = NULL; 3301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_len = 0; 3302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names = mips_hwr_names_numeric; 3303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli no_aliases = 0; 3304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* If an ELF "newabi" binary, use the n32/(n)64 GPR names. */ 3306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0 3307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (info->flavour == bfd_target_elf_flavour && info->section != NULL) 3308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Elf_Internal_Ehdr *header; 3310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli header = elf_elfheader (info->section->owner); 3312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (is_newabi (header)) 3313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names = mips_gpr_names_newabi; 3314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif 3316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Set ISA, architecture, and cp0 register names as best we can. */ 3318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if !defined(SYMTAB_AVAILABLE) && 0 3319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* This is running out on a target machine, not in a host tool. 3320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli FIXME: Where does mips_target_info come from? */ 3321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli target_processor = mips_target_info.processor; 3322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_isa = mips_target_info.isa; 3323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#else 3324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli chosen_arch = choose_arch_by_number (info->mach); 3325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (chosen_arch != NULL) 3326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_processor = chosen_arch->processor; 3328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_isa = chosen_arch->isa; 3329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names = chosen_arch->cp0_names; 3330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names = chosen_arch->cp0sel_names; 3331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_len = chosen_arch->cp0sel_names_len; 3332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names = chosen_arch->hwr_names; 3333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif 3335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 3336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void 3338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliparse_mips_dis_option (const char *option, unsigned int len) 3339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int i, optionlen, vallen; 3341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char *val; 3342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_abi_choice *chosen_abi; 3343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_arch_choice *chosen_arch; 3344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Look for the = that delimits the end of the option name. */ 3346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (i = 0; i < len; i++) 3347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (option[i] == '=') 3349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (i == 0) /* Invalid option: no name before '='. */ 3352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (i == len) /* Invalid option: no '='. */ 3354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (i == (len - 1)) /* Invalid option: no value after '='. */ 3356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli optionlen = i; 3359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli val = option + (optionlen + 1); 3360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli vallen = len - (optionlen + 1); 3361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (strncmp("gpr-names", option, optionlen) == 0 3363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && strlen("gpr-names") == optionlen) 3364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli chosen_abi = choose_abi_by_name (val, vallen); 3366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (chosen_abi != NULL) 3367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names = chosen_abi->gpr_names; 3368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (strncmp("fpr-names", option, optionlen) == 0 3372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && strlen("fpr-names") == optionlen) 3373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli chosen_abi = choose_abi_by_name (val, vallen); 3375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (chosen_abi != NULL) 3376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_fpr_names = chosen_abi->fpr_names; 3377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (strncmp("cp0-names", option, optionlen) == 0 3381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && strlen("cp0-names") == optionlen) 3382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli chosen_arch = choose_arch_by_name (val, vallen); 3384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (chosen_arch != NULL) 3385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names = chosen_arch->cp0_names; 3387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names = chosen_arch->cp0sel_names; 3388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_len = chosen_arch->cp0sel_names_len; 3389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (strncmp("hwr-names", option, optionlen) == 0 3394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && strlen("hwr-names") == optionlen) 3395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli chosen_arch = choose_arch_by_name (val, vallen); 3397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (chosen_arch != NULL) 3398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names = chosen_arch->hwr_names; 3399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (strncmp("reg-names", option, optionlen) == 0 3403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && strlen("reg-names") == optionlen) 3404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* We check both ABI and ARCH here unconditionally, so 3406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli that "numeric" will do the desirable thing: select 3407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli numeric register names for all registers. Other than 3408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli that, a given name probably won't match both. */ 3409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli chosen_abi = choose_abi_by_name (val, vallen); 3410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (chosen_abi != NULL) 3411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names = chosen_abi->gpr_names; 3413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_fpr_names = chosen_abi->fpr_names; 3414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli chosen_arch = choose_arch_by_name (val, vallen); 3416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (chosen_arch != NULL) 3417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names = chosen_arch->cp0_names; 3419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names = chosen_arch->cp0sel_names; 3420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_len = chosen_arch->cp0sel_names_len; 3421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names = chosen_arch->hwr_names; 3422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Invalid option. */ 3427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 3428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void 3430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliparse_mips_dis_options (const char *options) 3431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char *option_end; 3433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (options == NULL) 3435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli while (*options != '\0') 3438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Skip empty options. */ 3440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (*options == ',') 3441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli options++; 3443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli continue; 3444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* We know that *options is neither NUL or a comma. */ 3447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli option_end = options + 1; 3448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli while (*option_end != ',' && *option_end != '\0') 3449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli option_end++; 3450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli parse_mips_dis_option (options, option_end - options); 3452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Go on to the next one. If option_end points to a comma, it 3454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli will be skipped above. */ 3455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli options = option_end; 3456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 3458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name * 3460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallilookup_mips_cp0sel_name (const struct mips_cp0sel_name *names, 3461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int len, 3462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int cp0reg, 3463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int sel) 3464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int i; 3466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (i = 0; i < len; i++) 3468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (names[i].cp0reg == cp0reg && names[i].sel == sel) 3469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return &names[i]; 3470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return NULL; 3471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 3472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Print insn arguments for 32/64-bit code. */ 3474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void 3476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_args (const char *d, 3477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli register unsigned long int l, 3478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli bfd_vma pc, 3479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli struct disassemble_info *info, 3480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_opcode *opp) 3481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int op, delta; 3483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int lsb, msb, msbd; 3484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli lsb = 0; 3486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (; *d != '\0'; d++) 3488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli switch (*d) 3490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case ',': 3492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '(': 3493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case ')': 3494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '[': 3495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case ']': 3496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%c", *d); 3497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '+': 3500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Extension character; switch for second char. */ 3501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli d++; 3502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli switch (*d) 3503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '\0': 3505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* xgettext:c-format */ 3506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, 3507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _("# internal error, incomplete extension sequence (+)")); 3508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'A': 3511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli lsb = (l >> OP_SH_SHAMT) & OP_MASK_SHAMT; 3512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", lsb); 3513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'B': 3516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli msb = (l >> OP_SH_INSMSB) & OP_MASK_INSMSB; 3517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", msb - lsb + 1); 3518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '1': 3521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_UDI1) & OP_MASK_UDI1); 3523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '2': 3526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_UDI2) & OP_MASK_UDI2); 3528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '3': 3531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_UDI3) & OP_MASK_UDI3); 3533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '4': 3536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_UDI4) & OP_MASK_UDI4); 3538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'C': 3541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'H': 3542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli msbd = (l >> OP_SH_EXTMSBD) & OP_MASK_EXTMSBD; 3543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", msbd + 1); 3544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'D': 3547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_cp0sel_name *n; 3549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int cp0reg, sel; 3550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli cp0reg = (l >> OP_SH_RD) & OP_MASK_RD; 3552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli sel = (l >> OP_SH_SEL) & OP_MASK_SEL; 3553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* CP0 register including 'sel' code for mtcN (et al.), to be 3555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli printed textually if known. If not known, print both 3556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli CP0 register name and sel numerically since CP0 register 3557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli with sel 0 may have a name unrelated to register being 3558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli printed. */ 3559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli n = lookup_mips_cp0sel_name(mips_cp0sel_names, 3560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_len, cp0reg, sel); 3561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (n != NULL) 3562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", n->name); 3563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 3564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$%d,%d", cp0reg, sel); 3565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3568409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'E': 3569409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli lsb = ((l >> OP_SH_SHAMT) & OP_MASK_SHAMT) + 32; 3570409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", lsb); 3571409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3572409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'F': 3574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli msb = ((l >> OP_SH_INSMSB) & OP_MASK_INSMSB) + 32; 3575409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", msb - lsb + 1); 3576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'G': 3579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli msbd = ((l >> OP_SH_EXTMSBD) & OP_MASK_EXTMSBD) + 32; 3580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", msbd + 1); 3581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 't': /* Coprocessor 0 reg name */ 3584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names[(l >> OP_SH_RT) & 3586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli OP_MASK_RT]); 3587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3588409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'T': /* Coprocessor 0 reg name */ 3590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_cp0sel_name *n; 3592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int cp0reg, sel; 3593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli cp0reg = (l >> OP_SH_RT) & OP_MASK_RT; 3595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli sel = (l >> OP_SH_SEL) & OP_MASK_SEL; 3596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* CP0 register including 'sel' code for mftc0, to be 3598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli printed textually if known. If not known, print both 3599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli CP0 register name and sel numerically since CP0 register 3600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli with sel 0 may have a name unrelated to register being 3601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli printed. */ 3602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli n = lookup_mips_cp0sel_name(mips_cp0sel_names, 3603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0sel_names_len, cp0reg, sel); 3604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (n != NULL) 3605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", n->name); 3606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 3607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$%d,%d", cp0reg, sel); 3608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli default: 3612409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* xgettext:c-format */ 3613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, 3614409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _("# internal error, undefined extension sequence (+%c)"), 3615409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli *d); 3616409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '2': 3621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3622409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_BP) & OP_MASK_BP); 3623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '3': 3626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_SA3) & OP_MASK_SA3); 3628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '4': 3631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_SA4) & OP_MASK_SA4); 3633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '5': 3636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_IMM8) & OP_MASK_IMM8); 3638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '6': 3641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_RS) & OP_MASK_RS); 3643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '7': 3646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$ac%ld", 3647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_DSPACC) & OP_MASK_DSPACC); 3648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '8': 3651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_WRDSP) & OP_MASK_WRDSP); 3653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '9': 3656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$ac%ld", 3657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_DSPACC_S) & OP_MASK_DSPACC_S); 3658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '0': /* dsp 6-bit signed immediate in bit 20 */ 3661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta = ((l >> OP_SH_DSPSFT) & OP_MASK_DSPSFT); 3662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (delta & 0x20) /* test sign bit */ 3663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta |= ~OP_MASK_DSPSFT; 3664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%d", delta); 3665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case ':': /* dsp 7-bit signed immediate in bit 19 */ 3668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta = ((l >> OP_SH_DSPSFT_7) & OP_MASK_DSPSFT_7); 3669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (delta & 0x40) /* test sign bit */ 3670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta |= ~OP_MASK_DSPSFT_7; 3671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%d", delta); 3672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '\'': 3675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_RDDSP) & OP_MASK_RDDSP); 3677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '@': /* dsp 10-bit signed immediate in bit 16 */ 3680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta = ((l >> OP_SH_IMM10) & OP_MASK_IMM10); 3681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (delta & 0x200) /* test sign bit */ 3682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta |= ~OP_MASK_IMM10; 3683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%d", delta); 3684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '!': 3687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%ld", 3688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_MT_U) & OP_MASK_MT_U); 3689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '$': 3692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%ld", 3693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_MT_H) & OP_MASK_MT_H); 3694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '*': 3697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$ac%ld", 3698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_MTACC_T) & OP_MASK_MTACC_T); 3699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '&': 3702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$ac%ld", 3703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_MTACC_D) & OP_MASK_MTACC_D); 3704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'g': 3707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Coprocessor register for CTTC1, MTTC2, MTHC2, CTTC2. */ 3708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$%ld", 3709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_RD) & OP_MASK_RD); 3710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 's': 3713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'b': 3714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'r': 3715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'v': 3716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[(l >> OP_SH_RS) & OP_MASK_RS]); 3718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 't': 3721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'w': 3722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[(l >> OP_SH_RT) & OP_MASK_RT]); 3724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'i': 3727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'u': 3728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_IMMEDIATE) & OP_MASK_IMMEDIATE); 3730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'j': /* Same as i, but sign-extended. */ 3733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'o': 3734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta = (l >> OP_SH_DELTA) & OP_MASK_DELTA; 3735409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (delta & 0x8000) 3736409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta |= ~0xffff; 3737409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%d", 3738409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta); 3739409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3740409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3741409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'h': 3742409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", 3743409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (unsigned int) ((l >> OP_SH_PREFX) 3744409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli & OP_MASK_PREFX)); 3745409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3746409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3747409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'k': 3748409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", 3749409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (unsigned int) ((l >> OP_SH_CACHE) 3750409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli & OP_MASK_CACHE)); 3751409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3752409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3753409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'a': 3754409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target = (((pc + 4) & ~(bfd_vma) 0x0fffffff) 3755409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli | (((l >> OP_SH_TARGET) & OP_MASK_TARGET) << 2)); 3756409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* For gdb disassembler, force odd address on jalx. */ 3757409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (info->flavour == bfd_target_unknown_flavour 3758409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && strcmp (opp->name, "jalx") == 0) 3759409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target |= 1; 3760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->print_address_func) (info->target, info); 3761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'p': 3764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Sign extend the displacement. */ 3765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta = (l >> OP_SH_DELTA) & OP_MASK_DELTA; 3766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (delta & 0x8000) 3767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli delta |= ~0xffff; 3768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target = (delta << 2) + pc + INSNLEN; 3769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->print_address_func) (info->target, info); 3770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'd': 3773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[(l >> OP_SH_RD) & OP_MASK_RD]); 3775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'U': 3778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* First check for both rd and rt being equal. */ 3780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int reg = (l >> OP_SH_RD) & OP_MASK_RD; 3781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (reg == ((l >> OP_SH_RT) & OP_MASK_RT)) 3782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[reg]); 3784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 3785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* If one is zero use the other. */ 3787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (reg == 0) 3788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[(l >> OP_SH_RT) & OP_MASK_RT]); 3790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else if (((l >> OP_SH_RT) & OP_MASK_RT) == 0) 3791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[reg]); 3793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else /* Bogus, result depends on processor. */ 3794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s or %s", 3795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[reg], 3796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[(l >> OP_SH_RT) & OP_MASK_RT]); 3797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'z': 3802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[0]); 3803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '<': 3806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_SHAMT) & OP_MASK_SHAMT); 3808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'c': 3811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_CODE) & OP_MASK_CODE); 3813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'q': 3816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_CODE2) & OP_MASK_CODE2); 3818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'C': 3821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_COPZ) & OP_MASK_COPZ); 3823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'B': 3826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_CODE20) & OP_MASK_CODE20); 3829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'J': 3832409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_CODE19) & OP_MASK_CODE19); 3834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'S': 3837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'V': 3838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_fpr_names[(l >> OP_SH_FS) & OP_MASK_FS]); 3840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'T': 3843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'W': 3844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_fpr_names[(l >> OP_SH_FT) & OP_MASK_FT]); 3846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'D': 3849409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_fpr_names[(l >> OP_SH_FD) & OP_MASK_FD]); 3851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'R': 3854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_fpr_names[(l >> OP_SH_FR) & OP_MASK_FR]); 3856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'E': 3859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Coprocessor register for lwcN instructions, et al. 3860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Note that there is no load/store cp0 instructions, and 3862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli that FPU (cp1) instructions disassemble this field using 3863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 'T' format. Therefore, until we gain understanding of 3864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli cp2 register names, we can simply print the register 3865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli numbers. */ 3866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$%ld", 3867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_RT) & OP_MASK_RT); 3868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'G': 3871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Coprocessor register for mtcN instructions, et al. Note 3872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli that FPU (cp1) instructions disassemble this field using 3873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 'S' format. Therefore, we only need to worry about cp0, 3874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli cp2, and cp3. */ 3875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli op = (l >> OP_SH_OP) & OP_MASK_OP; 3876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (op == OP_OP_COP0) 3877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_cp0_names[(l >> OP_SH_RD) & OP_MASK_RD]); 3879409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 3880409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$%ld", 3881409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_RD) & OP_MASK_RD); 3882409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3883409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3884409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'K': 3885409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 3886409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hwr_names[(l >> OP_SH_RD) & OP_MASK_RD]); 3887409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3888409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3889409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'N': 3890409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, 3891409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ((opp->pinfo & (FP_D | FP_S)) != 0 3892409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ? "$fcc%ld" : "$cc%ld"), 3893409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_BCC) & OP_MASK_BCC); 3894409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3895409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3896409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'M': 3897409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$fcc%ld", 3898409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_CCC) & OP_MASK_CCC); 3899409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3900409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3901409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'P': 3902409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%ld", 3903409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_PERFREG) & OP_MASK_PERFREG); 3904409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3905409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3906409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'e': 3907409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%ld", 3908409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_VECBYTE) & OP_MASK_VECBYTE); 3909409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3910409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3911409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '%': 3912409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%ld", 3913409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_VECALIGN) & OP_MASK_VECALIGN); 3914409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3915409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3916409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'H': 3917409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%ld", 3918409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_SEL) & OP_MASK_SEL); 3919409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3920409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3921409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'O': 3922409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%ld", 3923409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_ALN) & OP_MASK_ALN); 3924409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3925409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3926409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'Q': 3927409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3928409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int vsel = (l >> OP_SH_VSEL) & OP_MASK_VSEL; 3929409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3930409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((vsel & 0x10) == 0) 3931409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3932409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int fmt; 3933409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3934409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli vsel &= 0x0f; 3935409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (fmt = 0; fmt < 3; fmt++, vsel >>= 1) 3936409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((vsel & 1) == 0) 3937409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3938409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$v%ld[%d]", 3939409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_FT) & OP_MASK_FT, 3940409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli vsel >> 1); 3941409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3942409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else if ((vsel & 0x08) == 0) 3943409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3944409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$v%ld", 3945409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_FT) & OP_MASK_FT); 3946409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3947409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 3948409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 3949409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", 3950409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_FT) & OP_MASK_FT); 3951409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3952409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3953409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3954409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3955409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'X': 3956409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$v%ld", 3957409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_FD) & OP_MASK_FD); 3958409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3959409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3960409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'Y': 3961409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$v%ld", 3962409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_FS) & OP_MASK_FS); 3963409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3964409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3965409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'Z': 3966409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$v%ld", 3967409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (l >> OP_SH_FT) & OP_MASK_FT); 3968409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 3969409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3970409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli default: 3971409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* xgettext:c-format */ 3972409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, 3973409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _("# internal error, undefined modifier(%c)"), 3974409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli *d); 3975409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return; 3976409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3977409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 3978409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 3979409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3980409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Check if the object uses NewABI conventions. */ 3981409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0 3982409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int 3983409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliis_newabi (header) 3984409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Elf_Internal_Ehdr *header; 3985409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 3986409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* There are no old-style ABIs which use 64-bit ELF. */ 3987409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (header->e_ident[EI_CLASS] == ELFCLASS64) 3988409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return 1; 3989409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3990409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* If a 32-bit ELF file, n32 is a new-style ABI. */ 3991409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((header->e_flags & EF_MIPS_ABI2) != 0) 3992409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return 1; 3993409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3994409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return 0; 3995409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 3996409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif 3997409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 3998409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Print the mips instruction at address MEMADDR in debugged memory, 3999409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli on using INFO. Returns length of the instruction, in bytes, which is 4000409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli always INSNLEN. BIGENDIAN must be 1 if this is big-endian code, 0 if 4001409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli this is little-endian code. */ 4002409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4003409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int 4004409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_mips (bfd_vma memaddr, 4005409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned long int word, 4006409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli struct disassemble_info *info) 4007409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 4008409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_opcode *op; 4009409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli static bfd_boolean init = 0; 4010409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli static const struct mips_opcode *mips_hash[OP_MASK_OP + 1]; 4011409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4012409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Build a hash table to shorten the search time. */ 4013409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (! init) 4014409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4015409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int i; 4016409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4017409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (i = 0; i <= OP_MASK_OP; i++) 4018409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4019409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (op = mips_opcodes; op < &mips_opcodes[NUMOPCODES]; op++) 4020409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4021409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (op->pinfo == INSN_MACRO 4022409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (no_aliases && (op->pinfo2 & INSN2_ALIAS))) 4023409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli continue; 4024409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (i == ((op->match >> OP_SH_OP) & OP_MASK_OP)) 4025409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4026409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_hash[i] = op; 4027409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4028409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4029409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4030409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4031409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4032409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli init = 1; 4033409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4034409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4035409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->bytes_per_chunk = INSNLEN; 4036409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->display_endian = info->endian; 4037409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_info_valid = 1; 4038409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->branch_delay_insns = 0; 4039409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 0; 4040409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_nonbranch; 4041409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target = 0; 4042409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target2 = 0; 4043409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4044409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli op = mips_hash[(word >> OP_SH_OP) & OP_MASK_OP]; 4045409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (op != NULL) 4046409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4047409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (; op < &mips_opcodes[NUMOPCODES]; op++) 4048409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4049409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (op->pinfo != INSN_MACRO 4050409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && !(no_aliases && (op->pinfo2 & INSN2_ALIAS)) 4051409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && (word & op->mask) == op->match) 4052409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4053409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char *d; 4054409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4055409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* We always allow to disassemble the jalx instruction. */ 4056409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (! OPCODE_IS_MEMBER (op, mips_isa, mips_processor) 4057409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && strcmp (op->name, "jalx")) 4058409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli continue; 4059409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4060409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Figure out instruction type and branch delay information. */ 4061409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((op->pinfo & INSN_UNCOND_BRANCH_DELAY) != 0) 4062409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4063409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((info->insn_type & INSN_WRITE_GPR_31) != 0) 4064409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_jsr; 4065409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4066409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_branch; 4067409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->branch_delay_insns = 1; 4068409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4069409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else if ((op->pinfo & (INSN_COND_BRANCH_DELAY 4070409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli | INSN_COND_BRANCH_LIKELY)) != 0) 4071409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4072409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((info->insn_type & INSN_WRITE_GPR_31) != 0) 4073409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_condjsr; 4074409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4075409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_condbranch; 4076409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->branch_delay_insns = 1; 4077409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4078409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else if ((op->pinfo & (INSN_STORE_MEMORY 4079409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli | INSN_LOAD_MEMORY_DELAY)) != 0) 4080409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_dref; 4081409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4082409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", op->name); 4083409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4084409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli d = op->args; 4085409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (d != NULL && *d != '\0') 4086409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4087409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "\t"); 4088409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli print_insn_args (d, word, memaddr, info, op); 4089409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4090409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4091409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return INSNLEN; 4092409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4093409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4094409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4095409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4096409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Handle undefined instructions. */ 4097409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_noninsn; 4098409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%lx", word); 4099409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return INSNLEN; 4100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 4101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* In an environment where we do not know the symbol type of the 4103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction we are forced to assume that the low order bit of the 4104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instructions' address may mark it as a mips16 instruction. If we 4105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli are single stepping, or the pc is within the disassembled function, 4106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli this works. Otherwise, we need a clue. Sometimes. */ 4107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int 4109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli_print_insn_mips (bfd_vma memaddr, 4110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli struct disassemble_info *info, 4111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli enum bfd_endian endianness) 4112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 4113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli bfd_byte buffer[INSNLEN]; 4114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int status; 4115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli set_default_mips_dis_options (info); 4117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli parse_mips_dis_options (info->disassembler_options); 4118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0 4120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 1 4121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* FIXME: If odd address, this is CLEARLY a mips 16 instruction. */ 4122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Only a few tools will work this way. */ 4123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (memaddr & 0x01) 4124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return print_insn_mips16 (memaddr, info); 4125409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif 4126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if SYMTAB_AVAILABLE 4128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (info->mach == bfd_mach_mips16 4129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli || (info->flavour == bfd_target_elf_flavour 4130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && info->symbols != NULL 4131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && ((*(elf_symbol_type **) info->symbols)->internal_elf_sym.st_other 4132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli == STO_MIPS16))) 4133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return print_insn_mips16 (memaddr, info); 4134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif 4135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif 4136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli status = (*info->read_memory_func) (memaddr, buffer, INSNLEN, info); 4138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (status == 0) 4139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned long insn; 4141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4142409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (endianness == BFD_ENDIAN_BIG) 4143409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli insn = (unsigned long) bfd_getb32 (buffer); 4144409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli insn = (unsigned long) bfd_getl32 (buffer); 4146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return print_insn_mips (memaddr, insn, info); 4148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->memory_error_func) (status, memaddr, info); 4152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return -1; 4153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 4155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliint 4157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_big_mips (bfd_vma memaddr, struct disassemble_info *info) 4158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 4159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return _print_insn_mips (memaddr, info, BFD_ENDIAN_BIG); 4160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 4161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliint 4163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_little_mips (bfd_vma memaddr, struct disassemble_info *info) 4164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 4165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return _print_insn_mips (memaddr, info, BFD_ENDIAN_LITTLE); 4166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 4167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Disassemble mips16 instructions. */ 4169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0 4170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int 4171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_mips16 (bfd_vma memaddr, struct disassemble_info *info) 4172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 4173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int status; 4174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli bfd_byte buffer[2]; 4175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int length; 4176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int insn; 4177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli bfd_boolean use_extend; 4178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int extend = 0; 4179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_opcode *op, *opend; 4180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->bytes_per_chunk = 2; 4182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->display_endian = info->endian; 4183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_info_valid = 1; 4184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->branch_delay_insns = 0; 4185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 0; 4186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_nonbranch; 4187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target = 0; 4188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target2 = 0; 4189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli status = (*info->read_memory_func) (memaddr, buffer, 2, info); 4191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (status != 0) 4192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->memory_error_func) (status, memaddr, info); 4194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return -1; 4195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli length = 2; 4198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (info->endian == BFD_ENDIAN_BIG) 4200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli insn = bfd_getb16 (buffer); 4201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli insn = bfd_getl16 (buffer); 4203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Handle the extend opcode specially. */ 4205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli use_extend = FALSE; 4206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((insn & 0xf800) == 0xf000) 4207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli use_extend = TRUE; 4209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extend = insn & 0x7ff; 4210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli memaddr += 2; 4212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli status = (*info->read_memory_func) (memaddr, buffer, 2, info); 4214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (status != 0) 4215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "extend 0x%x", 4217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (unsigned int) extend); 4218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->memory_error_func) (status, memaddr, info); 4219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return -1; 4220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (info->endian == BFD_ENDIAN_BIG) 4223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli insn = bfd_getb16 (buffer); 4224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli insn = bfd_getl16 (buffer); 4226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Check for an extend opcode followed by an extend opcode. */ 4228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((insn & 0xf800) == 0xf000) 4229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "extend 0x%x", 4231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (unsigned int) extend); 4232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_noninsn; 4233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return length; 4234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli length += 2; 4237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* FIXME: Should probably use a hash table on the major opcode here. */ 4240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli opend = mips16_opcodes + bfd_mips16_num_opcodes; 4242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (op = mips16_opcodes; op < opend; op++) 4243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (op->pinfo != INSN_MACRO 4245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && !(no_aliases && (op->pinfo2 & INSN2_ALIAS)) 4246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && (insn & op->mask) == op->match) 4247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const char *s; 4249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (strchr (op->args, 'a') != NULL) 4251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (use_extend) 4253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "extend 0x%x", 4255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (unsigned int) extend); 4256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_noninsn; 4257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return length - 2; 4258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli use_extend = FALSE; 4261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli memaddr += 2; 4263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli status = (*info->read_memory_func) (memaddr, buffer, 2, 4265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info); 4266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (status == 0) 4267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli use_extend = TRUE; 4269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (info->endian == BFD_ENDIAN_BIG) 4270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extend = bfd_getb16 (buffer); 4271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extend = bfd_getl16 (buffer); 4273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli length += 2; 4274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", op->name); 4278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (op->args[0] != '\0') 4279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "\t"); 4280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (s = op->args; *s != '\0'; s++) 4282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (*s == ',' 4284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && s[1] == 'w' 4285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && (((insn >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX) 4286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli == ((insn >> MIPS16OP_SH_RY) & MIPS16OP_MASK_RY))) 4287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Skip the register and the comma. */ 4289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ++s; 4290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli continue; 4291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (*s == ',' 4293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && s[1] == 'v' 4294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && (((insn >> MIPS16OP_SH_RZ) & MIPS16OP_MASK_RZ) 4295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli == ((insn >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX))) 4296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Skip the register and the comma. */ 4298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ++s; 4299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli continue; 4300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli print_mips16_insn_arg (*s, op, insn, use_extend, extend, memaddr, 4302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info); 4303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((op->pinfo & INSN_UNCOND_BRANCH_DELAY) != 0) 4306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->branch_delay_insns = 1; 4308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (info->insn_type != dis_jsr) 4309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_branch; 4310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return length; 4313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (use_extend) 4317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", extend | 0xf000); 4318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "0x%x", insn); 4319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_noninsn; 4320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli return length; 4322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 4323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Disassemble an operand for a mips16 instruction. */ 4325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void 4327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_mips16_insn_arg (char type, 4328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli const struct mips_opcode *op, 4329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int l, 4330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli bfd_boolean use_extend, 4331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int extend, 4332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli bfd_vma memaddr, 4333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli struct disassemble_info *info) 4334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 4335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli switch (type) 4336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case ',': 4338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '(': 4339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case ')': 4340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%c", type); 4341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'y': 4344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'w': 4345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 4346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips16_reg_names(((l >> MIPS16OP_SH_RY) 4347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli & MIPS16OP_MASK_RY))); 4348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'x': 4351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'v': 4352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 4353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips16_reg_names(((l >> MIPS16OP_SH_RX) 4354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli & MIPS16OP_MASK_RX))); 4355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'z': 4358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 4359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips16_reg_names(((l >> MIPS16OP_SH_RZ) 4360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli & MIPS16OP_MASK_RZ))); 4361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'Z': 4364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 4365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips16_reg_names(((l >> MIPS16OP_SH_MOVE32Z) 4366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli & MIPS16OP_MASK_MOVE32Z))); 4367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '0': 4370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[0]); 4371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'S': 4374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[29]); 4375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'P': 4378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "$pc"); 4379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'R': 4382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[31]); 4383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'X': 4386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 4387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[((l >> MIPS16OP_SH_REGR32) 4388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli & MIPS16OP_MASK_REGR32)]); 4389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'Y': 4392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", 4393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[MIPS16OP_EXTRACT_REG32R (l)]); 4394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '<': 4397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '>': 4398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '[': 4399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case ']': 4400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '4': 4401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '5': 4402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'H': 4403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'W': 4404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'D': 4405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'j': 4406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '6': 4407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '8': 4408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'V': 4409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'C': 4410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'U': 4411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'k': 4412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'K': 4413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'p': 4414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'q': 4415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'A': 4416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'B': 4417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'E': 4418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int immed, nbits, shift, signedp, extbits, pcrel, extu, branch; 4420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 0; 4422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli signedp = 0; 4423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extbits = 16; 4424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli pcrel = 0; 4425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extu = 0; 4426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli branch = 0; 4427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli switch (type) 4428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '<': 4430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 3; 4431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_RZ) & MIPS16OP_MASK_RZ; 4432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extbits = 5; 4433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extu = 1; 4434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '>': 4436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 3; 4437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX; 4438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extbits = 5; 4439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extu = 1; 4440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '[': 4442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 3; 4443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_RZ) & MIPS16OP_MASK_RZ; 4444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extbits = 6; 4445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extu = 1; 4446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case ']': 4448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 3; 4449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX; 4450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extbits = 6; 4451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extu = 1; 4452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '4': 4454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 4; 4455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM4) & MIPS16OP_MASK_IMM4; 4456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli signedp = 1; 4457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extbits = 15; 4458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '5': 4460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 5; 4461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; 4462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_dref; 4463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 1; 4464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'H': 4466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 5; 4467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 1; 4468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; 4469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_dref; 4470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 2; 4471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'W': 4473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 5; 4474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 2; 4475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; 4476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((op->pinfo & MIPS16_INSN_READ_PC) == 0 4477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && (op->pinfo & MIPS16_INSN_READ_SP) == 0) 4478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_dref; 4480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 4; 4481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'D': 4484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 5; 4485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 3; 4486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; 4487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_dref; 4488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 8; 4489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'j': 4491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 5; 4492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; 4493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli signedp = 1; 4494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '6': 4496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 6; 4497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM6) & MIPS16OP_MASK_IMM6; 4498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case '8': 4500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 8; 4501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; 4502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'V': 4504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 8; 4505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 2; 4506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; 4507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* FIXME: This might be lw, or it might be addiu to $sp or 4508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli $pc. We assume it's load. */ 4509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_dref; 4510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 4; 4511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'C': 4513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 8; 4514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 3; 4515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; 4516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_dref; 4517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 8; 4518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'U': 4520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 8; 4521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; 4522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extu = 1; 4523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'k': 4525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 8; 4526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; 4527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli signedp = 1; 4528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'K': 4530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 8; 4531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 3; 4532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; 4533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli signedp = 1; 4534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'p': 4536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 8; 4537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; 4538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli signedp = 1; 4539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli pcrel = 1; 4540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli branch = 1; 4541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_condbranch; 4542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'q': 4544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 11; 4545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM11) & MIPS16OP_MASK_IMM11; 4546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli signedp = 1; 4547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli pcrel = 1; 4548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli branch = 1; 4549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_branch; 4550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'A': 4552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 8; 4553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 2; 4554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; 4555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli pcrel = 1; 4556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* FIXME: This can be lw or la. We assume it is lw. */ 4557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_dref; 4558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 4; 4559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'B': 4561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 5; 4562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 3; 4563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; 4564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli pcrel = 1; 4565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_dref; 4566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->data_size = 8; 4567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4568409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'E': 4569409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nbits = 5; 4570409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli shift = 2; 4571409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; 4572409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli pcrel = 1; 4573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli default: 4575409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli abort (); 4576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (! use_extend) 4579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (signedp && immed >= (1 << (nbits - 1))) 4581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed -= 1 << nbits; 4582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed <<= shift; 4583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if ((type == '<' || type == '>' || type == '[' || type == ']') 4584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && immed == 0) 4585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = 8; 4586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4588409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (extbits == 16) 4590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed |= ((extend & 0x1f) << 11) | (extend & 0x7e0); 4591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else if (extbits == 15) 4592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed |= ((extend & 0xf) << 11) | (extend & 0x7f0); 4593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed = ((extend >> 6) & 0x1f) | (extend & 0x20); 4595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed &= (1 << extbits) - 1; 4596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (! extu && immed >= (1 << (extbits - 1))) 4597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed -= 1 << extbits; 4598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (! pcrel) 4601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%d", immed); 4602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli bfd_vma baseaddr; 4605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (branch) 4607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli immed *= 2; 4609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli baseaddr = memaddr + 2; 4610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else if (use_extend) 4612409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli baseaddr = memaddr - 2; 4613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4614409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4615409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int status; 4616409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli bfd_byte buffer[2]; 4617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli baseaddr = memaddr; 4619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* If this instruction is in the delay slot of a jr 4621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction, the base address is the address of the 4622409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli jr instruction. If it is in the delay slot of jalr 4623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction, the base address is the address of the 4624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli jalr instruction. This test is unreliable: we have 4625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli no way of knowing whether the previous word is 4626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli instruction or data. */ 4627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli status = (*info->read_memory_func) (memaddr - 4, buffer, 2, 4628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info); 4629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (status == 0 4630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && (((info->endian == BFD_ENDIAN_BIG 4631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ? bfd_getb16 (buffer) 4632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli : bfd_getl16 (buffer)) 4633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli & 0xf800) == 0x1800)) 4634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli baseaddr = memaddr - 4; 4635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli status = (*info->read_memory_func) (memaddr - 2, buffer, 4638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 2, info); 4639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (status == 0 4640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && (((info->endian == BFD_ENDIAN_BIG 4641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ? bfd_getb16 (buffer) 4642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli : bfd_getl16 (buffer)) 4643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli & 0xf81f) == 0xe800)) 4644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli baseaddr = memaddr - 2; 4645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target = (baseaddr & ~((1 << shift) - 1)) + immed; 4648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (pcrel && branch 4649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli && info->flavour == bfd_target_unknown_flavour) 4650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* For gdb disassembler, maintain odd address. */ 4651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target |= 1; 4652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->print_address_func) (info->target, info); 4653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'a': 4658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int jalx = l & 0x400; 4660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (! use_extend) 4662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli extend = 0; 4663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli l = ((l & 0x1f) << 23) | ((l & 0x3e0) << 13) | (extend << 2); 4664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (!jalx && info->flavour == bfd_target_unknown_flavour) 4665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* For gdb disassembler, maintain odd address. */ 4666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli l |= 1; 4667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->target = ((memaddr + 4) & ~(bfd_vma) 0x0fffffff) | l; 4669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->print_address_func) (info->target, info); 4670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->insn_type = dis_jsr; 4671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli info->branch_delay_insns = 1; 4672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'l': 4675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'L': 4676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int need_comma, amask, smask; 4678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma = 0; 4680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli l = (l >> MIPS16OP_SH_IMM6) & MIPS16OP_MASK_IMM6; 4682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli amask = (l >> 3) & 7; 4684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (amask > 0 && amask < 5) 4686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[4]); 4688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (amask > 1) 4689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "-%s", 4690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[amask + 3]); 4691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma = 1; 4692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli smask = (l >> 1) & 3; 4695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (smask == 3) 4696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s??", 4698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma ? "," : ""); 4699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma = 1; 4700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else if (smask > 0) 4702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s%s", 4704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma ? "," : "", 4705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[16]); 4706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (smask > 1) 4707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "-%s", 4708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[smask + 15]); 4709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma = 1; 4710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (l & 1) 4713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s%s", 4715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma ? "," : "", 4716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[31]); 4717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma = 1; 4718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (amask == 5 || amask == 6) 4721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s$f0", 4723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma ? "," : ""); 4724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (amask == 6) 4725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "-$f1"); 4726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'm': 4731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli case 'M': 4732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* MIPS16e save/restore. */ 4733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int need_comma = 0; 4735409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int amask, args, statics; 4736409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int nsreg, smask; 4737409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int framesz; 4738409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli int i, j; 4739409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4740409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli l = l & 0x7f; 4741409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (use_extend) 4742409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli l |= extend << 16; 4743409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4744409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli amask = (l >> 16) & 0xf; 4745409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (amask == MIPS16_ALL_ARGS) 4746409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4747409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli args = 4; 4748409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli statics = 0; 4749409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4750409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else if (amask == MIPS16_ALL_STATICS) 4751409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4752409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli args = 0; 4753409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli statics = 4; 4754409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4755409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else 4756409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4757409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli args = amask >> 2; 4758409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli statics = amask & 3; 4759409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (args > 0) { 4762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[4]); 4763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (args > 1) 4764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "-%s", 4765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[4 + args - 1]); 4766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma = 1; 4767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli framesz = (((l >> 16) & 0xf0) | (l & 0x0f)) * 8; 4770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (framesz == 0 && !use_extend) 4771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli framesz = 128; 4772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "%s%d", 4774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli need_comma ? "," : "", 4775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli framesz); 4776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (l & 0x40) /* $ra */ 4778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[31]); 4779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli nsreg = (l >> 24) & 0x7; 4781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli smask = 0; 4782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (l & 0x20) /* $s0 */ 4783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli smask |= 1 << 0; 4784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (l & 0x10) /* $s1 */ 4785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli smask |= 1 << 1; 4786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (nsreg > 0) /* $s2-$s8 */ 4787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli smask |= ((1 << nsreg) - 1) << 2; 4788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Find first set static reg bit. */ 4790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (i = 0; i < 9; i++) 4791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (smask & (1 << i)) 4793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli { 4794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, ",%s", 4795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[i == 8 ? 30 : (16 + i)]); 4796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Skip over string of set bits. */ 4797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (j = i; smask & (2 << j); j++) 4798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli continue; 4799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (j > i) 4800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, "-%s", 4801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[j == 8 ? 30 : (16 + j)]); 4802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli i = j + 1; 4803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* Statics $ax - $a3. */ 4807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (statics == 1) 4808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[7]); 4809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli else if (statics > 0) 4810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) (info->stream, ",%s-%s", 4811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[7 - statics + 1], 4812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli mips_gpr_names[7]); 4813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli break; 4815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli default: 4817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli /* xgettext:c-format */ 4818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (*info->fprintf_func) 4819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli (info->stream, 4820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli _("# internal disassembler error, unrecognised modifier (%c)"), 4821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli type); 4822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli abort (); 4823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli } 4824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 4825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallivoid 4827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_mips_disassembler_options (FILE *stream) 4828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{ 4829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli unsigned int i; 4830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n\ 4832409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThe following MIPS specific disassembler options are supported for use\n\ 4833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliwith the -M switch (multiple options should be separated by commas):\n")); 4834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n\ 4836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli gpr-names=ABI Print GPR names according to specified ABI.\n\ 4837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Default: based on binary being disassembled.\n")); 4838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n\ 4840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fpr-names=ABI Print FPR names according to specified ABI.\n\ 4841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Default: numeric.\n")); 4842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n\ 4844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli cp0-names=ARCH Print CP0 register names according to\n\ 4845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli specified architecture.\n\ 4846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Default: based on binary being disassembled.\n")); 4847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n\ 48495aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner hwr-names=ARCH Print HWR names according to specified\n\ 4850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli architecture.\n\ 4851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli Default: based on binary being disassembled.\n")); 4852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n\ 4854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli reg-names=ABI Print GPR and FPR names according to\n\ 4855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli specified ABI.\n")); 4856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n\ 4858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli reg-names=ARCH Print CP0 register and HWR names according to\n\ 4859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli specified architecture.\n")); 4860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n\ 4862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli For the options above, the following values are supported for \"ABI\":\n\ 4863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ")); 4864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (i = 0; i < ARRAY_SIZE (mips_abi_choices); i++) 4865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, " %s", mips_abi_choices[i].name); 4866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n")); 4867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n\ 4869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli For the options above, The following values are supported for \"ARCH\":\n\ 4870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli ")); 4871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli for (i = 0; i < ARRAY_SIZE (mips_arch_choices); i++) 4872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli if (*mips_arch_choices[i].name != '\0') 4873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, " %s", mips_arch_choices[i].name); 4874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n")); 4875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli 4876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli fprintf (stream, _("\n")); 4877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli} 4878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif 4879