PowerPC Improve support for Gekko & Broadway

This is a relatively straightforward patch to improve support for the
IBM Gekko and IBM Broadway processors.  Broadway is functionally
equivalent to the IBM 750CL, while Gekko's functionality is a subset
of theirs.  The patch simplifies this reality and adds -mgekko and
-mbroadway as aliases for -m750cl.  I didn't feel it was worth wasting
a PPC_OPCODE_* bit to differentiate Gekko.  The patch adds a number of
simplified mnemonics for special purpose register access.  Notably,
Broadway adds 4 additional IBAT and DBAT registers but these are not
assigned sequential SPR numbers.

gas/
	* config/tc-ppc.c (md_show_usage): Add -mgekko and -mbroadway.
	* doc/as.texi (Target PowerPC options): Add -mgekko and -mbroadway.
	* doc/c-ppc.texi (PowerPC-Opts): Likewise.
	* testsuite/gas/ppc/broadway.d,
	* testsuite/gas/ppc/broadway.s: New test for broadway.
	* testsuite/gas/ppc/ppc.exp: Run new test.
include/
	* opcode/ppc.h (PPC_OPCODE_750): Adjust comment.
opcodes/
	* ppc-dis.c (ppc_opts): Add -mgekko and -mbroadway.
	(powerpc_init_dialect): Handle bfd_mach_ppc_750.
	* ppc-opc.c (insert_sprbat, extract_sprbat): New functions to
	support disjointed BAT.
	(powerpc_operands): Allow extra bit in SPRBAT_MASK.  Add SPRGQR.
	(XSPRGQR_MASK, GEKKO, BROADWAY): Define.
	(powerpc_opcodes): Add 750cl extended mnemonics for spr access.
This commit is contained in:
Alex Chadwick
2018-07-24 09:21:44 +09:30
committed by Alan Modra
parent b358827438
commit fa758a7046
12 changed files with 323 additions and 13 deletions

View File

@ -1,3 +1,12 @@
2018-07-26 Alex Chadwick <Alex.Chadwick@cl.cam.ac.uk>
* config/tc-ppc.c (md_show_usage): Add -mgekko and -mbroadway.
* doc/as.texi (Target PowerPC options): Add -mgekko and -mbroadway.
* doc/c-ppc.texi (PowerPC-Opts): Likewise.
* testsuite/gas/ppc/broadway.d,
* testsuite/gas/ppc/broadway.s: New test for broadway.
* testsuite/gas/ppc/ppc.exp: Run new test.
2018-07-26 Alan Modra <amodra@gmail.com>
* config/tc-ppc.c (ppc_elf_localentry): Allow .localentry values

View File

@ -1340,7 +1340,8 @@ PowerPC options:\n\
-m476 generate code for PowerPC 476\n\
-m7400, -m7410, -m7450, -m7455\n\
generate code for PowerPC 7400/7410/7450/7455\n\
-m750cl generate code for PowerPC 750cl\n\
-m750cl, -mgekko, -mbroadway\n\
generate code for PowerPC 750cl/Gekko/Broadway\n\
-m821, -m850, -m860 generate code for PowerPC 821/850/860\n"));
fprintf (stream, _("\
-mppc64, -m620 generate code for PowerPC 620/625/630\n\

View File

@ -476,10 +476,10 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
@emph{Target PowerPC options:}
[@b{-a32}|@b{-a64}]
[@b{-mpwrx}|@b{-mpwr2}|@b{-mpwr}|@b{-m601}|@b{-mppc}|@b{-mppc32}|@b{-m603}|@b{-m604}|@b{-m403}|@b{-m405}|
@b{-m440}|@b{-m464}|@b{-m476}|@b{-m7400}|@b{-m7410}|@b{-m7450}|@b{-m7455}|@b{-m750cl}|@b{-mppc64}|
@b{-m620}|@b{-me500}|@b{-e500x2}|@b{-me500mc}|@b{-me500mc64}|@b{-me5500}|@b{-me6500}|@b{-mppc64bridge}|
@b{-mbooke}|@b{-mpower4}|@b{-mpwr4}|@b{-mpower5}|@b{-mpwr5}|@b{-mpwr5x}|@b{-mpower6}|@b{-mpwr6}|
@b{-mpower7}|@b{-mpwr7}|@b{-mpower8}|@b{-mpwr8}|@b{-mpower9}|@b{-mpwr9}@b{-ma2}|
@b{-m440}|@b{-m464}|@b{-m476}|@b{-m7400}|@b{-m7410}|@b{-m7450}|@b{-m7455}|@b{-m750cl}|@b{-mgekko}|
@b{-mbroadway}|@b{-mppc64}|@b{-m620}|@b{-me500}|@b{-e500x2}|@b{-me500mc}|@b{-me500mc64}|@b{-me5500}|
@b{-me6500}|@b{-mppc64bridge}|@b{-mbooke}|@b{-mpower4}|@b{-mpwr4}|@b{-mpower5}|@b{-mpwr5}|@b{-mpwr5x}|
@b{-mpower6}|@b{-mpwr6}|@b{-mpower7}|@b{-mpwr7}|@b{-mpower8}|@b{-mpwr8}|@b{-mpower9}|@b{-mpwr9}@b{-ma2}|
@b{-mcell}|@b{-mspe}|@b{-mspe2}|@b{-mtitan}|@b{-me300}|@b{-mcom}]
[@b{-many}] [@b{-maltivec}|@b{-mvsx}|@b{-mhtm}|@b{-mvle}]
[@b{-mregnames}|@b{-mno-regnames}]

View File

@ -72,8 +72,8 @@ Generate code for PowerPC 476.
@item -m7400, -m7410, -m7450, -m7455
Generate code for PowerPC 7400/7410/7450/7455.
@item -m750cl
Generate code for PowerPC 750CL.
@item -m750cl, -mgekko, -mbroadway
Generate code for PowerPC 750CL/Gekko/Broadway.
@item -m821, -m850, -m860
Generate code for PowerPC 821/850/860.

View File

@ -0,0 +1,108 @@
#as: -mbroadway
#objdump: -dr -Mbroadway
#name: PPC Broadway instructions
.*
Disassembly of section \.text:
0+0000000 <start>:
0: (7c 12 fa a6|a6 fa 12 7c) mfiabr r0
4: (7c 32 fb a6|a6 fb 32 7c) mtiabr r1
8: (7c 55 fa a6|a6 fa 55 7c) mfdabr r2
c: (7c 75 fb a6|a6 fb 75 7c) mtdabr r3
10: (7c 90 e2 a6|a6 e2 90 7c) mfgqr r4,0
14: (7c b1 e2 a6|a6 e2 b1 7c) mfgqr r5,1
18: (7c d2 e2 a6|a6 e2 d2 7c) mfgqr r6,2
1c: (7c f3 e2 a6|a6 e2 f3 7c) mfgqr r7,3
20: (7d 14 e2 a6|a6 e2 14 7d) mfgqr r8,4
24: (7d 35 e2 a6|a6 e2 35 7d) mfgqr r9,5
28: (7d 56 e2 a6|a6 e2 56 7d) mfgqr r10,6
2c: (7d 77 e2 a6|a6 e2 77 7d) mfgqr r11,7
30: (7c 90 e3 a6|a6 e3 90 7c) mtgqr 0,r4
34: (7c b1 e3 a6|a6 e3 b1 7c) mtgqr 1,r5
38: (7c d2 e3 a6|a6 e3 d2 7c) mtgqr 2,r6
3c: (7c f3 e3 a6|a6 e3 f3 7c) mtgqr 3,r7
40: (7d 14 e3 a6|a6 e3 14 7d) mtgqr 4,r8
44: (7d 35 e3 a6|a6 e3 35 7d) mtgqr 5,r9
48: (7d 56 e3 a6|a6 e3 56 7d) mtgqr 6,r10
4c: (7d 77 e3 a6|a6 e3 77 7d) mtgqr 7,r11
50: (7d 99 e2 a6|a6 e2 99 7d) mfwpar r12
54: (7d b9 e3 a6|a6 e3 b9 7d) mtwpar r13
58: (7d db e2 a6|a6 e2 db 7d) mfdmal r14
5c: (7d fb e3 a6|a6 e3 fb 7d) mtdmal r15
60: (7e 1a e2 a6|a6 e2 1a 7e) mfdmau r16
64: (7e 3a e3 a6|a6 e3 3a 7e) mtdmau r17
68: (7e 50 fa a6|a6 fa 50 7e) mfhid0 r18
6c: (7e 70 fb a6|a6 fb 70 7e) mthid0 r19
70: (7e 91 fa a6|a6 fa 91 7e) mfhid1 r20
74: (7e b1 fb a6|a6 fb b1 7e) mthid1 r21
78: (7e d8 e2 a6|a6 e2 d8 7e) mfhid2 r22
7c: (7e f8 e3 a6|a6 e3 f8 7e) mthid2 r23
80: (7f 13 fa a6|a6 fa 13 7f) mfhid4 r24
84: (7f 33 fb a6|a6 fb 33 7f) mthid4 r25
88: (7c 10 82 a6|a6 82 10 7c) mfibatu r0,0
8c: (7c 30 83 a6|a6 83 30 7c) mtibatu 0,r1
90: (7c 52 82 a6|a6 82 52 7c) mfibatu r2,1
94: (7c 72 83 a6|a6 83 72 7c) mtibatu 1,r3
98: (7c 94 82 a6|a6 82 94 7c) mfibatu r4,2
9c: (7c b4 83 a6|a6 83 b4 7c) mtibatu 2,r5
a0: (7c d6 82 a6|a6 82 d6 7c) mfibatu r6,3
a4: (7c f6 83 a6|a6 83 f6 7c) mtibatu 3,r7
a8: (7d 10 8a a6|a6 8a 10 7d) mfibatu r8,4
ac: (7d 30 8b a6|a6 8b 30 7d) mtibatu 4,r9
b0: (7d 52 8a a6|a6 8a 52 7d) mfibatu r10,5
b4: (7d 72 8b a6|a6 8b 72 7d) mtibatu 5,r11
b8: (7d 94 8a a6|a6 8a 94 7d) mfibatu r12,6
bc: (7d b4 8b a6|a6 8b b4 7d) mtibatu 6,r13
c0: (7d d6 8a a6|a6 8a d6 7d) mfibatu r14,7
c4: (7d f6 8b a6|a6 8b f6 7d) mtibatu 7,r15
c8: (7e 11 82 a6|a6 82 11 7e) mfibatl r16,0
cc: (7e 31 83 a6|a6 83 31 7e) mtibatl 0,r17
d0: (7e 53 82 a6|a6 82 53 7e) mfibatl r18,1
d4: (7e 73 83 a6|a6 83 73 7e) mtibatl 1,r19
d8: (7e 95 82 a6|a6 82 95 7e) mfibatl r20,2
dc: (7e b5 83 a6|a6 83 b5 7e) mtibatl 2,r21
e0: (7e d7 82 a6|a6 82 d7 7e) mfibatl r22,3
e4: (7e f7 83 a6|a6 83 f7 7e) mtibatl 3,r23
e8: (7f 11 8a a6|a6 8a 11 7f) mfibatl r24,4
ec: (7f 31 8b a6|a6 8b 31 7f) mtibatl 4,r25
f0: (7f 53 8a a6|a6 8a 53 7f) mfibatl r26,5
f4: (7f 73 8b a6|a6 8b 73 7f) mtibatl 5,r27
f8: (7f 95 8a a6|a6 8a 95 7f) mfibatl r28,6
fc: (7f b5 8b a6|a6 8b b5 7f) mtibatl 6,r29
100: (7f d7 8a a6|a6 8a d7 7f) mfibatl r30,7
104: (7f f7 8b a6|a6 8b f7 7f) mtibatl 7,r31
108: (7c 18 82 a6|a6 82 18 7c) mfdbatu r0,0
10c: (7c 38 83 a6|a6 83 38 7c) mtdbatu 0,r1
110: (7c 5a 82 a6|a6 82 5a 7c) mfdbatu r2,1
114: (7c 7a 83 a6|a6 83 7a 7c) mtdbatu 1,r3
118: (7c 9c 82 a6|a6 82 9c 7c) mfdbatu r4,2
11c: (7c bc 83 a6|a6 83 bc 7c) mtdbatu 2,r5
120: (7c de 82 a6|a6 82 de 7c) mfdbatu r6,3
124: (7c fe 83 a6|a6 83 fe 7c) mtdbatu 3,r7
128: (7d 18 8a a6|a6 8a 18 7d) mfdbatu r8,4
12c: (7d 38 8b a6|a6 8b 38 7d) mtdbatu 4,r9
130: (7d 5a 8a a6|a6 8a 5a 7d) mfdbatu r10,5
134: (7d 7a 8b a6|a6 8b 7a 7d) mtdbatu 5,r11
138: (7d 9c 8a a6|a6 8a 9c 7d) mfdbatu r12,6
13c: (7d bc 8b a6|a6 8b bc 7d) mtdbatu 6,r13
140: (7d de 8a a6|a6 8a de 7d) mfdbatu r14,7
144: (7d fe 8b a6|a6 8b fe 7d) mtdbatu 7,r15
148: (7e 19 82 a6|a6 82 19 7e) mfdbatl r16,0
14c: (7e 39 83 a6|a6 83 39 7e) mtdbatl 0,r17
150: (7e 5b 82 a6|a6 82 5b 7e) mfdbatl r18,1
154: (7e 7b 83 a6|a6 83 7b 7e) mtdbatl 1,r19
158: (7e 9d 82 a6|a6 82 9d 7e) mfdbatl r20,2
15c: (7e bd 83 a6|a6 83 bd 7e) mtdbatl 2,r21
160: (7e df 82 a6|a6 82 df 7e) mfdbatl r22,3
164: (7e ff 83 a6|a6 83 ff 7e) mtdbatl 3,r23
168: (7f 19 8a a6|a6 8a 19 7f) mfdbatl r24,4
16c: (7f 39 8b a6|a6 8b 39 7f) mtdbatl 4,r25
170: (7f 5b 8a a6|a6 8a 5b 7f) mfdbatl r26,5
174: (7f 7b 8b a6|a6 8b 7b 7f) mtdbatl 5,r27
178: (7f 9d 8a a6|a6 8a 9d 7f) mfdbatl r28,6
17c: (7f bd 8b a6|a6 8b bd 7f) mtdbatl 6,r29
180: (7f df 8a a6|a6 8a df 7f) mfdbatl r30,7
184: (7f ff 8b a6|a6 8b ff 7f) mtdbatl 7,r31
#pass

View File

@ -0,0 +1,103 @@
# PowerPC Broadway instruction tests
.text
start:
mfiabr 0
mtiabr 1
mfdabr 2
mtdabr 3
mfgqr 4, 0
mfgqr 5, 1
mfgqr 6, 2
mfgqr 7, 3
mfgqr 8, 4
mfgqr 9, 5
mfgqr 10, 6
mfgqr 11, 7
mtgqr 0, 4
mtgqr 1, 5
mtgqr 2, 6
mtgqr 3, 7
mtgqr 4, 8
mtgqr 5, 9
mtgqr 6, 10
mtgqr 7, 11
mfwpar 12
mtwpar 13
mfdmal 14
mtdmal 15
mfdmau 16
mtdmau 17
mfhid0 18
mthid0 19
mfhid1 20
mthid1 21
mfhid2 22
mthid2 23
mfhid4 24
mthid4 25
mfibatu 0, 0
mtibatu 0, 1
mfibatu 2, 1
mtibatu 1, 3
mfibatu 4, 2
mtibatu 2, 5
mfibatu 6, 3
mtibatu 3, 7
mfibatu 8, 4
mtibatu 4, 9
mfibatu 10, 5
mtibatu 5, 11
mfibatu 12, 6
mtibatu 6, 13
mfibatu 14, 7
mtibatu 7, 15
mfibatl 16, 0
mtibatl 0, 17
mfibatl 18, 1
mtibatl 1, 19
mfibatl 20, 2
mtibatl 2, 21
mfibatl 22, 3
mtibatl 3, 23
mfibatl 24, 4
mtibatl 4, 25
mfibatl 26, 5
mtibatl 5, 27
mfibatl 28, 6
mtibatl 6, 29
mfibatl 30, 7
mtibatl 7, 31
mfdbatu 0, 0
mtdbatu 0, 1
mfdbatu 2, 1
mtdbatu 1, 3
mfdbatu 4, 2
mtdbatu 2, 5
mfdbatu 6, 3
mtdbatu 3, 7
mfdbatu 8, 4
mtdbatu 4, 9
mfdbatu 10, 5
mtdbatu 5, 11
mfdbatu 12, 6
mtdbatu 6, 13
mfdbatu 14, 7
mtdbatu 7, 15
mfdbatl 16, 0
mtdbatl 0, 17
mfdbatl 18, 1
mtdbatl 1, 19
mfdbatl 20, 2
mtdbatl 2, 21
mfdbatl 22, 3
mtdbatl 3, 23
mfdbatl 24, 4
mtdbatl 4, 25
mfdbatl 26, 5
mtdbatl 5, 27
mfdbatl 28, 6
mtdbatl 6, 29
mfdbatl 30, 7
mtdbatl 7, 31

View File

@ -90,6 +90,7 @@ run_dump_test "spe_ambiguous"
run_dump_test "altivec"
run_dump_test "altivec2"
run_dump_test "altivec3"
run_dump_test "broadway"
run_dump_test "booke"
run_dump_test "e500"
run_list_test "e500-ill" "-me500"

View File

@ -1,3 +1,7 @@
2018-07-26 Alex Chadwick <Alex.Chadwick@cl.cam.ac.uk>
* opcode/ppc.h (PPC_OPCODE_750): Adjust comment.
2018-07-26 Alan Modra <amodra@gmail.com>
* elf/ppc64.h: Specify byte offset to local entry for values

View File

@ -204,7 +204,7 @@ extern const unsigned int spe2_num_opcodes;
/* Opcode is only supported by Power8 architecture. */
#define PPC_OPCODE_POWER8 0x1000000000ull
/* Opcode is supported by ppc750cl. */
/* Opcode is supported by ppc750cl/Gekko/Broadway. */
#define PPC_OPCODE_750 0x2000000000ull
/* Opcode is supported by ppc7450. */

View File

@ -1,3 +1,14 @@
2018-07-26 Alex Chadwick <Alex.Chadwick@cl.cam.ac.uk>
Alan Modra <amodra@gmail.com>
* ppc-dis.c (ppc_opts): Add -mgekko and -mbroadway.
(powerpc_init_dialect): Handle bfd_mach_ppc_750.
* ppc-opc.c (insert_sprbat, extract_sprbat): New functions to
support disjointed BAT.
(powerpc_operands): Allow extra bit in SPRBAT_MASK. Add SPRGQR.
(XSPRGQR_MASK, GEKKO, BROADWAY): Define.
(powerpc_opcodes): Add 750cl extended mnemonics for spr access.
2018-07-25 H.J. Lu <hongjiu.lu@intel.com>
Igor Tsimbalist <igor.v.tsimbalist@intel.com>

View File

@ -94,6 +94,10 @@ struct ppc_mopt ppc_opts[] = {
0 },
{ "750cl", PPC_OPCODE_PPC | PPC_OPCODE_750 | PPC_OPCODE_PPCPS
, 0 },
{ "gekko", PPC_OPCODE_PPC | PPC_OPCODE_750 | PPC_OPCODE_PPCPS
, 0 },
{ "broadway", PPC_OPCODE_PPC | PPC_OPCODE_750 | PPC_OPCODE_PPCPS
, 0 },
{ "821", PPC_OPCODE_PPC | PPC_OPCODE_860,
0 },
{ "850", PPC_OPCODE_PPC | PPC_OPCODE_860,
@ -313,6 +317,9 @@ powerpc_init_dialect (struct disassemble_info *info)
case bfd_mach_ppc_601:
dialect = ppc_parse_cpu (dialect, &sticky, "601");
break;
case bfd_mach_ppc_750:
dialect = ppc_parse_cpu (dialect, &sticky, "750cl");
break;
case bfd_mach_ppc_a35:
case bfd_mach_ppc_rs64ii:
case bfd_mach_ppc_rs64iii:

View File

@ -1187,6 +1187,41 @@ extract_spr (uint64_t insn,
return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
}
/* Some dialects have 8 [DI]BAT registers instead of the standard 4. */
#define ALLOW8_BAT (PPC_OPCODE_750)
static unsigned long
insert_sprbat (unsigned long insn,
long value,
ppc_cpu_t dialect,
const char **errmsg)
{
if (value > 7
|| (value > 3 && (dialect & ALLOW8_BAT) == 0))
*errmsg = _("invalid bat number");
/* If this is [di]bat4..7 then use spr 560..575, otherwise 528..543. */
if (value > 3)
value = ((value & 3) << 6) | 1;
else
value = value << 6;
return insn | (value << 11);
}
static long
extract_sprbat (unsigned long insn,
ppc_cpu_t dialect,
int *invalid)
{
unsigned long val = (insn >> 17) & 0x3;
val = val + ((insn >> 9) & 0x4);
if (val > 3 && (dialect & ALLOW8_BAT) == 0)
*invalid = 1;
return val;
}
/* Some dialects have 8 SPRG registers instead of the standard 4. */
#define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
@ -2305,11 +2340,16 @@ const struct powerpc_operand powerpc_operands[] =
/* The BAT index number in an XFX form m[ft]ibat[lu] instruction. */
#define SPRBAT SPR + 1
#define SPRBAT_MASK (0x3 << 17)
{ 0x3, 17, NULL, NULL, 0 },
#define SPRBAT_MASK (0xc1 << 11)
{ 0x7, PPC_OPSHIFT_INV, insert_sprbat, extract_sprbat, PPC_OPERAND_SPR },
/* The GQR index number in an XFX form m[ft]gqr instruction. */
#define SPRGQR SPRBAT + 1
#define SPRGQR_MASK (0x7 << 16)
{ 0x7, 16, NULL, NULL, PPC_OPERAND_GQR },
/* The SPRG register number in an XFX form m[ft]sprg instruction. */
#define SPRG SPRBAT + 1
#define SPRG SPRGQR + 1
{ 0x1f, 16, insert_sprg, extract_sprg, PPC_OPERAND_SPR },
/* The SR field in an X form instruction. */
@ -3365,6 +3405,10 @@ const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
SPRBAT field. */
#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
/* An XFX form instruction with the SPR field filled in except for the
SPRGQR field. */
#define XSPRGQR_MASK (XSPR_MASK &~ SPRGQR_MASK)
/* An XFX form instruction with the SPR field filled in except for the
SPRG field. */
#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
@ -3480,6 +3524,8 @@ const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
#define PPC464 PPC440
#define PPC476 PPC_OPCODE_476
#define PPC750 PPC_OPCODE_750
#define GEKKO PPC_OPCODE_750
#define BROADWAY PPC_OPCODE_750
#define PPC7450 PPC_OPCODE_7450
#define PPC860 PPC_OPCODE_860
#define PPCPS PPC_OPCODE_PPCPS
@ -3512,7 +3558,7 @@ const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
#define PPCPMR PPC_OPCODE_PMR
#define PPCTMR PPC_OPCODE_TMR
#define PPCCHLK PPC_OPCODE_CACHELCK
#define PPCRFMCI PPC_OPCODE_RFMCI
#define PPCRFMCI PPC_OPCODE_RFMCI
#define E500MC PPC_OPCODE_E500MC
#define PPCA2 PPC_OPCODE_A2
#define TITAN PPC_OPCODE_TITAN
@ -5939,6 +5985,11 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, 0, {RT}},
{"mfppr", XSPR(31,339,896), XSPR_MASK, POWER7, 0, {RT}},
{"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER7, 0, {RT}},
{"mfgqr", XSPR(31,339,912), XSPRGQR_MASK, PPCPS, 0, {RT, SPRGQR}},
{"mfhid2", XSPR(31,339,920), XSPR_MASK, GEKKO, 0, {RT}},
{"mfwpar", XSPR(31,339,921), XSPR_MASK, GEKKO, 0, {RT}},
{"mfdmau", XSPR(31,339,922), XSPR_MASK, GEKKO, 0, {RT}},
{"mfdmal", XSPR(31,339,923), XSPR_MASK, GEKKO, 0, {RT}},
{"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, 0, {RT}},
{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, 0, {RT}},
{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, 0, {RT}},
@ -5983,10 +6034,15 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, 0, {RT}},
{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, 0, {RT}},
{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, 0, {RT}},
{"mfhid0", XSPR(31,339,1008), XSPR_MASK, GEKKO, 0, {RT}},
{"mfhid1", XSPR(31,339,1009), XSPR_MASK, GEKKO, 0, {RT}},
{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, 0, {RT}},
{"mfiabr", XSPR(31,339,1010), XSPR_MASK, GEKKO, 0, {RT}},
{"mfhid4", XSPR(31,339,1011), XSPR_MASK, BROADWAY, 0, {RT}},
{"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, 0, {RS}},
{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, 0, {RT}},
{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, 0, {RT}},
{"mfdabr", XSPR(31,339,1013), XSPR_MASK, PPC750, 0, {RT}},
{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, 0, {RT}},
{"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, 0, {RT}},
{"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, 0, {RT}},
@ -6269,6 +6325,11 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, 0, {RS}},
{"mtppr", XSPR(31,467,896), XSPR_MASK, POWER7, 0, {RS}},
{"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER7, 0, {RS}},
{"mtgqr", XSPR(31,467,912), XSPRGQR_MASK, PPCPS, 0, {SPRGQR, RS}},
{"mthid2", XSPR(31,467,920), XSPR_MASK, GEKKO, 0, {RS}},
{"mtwpar", XSPR(31,467,921), XSPR_MASK, GEKKO, 0, {RS}},
{"mtdmau", XSPR(31,467,922), XSPR_MASK, GEKKO, 0, {RS}},
{"mtdmal", XSPR(31,467,923), XSPR_MASK, GEKKO, 0, {RS}},
{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, 0, {RS}},
{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, 0, {RS}},
{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, 0, {RS}},
@ -6309,10 +6370,15 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, 0, {RS}},
{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, 0, {RS}},
{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, 0, {RS}},
{"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, 0, {RS}},
{"mthid0", XSPR(31,467,1008), XSPR_MASK, GEKKO, 0, {RS}},
{"mthid1", XSPR(31,467,1009), XSPR_MASK, GEKKO, 0, {RS}},
{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, 0, {RS}},
{"mtiabr", XSPR(31,467,1010), XSPR_MASK, GEKKO, 0, {RS}},
{"mthid4", XSPR(31,467,1011), XSPR_MASK, BROADWAY, 0, {RS}},
{"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, 0, {RS}},
{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, 0, {RS}},
{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, 0, {RS}},
{"mtdabr", XSPR(31,467,1013), XSPR_MASK, PPC750, 0, {RS}},
{"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, 0, {RS}},
{"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, 0, {RS}},
{"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, 0, {RS}},