* parse.c (target_map_name_to_register): Check target specific
[deliverable/binutils-gdb.git] / opcodes / mips-opc.c
index 9f60a5a7d3a2508c4878f9fb525e7991a2471ae3..fb499a97e6a2fa0478f6c886e04faa41567b4705 100644 (file)
@@ -1,5 +1,5 @@
 /* mips.h.  Mips opcode list for GDB, the GNU debugger.
-   Copyright 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
    Contributed by Ralph Campbell and OSF
    Commented and modified by Ian Lance Taylor, Cygnus Support
 
@@ -139,6 +139,10 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"b",       "p",       0x04010000, 0xffff0000, UBD,            I1      },/* bgez 0 */
 {"bal",     "p",       0x04110000, 0xffff0000, UBD|WR_31,      I1      },/* bgezal 0*/
 
+/* start-sanitize-r5900 */
+#include "vu0.h"
+/* end-sanitize-r5900 */
+
 {"abs",     "d,v",     0,    (int) M_ABS,      INSN_MACRO,     I1      },
 {"abs.s",   "D,V",     0x46000005, 0xffff003f, WR_D|RD_S|FP_S, I1      },
 {"abs.d",   "D,V",     0x46200005, 0xffff003f, WR_D|RD_S|FP_D, I1      },
@@ -232,7 +236,11 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"bnel",    "s,t,p",   0x54000000, 0xfc000000, CBL|RD_s|RD_t,  I2|T3   },
 {"bnel",    "s,I,p",   0,    (int) M_BNEL_I,   INSN_MACRO,     I2      },
 {"break",   "",                0x0000000d, 0xffffffff, TRAP,           I1      },
-{"break",   "c",       0x0000000d, 0xfc00003f, TRAP,           I1      },
+/* start-sanitize-r5900 */
+{"break",   "B",       0x0000000d, 0xfc00003f, TRAP,           T5      },
+/* end-sanitize-r5900 */
+{"break",   "c",       0x0000000d, 0xfc00ffff, TRAP,           I1      },
+{"break",   "c,q",     0x0000000d, 0xfc00003f, TRAP,           I1      },
 {"c.f.d",   "S,T",     0x46200030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D,   I1      },
 {"c.f.d",   "M,S,T",   0x46200030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   I4      },
 {"c.f.s",   "S,T",     0x46000030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   I1      },
@@ -296,7 +304,7 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"c.le.d",  "M,S,T",   0x4620003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   I4      },
 /* start-sanitize-r5900 */
 {"c.le.s",  "S,T",     0x46000036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   T5      },
-/* end-santiize-r5900 */
+/* end-sanitize-r5900 */
 {"c.le.s",  "S,T",     0x4600003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   I1      },
 {"c.le.s",  "M,S,T",   0x4600003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   I4      },
 {"c.ngt.d", "S,T",     0x4620003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D,   I1      },
@@ -313,6 +321,9 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"cfc1",    "t,S",     0x44400000, 0xffe007ff, LCD|WR_t|RD_C1|FP_S,    I1      },
 {"cfc2",    "t,G",     0x48400000, 0xffe007ff, LCD|WR_t|RD_C2, I1      },
 {"cfc3",    "t,G",     0x4c400000, 0xffe007ff, LCD|WR_t|RD_C3, I1      },
+  /* start-sanitize-vr4320 */
+{"clz",    "d,s",      0x00000035, 0xfc1f07ff, WR_d|RD_s,      N4      },
+  /* end-sanitize-vr4320 */
 {"ctc0",    "t,G",     0x40c00000, 0xffe007ff, COD|RD_t|WR_CC, I1      },
 {"ctc1",    "t,G",     0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S,    I1      },
 {"ctc1",    "t,S",     0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S,    I1      },
@@ -338,6 +349,9 @@ const struct mips_opcode mips_builtin_opcodes[] = {
   /* start-sanitize-vr5400 */
 {"dbreak",  "",                0x7000003f, 0xffffffff, 0,      N5      },
   /* end-sanitize-vr5400 */
+  /* start-sanitize-vr4320 */
+{"dclz",    "d,s",     0x0000003D, 0xfc1f07ff, WR_d|RD_s,      N4      },
+  /* end-sanitize-vr4320 */
 /* dctr and dctw are used on the r5000.  */
 {"dctr",    "o(b)",    0xbc050000, 0xfc1f0000, RD_b,   I3      },
 {"dctw",    "o(b)",    0xbc090000, 0xfc1f0000, RD_b,   I3      },
@@ -534,32 +548,32 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"macc",    "d,s,t",   0x000000A8, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,N4},
   /* end-sanitize-vr4320 */
   /* start-sanitize-vr5400 */
-{"macc",    "d,s,t",   0x00000158, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,N5},
+{"macc",    "d,s,t",   0x00000158, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d,N5},
   /* end-sanitize-vr5400 */
   /* start-sanitize-vr4320 */
 {"maccu",   "d,s,t",   0x000000E8, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,N4},
   /* end-sanitize-vr4320 */
   /* start-sanitize-vr5400 */
-{"maccu",   "d,s,t",   0x00000159, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,N5},
+{"maccu",   "d,s,t",   0x00000159, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d,N5},
   /* end-sanitize-vr5400 */
   /* start-sanitize-vr4320 */
 {"macchi",  "d,s,t",   0x000002A8, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,N4},
   /* end-sanitize-vr4320 */
   /* start-sanitize-vr5400 */
-{"macchi",  "d,s,t",   0x00000358, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,N5},
+{"macchi",  "d,s,t",   0x00000358, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d,N5},
   /* end-sanitize-vr5400 */
   /* start-sanitize-vr4320 */
 {"macchiu", "d,s,t",   0x000002E8, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,N4},
   /* end-sanitize-vr4320 */
   /* start-sanitize-vr5400 */
-{"macchiu", "d,s,t",   0x00000359, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,N5},
+{"macchiu", "d,s,t",   0x00000359, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d,N5},
   /* end-sanitize-vr5400 */
 {"mad",            "s,t",      0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|RD_HI|RD_LO,      P3      },
 {"madu",    "s,t",     0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|RD_HI|RD_LO,      P3      },
 {"madd.d",  "D,R,S,T", 0x4c000021, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D,       I4      },
 {"madd.s",  "D,R,S,T", 0x4c000020, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S,       I4      },
 /* start-sanitize-r5900 */
-{"madd.s",  "D,S,T",   0x4600001c, 0xffe007ff, WR_D|RD_S|RD_T|FP_S,            T5      },
+{"madd.s",  "D,S,T",   0x4600001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_S,            T5      },
   /* end-sanitize-r5900 */
 {"madd",    "s,t",     0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,          L1      },
 {"madd",    "s,t",     0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,          G1      },
@@ -663,16 +677,16 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"movz.d",  "D,S,t",   0x46200012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D,    I4      },
 {"movz.s",  "D,S,t",   0x46000012, 0xffe0003f, WR_D|RD_S|RD_t|FP_S,    I4      },
   /* start-sanitize-vr5400 */
-{"msac",    "d,s,t",   0x000001d8, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,        N5      },
-{"msacu",   "d,s,t",   0x000001d9, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,        N5      },
-{"msachi",  "d,s,t",   0x000003d8, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,        N5      },
-{"msachiu", "d,s,t",   0x000003d9, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d,        N5      },
+{"msac",    "d,s,t",   0x000001d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5      },
+{"msacu",   "d,s,t",   0x000001d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5      },
+{"msachi",  "d,s,t",   0x000003d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5      },
+{"msachiu", "d,s,t",   0x000003d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5      },
   /* end-sanitize-vr5400 */
 /* move is at the top of the table.  */
 {"msub.d",  "D,R,S,T", 0x4c000029, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D,       I4      },
 {"msub.s",  "D,R,S,T", 0x4c000028, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S,       I4      },
 /* start-sanitize-r5900 */
-{"msub.s",  "D,S,T",   0x4600001d, 0xffe007ff, WR_D|RD_S|RD_T|FP_S,    T5      },
+{"msub.s",  "D,S,T",   0x4600001d, 0xffe0003f, WR_D|RD_S|RD_T|FP_S,    T5      },
 /* end-sanitize-r5900 */
 {"msub",    "s,t",     0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,L1        },
 {"msubu",   "s,t",     0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,L1        },
@@ -737,11 +751,13 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"mult",    "s,t",     0x00000018, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,      I1},
 {"mult",    "d,s,t",   0x00000018, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, G1},
   /* start-sanitize-r5900 */
+{"mult1",   "s,t",     0x70000018, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,      T5},
 {"mult1",   "d,s,t",   0x70000018, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, T5},
   /* end-sanitize-r5900 */
 {"multu",   "s,t",     0x00000019, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,      I1},
 {"multu",   "d,s,t",   0x00000019, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, G1},
   /* start-sanitize-r5900 */
+{"multu1",  "s,t",     0x70000019, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,      T5},
 {"multu1",  "d,s,t",   0x70000019, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, T5},
   /* end-sanitize-r5900 */
 {"neg",     "d,w",     0x00000022, 0xffe007ff, WR_d|RD_t,      I1      }, /* sub 0 */
@@ -917,7 +933,7 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"rsqrt.d", "D,S",     0x46200016, 0xffff003f, WR_D|RD_S|FP_D, I4      },
 {"rsqrt.s", "D,S",     0x46000016, 0xffff003f, WR_D|RD_S|FP_S, I4      },
 /* start-sanitize-r5900 */
-{"rsqrt.s", "D,S",     0x46000016, 0xffff003f, WR_D|RD_S|FP_S, T5      },
+{"rsqrt.s", "D,S,T",   0x46000016, 0xffe0003f, WR_D|RD_S|FP_S, T5      },
 /* end-sanitize-r5900 */
 {"sb",      "t,o(b)",  0xa0000000, 0xfc000000, SM|RD_t|RD_b,   I1      },
 {"sb",      "t,A(b)",  0,    (int) M_SB_AB,    INSN_MACRO,     I1      },
@@ -929,7 +945,8 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"sd",      "t,o(b)",  0,    (int) M_SD_OB,    INSN_MACRO,     I1      },
 {"sd",      "t,A(b)",  0,    (int) M_SD_AB,    INSN_MACRO,     I1      },
 {"sdbbp",   "",                0x0000000e, 0xffffffff, TRAP,           G2      },
-{"sdbbp",   "c",       0x0000000e, 0xfc00003f, TRAP,           G2      },
+{"sdbbp",   "c",       0x0000000e, 0xfc00ffff, TRAP,           G2      },
+{"sdbbp",   "c,q",     0x0000000e, 0xfc00003f, TRAP,           G2      },
 {"sdc1",    "T,o(b)",  0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D,      I2      },
 {"sdc1",    "E,o(b)",  0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D,      I2      },
 {"sdc1",    "T,A(b)",  0,    (int) M_SDC1_AB,  INSN_MACRO,     I2      },
@@ -979,6 +996,9 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"sq",     "t,o(b)",   0x7c000000, 0xfc000000, SM|RD_t|RD_b,   T5      },
   /* end-sanitize-r5900 */
 {"sqrt.d",  "D,S",     0x46200004, 0xffff003f, WR_D|RD_S|FP_D, I2      },
+/* start-sanitize-r5900 */
+{"sqrt.s",  "D,T",     0x46000004, 0xffe0f83f, WR_D|RD_S|FP_S, T5      },
+/* end-sanitize-r5900 */
 {"sqrt.s",  "D,S",     0x46000004, 0xffff003f, WR_D|RD_S|FP_S, I2      },
 {"srav",    "d,t,s",   0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, I1      },
 {"sra",     "d,w,s",   0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, I1      }, /* srav */
@@ -1018,18 +1038,23 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"invalidate", "t,A(b)",0,    (int) M_SWR_AB,  INSN_MACRO,     I2      }, /* as swr */
 {"swxc1",   "S,t(b)",   0x4c000008, 0xfc0007ff, SM|RD_S|RD_t|RD_b,     I4      },
 {"sync",    "",                0x0000000f, 0xffffffff, 0,              I2|T3   },
+{"sync.p",  "",                0x0000000f, 0xffffffff, 0,              I2      },
+{"sync.l",  "",                0x0000040f, 0xffffffff, 0,              I2      },
 {"syscall", "",                0x0000000c, 0xffffffff, TRAP,   I1              },
 {"syscall", "B",       0x0000000c, 0xfc00003f, TRAP,   I1              },
 {"teqi",    "s,j",     0x040c0000, 0xfc1f0000, RD_s|TRAP,      I2      },
-{"teq",            "s,t",      0x00000034, 0xfc00003f, RD_s|RD_t|TRAP, I2      },
+{"teq",            "s,t",      0x00000034, 0xfc00ffff, RD_s|RD_t|TRAP, I2      },
+{"teq",            "s,t,q",    0x00000034, 0xfc00003f, RD_s|RD_t|TRAP, I2      },
 {"teq",     "s,j",     0x040c0000, 0xfc1f0000, RD_s|TRAP,      I2      }, /* teqi */
 {"teq",     "s,I",     0,    (int) M_TEQ_I,    INSN_MACRO,     I2      },
 {"tgei",    "s,j",     0x04080000, 0xfc1f0000, RD_s|TRAP,      I2      },
-{"tge",            "s,t",      0x00000030, 0xfc00003f, RD_s|RD_t|TRAP, I2      },
+{"tge",            "s,t",      0x00000030, 0xfc00ffff, RD_s|RD_t|TRAP, I2      },
+{"tge",            "s,t,q",    0x00000030, 0xfc00003f, RD_s|RD_t|TRAP, I2      },
 {"tge",     "s,j",     0x04080000, 0xfc1f0000, RD_s|TRAP,      I2      }, /* tgei */
 {"tge",            "s,I",      0,    (int) M_TGE_I,    INSN_MACRO,     I2      },
 {"tgeiu",   "s,j",     0x04090000, 0xfc1f0000, RD_s|TRAP,      I2              },
-{"tgeu",    "s,t",     0x00000031, 0xfc00003f, RD_s|RD_t|TRAP, I2       },
+{"tgeu",    "s,t",     0x00000031, 0xfc00ffff, RD_s|RD_t|TRAP, I2       },
+{"tgeu",    "s,t,q",   0x00000031, 0xfc00003f, RD_s|RD_t|TRAP, I2       },
 {"tgeu",    "s,j",     0x04090000, 0xfc1f0000, RD_s|TRAP,      I2              }, /* tgeiu */
 {"tgeu",    "s,I",     0,    (int) M_TGEU_I,   INSN_MACRO,     I2      },
 {"tlbp",    "",                0x42000008, 0xffffffff, INSN_TLB,       I1      },
@@ -1037,15 +1062,18 @@ const struct mips_opcode mips_builtin_opcodes[] = {
 {"tlbwi",   "",                0x42000002, 0xffffffff, INSN_TLB,       I1      },
 {"tlbwr",   "",                0x42000006, 0xffffffff, INSN_TLB,       I1      },
 {"tlti",    "s,j",     0x040a0000, 0xfc1f0000, RD_s|TRAP,      I2              },
-{"tlt",     "s,t",     0x00000032, 0xfc00003f, RD_s|RD_t|TRAP, I2       },
+{"tlt",     "s,t",     0x00000032, 0xfc00ffff, RD_s|RD_t|TRAP, I2       },
+{"tlt",     "s,t,q",   0x00000032, 0xfc00003f, RD_s|RD_t|TRAP, I2       },
 {"tlt",     "s,j",     0x040a0000, 0xfc1f0000, RD_s|TRAP,      I2              }, /* tlti */
 {"tlt",     "s,I",     0,    (int) M_TLT_I,    INSN_MACRO,     I2      },
 {"tltiu",   "s,j",     0x040b0000, 0xfc1f0000, RD_s|TRAP,      I2              },
-{"tltu",    "s,t",     0x00000033, 0xfc00003f, RD_s|RD_t|TRAP, I2       },
+{"tltu",    "s,t",     0x00000033, 0xfc00ffff, RD_s|RD_t|TRAP, I2       },
+{"tltu",    "s,t,q",   0x00000033, 0xfc00003f, RD_s|RD_t|TRAP, I2       },
 {"tltu",    "s,j",     0x040b0000, 0xfc1f0000, RD_s|TRAP,      I2              }, /* tltiu */
 {"tltu",    "s,I",     0,    (int) M_TLTU_I,   INSN_MACRO,     I2      },
 {"tnei",    "s,j",     0x040e0000, 0xfc1f0000, RD_s|TRAP,      I2              },
-{"tne",     "s,t",     0x00000036, 0xfc00003f, RD_s|RD_t|TRAP, I2       },
+{"tne",     "s,t",     0x00000036, 0xfc00ffff, RD_s|RD_t|TRAP, I2       },
+{"tne",     "s,t,q",   0x00000036, 0xfc00003f, RD_s|RD_t|TRAP, I2       },
 {"tne",     "s,j",     0x040e0000, 0xfc1f0000, RD_s|TRAP,      I2              }, /* tnei */
 {"tne",     "s,I",     0,    (int) M_TNE_I,    INSN_MACRO,     I2      },
 {"trunc.l.d", "D,S",   0x46200009, 0xffff003f, WR_D|RD_S|FP_D, I3      },
This page took 0.026128 seconds and 4 git commands to generate.