* PATCH: Add AppliedMicro Titan (APM83xxx) support
@ 2009-11-19 23:46 Philipp Tomsich
2009-11-20 4:12 ` Alan Modra
0 siblings, 1 reply; 4+ messages in thread
From: Philipp Tomsich @ 2009-11-19 23:46 UTC (permalink / raw)
To: binutils
This is a patch to add support for the AppliedMicro Titan core.
The Titan is a BookE-compliant PowerPC that supports the 440-style
halfword-multiplication, but is missing a few FP instructions. We've
also included pseudoinstructions for the various SPRs the Titan
supports.
Best regards,
Phil.
--
diff --git a/bfd/archures.c b/bfd/archures.c
index 8df2ce1..b38f7cf 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -230,6 +230,7 @@ DESCRIPTION
.#define bfd_mach_ppc_7400 7400
.#define bfd_mach_ppc_e500 500
.#define bfd_mach_ppc_e500mc 5001
+.#define bfd_mach_ppc_titan 83
. bfd_arch_rs6000, {* IBM RS/6000 *}
.#define bfd_mach_rs6k 6000
.#define bfd_mach_rs6k_rs1 6001
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 455ec56..a900c25 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1901,6 +1901,7 @@ enum bfd_architecture
#define bfd_mach_ppc_7400 7400
#define bfd_mach_ppc_e500 500
#define bfd_mach_ppc_e500mc 5001
+#define bfd_mach_ppc_titan 83
bfd_arch_rs6000, /* IBM RS/6000 */
#define bfd_mach_rs6k 6000
#define bfd_mach_rs6k_rs1 6001
diff --git a/bfd/cpu-powerpc.c b/bfd/cpu-powerpc.c
index 0b511f3..c3db7a5 100644
--- a/bfd/cpu-powerpc.c
+++ b/bfd/cpu-powerpc.c
@@ -324,6 +324,21 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
FALSE, /* not the default */
powerpc_compatible,
bfd_default_scan,
+ &bfd_powerpc_archs[17]
+ },
+ {
+ 32, /* 32 bits in a word */
+ 32, /* 32 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_titan,
+ "powerpc",
+ "powerpc:titan",
+ 3,
+ FALSE, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
0
}
+
};
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 2c7c219..16216c2 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2009-11-19 Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
+
+ * doc/c-ppc.texi (PowerPC-Opts): Document "-mtitan".
+ * testsuite/gas/ppc/titan.d: New file.
+ * testsuite/gas/ppc/titan.s: New file.
+
2009-11-19 Jan Beulich <jbeulich@novell.com>
* read.c (pseudo_set): Also call copy_symbol_attributes() for
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index 1d615e9..6a430ed 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -1211,6 +1211,7 @@ PowerPC options:\n\
-me500, -me500x2 generate code for Motorola e500 core complex\n\
-me500mc, generate code for Freescale e500mc core complex
\n\
-mspe generate code for Motorola SPE instructions\n\
+-mtitan generate code for AppliedMicro Titan core
complex\n\
-mregnames Allow symbolic names for registers\n\
-mno-regnames Do not allow symbolic names for registers\n"));
#ifdef OBJ_ELF
@@ -1288,6 +1289,8 @@ ppc_mach (void)
return bfd_mach_ppc64;
else if (ppc_arch () == bfd_arch_rs6000)
return bfd_mach_rs6k;
+ else if (ppc_cpu & PPC_OPCODE_TITAN)
+ return bfd_mach_ppc_titan;
else
return bfd_mach_ppc;
}
diff --git a/gas/doc/c-ppc.texi b/gas/doc/c-ppc.texi
index cab461b..00b15cc 100644
--- a/gas/doc/c-ppc.texi
+++ b/gas/doc/c-ppc.texi
@@ -70,6 +70,9 @@ Generate code for Motorola e500 core complex.
@item -mspe
Generate code for Motorola SPE instructions.
+@item -mtitan
+Generate code for AppliedMicro Titan core complex.
+
@item -mppc64bridge
Generate code for PowerPC 64, including bridge insns.
diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/
ppc.exp
index 0c8d852..3db0ade 100644
--- a/gas/testsuite/gas/ppc/ppc.exp
+++ b/gas/testsuite/gas/ppc/ppc.exp
@@ -50,5 +50,6 @@ if { [istarget powerpc*-*-*] } then {
run_dump_test "power7"
run_dump_test "vsx"
run_dump_test "476"
+ run_dump_test "titan"
}
}
diff --git a/gas/testsuite/gas/ppc/titan.d b/gas/testsuite/gas/ppc/
titan.d
new file mode 100644
index 0000000..fcbb973
--- /dev/null
+++ b/gas/testsuite/gas/ppc/titan.d
@@ -0,0 +1,267 @@
+#as: -mtitan
+#objdump: -dr -Mtitan
+#name: AppliedMicro Titan tests
+
+.*: +file format elf(32)?(64)?-powerpc.*
+
+Disassembly of section \.text:
+
+0+00 <test>:
+ 0: 4e 80 00 20 blr
+ 4: 0c 81 00 00 tweqi r1,0
+ 8: 10 41 01 58 macchw r2,r1,r0
+ c: 10 41 01 59 macchw\. r2,r1,r0
+ 10: 10 41 05 58 macchwo r2,r1,r0
+ 14: 10 41 05 59 macchwo\. r2,r1,r0
+ 18: 10 41 01 d8 macchws r2,r1,r0
+ 1c: 10 41 01 d9 macchws\. r2,r1,r0
+ 20: 10 41 05 d8 macchwso r2,r1,r0
+ 24: 10 41 05 d9 macchwso\. r2,r1,r0
+ 28: 10 41 01 98 macchwsu r2,r1,r0
+ 2c: 10 41 01 99 macchwsu\. r2,r1,r0
+ 30: 10 41 05 98 macchwsuo r2,r1,r0
+ 34: 10 41 05 99 macchwsuo\. r2,r1,r0
+ 38: 10 41 01 18 macchwu r2,r1,r0
+ 3c: 10 41 01 19 macchwu\. r2,r1,r0
+ 40: 10 41 05 18 macchwuo r2,r1,r0
+ 44: 10 41 05 19 macchwuo\. r2,r1,r0
+ 48: 10 41 00 58 machhw r2,r1,r0
+ 4c: 10 41 00 59 machhw\. r2,r1,r0
+ 50: 10 41 04 58 machhwo r2,r1,r0
+ 54: 10 41 04 59 machhwo\. r2,r1,r0
+ 58: 10 41 00 d8 machhws r2,r1,r0
+ 5c: 10 41 00 d9 machhws\. r2,r1,r0
+ 60: 10 41 04 d8 machhwso r2,r1,r0
+ 64: 10 41 04 d9 machhwso\. r2,r1,r0
+ 68: 10 41 00 98 machhwsu r2,r1,r0
+ 6c: 10 41 00 99 machhwsu\. r2,r1,r0
+ 70: 10 41 04 98 machhwsuo r2,r1,r0
+ 74: 10 41 04 99 machhwsuo\. r2,r1,r0
+ 78: 10 41 00 18 machhwu r2,r1,r0
+ 7c: 10 41 00 19 machhwu\. r2,r1,r0
+ 80: 10 41 04 18 machhwuo r2,r1,r0
+ 84: 10 41 04 19 machhwuo\. r2,r1,r0
+ 88: 10 41 03 58 maclhw r2,r1,r0
+ 8c: 10 41 03 59 maclhw\. r2,r1,r0
+ 90: 10 41 07 58 maclhwo r2,r1,r0
+ 94: 10 41 07 59 maclhwo\. r2,r1,r0
+ 98: 10 41 03 d8 maclhws r2,r1,r0
+ 9c: 10 41 03 d9 maclhws\. r2,r1,r0
+ a0: 10 41 07 d8 maclhwso r2,r1,r0
+ a4: 10 41 07 d9 maclhwso\. r2,r1,r0
+ a8: 10 41 03 98 maclhwsu r2,r1,r0
+ ac: 10 41 03 99 maclhwsu\. r2,r1,r0
+ b0: 10 41 07 98 maclhwsuo r2,r1,r0
+ b4: 10 41 07 99 maclhwsuo\. r2,r1,r0
+ b8: 10 41 03 18 maclhwu r2,r1,r0
+ bc: 10 41 03 19 maclhwu\. r2,r1,r0
+ c0: 10 41 07 18 maclhwuo r2,r1,r0
+ c4: 10 41 07 19 maclhwuo\. r2,r1,r0
+ c8: 10 41 01 5c nmacchw r2,r1,r0
+ cc: 10 41 01 5d nmacchw\. r2,r1,r0
+ d0: 10 41 05 5c nmacchwo r2,r1,r0
+ d4: 10 41 05 5d nmacchwo\. r2,r1,r0
+ d8: 10 41 01 dc nmacchws r2,r1,r0
+ dc: 10 41 01 dd nmacchws\. r2,r1,r0
+ e0: 10 41 05 dc nmacchwso r2,r1,r0
+ e4: 10 41 05 dd nmacchwso\. r2,r1,r0
+ e8: 10 41 00 5c nmachhw r2,r1,r0
+ ec: 10 41 00 5d nmachhw\. r2,r1,r0
+ f0: 10 41 04 5c nmachhwo r2,r1,r0
+ f4: 10 41 04 5d nmachhwo\. r2,r1,r0
+ f8: 10 41 00 dc nmachhws r2,r1,r0
+ fc: 10 41 00 dd nmachhws\. r2,r1,r0
+ 100: 10 41 04 dc nmachhwso r2,r1,r0
+ 104: 10 41 04 dd nmachhwso\. r2,r1,r0
+ 108: 10 41 03 5c nmaclhw r2,r1,r0
+ 10c: 10 41 03 5d nmaclhw\. r2,r1,r0
+ 110: 10 41 07 5c nmaclhwo r2,r1,r0
+ 114: 10 41 07 5d nmaclhwo\. r2,r1,r0
+ 118: 10 41 03 dc nmaclhws r2,r1,r0
+ 11c: 10 41 03 dd nmaclhws\. r2,r1,r0
+ 120: 10 41 07 dc nmaclhwso r2,r1,r0
+ 124: 10 41 07 dd nmaclhwso\. r2,r1,r0
+ 128: 10 41 01 50 mulchw r2,r1,r0
+ 12c: 10 41 01 51 mulchw\. r2,r1,r0
+ 130: 10 41 01 10 mulchwu r2,r1,r0
+ 134: 10 41 01 11 mulchwu\. r2,r1,r0
+ 138: 10 41 00 50 mulhhw r2,r1,r0
+ 13c: 10 41 00 51 mulhhw\. r2,r1,r0
+ 140: 10 41 00 10 mulhhwu r2,r1,r0
+ 144: 10 41 00 11 mulhhwu\. r2,r1,r0
+ 148: 10 41 03 50 mullhw r2,r1,r0
+ 14c: 10 41 03 51 mullhw\. r2,r1,r0
+ 150: 10 41 03 10 mullhwu r2,r1,r0
+ 154: 10 41 03 11 mullhwu\. r2,r1,r0
+ 158: 7c 22 00 9c dlmzb r2,r1,r0
+ 15c: 7c 22 00 9d dlmzb\. r2,r1,r0
+ 160: 7c 02 0b 8c dccci r2,r1
+ 164: 7c 02 0f 8c iccci r2,r1
+ 168: 7c 02 0b 0c dcblc r2,r1
+ 16c: 7c 02 0b 0c dcblc r2,r1
+ 170: 7c 22 0b 0c dcblc 1,r2,r1
+ 174: 7c 02 09 4c dcbtls r2,r1
+ 178: 7c 02 09 4c dcbtls r2,r1
+ 17c: 7c 22 09 4c dcbtls 1,r2,r1
+ 180: 7c 02 09 0c dcbtstls r2,r1
+ 184: 7c 02 09 0c dcbtstls r2,r1
+ 188: 7c 22 09 0c dcbtstls 1,r2,r1
+ 18c: 7c 02 09 cc icblc r2,r1
+ 190: 7c 02 09 cc icblc r2,r1
+ 194: 7c 22 09 cc icblc 1,r2,r1
+ 198: 7c 02 0b cc icbtls r2,r1
+ 19c: 7c 02 0b cc icbtls r2,r1
+ 1a0: 7c 22 0b cc icbtls 1,r2,r1
+ 1a4: 7c 41 02 8c dcread r2,r1,r0
+ 1a8: 7c 02 0f cc icread r2,r1
+ 1ac: 7c 41 02 9c mfpmr r2,pmctr1
+ 1b0: 7c 22 02 9c mfpmr r1,pmctr2
+ 1b4: 7c 81 02 a6 mfxer r4
+ 1b8: 7c 81 02 a6 mfxer r4
+ 1bc: 7c 88 02 a6 mflr r4
+ 1c0: 7c 88 02 a6 mflr r4
+ 1c4: 7c 89 02 a6 mfctr r4
+ 1c8: 7c 89 02 a6 mfctr r4
+ 1cc: 7c 96 02 a6 mfdec r4
+ 1d0: 7c 96 02 a6 mfdec r4
+ 1d4: 7c 9a 02 a6 mfsrr0 r4
+ 1d8: 7c 9a 02 a6 mfsrr0 r4
+ 1dc: 7c 9b 02 a6 mfsrr1 r4
+ 1e0: 7c 9b 02 a6 mfsrr1 r4
+ 1e4: 7c 90 0a a6 mfpid r4
+ 1e8: 7c 90 0a a6 mfpid r4
+ 1ec: 7c 9a 0a a6 mfcsrr0 r4
+ 1f0: 7c 9a 0a a6 mfcsrr0 r4
+ 1f4: 7c 9b 0a a6 mfcsrr1 r4
+ 1f8: 7c 9b 0a a6 mfcsrr1 r4
+ 1fc: 7c 9d 0a a6 mfdear r4
+ 200: 7c 9d 0a a6 mfdear r4
+ 204: 7c 9e 0a a6 mfesr r4
+ 208: 7c 9e 0a a6 mfesr r4
+ 20c: 7c 9f 0a a6 mfivpr r4
+ 210: 7c 9f 0a a6 mfivpr r4
+ 214: 7c 80 42 a6 mfusprg0 r4
+ 218: 7c 80 42 a6 mfusprg0 r4
+ 21c: 7c 84 42 a6 mfsprg r4,4
+ 220: 7c 84 42 a6 mfsprg r4,4
+ 224: 7c 85 42 a6 mfsprg r4,5
+ 228: 7c 85 42 a6 mfsprg r4,5
+ 22c: 7c 86 42 a6 mfsprg r4,6
+ 230: 7c 86 42 a6 mfsprg r4,6
+ 234: 7c 87 42 a6 mfsprg r4,7
+ 238: 7c 87 42 a6 mfsprg r4,7
+ 23c: 7c 8c 42 a6 mftb r4
+ 240: 7c 8c 42 a6 mftb r4
+ 244: 7c 8c 42 a6 mftb r4
+ 248: 7c 8d 42 a6 mftbu r4
+ 24c: 7c 8d 42 a6 mftbu r4
+ 250: 7c 90 42 a6 mfsprg r4,0
+ 254: 7c 90 42 a6 mfsprg r4,0
+ 258: 7c 91 42 a6 mfsprg r4,1
+ 25c: 7c 91 42 a6 mfsprg r4,1
+ 260: 7c 92 42 a6 mfsprg r4,2
+ 264: 7c 92 42 a6 mfsprg r4,2
+ 268: 7c 93 42 a6 mfsprg r4,3
+ 26c: 7c 93 42 a6 mfsprg r4,3
+ 270: 7c 9e 42 a6 mfpir r4
+ 274: 7c 9e 42 a6 mfpir r4
+ 278: 7c 9f 42 a6 mfpvr r4
+ 27c: 7c 9f 42 a6 mfpvr r4
+ 280: 7c 90 4a a6 mfdbsr r4
+ 284: 7c 90 4a a6 mfdbsr r4
+ 288: 7c 94 4a a6 mfdbcr0 r4
+ 28c: 7c 94 4a a6 mfdbcr0 r4
+ 290: 7c 95 4a a6 mfdbcr1 r4
+ 294: 7c 95 4a a6 mfdbcr1 r4
+ 298: 7c 96 4a a6 mfdbcr2 r4
+ 29c: 7c 96 4a a6 mfdbcr2 r4
+ 2a0: 7c 98 4a a6 mfiac1 r4
+ 2a4: 7c 98 4a a6 mfiac1 r4
+ 2a8: 7c 99 4a a6 mfiac2 r4
+ 2ac: 7c 99 4a a6 mfiac2 r4
+ 2b0: 7c 9a 4a a6 mfiac3 r4
+ 2b4: 7c 9a 4a a6 mfiac3 r4
+ 2b8: 7c 9b 4a a6 mfiac4 r4
+ 2bc: 7c 9b 4a a6 mfiac4 r4
+ 2c0: 7c 9c 4a a6 mfdac1 r4
+ 2c4: 7c 9c 4a a6 mfdac1 r4
+ 2c8: 7c 9d 4a a6 mfdac2 r4
+ 2cc: 7c 9d 4a a6 mfdac2 r4
+ 2d0: 7c 9e 4a a6 mfdvc1 r4
+ 2d4: 7c 9e 4a a6 mfdvc1 r4
+ 2d8: 7c 9f 4a a6 mfdvc2 r4
+ 2dc: 7c 9f 4a a6 mfdvc2 r4
+ 2e0: 7c 90 52 a6 mftsr r4
+ 2e4: 7c 90 52 a6 mftsr r4
+ 2e8: 7c 94 52 a6 mftcr r4
+ 2ec: 7c 94 52 a6 mftcr r4
+ 2f0: 7c 90 62 a6 mfivor0 r4
+ 2f4: 7c 90 62 a6 mfivor0 r4
+ 2f8: 7c 91 62 a6 mfivor1 r4
+ 2fc: 7c 91 62 a6 mfivor1 r4
+ 300: 7c 92 62 a6 mfivor2 r4
+ 304: 7c 92 62 a6 mfivor2 r4
+ 308: 7c 93 62 a6 mfivor3 r4
+ 30c: 7c 93 62 a6 mfivor3 r4
+ 310: 7c 94 62 a6 mfivor4 r4
+ 314: 7c 94 62 a6 mfivor4 r4
+ 318: 7c 95 62 a6 mfivor5 r4
+ 31c: 7c 95 62 a6 mfivor5 r4
+ 320: 7c 96 62 a6 mfivor6 r4
+ 324: 7c 96 62 a6 mfivor6 r4
+ 328: 7c 97 62 a6 mfivor7 r4
+ 32c: 7c 97 62 a6 mfivor7 r4
+ 330: 7c 98 62 a6 mfivor8 r4
+ 334: 7c 98 62 a6 mfivor8 r4
+ 338: 7c 99 62 a6 mfivor9 r4
+ 33c: 7c 99 62 a6 mfivor9 r4
+ 340: 7c 9a 62 a6 mfivor10 r4
+ 344: 7c 9a 62 a6 mfivor10 r4
+ 348: 7c 9b 62 a6 mfivor11 r4
+ 34c: 7c 9b 62 a6 mfivor11 r4
+ 350: 7c 9c 62 a6 mfivor12 r4
+ 354: 7c 9c 62 a6 mfivor12 r4
+ 358: 7c 9d 62 a6 mfivor13 r4
+ 35c: 7c 9d 62 a6 mfivor13 r4
+ 360: 7c 9e 62 a6 mfivor14 r4
+ 364: 7c 9e 62 a6 mfivor14 r4
+ 368: 7c 9f 62 a6 mfivor15 r4
+ 36c: 7c 9f 62 a6 mfivor15 r4
+ 370: 7c 93 82 a6 mfivor35 r4
+ 374: 7c 93 82 a6 mfivor35 r4
+ 378: 7c 9a 8a a6 mfdc_dat r4
+ 37c: 7c 9a 8a a6 mfdc_dat r4
+ 380: 7c 9b 8a a6 mfmcsrr1 r4
+ 384: 7c 9b 8a a6 mfmcsrr1 r4
+ 388: 7c 9c 8a a6 mfmcsr r4
+ 38c: 7c 9c 8a a6 mfmcsr r4
+ 390: 7c 90 da a6 mfivndx r4
+ 394: 7c 90 da a6 mfivndx r4
+ 398: 7c 91 da a6 mfdvndx r4
+ 39c: 7c 91 da a6 mfdvndx r4
+ 3a0: 7c 92 da a6 mfivlim r4
+ 3a4: 7c 92 da a6 mfivlim r4
+ 3a8: 7c 93 da a6 mfdvlim r4
+ 3ac: 7c 93 da a6 mfdvlim r4
+ 3b0: 7c 94 da a6 mfclcsr r4
+ 3b4: 7c 94 da a6 mfclcsr r4
+ 3b8: 7c 98 da a6 mfccr1 r4
+ 3bc: 7c 98 da a6 mfccr1 r4
+ 3c0: 7c 9b e2 a6 mfrstcfg r4
+ 3c4: 7c 9b e2 a6 mfrstcfg r4
+ 3c8: 7c 9c e2 a6 mfdcdbtrl r4
+ 3cc: 7c 9c e2 a6 mfdcdbtrl r4
+ 3d0: 7c 9d e2 a6 mfdcdbtrh r4
+ 3d4: 7c 9d e2 a6 mfdcdbtrh r4
+ 3d8: 7c 9f e2 a6 mficdbtr r4
+ 3dc: 7c 9f e2 a6 mficdbtr r4
+ 3e0: 7c 92 ea a6 mfmmucr r4
+ 3e4: 7c 92 ea a6 mfmmucr r4
+ 3e8: 7c 93 ea a6 mfccr0 r4
+ 3ec: 7c 93 ea a6 mfccr0 r4
+ 3f0: 7c 93 f2 a6 mficdbdr r4
+ 3f4: 7c 93 f2 a6 mficdbdr r4
+ 3f8: 7c 93 fa a6 mfdbdr r4
+ 3fc: 7c 93 fa a6 mfdbdr r4
+ 400: 7c 96 0b a6 mtdecar r4
+ 404: 7c 96 0b a6 mtdecar r4
diff --git a/gas/testsuite/gas/ppc/titan.s b/gas/testsuite/gas/ppc/
titan.s
new file mode 100644
index 0000000..7155a5a
--- /dev/null
+++ b/gas/testsuite/gas/ppc/titan.s
@@ -0,0 +1,261 @@
+# AppliedMicro Titan tests
+ .section ".text"
+start:
+ blr
+ tweqi 1, 0
+ macchw 2, 1, 0
+ macchw. 2, 1, 0
+ macchwo 2, 1, 0
+ macchwo. 2, 1, 0
+ macchws 2, 1, 0
+ macchws. 2, 1, 0
+ macchwso 2, 1, 0
+ macchwso. 2, 1, 0
+ macchwsu 2, 1, 0
+ macchwsu. 2, 1, 0
+ macchwsuo 2, 1, 0
+ macchwsuo. 2, 1, 0
+ macchwu 2, 1, 0
+ macchwu. 2, 1, 0
+ macchwuo 2, 1, 0
+ macchwuo. 2, 1, 0
+ machhw 2, 1, 0
+ machhw. 2, 1, 0
+ machhwo 2, 1, 0
+ machhwo. 2, 1, 0
+ machhws 2, 1, 0
+ machhws. 2, 1, 0
+ machhwso 2, 1, 0
+ machhwso. 2, 1, 0
+ machhwsu 2, 1, 0
+ machhwsu. 2, 1, 0
+ machhwsuo 2, 1, 0
+ machhwsuo. 2, 1, 0
+ machhwu 2, 1, 0
+ machhwu. 2, 1, 0
+ machhwuo 2, 1, 0
+ machhwuo. 2, 1, 0
+ maclhw 2, 1, 0
+ maclhw. 2, 1, 0
+ maclhwo 2, 1, 0
+ maclhwo. 2, 1, 0
+ maclhws 2, 1, 0
+ maclhws. 2, 1, 0
+ maclhwso 2, 1, 0
+ maclhwso. 2, 1, 0
+ maclhwsu 2, 1, 0
+ maclhwsu. 2, 1, 0
+ maclhwsuo 2, 1, 0
+ maclhwsuo. 2, 1, 0
+ maclhwu 2, 1, 0
+ maclhwu. 2, 1, 0
+ maclhwuo 2, 1, 0
+ maclhwuo. 2, 1, 0
+ nmacchw 2, 1, 0
+ nmacchw. 2, 1, 0
+ nmacchwo 2, 1, 0
+ nmacchwo. 2, 1, 0
+ nmacchws 2, 1, 0
+ nmacchws. 2, 1, 0
+ nmacchwso 2, 1, 0
+ nmacchwso. 2, 1, 0
+ nmachhw 2, 1, 0
+ nmachhw. 2, 1, 0
+ nmachhwo 2, 1, 0
+ nmachhwo. 2, 1, 0
+ nmachhws 2, 1, 0
+ nmachhws. 2, 1, 0
+ nmachhwso 2, 1, 0
+ nmachhwso. 2, 1, 0
+ nmaclhw 2, 1, 0
+ nmaclhw. 2, 1, 0
+ nmaclhwo 2, 1, 0
+ nmaclhwo. 2, 1, 0
+ nmaclhws 2, 1, 0
+ nmaclhws. 2, 1, 0
+ nmaclhwso 2, 1, 0
+ nmaclhwso. 2, 1, 0
+ mulchw 2, 1, 0
+ mulchw. 2, 1, 0
+ mulchwu 2, 1, 0
+ mulchwu. 2, 1, 0
+ mulhhw 2, 1, 0
+ mulhhw. 2, 1, 0
+ mulhhwu 2, 1, 0
+ mulhhwu. 2, 1, 0
+ mullhw 2, 1, 0
+ mullhw. 2, 1, 0
+ mullhwu 2, 1, 0
+ mullhwu. 2, 1, 0
+ dlmzb 2, 1, 0
+ dlmzb. 2, 1, 0
+ dccci 2, 1
+ iccci 2, 1
+ dcblc 0, 2, 1
+ dcblc 2, 1
+ dcblc 1, 2, 1
+ dcbtls 0, 2, 1
+ dcbtls 2, 1
+ dcbtls 1, 2, 1
+ dcbtstls 0, 2, 1
+ dcbtstls 2, 1
+ dcbtstls 1, 2, 1
+ icblc 0, 2, 1
+ icblc 2, 1
+ icblc 1, 2, 1
+ icbtls 0, 2, 1
+ icbtls 2, 1
+ icbtls 1, 2, 1
+ dcread 2, 1, 0
+ icread 2, 1
+ mfpmr 2, 1
+ mfpmr 1, 2
+ mfspr 4, 0x001
+ mfxer 4
+ mfspr 4, 0x008
+ mflr 4
+ mfspr 4, 0x009
+ mfctr 4
+ mfspr 4, 0x016
+ mfdec 4
+ mfspr 4, 0x01a
+ mfsrr0 4
+ mfspr 4, 0x01b
+ mfsrr1 4
+ mfspr 4, 0x030
+ mfpid 4
+ mfspr 4, 0x03a
+ mfcsrr0 4
+ mfspr 4, 0x03b
+ mfcsrr1 4
+ mfspr 4, 0x03d
+ mfdear 4
+ mfspr 4, 0x03e
+ mfesr 4
+ mfspr 4, 0x03f
+ mfivpr 4
+ mfspr 4, 0x100
+ mfusprg0 4
+ mfspr 4, 0x104
+ mfsprg4 4
+ mfspr 4, 0x105
+ mfsprg5 4
+ mfspr 4, 0x106
+ mfsprg6 4
+ mfspr 4, 0x107
+ mfsprg7 4
+ mfspr 4, 0x10c
+ mftbl 4
+ mftb 4
+ mfspr 4, 0x10d
+ mftbu 4
+ mfspr 4, 0x110
+ mfsprg0 4
+ mfspr 4, 0x111
+ mfsprg1 4
+ mfspr 4, 0x112
+ mfsprg2 4
+ mfspr 4, 0x113
+ mfsprg3 4
+ mfspr 4, 0x11e
+ mfpir 4
+ mfspr 4, 0x11f
+ mfpvr 4
+ mfspr 4, 0x130
+ mfdbsr 4
+ mfspr 4, 0x134
+ mfdbcr0 4
+ mfspr 4, 0x135
+ mfdbcr1 4
+ mfspr 4, 0x136
+ mfdbcr2 4
+ mfspr 4, 0x138
+ mfiac1 4
+ mfspr 4, 0x139
+ mfiac2 4
+ mfspr 4, 0x13a
+ mfiac3 4
+ mfspr 4, 0x13b
+ mfiac4 4
+ mfspr 4, 0x13c
+ mfdac1 4
+ mfspr 4, 0x13d
+ mfdac2 4
+ mfspr 4, 0x13e
+ mfdvc1 4
+ mfspr 4, 0x13f
+ mfdvc2 4
+ mfspr 4, 0x150
+ mftsr 4
+ mfspr 4, 0x154
+ mftcr 4
+ mfspr 4, 0x190
+ mfivor0 4
+ mfspr 4, 0x191
+ mfivor1 4
+ mfspr 4, 0x192
+ mfivor2 4
+ mfspr 4, 0x193
+ mfivor3 4
+ mfspr 4, 0x194
+ mfivor4 4
+ mfspr 4, 0x195
+ mfivor5 4
+ mfspr 4, 0x196
+ mfivor6 4
+ mfspr 4, 0x197
+ mfivor7 4
+ mfspr 4, 0x198
+ mfivor8 4
+ mfspr 4, 0x199
+ mfivor9 4
+ mfspr 4, 0x19a
+ mfivor10 4
+ mfspr 4, 0x19b
+ mfivor11 4
+ mfspr 4, 0x19c
+ mfivor12 4
+ mfspr 4, 0x19d
+ mfivor13 4
+ mfspr 4, 0x19e
+ mfivor14 4
+ mfspr 4, 0x19f
+ mfivor15 4
+ mfspr 4, 0x213
+ mfivor35 4
+ mfspr 4, 0x23a
+ mfmcsrr0 4
+ mfspr 4, 0x23b
+ mfmcsrr1 4
+ mfspr 4, 0x23c
+ mfmcsr 4
+ mfspr 4, 0x370
+ mfivndx 4
+ mfspr 4, 0x371
+ mfdvndx 4
+ mfspr 4, 0x372
+ mfivlim 4
+ mfspr 4, 0x373
+ mfdvlim 4
+ mfspr 4, 0x374
+ mfclcsr 4
+ mfspr 4, 0x378
+ mfccr1 4
+ mfspr 4, 0x39b
+ mfrstcfg 4
+ mfspr 4, 0x39c
+ mfdcdbtrl 4
+ mfspr 4, 0x39d
+ mfdcdbtrh 4
+ mfspr 4, 0x39f
+ mficdbtr 4
+ mfspr 4, 0x3b2
+ mfmmucr 4
+ mfspr 4, 0x3b3
+ mfccr0 4
+ mfspr 4, 0x3d3
+ mficdbdr 4
+ mfspr 4, 0x3f3
+ mfdbdr 4
+ mtspr 0x036, 4
+ mtdecar 4
diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog
index 51120ff..5c1482a 100644
--- a/include/opcode/ChangeLog
+++ b/include/opcode/ChangeLog
@@ -1,3 +1,7 @@
+2009-11-19 Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
+
+ * ppc.h (PPC_OPCODE_TITAN, PPC_OPCODE_MULHW): Define
+
2009-11-18 Paul Brook <paul@codesourcery.com>
* arm.h (FPU_VFP_V4_SP_D16, FPU_ARCH_VFP_V4_SP_D16): Define.
diff --git a/include/opcode/ppc.h b/include/opcode/ppc.h
index 1dc2f1d..718ceb2 100644
--- a/include/opcode/ppc.h
+++ b/include/opcode/ppc.h
@@ -168,11 +168,17 @@ extern const int powerpc_num_opcodes;
#define PPC_OPCODE_VSX 0x80000000
/* Opcode is supported by A2. */
-#define PPC_OPCODE_A2 0x100000000ULL
+#define PPC_OPCODE_A2 0x100000000ULL
/* Opcode is supported by PowerPC 476 processor. */
#define PPC_OPCODE_476 0x200000000ULL
+/* Opcode is supported by AppliedMicro Titan core */
+#define PPC_OPCODE_TITAN 0x400000000ULL
+
+/* Opcode is supported by CPUs with PPC440-syle half-word multiply
instructions */
+#define PPC_OPCODE_MULHW 0x800000000ULL
+
/* A macro to extract the major opcode from an instruction. */
#define PPC_OP(i) (((i) >> 26) & 0x3f)
@@ -332,6 +338,10 @@ extern const unsigned int num_powerpc_operands;
/* This operand names a vector-scalar unit register. The disassembler
prints these with a leading 'vs'. */
#define PPC_OPERAND_VSR (0x100000)
+
+/* This operand names performance counter registers. The disassembler
+ prints these with a leading 'pmctr'. */
+#define PPC_OPERAND_PMR (0x200000)
/* The POWER and PowerPC assemblers use a few macros. We keep them
with the operands table for simplicity. The macro table is an
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 58e48c6..b026ec7 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,13 @@
+2009-11-19 Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
+
+ * ppc-opc.c (powerpc_opcodes): Added support for the AppliedMicro
+ Titan core (APM83xxx). Refactored flags for PPC405/PPC440-style
+ halfword multiplication.
+ * ppc-opc.c (TITAN, MULHW): Define.
+ * ppc-dis.c (ppc_opts): Added AppliedMicro APM83xxx Titan target
+ (-mtitan). Changed PPC405 and PPC440 to use the (newly factored
+ out) halfword-multiplication opcode flag.
+
2009-11-19 H.J. Lu <hongjiu.lu@intel.com>
* i386-opc.tbl: Add IsLockable to cmpxch16b.
@@ -7,7 +17,7 @@
PR binutils/10924
* arm-dis.c (print_insn_arm): Do not print an offset of zero when
- decoding Immediaate Offset addressing.
+ decoding Immediate Offset addressing.
2009-11-18 Sebastian Pop <sebastian.pop@amd.com>
diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c
index ac88f76..201e2af 100644
--- a/opcodes/ppc-dis.c
+++ b/opcodes/ppc-dis.c
@@ -54,13 +54,15 @@ struct ppc_mopt ppc_opts[] = {
| PPC_OPCODE_32),
0 },
{ "405", (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_403
- | PPC_OPCODE_405 | PPC_OPCODE_32),
+ | PPC_OPCODE_405 | PPC_OPCODE_32 | PPC_OPCODE_MULHW),
0 },
{ "440", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_32
- | PPC_OPCODE_440 | PPC_OPCODE_ISEL | PPC_OPCODE_RFMCI),
+ | PPC_OPCODE_440 | PPC_OPCODE_ISEL | PPC_OPCODE_RFMCI
+ | PPC_OPCODE_MULHW),
0 },
{ "464", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_32
- | PPC_OPCODE_440 | PPC_OPCODE_ISEL | PPC_OPCODE_RFMCI),
+ | PPC_OPCODE_440 | PPC_OPCODE_ISEL | PPC_OPCODE_RFMCI
+ | PPC_OPCODE_MULHW),
0 },
{ "476", (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_ISEL
| PPC_OPCODE_440 | PPC_OPCODE_476 | PPC_OPCODE_POWER4
@@ -159,6 +161,10 @@ struct ppc_mopt ppc_opts[] = {
0 },
{ "spe", (PPC_OPCODE_PPC | PPC_OPCODE_EFS),
PPC_OPCODE_SPE },
+ { "titan", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_32
+ | PPC_OPCODE_PMR | PPC_OPCODE_RFMCI | PPC_OPCODE_MULHW
+ | PPC_OPCODE_TITAN),
+ 0 },
{ "vsx", (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC),
PPC_OPCODE_VSX },
};
@@ -449,6 +455,8 @@ print_insn_powerpc (bfd_vma memaddr,
(*info->fprintf_func) (info->stream, "v%ld", value);
else if ((operand->flags & PPC_OPERAND_VSR) != 0)
(*info->fprintf_func) (info->stream, "vs%ld", value);
+ else if ((operand->flags & PPC_OPERAND_PMR) != 0)
+ (*info->fprintf_func) (info->stream, "pmctr%ld", value);
else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0)
(*info->print_address_func) (memaddr + value, info);
else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0)
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 123436c..726fce3 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -440,10 +440,12 @@ const struct powerpc_operand powerpc_operands[] =
#define SISIGNOPT SI + 1
{ 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
+#define PMR SISIGNOPT + 1
+ { 0x3ff, 11, insert_spr, extract_spr, PPC_OPERAND_PMR },
+
/* The SPR field in an XFX form instruction. This is flipped--the
lower 5 bits are stored in the upper 5 and vice- versa. */
-#define SPR SISIGNOPT + 1
-#define PMR SPR
+#define SPR PMR + 1
#define SPR_MASK (0x3ff << 11)
{ 0x3ff, 11, insert_spr, extract_spr, 0 },
@@ -1935,6 +1937,8 @@ extract_dm (unsigned long insn,
#define PPCRFMCI PPC_OPCODE_RFMCI
#define E500MC PPC_OPCODE_E500MC
#define PPCA2 PPC_OPCODE_A2
+#define TITAN PPC_OPCODE_TITAN
+#define MULHW PPC_OPCODE_MULHW
/* The opcode table.
@@ -2017,16 +2021,16 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"vmrghb", VX (4, 12), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, PPCNONE,
{FRS,RA,RB,PSWM,PSQM}},
{"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"mulhhwu", XRC(4, 8,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"mulhhwu.", XRC(4, 8,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"mulhhwu", XRC(4, 8,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"mulhhwu.", XRC(4, 8,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_sum0", A (4, 10,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC,
FRB}},
{"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRC, FRB}},
{"ps_sum1", A (4, 11,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC,
FRB}},
{"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRC, FRB}},
{"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRC}},
-{"machhwu", XO (4, 12,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"machhwu", XO (4, 12,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRC}},
-{"machhwu.", XO (4, 12,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"machhwu.", XO (4, 12,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRC}},
{"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRC}},
{"ps_madds0", A (4, 14,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRC, FRB}},
@@ -2081,13 +2085,13 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, PPCNONE,
{FRS,RA,RB,PSWM,PSQM}},
{"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulhhw", XRC(4, 40,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"mulhhw", XRC(4, 40,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulhhw.", XRC(4, 40,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"machhw", XO (4, 44,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"machhw.", XO (4, 44,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"nmachhw", XO (4, 46,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"nmachhw.", XO (4, 46,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"mulhhw.", XRC(4, 40,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhw", XO (4, 44,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhw.", XO (4, 44,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhw", XO (4, 46,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhw.", XO (4, 46,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"ps_cmpu1", X (4, 64), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA,
FRB}},
{"vadduwm", VX (4, 128), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
@@ -2097,15 +2101,15 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
{"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"machhwsu", XO (4, 76,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"machhwsu.", XO (4, 76,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"machhwsu", XO (4, 76,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"machhwsu.", XO (4, 76,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"ps_cmpo1", X (4, 96), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA,
FRB}},
{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"machhws", XO (4, 108,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"machhws.", XO (4, 108,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmachhws", XO (4, 110,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmachhws.", XO (4, 110,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"machhws", XO (4, 108,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"machhws.", XO (4, 108,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmachhws", XO (4, 110,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmachhws.", XO (4, 110,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vslb", VX (4, 260), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmulosb", VX (4, 264), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
@@ -2113,39 +2117,39 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"vmrglb", VX (4, 268), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkshus", VX (4, 270), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulchwu", XRC(4, 136,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"mulchwu", XRC(4, 136,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulchwu.", XRC(4, 136,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"macchwu", XO (4, 140,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"macchwu.", XO (4, 140,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"mulchwu.", XRC(4, 136,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwu", XO (4, 140,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwu.", XO (4, 140,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vslh", VX (4, 324), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmulosh", VX (4, 328), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vrsqrtefp", VX (4, 330), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
{"vmrglh", VX (4, 332), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkswus", VX (4, 334), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"mulchw", XRC(4, 168,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"mulchw.", XRC(4, 168,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"macchw", XO (4, 172,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"macchw.", XO (4, 172,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"nmacchw", XO (4, 174,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"nmacchw.", XO (4, 174,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"mulchw", XRC(4, 168,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"mulchw.", XRC(4, 168,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchw", XO (4, 172,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchw.", XO (4, 172,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchw", XO (4, 174,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchw.", XO (4, 174,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vslw", VX (4, 388), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vexptefp", VX (4, 394), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
{"vmrglw", VX (4, 396), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkshss", VX (4, 398), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"macchwsu", XO (4, 204,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"macchwsu.", XO (4, 204,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"macchwsu", XO (4, 204,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"macchwsu.", XO (4, 204,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vsl", VX (4, 452), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vlogefp", VX (4, 458), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
{"vpkswss", VX (4, 462), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"macchws", XO (4, 236,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"macchws.", XO (4, 236,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmacchws", XO (4, 238,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmacchws.", XO (4, 238,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"macchws", XO (4, 236,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchws.", XO (4, 236,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmacchws", XO (4, 238,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmacchws.", XO (4, 238,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"evaddw", VX (4, 512), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"vaddubs", VX (4, 512), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evaddiw", VX (4, 514), VX_MASK, PPCSPE, PPCNONE, {RS, RB, UIMM}},
@@ -2322,17 +2326,17 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"vpkpx", VX (4, 782), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, PPCNONE, {RS,
EVUIMM_2, RA}},
-{"mullhwu", XRC(4, 392,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"mullhwu", XRC(4, 392,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwhex", VX (4, 784), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"mullhwu.", XRC(4, 392,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"mullhwu.", XRC(4, 392,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwhe", VX (4, 785), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4,
RA}},
{"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evlwhou", VX (4, 789), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4,
RA}},
{"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evlwhos", VX (4, 791), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4,
RA}},
-{"maclhwu", XO (4, 396,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"maclhwu", XO (4, 396,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
-{"maclhwu.", XO (4, 396,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"maclhwu.", XO (4, 396,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, PPCNONE, {RS,
EVUIMM_4, RA}},
{"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, PPCNONE, {RS,
EVUIMM_4, RA}},
@@ -2358,27 +2362,27 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"vcfsx", VX (4, 842), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
{"vspltish", VX (4, 844), VX_MASK, PPCVEC, PPCNONE, {VD, SIMM}},
{"vupkhpx", VX (4, 846), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
-{"mullhw", XRC(4, 424,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"mullhw.", XRC(4, 424,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"maclhw", XO (4, 428,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"maclhw.", XO (4, 428,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"nmaclhw", XO (4, 430,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"nmaclhw.", XO (4, 430,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"mullhw", XRC(4, 424,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"mullhw.", XRC(4, 424,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhw", XO (4, 428,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhw.", XO (4, 428,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhw", XO (4, 430,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhw.", XO (4, 430,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vaddsws", VX (4, 896), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vminsw", VX (4, 898), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vsraw", VX (4, 900), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vctuxs", VX (4, 906), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
{"vspltisw", VX (4, 908), VX_MASK, PPCVEC, PPCNONE, {VD, SIMM}},
-{"maclhwsu", XO (4, 460,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"maclhwsu.", XO (4, 460,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"maclhwsu", XO (4, 460,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"maclhwsu.", XO (4, 460,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vctsxs", VX (4, 970), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
{"vupklpx", VX (4, 974), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
-{"maclhws", XO (4, 492,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"maclhws.", XO (4, 492,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmaclhws", XO (4, 494,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmaclhws.", XO (4, 494,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"maclhws", XO (4, 492,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhws.", XO (4, 492,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmaclhws", XO (4, 494,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmaclhws.", XO (4, 494,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vsububm", VX (4,1024), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vavgub", VX (4,1026), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evmhessf", VX (4,1027), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2395,8 +2399,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"vslo", VX (4,1036), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"machhwuo", XO (4, 12,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"machhwuo.", XO (4, 12,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"machhwuo", XO (4, 12,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhwuo.", XO (4, 12,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRB}},
{"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRB}},
{"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2421,13 +2425,13 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwssf", VX (4,1107), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"machhwo", XO (4, 44,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"machhwo", XO (4, 44,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwumi", VX (4,1112), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"machhwo.", XO (4, 44,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"machhwo.", XO (4, 44,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"nmachhwo", XO (4, 46,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"nmachhwo.", XO (4, 46,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"nmachhwo", XO (4, 46,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhwo.", XO (4, 46,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRB}},
{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRB}},
{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2445,8 +2449,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA,
VB}},
{"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, PPC476, {URT,
URA, URB}},
{"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, PPC476, {URT,
URA, URB}},
-{"machhwsuo", XO (4, 76,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"machhwsuo.", XO (4, 76,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"machhwsuo", XO (4, 76,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"machhwsuo.", XO (4, 76,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRB}},
{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRB}},
{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
@@ -2464,10 +2468,10 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
-{"machhwso", XO (4, 108,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"machhwso.", XO (4, 108,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmachhwso", XO (4, 110,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmachhwso.", XO (4, 110,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"machhwso", XO (4, 108,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"machhwso.", XO (4, 108,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmachhwso", XO (4, 110,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmachhwso.", XO (4, 110,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRB}},
{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA,
FRB}},
{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
@@ -2486,8 +2490,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
-{"macchwuo", XO (4, 140,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"macchwuo.", XO (4, 140,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"macchwuo", XO (4, 140,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"macchwuo.", XO (4, 140,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
@@ -2502,13 +2506,13 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwo", XO (4, 172,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
+{"macchwo", XO (4, 172,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwo.", XO (4, 172,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"macchwo.", XO (4, 172,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"nmacchwo", XO (4, 174,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmacchwo.", XO (4, 174,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"nmacchwo", XO (4, 174,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmacchwo.", XO (4, 174,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
@@ -2525,8 +2529,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
-{"macchwsuo", XO (4, 204,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"macchwsuo.", XO (4, 204,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"macchwsuo", XO (4, 204,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"macchwsuo.", XO (4, 204,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
@@ -2541,13 +2545,13 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, PPCNONE, {RS, RA,
RB}},
{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwso", XO (4, 236,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"macchwso", XO (4, 236,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwso.", XO (4, 236,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"macchwso.", XO (4, 236,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"nmacchwso", XO (4, 238,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmacchwso.", XO (4, 238,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"nmacchwso", XO (4, 238,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmacchwso.", XO (4, 238,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vsububs", VX (4,1536), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"mfvscr", VX (4,1540), VX_MASK, PPCVEC, PPCNONE, {VD}},
{"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA,
VB}},
@@ -2573,30 +2577,30 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, PPC476, {URT, URA,
URB}},
{"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, PPC476, {URT, URA,
URB}},
{"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"maclhwuo", XO (4, 396,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"maclhwuo.", XO (4, 396,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"maclhwuo", XO (4, 396,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"maclhwuo.", XO (4, 396,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vsubshs", VX (4,1856), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA,
VB}},
{"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, PPC476, {URT, URA,
URB}},
{"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, PPC476, {URT, URA,
URB}},
-{"maclhwo", XO (4, 428,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA,
RB}},
-{"maclhwo.", XO (4, 428,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmaclhwo", XO (4, 430,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"maclhwo", XO (4, 428,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwo.", XO (4, 428,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmaclhwo", XO (4, 430,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vsubsws", VX (4,1920), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA,
VB}},
{"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, PPC476, {URT, URA,
URB}},
{"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, PPC476, {URT, URA,
URB}},
{"vsumsws", VX (4,1928), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"maclhwsuo", XO (4, 460,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"maclhwsuo", XO (4, 460,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, PPC476, {URT, URA,
URB}},
{"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, PPC476, {URT, URA,
URB}},
-{"maclhwso", XO (4, 492,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"maclhwso.", XO (4, 492,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmaclhwso", XO (4, 494,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
-{"nmaclhwso.", XO (4, 494,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT,
RA, RB}},
+{"maclhwso", XO (4, 492,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"maclhwso.", XO (4, 492,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmaclhwso", XO (4, 494,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
+{"nmaclhwso.", XO (4, 494,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA,
RB}},
{"dcbz_l", X (4,1014), XRT_MASK, PPCPS, PPCNONE, {RA, RB}},
{"mulli", OP(7), OP_MASK, PPCCOM, PPCNONE, {RT, RA, SI}},
@@ -3532,7 +3536,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"iseleq", X(31,79), X_MASK, PPCISEL, PPCNONE, {RT, RA, RB}},
-{"isel", XISEL(31,15), XISEL_MASK, PPCISEL, PPCNONE, {RT, RA, RB,
CRB}},
+{"isel", XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, PPCNONE, {RT, RA,
RB, CRB}},
{"subf", XO(31,40,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
{"sub", XO(31,40,0,0), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
@@ -3585,8 +3589,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mulhw", XO(31,75,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
-{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440, PPCNONE, {RA, RS, RB}},
-{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440, PPCNONE, {RA, RS,
RB}},
+{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|TITAN, PPCNONE, {RA,
RS, RB}},
+{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|TITAN, PPCNONE, {RA,
RS, RB}},
{"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, PPCNONE, {SR, RS}},
@@ -3629,7 +3633,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE,
{RS}},
-{"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT,
RA, RB}},
{"stvebx", X(31,135), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
{"stbfcmx", APU(31,135,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA,
RB}},
@@ -3676,7 +3680,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"wrteei", X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {E}},
-{"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA,
RB}},
{"stvehx", X(31,167), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
{"sthfcmx", APU(31,167,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA,
RB}},
@@ -3714,7 +3718,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"msgsnd", XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2, PPCNONE, {RB}},
-{"mtsr", X(31,210), XRB_MASK|(1<<20), COM32, PPCNONE, {SR, RS}},
+{"mtsr", X(31,210), XRB_MASK|(1<<20), COM32, TITAN, {SR, RS}},
{"eratwe", X(31,211), X_MASK, PPCA2, PPCNONE, {RS, RA, WS}},
@@ -3732,7 +3736,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"stbepx", X(31,223), X_MASK, E500MC|PPCA2, PPCNONE, {RS, RA, RB}},
-{"icblc", X(31,230), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"icblc", X(31,230), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA,
RB}},
{"stvx", X(31,231), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
{"stqfcmx", APU(31,231,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA,
RB}},
@@ -3757,7 +3761,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"icblce", X(31,238), X_MASK, PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
{"msgclr", XRTRA(31,238,0,0),XRTRA_MASK,E500MC|PPCA2, PPCNONE, {RB}},
-{"mtsrin", X(31,242), XRA_MASK, PPC32, PPCNONE, {RS, RB}},
+{"mtsrin", X(31,242), XRA_MASK, PPC32, TITAN, {RS, RB}},
{"mtsri", X(31,242), XRA_MASK, POWER32, PPCNONE, {RS, RB}},
{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, PPCNONE, {RA, RB}},
@@ -3773,7 +3777,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"dcbtstep", XRT(31,255,0), X_MASK, E500MC|PPCA2, PPCNONE, {RT, RA,
RB}},
-{"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, PPCNONE, {RS, RA}},
+{"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RS, RA}},
{"mfdcrx.", XRC(31,259,1), X_MASK, PPCA2, PPCNONE, {RS, RA}},
{"icbt", X(31,262), XRT_MASK, PPC403, PPCNONE, {RA, RB}},
@@ -3791,7 +3795,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"tlbiel", X(31,274), XRTLRA_MASK, POWER4, PPC476, {RB, L}},
-{"mfapidi", X(31,275), X_MASK, BOOKE, PPCNONE, {RT, RA}},
+{"mfapidi", X(31,275), X_MASK, BOOKE, TITAN, {RT, RA}},
{"lscbx", XRC(31,277,0), X_MASK, M601, PPCNONE, {RT, RA, RB}},
{"lscbx.", XRC(31,277,1), X_MASK, M601, PPCNONE, {RT, RA, RB}},
@@ -3811,10 +3815,10 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"mfdcrux", X(31,291), X_MASK, PPC464, PPCNONE, {RS, RA}},
-{"tlbie", X(31,306), XRTLRA_MASK, PPC, PPCNONE, {RB, L}},
+{"tlbie", X(31,306), XRTLRA_MASK, PPC, TITAN, {RB, L}},
{"tlbi", X(31,306), XRT_MASK, POWER, PPCNONE, {RA0, RB}},
-{"eciwx", X(31,310), X_MASK, PPC, PPCNONE, {RT, RA, RB}},
+{"eciwx", X(31,310), X_MASK, PPC, TITAN, {RT, RA, RB}},
{"lhzux", X(31,311), X_MASK, COM, PPCNONE, {RT, RAL, RB}},
@@ -3859,10 +3863,10 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, PPCNONE, {RT}},
-{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {RT,
SPR}},
+{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, TITAN, {RT,
SPR}},
{"mfdcr.", XRC(31,323,1), X_MASK, PPCA2, PPCNONE, {RT, SPR}},
-{"dcread", X(31,326), X_MASK, PPC476, PPCNONE, {RT, RA, RB}},
+{"dcread", X(31,326), X_MASK, PPC476|TITAN, PPCNONE, {RT, RA, RB}},
{"div", XO(31,331,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
{"div.", XO(31,331,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
@@ -3873,17 +3877,17 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, PPCNONE, {RT}},
{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, PPCNONE, {RT}},
+{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN, {RT}},
+{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN, {RT}},
{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, PPCNONE, {RT}},
{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, PPCNONE, {RT}},
{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, PPCNONE, {RT}},
{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, PPCNONE, {RT}},
-{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, PPCNONE, {RT}},
+{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN, {RT}},
+{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN, {RT}},
+{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2|TITAN, PPCNONE, {RT}},
{"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, PPCNONE, {RT}},
-{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, PPCNONE, {RT}},
+{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, TITAN, {RT}},
{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, PPCNONE, {RT}},
{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, PPCNONE, {RT}},
{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, PPCNONE, {RT}},
@@ -3924,7 +3928,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, PPCNONE, {RT}},
{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, PPCNONE, {RT}},
{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, PPCNONE, {RT}},
-{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, PPCNONE, {RT}},
+{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN, {RT}},
{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, PPCNONE, {RT}},
{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, PPCNONE, {RT}},
{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, PPCNONE, {RT}},
@@ -3961,13 +3965,13 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, PPCNONE, {RT}},
{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, PPCNONE, {RT}},
{"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
-{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, PPCNONE, {RT,
SPRBAT}},
+{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, TITAN, {RT,
SPRBAT}},
{"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
-{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, PPCNONE, {RT,
SPRBAT}},
+{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, TITAN, {RT,
SPRBAT}},
{"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
{"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, PPCNONE, {RT}},
-{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, PPCNONE, {RT,
SPRBAT}},
-{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, PPCNONE, {RT,
SPRBAT}},
+{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, TITAN, {RT,
SPRBAT}},
+{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, TITAN, {RT,
SPRBAT}},
{"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, PPCNONE, {RT}},
@@ -3977,7 +3981,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
{"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
{"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
-{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
+{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, TITAN, {RT}},
{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, PPCNONE, {RT}},
@@ -4000,6 +4004,16 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, PPCNONE, {RT}},
+{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mficdbtr", XSPR(31,339,927), XSPR_MASK, TITAN, PPCNONE, {RT}},
{"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, PPCNONE, {RT}},
@@ -4009,7 +4023,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, PPCNONE, {RT}},
-{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405, PPCNONE, {RT}},
+{"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, PPCNONE, {RT}},
{"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, PPCNONE, {RT}},
{"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, PPCNONE, {RT}},
{"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, PPCNONE, {RT}},
@@ -4026,7 +4041,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, PPCNONE, {RT}},
{"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, PPCNONE, {RT}},
-{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403, PPCNONE, {RT}},
+{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, PPCNONE, {RT}},
{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, PPCNONE, {RT}},
@@ -4040,6 +4055,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, PPCNONE, {RT}},
+{"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, PPCNONE, {RS}},
{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, PPCNONE, {RT}},
@@ -4071,7 +4087,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"divs", XO(31,363,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
{"divs.", XO(31,363,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
-{"tlbia", X(31,370), 0xffffffff, PPC, PPCNONE, {0}},
+{"tlbia", X(31,370), 0xffffffff, PPC, TITAN, {0}},
{"mftbl", XSPR(31,371,268), XSPR_MASK, CLASSIC, PPCNONE, {RT}},
{"mftbu", XSPR(31,371,269), XSPR_MASK, CLASSIC, PPCNONE, {RT}},
@@ -4085,10 +4101,10 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"popcntw", X(31,378), XRB_MASK, POWER7|PPCA2, PPCNONE, {RA, RS}},
-{"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, PPCNONE, {RA, RS}},
+{"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
{"mtdcrx.", XRC(31,387,1), X_MASK, PPCA2, PPCNONE, {RA, RS}},
-{"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA,
RB}},
{"stdfcmx", APU(31,391,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA,
RB}},
{"divdeu", XO(31,393,0,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
@@ -4119,7 +4135,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"slbie", X(31,434), XRTRA_MASK, PPC64, PPCNONE, {RB}},
-{"ecowx", X(31,438), X_MASK, PPC, PPCNONE, {RT, RA, RB}},
+{"ecowx", X(31,438), X_MASK, PPC, TITAN, {RT, RA, RB}},
{"sthux", X(31,439), X_MASK, COM, PPCNONE, {RS, RAS, RB}},
@@ -4164,10 +4180,10 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, PPCNONE, {RS}},
-{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE,
{SPR, RS}},
+{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, TITAN,
{SPR, RS}},
{"mtdcr.", XRC(31,451,1), X_MASK, PPCA2, PPCNONE, {SPR, RS}},
-{"dccci", X(31,454), XRT_MASK, PPC403|PPC440, PPCA2|PPC476, {RA,
RB}},
+{"dccci", X(31,454), XRT_MASK, PPC403|PPC440|TITAN, PPCA2|PPC476,
{RA, RB}},
{"dci", X(31,454), XRARB_MASK, PPCA2|PPC476, PPCNONE, {CT}},
{"divdu", XO(31,457,0,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
@@ -4181,15 +4197,15 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, PPCNONE, {RS}},
{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, PPCNONE, {RS}},
+{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, PPCNONE, {RS}},
{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, PPCNONE, {RS}},
-{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, PPCNONE, {RS}},
+{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN, {RS}},
+{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN, {RS}},
+{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, TITAN, {RS}},
+{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, TITAN, {RS}},
{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, PPCNONE, {RS}},
-{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, PPCNONE, {RS}},
+{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, TITAN, {RS}},
{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, PPCNONE, {RS}},
@@ -4228,7 +4244,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, PPCNONE, {RS}},
-{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, PPCNONE, {RS}},
+{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN, {RS}},
{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, PPCNONE, {RS}},
{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, PPCNONE, {RS}},
{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, PPCNONE, {RS}},
@@ -4265,16 +4281,22 @@ const struct powerpc_opcode powerpc_opcodes[]
= {
{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, PPCNONE, {RS}},
{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, PPCNONE, {RS}},
{"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
-{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT,
RS}},
+{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, TITAN, {SPRBAT,
RS}},
{"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
-{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT,
RS}},
+{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, TITAN, {SPRBAT,
RS}},
{"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
{"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, PPCNONE, {RS}},
-{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT,
RS}},
-{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT,
RS}},
+{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, TITAN, {SPRBAT,
RS}},
+{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, TITAN, {SPRBAT,
RS}},
{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
+{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, PPCNONE, {RS}},
{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, PPCNONE, {RS}},
{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, PPCNONE, {RS}},
{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, PPCNONE, {RS}},
@@ -4284,7 +4306,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, PPCNONE, {RS}},
{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, PPCNONE, {RS}},
-{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405, PPCNONE, {RS}},
+{"mtrmmucr", XSPR(31,467,946), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, PPCNONE, {RS}},
{"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, PPCNONE, {RS}},
{"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, PPCNONE, {RS}},
{"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, PPCNONE, {RS}},
@@ -4314,6 +4337,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, PPCNONE, {RS}},
+{"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, PPCNONE, {RS}},
{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, PPCNONE, {RS}},
{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, PPCNONE, {RS}},
@@ -4341,7 +4365,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCA2|PPC476, {RT, RA,
RB}},
-{"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA,
RB}},
{"stvxl", X(31,487), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
@@ -4433,7 +4457,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"lxsdx", X(31,588), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
-{"mfsr", X(31,595), XRB_MASK|(1<<20), COM32, PPCNONE, {RT, SR}},
+{"mfsr", X(31,595), XRB_MASK|(1<<20), COM32, TITAN, {RT, SR}},
{"lswi", X(31,597), X_MASK, PPCCOM, PPCNONE, {RT, RA0, NB}},
{"lsi", X(31,597), X_MASK, PWRCOM, PPCNONE, {RT, RA0, NB}},
@@ -4480,7 +4504,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
{"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
-{"mfsrin", X(31,659), XRA_MASK, PPC32, PPCNONE, {RT, RB}},
+{"mfsrin", X(31,659), XRA_MASK, PPC32, TITAN, {RT, RB}},
{"stdbrx", X(31,660), X_MASK, CELL|POWER7|PPCA2, PPCNONE, {RS, RA0,
RB}},
@@ -4711,7 +4735,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"extsb", XRC(31,954,0), XRB_MASK, PPC, PPCNONE, {RA, RS}},
{"extsb.", XRC(31,954,1), XRB_MASK, PPC, PPCNONE, {RA, RS}},
-{"iccci", X(31,966), XRT_MASK, PPC403|PPC440, PPC476, {RA, RB}},
+{"iccci", X(31,966), XRT_MASK, PPC403|PPC440|TITAN, PPC476, {RA,
RB}},
{"ici", X(31,966), XRARB_MASK, PPCA2|PPC476, PPCNONE, {CT}},
{"divduo", XO(31,457,1,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
@@ -4738,7 +4762,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"icbiep", XRT(31,991,0), XRT_MASK, E500MC|PPCA2, PPCNONE, {RA, RB}},
-{"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476, PPCNONE,
{RA, RB}},
+{"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476|TITAN,
PPCNONE, {RA, RB}},
{"nabso", XO(31,488,1,0), XORB_MASK, M601, PPCNONE, {RT, RA}},
{"nabso.", XO(31,488,1,1), XORB_MASK, M601, PPCNONE, {RT, RA}},
@@ -4749,7 +4773,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"divwo", XO(31,491,1,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
{"divwo.", XO(31,491,1,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
-{"tlbli", X(31,1010), XRTRA_MASK, PPC, PPCNONE, {RB}},
+{"tlbli", X(31,1010), XRTRA_MASK, PPC, TITAN, {RB}},
{"stdcix", X(31,1013), X_MASK, POWER6, PPCNONE, {RS, RA0, RB}},
@@ -4854,8 +4878,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"fadds", A(59,21,0), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
{"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
-{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, PPCNONE, {FRT, FRB}},
-{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, PPCNONE, {FRT, FRB}},
+{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, TITAN, {FRT, FRB}},
+{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, TITAN, {FRT, FRB}},
{"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
{"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7, {FRT, FRB, A_L}},
@@ -5141,8 +5165,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRB}},
{"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRB}},
-{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, PPCNONE, {FRT, FRB}},
-{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, PPCNONE, {FRT, FRB}},
+{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, TITAN, {FRT, FRB}},
+{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, TITAN, {FRT, FRB}},
{"fsel", A(63,23,0), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
{"fsel.", A(63,23,1), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: PATCH: Add AppliedMicro Titan (APM83xxx) support
2009-11-19 23:46 PATCH: Add AppliedMicro Titan (APM83xxx) support Philipp Tomsich
@ 2009-11-20 4:12 ` Alan Modra
2009-11-20 16:04 ` PATCH [version 2]: " Philipp Tomsich
0 siblings, 1 reply; 4+ messages in thread
From: Alan Modra @ 2009-11-20 4:12 UTC (permalink / raw)
To: Philipp Tomsich; +Cc: binutils
On Fri, Nov 20, 2009 at 12:44:37AM +0100, Philipp Tomsich wrote:
> This is a patch to add support for the AppliedMicro Titan core.
Your email client destroyed whitespace so the patch won't apply.
Also, please don't submit the ChangeLog entries as diffs (unless you
have CVS write privilege and can apply the patch yourself).
> +/* Opcode is supported by CPUs with PPC440-syle half-word multiply
> instructions */
> +#define PPC_OPCODE_MULHW 0x800000000ULL
Don't invent unnecessary opcode flags. You broke powerpc 476 with
this change. It's fine to add a MULHW macro in ppc-opc.c which
combines existing flags to keep the opcode table formatted nicely.
> + else if ((operand->flags & PPC_OPERAND_PMR) != 0)
> + (*info->fprintf_func) (info->stream, "pmctr%ld", value);
E300 calls these registers pmr<n>, so your choice for titan might look
a little confusing to E300 programmers. Also, the resulting
disassembly is that much harder to assemble. I think I'd prefer you
not make this change.
Please resubmit the patch.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 4+ messages in thread
* PATCH [version 2]: Add AppliedMicro Titan (APM83xxx) support
2009-11-20 4:12 ` Alan Modra
@ 2009-11-20 16:04 ` Philipp Tomsich
2010-02-08 2:00 ` Alan Modra
0 siblings, 1 reply; 4+ messages in thread
From: Philipp Tomsich @ 2009-11-20 16:04 UTC (permalink / raw)
To: binutils; +Cc: Alan Modra
[-- Attachment #1: Type: text/plain, Size: 516 bytes --]
Hi everyone,
The updated patch is attached to this mail (to avoid any further
formatting issues with my mail client).
The following changes are contained in this revision of the patch:
* addition of a "-mtitan" option
* updates to the PPC opcode table to support the AppliedMicro Titan core
* an additional test case for GAS for the AppliedMicro Titan core
Thanks to Alan for the lightning-fast review and the feedback.
Best regards,
Phil.
--
Dr. Philipp Tomsich
Theobroma Systems Design und Consulting GmbH
[-- Attachment #2: titan.diff --]
[-- Type: application/octet-stream, Size: 68882 bytes --]
diff --git a/bfd/archures.c b/bfd/archures.c
index 8df2ce1..b38f7cf 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -230,6 +230,7 @@ DESCRIPTION
.#define bfd_mach_ppc_7400 7400
.#define bfd_mach_ppc_e500 500
.#define bfd_mach_ppc_e500mc 5001
+.#define bfd_mach_ppc_titan 83
. bfd_arch_rs6000, {* IBM RS/6000 *}
.#define bfd_mach_rs6k 6000
.#define bfd_mach_rs6k_rs1 6001
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 455ec56..a900c25 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1901,6 +1901,7 @@ enum bfd_architecture
#define bfd_mach_ppc_7400 7400
#define bfd_mach_ppc_e500 500
#define bfd_mach_ppc_e500mc 5001
+#define bfd_mach_ppc_titan 83
bfd_arch_rs6000, /* IBM RS/6000 */
#define bfd_mach_rs6k 6000
#define bfd_mach_rs6k_rs1 6001
diff --git a/bfd/cpu-powerpc.c b/bfd/cpu-powerpc.c
index 0b511f3..c3db7a5 100644
--- a/bfd/cpu-powerpc.c
+++ b/bfd/cpu-powerpc.c
@@ -324,6 +324,21 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
FALSE, /* not the default */
powerpc_compatible,
bfd_default_scan,
+ &bfd_powerpc_archs[17]
+ },
+ {
+ 32, /* 32 bits in a word */
+ 32, /* 32 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_titan,
+ "powerpc",
+ "powerpc:titan",
+ 3,
+ FALSE, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
0
}
+
};
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index 1d615e9..6a430ed 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -1211,6 +1211,7 @@ PowerPC options:\n\
-me500, -me500x2 generate code for Motorola e500 core complex\n\
-me500mc, generate code for Freescale e500mc core complex\n\
-mspe generate code for Motorola SPE instructions\n\
+-mtitan generate code for AppliedMicro Titan core complex\n\
-mregnames Allow symbolic names for registers\n\
-mno-regnames Do not allow symbolic names for registers\n"));
#ifdef OBJ_ELF
@@ -1288,6 +1289,8 @@ ppc_mach (void)
return bfd_mach_ppc64;
else if (ppc_arch () == bfd_arch_rs6000)
return bfd_mach_rs6k;
+ else if (ppc_cpu & PPC_OPCODE_TITAN)
+ return bfd_mach_ppc_titan;
else
return bfd_mach_ppc;
}
diff --git a/gas/doc/c-ppc.texi b/gas/doc/c-ppc.texi
index cab461b..00b15cc 100644
--- a/gas/doc/c-ppc.texi
+++ b/gas/doc/c-ppc.texi
@@ -70,6 +70,9 @@ Generate code for Motorola e500 core complex.
@item -mspe
Generate code for Motorola SPE instructions.
+@item -mtitan
+Generate code for AppliedMicro Titan core complex.
+
@item -mppc64bridge
Generate code for PowerPC 64, including bridge insns.
diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp
index 0c8d852..3db0ade 100644
--- a/gas/testsuite/gas/ppc/ppc.exp
+++ b/gas/testsuite/gas/ppc/ppc.exp
@@ -50,5 +50,6 @@ if { [istarget powerpc*-*-*] } then {
run_dump_test "power7"
run_dump_test "vsx"
run_dump_test "476"
+ run_dump_test "titan"
}
}
diff --git a/gas/testsuite/gas/ppc/titan.d b/gas/testsuite/gas/ppc/titan.d
new file mode 100644
index 0000000..2b59928
--- /dev/null
+++ b/gas/testsuite/gas/ppc/titan.d
@@ -0,0 +1,267 @@
+#as: -mtitan
+#objdump: -dr -Mtitan
+#name: AppliedMicro Titan tests
+
+.*: +file format elf(32)?(64)?-powerpc.*
+
+Disassembly of section \.text:
+
+0+0000000 <start>:
+ 0: 4e 80 00 20 blr
+ 4: 0c 81 00 00 tweqi r1,0
+ 8: 10 41 01 58 macchw r2,r1,r0
+ c: 10 41 01 59 macchw\. r2,r1,r0
+ 10: 10 41 05 58 macchwo r2,r1,r0
+ 14: 10 41 05 59 macchwo\. r2,r1,r0
+ 18: 10 41 01 d8 macchws r2,r1,r0
+ 1c: 10 41 01 d9 macchws\. r2,r1,r0
+ 20: 10 41 05 d8 macchwso r2,r1,r0
+ 24: 10 41 05 d9 macchwso\. r2,r1,r0
+ 28: 10 41 01 98 macchwsu r2,r1,r0
+ 2c: 10 41 01 99 macchwsu\. r2,r1,r0
+ 30: 10 41 05 98 macchwsuo r2,r1,r0
+ 34: 10 41 05 99 macchwsuo\. r2,r1,r0
+ 38: 10 41 01 18 macchwu r2,r1,r0
+ 3c: 10 41 01 19 macchwu\. r2,r1,r0
+ 40: 10 41 05 18 macchwuo r2,r1,r0
+ 44: 10 41 05 19 macchwuo\. r2,r1,r0
+ 48: 10 41 00 58 machhw r2,r1,r0
+ 4c: 10 41 00 59 machhw\. r2,r1,r0
+ 50: 10 41 04 58 machhwo r2,r1,r0
+ 54: 10 41 04 59 machhwo\. r2,r1,r0
+ 58: 10 41 00 d8 machhws r2,r1,r0
+ 5c: 10 41 00 d9 machhws\. r2,r1,r0
+ 60: 10 41 04 d8 machhwso r2,r1,r0
+ 64: 10 41 04 d9 machhwso\. r2,r1,r0
+ 68: 10 41 00 98 machhwsu r2,r1,r0
+ 6c: 10 41 00 99 machhwsu\. r2,r1,r0
+ 70: 10 41 04 98 machhwsuo r2,r1,r0
+ 74: 10 41 04 99 machhwsuo\. r2,r1,r0
+ 78: 10 41 00 18 machhwu r2,r1,r0
+ 7c: 10 41 00 19 machhwu\. r2,r1,r0
+ 80: 10 41 04 18 machhwuo r2,r1,r0
+ 84: 10 41 04 19 machhwuo\. r2,r1,r0
+ 88: 10 41 03 58 maclhw r2,r1,r0
+ 8c: 10 41 03 59 maclhw\. r2,r1,r0
+ 90: 10 41 07 58 maclhwo r2,r1,r0
+ 94: 10 41 07 59 maclhwo\. r2,r1,r0
+ 98: 10 41 03 d8 maclhws r2,r1,r0
+ 9c: 10 41 03 d9 maclhws\. r2,r1,r0
+ a0: 10 41 07 d8 maclhwso r2,r1,r0
+ a4: 10 41 07 d9 maclhwso\. r2,r1,r0
+ a8: 10 41 03 98 maclhwsu r2,r1,r0
+ ac: 10 41 03 99 maclhwsu\. r2,r1,r0
+ b0: 10 41 07 98 maclhwsuo r2,r1,r0
+ b4: 10 41 07 99 maclhwsuo\. r2,r1,r0
+ b8: 10 41 03 18 maclhwu r2,r1,r0
+ bc: 10 41 03 19 maclhwu\. r2,r1,r0
+ c0: 10 41 07 18 maclhwuo r2,r1,r0
+ c4: 10 41 07 19 maclhwuo\. r2,r1,r0
+ c8: 10 41 01 5c nmacchw r2,r1,r0
+ cc: 10 41 01 5d nmacchw\. r2,r1,r0
+ d0: 10 41 05 5c nmacchwo r2,r1,r0
+ d4: 10 41 05 5d nmacchwo\. r2,r1,r0
+ d8: 10 41 01 dc nmacchws r2,r1,r0
+ dc: 10 41 01 dd nmacchws\. r2,r1,r0
+ e0: 10 41 05 dc nmacchwso r2,r1,r0
+ e4: 10 41 05 dd nmacchwso\. r2,r1,r0
+ e8: 10 41 00 5c nmachhw r2,r1,r0
+ ec: 10 41 00 5d nmachhw\. r2,r1,r0
+ f0: 10 41 04 5c nmachhwo r2,r1,r0
+ f4: 10 41 04 5d nmachhwo\. r2,r1,r0
+ f8: 10 41 00 dc nmachhws r2,r1,r0
+ fc: 10 41 00 dd nmachhws\. r2,r1,r0
+ 100: 10 41 04 dc nmachhwso r2,r1,r0
+ 104: 10 41 04 dd nmachhwso\. r2,r1,r0
+ 108: 10 41 03 5c nmaclhw r2,r1,r0
+ 10c: 10 41 03 5d nmaclhw\. r2,r1,r0
+ 110: 10 41 07 5c nmaclhwo r2,r1,r0
+ 114: 10 41 07 5d nmaclhwo\. r2,r1,r0
+ 118: 10 41 03 dc nmaclhws r2,r1,r0
+ 11c: 10 41 03 dd nmaclhws\. r2,r1,r0
+ 120: 10 41 07 dc nmaclhwso r2,r1,r0
+ 124: 10 41 07 dd nmaclhwso\. r2,r1,r0
+ 128: 10 41 01 50 mulchw r2,r1,r0
+ 12c: 10 41 01 51 mulchw\. r2,r1,r0
+ 130: 10 41 01 10 mulchwu r2,r1,r0
+ 134: 10 41 01 11 mulchwu\. r2,r1,r0
+ 138: 10 41 00 50 mulhhw r2,r1,r0
+ 13c: 10 41 00 51 mulhhw\. r2,r1,r0
+ 140: 10 41 00 10 mulhhwu r2,r1,r0
+ 144: 10 41 00 11 mulhhwu\. r2,r1,r0
+ 148: 10 41 03 50 mullhw r2,r1,r0
+ 14c: 10 41 03 51 mullhw\. r2,r1,r0
+ 150: 10 41 03 10 mullhwu r2,r1,r0
+ 154: 10 41 03 11 mullhwu\. r2,r1,r0
+ 158: 7c 22 00 9c dlmzb r2,r1,r0
+ 15c: 7c 22 00 9d dlmzb\. r2,r1,r0
+ 160: 7c 02 0b 8c dccci r2,r1
+ 164: 7c 02 0f 8c iccci r2,r1
+ 168: 7c 02 0b 0c dcblc r2,r1
+ 16c: 7c 02 0b 0c dcblc r2,r1
+ 170: 7c 22 0b 0c dcblc 1,r2,r1
+ 174: 7c 02 09 4c dcbtls r2,r1
+ 178: 7c 02 09 4c dcbtls r2,r1
+ 17c: 7c 22 09 4c dcbtls 1,r2,r1
+ 180: 7c 02 09 0c dcbtstls r2,r1
+ 184: 7c 02 09 0c dcbtstls r2,r1
+ 188: 7c 22 09 0c dcbtstls 1,r2,r1
+ 18c: 7c 02 09 cc icblc r2,r1
+ 190: 7c 02 09 cc icblc r2,r1
+ 194: 7c 22 09 cc icblc 1,r2,r1
+ 198: 7c 02 0b cc icbtls r2,r1
+ 19c: 7c 02 0b cc icbtls r2,r1
+ 1a0: 7c 22 0b cc icbtls 1,r2,r1
+ 1a4: 7c 41 02 8c dcread r2,r1,r0
+ 1a8: 7c 02 0f cc icread r2,r1
+ 1ac: 7c 41 02 9c mfpmr r2,1
+ 1b0: 7c 22 02 9c mfpmr r1,2
+ 1b4: 7c 81 02 a6 mfxer r4
+ 1b8: 7c 81 02 a6 mfxer r4
+ 1bc: 7c 88 02 a6 mflr r4
+ 1c0: 7c 88 02 a6 mflr r4
+ 1c4: 7c 89 02 a6 mfctr r4
+ 1c8: 7c 89 02 a6 mfctr r4
+ 1cc: 7c 96 02 a6 mfdec r4
+ 1d0: 7c 96 02 a6 mfdec r4
+ 1d4: 7c 9a 02 a6 mfsrr0 r4
+ 1d8: 7c 9a 02 a6 mfsrr0 r4
+ 1dc: 7c 9b 02 a6 mfsrr1 r4
+ 1e0: 7c 9b 02 a6 mfsrr1 r4
+ 1e4: 7c 90 0a a6 mfpid r4
+ 1e8: 7c 90 0a a6 mfpid r4
+ 1ec: 7c 9a 0a a6 mfcsrr0 r4
+ 1f0: 7c 9a 0a a6 mfcsrr0 r4
+ 1f4: 7c 9b 0a a6 mfcsrr1 r4
+ 1f8: 7c 9b 0a a6 mfcsrr1 r4
+ 1fc: 7c 9d 0a a6 mfdear r4
+ 200: 7c 9d 0a a6 mfdear r4
+ 204: 7c 9e 0a a6 mfesr r4
+ 208: 7c 9e 0a a6 mfesr r4
+ 20c: 7c 9f 0a a6 mfivpr r4
+ 210: 7c 9f 0a a6 mfivpr r4
+ 214: 7c 80 42 a6 mfusprg0 r4
+ 218: 7c 80 42 a6 mfusprg0 r4
+ 21c: 7c 84 42 a6 mfsprg r4,4
+ 220: 7c 84 42 a6 mfsprg r4,4
+ 224: 7c 85 42 a6 mfsprg r4,5
+ 228: 7c 85 42 a6 mfsprg r4,5
+ 22c: 7c 86 42 a6 mfsprg r4,6
+ 230: 7c 86 42 a6 mfsprg r4,6
+ 234: 7c 87 42 a6 mfsprg r4,7
+ 238: 7c 87 42 a6 mfsprg r4,7
+ 23c: 7c 8c 42 a6 mftb r4
+ 240: 7c 8c 42 a6 mftb r4
+ 244: 7c 8c 42 a6 mftb r4
+ 248: 7c 8d 42 a6 mftbu r4
+ 24c: 7c 8d 42 a6 mftbu r4
+ 250: 7c 90 42 a6 mfsprg r4,0
+ 254: 7c 90 42 a6 mfsprg r4,0
+ 258: 7c 91 42 a6 mfsprg r4,1
+ 25c: 7c 91 42 a6 mfsprg r4,1
+ 260: 7c 92 42 a6 mfsprg r4,2
+ 264: 7c 92 42 a6 mfsprg r4,2
+ 268: 7c 93 42 a6 mfsprg r4,3
+ 26c: 7c 93 42 a6 mfsprg r4,3
+ 270: 7c 9e 42 a6 mfpir r4
+ 274: 7c 9e 42 a6 mfpir r4
+ 278: 7c 9f 42 a6 mfpvr r4
+ 27c: 7c 9f 42 a6 mfpvr r4
+ 280: 7c 90 4a a6 mfdbsr r4
+ 284: 7c 90 4a a6 mfdbsr r4
+ 288: 7c 94 4a a6 mfdbcr0 r4
+ 28c: 7c 94 4a a6 mfdbcr0 r4
+ 290: 7c 95 4a a6 mfdbcr1 r4
+ 294: 7c 95 4a a6 mfdbcr1 r4
+ 298: 7c 96 4a a6 mfdbcr2 r4
+ 29c: 7c 96 4a a6 mfdbcr2 r4
+ 2a0: 7c 98 4a a6 mfiac1 r4
+ 2a4: 7c 98 4a a6 mfiac1 r4
+ 2a8: 7c 99 4a a6 mfiac2 r4
+ 2ac: 7c 99 4a a6 mfiac2 r4
+ 2b0: 7c 9a 4a a6 mfiac3 r4
+ 2b4: 7c 9a 4a a6 mfiac3 r4
+ 2b8: 7c 9b 4a a6 mfiac4 r4
+ 2bc: 7c 9b 4a a6 mfiac4 r4
+ 2c0: 7c 9c 4a a6 mfdac1 r4
+ 2c4: 7c 9c 4a a6 mfdac1 r4
+ 2c8: 7c 9d 4a a6 mfdac2 r4
+ 2cc: 7c 9d 4a a6 mfdac2 r4
+ 2d0: 7c 9e 4a a6 mfdvc1 r4
+ 2d4: 7c 9e 4a a6 mfdvc1 r4
+ 2d8: 7c 9f 4a a6 mfdvc2 r4
+ 2dc: 7c 9f 4a a6 mfdvc2 r4
+ 2e0: 7c 90 52 a6 mftsr r4
+ 2e4: 7c 90 52 a6 mftsr r4
+ 2e8: 7c 94 52 a6 mftcr r4
+ 2ec: 7c 94 52 a6 mftcr r4
+ 2f0: 7c 90 62 a6 mfivor0 r4
+ 2f4: 7c 90 62 a6 mfivor0 r4
+ 2f8: 7c 91 62 a6 mfivor1 r4
+ 2fc: 7c 91 62 a6 mfivor1 r4
+ 300: 7c 92 62 a6 mfivor2 r4
+ 304: 7c 92 62 a6 mfivor2 r4
+ 308: 7c 93 62 a6 mfivor3 r4
+ 30c: 7c 93 62 a6 mfivor3 r4
+ 310: 7c 94 62 a6 mfivor4 r4
+ 314: 7c 94 62 a6 mfivor4 r4
+ 318: 7c 95 62 a6 mfivor5 r4
+ 31c: 7c 95 62 a6 mfivor5 r4
+ 320: 7c 96 62 a6 mfivor6 r4
+ 324: 7c 96 62 a6 mfivor6 r4
+ 328: 7c 97 62 a6 mfivor7 r4
+ 32c: 7c 97 62 a6 mfivor7 r4
+ 330: 7c 98 62 a6 mfivor8 r4
+ 334: 7c 98 62 a6 mfivor8 r4
+ 338: 7c 99 62 a6 mfivor9 r4
+ 33c: 7c 99 62 a6 mfivor9 r4
+ 340: 7c 9a 62 a6 mfivor10 r4
+ 344: 7c 9a 62 a6 mfivor10 r4
+ 348: 7c 9b 62 a6 mfivor11 r4
+ 34c: 7c 9b 62 a6 mfivor11 r4
+ 350: 7c 9c 62 a6 mfivor12 r4
+ 354: 7c 9c 62 a6 mfivor12 r4
+ 358: 7c 9d 62 a6 mfivor13 r4
+ 35c: 7c 9d 62 a6 mfivor13 r4
+ 360: 7c 9e 62 a6 mfivor14 r4
+ 364: 7c 9e 62 a6 mfivor14 r4
+ 368: 7c 9f 62 a6 mfivor15 r4
+ 36c: 7c 9f 62 a6 mfivor15 r4
+ 370: 7c 93 82 a6 mfivor35 r4
+ 374: 7c 93 82 a6 mfivor35 r4
+ 378: 7c 9a 8a a6 mfdc_dat r4
+ 37c: 7c 9a 8a a6 mfdc_dat r4
+ 380: 7c 9b 8a a6 mfmcsrr1 r4
+ 384: 7c 9b 8a a6 mfmcsrr1 r4
+ 388: 7c 9c 8a a6 mfmcsr r4
+ 38c: 7c 9c 8a a6 mfmcsr r4
+ 390: 7c 90 da a6 mfivndx r4
+ 394: 7c 90 da a6 mfivndx r4
+ 398: 7c 91 da a6 mfdvndx r4
+ 39c: 7c 91 da a6 mfdvndx r4
+ 3a0: 7c 92 da a6 mfivlim r4
+ 3a4: 7c 92 da a6 mfivlim r4
+ 3a8: 7c 93 da a6 mfdvlim r4
+ 3ac: 7c 93 da a6 mfdvlim r4
+ 3b0: 7c 94 da a6 mfclcsr r4
+ 3b4: 7c 94 da a6 mfclcsr r4
+ 3b8: 7c 98 da a6 mfccr1 r4
+ 3bc: 7c 98 da a6 mfccr1 r4
+ 3c0: 7c 9b e2 a6 mfrstcfg r4
+ 3c4: 7c 9b e2 a6 mfrstcfg r4
+ 3c8: 7c 9c e2 a6 mfdcdbtrl r4
+ 3cc: 7c 9c e2 a6 mfdcdbtrl r4
+ 3d0: 7c 9d e2 a6 mfdcdbtrh r4
+ 3d4: 7c 9d e2 a6 mfdcdbtrh r4
+ 3d8: 7c 9f e2 a6 mficdbtr r4
+ 3dc: 7c 9f e2 a6 mficdbtr r4
+ 3e0: 7c 92 ea a6 mfmmucr r4
+ 3e4: 7c 92 ea a6 mfmmucr r4
+ 3e8: 7c 93 ea a6 mfccr0 r4
+ 3ec: 7c 93 ea a6 mfccr0 r4
+ 3f0: 7c 93 f2 a6 mficdbdr r4
+ 3f4: 7c 93 f2 a6 mficdbdr r4
+ 3f8: 7c 93 fa a6 mfdbdr r4
+ 3fc: 7c 93 fa a6 mfdbdr r4
+ 400: 7c 96 0b a6 mtdecar r4
+ 404: 7c 96 0b a6 mtdecar r4
diff --git a/gas/testsuite/gas/ppc/titan.s b/gas/testsuite/gas/ppc/titan.s
new file mode 100644
index 0000000..7155a5a
--- /dev/null
+++ b/gas/testsuite/gas/ppc/titan.s
@@ -0,0 +1,261 @@
+# AppliedMicro Titan tests
+ .section ".text"
+start:
+ blr
+ tweqi 1, 0
+ macchw 2, 1, 0
+ macchw. 2, 1, 0
+ macchwo 2, 1, 0
+ macchwo. 2, 1, 0
+ macchws 2, 1, 0
+ macchws. 2, 1, 0
+ macchwso 2, 1, 0
+ macchwso. 2, 1, 0
+ macchwsu 2, 1, 0
+ macchwsu. 2, 1, 0
+ macchwsuo 2, 1, 0
+ macchwsuo. 2, 1, 0
+ macchwu 2, 1, 0
+ macchwu. 2, 1, 0
+ macchwuo 2, 1, 0
+ macchwuo. 2, 1, 0
+ machhw 2, 1, 0
+ machhw. 2, 1, 0
+ machhwo 2, 1, 0
+ machhwo. 2, 1, 0
+ machhws 2, 1, 0
+ machhws. 2, 1, 0
+ machhwso 2, 1, 0
+ machhwso. 2, 1, 0
+ machhwsu 2, 1, 0
+ machhwsu. 2, 1, 0
+ machhwsuo 2, 1, 0
+ machhwsuo. 2, 1, 0
+ machhwu 2, 1, 0
+ machhwu. 2, 1, 0
+ machhwuo 2, 1, 0
+ machhwuo. 2, 1, 0
+ maclhw 2, 1, 0
+ maclhw. 2, 1, 0
+ maclhwo 2, 1, 0
+ maclhwo. 2, 1, 0
+ maclhws 2, 1, 0
+ maclhws. 2, 1, 0
+ maclhwso 2, 1, 0
+ maclhwso. 2, 1, 0
+ maclhwsu 2, 1, 0
+ maclhwsu. 2, 1, 0
+ maclhwsuo 2, 1, 0
+ maclhwsuo. 2, 1, 0
+ maclhwu 2, 1, 0
+ maclhwu. 2, 1, 0
+ maclhwuo 2, 1, 0
+ maclhwuo. 2, 1, 0
+ nmacchw 2, 1, 0
+ nmacchw. 2, 1, 0
+ nmacchwo 2, 1, 0
+ nmacchwo. 2, 1, 0
+ nmacchws 2, 1, 0
+ nmacchws. 2, 1, 0
+ nmacchwso 2, 1, 0
+ nmacchwso. 2, 1, 0
+ nmachhw 2, 1, 0
+ nmachhw. 2, 1, 0
+ nmachhwo 2, 1, 0
+ nmachhwo. 2, 1, 0
+ nmachhws 2, 1, 0
+ nmachhws. 2, 1, 0
+ nmachhwso 2, 1, 0
+ nmachhwso. 2, 1, 0
+ nmaclhw 2, 1, 0
+ nmaclhw. 2, 1, 0
+ nmaclhwo 2, 1, 0
+ nmaclhwo. 2, 1, 0
+ nmaclhws 2, 1, 0
+ nmaclhws. 2, 1, 0
+ nmaclhwso 2, 1, 0
+ nmaclhwso. 2, 1, 0
+ mulchw 2, 1, 0
+ mulchw. 2, 1, 0
+ mulchwu 2, 1, 0
+ mulchwu. 2, 1, 0
+ mulhhw 2, 1, 0
+ mulhhw. 2, 1, 0
+ mulhhwu 2, 1, 0
+ mulhhwu. 2, 1, 0
+ mullhw 2, 1, 0
+ mullhw. 2, 1, 0
+ mullhwu 2, 1, 0
+ mullhwu. 2, 1, 0
+ dlmzb 2, 1, 0
+ dlmzb. 2, 1, 0
+ dccci 2, 1
+ iccci 2, 1
+ dcblc 0, 2, 1
+ dcblc 2, 1
+ dcblc 1, 2, 1
+ dcbtls 0, 2, 1
+ dcbtls 2, 1
+ dcbtls 1, 2, 1
+ dcbtstls 0, 2, 1
+ dcbtstls 2, 1
+ dcbtstls 1, 2, 1
+ icblc 0, 2, 1
+ icblc 2, 1
+ icblc 1, 2, 1
+ icbtls 0, 2, 1
+ icbtls 2, 1
+ icbtls 1, 2, 1
+ dcread 2, 1, 0
+ icread 2, 1
+ mfpmr 2, 1
+ mfpmr 1, 2
+ mfspr 4, 0x001
+ mfxer 4
+ mfspr 4, 0x008
+ mflr 4
+ mfspr 4, 0x009
+ mfctr 4
+ mfspr 4, 0x016
+ mfdec 4
+ mfspr 4, 0x01a
+ mfsrr0 4
+ mfspr 4, 0x01b
+ mfsrr1 4
+ mfspr 4, 0x030
+ mfpid 4
+ mfspr 4, 0x03a
+ mfcsrr0 4
+ mfspr 4, 0x03b
+ mfcsrr1 4
+ mfspr 4, 0x03d
+ mfdear 4
+ mfspr 4, 0x03e
+ mfesr 4
+ mfspr 4, 0x03f
+ mfivpr 4
+ mfspr 4, 0x100
+ mfusprg0 4
+ mfspr 4, 0x104
+ mfsprg4 4
+ mfspr 4, 0x105
+ mfsprg5 4
+ mfspr 4, 0x106
+ mfsprg6 4
+ mfspr 4, 0x107
+ mfsprg7 4
+ mfspr 4, 0x10c
+ mftbl 4
+ mftb 4
+ mfspr 4, 0x10d
+ mftbu 4
+ mfspr 4, 0x110
+ mfsprg0 4
+ mfspr 4, 0x111
+ mfsprg1 4
+ mfspr 4, 0x112
+ mfsprg2 4
+ mfspr 4, 0x113
+ mfsprg3 4
+ mfspr 4, 0x11e
+ mfpir 4
+ mfspr 4, 0x11f
+ mfpvr 4
+ mfspr 4, 0x130
+ mfdbsr 4
+ mfspr 4, 0x134
+ mfdbcr0 4
+ mfspr 4, 0x135
+ mfdbcr1 4
+ mfspr 4, 0x136
+ mfdbcr2 4
+ mfspr 4, 0x138
+ mfiac1 4
+ mfspr 4, 0x139
+ mfiac2 4
+ mfspr 4, 0x13a
+ mfiac3 4
+ mfspr 4, 0x13b
+ mfiac4 4
+ mfspr 4, 0x13c
+ mfdac1 4
+ mfspr 4, 0x13d
+ mfdac2 4
+ mfspr 4, 0x13e
+ mfdvc1 4
+ mfspr 4, 0x13f
+ mfdvc2 4
+ mfspr 4, 0x150
+ mftsr 4
+ mfspr 4, 0x154
+ mftcr 4
+ mfspr 4, 0x190
+ mfivor0 4
+ mfspr 4, 0x191
+ mfivor1 4
+ mfspr 4, 0x192
+ mfivor2 4
+ mfspr 4, 0x193
+ mfivor3 4
+ mfspr 4, 0x194
+ mfivor4 4
+ mfspr 4, 0x195
+ mfivor5 4
+ mfspr 4, 0x196
+ mfivor6 4
+ mfspr 4, 0x197
+ mfivor7 4
+ mfspr 4, 0x198
+ mfivor8 4
+ mfspr 4, 0x199
+ mfivor9 4
+ mfspr 4, 0x19a
+ mfivor10 4
+ mfspr 4, 0x19b
+ mfivor11 4
+ mfspr 4, 0x19c
+ mfivor12 4
+ mfspr 4, 0x19d
+ mfivor13 4
+ mfspr 4, 0x19e
+ mfivor14 4
+ mfspr 4, 0x19f
+ mfivor15 4
+ mfspr 4, 0x213
+ mfivor35 4
+ mfspr 4, 0x23a
+ mfmcsrr0 4
+ mfspr 4, 0x23b
+ mfmcsrr1 4
+ mfspr 4, 0x23c
+ mfmcsr 4
+ mfspr 4, 0x370
+ mfivndx 4
+ mfspr 4, 0x371
+ mfdvndx 4
+ mfspr 4, 0x372
+ mfivlim 4
+ mfspr 4, 0x373
+ mfdvlim 4
+ mfspr 4, 0x374
+ mfclcsr 4
+ mfspr 4, 0x378
+ mfccr1 4
+ mfspr 4, 0x39b
+ mfrstcfg 4
+ mfspr 4, 0x39c
+ mfdcdbtrl 4
+ mfspr 4, 0x39d
+ mfdcdbtrh 4
+ mfspr 4, 0x39f
+ mficdbtr 4
+ mfspr 4, 0x3b2
+ mfmmucr 4
+ mfspr 4, 0x3b3
+ mfccr0 4
+ mfspr 4, 0x3d3
+ mficdbdr 4
+ mfspr 4, 0x3f3
+ mfdbdr 4
+ mtspr 0x036, 4
+ mtdecar 4
diff --git a/include/opcode/ppc.h b/include/opcode/ppc.h
index 1dc2f1d..ea97b3a 100644
--- a/include/opcode/ppc.h
+++ b/include/opcode/ppc.h
@@ -168,11 +168,14 @@ extern const int powerpc_num_opcodes;
#define PPC_OPCODE_VSX 0x80000000
/* Opcode is supported by A2. */
-#define PPC_OPCODE_A2 0x100000000ULL
+#define PPC_OPCODE_A2 0x100000000ULL
/* Opcode is supported by PowerPC 476 processor. */
#define PPC_OPCODE_476 0x200000000ULL
+/* Opcode is supported by AppliedMicro Titan core */
+#define PPC_OPCODE_TITAN 0x400000000ULL
+
/* A macro to extract the major opcode from an instruction. */
#define PPC_OP(i) (((i) >> 26) & 0x3f)
\f
@@ -332,6 +335,7 @@ extern const unsigned int num_powerpc_operands;
/* This operand names a vector-scalar unit register. The disassembler
prints these with a leading 'vs'. */
#define PPC_OPERAND_VSR (0x100000)
+
\f
/* The POWER and PowerPC assemblers use a few macros. We keep them
with the operands table for simplicity. The macro table is an
diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c
index ac88f76..249abf1 100644
--- a/opcodes/ppc-dis.c
+++ b/opcodes/ppc-dis.c
@@ -159,6 +159,9 @@ struct ppc_mopt ppc_opts[] = {
0 },
{ "spe", (PPC_OPCODE_PPC | PPC_OPCODE_EFS),
PPC_OPCODE_SPE },
+ { "titan", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_32
+ | PPC_OPCODE_PMR | PPC_OPCODE_RFMCI | PPC_OPCODE_TITAN),
+ 0 },
{ "vsx", (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC),
PPC_OPCODE_VSX },
};
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 123436c..73afbe5 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -442,8 +442,8 @@ const struct powerpc_operand powerpc_operands[] =
/* The SPR field in an XFX form instruction. This is flipped--the
lower 5 bits are stored in the upper 5 and vice- versa. */
-#define SPR SISIGNOPT + 1
-#define PMR SPR
+#define SPR SISIGNOPT + 1
+#define PMR SPR
#define SPR_MASK (0x3ff << 11)
{ 0x3ff, 11, insert_spr, extract_spr, 0 },
@@ -1935,6 +1935,8 @@ extract_dm (unsigned long insn,
#define PPCRFMCI PPC_OPCODE_RFMCI
#define E500MC PPC_OPCODE_E500MC
#define PPCA2 PPC_OPCODE_A2
+#define TITAN PPC_OPCODE_TITAN
+#define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | TITAN
\f
/* The opcode table.
@@ -2017,16 +2019,16 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"vmrghb", VX (4, 12), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, PPCNONE, {FRS,RA,RB,PSWM,PSQM}},
{"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"mulhhwu", XRC(4, 8,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"mulhhwu.", XRC(4, 8,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulhhwu", XRC(4, 8,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"mulhhwu.", XRC(4, 8,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_sum0", A (4, 10,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
{"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
{"ps_sum1", A (4, 11,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
{"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
{"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
-{"machhwu", XO (4, 12,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwu", XO (4, 12,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
-{"machhwu.", XO (4, 12,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwu.", XO (4, 12,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
{"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
{"ps_madds0", A (4, 14,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
@@ -2081,13 +2083,13 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, PPCNONE, {FRS,RA,RB,PSWM,PSQM}},
{"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulhhw", XRC(4, 40,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulhhw", XRC(4, 40,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulhhw.", XRC(4, 40,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhw", XO (4, 44,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhw.", XO (4, 44,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhw", XO (4, 46,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhw.", XO (4, 46,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulhhw.", XRC(4, 40,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhw", XO (4, 44,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhw.", XO (4, 44,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhw", XO (4, 46,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhw.", XO (4, 46,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_cmpu1", X (4, 64), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
{"vadduwm", VX (4, 128), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
@@ -2097,15 +2099,15 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
{"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"machhwsu", XO (4, 76,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhwsu.", XO (4, 76,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwsu", XO (4, 76,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhwsu.", XO (4, 76,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_cmpo1", X (4, 96), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"machhws", XO (4, 108,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhws.", XO (4, 108,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhws", XO (4, 110,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhws.", XO (4, 110,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhws", XO (4, 108,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhws.", XO (4, 108,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhws", XO (4, 110,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhws.", XO (4, 110,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vslb", VX (4, 260), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmulosb", VX (4, 264), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
@@ -2113,39 +2115,39 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"vmrglb", VX (4, 268), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkshus", VX (4, 270), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulchwu", XRC(4, 136,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulchwu", XRC(4, 136,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulchwu.", XRC(4, 136,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwu", XO (4, 140,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwu.", XO (4, 140,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulchwu.", XRC(4, 136,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwu", XO (4, 140,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwu.", XO (4, 140,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vslh", VX (4, 324), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmulosh", VX (4, 328), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vrsqrtefp", VX (4, 330), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
{"vmrglh", VX (4, 332), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkswus", VX (4, 334), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"mulchw", XRC(4, 168,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"mulchw.", XRC(4, 168,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchw", XO (4, 172,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchw.", XO (4, 172,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchw", XO (4, 174,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchw.", XO (4, 174,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulchw", XRC(4, 168,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"mulchw.", XRC(4, 168,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchw", XO (4, 172,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchw.", XO (4, 172,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchw", XO (4, 174,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchw.", XO (4, 174,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vslw", VX (4, 388), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vexptefp", VX (4, 394), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
{"vmrglw", VX (4, 396), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkshss", VX (4, 398), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"macchwsu", XO (4, 204,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwsu.", XO (4, 204,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwsu", XO (4, 204,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwsu.", XO (4, 204,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsl", VX (4, 452), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vlogefp", VX (4, 458), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
{"vpkswss", VX (4, 462), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"macchws", XO (4, 236,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchws.", XO (4, 236,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchws", XO (4, 238,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchws.", XO (4, 238,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchws", XO (4, 236,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchws.", XO (4, 236,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchws", XO (4, 238,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchws.", XO (4, 238,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evaddw", VX (4, 512), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"vaddubs", VX (4, 512), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evaddiw", VX (4, 514), VX_MASK, PPCSPE, PPCNONE, {RS, RB, UIMM}},
@@ -2322,17 +2324,17 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"vpkpx", VX (4, 782), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_2, RA}},
-{"mullhwu", XRC(4, 392,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mullhwu", XRC(4, 392,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwhex", VX (4, 784), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"mullhwu.", XRC(4, 392,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mullhwu.", XRC(4, 392,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwhe", VX (4, 785), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
{"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evlwhou", VX (4, 789), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
{"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evlwhos", VX (4, 791), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
-{"maclhwu", XO (4, 396,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwu", XO (4, 396,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"maclhwu.", XO (4, 396,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwu.", XO (4, 396,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
{"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
@@ -2358,27 +2360,27 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"vcfsx", VX (4, 842), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
{"vspltish", VX (4, 844), VX_MASK, PPCVEC, PPCNONE, {VD, SIMM}},
{"vupkhpx", VX (4, 846), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
-{"mullhw", XRC(4, 424,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"mullhw.", XRC(4, 424,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhw", XO (4, 428,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhw.", XO (4, 428,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhw", XO (4, 430,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhw.", XO (4, 430,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mullhw", XRC(4, 424,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"mullhw.", XRC(4, 424,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhw", XO (4, 428,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhw.", XO (4, 428,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhw", XO (4, 430,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhw.", XO (4, 430,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vaddsws", VX (4, 896), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vminsw", VX (4, 898), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vsraw", VX (4, 900), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vctuxs", VX (4, 906), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
{"vspltisw", VX (4, 908), VX_MASK, PPCVEC, PPCNONE, {VD, SIMM}},
-{"maclhwsu", XO (4, 460,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwsu.", XO (4, 460,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwsu", XO (4, 460,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwsu.", XO (4, 460,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vctsxs", VX (4, 970), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
{"vupklpx", VX (4, 974), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
-{"maclhws", XO (4, 492,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhws.", XO (4, 492,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhws", XO (4, 494,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhws.", XO (4, 494,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhws", XO (4, 492,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhws.", XO (4, 492,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhws", XO (4, 494,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhws.", XO (4, 494,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsububm", VX (4,1024), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vavgub", VX (4,1026), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evmhessf", VX (4,1027), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2395,8 +2397,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"vslo", VX (4,1036), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"machhwuo", XO (4, 12,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhwuo.", XO (4, 12,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwuo", XO (4, 12,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhwuo.", XO (4, 12,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2421,13 +2423,13 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwssf", VX (4,1107), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"machhwo", XO (4, 44,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwo", XO (4, 44,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwumi", VX (4,1112), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"machhwo.", XO (4, 44,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwo.", XO (4, 44,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"nmachhwo", XO (4, 46,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhwo.", XO (4, 46,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"nmachhwo", XO (4, 46,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhwo.", XO (4, 46,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2445,8 +2447,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
{"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
-{"machhwsuo", XO (4, 76,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhwsuo.", XO (4, 76,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwsuo", XO (4, 76,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhwsuo.", XO (4, 76,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
@@ -2464,10 +2466,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
-{"machhwso", XO (4, 108,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhwso.", XO (4, 108,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhwso", XO (4, 110,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhwso.", XO (4, 110,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwso", XO (4, 108,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhwso.", XO (4, 108,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhwso", XO (4, 110,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhwso.", XO (4, 110,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2486,8 +2488,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwuo", XO (4, 140,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwuo.", XO (4, 140,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwuo", XO (4, 140,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwuo.", XO (4, 140,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2502,13 +2504,13 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwo", XO (4, 172,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwo", XO (4, 172,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwo.", XO (4, 172,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwo.", XO (4, 172,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"nmacchwo", XO (4, 174,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchwo.", XO (4, 174,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"nmacchwo", XO (4, 174,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchwo.", XO (4, 174,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2525,8 +2527,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwsuo", XO (4, 204,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwsuo.", XO (4, 204,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwsuo", XO (4, 204,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwsuo.", XO (4, 204,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2541,13 +2543,13 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwso", XO (4, 236,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwso", XO (4, 236,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwso.", XO (4, 236,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwso.", XO (4, 236,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"nmacchwso", XO (4, 238,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchwso.", XO (4, 238,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"nmacchwso", XO (4, 238,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchwso.", XO (4, 238,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsububs", VX (4,1536), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"mfvscr", VX (4,1540), VX_MASK, PPCVEC, PPCNONE, {VD}},
{"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
@@ -2573,30 +2575,30 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"maclhwuo", XO (4, 396,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwuo.", XO (4, 396,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwuo", XO (4, 396,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwuo.", XO (4, 396,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsubshs", VX (4,1856), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
-{"maclhwo", XO (4, 428,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwo.", XO (4, 428,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhwo", XO (4, 430,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwo", XO (4, 428,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwo.", XO (4, 428,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhwo", XO (4, 430,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsubsws", VX (4,1920), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"vsumsws", VX (4,1928), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"maclhwsuo", XO (4, 460,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwsuo", XO (4, 460,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
-{"maclhwso", XO (4, 492,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwso.", XO (4, 492,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhwso", XO (4, 494,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhwso.", XO (4, 494,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwso", XO (4, 492,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwso.", XO (4, 492,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhwso", XO (4, 494,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhwso.", XO (4, 494,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"dcbz_l", X (4,1014), XRT_MASK, PPCPS, PPCNONE, {RA, RB}},
{"mulli", OP(7), OP_MASK, PPCCOM, PPCNONE, {RT, RA, SI}},
@@ -3532,7 +3534,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"iseleq", X(31,79), X_MASK, PPCISEL, PPCNONE, {RT, RA, RB}},
-{"isel", XISEL(31,15), XISEL_MASK, PPCISEL, PPCNONE, {RT, RA, RB, CRB}},
+{"isel", XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, PPCNONE, {RT, RA, RB, CRB}},
{"subf", XO(31,40,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
{"sub", XO(31,40,0,0), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
@@ -3585,8 +3587,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mulhw", XO(31,75,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
-{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440, PPCNONE, {RA, RS, RB}},
-{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440, PPCNONE, {RA, RS, RB}},
+{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|TITAN, PPCNONE, {RA, RS, RB}},
+{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|TITAN, PPCNONE, {RA, RS, RB}},
{"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, PPCNONE, {SR, RS}},
@@ -3629,7 +3631,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {RS}},
-{"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stvebx", X(31,135), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
{"stbfcmx", APU(31,135,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
@@ -3676,7 +3678,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"wrteei", X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {E}},
-{"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stvehx", X(31,167), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
{"sthfcmx", APU(31,167,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
@@ -3714,7 +3716,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"msgsnd", XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2, PPCNONE, {RB}},
-{"mtsr", X(31,210), XRB_MASK|(1<<20), COM32, PPCNONE, {SR, RS}},
+{"mtsr", X(31,210), XRB_MASK|(1<<20), COM32, TITAN, {SR, RS}},
{"eratwe", X(31,211), X_MASK, PPCA2, PPCNONE, {RS, RA, WS}},
@@ -3732,7 +3734,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"stbepx", X(31,223), X_MASK, E500MC|PPCA2, PPCNONE, {RS, RA, RB}},
-{"icblc", X(31,230), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"icblc", X(31,230), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stvx", X(31,231), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
{"stqfcmx", APU(31,231,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
@@ -3757,7 +3759,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"icblce", X(31,238), X_MASK, PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
{"msgclr", XRTRA(31,238,0,0),XRTRA_MASK,E500MC|PPCA2, PPCNONE, {RB}},
-{"mtsrin", X(31,242), XRA_MASK, PPC32, PPCNONE, {RS, RB}},
+{"mtsrin", X(31,242), XRA_MASK, PPC32, TITAN, {RS, RB}},
{"mtsri", X(31,242), XRA_MASK, POWER32, PPCNONE, {RS, RB}},
{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, PPCNONE, {RA, RB}},
@@ -3773,7 +3775,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"dcbtstep", XRT(31,255,0), X_MASK, E500MC|PPCA2, PPCNONE, {RT, RA, RB}},
-{"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, PPCNONE, {RS, RA}},
+{"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RS, RA}},
{"mfdcrx.", XRC(31,259,1), X_MASK, PPCA2, PPCNONE, {RS, RA}},
{"icbt", X(31,262), XRT_MASK, PPC403, PPCNONE, {RA, RB}},
@@ -3791,7 +3793,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"tlbiel", X(31,274), XRTLRA_MASK, POWER4, PPC476, {RB, L}},
-{"mfapidi", X(31,275), X_MASK, BOOKE, PPCNONE, {RT, RA}},
+{"mfapidi", X(31,275), X_MASK, BOOKE, TITAN, {RT, RA}},
{"lscbx", XRC(31,277,0), X_MASK, M601, PPCNONE, {RT, RA, RB}},
{"lscbx.", XRC(31,277,1), X_MASK, M601, PPCNONE, {RT, RA, RB}},
@@ -3811,10 +3813,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfdcrux", X(31,291), X_MASK, PPC464, PPCNONE, {RS, RA}},
-{"tlbie", X(31,306), XRTLRA_MASK, PPC, PPCNONE, {RB, L}},
+{"tlbie", X(31,306), XRTLRA_MASK, PPC, TITAN, {RB, L}},
{"tlbi", X(31,306), XRT_MASK, POWER, PPCNONE, {RA0, RB}},
-{"eciwx", X(31,310), X_MASK, PPC, PPCNONE, {RT, RA, RB}},
+{"eciwx", X(31,310), X_MASK, PPC, TITAN, {RT, RA, RB}},
{"lhzux", X(31,311), X_MASK, COM, PPCNONE, {RT, RAL, RB}},
@@ -3859,10 +3861,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, PPCNONE, {RT}},
-{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {RT, SPR}},
+{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, TITAN, {RT, SPR}},
{"mfdcr.", XRC(31,323,1), X_MASK, PPCA2, PPCNONE, {RT, SPR}},
-{"dcread", X(31,326), X_MASK, PPC476, PPCNONE, {RT, RA, RB}},
+{"dcread", X(31,326), X_MASK, PPC476|TITAN, PPCNONE, {RT, RA, RB}},
{"div", XO(31,331,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
{"div.", XO(31,331,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
@@ -3873,17 +3875,17 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, PPCNONE, {RT}},
{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, PPCNONE, {RT}},
+{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN, {RT}},
+{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN, {RT}},
{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, PPCNONE, {RT}},
{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, PPCNONE, {RT}},
{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, PPCNONE, {RT}},
{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, PPCNONE, {RT}},
-{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, PPCNONE, {RT}},
+{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN, {RT}},
+{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN, {RT}},
+{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2|TITAN, PPCNONE, {RT}},
{"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, PPCNONE, {RT}},
-{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, PPCNONE, {RT}},
+{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, TITAN, {RT}},
{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, PPCNONE, {RT}},
{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, PPCNONE, {RT}},
{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, PPCNONE, {RT}},
@@ -3924,7 +3926,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, PPCNONE, {RT}},
{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, PPCNONE, {RT}},
{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, PPCNONE, {RT}},
-{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, PPCNONE, {RT}},
+{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN, {RT}},
{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, PPCNONE, {RT}},
{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, PPCNONE, {RT}},
{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, PPCNONE, {RT}},
@@ -3961,13 +3963,13 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, PPCNONE, {RT}},
{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, PPCNONE, {RT}},
{"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
-{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
+{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
{"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
-{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
+{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
{"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
{"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, PPCNONE, {RT}},
-{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
-{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
+{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
+{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
{"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, PPCNONE, {RT}},
@@ -3977,7 +3979,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
{"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
{"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
-{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
+{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, TITAN, {RT}},
{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, PPCNONE, {RT}},
@@ -4000,6 +4002,16 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, PPCNONE, {RT}},
+{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mficdbtr", XSPR(31,339,927), XSPR_MASK, TITAN, PPCNONE, {RT}},
{"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, PPCNONE, {RT}},
@@ -4009,7 +4021,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, PPCNONE, {RT}},
-{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405, PPCNONE, {RT}},
+{"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, PPCNONE, {RT}},
{"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, PPCNONE, {RT}},
{"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, PPCNONE, {RT}},
{"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, PPCNONE, {RT}},
@@ -4026,7 +4039,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, PPCNONE, {RT}},
{"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, PPCNONE, {RT}},
-{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403, PPCNONE, {RT}},
+{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, PPCNONE, {RT}},
{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, PPCNONE, {RT}},
@@ -4040,6 +4053,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, PPCNONE, {RT}},
+{"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, PPCNONE, {RS}},
{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, PPCNONE, {RT}},
@@ -4071,7 +4085,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"divs", XO(31,363,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
{"divs.", XO(31,363,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
-{"tlbia", X(31,370), 0xffffffff, PPC, PPCNONE, {0}},
+{"tlbia", X(31,370), 0xffffffff, PPC, TITAN, {0}},
{"mftbl", XSPR(31,371,268), XSPR_MASK, CLASSIC, PPCNONE, {RT}},
{"mftbu", XSPR(31,371,269), XSPR_MASK, CLASSIC, PPCNONE, {RT}},
@@ -4085,10 +4099,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"popcntw", X(31,378), XRB_MASK, POWER7|PPCA2, PPCNONE, {RA, RS}},
-{"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, PPCNONE, {RA, RS}},
+{"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
{"mtdcrx.", XRC(31,387,1), X_MASK, PPCA2, PPCNONE, {RA, RS}},
-{"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stdfcmx", APU(31,391,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
{"divdeu", XO(31,393,0,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
@@ -4119,7 +4133,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"slbie", X(31,434), XRTRA_MASK, PPC64, PPCNONE, {RB}},
-{"ecowx", X(31,438), X_MASK, PPC, PPCNONE, {RT, RA, RB}},
+{"ecowx", X(31,438), X_MASK, PPC, TITAN, {RT, RA, RB}},
{"sthux", X(31,439), X_MASK, COM, PPCNONE, {RS, RAS, RB}},
@@ -4164,10 +4178,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, PPCNONE, {RS}},
-{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {SPR, RS}},
+{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, TITAN, {SPR, RS}},
{"mtdcr.", XRC(31,451,1), X_MASK, PPCA2, PPCNONE, {SPR, RS}},
-{"dccci", X(31,454), XRT_MASK, PPC403|PPC440, PPCA2|PPC476, {RA, RB}},
+{"dccci", X(31,454), XRT_MASK, PPC403|PPC440|TITAN, PPCA2|PPC476, {RA, RB}},
{"dci", X(31,454), XRARB_MASK, PPCA2|PPC476, PPCNONE, {CT}},
{"divdu", XO(31,457,0,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
@@ -4181,15 +4195,15 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, PPCNONE, {RS}},
{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, PPCNONE, {RS}},
+{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, PPCNONE, {RS}},
{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, PPCNONE, {RS}},
-{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, PPCNONE, {RS}},
+{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN, {RS}},
+{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN, {RS}},
+{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, TITAN, {RS}},
+{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, TITAN, {RS}},
{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, PPCNONE, {RS}},
-{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, PPCNONE, {RS}},
+{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, TITAN, {RS}},
{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, PPCNONE, {RS}},
@@ -4228,7 +4242,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, PPCNONE, {RS}},
-{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, PPCNONE, {RS}},
+{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN, {RS}},
{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, PPCNONE, {RS}},
{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, PPCNONE, {RS}},
{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, PPCNONE, {RS}},
@@ -4265,16 +4279,22 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, PPCNONE, {RS}},
{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, PPCNONE, {RS}},
{"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
-{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
+{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
{"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
-{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
+{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
{"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
{"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, PPCNONE, {RS}},
-{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
-{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
+{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
+{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
+{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, PPCNONE, {RS}},
{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, PPCNONE, {RS}},
{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, PPCNONE, {RS}},
{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, PPCNONE, {RS}},
@@ -4284,7 +4304,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, PPCNONE, {RS}},
{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, PPCNONE, {RS}},
-{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405, PPCNONE, {RS}},
+{"mtrmmucr", XSPR(31,467,946), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, PPCNONE, {RS}},
{"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, PPCNONE, {RS}},
{"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, PPCNONE, {RS}},
{"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, PPCNONE, {RS}},
@@ -4314,6 +4335,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, PPCNONE, {RS}},
+{"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, PPCNONE, {RS}},
{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, PPCNONE, {RS}},
{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, PPCNONE, {RS}},
@@ -4341,7 +4363,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCA2|PPC476, {RT, RA, RB}},
-{"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stvxl", X(31,487), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
@@ -4433,7 +4455,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"lxsdx", X(31,588), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
-{"mfsr", X(31,595), XRB_MASK|(1<<20), COM32, PPCNONE, {RT, SR}},
+{"mfsr", X(31,595), XRB_MASK|(1<<20), COM32, TITAN, {RT, SR}},
{"lswi", X(31,597), X_MASK, PPCCOM, PPCNONE, {RT, RA0, NB}},
{"lsi", X(31,597), X_MASK, PWRCOM, PPCNONE, {RT, RA0, NB}},
@@ -4480,7 +4502,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
{"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
-{"mfsrin", X(31,659), XRA_MASK, PPC32, PPCNONE, {RT, RB}},
+{"mfsrin", X(31,659), XRA_MASK, PPC32, TITAN, {RT, RB}},
{"stdbrx", X(31,660), X_MASK, CELL|POWER7|PPCA2, PPCNONE, {RS, RA0, RB}},
@@ -4711,7 +4733,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"extsb", XRC(31,954,0), XRB_MASK, PPC, PPCNONE, {RA, RS}},
{"extsb.", XRC(31,954,1), XRB_MASK, PPC, PPCNONE, {RA, RS}},
-{"iccci", X(31,966), XRT_MASK, PPC403|PPC440, PPC476, {RA, RB}},
+{"iccci", X(31,966), XRT_MASK, PPC403|PPC440|TITAN, PPC476, {RA, RB}},
{"ici", X(31,966), XRARB_MASK, PPCA2|PPC476, PPCNONE, {CT}},
{"divduo", XO(31,457,1,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
@@ -4738,7 +4760,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"icbiep", XRT(31,991,0), XRT_MASK, E500MC|PPCA2, PPCNONE, {RA, RB}},
-{"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476, PPCNONE, {RA, RB}},
+{"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476|TITAN, PPCNONE, {RA, RB}},
{"nabso", XO(31,488,1,0), XORB_MASK, M601, PPCNONE, {RT, RA}},
{"nabso.", XO(31,488,1,1), XORB_MASK, M601, PPCNONE, {RT, RA}},
@@ -4749,7 +4771,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"divwo", XO(31,491,1,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
{"divwo.", XO(31,491,1,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
-{"tlbli", X(31,1010), XRTRA_MASK, PPC, PPCNONE, {RB}},
+{"tlbli", X(31,1010), XRTRA_MASK, PPC, TITAN, {RB}},
{"stdcix", X(31,1013), X_MASK, POWER6, PPCNONE, {RS, RA0, RB}},
@@ -4854,8 +4876,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"fadds", A(59,21,0), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
{"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
-{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, PPCNONE, {FRT, FRB}},
-{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, PPCNONE, {FRT, FRB}},
+{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, TITAN, {FRT, FRB}},
+{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, TITAN, {FRT, FRB}},
{"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
{"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7, {FRT, FRB, A_L}},
@@ -5141,8 +5163,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRB}},
{"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRB}},
-{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, PPCNONE, {FRT, FRB}},
-{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, PPCNONE, {FRT, FRB}},
+{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, TITAN, {FRT, FRB}},
+{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, TITAN, {FRT, FRB}},
{"fsel", A(63,23,0), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
{"fsel.", A(63,23,1), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: PATCH [version 2]: Add AppliedMicro Titan (APM83xxx) support
2009-11-20 16:04 ` PATCH [version 2]: " Philipp Tomsich
@ 2010-02-08 2:00 ` Alan Modra
0 siblings, 0 replies; 4+ messages in thread
From: Alan Modra @ 2010-02-08 2:00 UTC (permalink / raw)
To: Philipp Tomsich; +Cc: binutils
Applied.
include/
* opcode/ppc.h (PPC_OPCODE_TITAN): Define.
bfd/
* archures.c (bfd_mach_ppc_titan): Define.
* bfd-in2.h: Regenerate.
* cpu-powerpc.c (bfd_powerpc_archs): Add titan entry.
opcodes/
* ppc-dis.c (ppc_opts): Add titan entry.
* ppc-opc.c (TITAN, MULHW): Define.
(powerpc_opcodes): Support AppliedMicro Titan core (APM83xxx).
gas/
* config/tc-ppc.c (md_show_usage): Mention -mtitan. Don't use tabs.
(ppc_mach): Handle titan.
* doc/c-ppc.texi: Mention -mtitan.
gas/testsuite/
* gas/ppc/titan.d, * gas/ppc/titan.s: New test.
* gas/ppc/ppc.exp: Run it.
Index: bfd/archures.c
===================================================================
RCS file: /cvs/src/src/bfd/archures.c,v
retrieving revision 1.146
diff -u -p -r1.146 archures.c
--- bfd/archures.c 4 Jan 2010 02:32:55 -0000 1.146
+++ bfd/archures.c 8 Feb 2010 01:16:07 -0000
@@ -230,7 +230,8 @@ DESCRIPTION
.#define bfd_mach_ppc_7400 7400
.#define bfd_mach_ppc_e500 500
.#define bfd_mach_ppc_e500mc 5001
-.#define bfd_mach_ppc_e500mc64 5005
+.#define bfd_mach_ppc_e500mc64 5005
+.#define bfd_mach_ppc_titan 83
. bfd_arch_rs6000, {* IBM RS/6000 *}
.#define bfd_mach_rs6k 6000
.#define bfd_mach_rs6k_rs1 6001
Index: bfd/cpu-powerpc.c
===================================================================
RCS file: /cvs/src/src/bfd/cpu-powerpc.c,v
retrieving revision 1.23
diff -u -p -r1.23 cpu-powerpc.c
--- bfd/cpu-powerpc.c 4 Jan 2010 02:32:55 -0000 1.23
+++ bfd/cpu-powerpc.c 8 Feb 2010 01:16:08 -0000
@@ -338,6 +338,20 @@ const bfd_arch_info_type bfd_powerpc_arc
FALSE, /* not the default */
powerpc_compatible,
bfd_default_scan,
+ &bfd_powerpc_archs[18]
+ },
+ {
+ 32, /* 32 bits in a word */
+ 32, /* 32 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_titan,
+ "powerpc",
+ "powerpc:titan",
+ 3,
+ FALSE, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
0
}
};
Index: gas/config/tc-ppc.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ppc.c,v
retrieving revision 1.162
diff -u -p -r1.162 tc-ppc.c
--- gas/config/tc-ppc.c 23 Jan 2010 12:05:32 -0000 1.162
+++ gas/config/tc-ppc.c 8 Feb 2010 01:16:17 -0000
@@ -1178,57 +1178,58 @@ md_show_usage (FILE *stream)
{
fprintf (stream, _("\
PowerPC options:\n\
--a32 generate ELF32/XCOFF32\n\
--a64 generate ELF64/XCOFF64\n\
--u ignored\n\
--mpwrx, -mpwr2 generate code for POWER/2 (RIOS2)\n\
--mpwr generate code for POWER (RIOS1)\n\
--m601 generate code for PowerPC 601\n\
+-a32 generate ELF32/XCOFF32\n\
+-a64 generate ELF64/XCOFF64\n\
+-u ignored\n\
+-mpwrx, -mpwr2 generate code for POWER/2 (RIOS2)\n\
+-mpwr generate code for POWER (RIOS1)\n\
+-m601 generate code for PowerPC 601\n\
-mppc, -mppc32, -m603, -m604\n\
- generate code for PowerPC 603/604\n\
--m403 generate code for PowerPC 403\n\
--m405 generate code for PowerPC 405\n\
--m440 generate code for PowerPC 440\n\
--m464 generate code for PowerPC 464\n\
--m476 generate code for PowerPC 476\n\
+ generate code for PowerPC 603/604\n\
+-m403 generate code for PowerPC 403\n\
+-m405 generate code for PowerPC 405\n\
+-m440 generate code for PowerPC 440\n\
+-m464 generate code for PowerPC 464\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"));
+ generate code for PowerPC 7400/7410/7450/7455\n\
+-m750cl generate code for PowerPC 750cl\n"));
fprintf (stream, _("\
--mppc64, -m620 generate code for PowerPC 620/625/630\n\
--mppc64bridge generate code for PowerPC 64, including bridge insns\n\
--mbooke generate code for 32-bit PowerPC BookE\n\
--ma2 generate code for A2 architecture\n\
--mpower4 generate code for Power4 architecture\n\
--mpower5 generate code for Power5 architecture\n\
--mpower6 generate code for Power6 architecture\n\
--mpower7 generate code for Power7 architecture\n\
--mcell generate code for Cell Broadband Engine architecture\n\
--mcom generate code Power/PowerPC common instructions\n\
--many generate code for any architecture (PWR/PWRX/PPC)\n"));
+-mppc64, -m620 generate code for PowerPC 620/625/630\n\
+-mppc64bridge generate code for PowerPC 64, including bridge insns\n\
+-mbooke generate code for 32-bit PowerPC BookE\n\
+-ma2 generate code for A2 architecture\n\
+-mpower4 generate code for Power4 architecture\n\
+-mpower5 generate code for Power5 architecture\n\
+-mpower6 generate code for Power6 architecture\n\
+-mpower7 generate code for Power7 architecture\n\
+-mcell generate code for Cell Broadband Engine architecture\n\
+-mcom generate code Power/PowerPC common instructions\n\
+-many generate code for any architecture (PWR/PWRX/PPC)\n"));
fprintf (stream, _("\
--maltivec generate code for AltiVec\n\
--mvsx generate code for Vector-Scalar (VSX) instructions\n\
--me300 generate code for PowerPC e300 family\n\
--me500, -me500x2 generate code for Motorola e500 core complex\n\
--me500mc, generate code for Freescale e500mc core complex\n\
--me500mc64, generate code for Freescale e500mc64 core complex\n\
--mspe generate code for Motorola SPE instructions\n\
--mregnames Allow symbolic names for registers\n\
--mno-regnames Do not allow symbolic names for registers\n"));
+-maltivec generate code for AltiVec\n\
+-mvsx generate code for Vector-Scalar (VSX) instructions\n\
+-me300 generate code for PowerPC e300 family\n\
+-me500, -me500x2 generate code for Motorola e500 core complex\n\
+-me500mc, generate code for Freescale e500mc core complex\n\
+-me500mc64, generate code for Freescale e500mc64 core complex\n\
+-mspe generate code for Motorola SPE instructions\n\
+-mtitan generate code for AppliedMicro Titan core complex\n\
+-mregnames Allow symbolic names for registers\n\
+-mno-regnames Do not allow symbolic names for registers\n"));
#ifdef OBJ_ELF
fprintf (stream, _("\
--mrelocatable support for GCC's -mrelocatble option\n\
--mrelocatable-lib support for GCC's -mrelocatble-lib option\n\
--memb set PPC_EMB bit in ELF flags\n\
+-mrelocatable support for GCC's -mrelocatble option\n\
+-mrelocatable-lib support for GCC's -mrelocatble-lib option\n\
+-memb set PPC_EMB bit in ELF flags\n\
-mlittle, -mlittle-endian, -l, -le\n\
- generate code for a little endian machine\n\
+ generate code for a little endian machine\n\
-mbig, -mbig-endian, -b, -be\n\
- generate code for a big endian machine\n\
--msolaris generate code for Solaris\n\
--mno-solaris do not generate code for Solaris\n\
--V print assembler version number\n\
--Qy, -Qn ignored\n"));
+ generate code for a big endian machine\n\
+-msolaris generate code for Solaris\n\
+-mno-solaris do not generate code for Solaris\n\
+-V print assembler version number\n\
+-Qy, -Qn ignored\n"));
#endif
}
\f
@@ -1291,6 +1292,8 @@ ppc_mach (void)
return bfd_mach_ppc64;
else if (ppc_arch () == bfd_arch_rs6000)
return bfd_mach_rs6k;
+ else if (ppc_cpu & PPC_OPCODE_TITAN)
+ return bfd_mach_ppc_titan;
else
return bfd_mach_ppc;
}
Index: gas/doc/c-ppc.texi
===================================================================
RCS file: /cvs/src/src/gas/doc/c-ppc.texi,v
retrieving revision 1.18
diff -u -p -r1.18 c-ppc.texi
--- gas/doc/c-ppc.texi 2 Oct 2009 14:42:41 -0000 1.18
+++ gas/doc/c-ppc.texi 8 Feb 2010 01:16:17 -0000
@@ -1,4 +1,4 @@
-@c Copyright 2001, 2002, 2003, 2005, 2006, 2007, 2008
+@c Copyright 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010
@c Free Software Foundation, Inc.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.
@@ -70,6 +70,9 @@ Generate code for Motorola e500 core com
@item -mspe
Generate code for Motorola SPE instructions.
+@item -mtitan
+Generate code for AppliedMicro Titan core complex.
+
@item -mppc64bridge
Generate code for PowerPC 64, including bridge insns.
Index: gas/testsuite/gas/ppc/ppc.exp
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/ppc/ppc.exp,v
retrieving revision 1.26
diff -u -p -r1.26 ppc.exp
--- gas/testsuite/gas/ppc/ppc.exp 2 Oct 2009 14:42:42 -0000 1.26
+++ gas/testsuite/gas/ppc/ppc.exp 8 Feb 2010 01:16:20 -0000
@@ -50,5 +50,6 @@ if { [istarget powerpc*-*-*] } then {
run_dump_test "power7"
run_dump_test "vsx"
run_dump_test "476"
+ run_dump_test "titan"
}
}
Index: gas/testsuite/gas/ppc/titan.d
===================================================================
RCS file: gas/testsuite/gas/ppc/titan.d
diff -N gas/testsuite/gas/ppc/titan.d
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/ppc/titan.d 8 Feb 2010 01:16:20 -0000
@@ -0,0 +1,267 @@
+#as: -mtitan
+#objdump: -dr -Mtitan
+#name: AppliedMicro Titan tests
+
+.*: +file format elf(32)?(64)?-powerpc.*
+
+Disassembly of section \.text:
+
+0+0000000 <start>:
+ 0: 4e 80 00 20 blr
+ 4: 0c 81 00 00 tweqi r1,0
+ 8: 10 41 01 58 macchw r2,r1,r0
+ c: 10 41 01 59 macchw\. r2,r1,r0
+ 10: 10 41 05 58 macchwo r2,r1,r0
+ 14: 10 41 05 59 macchwo\. r2,r1,r0
+ 18: 10 41 01 d8 macchws r2,r1,r0
+ 1c: 10 41 01 d9 macchws\. r2,r1,r0
+ 20: 10 41 05 d8 macchwso r2,r1,r0
+ 24: 10 41 05 d9 macchwso\. r2,r1,r0
+ 28: 10 41 01 98 macchwsu r2,r1,r0
+ 2c: 10 41 01 99 macchwsu\. r2,r1,r0
+ 30: 10 41 05 98 macchwsuo r2,r1,r0
+ 34: 10 41 05 99 macchwsuo\. r2,r1,r0
+ 38: 10 41 01 18 macchwu r2,r1,r0
+ 3c: 10 41 01 19 macchwu\. r2,r1,r0
+ 40: 10 41 05 18 macchwuo r2,r1,r0
+ 44: 10 41 05 19 macchwuo\. r2,r1,r0
+ 48: 10 41 00 58 machhw r2,r1,r0
+ 4c: 10 41 00 59 machhw\. r2,r1,r0
+ 50: 10 41 04 58 machhwo r2,r1,r0
+ 54: 10 41 04 59 machhwo\. r2,r1,r0
+ 58: 10 41 00 d8 machhws r2,r1,r0
+ 5c: 10 41 00 d9 machhws\. r2,r1,r0
+ 60: 10 41 04 d8 machhwso r2,r1,r0
+ 64: 10 41 04 d9 machhwso\. r2,r1,r0
+ 68: 10 41 00 98 machhwsu r2,r1,r0
+ 6c: 10 41 00 99 machhwsu\. r2,r1,r0
+ 70: 10 41 04 98 machhwsuo r2,r1,r0
+ 74: 10 41 04 99 machhwsuo\. r2,r1,r0
+ 78: 10 41 00 18 machhwu r2,r1,r0
+ 7c: 10 41 00 19 machhwu\. r2,r1,r0
+ 80: 10 41 04 18 machhwuo r2,r1,r0
+ 84: 10 41 04 19 machhwuo\. r2,r1,r0
+ 88: 10 41 03 58 maclhw r2,r1,r0
+ 8c: 10 41 03 59 maclhw\. r2,r1,r0
+ 90: 10 41 07 58 maclhwo r2,r1,r0
+ 94: 10 41 07 59 maclhwo\. r2,r1,r0
+ 98: 10 41 03 d8 maclhws r2,r1,r0
+ 9c: 10 41 03 d9 maclhws\. r2,r1,r0
+ a0: 10 41 07 d8 maclhwso r2,r1,r0
+ a4: 10 41 07 d9 maclhwso\. r2,r1,r0
+ a8: 10 41 03 98 maclhwsu r2,r1,r0
+ ac: 10 41 03 99 maclhwsu\. r2,r1,r0
+ b0: 10 41 07 98 maclhwsuo r2,r1,r0
+ b4: 10 41 07 99 maclhwsuo\. r2,r1,r0
+ b8: 10 41 03 18 maclhwu r2,r1,r0
+ bc: 10 41 03 19 maclhwu\. r2,r1,r0
+ c0: 10 41 07 18 maclhwuo r2,r1,r0
+ c4: 10 41 07 19 maclhwuo\. r2,r1,r0
+ c8: 10 41 01 5c nmacchw r2,r1,r0
+ cc: 10 41 01 5d nmacchw\. r2,r1,r0
+ d0: 10 41 05 5c nmacchwo r2,r1,r0
+ d4: 10 41 05 5d nmacchwo\. r2,r1,r0
+ d8: 10 41 01 dc nmacchws r2,r1,r0
+ dc: 10 41 01 dd nmacchws\. r2,r1,r0
+ e0: 10 41 05 dc nmacchwso r2,r1,r0
+ e4: 10 41 05 dd nmacchwso\. r2,r1,r0
+ e8: 10 41 00 5c nmachhw r2,r1,r0
+ ec: 10 41 00 5d nmachhw\. r2,r1,r0
+ f0: 10 41 04 5c nmachhwo r2,r1,r0
+ f4: 10 41 04 5d nmachhwo\. r2,r1,r0
+ f8: 10 41 00 dc nmachhws r2,r1,r0
+ fc: 10 41 00 dd nmachhws\. r2,r1,r0
+ 100: 10 41 04 dc nmachhwso r2,r1,r0
+ 104: 10 41 04 dd nmachhwso\. r2,r1,r0
+ 108: 10 41 03 5c nmaclhw r2,r1,r0
+ 10c: 10 41 03 5d nmaclhw\. r2,r1,r0
+ 110: 10 41 07 5c nmaclhwo r2,r1,r0
+ 114: 10 41 07 5d nmaclhwo\. r2,r1,r0
+ 118: 10 41 03 dc nmaclhws r2,r1,r0
+ 11c: 10 41 03 dd nmaclhws\. r2,r1,r0
+ 120: 10 41 07 dc nmaclhwso r2,r1,r0
+ 124: 10 41 07 dd nmaclhwso\. r2,r1,r0
+ 128: 10 41 01 50 mulchw r2,r1,r0
+ 12c: 10 41 01 51 mulchw\. r2,r1,r0
+ 130: 10 41 01 10 mulchwu r2,r1,r0
+ 134: 10 41 01 11 mulchwu\. r2,r1,r0
+ 138: 10 41 00 50 mulhhw r2,r1,r0
+ 13c: 10 41 00 51 mulhhw\. r2,r1,r0
+ 140: 10 41 00 10 mulhhwu r2,r1,r0
+ 144: 10 41 00 11 mulhhwu\. r2,r1,r0
+ 148: 10 41 03 50 mullhw r2,r1,r0
+ 14c: 10 41 03 51 mullhw\. r2,r1,r0
+ 150: 10 41 03 10 mullhwu r2,r1,r0
+ 154: 10 41 03 11 mullhwu\. r2,r1,r0
+ 158: 7c 22 00 9c dlmzb r2,r1,r0
+ 15c: 7c 22 00 9d dlmzb\. r2,r1,r0
+ 160: 7c 02 0b 8c dccci r2,r1
+ 164: 7c 02 0f 8c iccci r2,r1
+ 168: 7c 02 0b 0c dcblc r2,r1
+ 16c: 7c 02 0b 0c dcblc r2,r1
+ 170: 7c 22 0b 0c dcblc 1,r2,r1
+ 174: 7c 02 09 4c dcbtls r2,r1
+ 178: 7c 02 09 4c dcbtls r2,r1
+ 17c: 7c 22 09 4c dcbtls 1,r2,r1
+ 180: 7c 02 09 0c dcbtstls r2,r1
+ 184: 7c 02 09 0c dcbtstls r2,r1
+ 188: 7c 22 09 0c dcbtstls 1,r2,r1
+ 18c: 7c 02 09 cc icblc r2,r1
+ 190: 7c 02 09 cc icblc r2,r1
+ 194: 7c 22 09 cc icblc 1,r2,r1
+ 198: 7c 02 0b cc icbtls r2,r1
+ 19c: 7c 02 0b cc icbtls r2,r1
+ 1a0: 7c 22 0b cc icbtls 1,r2,r1
+ 1a4: 7c 41 02 8c dcread r2,r1,r0
+ 1a8: 7c 02 0f cc icread r2,r1
+ 1ac: 7c 41 02 9c mfpmr r2,1
+ 1b0: 7c 22 02 9c mfpmr r1,2
+ 1b4: 7c 81 02 a6 mfxer r4
+ 1b8: 7c 81 02 a6 mfxer r4
+ 1bc: 7c 88 02 a6 mflr r4
+ 1c0: 7c 88 02 a6 mflr r4
+ 1c4: 7c 89 02 a6 mfctr r4
+ 1c8: 7c 89 02 a6 mfctr r4
+ 1cc: 7c 96 02 a6 mfdec r4
+ 1d0: 7c 96 02 a6 mfdec r4
+ 1d4: 7c 9a 02 a6 mfsrr0 r4
+ 1d8: 7c 9a 02 a6 mfsrr0 r4
+ 1dc: 7c 9b 02 a6 mfsrr1 r4
+ 1e0: 7c 9b 02 a6 mfsrr1 r4
+ 1e4: 7c 90 0a a6 mfpid r4
+ 1e8: 7c 90 0a a6 mfpid r4
+ 1ec: 7c 9a 0a a6 mfcsrr0 r4
+ 1f0: 7c 9a 0a a6 mfcsrr0 r4
+ 1f4: 7c 9b 0a a6 mfcsrr1 r4
+ 1f8: 7c 9b 0a a6 mfcsrr1 r4
+ 1fc: 7c 9d 0a a6 mfdear r4
+ 200: 7c 9d 0a a6 mfdear r4
+ 204: 7c 9e 0a a6 mfesr r4
+ 208: 7c 9e 0a a6 mfesr r4
+ 20c: 7c 9f 0a a6 mfivpr r4
+ 210: 7c 9f 0a a6 mfivpr r4
+ 214: 7c 80 42 a6 mfusprg0 r4
+ 218: 7c 80 42 a6 mfusprg0 r4
+ 21c: 7c 84 42 a6 mfsprg r4,4
+ 220: 7c 84 42 a6 mfsprg r4,4
+ 224: 7c 85 42 a6 mfsprg r4,5
+ 228: 7c 85 42 a6 mfsprg r4,5
+ 22c: 7c 86 42 a6 mfsprg r4,6
+ 230: 7c 86 42 a6 mfsprg r4,6
+ 234: 7c 87 42 a6 mfsprg r4,7
+ 238: 7c 87 42 a6 mfsprg r4,7
+ 23c: 7c 8c 42 a6 mftb r4
+ 240: 7c 8c 42 a6 mftb r4
+ 244: 7c 8c 42 a6 mftb r4
+ 248: 7c 8d 42 a6 mftbu r4
+ 24c: 7c 8d 42 a6 mftbu r4
+ 250: 7c 90 42 a6 mfsprg r4,0
+ 254: 7c 90 42 a6 mfsprg r4,0
+ 258: 7c 91 42 a6 mfsprg r4,1
+ 25c: 7c 91 42 a6 mfsprg r4,1
+ 260: 7c 92 42 a6 mfsprg r4,2
+ 264: 7c 92 42 a6 mfsprg r4,2
+ 268: 7c 93 42 a6 mfsprg r4,3
+ 26c: 7c 93 42 a6 mfsprg r4,3
+ 270: 7c 9e 42 a6 mfpir r4
+ 274: 7c 9e 42 a6 mfpir r4
+ 278: 7c 9f 42 a6 mfpvr r4
+ 27c: 7c 9f 42 a6 mfpvr r4
+ 280: 7c 90 4a a6 mfdbsr r4
+ 284: 7c 90 4a a6 mfdbsr r4
+ 288: 7c 94 4a a6 mfdbcr0 r4
+ 28c: 7c 94 4a a6 mfdbcr0 r4
+ 290: 7c 95 4a a6 mfdbcr1 r4
+ 294: 7c 95 4a a6 mfdbcr1 r4
+ 298: 7c 96 4a a6 mfdbcr2 r4
+ 29c: 7c 96 4a a6 mfdbcr2 r4
+ 2a0: 7c 98 4a a6 mfiac1 r4
+ 2a4: 7c 98 4a a6 mfiac1 r4
+ 2a8: 7c 99 4a a6 mfiac2 r4
+ 2ac: 7c 99 4a a6 mfiac2 r4
+ 2b0: 7c 9a 4a a6 mfiac3 r4
+ 2b4: 7c 9a 4a a6 mfiac3 r4
+ 2b8: 7c 9b 4a a6 mfiac4 r4
+ 2bc: 7c 9b 4a a6 mfiac4 r4
+ 2c0: 7c 9c 4a a6 mfdac1 r4
+ 2c4: 7c 9c 4a a6 mfdac1 r4
+ 2c8: 7c 9d 4a a6 mfdac2 r4
+ 2cc: 7c 9d 4a a6 mfdac2 r4
+ 2d0: 7c 9e 4a a6 mfdvc1 r4
+ 2d4: 7c 9e 4a a6 mfdvc1 r4
+ 2d8: 7c 9f 4a a6 mfdvc2 r4
+ 2dc: 7c 9f 4a a6 mfdvc2 r4
+ 2e0: 7c 90 52 a6 mftsr r4
+ 2e4: 7c 90 52 a6 mftsr r4
+ 2e8: 7c 94 52 a6 mftcr r4
+ 2ec: 7c 94 52 a6 mftcr r4
+ 2f0: 7c 90 62 a6 mfivor0 r4
+ 2f4: 7c 90 62 a6 mfivor0 r4
+ 2f8: 7c 91 62 a6 mfivor1 r4
+ 2fc: 7c 91 62 a6 mfivor1 r4
+ 300: 7c 92 62 a6 mfivor2 r4
+ 304: 7c 92 62 a6 mfivor2 r4
+ 308: 7c 93 62 a6 mfivor3 r4
+ 30c: 7c 93 62 a6 mfivor3 r4
+ 310: 7c 94 62 a6 mfivor4 r4
+ 314: 7c 94 62 a6 mfivor4 r4
+ 318: 7c 95 62 a6 mfivor5 r4
+ 31c: 7c 95 62 a6 mfivor5 r4
+ 320: 7c 96 62 a6 mfivor6 r4
+ 324: 7c 96 62 a6 mfivor6 r4
+ 328: 7c 97 62 a6 mfivor7 r4
+ 32c: 7c 97 62 a6 mfivor7 r4
+ 330: 7c 98 62 a6 mfivor8 r4
+ 334: 7c 98 62 a6 mfivor8 r4
+ 338: 7c 99 62 a6 mfivor9 r4
+ 33c: 7c 99 62 a6 mfivor9 r4
+ 340: 7c 9a 62 a6 mfivor10 r4
+ 344: 7c 9a 62 a6 mfivor10 r4
+ 348: 7c 9b 62 a6 mfivor11 r4
+ 34c: 7c 9b 62 a6 mfivor11 r4
+ 350: 7c 9c 62 a6 mfivor12 r4
+ 354: 7c 9c 62 a6 mfivor12 r4
+ 358: 7c 9d 62 a6 mfivor13 r4
+ 35c: 7c 9d 62 a6 mfivor13 r4
+ 360: 7c 9e 62 a6 mfivor14 r4
+ 364: 7c 9e 62 a6 mfivor14 r4
+ 368: 7c 9f 62 a6 mfivor15 r4
+ 36c: 7c 9f 62 a6 mfivor15 r4
+ 370: 7c 93 82 a6 mfivor35 r4
+ 374: 7c 93 82 a6 mfivor35 r4
+ 378: 7c 9a 8a a6 mfdc_dat r4
+ 37c: 7c 9a 8a a6 mfdc_dat r4
+ 380: 7c 9b 8a a6 mfmcsrr1 r4
+ 384: 7c 9b 8a a6 mfmcsrr1 r4
+ 388: 7c 9c 8a a6 mfmcsr r4
+ 38c: 7c 9c 8a a6 mfmcsr r4
+ 390: 7c 90 da a6 mfivndx r4
+ 394: 7c 90 da a6 mfivndx r4
+ 398: 7c 91 da a6 mfdvndx r4
+ 39c: 7c 91 da a6 mfdvndx r4
+ 3a0: 7c 92 da a6 mfivlim r4
+ 3a4: 7c 92 da a6 mfivlim r4
+ 3a8: 7c 93 da a6 mfdvlim r4
+ 3ac: 7c 93 da a6 mfdvlim r4
+ 3b0: 7c 94 da a6 mfclcsr r4
+ 3b4: 7c 94 da a6 mfclcsr r4
+ 3b8: 7c 98 da a6 mfccr1 r4
+ 3bc: 7c 98 da a6 mfccr1 r4
+ 3c0: 7c 9b e2 a6 mfrstcfg r4
+ 3c4: 7c 9b e2 a6 mfrstcfg r4
+ 3c8: 7c 9c e2 a6 mfdcdbtrl r4
+ 3cc: 7c 9c e2 a6 mfdcdbtrl r4
+ 3d0: 7c 9d e2 a6 mfdcdbtrh r4
+ 3d4: 7c 9d e2 a6 mfdcdbtrh r4
+ 3d8: 7c 9f e2 a6 mficdbtr r4
+ 3dc: 7c 9f e2 a6 mficdbtr r4
+ 3e0: 7c 92 ea a6 mfmmucr r4
+ 3e4: 7c 92 ea a6 mfmmucr r4
+ 3e8: 7c 93 ea a6 mfccr0 r4
+ 3ec: 7c 93 ea a6 mfccr0 r4
+ 3f0: 7c 93 f2 a6 mficdbdr r4
+ 3f4: 7c 93 f2 a6 mficdbdr r4
+ 3f8: 7c 93 fa a6 mfdbdr r4
+ 3fc: 7c 93 fa a6 mfdbdr r4
+ 400: 7c 96 0b a6 mtdecar r4
+ 404: 7c 96 0b a6 mtdecar r4
Index: gas/testsuite/gas/ppc/titan.s
===================================================================
RCS file: gas/testsuite/gas/ppc/titan.s
diff -N gas/testsuite/gas/ppc/titan.s
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/ppc/titan.s 8 Feb 2010 01:16:20 -0000
@@ -0,0 +1,261 @@
+# AppliedMicro Titan tests
+ .section ".text"
+start:
+ blr
+ tweqi 1, 0
+ macchw 2, 1, 0
+ macchw. 2, 1, 0
+ macchwo 2, 1, 0
+ macchwo. 2, 1, 0
+ macchws 2, 1, 0
+ macchws. 2, 1, 0
+ macchwso 2, 1, 0
+ macchwso. 2, 1, 0
+ macchwsu 2, 1, 0
+ macchwsu. 2, 1, 0
+ macchwsuo 2, 1, 0
+ macchwsuo. 2, 1, 0
+ macchwu 2, 1, 0
+ macchwu. 2, 1, 0
+ macchwuo 2, 1, 0
+ macchwuo. 2, 1, 0
+ machhw 2, 1, 0
+ machhw. 2, 1, 0
+ machhwo 2, 1, 0
+ machhwo. 2, 1, 0
+ machhws 2, 1, 0
+ machhws. 2, 1, 0
+ machhwso 2, 1, 0
+ machhwso. 2, 1, 0
+ machhwsu 2, 1, 0
+ machhwsu. 2, 1, 0
+ machhwsuo 2, 1, 0
+ machhwsuo. 2, 1, 0
+ machhwu 2, 1, 0
+ machhwu. 2, 1, 0
+ machhwuo 2, 1, 0
+ machhwuo. 2, 1, 0
+ maclhw 2, 1, 0
+ maclhw. 2, 1, 0
+ maclhwo 2, 1, 0
+ maclhwo. 2, 1, 0
+ maclhws 2, 1, 0
+ maclhws. 2, 1, 0
+ maclhwso 2, 1, 0
+ maclhwso. 2, 1, 0
+ maclhwsu 2, 1, 0
+ maclhwsu. 2, 1, 0
+ maclhwsuo 2, 1, 0
+ maclhwsuo. 2, 1, 0
+ maclhwu 2, 1, 0
+ maclhwu. 2, 1, 0
+ maclhwuo 2, 1, 0
+ maclhwuo. 2, 1, 0
+ nmacchw 2, 1, 0
+ nmacchw. 2, 1, 0
+ nmacchwo 2, 1, 0
+ nmacchwo. 2, 1, 0
+ nmacchws 2, 1, 0
+ nmacchws. 2, 1, 0
+ nmacchwso 2, 1, 0
+ nmacchwso. 2, 1, 0
+ nmachhw 2, 1, 0
+ nmachhw. 2, 1, 0
+ nmachhwo 2, 1, 0
+ nmachhwo. 2, 1, 0
+ nmachhws 2, 1, 0
+ nmachhws. 2, 1, 0
+ nmachhwso 2, 1, 0
+ nmachhwso. 2, 1, 0
+ nmaclhw 2, 1, 0
+ nmaclhw. 2, 1, 0
+ nmaclhwo 2, 1, 0
+ nmaclhwo. 2, 1, 0
+ nmaclhws 2, 1, 0
+ nmaclhws. 2, 1, 0
+ nmaclhwso 2, 1, 0
+ nmaclhwso. 2, 1, 0
+ mulchw 2, 1, 0
+ mulchw. 2, 1, 0
+ mulchwu 2, 1, 0
+ mulchwu. 2, 1, 0
+ mulhhw 2, 1, 0
+ mulhhw. 2, 1, 0
+ mulhhwu 2, 1, 0
+ mulhhwu. 2, 1, 0
+ mullhw 2, 1, 0
+ mullhw. 2, 1, 0
+ mullhwu 2, 1, 0
+ mullhwu. 2, 1, 0
+ dlmzb 2, 1, 0
+ dlmzb. 2, 1, 0
+ dccci 2, 1
+ iccci 2, 1
+ dcblc 0, 2, 1
+ dcblc 2, 1
+ dcblc 1, 2, 1
+ dcbtls 0, 2, 1
+ dcbtls 2, 1
+ dcbtls 1, 2, 1
+ dcbtstls 0, 2, 1
+ dcbtstls 2, 1
+ dcbtstls 1, 2, 1
+ icblc 0, 2, 1
+ icblc 2, 1
+ icblc 1, 2, 1
+ icbtls 0, 2, 1
+ icbtls 2, 1
+ icbtls 1, 2, 1
+ dcread 2, 1, 0
+ icread 2, 1
+ mfpmr 2, 1
+ mfpmr 1, 2
+ mfspr 4, 0x001
+ mfxer 4
+ mfspr 4, 0x008
+ mflr 4
+ mfspr 4, 0x009
+ mfctr 4
+ mfspr 4, 0x016
+ mfdec 4
+ mfspr 4, 0x01a
+ mfsrr0 4
+ mfspr 4, 0x01b
+ mfsrr1 4
+ mfspr 4, 0x030
+ mfpid 4
+ mfspr 4, 0x03a
+ mfcsrr0 4
+ mfspr 4, 0x03b
+ mfcsrr1 4
+ mfspr 4, 0x03d
+ mfdear 4
+ mfspr 4, 0x03e
+ mfesr 4
+ mfspr 4, 0x03f
+ mfivpr 4
+ mfspr 4, 0x100
+ mfusprg0 4
+ mfspr 4, 0x104
+ mfsprg4 4
+ mfspr 4, 0x105
+ mfsprg5 4
+ mfspr 4, 0x106
+ mfsprg6 4
+ mfspr 4, 0x107
+ mfsprg7 4
+ mfspr 4, 0x10c
+ mftbl 4
+ mftb 4
+ mfspr 4, 0x10d
+ mftbu 4
+ mfspr 4, 0x110
+ mfsprg0 4
+ mfspr 4, 0x111
+ mfsprg1 4
+ mfspr 4, 0x112
+ mfsprg2 4
+ mfspr 4, 0x113
+ mfsprg3 4
+ mfspr 4, 0x11e
+ mfpir 4
+ mfspr 4, 0x11f
+ mfpvr 4
+ mfspr 4, 0x130
+ mfdbsr 4
+ mfspr 4, 0x134
+ mfdbcr0 4
+ mfspr 4, 0x135
+ mfdbcr1 4
+ mfspr 4, 0x136
+ mfdbcr2 4
+ mfspr 4, 0x138
+ mfiac1 4
+ mfspr 4, 0x139
+ mfiac2 4
+ mfspr 4, 0x13a
+ mfiac3 4
+ mfspr 4, 0x13b
+ mfiac4 4
+ mfspr 4, 0x13c
+ mfdac1 4
+ mfspr 4, 0x13d
+ mfdac2 4
+ mfspr 4, 0x13e
+ mfdvc1 4
+ mfspr 4, 0x13f
+ mfdvc2 4
+ mfspr 4, 0x150
+ mftsr 4
+ mfspr 4, 0x154
+ mftcr 4
+ mfspr 4, 0x190
+ mfivor0 4
+ mfspr 4, 0x191
+ mfivor1 4
+ mfspr 4, 0x192
+ mfivor2 4
+ mfspr 4, 0x193
+ mfivor3 4
+ mfspr 4, 0x194
+ mfivor4 4
+ mfspr 4, 0x195
+ mfivor5 4
+ mfspr 4, 0x196
+ mfivor6 4
+ mfspr 4, 0x197
+ mfivor7 4
+ mfspr 4, 0x198
+ mfivor8 4
+ mfspr 4, 0x199
+ mfivor9 4
+ mfspr 4, 0x19a
+ mfivor10 4
+ mfspr 4, 0x19b
+ mfivor11 4
+ mfspr 4, 0x19c
+ mfivor12 4
+ mfspr 4, 0x19d
+ mfivor13 4
+ mfspr 4, 0x19e
+ mfivor14 4
+ mfspr 4, 0x19f
+ mfivor15 4
+ mfspr 4, 0x213
+ mfivor35 4
+ mfspr 4, 0x23a
+ mfmcsrr0 4
+ mfspr 4, 0x23b
+ mfmcsrr1 4
+ mfspr 4, 0x23c
+ mfmcsr 4
+ mfspr 4, 0x370
+ mfivndx 4
+ mfspr 4, 0x371
+ mfdvndx 4
+ mfspr 4, 0x372
+ mfivlim 4
+ mfspr 4, 0x373
+ mfdvlim 4
+ mfspr 4, 0x374
+ mfclcsr 4
+ mfspr 4, 0x378
+ mfccr1 4
+ mfspr 4, 0x39b
+ mfrstcfg 4
+ mfspr 4, 0x39c
+ mfdcdbtrl 4
+ mfspr 4, 0x39d
+ mfdcdbtrh 4
+ mfspr 4, 0x39f
+ mficdbtr 4
+ mfspr 4, 0x3b2
+ mfmmucr 4
+ mfspr 4, 0x3b3
+ mfccr0 4
+ mfspr 4, 0x3d3
+ mficdbdr 4
+ mfspr 4, 0x3f3
+ mfdbdr 4
+ mtspr 0x036, 4
+ mtdecar 4
Index: include/opcode/ppc.h
===================================================================
RCS file: /cvs/src/src/include/opcode/ppc.h,v
retrieving revision 1.37
diff -u -p -r1.37 ppc.h
--- include/opcode/ppc.h 2 Oct 2009 14:42:42 -0000 1.37
+++ include/opcode/ppc.h 8 Feb 2010 01:16:22 -0000
@@ -1,6 +1,6 @@
/* ppc.h -- Header file for PowerPC opcode table
Copyright 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support
This file is part of GDB, GAS, and the GNU binutils.
@@ -168,11 +168,14 @@ extern const int powerpc_num_opcodes;
#define PPC_OPCODE_VSX 0x80000000
/* Opcode is supported by A2. */
-#define PPC_OPCODE_A2 0x100000000ULL
+#define PPC_OPCODE_A2 0x100000000ULL
/* Opcode is supported by PowerPC 476 processor. */
#define PPC_OPCODE_476 0x200000000ULL
+/* Opcode is supported by AppliedMicro Titan core */
+#define PPC_OPCODE_TITAN 0x400000000ULL
+
/* A macro to extract the major opcode from an instruction. */
#define PPC_OP(i) (((i) >> 26) & 0x3f)
\f
Index: opcodes/ppc-dis.c
===================================================================
RCS file: /cvs/src/src/opcodes/ppc-dis.c,v
retrieving revision 1.44
diff -u -p -r1.44 ppc-dis.c
--- opcodes/ppc-dis.c 4 Jan 2010 02:32:56 -0000 1.44
+++ opcodes/ppc-dis.c 8 Feb 2010 01:16:32 -0000
@@ -164,6 +164,9 @@ struct ppc_mopt ppc_opts[] = {
0 },
{ "spe", (PPC_OPCODE_PPC | PPC_OPCODE_EFS),
PPC_OPCODE_SPE },
+ { "titan", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_32
+ | PPC_OPCODE_PMR | PPC_OPCODE_RFMCI | PPC_OPCODE_TITAN),
+ 0 },
{ "vsx", (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC),
PPC_OPCODE_VSX },
};
Index: opcodes/ppc-opc.c
===================================================================
RCS file: /cvs/src/src/opcodes/ppc-opc.c,v
retrieving revision 1.126
diff -u -p -r1.126 ppc-opc.c
--- opcodes/ppc-opc.c 2 Oct 2009 14:42:42 -0000 1.126
+++ opcodes/ppc-opc.c 8 Feb 2010 01:16:33 -0000
@@ -1,6 +1,6 @@
/* ppc-opc.c -- PowerPC opcode list
Copyright 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support
This file is part of the GNU opcodes library.
@@ -1935,6 +1935,8 @@ extract_dm (unsigned long insn,
#define PPCRFMCI PPC_OPCODE_RFMCI
#define E500MC PPC_OPCODE_E500MC
#define PPCA2 PPC_OPCODE_A2
+#define TITAN PPC_OPCODE_TITAN
+#define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | TITAN
\f
/* The opcode table.
@@ -2017,16 +2019,16 @@ const struct powerpc_opcode powerpc_opco
{"vmrghb", VX (4, 12), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, PPCNONE, {FRS,RA,RB,PSWM,PSQM}},
{"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"mulhhwu", XRC(4, 8,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"mulhhwu.", XRC(4, 8,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulhhwu", XRC(4, 8,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"mulhhwu.", XRC(4, 8,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_sum0", A (4, 10,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
{"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
{"ps_sum1", A (4, 11,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
{"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
{"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
-{"machhwu", XO (4, 12,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwu", XO (4, 12,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
-{"machhwu.", XO (4, 12,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwu.", XO (4, 12,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
{"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
{"ps_madds0", A (4, 14,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
@@ -2081,13 +2083,13 @@ const struct powerpc_opcode powerpc_opco
{"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, PPCNONE, {FRS,RA,RB,PSWM,PSQM}},
{"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulhhw", XRC(4, 40,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulhhw", XRC(4, 40,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulhhw.", XRC(4, 40,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhw", XO (4, 44,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhw.", XO (4, 44,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhw", XO (4, 46,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhw.", XO (4, 46,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulhhw.", XRC(4, 40,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhw", XO (4, 44,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhw.", XO (4, 44,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhw", XO (4, 46,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhw.", XO (4, 46,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_cmpu1", X (4, 64), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
{"vadduwm", VX (4, 128), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
@@ -2097,15 +2099,15 @@ const struct powerpc_opcode powerpc_opco
{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
{"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"machhwsu", XO (4, 76,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhwsu.", XO (4, 76,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwsu", XO (4, 76,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhwsu.", XO (4, 76,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_cmpo1", X (4, 96), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"machhws", XO (4, 108,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhws.", XO (4, 108,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhws", XO (4, 110,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhws.", XO (4, 110,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhws", XO (4, 108,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhws.", XO (4, 108,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhws", XO (4, 110,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhws.", XO (4, 110,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vslb", VX (4, 260), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmulosb", VX (4, 264), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
@@ -2113,39 +2115,39 @@ const struct powerpc_opcode powerpc_opco
{"vmrglb", VX (4, 268), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkshus", VX (4, 270), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulchwu", XRC(4, 136,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulchwu", XRC(4, 136,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
-{"mulchwu.", XRC(4, 136,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwu", XO (4, 140,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwu.", XO (4, 140,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulchwu.", XRC(4, 136,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwu", XO (4, 140,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwu.", XO (4, 140,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vslh", VX (4, 324), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmulosh", VX (4, 328), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vrsqrtefp", VX (4, 330), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
{"vmrglh", VX (4, 332), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkswus", VX (4, 334), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"mulchw", XRC(4, 168,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"mulchw.", XRC(4, 168,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchw", XO (4, 172,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchw.", XO (4, 172,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchw", XO (4, 174,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchw.", XO (4, 174,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mulchw", XRC(4, 168,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"mulchw.", XRC(4, 168,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchw", XO (4, 172,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchw.", XO (4, 172,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchw", XO (4, 174,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchw.", XO (4, 174,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vslw", VX (4, 388), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vexptefp", VX (4, 394), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
{"vmrglw", VX (4, 396), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vpkshss", VX (4, 398), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"macchwsu", XO (4, 204,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwsu.", XO (4, 204,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwsu", XO (4, 204,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwsu.", XO (4, 204,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsl", VX (4, 452), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vlogefp", VX (4, 458), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
{"vpkswss", VX (4, 462), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"macchws", XO (4, 236,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchws.", XO (4, 236,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchws", XO (4, 238,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchws.", XO (4, 238,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchws", XO (4, 236,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchws.", XO (4, 236,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchws", XO (4, 238,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchws.", XO (4, 238,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evaddw", VX (4, 512), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"vaddubs", VX (4, 512), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evaddiw", VX (4, 514), VX_MASK, PPCSPE, PPCNONE, {RS, RB, UIMM}},
@@ -2322,17 +2324,17 @@ const struct powerpc_opcode powerpc_opco
{"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"vpkpx", VX (4, 782), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_2, RA}},
-{"mullhwu", XRC(4, 392,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mullhwu", XRC(4, 392,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwhex", VX (4, 784), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"mullhwu.", XRC(4, 392,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mullhwu.", XRC(4, 392,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwhe", VX (4, 785), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
{"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evlwhou", VX (4, 789), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
{"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evlwhos", VX (4, 791), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
-{"maclhwu", XO (4, 396,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwu", XO (4, 396,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"maclhwu.", XO (4, 396,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwu.", XO (4, 396,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
{"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
@@ -2358,27 +2360,27 @@ const struct powerpc_opcode powerpc_opco
{"vcfsx", VX (4, 842), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
{"vspltish", VX (4, 844), VX_MASK, PPCVEC, PPCNONE, {VD, SIMM}},
{"vupkhpx", VX (4, 846), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
-{"mullhw", XRC(4, 424,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"mullhw.", XRC(4, 424,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhw", XO (4, 428,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhw.", XO (4, 428,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhw", XO (4, 430,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhw.", XO (4, 430,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"mullhw", XRC(4, 424,0), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"mullhw.", XRC(4, 424,1), X_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhw", XO (4, 428,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhw.", XO (4, 428,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhw", XO (4, 430,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhw.", XO (4, 430,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vaddsws", VX (4, 896), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vminsw", VX (4, 898), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vsraw", VX (4, 900), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vctuxs", VX (4, 906), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
{"vspltisw", VX (4, 908), VX_MASK, PPCVEC, PPCNONE, {VD, SIMM}},
-{"maclhwsu", XO (4, 460,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwsu.", XO (4, 460,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwsu", XO (4, 460,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwsu.", XO (4, 460,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vctsxs", VX (4, 970), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
{"vupklpx", VX (4, 974), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
-{"maclhws", XO (4, 492,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhws.", XO (4, 492,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhws", XO (4, 494,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhws.", XO (4, 494,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhws", XO (4, 492,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhws.", XO (4, 492,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhws", XO (4, 494,0,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhws.", XO (4, 494,0,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsububm", VX (4,1024), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vavgub", VX (4,1026), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evmhessf", VX (4,1027), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2395,8 +2397,8 @@ const struct powerpc_opcode powerpc_opco
{"vslo", VX (4,1036), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"machhwuo", XO (4, 12,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhwuo.", XO (4, 12,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwuo", XO (4, 12,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhwuo.", XO (4, 12,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2421,13 +2423,13 @@ const struct powerpc_opcode powerpc_opco
{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwssf", VX (4,1107), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"machhwo", XO (4, 44,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwo", XO (4, 44,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwumi", VX (4,1112), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"machhwo.", XO (4, 44,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwo.", XO (4, 44,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"nmachhwo", XO (4, 46,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhwo.", XO (4, 46,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"nmachhwo", XO (4, 46,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhwo.", XO (4, 46,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2445,8 +2447,8 @@ const struct powerpc_opcode powerpc_opco
{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
{"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
-{"machhwsuo", XO (4, 76,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhwsuo.", XO (4, 76,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwsuo", XO (4, 76,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhwsuo.", XO (4, 76,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
@@ -2464,10 +2466,10 @@ const struct powerpc_opcode powerpc_opco
{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
-{"machhwso", XO (4, 108,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"machhwso.", XO (4, 108,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhwso", XO (4, 110,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmachhwso.", XO (4, 110,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"machhwso", XO (4, 108,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"machhwso.", XO (4, 108,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhwso", XO (4, 110,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmachhwso.", XO (4, 110,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2486,8 +2488,8 @@ const struct powerpc_opcode powerpc_opco
{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwuo", XO (4, 140,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwuo.", XO (4, 140,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwuo", XO (4, 140,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwuo.", XO (4, 140,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2502,13 +2504,13 @@ const struct powerpc_opcode powerpc_opco
{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwo", XO (4, 172,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwo", XO (4, 172,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwo.", XO (4, 172,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwo.", XO (4, 172,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"nmacchwo", XO (4, 174,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchwo.", XO (4, 174,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"nmacchwo", XO (4, 174,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchwo.", XO (4, 174,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2525,8 +2527,8 @@ const struct powerpc_opcode powerpc_opco
{"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwsuo", XO (4, 204,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"macchwsuo.", XO (4, 204,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwsuo", XO (4, 204,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"macchwsuo.", XO (4, 204,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
@@ -2541,13 +2543,13 @@ const struct powerpc_opcode powerpc_opco
{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwso", XO (4, 236,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwso", XO (4, 236,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"macchwso.", XO (4, 236,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"macchwso.", XO (4, 236,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
-{"nmacchwso", XO (4, 238,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmacchwso.", XO (4, 238,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"nmacchwso", XO (4, 238,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmacchwso.", XO (4, 238,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsububs", VX (4,1536), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"mfvscr", VX (4,1540), VX_MASK, PPCVEC, PPCNONE, {VD}},
{"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
@@ -2573,30 +2575,30 @@ const struct powerpc_opcode powerpc_opco
{"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"maclhwuo", XO (4, 396,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwuo.", XO (4, 396,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwuo", XO (4, 396,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwuo.", XO (4, 396,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsubshs", VX (4,1856), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
-{"maclhwo", XO (4, 428,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwo.", XO (4, 428,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhwo", XO (4, 430,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwo", XO (4, 428,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwo.", XO (4, 428,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhwo", XO (4, 430,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vsubsws", VX (4,1920), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"vsumsws", VX (4,1928), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
-{"maclhwsuo", XO (4, 460,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwsuo", XO (4, 460,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
{"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
{"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
-{"maclhwso", XO (4, 492,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"maclhwso.", XO (4, 492,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhwso", XO (4, 494,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
-{"nmaclhwso.", XO (4, 494,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
+{"maclhwso", XO (4, 492,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"maclhwso.", XO (4, 492,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhwso", XO (4, 494,1,0),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
+{"nmaclhwso.", XO (4, 494,1,1),XO_MASK, MULHW, PPCNONE, {RT, RA, RB}},
{"dcbz_l", X (4,1014), XRT_MASK, PPCPS, PPCNONE, {RA, RB}},
{"mulli", OP(7), OP_MASK, PPCCOM, PPCNONE, {RT, RA, SI}},
@@ -3532,7 +3534,7 @@ const struct powerpc_opcode powerpc_opco
{"iseleq", X(31,79), X_MASK, PPCISEL, PPCNONE, {RT, RA, RB}},
-{"isel", XISEL(31,15), XISEL_MASK, PPCISEL, PPCNONE, {RT, RA, RB, CRB}},
+{"isel", XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, PPCNONE, {RT, RA, RB, CRB}},
{"subf", XO(31,40,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
{"sub", XO(31,40,0,0), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
@@ -3585,8 +3587,8 @@ const struct powerpc_opcode powerpc_opco
{"mulhw", XO(31,75,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
-{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440, PPCNONE, {RA, RS, RB}},
-{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440, PPCNONE, {RA, RS, RB}},
+{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|TITAN, PPCNONE, {RA, RS, RB}},
+{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|TITAN, PPCNONE, {RA, RS, RB}},
{"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, PPCNONE, {SR, RS}},
@@ -3629,7 +3631,7 @@ const struct powerpc_opcode powerpc_opco
{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {RS}},
-{"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stvebx", X(31,135), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
{"stbfcmx", APU(31,135,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
@@ -3676,7 +3678,7 @@ const struct powerpc_opcode powerpc_opco
{"wrteei", X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {E}},
-{"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stvehx", X(31,167), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
{"sthfcmx", APU(31,167,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
@@ -3714,7 +3716,7 @@ const struct powerpc_opcode powerpc_opco
{"msgsnd", XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2, PPCNONE, {RB}},
-{"mtsr", X(31,210), XRB_MASK|(1<<20), COM32, PPCNONE, {SR, RS}},
+{"mtsr", X(31,210), XRB_MASK|(1<<20), COM32, TITAN, {SR, RS}},
{"eratwe", X(31,211), X_MASK, PPCA2, PPCNONE, {RS, RA, WS}},
@@ -3732,7 +3734,7 @@ const struct powerpc_opcode powerpc_opco
{"stbepx", X(31,223), X_MASK, E500MC|PPCA2, PPCNONE, {RS, RA, RB}},
-{"icblc", X(31,230), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"icblc", X(31,230), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stvx", X(31,231), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
{"stqfcmx", APU(31,231,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
@@ -3757,7 +3759,7 @@ const struct powerpc_opcode powerpc_opco
{"icblce", X(31,238), X_MASK, PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
{"msgclr", XRTRA(31,238,0,0),XRTRA_MASK,E500MC|PPCA2, PPCNONE, {RB}},
-{"mtsrin", X(31,242), XRA_MASK, PPC32, PPCNONE, {RS, RB}},
+{"mtsrin", X(31,242), XRA_MASK, PPC32, TITAN, {RS, RB}},
{"mtsri", X(31,242), XRA_MASK, POWER32, PPCNONE, {RS, RB}},
{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, PPCNONE, {RA, RB}},
@@ -3773,7 +3775,7 @@ const struct powerpc_opcode powerpc_opco
{"dcbtstep", XRT(31,255,0), X_MASK, E500MC|PPCA2, PPCNONE, {RT, RA, RB}},
-{"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, PPCNONE, {RS, RA}},
+{"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RS, RA}},
{"mfdcrx.", XRC(31,259,1), X_MASK, PPCA2, PPCNONE, {RS, RA}},
{"icbt", X(31,262), XRT_MASK, PPC403, PPCNONE, {RA, RB}},
@@ -3791,7 +3793,7 @@ const struct powerpc_opcode powerpc_opco
{"tlbiel", X(31,274), XRTLRA_MASK, POWER4, PPC476, {RB, L}},
-{"mfapidi", X(31,275), X_MASK, BOOKE, PPCNONE, {RT, RA}},
+{"mfapidi", X(31,275), X_MASK, BOOKE, TITAN, {RT, RA}},
{"lscbx", XRC(31,277,0), X_MASK, M601, PPCNONE, {RT, RA, RB}},
{"lscbx.", XRC(31,277,1), X_MASK, M601, PPCNONE, {RT, RA, RB}},
@@ -3811,10 +3813,10 @@ const struct powerpc_opcode powerpc_opco
{"mfdcrux", X(31,291), X_MASK, PPC464, PPCNONE, {RS, RA}},
-{"tlbie", X(31,306), XRTLRA_MASK, PPC, PPCNONE, {RB, L}},
+{"tlbie", X(31,306), XRTLRA_MASK, PPC, TITAN, {RB, L}},
{"tlbi", X(31,306), XRT_MASK, POWER, PPCNONE, {RA0, RB}},
-{"eciwx", X(31,310), X_MASK, PPC, PPCNONE, {RT, RA, RB}},
+{"eciwx", X(31,310), X_MASK, PPC, TITAN, {RT, RA, RB}},
{"lhzux", X(31,311), X_MASK, COM, PPCNONE, {RT, RAL, RB}},
@@ -3859,10 +3861,10 @@ const struct powerpc_opcode powerpc_opco
{"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, PPCNONE, {RT}},
-{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {RT, SPR}},
+{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, TITAN, {RT, SPR}},
{"mfdcr.", XRC(31,323,1), X_MASK, PPCA2, PPCNONE, {RT, SPR}},
-{"dcread", X(31,326), X_MASK, PPC476, PPCNONE, {RT, RA, RB}},
+{"dcread", X(31,326), X_MASK, PPC476|TITAN, PPCNONE, {RT, RA, RB}},
{"div", XO(31,331,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
{"div.", XO(31,331,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
@@ -3873,17 +3875,17 @@ const struct powerpc_opcode powerpc_opco
{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, PPCNONE, {RT}},
{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, PPCNONE, {RT}},
+{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN, {RT}},
+{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN, {RT}},
{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, PPCNONE, {RT}},
{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, PPCNONE, {RT}},
{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, PPCNONE, {RT}},
{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, PPCNONE, {RT}},
-{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, PPCNONE, {RT}},
-{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, PPCNONE, {RT}},
+{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN, {RT}},
+{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN, {RT}},
+{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2|TITAN, PPCNONE, {RT}},
{"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, PPCNONE, {RT}},
-{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, PPCNONE, {RT}},
+{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, TITAN, {RT}},
{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, PPCNONE, {RT}},
{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, PPCNONE, {RT}},
{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, PPCNONE, {RT}},
@@ -3924,7 +3926,7 @@ const struct powerpc_opcode powerpc_opco
{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, PPCNONE, {RT}},
{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, PPCNONE, {RT}},
{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, PPCNONE, {RT}},
-{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, PPCNONE, {RT}},
+{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN, {RT}},
{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, PPCNONE, {RT}},
{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, PPCNONE, {RT}},
{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, PPCNONE, {RT}},
@@ -3961,13 +3963,13 @@ const struct powerpc_opcode powerpc_opco
{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, PPCNONE, {RT}},
{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, PPCNONE, {RT}},
{"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
-{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
+{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
{"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
-{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
+{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
{"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
{"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, PPCNONE, {RT}},
-{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
-{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
+{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
+{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
{"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, PPCNONE, {RT}},
@@ -3977,7 +3979,7 @@ const struct powerpc_opcode powerpc_opco
{"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
{"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
{"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
-{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
+{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, TITAN, {RT}},
{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, PPCNONE, {RT}},
@@ -4000,6 +4002,16 @@ const struct powerpc_opcode powerpc_opco
{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, PPCNONE, {RT}},
{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, PPCNONE, {RT}},
+{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mficdbtr", XSPR(31,339,927), XSPR_MASK, TITAN, PPCNONE, {RT}},
{"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, PPCNONE, {RT}},
@@ -4009,7 +4021,8 @@ const struct powerpc_opcode powerpc_opco
{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, PPCNONE, {RT}},
-{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405, PPCNONE, {RT}},
+{"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, PPCNONE, {RT}},
+{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, PPCNONE, {RT}},
{"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, PPCNONE, {RT}},
{"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, PPCNONE, {RT}},
{"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, PPCNONE, {RT}},
@@ -4026,7 +4039,7 @@ const struct powerpc_opcode powerpc_opco
{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, PPCNONE, {RT}},
{"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, PPCNONE, {RT}},
{"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, PPCNONE, {RT}},
-{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403, PPCNONE, {RT}},
+{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, PPCNONE, {RT}},
{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, PPCNONE, {RT}},
@@ -4040,6 +4053,7 @@ const struct powerpc_opcode powerpc_opco
{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, PPCNONE, {RT}},
+{"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, PPCNONE, {RS}},
{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, PPCNONE, {RT}},
{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, PPCNONE, {RT}},
@@ -4071,7 +4085,7 @@ const struct powerpc_opcode powerpc_opco
{"divs", XO(31,363,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
{"divs.", XO(31,363,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
-{"tlbia", X(31,370), 0xffffffff, PPC, PPCNONE, {0}},
+{"tlbia", X(31,370), 0xffffffff, PPC, TITAN, {0}},
{"mftbl", XSPR(31,371,268), XSPR_MASK, CLASSIC, PPCNONE, {RT}},
{"mftbu", XSPR(31,371,269), XSPR_MASK, CLASSIC, PPCNONE, {RT}},
@@ -4085,10 +4099,10 @@ const struct powerpc_opcode powerpc_opco
{"popcntw", X(31,378), XRB_MASK, POWER7|PPCA2, PPCNONE, {RA, RS}},
-{"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, PPCNONE, {RA, RS}},
+{"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
{"mtdcrx.", XRC(31,387,1), X_MASK, PPCA2, PPCNONE, {RA, RS}},
-{"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stdfcmx", APU(31,391,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
{"divdeu", XO(31,393,0,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
@@ -4119,7 +4133,7 @@ const struct powerpc_opcode powerpc_opco
{"slbie", X(31,434), XRTRA_MASK, PPC64, PPCNONE, {RB}},
-{"ecowx", X(31,438), X_MASK, PPC, PPCNONE, {RT, RA, RB}},
+{"ecowx", X(31,438), X_MASK, PPC, TITAN, {RT, RA, RB}},
{"sthux", X(31,439), X_MASK, COM, PPCNONE, {RS, RAS, RB}},
@@ -4164,10 +4178,10 @@ const struct powerpc_opcode powerpc_opco
{"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, PPCNONE, {RS}},
-{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {SPR, RS}},
+{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, TITAN, {SPR, RS}},
{"mtdcr.", XRC(31,451,1), X_MASK, PPCA2, PPCNONE, {SPR, RS}},
-{"dccci", X(31,454), XRT_MASK, PPC403|PPC440, PPCA2|PPC476, {RA, RB}},
+{"dccci", X(31,454), XRT_MASK, PPC403|PPC440|TITAN, PPCA2|PPC476, {RA, RB}},
{"dci", X(31,454), XRARB_MASK, PPCA2|PPC476, PPCNONE, {CT}},
{"divdu", XO(31,457,0,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
@@ -4181,15 +4195,15 @@ const struct powerpc_opcode powerpc_opco
{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, PPCNONE, {RS}},
{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, PPCNONE, {RS}},
+{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, PPCNONE, {RS}},
{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, PPCNONE, {RS}},
-{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, PPCNONE, {RS}},
-{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, PPCNONE, {RS}},
+{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN, {RS}},
+{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN, {RS}},
+{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, TITAN, {RS}},
+{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, TITAN, {RS}},
{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, PPCNONE, {RS}},
-{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, PPCNONE, {RS}},
+{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, TITAN, {RS}},
{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, PPCNONE, {RS}},
{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, PPCNONE, {RS}},
@@ -4228,7 +4242,7 @@ const struct powerpc_opcode powerpc_opco
{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, PPCNONE, {RS}},
-{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, PPCNONE, {RS}},
+{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN, {RS}},
{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, PPCNONE, {RS}},
{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, PPCNONE, {RS}},
{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, PPCNONE, {RS}},
@@ -4265,16 +4279,22 @@ const struct powerpc_opcode powerpc_opco
{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, PPCNONE, {RS}},
{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, PPCNONE, {RS}},
{"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
-{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
+{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
{"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
-{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
+{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
{"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
{"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, PPCNONE, {RS}},
-{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
-{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
+{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
+{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
+{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, PPCNONE, {RS}},
{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, PPCNONE, {RS}},
{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, PPCNONE, {RS}},
{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, PPCNONE, {RS}},
@@ -4284,7 +4304,8 @@ const struct powerpc_opcode powerpc_opco
{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, PPCNONE, {RS}},
{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, PPCNONE, {RS}},
-{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405, PPCNONE, {RS}},
+{"mtrmmucr", XSPR(31,467,946), XSPR_MASK, TITAN, PPCNONE, {RS}},
+{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, PPCNONE, {RS}},
{"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, PPCNONE, {RS}},
{"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, PPCNONE, {RS}},
{"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, PPCNONE, {RS}},
@@ -4314,6 +4335,7 @@ const struct powerpc_opcode powerpc_opco
{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, PPCNONE, {RS}},
+{"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, PPCNONE, {RS}},
{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, PPCNONE, {RS}},
{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, PPCNONE, {RS}},
{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, PPCNONE, {RS}},
@@ -4341,7 +4363,7 @@ const struct powerpc_opcode powerpc_opco
{"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCA2|PPC476, {RT, RA, RB}},
-{"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476, PPCNONE, {CT, RA, RB}},
+{"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476|TITAN, PPCNONE, {CT, RA, RB}},
{"stvxl", X(31,487), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
@@ -4433,7 +4455,7 @@ const struct powerpc_opcode powerpc_opco
{"lxsdx", X(31,588), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
-{"mfsr", X(31,595), XRB_MASK|(1<<20), COM32, PPCNONE, {RT, SR}},
+{"mfsr", X(31,595), XRB_MASK|(1<<20), COM32, TITAN, {RT, SR}},
{"lswi", X(31,597), X_MASK, PPCCOM, PPCNONE, {RT, RA0, NB}},
{"lsi", X(31,597), X_MASK, PWRCOM, PPCNONE, {RT, RA0, NB}},
@@ -4480,7 +4502,7 @@ const struct powerpc_opcode powerpc_opco
{"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
{"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
-{"mfsrin", X(31,659), XRA_MASK, PPC32, PPCNONE, {RT, RB}},
+{"mfsrin", X(31,659), XRA_MASK, PPC32, TITAN, {RT, RB}},
{"stdbrx", X(31,660), X_MASK, CELL|POWER7|PPCA2, PPCNONE, {RS, RA0, RB}},
@@ -4711,7 +4733,7 @@ const struct powerpc_opcode powerpc_opco
{"extsb", XRC(31,954,0), XRB_MASK, PPC, PPCNONE, {RA, RS}},
{"extsb.", XRC(31,954,1), XRB_MASK, PPC, PPCNONE, {RA, RS}},
-{"iccci", X(31,966), XRT_MASK, PPC403|PPC440, PPC476, {RA, RB}},
+{"iccci", X(31,966), XRT_MASK, PPC403|PPC440|TITAN, PPC476, {RA, RB}},
{"ici", X(31,966), XRARB_MASK, PPCA2|PPC476, PPCNONE, {CT}},
{"divduo", XO(31,457,1,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
@@ -4738,7 +4760,7 @@ const struct powerpc_opcode powerpc_opco
{"icbiep", XRT(31,991,0), XRT_MASK, E500MC|PPCA2, PPCNONE, {RA, RB}},
-{"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476, PPCNONE, {RA, RB}},
+{"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476|TITAN, PPCNONE, {RA, RB}},
{"nabso", XO(31,488,1,0), XORB_MASK, M601, PPCNONE, {RT, RA}},
{"nabso.", XO(31,488,1,1), XORB_MASK, M601, PPCNONE, {RT, RA}},
@@ -4749,7 +4771,7 @@ const struct powerpc_opcode powerpc_opco
{"divwo", XO(31,491,1,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
{"divwo.", XO(31,491,1,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
-{"tlbli", X(31,1010), XRTRA_MASK, PPC, PPCNONE, {RB}},
+{"tlbli", X(31,1010), XRTRA_MASK, PPC, TITAN, {RB}},
{"stdcix", X(31,1013), X_MASK, POWER6, PPCNONE, {RS, RA0, RB}},
@@ -4854,8 +4876,8 @@ const struct powerpc_opcode powerpc_opco
{"fadds", A(59,21,0), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
{"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
-{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, PPCNONE, {FRT, FRB}},
-{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, PPCNONE, {FRT, FRB}},
+{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, TITAN, {FRT, FRB}},
+{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, TITAN, {FRT, FRB}},
{"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
{"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7, {FRT, FRB, A_L}},
@@ -5141,8 +5163,8 @@ const struct powerpc_opcode powerpc_opco
{"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRB}},
{"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRB}},
-{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, PPCNONE, {FRT, FRB}},
-{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, PPCNONE, {FRT, FRB}},
+{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, TITAN, {FRT, FRB}},
+{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, TITAN, {FRT, FRB}},
{"fsel", A(63,23,0), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
{"fsel.", A(63,23,1), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-02-08 2:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-19 23:46 PATCH: Add AppliedMicro Titan (APM83xxx) support Philipp Tomsich
2009-11-20 4:12 ` Alan Modra
2009-11-20 16:04 ` PATCH [version 2]: " Philipp Tomsich
2010-02-08 2:00 ` Alan Modra
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).