From 54a6a47e7ef3fc2823c69e3b1b0e97daaaa702a7 Mon Sep 17 00:00:00 2001
From: Alexander Fedotov-B55613 <b55613@freescale.com>
Date: Wed, 23 Aug 2017 13:08:15 +0300
Subject: [PATCH] [PowerPC VLE] Add SPE2 and EFS2 instructions support

---
 gas/ChangeLog                         |   24 +
 gas/config/tc-ppc.c                   |   53 ++
 gas/doc/as.texinfo                    |    2 +-
 gas/doc/c-ppc.texi                    |    3 +
 gas/testsuite/gas/ppc/efs.d           |   25 +
 gas/testsuite/gas/ppc/efs.s           |   29 +
 gas/testsuite/gas/ppc/efs2.d          |   19 +
 gas/testsuite/gas/ppc/efs2.s          |   18 +
 gas/testsuite/gas/ppc/ppc.exp         |    8 +
 gas/testsuite/gas/ppc/spe.d           |  267 ++++++++
 gas/testsuite/gas/ppc/spe.s           |  274 +++++++++
 gas/testsuite/gas/ppc/spe2-checks.d   |    4 +
 gas/testsuite/gas/ppc/spe2-checks.l   |   73 +++
 gas/testsuite/gas/ppc/spe2-checks.s   |   99 +++
 gas/testsuite/gas/ppc/spe2.d          |  815 ++++++++++++++++++++++++
 gas/testsuite/gas/ppc/spe2.s          |  834 +++++++++++++++++++++++++
 gas/testsuite/gas/ppc/spe_ambiguous.d |   15 +
 gas/testsuite/gas/ppc/spe_ambiguous.s |   21 +
 include/ChangeLog                     |   10 +
 include/opcode/ppc.h                  |   14 +
 opcodes/ChangeLog                     |   60 ++
 opcodes/ppc-dis.c                     |   83 ++-
 opcodes/ppc-opc.c                     | 1088 ++++++++++++++++++++++++++++++++-
 23 files changed, 3825 insertions(+), 13 deletions(-)
 create mode 100644 gas/testsuite/gas/ppc/efs.d
 create mode 100644 gas/testsuite/gas/ppc/efs.s
 create mode 100644 gas/testsuite/gas/ppc/efs2.d
 create mode 100644 gas/testsuite/gas/ppc/efs2.s
 create mode 100644 gas/testsuite/gas/ppc/spe.d
 create mode 100644 gas/testsuite/gas/ppc/spe.s
 create mode 100644 gas/testsuite/gas/ppc/spe2-checks.d
 create mode 100644 gas/testsuite/gas/ppc/spe2-checks.l
 create mode 100644 gas/testsuite/gas/ppc/spe2-checks.s
 create mode 100644 gas/testsuite/gas/ppc/spe2.d
 create mode 100644 gas/testsuite/gas/ppc/spe2.s
 create mode 100644 gas/testsuite/gas/ppc/spe_ambiguous.d
 create mode 100644 gas/testsuite/gas/ppc/spe_ambiguous.s

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 1f44c82..4201168 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,27 @@
+2017-08-23  Alexander Fedotov <alexander.fedotov@nxp.com>
+	    Edmar Wienskoski <edmar.wienskoski@nxp.com
+
+	* config/tc-ppc.c:
+	(md_parse_option): Add mspe2 switch.
+	(md_show_usage): Document -mspe2.
+	(ppc_setup_opcodes): Handle spe2_opcodes.
+	* doc/as.texinfo: Document -mspe2.
+	* doc/c-ppc.texi: Likewise.
+	* testsuite/gas/ppc/efs.d: New file.
+	* testsuite/gas/ppc/efs.s: Likewise.
+	* testsuite/gas/ppc/efs2.d: Likewise.
+	* testsuite/gas/ppc/efs2.s: Likewise.
+	* testsuite/gas/ppc/ppc.exp: Run new tests.
+	* testsuite/gas/ppc/spe.d: New file.
+	* testsuite/gas/ppc/spe.s: Likewise.
+	* testsuite/gas/ppc/spe2-checks.d: Likewise.
+	* testsuite/gas/ppc/spe2-checks.l: Likewise.
+	* testsuite/gas/ppc/spe2-checks.s: Likewise.
+	* testsuite/gas/ppc/spe2.d: Likewise.
+	* testsuite/gas/ppc/spe2.s: Likewise.
+	* testsuite/gas/ppc/spe_ambiguous.d: Likewise.
+	* testsuite/gas/ppc/spe_ambiguous.s: Likewise.
+
 2017-08-21  Alexander Fedotov <alexander.fedotov@nxp.com>
 	    Edmar Wienskoski <edmar.wienskoski@nxp.com
 
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index e8dfbc4..d20fac6 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -1258,6 +1258,10 @@ md_parse_option (int c, const char *arg)
 	  msolaris = FALSE;
 	  ppc_comment_chars = ppc_eabi_comment_chars;
 	}
+      else if (strcmp (arg, "spe2") == 0)
+	{
+	  ppc_cpu |= PPC_OPCODE_SPE2;
+	}
 #endif
       else
 	{
@@ -1353,6 +1357,7 @@ PowerPC options:\n\
 -me5500,                generate code for Freescale e5500 core complex\n\
 -me6500,                generate code for Freescale e6500 core complex\n\
 -mspe                   generate code for Motorola SPE instructions\n\
+-mspe2                  generate code for Freescale SPE2 instructions\n\
 -mvle                   generate code for Freescale VLE instructions\n\
 -mtitan                 generate code for AppliedMicro Titan core complex\n\
 -mregnames              Allow symbolic names for registers\n\
@@ -1688,6 +1693,54 @@ ppc_setup_opcodes (void)
 	}
     }
 
+  /* SPE2 instructions */
+  if ((ppc_cpu & PPC_OPCODE_SPE2) == PPC_OPCODE_SPE2)
+    {
+      op_end = spe2_opcodes + spe2_num_opcodes;
+      for (op = spe2_opcodes; op < op_end; op++)
+	{
+	  if (ENABLE_CHECKING)
+	    {
+	      if (op != spe2_opcodes)
+		{
+		unsigned old_seg, new_seg;
+
+		old_seg = VLE_OP (op[-1].opcode, op[-1].mask);
+		old_seg = VLE_OP_TO_SEG (old_seg);
+		new_seg = VLE_OP (op[0].opcode, op[0].mask);
+		new_seg = VLE_OP_TO_SEG (new_seg);
+
+		/* The major opcodes had better be sorted.  Code in the
+		    disassembler assumes the insns are sorted according to
+		    major opcode.  */
+		if (new_seg < old_seg)
+		  {
+		  as_bad (_("major opcode is not sorted for %s"), op->name);
+		  bad_insn = TRUE;
+		  }
+		}
+
+	      bad_insn |= insn_validate (op);
+	    }
+
+	  if ((ppc_cpu & op->flags) != 0 && !(ppc_cpu & op->deprecated))
+	    {
+	      const char *retval;
+
+	      retval = hash_insert (ppc_hash, op->name, (void *) op);
+	      if (retval != NULL)
+		{
+		  as_bad (_("duplicate instruction %s"),
+			  op->name);
+		  bad_insn = TRUE;
+		}
+	    }
+	}
+
+      for (op = spe2_opcodes; op < op_end; op++)
+	hash_insert (ppc_hash, op->name, (void *) op);
+    }
+
   /* Insert the macros into a hash table.  */
   ppc_macro_hash = hash_new ();
 
diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo
index 8aa83ef..8c125fd 100644
--- a/gas/doc/as.texinfo
+++ b/gas/doc/as.texinfo
@@ -487,7 +487,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
     @b{-m620}|@b{-me500}|@b{-e500x2}|@b{-me500mc}|@b{-me500mc64}|@b{-me5500}|@b{-me6500}|@b{-mppc64bridge}|
     @b{-mbooke}|@b{-mpower4}|@b{-mpwr4}|@b{-mpower5}|@b{-mpwr5}|@b{-mpwr5x}|@b{-mpower6}|@b{-mpwr6}|
     @b{-mpower7}|@b{-mpwr7}|@b{-mpower8}|@b{-mpwr8}|@b{-mpower9}|@b{-mpwr9}@b{-ma2}|
-    @b{-mcell}|@b{-mspe}|@b{-mtitan}|@b{-me300}|@b{-mcom}]
+    @b{-mcell}|@b{-mspe}|@b{-mspe2}|@b{-mtitan}|@b{-me300}|@b{-mcom}]
    [@b{-many}] [@b{-maltivec}|@b{-mvsx}|@b{-mhtm}|@b{-mvle}]
    [@b{-mregnames}|@b{-mno-regnames}]
    [@b{-mrelocatable}|@b{-mrelocatable-lib}|@b{-K PIC}] [@b{-memb}]
diff --git a/gas/doc/c-ppc.texi b/gas/doc/c-ppc.texi
index d94b418..7e66625 100644
--- a/gas/doc/c-ppc.texi
+++ b/gas/doc/c-ppc.texi
@@ -99,6 +99,9 @@ Generate code for Freescale e6500 core complex.
 @item -mspe
 Generate code for Motorola SPE instructions.
 
+@item -mspe2
+Generate code for Freescale SPE2 instructions.
+
 @item -mtitan
 Generate code for AppliedMicro Titan core complex.
 
diff --git a/gas/testsuite/gas/ppc/efs.d b/gas/testsuite/gas/ppc/efs.d
new file mode 100644
index 0000000..8d365a4
--- /dev/null
+++ b/gas/testsuite/gas/ppc/efs.d
@@ -0,0 +1,25 @@
+#as: -mvle
+#objdump: -d -Mefs -Mvle -Mefs2
+#name: Validate EFS instructions
+
+.*: +file format elf.*-powerpc.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	10 00 12 d1 	efscfsi r0,r2
+   4:	10 00 12 d5 	efsctsi r0,r2
+   8:	10 00 12 f1 	efdcfsi r0,r2
+   c:	10 00 12 f5 	efdctsi r0,r2
+  10:	10 01 12 c2 	efsmadd r0,r1,r2
+  14:	10 01 12 c3 	efsmsub r0,r1,r2
+  18:	10 01 12 ca 	efsnmadd r0,r1,r2
+  1c:	10 01 12 cb 	efsnmsub r0,r1,r2
+  20:	10 01 12 e2 	efdmadd r0,r1,r2
+  24:	10 01 12 e3 	efdmsub r0,r1,r2
+  28:	10 01 12 ea 	efdnmadd r0,r1,r2
+  2c:	10 01 12 eb 	efdnmsub r0,r1,r2
+  30:	10 01 12 f0 	efdcfuid r0,r2
+  34:	10 01 12 f1 	efdcfsid r0,r2
+  38:	10 01 12 f8 	efdctuidz r0,r2
+  3c:	10 01 12 fa 	efdctsidz r0,r2
\ No newline at end of file
diff --git a/gas/testsuite/gas/ppc/efs.s b/gas/testsuite/gas/ppc/efs.s
new file mode 100644
index 0000000..7afcfd8
--- /dev/null
+++ b/gas/testsuite/gas/ppc/efs.s
@@ -0,0 +1,29 @@
+# PA EFS 1.0 and 1.1 instructions
+# CMPE200GCC-62
+	.section ".text"
+
+	.equ	rA,1
+	.equ	rB,2
+	.equ	rD,0
+
+;# EFS 1.0 instructions in accordance with EFP2_rev.1.4_spec
+	efscfsi   rD, rB
+	efsctsi   rD, rB
+	efdcfsi   rD, rB
+	efdctsi   rD, rB
+
+;# EFS 1.1 instructions in accordance with EFP2_rev.1.4_spec
+	efsmadd   rD, rA, rB
+	efsmsub   rD, rA, rB
+	efsnmadd  rD, rA, rB
+	efsnmsub  rD, rA, rB
+	efdmadd   rD, rA, rB
+	efdmsub   rD, rA, rB
+	efdnmadd  rD, rA, rB
+	efdnmsub  rD, rA, rB
+
+;# moved EFS opcodes in accordance with EFP2_rev.1.4_spec
+	efdcfuid  rD, rB
+	efdcfsid  rD, rB
+	efdctuidz rD, rB
+	efdctsidz rD, rB
diff --git a/gas/testsuite/gas/ppc/efs2.d b/gas/testsuite/gas/ppc/efs2.d
new file mode 100644
index 0000000..bfdfb14
--- /dev/null
+++ b/gas/testsuite/gas/ppc/efs2.d
@@ -0,0 +1,19 @@
+#as: -mvle
+#objdump: -d -Mvle -Mefs2
+#name: Validate EFS2 instructions
+
+.*: +file format elf.*-powerpc.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	10 01 12 b0 	efsmax  r0,r1,r2
+   4:	10 01 12 b1 	efsmin  r0,r1,r2
+   8:	10 01 12 b8 	efdmax  r0,r1,r2
+   c:	10 01 12 b9 	efdmin  r0,r1,r2
+  10:	10 01 02 c7 	efssqrt r0,r1
+  14:	10 04 12 d1 	efscfh  r0,r2
+  18:	10 04 12 d5 	efscth  r0,r2
+  1c:	10 01 02 e7 	efdsqrt r0,r1
+  20:	10 04 12 f1 	efdcfh  r0,r2
+  24:	10 04 12 f5 	efdcth  r0,r2
\ No newline at end of file
diff --git a/gas/testsuite/gas/ppc/efs2.s b/gas/testsuite/gas/ppc/efs2.s
new file mode 100644
index 0000000..5d35e98
--- /dev/null
+++ b/gas/testsuite/gas/ppc/efs2.s
@@ -0,0 +1,18 @@
+# PA EFS2 instructions in accordance with EFP2_rev.1.4_spec
+# CMPE200GCC-62
+	.section ".text"
+
+	.equ	rA,1
+	.equ	rB,2
+	.equ	rD,0
+
+	efsmax     rD, rA, rB
+	efsmin     rD, rA, rB
+	efdmax     rD, rA, rB
+	efdmin     rD, rA, rB
+	efssqrt    rD, rA
+	efscfh     rD, rB
+	efscth     rD, rB
+	efdsqrt    rD, rA
+	efdcfh     rD, rB
+	efdcth     rD, rB
diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp
index bbe64be..cdcd8a1 100644
--- a/gas/testsuite/gas/ppc/ppc.exp
+++ b/gas/testsuite/gas/ppc/ppc.exp
@@ -65,6 +65,14 @@ if { [istarget powerpc*-*-*] } then {
 	    setup_xfail "*-*-*"
 	    run_dump_test "lsp"
 	    run_dump_test "lsp-checks"
+	    run_dump_test "efs"
+	    run_dump_test "efs2"
+	    run_dump_test "spe2"
+	    run_dump_test "spe2-checks"
+	    run_dump_test "spe"
+
+	    setup_xfail "*-*-*"
+	    run_dump_test "spe_ambiguous"
 	}
     }
 
diff --git a/gas/testsuite/gas/ppc/spe.d b/gas/testsuite/gas/ppc/spe.d
new file mode 100644
index 0000000..7391028
--- /dev/null
+++ b/gas/testsuite/gas/ppc/spe.d
@@ -0,0 +1,267 @@
+#as: -a32 -mvle
+#objdump: -d -Mspe
+#name: Validate SPE instructions
+
+.*: +file format elf.*-powerpc.*
+
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	10 01 12 00 	evaddw  r0,r1,r2
+   4:	10 1f 12 02 	evaddiw r0,r2,31
+   8:	10 01 12 04 	evsubfw r0,r1,r2
+   c:	10 01 12 04 	evsubfw r0,r1,r2
+  10:	10 1f 12 06 	evsubifw r0,31,r2
+  14:	10 1f 12 06 	evsubifw r0,31,r2
+  18:	10 01 02 08 	evabs   r0,r1
+  1c:	10 01 02 09 	evneg   r0,r1
+  20:	10 01 02 0a 	evextsb r0,r1
+  24:	10 01 02 0b 	evextsh r0,r1
+  28:	10 01 02 0c 	evrndw  r0,r1
+  2c:	10 01 02 0d 	evcntlzw r0,r1
+  30:	10 01 02 0e 	evcntlsw r0,r1
+  34:	10 01 12 0f 	brinc   r0,r1,r2
+  38:	10 01 12 11 	evand   r0,r1,r2
+  3c:	10 01 12 12 	evandc  r0,r1,r2
+  40:	10 01 12 16 	evxor   r0,r1,r2
+  44:	10 01 0a 17 	evmr    r0,r1
+  48:	10 01 12 17 	evor    r0,r1,r2
+  4c:	10 01 12 18 	evnor   r0,r1,r2
+  50:	10 01 0a 18 	evnor   r0,r1,r1
+  54:	10 01 12 19 	eveqv   r0,r1,r2
+  58:	10 01 12 1b 	evorc   r0,r1,r2
+  5c:	10 01 12 1e 	evnand  r0,r1,r2
+  60:	10 01 12 20 	evsrwu  r0,r1,r2
+  64:	10 01 12 21 	evsrws  r0,r1,r2
+  68:	10 01 fa 22 	evsrwiu r0,r1,31
+  6c:	10 01 fa 23 	evsrwis r0,r1,31
+  70:	10 01 12 24 	evslw   r0,r1,r2
+  74:	10 01 fa 26 	evslwi  r0,r1,31
+  78:	10 01 12 28 	evrlw   r0,r1,r2
+  7c:	10 10 02 29 	evsplati r0,-16
+  80:	10 01 fa 2a 	evrlwi  r0,r1,31
+  84:	10 10 02 2b 	evsplatfi r0,-16
+  88:	10 01 12 2c 	evmergehi r0,r1,r2
+  8c:	10 01 12 2d 	evmergelo r0,r1,r2
+  90:	10 01 12 2e 	evmergehilo r0,r1,r2
+  94:	10 01 12 2f 	evmergelohi r0,r1,r2
+  98:	10 01 12 30 	evcmpgtu cr0,r1,r2
+  9c:	10 01 12 31 	evcmpgts cr0,r1,r2
+  a0:	10 01 12 32 	evcmpltu cr0,r1,r2
+  a4:	10 01 12 33 	evcmplts cr0,r1,r2
+  a8:	10 01 12 34 	evcmpeq cr0,r1,r2
+  ac:	10 01 12 78 	evsel   r0,r1,r2,cr0
+  b0:	10 01 12 80 	evfsadd r0,r1,r2
+  b4:	10 01 12 81 	evfssub r0,r1,r2
+  b8:	10 01 12 82 	evfsmadd r0,r1,r2
+  bc:	10 01 12 83 	evfsmsub r0,r1,r2
+  c0:	10 01 02 84 	evfsabs r0,r1
+  c4:	10 01 02 85 	evfsnabs r0,r1
+  c8:	10 01 02 86 	evfsneg r0,r1
+  cc:	10 01 12 88 	evfsmul r0,r1,r2
+  d0:	10 01 12 89 	evfsdiv r0,r1,r2
+  d4:	10 01 12 8a 	evfsnmadd r0,r1,r2
+  d8:	10 01 12 8b 	evfsnmsub r0,r1,r2
+  dc:	10 01 12 8c 	evfscmpgt cr0,r1,r2
+  e0:	10 01 12 8d 	evfscmplt cr0,r1,r2
+  e4:	10 01 12 8e 	evfscmpeq cr0,r1,r2
+  e8:	10 00 12 90 	evfscfui r0,r2
+  ec:	10 00 12 91 	evfscfsi r0,r2
+  f0:	10 00 12 92 	evfscfuf r0,r2
+  f4:	10 00 12 93 	evfscfsf r0,r2
+  f8:	10 00 12 94 	evfsctui r0,r2
+  fc:	10 00 12 95 	evfsctsi r0,r2
+ 100:	10 00 12 96 	evfsctuf r0,r2
+ 104:	10 00 12 97 	evfsctsf r0,r2
+ 108:	10 00 12 98 	evfsctuiz r0,r2
+ 10c:	10 00 12 9a 	evfsctsiz r0,r2
+ 110:	10 01 12 9c 	evfststgt cr0,r1,r2
+ 114:	10 01 12 9d 	evfststlt cr0,r1,r2
+ 118:	10 01 12 9e 	evfststeq cr0,r1,r2
+ 11c:	10 01 13 00 	evlddx  r0,r1,r2
+ 120:	10 01 0b 01 	evldd   r0,8\(r1\)
+ 124:	10 01 13 02 	evldwx  r0,r1,r2
+ 128:	10 01 0b 03 	evldw   r0,8\(r1\)
+ 12c:	10 01 13 04 	evldhx  r0,r1,r2
+ 130:	10 01 0b 05 	evldh   r0,8\(r1\)
+ 134:	10 01 13 08 	evlhhesplatx r0,r1,r2
+ 138:	10 01 0b 09 	evlhhesplat r0,2\(r1\)
+ 13c:	10 01 13 0c 	evlhhousplatx r0,r1,r2
+ 140:	10 01 0b 0d 	evlhhousplat r0,2\(r1\)
+ 144:	10 01 13 0e 	evlhhossplatx r0,r1,r2
+ 148:	10 01 0b 0f 	evlhhossplat r0,2\(r1\)
+ 14c:	10 01 13 10 	evlwhex r0,r1,r2
+ 150:	10 01 0b 11 	evlwhe  r0,4\(r1\)
+ 154:	10 01 13 14 	evlwhoux r0,r1,r2
+ 158:	10 01 0b 15 	evlwhou r0,4\(r1\)
+ 15c:	10 01 13 16 	evlwhosx r0,r1,r2
+ 160:	10 01 0b 17 	evlwhos r0,4\(r1\)
+ 164:	10 01 13 18 	evlwwsplatx r0,r1,r2
+ 168:	10 01 0b 19 	evlwwsplat r0,4\(r1\)
+ 16c:	10 01 13 1c 	evlwhsplatx r0,r1,r2
+ 170:	10 01 0b 1d 	evlwhsplat r0,4\(r1\)
+ 174:	10 01 13 20 	evstddx r0,r1,r2
+ 178:	10 01 0b 21 	evstdd  r0,8\(r1\)
+ 17c:	10 01 13 22 	evstdwx r0,r1,r2
+ 180:	10 01 0b 23 	evstdw  r0,8\(r1\)
+ 184:	10 01 13 24 	evstdhx r0,r1,r2
+ 188:	10 01 0b 25 	evstdh  r0,8\(r1\)
+ 18c:	10 01 13 30 	evstwhex r0,r1,r2
+ 190:	10 01 0b 31 	evstwhe r0,4\(r1\)
+ 194:	10 01 13 34 	evstwhox r0,r1,r2
+ 198:	10 01 0b 35 	evstwho r0,4\(r1\)
+ 19c:	10 01 13 38 	evstwwex r0,r1,r2
+ 1a0:	10 01 0b 39 	evstwwe r0,4\(r1\)
+ 1a4:	10 01 13 3c 	evstwwox r0,r1,r2
+ 1a8:	10 01 0b 3d 	evstwwo r0,4\(r1\)
+ 1ac:	10 01 14 03 	evmhessf r0,r1,r2
+ 1b0:	10 01 14 07 	evmhossf r0,r1,r2
+ 1b4:	10 01 14 08 	evmheumi r0,r1,r2
+ 1b8:	10 01 14 09 	evmhesmi r0,r1,r2
+ 1bc:	10 01 14 0b 	evmhesmf r0,r1,r2
+ 1c0:	10 01 14 0c 	evmhoumi r0,r1,r2
+ 1c4:	10 01 14 0d 	evmhosmi r0,r1,r2
+ 1c8:	10 01 14 0f 	evmhosmf r0,r1,r2
+ 1cc:	10 01 14 23 	evmhessfa r0,r1,r2
+ 1d0:	10 01 14 27 	evmhossfa r0,r1,r2
+ 1d4:	10 01 14 28 	evmheumia r0,r1,r2
+ 1d8:	10 01 14 29 	evmhesmia r0,r1,r2
+ 1dc:	10 01 14 2b 	evmhesmfa r0,r1,r2
+ 1e0:	10 01 14 2c 	evmhoumia r0,r1,r2
+ 1e4:	10 01 14 2d 	evmhosmia r0,r1,r2
+ 1e8:	10 01 14 2f 	evmhosmfa r0,r1,r2
+ 1ec:	10 01 14 43 	evmwlssf r0,r1,r2
+ 1f0:	10 01 14 47 	evmwhssf r0,r1,r2
+ 1f4:	10 01 14 48 	evmwlumi r0,r1,r2
+ 1f8:	10 01 14 4b 	evmwlsmf r0,r1,r2
+ 1fc:	10 01 14 4c 	evmwhumi r0,r1,r2
+ 200:	10 01 14 4d 	evmwhsmi r0,r1,r2
+ 204:	10 01 14 4f 	evmwhsmf r0,r1,r2
+ 208:	10 01 14 53 	evmwssf r0,r1,r2
+ 20c:	10 01 14 58 	evmwumi r0,r1,r2
+ 210:	10 01 14 59 	evmwsmi r0,r1,r2
+ 214:	10 01 14 5b 	evmwsmf r0,r1,r2
+ 218:	10 01 14 63 	evmwlssfa r0,r1,r2
+ 21c:	10 01 14 67 	evmwhssfa r0,r1,r2
+ 220:	10 01 14 68 	evmwlumia r0,r1,r2
+ 224:	10 01 14 6b 	evmwlsmfa r0,r1,r2
+ 228:	10 01 14 6c 	evmwhumia r0,r1,r2
+ 22c:	10 01 14 6d 	evmwhsmia r0,r1,r2
+ 230:	10 01 14 6f 	evmwhsmfa r0,r1,r2
+ 234:	10 01 14 73 	evmwssfa r0,r1,r2
+ 238:	10 01 14 78 	evmwumia r0,r1,r2
+ 23c:	10 01 14 79 	evmwsmia r0,r1,r2
+ 240:	10 01 14 7b 	evmwsmfa r0,r1,r2
+ 244:	10 01 04 c0 	evaddusiaaw r0,r1
+ 248:	10 01 04 c1 	evaddssiaaw r0,r1
+ 24c:	10 01 04 c2 	evsubfusiaaw r0,r1
+ 250:	10 01 04 c3 	evsubfssiaaw r0,r1
+ 254:	10 01 04 c4 	evmra   r0,r1
+ 258:	10 01 14 c6 	evdivws r0,r1,r2
+ 25c:	10 01 14 c7 	evdivwu r0,r1,r2
+ 260:	10 01 04 c8 	evaddumiaaw r0,r1
+ 264:	10 01 04 c9 	evaddsmiaaw r0,r1
+ 268:	10 01 04 ca 	evsubfumiaaw r0,r1
+ 26c:	10 01 04 cb 	evsubfsmiaaw r0,r1
+ 270:	10 01 15 00 	evmheusiaaw r0,r1,r2
+ 274:	10 01 15 01 	evmhessiaaw r0,r1,r2
+ 278:	10 01 15 03 	evmhessfaaw r0,r1,r2
+ 27c:	10 01 15 04 	evmhousiaaw r0,r1,r2
+ 280:	10 01 15 05 	evmhossiaaw r0,r1,r2
+ 284:	10 01 15 07 	evmhossfaaw r0,r1,r2
+ 288:	10 01 15 08 	evmheumiaaw r0,r1,r2
+ 28c:	10 01 15 09 	evmhesmiaaw r0,r1,r2
+ 290:	10 01 15 0b 	evmhesmfaaw r0,r1,r2
+ 294:	10 01 15 0c 	evmhoumiaaw r0,r1,r2
+ 298:	10 01 15 0d 	evmhosmiaaw r0,r1,r2
+ 29c:	10 01 15 0f 	evmhosmfaaw r0,r1,r2
+ 2a0:	10 01 15 28 	evmhegumiaa r0,r1,r2
+ 2a4:	10 01 15 29 	evmhegsmiaa r0,r1,r2
+ 2a8:	10 01 15 2b 	evmhegsmfaa r0,r1,r2
+ 2ac:	10 01 15 2c 	evmhogumiaa r0,r1,r2
+ 2b0:	10 01 15 2d 	evmhogsmiaa r0,r1,r2
+ 2b4:	10 01 15 2f 	evmhogsmfaa r0,r1,r2
+ 2b8:	10 01 15 40 	evmwlusiaaw r0,r1,r2
+ 2bc:	10 01 15 41 	evmwlssiaaw r0,r1,r2
+ 2c0:	10 01 15 43 	evmwlssfaaw r0,r1,r2
+ 2c4:	10 01 15 44 	evmwhusiaa r0,r1,r2
+ 2c8:	10 01 15 45 	evmwhssmaa r0,r1,r2
+ 2cc:	10 01 15 47 	evmwhssfaa r0,r1,r2
+ 2d0:	10 01 15 48 	evmwlumiaaw r0,r1,r2
+ 2d4:	10 01 15 49 	evmwlsmiaaw r0,r1,r2
+ 2d8:	10 01 15 4b 	evmwlsmfaaw r0,r1,r2
+ 2dc:	10 01 15 4c 	evmwhumiaa r0,r1,r2
+ 2e0:	10 01 15 4d 	evmwhsmiaa r0,r1,r2
+ 2e4:	10 01 15 4f 	evmwhsmfaa r0,r1,r2
+ 2e8:	10 01 15 53 	evmwssfaa r0,r1,r2
+ 2ec:	10 01 15 58 	evmwumiaa r0,r1,r2
+ 2f0:	10 01 15 59 	evmwsmiaa r0,r1,r2
+ 2f4:	10 01 15 5b 	evmwsmfaa r0,r1,r2
+ 2f8:	10 01 15 64 	evmwhgumiaa r0,r1,r2
+ 2fc:	10 01 15 65 	evmwhgsmiaa r0,r1,r2
+ 300:	10 01 15 67 	evmwhgssfaa r0,r1,r2
+ 304:	10 01 15 6f 	evmwhgsmfaa r0,r1,r2
+ 308:	10 01 15 80 	evmheusianw r0,r1,r2
+ 30c:	10 01 15 81 	evmhessianw r0,r1,r2
+ 310:	10 01 15 83 	evmhessfanw r0,r1,r2
+ 314:	10 01 15 84 	evmhousianw r0,r1,r2
+ 318:	10 01 15 85 	evmhossianw r0,r1,r2
+ 31c:	10 01 15 87 	evmhossfanw r0,r1,r2
+ 320:	10 01 15 88 	evmheumianw r0,r1,r2
+ 324:	10 01 15 89 	evmhesmianw r0,r1,r2
+ 328:	10 01 15 8b 	evmhesmfanw r0,r1,r2
+ 32c:	10 01 15 8c 	evmhoumianw r0,r1,r2
+ 330:	10 01 15 8d 	evmhosmianw r0,r1,r2
+ 334:	10 01 15 8f 	evmhosmfanw r0,r1,r2
+ 338:	10 01 15 a8 	evmhegumian r0,r1,r2
+ 33c:	10 01 15 a9 	evmhegsmian r0,r1,r2
+ 340:	10 01 15 ab 	evmhegsmfan r0,r1,r2
+ 344:	10 01 15 ac 	evmhogumian r0,r1,r2
+ 348:	10 01 15 ad 	evmhogsmian r0,r1,r2
+ 34c:	10 01 15 af 	evmhogsmfan r0,r1,r2
+ 350:	10 01 15 c0 	evmwlusianw r0,r1,r2
+ 354:	10 01 15 c1 	evmwlssianw r0,r1,r2
+ 358:	10 01 15 c3 	evmwlssfanw r0,r1,r2
+ 35c:	10 01 15 c4 	evmwhusian r0,r1,r2
+ 360:	10 01 15 c5 	evmwhssian r0,r1,r2
+ 364:	10 01 15 c7 	evmwhssfan r0,r1,r2
+ 368:	10 01 15 c8 	evmwlumianw r0,r1,r2
+ 36c:	10 01 15 c9 	evmwlsmianw r0,r1,r2
+ 370:	10 01 15 cb 	evmwlsmfanw r0,r1,r2
+ 374:	10 01 15 cc 	evmwhumian r0,r1,r2
+ 378:	10 01 15 cd 	evmwhsmian r0,r1,r2
+ 37c:	10 01 15 cf 	evmwhsmfan r0,r1,r2
+ 380:	10 01 15 d3 	evmwssfan r0,r1,r2
+ 384:	10 01 15 d8 	evmwumian r0,r1,r2
+ 388:	10 01 15 d9 	evmwsmian r0,r1,r2
+ 38c:	10 01 15 db 	evmwsmfan r0,r1,r2
+ 390:	10 01 15 e4 	evmwhgumian r0,r1,r2
+ 394:	10 01 15 e5 	evmwhgsmian r0,r1,r2
+ 398:	10 01 15 e7 	evmwhgssfan r0,r1,r2
+ 39c:	10 01 15 ef 	evmwhgsmfan r0,r1,r2
+ 3a0:	7c 01 16 3e 	evlddepx r0,r1,r2
+ 3a4:	7c 01 17 3e 	evstddepx r0,r1,r2
+ 3a8:	10 01 12 c0 	efsadd  r0,r1,r2
+ 3ac:	10 01 12 c1 	efssub  r0,r1,r2
+ 3b0:	10 01 02 c4 	efsabs  r0,r1
+ 3b4:	10 01 02 c5 	efsnabs r0,r1
+ 3b8:	10 01 02 c6 	efsneg  r0,r1
+ 3bc:	10 01 12 c8 	efsmul  r0,r1,r2
+ 3c0:	10 01 12 c9 	efsdiv  r0,r1,r2
+ 3c4:	10 01 12 cc 	efscmpgt cr0,r1,r2
+ 3c8:	10 01 12 cd 	efscmplt cr0,r1,r2
+ 3cc:	10 01 12 ce 	efscmpeq cr0,r1,r2
+ 3d0:	10 00 12 d0 	efscfui r0,r2
+ 3d4:	10 00 12 d1 	efscfsi r0,r2
+ 3d8:	10 00 12 d2 	efscfuf r0,r2
+ 3dc:	10 00 12 d3 	efscfsf r0,r2
+ 3e0:	10 00 12 d4 	efsctui r0,r2
+ 3e4:	10 00 12 d5 	efsctsi r0,r2
+ 3e8:	10 00 12 d6 	efsctuf r0,r2
+ 3ec:	10 00 12 d7 	efsctsf r0,r2
+ 3f0:	10 00 12 d8 	efsctuiz r0,r2
+ 3f4:	10 00 12 da 	efsctsiz r0,r2
+ 3f8:	10 01 12 dc 	efststgt cr0,r1,r2
+ 3fc:	10 01 12 dd 	efststlt cr0,r1,r2
+ 400:	10 01 12 de 	efststeq cr0,r1,r2
diff --git a/gas/testsuite/gas/ppc/spe.s b/gas/testsuite/gas/ppc/spe.s
new file mode 100644
index 0000000..5be3386
--- /dev/null
+++ b/gas/testsuite/gas/ppc/spe.s
@@ -0,0 +1,274 @@
+# PA SPE instructions
+	.section ".text"
+	.equ	rA,1
+	.equ	rB,2
+	.equ	rD,0
+	.equ	rS,0
+	.equ	rT,0
+	.equ	UIMM, 31
+	.equ	UIMM_2, 2
+	.equ	UIMM_4, 4
+	.equ	UIMM_8, 8
+	.equ	SIMM, -16
+	.equ	crD, 0
+	.equ	crS, 0
+
+	evaddw          rS, rA, rB
+	evaddiw         rS, rB, UIMM
+	evsubfw         rS, rA, rB
+	evsubw          rS, rB, rA
+	evsubifw        rS, UIMM, rB
+	evsubiw         rS, rB, UIMM
+	evabs           rS, rA
+	evneg           rS, rA
+	evextsb         rS, rA
+	evextsh         rS, rA
+	evrndw          rS, rA
+	evcntlzw        rS, rA
+	evcntlsw        rS, rA
+	brinc           rS, rA, rB
+	evand           rS, rA, rB
+	evandc          rS, rA, rB
+	evxor           rS, rA, rB
+	evmr            rS, rA
+	evor            rS, rA, rB
+	evnor           rS, rA, rB
+	evnot           rS, rA
+	eveqv           rS, rA, rB
+	evorc           rS, rA, rB
+	evnand          rS, rA, rB
+	evsrwu          rS, rA, rB
+	evsrws          rS, rA, rB
+	evsrwiu         rS, rA, UIMM
+	evsrwis         rS, rA, UIMM
+	evslw           rS, rA, rB
+	evslwi          rS, rA, UIMM
+	evrlw           rS, rA, rB
+	evsplati        rS, SIMM
+	evrlwi          rS, rA, UIMM
+	evsplatfi       rS, SIMM
+	evmergehi       rS, rA, rB
+	evmergelo       rS, rA, rB
+	evmergehilo     rS, rA, rB
+	evmergelohi     rS, rA, rB
+	evcmpgtu        crD, rA, rB
+	evcmpgts        crD, rA, rB
+	evcmpltu        crD, rA, rB
+	evcmplts        crD, rA, rB
+	evcmpeq         crD, rA, rB
+	evsel           rS, rA, rB, crS
+	evfsadd         rS, rA, rB
+	evfssub         rS, rA, rB
+	evfsmadd        rS, rA, rB
+	evfsmsub        rS, rA, rB
+	evfsabs         rS, rA
+	evfsnabs        rS, rA
+	evfsneg         rS, rA
+	evfsmul         rS, rA, rB
+	evfsdiv         rS, rA, rB
+	evfsnmadd       rS, rA, rB
+	evfsnmsub       rS, rA, rB
+	evfscmpgt       crD, rA, rB
+	evfscmplt       crD, rA, rB
+	evfscmpeq       crD, rA, rB
+	evfscfui        rS, rB
+	evfscfsi        rS, rB
+	evfscfuf        rS, rB
+	evfscfsf        rS, rB
+	evfsctui        rS, rB
+	evfsctsi        rS, rB
+	evfsctuf        rS, rB
+	evfsctsf        rS, rB
+	evfsctuiz       rS, rB
+	evfsctsiz       rS, rB
+	evfststgt       crD, rA, rB
+	evfststlt       crD, rA, rB
+	evfststeq       crD, rA, rB
+	evlddx          rS, rA, rB
+	evldd           rS, UIMM_8(rA)
+	evldwx          rS, rA, rB
+	evldw           rS, UIMM_8(rA)
+	evldhx          rS, rA, rB
+	evldh           rS, UIMM_8(rA)
+	evlhhesplatx    rS, rA, rB
+	evlhhesplat     rS, UIMM_2(rA)
+	evlhhousplatx   rS, rA, rB
+	evlhhousplat    rS, UIMM_2(rA)
+	evlhhossplatx   rS, rA, rB
+	evlhhossplat    rS, UIMM_2(rA)
+	evlwhex         rS, rA, rB
+	evlwhe          rS, UIMM_4(rA)
+	evlwhoux        rS, rA, rB
+	evlwhou         rS, UIMM_4(rA)
+	evlwhosx        rS, rA, rB
+	evlwhos         rS, UIMM_4(rA)
+	evlwwsplatx     rS, rA, rB
+	evlwwsplat      rS, UIMM_4(rA)
+	evlwhsplatx     rS, rA, rB
+	evlwhsplat      rS, UIMM_4(rA)
+	evstddx         rS, rA, rB
+	evstdd          rS, UIMM_8(rA)
+	evstdwx         rS, rA, rB
+	evstdw          rS, UIMM_8(rA)
+	evstdhx         rS, rA, rB
+	evstdh          rS, UIMM_8(rA)
+	evstwhex        rS, rA, rB
+	evstwhe         rS, UIMM_4(rA)
+	evstwhox        rS, rA, rB
+	evstwho         rS, UIMM_4(rA)
+	evstwwex        rS, rA, rB
+	evstwwe         rS, UIMM_4(rA)
+	evstwwox        rS, rA, rB
+	evstwwo         rS, UIMM_4(rA)
+	evmhessf        rS, rA, rB
+	evmhossf        rS, rA, rB
+	evmheumi        rS, rA, rB
+	evmhesmi        rS, rA, rB
+	evmhesmf        rS, rA, rB
+	evmhoumi        rS, rA, rB
+	evmhosmi        rS, rA, rB
+	evmhosmf        rS, rA, rB
+	evmhessfa       rS, rA, rB
+	evmhossfa       rS, rA, rB
+	evmheumia       rS, rA, rB
+	evmhesmia       rS, rA, rB
+	evmhesmfa       rS, rA, rB
+	evmhoumia       rS, rA, rB
+	evmhosmia       rS, rA, rB
+	evmhosmfa       rS, rA, rB
+	evmwlssf        rD, rA, rB
+	evmwhssf        rS, rA, rB
+	evmwlumi        rS, rA, rB
+	evmwlsmf        rD, rA, rB
+	evmwhumi        rS, rA, rB
+	evmwhsmi        rS, rA, rB
+	evmwhsmf        rS, rA, rB
+	evmwssf         rS, rA, rB
+	evmwumi         rS, rA, rB
+	evmwsmi         rS, rA, rB
+	evmwsmf         rS, rA, rB
+	evmwlssfa       rD, rA, rB
+	evmwhssfa       rS, rA, rB
+	evmwlumia       rS, rA, rB
+	evmwlsmfa       rD, rA, rB
+	evmwhumia       rS, rA, rB
+	evmwhsmia       rS, rA, rB
+	evmwhsmfa       rS, rA, rB
+	evmwssfa        rS, rA, rB
+	evmwumia        rS, rA, rB
+	evmwsmia        rS, rA, rB
+	evmwsmfa        rS, rA, rB
+	evaddusiaaw     rS, rA
+	evaddssiaaw     rS, rA
+	evsubfusiaaw    rS, rA
+	evsubfssiaaw    rS, rA
+	evmra           rS, rA
+	evdivws         rS, rA, rB
+	evdivwu         rS, rA, rB
+	evaddumiaaw     rS, rA
+	evaddsmiaaw     rS, rA
+	evsubfumiaaw    rS, rA
+	evsubfsmiaaw    rS, rA
+	evmheusiaaw     rS, rA, rB
+	evmhessiaaw     rS, rA, rB
+	evmhessfaaw     rS, rA, rB
+	evmhousiaaw     rS, rA, rB
+	evmhossiaaw     rS, rA, rB
+	evmhossfaaw     rS, rA, rB
+	evmheumiaaw     rS, rA, rB
+	evmhesmiaaw     rS, rA, rB
+	evmhesmfaaw     rS, rA, rB
+	evmhoumiaaw     rS, rA, rB
+	evmhosmiaaw     rS, rA, rB
+	evmhosmfaaw     rS, rA, rB
+	evmhegumiaa     rS, rA, rB
+	evmhegsmiaa     rS, rA, rB
+	evmhegsmfaa     rS, rA, rB
+	evmhogumiaa     rS, rA, rB
+	evmhogsmiaa     rS, rA, rB
+	evmhogsmfaa     rS, rA, rB
+	evmwlusiaaw     rS, rA, rB
+	evmwlssiaaw     rS, rA, rB
+	evmwlssfaaw     rD, rA, rB
+	evmwhusiaa      rD, rA, rB
+	evmwhssmaa      rD, rA, rB
+	evmwhssfaa      rD, rA, rB
+	evmwlumiaaw     rS, rA, rB
+	evmwlsmiaaw     rS, rA, rB
+	evmwlsmfaaw     rD, rA, rB
+	evmwhumiaa      rD, rA, rB
+	evmwhsmiaa      rD, rA, rB
+	evmwhsmfaa      rD, rA, rB
+	evmwssfaa       rS, rA, rB
+	evmwumiaa       rS, rA, rB
+	evmwsmiaa       rS, rA, rB
+	evmwsmfaa       rS, rA, rB
+	evmwhgumiaa     rD, rA, rB
+	evmwhgsmiaa     rD, rA, rB
+	evmwhgssfaa     rD, rA, rB
+	evmwhgsmfaa     rD, rA, rB
+	evmheusianw     rS, rA, rB
+	evmhessianw     rS, rA, rB
+	evmhessfanw     rS, rA, rB
+	evmhousianw     rS, rA, rB
+	evmhossianw     rS, rA, rB
+	evmhossfanw     rS, rA, rB
+	evmheumianw     rS, rA, rB
+	evmhesmianw     rS, rA, rB
+	evmhesmfanw     rS, rA, rB
+	evmhoumianw     rS, rA, rB
+	evmhosmianw     rS, rA, rB
+	evmhosmfanw     rS, rA, rB
+	evmhegumian     rS, rA, rB
+	evmhegsmian     rS, rA, rB
+	evmhegsmfan     rS, rA, rB
+	evmhogumian     rS, rA, rB
+	evmhogsmian     rS, rA, rB
+	evmhogsmfan     rS, rA, rB
+	evmwlusianw     rS, rA, rB
+	evmwlssianw     rS, rA, rB
+	evmwlssfanw     rD, rA, rB
+	evmwhusian      rD, rA, rB
+	evmwhssian      rD, rA, rB
+	evmwhssfan      rD, rA, rB
+	evmwlumianw     rS, rA, rB
+	evmwlsmianw     rS, rA, rB
+	evmwlsmfanw     rD, rA, rB
+	evmwhumian      rD, rA, rB
+	evmwhsmian      rD, rA, rB
+	evmwhsmfan      rD, rA, rB
+	evmwssfan       rS, rA, rB
+	evmwumian       rS, rA, rB
+	evmwsmian       rS, rA, rB
+	evmwsmfan       rS, rA, rB
+	evmwhgumian     rD, rA, rB
+	evmwhgsmian     rD, rA, rB
+	evmwhgssfan     rD, rA, rB
+	evmwhgsmfan     rD, rA, rB
+	evlddepx        rT, rA, rB
+	evstddepx       rT, rA, rB
+
+;#SPE mapped by macro
+	evsadd          rS, rA, rB
+	evssub          rS, rA, rB
+	evsabs          rS, rA
+	evsnabs         rS, rA
+	evsneg          rS, rA
+	evsmul          rS, rA, rB
+	evsdiv          rS, rA, rB
+	evscmpgt        crD, rA, rB
+	evsgmplt        crD, rA, rB
+	evsgmpeq        crD, rA, rB
+	evscfui         rS, rB
+	evscfsi         rS, rB
+	evscfuf         rS, rB
+	evscfsf         rS, rB
+	evsctui         rS, rB
+	evsctsi         rS, rB
+	evsctuf         rS, rB
+	evsctsf         rS, rB
+	evsctuiz        rS, rB
+	evsctsiz        rS, rB
+	evststgt        crD, rA, rB
+	evststlt        crD, rA, rB
+	evststeq        crD, rA, rB
diff --git a/gas/testsuite/gas/ppc/spe2-checks.d b/gas/testsuite/gas/ppc/spe2-checks.d
new file mode 100644
index 0000000..6af4102
--- /dev/null
+++ b/gas/testsuite/gas/ppc/spe2-checks.d
@@ -0,0 +1,4 @@
+#as: -a32 -mvle -mspe2
+#name: Test SPE2 operands checks
+#error-output: spe2-checks.l
+
diff --git a/gas/testsuite/gas/ppc/spe2-checks.l b/gas/testsuite/gas/ppc/spe2-checks.l
new file mode 100644
index 0000000..276c650
--- /dev/null
+++ b/gas/testsuite/gas/ppc/spe2-checks.l
@@ -0,0 +1,73 @@
+[^:]*: Assembler messages:
+.*:29: Error: operand out of range \(32 is not between 0 and 31\)
+.*:30: Error: operand out of range \(32 is not between 0 and 31\)
+.*:31: Error: operand out of range \(32 is not between 0 and 31\)
+.*:32: Error: operand out of range \(32 is not between 0 and 31\)
+.*:33: Error: operand out of range \(8 is not between 0 and 7\)
+.*:34: Error: operand out of range \(8 is not between 0 and 7\)
+.*:35: Error: operand out of range \(4 is not between 0 and 3\)
+.*:36: Error: operand out of range \(8 is not between 0 and 7\)
+.*:37: Error: operand out of range \(4 is not between 0 and 3\)
+.*:38: Error: operand out of range \(16 is not between 0 and 15\)
+.*:39: Error: operand out of range \(16 is not between 0 and 15\)
+.*:40: Error: operand out of range \(16 is not between 0 and 15\)
+.*:41: Error: operand out of range \(4 is not between 0 and 3\)
+.*:42: Error: operand out of range \(4 is not between 0 and 3\)
+.*:43: Error: invalid offset
+.*:44: Error: operand out of range \(8 is not between 0 and 7\)
+.*:44: Error: invalid offset
+.*:45: Error: UIMM values >7 are illegal
+.*:46: Error: UIMM values >7 are illegal
+.*:47: Error: UIMM values >7 are illegal
+.*:48: Error: UIMM values >7 are illegal
+.*:49: Error: UIMM values >15 are illegal
+.*:50: Error: UIMM values >15 are illegal
+.*:51: Error: UIMM values >15 are illegal
+.*:52: Error: UIMM values >15 are illegal
+.*:53: Error: operand out of range \(8 is not between 0 and 7\)
+.*:54: Error: operand out of range \(8 is not between 0 and 7\)
+.*:55: Error: operand out of range \(8 is not between 0 and 7\)
+.*:56: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:57: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:58: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:59: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:60: Error: operand out of range \(32 is not between 0 and 31\)
+.*:61: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:62: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:63: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:64: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:65: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:66: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:67: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:68: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:69: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:70: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:71: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:72: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:73: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:74: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:75: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:76: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:77: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:78: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:79: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:80: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:81: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:82: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:83: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:84: Error: UIMM = 00000 is illegal
+.*:85: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:86: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:87: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:88: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:89: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:90: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:91: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:92: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:93: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:94: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:95: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:96: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:97: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:98: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:99: Error: operand out of domain \(1 is not a multiple of 2\)
\ No newline at end of file
diff --git a/gas/testsuite/gas/ppc/spe2-checks.s b/gas/testsuite/gas/ppc/spe2-checks.s
new file mode 100644
index 0000000..b1fd776
--- /dev/null
+++ b/gas/testsuite/gas/ppc/spe2-checks.s
@@ -0,0 +1,99 @@
+# PA SPE2 instructions
+	.section ".text"
+
+	.equ	rA,1
+	.equ	rB,2
+	.equ	rD,0
+	.equ	rS,0
+	.equ	UIMM_ILL, 32
+	.equ	UIMM_1_ZERO, 0
+	.equ	UIMM_1_ILL, 32
+	.equ	UIMM_2_ILL, 1
+	.equ	UIMM_4_ILL, 3
+	.equ	UIMM_8_ILL, 7
+	.equ	UIMM_GT7,   8
+	.equ	UIMM_GT15,  16
+	.equ	nnn_ILL,     8
+	.equ	bbb_ILL,     8
+	.equ	dd,          3
+	.equ	dd_ILL,      4
+	.equ	Ddd,         7
+	.equ	Ddd_ILL,     8
+	.equ	hh,          3
+	.equ	hh_ILL,      4
+	.equ	mask_ILL,   16
+	.equ	offset_ILL0, 0
+	.equ	offset_ILL,  8
+
+
+	evaddib               rD, rB, UIMM_ILL
+	evaddih               rD, rB, UIMM_ILL
+	evsubifh              rD, UIMM_ILL, rB
+	evsubifb              rD, UIMM_ILL, rB
+	evinsb                rD, rA, Ddd, bbb_ILL
+	evxtrb                rD, rA, Ddd, bbb_ILL
+	evsplath              rD, rA, hh_ILL
+	evsplatb              rD, rA, bbb_ILL
+	evinsh                rD, rA, dd_ILL, hh
+	evclrbe               rD, rA, mask_ILL
+	evclrbo               rD, rA, mask_ILL
+	evclrh                rD, rA, mask_ILL
+	evxtrh                rD, rA, dd_ILL, hh
+	evxtrh                rD, rA, dd, hh_ILL
+	evxtrd                rD, rA, rB, offset_ILL0
+	evxtrd                rD, rA, rB, offset_ILL
+	evsrbiu               rD, rA, UIMM_GT7
+	evsrbis               rD, rA, UIMM_GT7
+	evslbi                rD, rA, UIMM_GT7
+	evrlbi                rD, rA, UIMM_GT7
+	evsrhiu               rD, rA, UIMM_GT15
+	evsrhis               rD, rA, UIMM_GT15
+	evslhi                rD, rA, UIMM_GT15
+	evrlhi                rD, rA, UIMM_GT15
+	evsroiu               rD, rA, nnn_ILL
+	evsrois               rD, rA, nnn_ILL
+	evsloi                rD, rA, nnn_ILL
+	evldb                 rD, UIMM_8_ILL (rA)
+	evlhhsplath           rD, UIMM_2_ILL (rA)
+	evlwbsplatw           rD, UIMM_4_ILL (rA)
+	evlwhsplatw           rD, UIMM_4_ILL (rA)
+	evlbbsplatb           rD, UIMM_1_ILL (rA)
+	evstdb                rS, UIMM_8_ILL (rA)
+	evlwbe                rD, UIMM_4_ILL (rA)
+	evlwbou               rD, UIMM_4_ILL (rA)
+	evlwbos               rD, UIMM_4_ILL (rA)
+	evstwbe               rS, UIMM_4_ILL (rA)
+	evstwbo               rS, UIMM_4_ILL (rA)
+	evstwb                rS, UIMM_4_ILL (rA)
+	evsthb                rS, UIMM_2_ILL (rA)
+	evlddu                rD, UIMM_8_ILL (rA)
+	evldwu                rD, UIMM_8_ILL (rA)
+	evldhu                rD, UIMM_8_ILL (rA)
+	evldbu                rD, UIMM_8_ILL (rA)
+	evlhhesplatu          rD, UIMM_2_ILL (rA)
+	evlhhsplathu          rD, UIMM_2_ILL (rA)
+	evlhhousplatu         rD, UIMM_2_ILL (rA)
+	evlhhossplatu         rD, UIMM_2_ILL (rA)
+	evlwheu               rD, UIMM_4_ILL (rA)
+	evlwbsplatwu          rD, UIMM_4_ILL (rA)
+	evlwhouu              rD, UIMM_4_ILL (rA)
+	evlwhosu              rD, UIMM_4_ILL (rA)
+	evlwwsplatu           rD, UIMM_4_ILL (rA)
+	evlwhsplatwu          rD, UIMM_4_ILL (rA)
+	evlwhsplatu           rD, UIMM_4_ILL (rA)
+	evlbbsplatbu          rD, UIMM_1_ZERO (rA)
+	evstddu               rS, UIMM_8_ILL (rA)
+	evstdwu               rS, UIMM_8_ILL (rA)
+	evstdhu               rS, UIMM_8_ILL (rA)
+	evstdbu               rS, UIMM_8_ILL (rA)
+	evlwbeu               rD, UIMM_4_ILL (rA)
+	evlwbouu              rD, UIMM_4_ILL (rA)
+	evlwbosu              rD, UIMM_4_ILL (rA)
+	evstwheu              rS, UIMM_4_ILL (rA)
+	evstwbeu              rS, UIMM_4_ILL (rA)
+	evstwhou              rS, UIMM_4_ILL (rA)
+	evstwbou              rS, UIMM_4_ILL (rA)
+	evstwweu              rS, UIMM_4_ILL (rA)
+	evstwbu               rS, UIMM_4_ILL (rA)
+	evstwwou              rS, UIMM_4_ILL (rA)
+	evsthbu               rS, UIMM_2_ILL (rA)
diff --git a/gas/testsuite/gas/ppc/spe2.d b/gas/testsuite/gas/ppc/spe2.d
new file mode 100644
index 0000000..e4c45de
--- /dev/null
+++ b/gas/testsuite/gas/ppc/spe2.d
@@ -0,0 +1,815 @@
+#as: -a32 -mvle -mspe2
+#objdump: -d -Mspe2 -Mefs2
+#name: Validate SPE2 instructions
+
+.*: +file format elf.*-powerpc.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	10 01 10 80 	evdotpwcssi r0,r1,r2
+   4:	10 01 10 81 	evdotpwcsmi r0,r1,r2
+   8:	10 01 10 82 	evdotpwcssfr r0,r1,r2
+   c:	10 01 10 83 	evdotpwcssf r0,r1,r2
+  10:	10 01 10 88 	evdotpwgasmf r0,r1,r2
+  14:	10 01 10 89 	evdotpwxgasmf r0,r1,r2
+  18:	10 01 10 8a 	evdotpwgasmfr r0,r1,r2
+  1c:	10 01 10 8b 	evdotpwxgasmfr r0,r1,r2
+  20:	10 01 10 8c 	evdotpwgssmf r0,r1,r2
+  24:	10 01 10 8d 	evdotpwxgssmf r0,r1,r2
+  28:	10 01 10 8e 	evdotpwgssmfr r0,r1,r2
+  2c:	10 01 10 8f 	evdotpwxgssmfr r0,r1,r2
+  30:	10 01 10 90 	evdotpwcssiaaw3 r0,r1,r2
+  34:	10 01 10 91 	evdotpwcsmiaaw3 r0,r1,r2
+  38:	10 01 10 92 	evdotpwcssfraaw3 r0,r1,r2
+  3c:	10 01 10 93 	evdotpwcssfaaw3 r0,r1,r2
+  40:	10 01 10 98 	evdotpwgasmfaa3 r0,r1,r2
+  44:	10 01 10 99 	evdotpwxgasmfaa3 r0,r1,r2
+  48:	10 01 10 9a 	evdotpwgasmfraa3 r0,r1,r2
+  4c:	10 01 10 9b 	evdotpwxgasmfraa3 r0,r1,r2
+  50:	10 01 10 9c 	evdotpwgssmfaa3 r0,r1,r2
+  54:	10 01 10 9d 	evdotpwxgssmfaa3 r0,r1,r2
+  58:	10 01 10 9e 	evdotpwgssmfraa3 r0,r1,r2
+  5c:	10 01 10 9f 	evdotpwxgssmfraa3 r0,r1,r2
+  60:	10 01 10 a0 	evdotpwcssia r0,r1,r2
+  64:	10 01 10 a1 	evdotpwcsmia r0,r1,r2
+  68:	10 01 10 a2 	evdotpwcssfra r0,r1,r2
+  6c:	10 01 10 a3 	evdotpwcssfa r0,r1,r2
+  70:	10 01 10 a8 	evdotpwgasmfa r0,r1,r2
+  74:	10 01 10 a9 	evdotpwxgasmfa r0,r1,r2
+  78:	10 01 10 aa 	evdotpwgasmfra r0,r1,r2
+  7c:	10 01 10 ab 	evdotpwxgasmfra r0,r1,r2
+  80:	10 01 10 ac 	evdotpwgssmfa r0,r1,r2
+  84:	10 01 10 ad 	evdotpwxgssmfa r0,r1,r2
+  88:	10 01 10 ae 	evdotpwgssmfra r0,r1,r2
+  8c:	10 01 10 af 	evdotpwxgssmfra r0,r1,r2
+  90:	10 01 10 b0 	evdotpwcssiaaw r0,r1,r2
+  94:	10 01 10 b1 	evdotpwcsmiaaw r0,r1,r2
+  98:	10 01 10 b2 	evdotpwcssfraaw r0,r1,r2
+  9c:	10 01 10 b3 	evdotpwcssfaaw r0,r1,r2
+  a0:	10 01 10 b8 	evdotpwgasmfaa r0,r1,r2
+  a4:	10 01 10 b9 	evdotpwxgasmfaa r0,r1,r2
+  a8:	10 01 10 ba 	evdotpwgasmfraa r0,r1,r2
+  ac:	10 01 10 bb 	evdotpwxgasmfraa r0,r1,r2
+  b0:	10 01 10 bc 	evdotpwgssmfaa r0,r1,r2
+  b4:	10 01 10 bd 	evdotpwxgssmfaa r0,r1,r2
+  b8:	10 01 10 be 	evdotpwgssmfraa r0,r1,r2
+  bc:	10 01 10 bf 	evdotpwxgssmfraa r0,r1,r2
+  c0:	10 01 11 00 	evdotphihcssi r0,r1,r2
+  c4:	10 01 11 01 	evdotplohcssi r0,r1,r2
+  c8:	10 01 11 02 	evdotphihcssf r0,r1,r2
+  cc:	10 01 11 03 	evdotplohcssf r0,r1,r2
+  d0:	10 01 11 08 	evdotphihcsmi r0,r1,r2
+  d4:	10 01 11 09 	evdotplohcsmi r0,r1,r2
+  d8:	10 01 11 0a 	evdotphihcssfr r0,r1,r2
+  dc:	10 01 11 0b 	evdotplohcssfr r0,r1,r2
+  e0:	10 01 11 10 	evdotphihcssiaaw3 r0,r1,r2
+  e4:	10 01 11 11 	evdotplohcssiaaw3 r0,r1,r2
+  e8:	10 01 11 12 	evdotphihcssfaaw3 r0,r1,r2
+  ec:	10 01 11 13 	evdotplohcssfaaw3 r0,r1,r2
+  f0:	10 01 11 18 	evdotphihcsmiaaw3 r0,r1,r2
+  f4:	10 01 11 19 	evdotplohcsmiaaw3 r0,r1,r2
+  f8:	10 01 11 1a 	evdotphihcssfraaw3 r0,r1,r2
+  fc:	10 01 11 1b 	evdotplohcssfraaw3 r0,r1,r2
+ 100:	10 01 11 20 	evdotphihcssia r0,r1,r2
+ 104:	10 01 11 21 	evdotplohcssia r0,r1,r2
+ 108:	10 01 11 22 	evdotphihcssfa r0,r1,r2
+ 10c:	10 01 11 23 	evdotplohcssfa r0,r1,r2
+ 110:	10 01 11 28 	evdotphihcsmia r0,r1,r2
+ 114:	10 01 11 29 	evdotplohcsmia r0,r1,r2
+ 118:	10 01 11 2a 	evdotphihcssfra r0,r1,r2
+ 11c:	10 01 11 2b 	evdotplohcssfra r0,r1,r2
+ 120:	10 01 11 30 	evdotphihcssiaaw r0,r1,r2
+ 124:	10 01 11 31 	evdotplohcssiaaw r0,r1,r2
+ 128:	10 01 11 32 	evdotphihcssfaaw r0,r1,r2
+ 12c:	10 01 11 33 	evdotplohcssfaaw r0,r1,r2
+ 130:	10 01 11 38 	evdotphihcsmiaaw r0,r1,r2
+ 134:	10 01 11 39 	evdotplohcsmiaaw r0,r1,r2
+ 138:	10 01 11 3a 	evdotphihcssfraaw r0,r1,r2
+ 13c:	10 01 11 3b 	evdotplohcssfraaw r0,r1,r2
+ 140:	10 01 11 40 	evdotphausi r0,r1,r2
+ 144:	10 01 11 41 	evdotphassi r0,r1,r2
+ 148:	10 01 11 42 	evdotphasusi r0,r1,r2
+ 14c:	10 01 11 43 	evdotphassf r0,r1,r2
+ 150:	10 01 11 47 	evdotphsssf r0,r1,r2
+ 154:	10 01 11 48 	evdotphaumi r0,r1,r2
+ 158:	10 01 11 49 	evdotphasmi r0,r1,r2
+ 15c:	10 01 11 4a 	evdotphasumi r0,r1,r2
+ 160:	10 01 11 4b 	evdotphassfr r0,r1,r2
+ 164:	10 01 11 4d 	evdotphssmi r0,r1,r2
+ 168:	10 01 11 4f 	evdotphsssfr r0,r1,r2
+ 16c:	10 01 11 50 	evdotphausiaaw3 r0,r1,r2
+ 170:	10 01 11 51 	evdotphassiaaw3 r0,r1,r2
+ 174:	10 01 11 52 	evdotphasusiaaw3 r0,r1,r2
+ 178:	10 01 11 53 	evdotphassfaaw3 r0,r1,r2
+ 17c:	10 01 11 55 	evdotphsssiaaw3 r0,r1,r2
+ 180:	10 01 11 57 	evdotphsssfaaw3 r0,r1,r2
+ 184:	10 01 11 58 	evdotphaumiaaw3 r0,r1,r2
+ 188:	10 01 11 59 	evdotphasmiaaw3 r0,r1,r2
+ 18c:	10 01 11 5a 	evdotphasumiaaw3 r0,r1,r2
+ 190:	10 01 11 5b 	evdotphassfraaw3 r0,r1,r2
+ 194:	10 01 11 5d 	evdotphssmiaaw3 r0,r1,r2
+ 198:	10 01 11 5f 	evdotphsssfraaw3 r0,r1,r2
+ 19c:	10 01 11 60 	evdotphausia r0,r1,r2
+ 1a0:	10 01 11 61 	evdotphassia r0,r1,r2
+ 1a4:	10 01 11 62 	evdotphasusia r0,r1,r2
+ 1a8:	10 01 11 63 	evdotphassfa r0,r1,r2
+ 1ac:	10 01 11 67 	evdotphsssfa r0,r1,r2
+ 1b0:	10 01 11 68 	evdotphaumia r0,r1,r2
+ 1b4:	10 01 11 69 	evdotphasmia r0,r1,r2
+ 1b8:	10 01 11 6a 	evdotphasumia r0,r1,r2
+ 1bc:	10 01 11 6b 	evdotphassfra r0,r1,r2
+ 1c0:	10 01 11 6d 	evdotphssmia r0,r1,r2
+ 1c4:	10 01 11 6f 	evdotphsssfra r0,r1,r2
+ 1c8:	10 01 11 70 	evdotphausiaaw r0,r1,r2
+ 1cc:	10 01 11 71 	evdotphassiaaw r0,r1,r2
+ 1d0:	10 01 11 72 	evdotphasusiaaw r0,r1,r2
+ 1d4:	10 01 11 73 	evdotphassfaaw r0,r1,r2
+ 1d8:	10 01 11 75 	evdotphsssiaaw r0,r1,r2
+ 1dc:	10 01 11 77 	evdotphsssfaaw r0,r1,r2
+ 1e0:	10 01 11 78 	evdotphaumiaaw r0,r1,r2
+ 1e4:	10 01 11 79 	evdotphasmiaaw r0,r1,r2
+ 1e8:	10 01 11 7a 	evdotphasumiaaw r0,r1,r2
+ 1ec:	10 01 11 7b 	evdotphassfraaw r0,r1,r2
+ 1f0:	10 01 11 7d 	evdotphssmiaaw r0,r1,r2
+ 1f4:	10 01 11 7f 	evdotphsssfraaw r0,r1,r2
+ 1f8:	10 01 11 80 	evdotp4hgaumi r0,r1,r2
+ 1fc:	10 01 11 81 	evdotp4hgasmi r0,r1,r2
+ 200:	10 01 11 82 	evdotp4hgasumi r0,r1,r2
+ 204:	10 01 11 83 	evdotp4hgasmf r0,r1,r2
+ 208:	10 01 11 84 	evdotp4hgssmi r0,r1,r2
+ 20c:	10 01 11 85 	evdotp4hgssmf r0,r1,r2
+ 210:	10 01 11 86 	evdotp4hxgasmi r0,r1,r2
+ 214:	10 01 11 87 	evdotp4hxgasmf r0,r1,r2
+ 218:	10 01 11 88 	evdotpbaumi r0,r1,r2
+ 21c:	10 01 11 89 	evdotpbasmi r0,r1,r2
+ 220:	10 01 11 8a 	evdotpbasumi r0,r1,r2
+ 224:	10 01 11 8e 	evdotp4hxgssmi r0,r1,r2
+ 228:	10 01 11 8f 	evdotp4hxgssmf r0,r1,r2
+ 22c:	10 01 11 90 	evdotp4hgaumiaa3 r0,r1,r2
+ 230:	10 01 11 91 	evdotp4hgasmiaa3 r0,r1,r2
+ 234:	10 01 11 92 	evdotp4hgasumiaa3 r0,r1,r2
+ 238:	10 01 11 93 	evdotp4hgasmfaa3 r0,r1,r2
+ 23c:	10 01 11 94 	evdotp4hgssmiaa3 r0,r1,r2
+ 240:	10 01 11 95 	evdotp4hgssmfaa3 r0,r1,r2
+ 244:	10 01 11 96 	evdotp4hxgasmiaa3 r0,r1,r2
+ 248:	10 01 11 97 	evdotp4hxgasmfaa3 r0,r1,r2
+ 24c:	10 01 11 98 	evdotpbaumiaaw3 r0,r1,r2
+ 250:	10 01 11 99 	evdotpbasmiaaw3 r0,r1,r2
+ 254:	10 01 11 9a 	evdotpbasumiaaw3 r0,r1,r2
+ 258:	10 01 11 9e 	evdotp4hxgssmiaa3 r0,r1,r2
+ 25c:	10 01 11 9f 	evdotp4hxgssmfaa3 r0,r1,r2
+ 260:	10 01 11 a0 	evdotp4hgaumia r0,r1,r2
+ 264:	10 01 11 a1 	evdotp4hgasmia r0,r1,r2
+ 268:	10 01 11 a2 	evdotp4hgasumia r0,r1,r2
+ 26c:	10 01 11 a3 	evdotp4hgasmfa r0,r1,r2
+ 270:	10 01 11 a4 	evdotp4hgssmia r0,r1,r2
+ 274:	10 01 11 a5 	evdotp4hgssmfa r0,r1,r2
+ 278:	10 01 11 a6 	evdotp4hxgasmia r0,r1,r2
+ 27c:	10 01 11 a7 	evdotp4hxgasmfa r0,r1,r2
+ 280:	10 01 11 a8 	evdotpbaumia r0,r1,r2
+ 284:	10 01 11 a9 	evdotpbasmia r0,r1,r2
+ 288:	10 01 11 aa 	evdotpbasumia r0,r1,r2
+ 28c:	10 01 11 ae 	evdotp4hxgssmia r0,r1,r2
+ 290:	10 01 11 af 	evdotp4hxgssmfa r0,r1,r2
+ 294:	10 01 11 b0 	evdotp4hgaumiaa r0,r1,r2
+ 298:	10 01 11 b1 	evdotp4hgasmiaa r0,r1,r2
+ 29c:	10 01 11 b2 	evdotp4hgasumiaa r0,r1,r2
+ 2a0:	10 01 11 b3 	evdotp4hgasmfaa r0,r1,r2
+ 2a4:	10 01 11 b4 	evdotp4hgssmiaa r0,r1,r2
+ 2a8:	10 01 11 b5 	evdotp4hgssmfaa r0,r1,r2
+ 2ac:	10 01 11 b6 	evdotp4hxgasmiaa r0,r1,r2
+ 2b0:	10 01 11 b7 	evdotp4hxgasmfaa r0,r1,r2
+ 2b4:	10 01 11 b8 	evdotpbaumiaaw r0,r1,r2
+ 2b8:	10 01 11 b9 	evdotpbasmiaaw r0,r1,r2
+ 2bc:	10 01 11 ba 	evdotpbasumiaaw r0,r1,r2
+ 2c0:	10 01 11 be 	evdotp4hxgssmiaa r0,r1,r2
+ 2c4:	10 01 11 bf 	evdotp4hxgssmfaa r0,r1,r2
+ 2c8:	10 01 11 c0 	evdotpwausi r0,r1,r2
+ 2cc:	10 01 11 c1 	evdotpwassi r0,r1,r2
+ 2d0:	10 01 11 c2 	evdotpwasusi r0,r1,r2
+ 2d4:	10 01 11 c8 	evdotpwaumi r0,r1,r2
+ 2d8:	10 01 11 c9 	evdotpwasmi r0,r1,r2
+ 2dc:	10 01 11 ca 	evdotpwasumi r0,r1,r2
+ 2e0:	10 01 11 cd 	evdotpwssmi r0,r1,r2
+ 2e4:	10 01 11 d0 	evdotpwausiaa3 r0,r1,r2
+ 2e8:	10 01 11 d1 	evdotpwassiaa3 r0,r1,r2
+ 2ec:	10 01 11 d2 	evdotpwasusiaa3 r0,r1,r2
+ 2f0:	10 01 11 d5 	evdotpwsssiaa3 r0,r1,r2
+ 2f4:	10 01 11 d8 	evdotpwaumiaa3 r0,r1,r2
+ 2f8:	10 01 11 d9 	evdotpwasmiaa3 r0,r1,r2
+ 2fc:	10 01 11 da 	evdotpwasumiaa3 r0,r1,r2
+ 300:	10 01 11 dd 	evdotpwssmiaa3 r0,r1,r2
+ 304:	10 01 11 e0 	evdotpwausia r0,r1,r2
+ 308:	10 01 11 e1 	evdotpwassia r0,r1,r2
+ 30c:	10 01 11 e2 	evdotpwasusia r0,r1,r2
+ 310:	10 01 11 e8 	evdotpwaumia r0,r1,r2
+ 314:	10 01 11 e9 	evdotpwasmia r0,r1,r2
+ 318:	10 01 11 ea 	evdotpwasumia r0,r1,r2
+ 31c:	10 01 11 ed 	evdotpwssmia r0,r1,r2
+ 320:	10 01 11 f0 	evdotpwausiaa r0,r1,r2
+ 324:	10 01 11 f1 	evdotpwassiaa r0,r1,r2
+ 328:	10 01 11 f2 	evdotpwasusiaa r0,r1,r2
+ 32c:	10 01 11 f5 	evdotpwsssiaa r0,r1,r2
+ 330:	10 01 11 f8 	evdotpwaumiaa r0,r1,r2
+ 334:	10 01 11 f9 	evdotpwasmiaa r0,r1,r2
+ 338:	10 01 11 fa 	evdotpwasumiaa r0,r1,r2
+ 33c:	10 01 11 fd 	evdotpwssmiaa r0,r1,r2
+ 340:	10 1f 12 03 	evaddib r0,r2,31
+ 344:	10 1f 12 01 	evaddih r0,r2,31
+ 348:	10 1f 12 05 	evsubifh r0,31,r2
+ 34c:	10 1f 12 07 	evsubifb r0,31,r2
+ 350:	10 01 12 08 	evabsb  r0,r1
+ 354:	10 01 22 08 	evabsh  r0,r1
+ 358:	10 01 32 08 	evabsd  r0,r1
+ 35c:	10 01 42 08 	evabss  r0,r1
+ 360:	10 01 52 08 	evabsbs r0,r1
+ 364:	10 01 62 08 	evabshs r0,r1
+ 368:	10 01 72 08 	evabsds r0,r1
+ 36c:	10 01 0a 09 	evnegwo r0,r1
+ 370:	10 01 12 09 	evnegb  r0,r1
+ 374:	10 01 1a 09 	evnegbo r0,r1
+ 378:	10 01 22 09 	evnegh  r0,r1
+ 37c:	10 01 2a 09 	evnegho r0,r1
+ 380:	10 01 32 09 	evnegd  r0,r1
+ 384:	10 01 42 09 	evnegs  r0,r1
+ 388:	10 01 4a 09 	evnegwos r0,r1
+ 38c:	10 01 52 09 	evnegbs r0,r1
+ 390:	10 01 5a 09 	evnegbos r0,r1
+ 394:	10 01 62 09 	evneghs r0,r1
+ 398:	10 01 6a 09 	evneghos r0,r1
+ 39c:	10 01 72 09 	evnegds r0,r1
+ 3a0:	10 01 0a 0a 	evextzb r0,r1
+ 3a4:	10 01 22 0a 	evextsbh r0,r1
+ 3a8:	10 01 32 0b 	evextsw r0,r1
+ 3ac:	10 01 02 0c 	evrndwh r0,r1
+ 3b0:	10 01 22 0c 	evrndhb r0,r1
+ 3b4:	10 01 32 0c 	evrnddw r0,r1
+ 3b8:	10 01 42 0c 	evrndwhus r0,r1
+ 3bc:	10 01 4a 0c 	evrndwhss r0,r1
+ 3c0:	10 01 62 0c 	evrndhbus r0,r1
+ 3c4:	10 01 6a 0c 	evrndhbss r0,r1
+ 3c8:	10 01 72 0c 	evrnddwus r0,r1
+ 3cc:	10 01 7a 0c 	evrnddwss r0,r1
+ 3d0:	10 01 82 0c 	evrndwnh r0,r1
+ 3d4:	10 01 a2 0c 	evrndhnb r0,r1
+ 3d8:	10 01 b2 0c 	evrnddnw r0,r1
+ 3dc:	10 01 c2 0c 	evrndwnhus r0,r1
+ 3e0:	10 01 ca 0c 	evrndwnhss r0,r1
+ 3e4:	10 01 e2 0c 	evrndhnbus r0,r1
+ 3e8:	10 01 ea 0c 	evrndhnbss r0,r1
+ 3ec:	10 01 f2 0c 	evrnddnwus r0,r1
+ 3f0:	10 01 fa 0c 	evrnddnwss r0,r1
+ 3f4:	10 01 22 0d 	evcntlzh r0,r1
+ 3f8:	10 01 22 0e 	evcntlsh r0,r1
+ 3fc:	10 01 d2 0e 	evpopcntb r0,r1
+ 400:	10 01 12 10 	circinc r0,r1,r2
+ 404:	10 01 02 1c 	evunpkhibui r0,r1
+ 408:	10 01 0a 1c 	evunpkhibsi r0,r1
+ 40c:	10 01 12 1c 	evunpkhihui r0,r1
+ 410:	10 01 1a 1c 	evunpkhihsi r0,r1
+ 414:	10 01 22 1c 	evunpklobui r0,r1
+ 418:	10 01 2a 1c 	evunpklobsi r0,r1
+ 41c:	10 01 32 1c 	evunpklohui r0,r1
+ 420:	10 01 3a 1c 	evunpklohsi r0,r1
+ 424:	10 01 42 1c 	evunpklohf r0,r1
+ 428:	10 01 4a 1c 	evunpkhihf r0,r1
+ 42c:	10 01 62 1c 	evunpklowgsf r0,r1
+ 430:	10 01 6a 1c 	evunpkhiwgsf r0,r1
+ 434:	10 01 82 1c 	evsatsduw r0,r1
+ 438:	10 01 8a 1c 	evsatsdsw r0,r1
+ 43c:	10 01 92 1c 	evsatshub r0,r1
+ 440:	10 01 9a 1c 	evsatshsb r0,r1
+ 444:	10 01 a2 1c 	evsatuwuh r0,r1
+ 448:	10 01 aa 1c 	evsatswsh r0,r1
+ 44c:	10 01 b2 1c 	evsatswuh r0,r1
+ 450:	10 01 ba 1c 	evsatuhub r0,r1
+ 454:	10 01 c2 1c 	evsatuduw r0,r1
+ 458:	10 01 ca 1c 	evsatuwsw r0,r1
+ 45c:	10 01 d2 1c 	evsatshuh r0,r1
+ 460:	10 01 da 1c 	evsatuhsh r0,r1
+ 464:	10 01 e2 1c 	evsatswuw r0,r1
+ 468:	10 01 ea 1c 	evsatswgsdf r0,r1
+ 46c:	10 01 f2 1c 	evsatsbub r0,r1
+ 470:	10 01 fa 1c 	evsatubsb r0,r1
+ 474:	10 01 02 1d 	evmaxhpuw r0,r1
+ 478:	10 01 0a 1d 	evmaxhpsw r0,r1
+ 47c:	10 01 22 1d 	evmaxbpuh r0,r1
+ 480:	10 01 2a 1d 	evmaxbpsh r0,r1
+ 484:	10 01 32 1d 	evmaxwpud r0,r1
+ 488:	10 01 3a 1d 	evmaxwpsd r0,r1
+ 48c:	10 01 42 1d 	evminhpuw r0,r1
+ 490:	10 01 4a 1d 	evminhpsw r0,r1
+ 494:	10 01 62 1d 	evminbpuh r0,r1
+ 498:	10 01 6a 1d 	evminbpsh r0,r1
+ 49c:	10 01 72 1d 	evminwpud r0,r1
+ 4a0:	10 01 7a 1d 	evminwpsd r0,r1
+ 4a4:	10 01 12 1f 	evmaxmagws r0,r1,r2
+ 4a8:	10 01 12 25 	evsl    r0,r1,r2
+ 4ac:	10 01 fa 27 	evsli   r0,r1,31
+ 4b0:	10 10 0a 29 	evsplatie r0,-16
+ 4b4:	10 10 12 29 	evsplatib r0,-16
+ 4b8:	10 10 1a 29 	evsplatibe r0,-16
+ 4bc:	10 10 22 29 	evsplatih r0,-16
+ 4c0:	10 10 2a 29 	evsplatihe r0,-16
+ 4c4:	10 10 32 29 	evsplatid r0,-16
+ 4c8:	10 10 82 29 	evsplatia r0,-16
+ 4cc:	10 10 8a 29 	evsplatiea r0,-16
+ 4d0:	10 10 92 29 	evsplatiba r0,-16
+ 4d4:	10 10 9a 29 	evsplatibea r0,-16
+ 4d8:	10 10 a2 29 	evsplatiha r0,-16
+ 4dc:	10 10 aa 29 	evsplatihea r0,-16
+ 4e0:	10 10 b2 29 	evsplatida r0,-16
+ 4e4:	10 10 0a 2b 	evsplatfio r0,-16
+ 4e8:	10 10 12 2b 	evsplatfib r0,-16
+ 4ec:	10 10 1a 2b 	evsplatfibo r0,-16
+ 4f0:	10 10 22 2b 	evsplatfih r0,-16
+ 4f4:	10 10 2a 2b 	evsplatfiho r0,-16
+ 4f8:	10 10 32 2b 	evsplatfid r0,-16
+ 4fc:	10 10 82 2b 	evsplatfia r0,-16
+ 500:	10 10 8a 2b 	evsplatfioa r0,-16
+ 504:	10 10 92 2b 	evsplatfiba r0,-16
+ 508:	10 10 9a 2b 	evsplatfiboa r0,-16
+ 50c:	10 10 a2 2b 	evsplatfiha r0,-16
+ 510:	10 10 aa 2b 	evsplatfihoa r0,-16
+ 514:	10 10 b2 2b 	evsplatfida r0,-16
+ 518:	10 21 12 30 	evcmpgtdu cr0,r1,r2
+ 51c:	10 21 12 31 	evcmpgtds cr0,r1,r2
+ 520:	10 21 12 32 	evcmpltdu cr0,r1,r2
+ 524:	10 21 12 33 	evcmpltds cr0,r1,r2
+ 528:	10 21 12 34 	evcmpeqd cr0,r1,r2
+ 52c:	10 01 12 38 	evswapbhilo r0,r1,r2
+ 530:	10 01 12 39 	evswapblohi r0,r1,r2
+ 534:	10 01 12 3a 	evswaphhilo r0,r1,r2
+ 538:	10 01 12 3b 	evswaphlohi r0,r1,r2
+ 53c:	10 01 12 3c 	evswaphe r0,r1,r2
+ 540:	10 01 12 3d 	evswaphhi r0,r1,r2
+ 544:	10 01 12 3e 	evswaphlo r0,r1,r2
+ 548:	10 01 12 3f 	evswapho r0,r1,r2
+ 54c:	10 01 fa 49 	evinsb  r0,r1,7,7
+ 550:	10 01 fa 4b 	evxtrb  r0,r1,7,7
+ 554:	10 01 62 4c 	evsplath r0,r1,3
+ 558:	10 01 f2 4c 	evsplatb r0,r1,7
+ 55c:	10 01 7a 4d 	evinsh  r0,r1,3,3
+ 560:	10 01 7a 4e 	evclrbe r0,r1,15
+ 564:	10 01 fa 4e 	evclrbo r0,r1,15
+ 568:	10 01 fa 4f 	evclrh  r0,r1,15
+ 56c:	10 01 7a 4f 	evxtrh  r0,r1,3,3
+ 570:	10 01 12 50 	evselbitm0 r0,r1,r2
+ 574:	10 01 12 51 	evselbitm1 r0,r1,r2
+ 578:	10 01 12 52 	evselbit r0,r1,r2
+ 57c:	10 01 12 54 	evperm  r0,r1,r2
+ 580:	10 01 12 55 	evperm2 r0,r1,r2
+ 584:	10 01 12 56 	evperm3 r0,r1,r2
+ 588:	10 01 12 5f 	evxtrd  r0,r1,r2,7
+ 58c:	10 01 12 60 	evsrbu  r0,r1,r2
+ 590:	10 01 12 61 	evsrbs  r0,r1,r2
+ 594:	10 01 3a 62 	evsrbiu r0,r1,7
+ 598:	10 01 3a 63 	evsrbis r0,r1,7
+ 59c:	10 01 12 64 	evslb   r0,r1,r2
+ 5a0:	10 01 12 65 	evrlb   r0,r1,r2
+ 5a4:	10 01 3a 66 	evslbi  r0,r1,7
+ 5a8:	10 01 3a 67 	evrlbi  r0,r1,7
+ 5ac:	10 01 12 68 	evsrhu  r0,r1,r2
+ 5b0:	10 01 12 69 	evsrhs  r0,r1,r2
+ 5b4:	10 01 7a 6a 	evsrhiu r0,r1,15
+ 5b8:	10 01 7a 6b 	evsrhis r0,r1,15
+ 5bc:	10 01 12 6c 	evslh   r0,r1,r2
+ 5c0:	10 01 12 6d 	evrlh   r0,r1,r2
+ 5c4:	10 01 7a 6e 	evslhi  r0,r1,15
+ 5c8:	10 01 7a 6f 	evrlhi  r0,r1,15
+ 5cc:	10 01 12 70 	evsru   r0,r1,r2
+ 5d0:	10 01 12 71 	evsrs   r0,r1,r2
+ 5d4:	10 01 fa 72 	evsriu  r0,r1,31
+ 5d8:	10 01 fa 73 	evsris  r0,r1,31
+ 5dc:	10 01 12 74 	evlvsl  r0,r1,r2
+ 5e0:	10 01 12 75 	evlvsr  r0,r1,r2
+ 5e4:	10 01 3a 77 	evsroiu r0,r1,7
+ 5e8:	10 01 7a 77 	evsrois r0,r1,7
+ 5ec:	10 01 ba 77 	evsloi  r0,r1,7
+ 5f0:	10 01 02 87 	evfssqrt r0,r1
+ 5f4:	10 04 12 91 	evfscfh r0,r2
+ 5f8:	10 04 12 95 	evfscth r0,r2
+ 5fc:	10 01 12 a0 	evfsmax r0,r1,r2
+ 600:	10 01 12 a1 	evfsmin r0,r1,r2
+ 604:	10 01 12 a2 	evfsaddsub r0,r1,r2
+ 608:	10 01 12 a3 	evfssubadd r0,r1,r2
+ 60c:	10 01 12 a4 	evfssum r0,r1,r2
+ 610:	10 01 12 a5 	evfsdiff r0,r1,r2
+ 614:	10 01 12 a6 	evfssumdiff r0,r1,r2
+ 618:	10 01 12 a7 	evfsdiffsum r0,r1,r2
+ 61c:	10 01 12 a8 	evfsaddx r0,r1,r2
+ 620:	10 01 12 a9 	evfssubx r0,r1,r2
+ 624:	10 01 12 aa 	evfsaddsubx r0,r1,r2
+ 628:	10 01 12 ab 	evfssubaddx r0,r1,r2
+ 62c:	10 01 12 ac 	evfsmulx r0,r1,r2
+ 630:	10 01 12 ae 	evfsmule r0,r1,r2
+ 634:	10 01 12 af 	evfsmulo r0,r1,r2
+ 638:	10 01 13 06 	evldbx  r0,r1,r2
+ 63c:	10 01 0b 07 	evldb   r0,8\(r1\)
+ 640:	10 01 13 0a 	evlhhsplathx r0,r1,r2
+ 644:	10 01 0b 0b 	evlhhsplath r0,2\(r1\)
+ 648:	10 01 13 12 	evlwbsplatwx r0,r1,r2
+ 64c:	10 01 0b 13 	evlwbsplatw r0,4\(r1\)
+ 650:	10 01 13 1a 	evlwhsplatwx r0,r1,r2
+ 654:	10 01 0b 1b 	evlwhsplatw r0,4\(r1\)
+ 658:	10 01 13 1e 	evlbbsplatbx r0,r1,r2
+ 65c:	10 01 0b 1f 	evlbbsplatb r0,1\(r1\)
+ 660:	10 01 13 26 	evstdbx r0,r1,r2
+ 664:	10 01 0b 27 	evstdb  r0,8\(r1\)
+ 668:	10 01 13 2a 	evlwbex r0,r1,r2
+ 66c:	10 01 0b 2b 	evlwbe  r0,4\(r1\)
+ 670:	10 01 13 2c 	evlwboux r0,r1,r2
+ 674:	10 01 0b 2d 	evlwbou r0,4\(r1\)
+ 678:	10 01 13 2e 	evlwbosx r0,r1,r2
+ 67c:	10 01 0b 2f 	evlwbos r0,4\(r1\)
+ 680:	10 01 13 32 	evstwbex r0,r1,r2
+ 684:	10 01 0b 33 	evstwbe r0,4\(r1\)
+ 688:	10 01 13 36 	evstwbox r0,r1,r2
+ 68c:	10 01 0b 37 	evstwbo r0,4\(r1\)
+ 690:	10 01 13 3a 	evstwbx r0,r1,r2
+ 694:	10 01 0b 3b 	evstwb  r0,4\(r1\)
+ 698:	10 01 13 3e 	evsthbx r0,r1,r2
+ 69c:	10 01 0b 3f 	evsthb  r0,2\(r1\)
+ 6a0:	10 01 13 40 	evlddmx r0,r1,r2
+ 6a4:	10 01 0b 41 	evlddu  r0,8\(r1\)
+ 6a8:	10 01 13 42 	evldwmx r0,r1,r2
+ 6ac:	10 01 0b 43 	evldwu  r0,8\(r1\)
+ 6b0:	10 01 13 44 	evldhmx r0,r1,r2
+ 6b4:	10 01 0b 45 	evldhu  r0,8\(r1\)
+ 6b8:	10 01 13 46 	evldbmx r0,r1,r2
+ 6bc:	10 01 0b 47 	evldbu  r0,8\(r1\)
+ 6c0:	10 01 13 48 	evlhhesplatmx r0,r1,r2
+ 6c4:	10 01 0b 49 	evlhhesplatu r0,2\(r1\)
+ 6c8:	10 01 13 4a 	evlhhsplathmx r0,r1,r2
+ 6cc:	10 01 0b 4b 	evlhhsplathu r0,2\(r1\)
+ 6d0:	10 01 13 4c 	evlhhousplatmx r0,r1,r2
+ 6d4:	10 01 0b 4d 	evlhhousplatu r0,2\(r1\)
+ 6d8:	10 01 13 4e 	evlhhossplatmx r0,r1,r2
+ 6dc:	10 01 0b 4f 	evlhhossplatu r0,2\(r1\)
+ 6e0:	10 01 13 50 	evlwhemx r0,r1,r2
+ 6e4:	10 01 0b 51 	evlwheu r0,4\(r1\)
+ 6e8:	10 01 13 52 	evlwbsplatwmx r0,r1,r2
+ 6ec:	10 01 0b 53 	evlwbsplatwu r0,4\(r1\)
+ 6f0:	10 01 13 54 	evlwhoumx r0,r1,r2
+ 6f4:	10 01 0b 55 	evlwhouu r0,4\(r1\)
+ 6f8:	10 01 13 56 	evlwhosmx r0,r1,r2
+ 6fc:	10 01 0b 57 	evlwhosu r0,4\(r1\)
+ 700:	10 01 13 58 	evlwwsplatmx r0,r1,r2
+ 704:	10 01 0b 59 	evlwwsplatu r0,4\(r1\)
+ 708:	10 01 13 5a 	evlwhsplatwmx r0,r1,r2
+ 70c:	10 01 0b 5b 	evlwhsplatwu r0,4\(r1\)
+ 710:	10 01 13 5c 	evlwhsplatmx r0,r1,r2
+ 714:	10 01 0b 5d 	evlwhsplatu r0,4\(r1\)
+ 718:	10 01 13 5e 	evlbbsplatbmx r0,r1,r2
+ 71c:	10 01 0b 5f 	evlbbsplatbu r0,1\(r1\)
+ 720:	10 01 13 60 	evstddmx r0,r1,r2
+ 724:	10 01 0b 61 	evstddu r0,8\(r1\)
+ 728:	10 01 13 62 	evstdwmx r0,r1,r2
+ 72c:	10 01 0b 63 	evstdwu r0,8\(r1\)
+ 730:	10 01 13 64 	evstdhmx r0,r1,r2
+ 734:	10 01 0b 65 	evstdhu r0,8\(r1\)
+ 738:	10 01 13 66 	evstdbmx r0,r1,r2
+ 73c:	10 01 0b 67 	evstdbu r0,8\(r1\)
+ 740:	10 01 13 6a 	evlwbemx r0,r1,r2
+ 744:	10 01 0b 6b 	evlwbeu r0,4\(r1\)
+ 748:	10 01 13 6c 	evlwboumx r0,r1,r2
+ 74c:	10 01 0b 6d 	evlwbouu r0,4\(r1\)
+ 750:	10 01 13 6e 	evlwbosmx r0,r1,r2
+ 754:	10 01 0b 6f 	evlwbosu r0,4\(r1\)
+ 758:	10 01 13 70 	evstwhemx r0,r1,r2
+ 75c:	10 01 0b 71 	evstwheu r0,4\(r1\)
+ 760:	10 01 13 72 	evstwbemx r0,r1,r2
+ 764:	10 01 0b 73 	evstwbeu r0,4\(r1\)
+ 768:	10 01 13 74 	evstwhomx r0,r1,r2
+ 76c:	10 01 0b 75 	evstwhou r0,4\(r1\)
+ 770:	10 01 13 76 	evstwbomx r0,r1,r2
+ 774:	10 01 0b 77 	evstwbou r0,4\(r1\)
+ 778:	10 01 13 78 	evstwwemx r0,r1,r2
+ 77c:	10 01 0b 79 	evstwweu r0,4\(r1\)
+ 780:	10 01 13 7a 	evstwbmx r0,r1,r2
+ 784:	10 01 0b 7b 	evstwbu r0,4\(r1\)
+ 788:	10 01 13 7c 	evstwwomx r0,r1,r2
+ 78c:	10 01 0b 7d 	evstwwou r0,4\(r1\)
+ 790:	10 01 13 7e 	evsthbmx r0,r1,r2
+ 794:	10 01 0b 7f 	evsthbu r0,2\(r1\)
+ 798:	10 01 14 00 	evmhusi r0,r1,r2
+ 79c:	10 01 14 01 	evmhssi r0,r1,r2
+ 7a0:	10 01 14 02 	evmhsusi r0,r1,r2
+ 7a4:	10 01 14 04 	evmhssf r0,r1,r2
+ 7a8:	10 01 14 05 	evmhumi r0,r1,r2
+ 7ac:	10 01 14 06 	evmhssfr r0,r1,r2
+ 7b0:	10 01 14 0a 	evmhesumi r0,r1,r2
+ 7b4:	10 01 14 0e 	evmhosumi r0,r1,r2
+ 7b8:	10 01 14 18 	evmbeumi r0,r1,r2
+ 7bc:	10 01 14 19 	evmbesmi r0,r1,r2
+ 7c0:	10 01 14 1a 	evmbesumi r0,r1,r2
+ 7c4:	10 01 14 1c 	evmboumi r0,r1,r2
+ 7c8:	10 01 14 1d 	evmbosmi r0,r1,r2
+ 7cc:	10 01 14 1e 	evmbosumi r0,r1,r2
+ 7d0:	10 01 14 2a 	evmhesumia r0,r1,r2
+ 7d4:	10 01 14 2e 	evmhosumia r0,r1,r2
+ 7d8:	10 01 14 38 	evmbeumia r0,r1,r2
+ 7dc:	10 01 14 39 	evmbesmia r0,r1,r2
+ 7e0:	10 01 14 3a 	evmbesumia r0,r1,r2
+ 7e4:	10 01 14 3c 	evmboumia r0,r1,r2
+ 7e8:	10 01 14 3d 	evmbosmia r0,r1,r2
+ 7ec:	10 01 14 3e 	evmbosumia r0,r1,r2
+ 7f0:	10 01 14 40 	evmwusiw r0,r1,r2
+ 7f4:	10 01 14 41 	evmwssiw r0,r1,r2
+ 7f8:	10 01 14 46 	evmwhssfr r0,r1,r2
+ 7fc:	10 01 14 56 	evmwehgsmfr r0,r1,r2
+ 800:	10 01 14 57 	evmwehgsmf r0,r1,r2
+ 804:	10 01 14 5e 	evmwohgsmfr r0,r1,r2
+ 808:	10 01 14 5f 	evmwohgsmf r0,r1,r2
+ 80c:	10 01 14 66 	evmwhssfra r0,r1,r2
+ 810:	10 01 14 76 	evmwehgsmfra r0,r1,r2
+ 814:	10 01 14 77 	evmwehgsmfa r0,r1,r2
+ 818:	10 01 14 7e 	evmwohgsmfra r0,r1,r2
+ 81c:	10 01 14 7f 	evmwohgsmfa r0,r1,r2
+ 820:	10 01 04 80 	evaddusiaa r0,r1
+ 824:	10 01 04 81 	evaddssiaa r0,r1
+ 828:	10 01 04 82 	evsubfusiaa r0,r1
+ 82c:	10 01 04 83 	evsubfssiaa r0,r1
+ 830:	10 01 04 84 	evaddsmiaa r0,r1
+ 834:	10 01 04 86 	evsubfsmiaa r0,r1
+ 838:	10 01 14 88 	evaddh  r0,r1,r2
+ 83c:	10 01 14 89 	evaddhss r0,r1,r2
+ 840:	10 01 14 8a 	evsubfh r0,r1,r2
+ 844:	10 01 14 8b 	evsubfhss r0,r1,r2
+ 848:	10 01 14 8c 	evaddhx r0,r1,r2
+ 84c:	10 01 14 8d 	evaddhxss r0,r1,r2
+ 850:	10 01 14 8e 	evsubfhx r0,r1,r2
+ 854:	10 01 14 8f 	evsubfhxss r0,r1,r2
+ 858:	10 01 14 90 	evaddd  r0,r1,r2
+ 85c:	10 01 14 91 	evadddss r0,r1,r2
+ 860:	10 01 14 92 	evsubfd r0,r1,r2
+ 864:	10 01 14 93 	evsubfdss r0,r1,r2
+ 868:	10 01 14 94 	evaddb  r0,r1,r2
+ 86c:	10 01 14 95 	evaddbss r0,r1,r2
+ 870:	10 01 14 96 	evsubfb r0,r1,r2
+ 874:	10 01 14 97 	evsubfbss r0,r1,r2
+ 878:	10 01 14 98 	evaddsubfh r0,r1,r2
+ 87c:	10 01 14 99 	evaddsubfhss r0,r1,r2
+ 880:	10 01 14 9a 	evsubfaddh r0,r1,r2
+ 884:	10 01 14 9b 	evsubfaddhss r0,r1,r2
+ 888:	10 01 14 9c 	evaddsubfhx r0,r1,r2
+ 88c:	10 01 14 9d 	evaddsubfhxss r0,r1,r2
+ 890:	10 01 14 9e 	evsubfaddhx r0,r1,r2
+ 894:	10 01 14 9f 	evsubfaddhxss r0,r1,r2
+ 898:	10 01 14 a0 	evadddus r0,r1,r2
+ 89c:	10 01 14 a1 	evaddbus r0,r1,r2
+ 8a0:	10 01 14 a2 	evsubfdus r0,r1,r2
+ 8a4:	10 01 14 a3 	evsubfbus r0,r1,r2
+ 8a8:	10 01 14 a4 	evaddwus r0,r1,r2
+ 8ac:	10 01 14 a5 	evaddwxus r0,r1,r2
+ 8b0:	10 01 14 a6 	evsubfwus r0,r1,r2
+ 8b4:	10 01 14 a7 	evsubfwxus r0,r1,r2
+ 8b8:	10 01 14 a8 	evadd2subf2h r0,r1,r2
+ 8bc:	10 01 14 a9 	evadd2subf2hss r0,r1,r2
+ 8c0:	10 01 14 aa 	evsubf2add2h r0,r1,r2
+ 8c4:	10 01 14 ab 	evsubf2add2hss r0,r1,r2
+ 8c8:	10 01 14 ac 	evaddhus r0,r1,r2
+ 8cc:	10 01 14 ad 	evaddhxus r0,r1,r2
+ 8d0:	10 01 14 ae 	evsubfhus r0,r1,r2
+ 8d4:	10 01 14 af 	evsubfhxus r0,r1,r2
+ 8d8:	10 01 14 b1 	evaddwss r0,r1,r2
+ 8dc:	10 01 14 b3 	evsubfwss r0,r1,r2
+ 8e0:	10 01 14 b4 	evaddwx r0,r1,r2
+ 8e4:	10 01 14 b5 	evaddwxss r0,r1,r2
+ 8e8:	10 01 14 b6 	evsubfwx r0,r1,r2
+ 8ec:	10 01 14 b7 	evsubfwxss r0,r1,r2
+ 8f0:	10 01 14 b8 	evaddsubfw r0,r1,r2
+ 8f4:	10 01 14 b9 	evaddsubfwss r0,r1,r2
+ 8f8:	10 01 14 ba 	evsubfaddw r0,r1,r2
+ 8fc:	10 01 14 bb 	evsubfaddwss r0,r1,r2
+ 900:	10 01 14 bc 	evaddsubfwx r0,r1,r2
+ 904:	10 01 14 bd 	evaddsubfwxss r0,r1,r2
+ 908:	10 01 14 be 	evsubfaddwx r0,r1,r2
+ 90c:	10 01 14 bf 	evsubfaddwxss r0,r1,r2
+ 910:	10 00 0c c4 	evmar   r0
+ 914:	10 01 04 c5 	evsumwu r0,r1
+ 918:	10 01 0c c5 	evsumws r0,r1
+ 91c:	10 01 14 c5 	evsum4bu r0,r1
+ 920:	10 01 1c c5 	evsum4bs r0,r1
+ 924:	10 01 24 c5 	evsum2hu r0,r1
+ 928:	10 01 2c c5 	evsum2hs r0,r1
+ 92c:	10 01 34 c5 	evdiff2his r0,r1
+ 930:	10 01 3c c5 	evsum2his r0,r1
+ 934:	10 01 84 c5 	evsumwua r0,r1
+ 938:	10 01 8c c5 	evsumwsa r0,r1
+ 93c:	10 01 94 c5 	evsum4bua r0,r1
+ 940:	10 01 9c c5 	evsum4bsa r0,r1
+ 944:	10 01 a4 c5 	evsum2hua r0,r1
+ 948:	10 01 ac c5 	evsum2hsa r0,r1
+ 94c:	10 01 b4 c5 	evdiff2hisa r0,r1
+ 950:	10 01 bc c5 	evsum2hisa r0,r1
+ 954:	10 01 c4 c5 	evsumwuaa r0,r1
+ 958:	10 01 cc c5 	evsumwsaa r0,r1
+ 95c:	10 01 d4 c5 	evsum4buaaw r0,r1
+ 960:	10 01 dc c5 	evsum4bsaaw r0,r1
+ 964:	10 01 e4 c5 	evsum2huaaw r0,r1
+ 968:	10 01 ec c5 	evsum2hsaaw r0,r1
+ 96c:	10 01 f4 c5 	evdiff2hisaaw r0,r1
+ 970:	10 01 fc c5 	evsum2hisaaw r0,r1
+ 974:	10 01 14 cc 	evdivwsf r0,r1,r2
+ 978:	10 01 14 cd 	evdivwuf r0,r1,r2
+ 97c:	10 01 14 ce 	evdivs  r0,r1,r2
+ 980:	10 01 14 cf 	evdivu  r0,r1,r2
+ 984:	10 01 14 d0 	evaddwegsi r0,r1,r2
+ 988:	10 01 14 d1 	evaddwegsf r0,r1,r2
+ 98c:	10 01 14 d2 	evsubfwegsi r0,r1,r2
+ 990:	10 01 14 d3 	evsubfwegsf r0,r1,r2
+ 994:	10 01 14 d4 	evaddwogsi r0,r1,r2
+ 998:	10 01 14 d5 	evaddwogsf r0,r1,r2
+ 99c:	10 01 14 d6 	evsubfwogsi r0,r1,r2
+ 9a0:	10 01 14 d7 	evsubfwogsf r0,r1,r2
+ 9a4:	10 01 14 d8 	evaddhhiuw r0,r1,r2
+ 9a8:	10 01 14 d9 	evaddhhisw r0,r1,r2
+ 9ac:	10 01 14 da 	evsubfhhiuw r0,r1,r2
+ 9b0:	10 01 14 db 	evsubfhhisw r0,r1,r2
+ 9b4:	10 01 14 dc 	evaddhlouw r0,r1,r2
+ 9b8:	10 01 14 dd 	evaddhlosw r0,r1,r2
+ 9bc:	10 01 14 de 	evsubfhlouw r0,r1,r2
+ 9c0:	10 01 14 df 	evsubfhlosw r0,r1,r2
+ 9c4:	10 01 15 02 	evmhesusiaaw r0,r1,r2
+ 9c8:	10 01 15 06 	evmhosusiaaw r0,r1,r2
+ 9cc:	10 01 15 0a 	evmhesumiaaw r0,r1,r2
+ 9d0:	10 01 15 0e 	evmhosumiaaw r0,r1,r2
+ 9d4:	10 01 15 10 	evmbeusiaah r0,r1,r2
+ 9d8:	10 01 15 11 	evmbessiaah r0,r1,r2
+ 9dc:	10 01 15 12 	evmbesusiaah r0,r1,r2
+ 9e0:	10 01 15 14 	evmbousiaah r0,r1,r2
+ 9e4:	10 01 15 15 	evmbossiaah r0,r1,r2
+ 9e8:	10 01 15 16 	evmbosusiaah r0,r1,r2
+ 9ec:	10 01 15 18 	evmbeumiaah r0,r1,r2
+ 9f0:	10 01 15 19 	evmbesmiaah r0,r1,r2
+ 9f4:	10 01 15 1a 	evmbesumiaah r0,r1,r2
+ 9f8:	10 01 15 1c 	evmboumiaah r0,r1,r2
+ 9fc:	10 01 15 1d 	evmbosmiaah r0,r1,r2
+ a00:	10 01 15 1e 	evmbosumiaah r0,r1,r2
+ a04:	10 01 15 42 	evmwlusiaaw3 r0,r1,r2
+ a08:	10 01 15 43 	evmwlssiaaw3 r0,r1,r2
+ a0c:	10 01 15 44 	evmwhssfraaw3 r0,r1,r2
+ a10:	10 01 15 45 	evmwhssfaaw3 r0,r1,r2
+ a14:	10 01 15 46 	evmwhssfraaw r0,r1,r2
+ a18:	10 01 15 47 	evmwhssfaaw r0,r1,r2
+ a1c:	10 01 15 4a 	evmwlumiaaw3 r0,r1,r2
+ a20:	10 01 15 4b 	evmwlsmiaaw3 r0,r1,r2
+ a24:	10 01 15 50 	evmwusiaa r0,r1,r2
+ a28:	10 01 15 51 	evmwssiaa r0,r1,r2
+ a2c:	10 01 15 56 	evmwehgsmfraa r0,r1,r2
+ a30:	10 01 15 57 	evmwehgsmfaa r0,r1,r2
+ a34:	10 01 15 5e 	evmwohgsmfraa r0,r1,r2
+ a38:	10 01 15 5f 	evmwohgsmfaa r0,r1,r2
+ a3c:	10 01 15 82 	evmhesusianw r0,r1,r2
+ a40:	10 01 15 86 	evmhosusianw r0,r1,r2
+ a44:	10 01 15 8a 	evmhesumianw r0,r1,r2
+ a48:	10 01 15 8e 	evmhosumianw r0,r1,r2
+ a4c:	10 01 15 90 	evmbeusianh r0,r1,r2
+ a50:	10 01 15 91 	evmbessianh r0,r1,r2
+ a54:	10 01 15 92 	evmbesusianh r0,r1,r2
+ a58:	10 01 15 94 	evmbousianh r0,r1,r2
+ a5c:	10 01 15 95 	evmbossianh r0,r1,r2
+ a60:	10 01 15 96 	evmbosusianh r0,r1,r2
+ a64:	10 01 15 98 	evmbeumianh r0,r1,r2
+ a68:	10 01 15 99 	evmbesmianh r0,r1,r2
+ a6c:	10 01 15 9a 	evmbesumianh r0,r1,r2
+ a70:	10 01 15 9c 	evmboumianh r0,r1,r2
+ a74:	10 01 15 9d 	evmbosmianh r0,r1,r2
+ a78:	10 01 15 9e 	evmbosumianh r0,r1,r2
+ a7c:	10 01 15 c2 	evmwlusianw3 r0,r1,r2
+ a80:	10 01 15 c3 	evmwlssianw3 r0,r1,r2
+ a84:	10 01 15 c4 	evmwhssfranw3 r0,r1,r2
+ a88:	10 01 15 c5 	evmwhssfanw3 r0,r1,r2
+ a8c:	10 01 15 c6 	evmwhssfranw r0,r1,r2
+ a90:	10 01 15 c7 	evmwhssfanw r0,r1,r2
+ a94:	10 01 15 ca 	evmwlumianw3 r0,r1,r2
+ a98:	10 01 15 cb 	evmwlsmianw3 r0,r1,r2
+ a9c:	10 01 15 d0 	evmwusian r0,r1,r2
+ aa0:	10 01 15 d1 	evmwssian r0,r1,r2
+ aa4:	10 01 15 d6 	evmwehgsmfran r0,r1,r2
+ aa8:	10 01 15 d7 	evmwehgsmfan r0,r1,r2
+ aac:	10 01 15 de 	evmwohgsmfran r0,r1,r2
+ ab0:	10 01 15 df 	evmwohgsmfan r0,r1,r2
+ ab4:	10 01 16 00 	evseteqb r0,r1,r2
+ ab8:	10 01 16 01 	evseteqb. r0,r1,r2
+ abc:	10 01 16 02 	evseteqh r0,r1,r2
+ ac0:	10 01 16 03 	evseteqh. r0,r1,r2
+ ac4:	10 01 16 04 	evseteqw r0,r1,r2
+ ac8:	10 01 16 05 	evseteqw. r0,r1,r2
+ acc:	10 01 16 08 	evsetgthu r0,r1,r2
+ ad0:	10 01 16 09 	evsetgthu. r0,r1,r2
+ ad4:	10 01 16 0a 	evsetgths r0,r1,r2
+ ad8:	10 01 16 0b 	evsetgths. r0,r1,r2
+ adc:	10 01 16 0c 	evsetgtwu r0,r1,r2
+ ae0:	10 01 16 0d 	evsetgtwu. r0,r1,r2
+ ae4:	10 01 16 0e 	evsetgtws r0,r1,r2
+ ae8:	10 01 16 0f 	evsetgtws. r0,r1,r2
+ aec:	10 01 16 10 	evsetgtbu r0,r1,r2
+ af0:	10 01 16 11 	evsetgtbu. r0,r1,r2
+ af4:	10 01 16 12 	evsetgtbs r0,r1,r2
+ af8:	10 01 16 13 	evsetgtbs. r0,r1,r2
+ afc:	10 01 16 14 	evsetltbu r0,r1,r2
+ b00:	10 01 16 15 	evsetltbu. r0,r1,r2
+ b04:	10 01 16 16 	evsetltbs r0,r1,r2
+ b08:	10 01 16 17 	evsetltbs. r0,r1,r2
+ b0c:	10 01 16 18 	evsetlthu r0,r1,r2
+ b10:	10 01 16 19 	evsetlthu. r0,r1,r2
+ b14:	10 01 16 1a 	evsetlths r0,r1,r2
+ b18:	10 01 16 1b 	evsetlths. r0,r1,r2
+ b1c:	10 01 16 1c 	evsetltwu r0,r1,r2
+ b20:	10 01 16 1d 	evsetltwu. r0,r1,r2
+ b24:	10 01 16 1e 	evsetltws r0,r1,r2
+ b28:	10 01 16 1f 	evsetltws. r0,r1,r2
+ b2c:	10 01 16 20 	evsaduw r0,r1,r2
+ b30:	10 01 16 21 	evsadsw r0,r1,r2
+ b34:	10 01 16 22 	evsad4ub r0,r1,r2
+ b38:	10 01 16 23 	evsad4sb r0,r1,r2
+ b3c:	10 01 16 24 	evsad2uh r0,r1,r2
+ b40:	10 01 16 25 	evsad2sh r0,r1,r2
+ b44:	10 01 16 28 	evsaduwa r0,r1,r2
+ b48:	10 01 16 29 	evsadswa r0,r1,r2
+ b4c:	10 01 16 2a 	evsad4uba r0,r1,r2
+ b50:	10 01 16 2b 	evsad4sba r0,r1,r2
+ b54:	10 01 16 2c 	evsad2uha r0,r1,r2
+ b58:	10 01 16 2d 	evsad2sha r0,r1,r2
+ b5c:	10 01 16 30 	evabsdifuw r0,r1,r2
+ b60:	10 01 16 31 	evabsdifsw r0,r1,r2
+ b64:	10 01 16 32 	evabsdifub r0,r1,r2
+ b68:	10 01 16 33 	evabsdifsb r0,r1,r2
+ b6c:	10 01 16 34 	evabsdifuh r0,r1,r2
+ b70:	10 01 16 35 	evabsdifsh r0,r1,r2
+ b74:	10 01 16 38 	evsaduwaa r0,r1,r2
+ b78:	10 01 16 39 	evsadswaa r0,r1,r2
+ b7c:	10 01 16 3a 	evsad4ubaaw r0,r1,r2
+ b80:	10 01 16 3b 	evsad4sbaaw r0,r1,r2
+ b84:	10 01 16 3c 	evsad2uhaaw r0,r1,r2
+ b88:	10 01 16 3d 	evsad2shaaw r0,r1,r2
+ b8c:	10 01 16 40 	evpkshubs r0,r1,r2
+ b90:	10 01 16 41 	evpkshsbs r0,r1,r2
+ b94:	10 01 16 42 	evpkswuhs r0,r1,r2
+ b98:	10 01 16 43 	evpkswshs r0,r1,r2
+ b9c:	10 01 16 44 	evpkuhubs r0,r1,r2
+ ba0:	10 01 16 45 	evpkuwuhs r0,r1,r2
+ ba4:	10 01 16 46 	evpkswshilvs r0,r1,r2
+ ba8:	10 01 16 47 	evpkswgshefrs r0,r1,r2
+ bac:	10 01 16 48 	evpkswshfrs r0,r1,r2
+ bb0:	10 01 16 49 	evpkswshilvfrs r0,r1,r2
+ bb4:	10 01 16 4a 	evpksdswfrs r0,r1,r2
+ bb8:	10 01 16 4b 	evpksdshefrs r0,r1,r2
+ bbc:	10 01 16 4c 	evpkuduws r0,r1,r2
+ bc0:	10 01 16 4d 	evpksdsws r0,r1,r2
+ bc4:	10 01 16 4e 	evpkswgswfrs r0,r1,r2
+ bc8:	10 01 16 50 	evilveh r0,r1,r2
+ bcc:	10 01 16 51 	evilveoh r0,r1,r2
+ bd0:	10 01 16 52 	evilvhih r0,r1,r2
+ bd4:	10 01 16 53 	evilvhiloh r0,r1,r2
+ bd8:	10 01 16 54 	evilvloh r0,r1,r2
+ bdc:	10 01 16 55 	evilvlohih r0,r1,r2
+ be0:	10 01 16 56 	evilvoeh r0,r1,r2
+ be4:	10 01 16 57 	evilvoh r0,r1,r2
+ be8:	10 01 16 58 	evdlveb r0,r1,r2
+ bec:	10 01 16 59 	evdlveh r0,r1,r2
+ bf0:	10 01 16 5a 	evdlveob r0,r1,r2
+ bf4:	10 01 16 5b 	evdlveoh r0,r1,r2
+ bf8:	10 01 16 5c 	evdlvob r0,r1,r2
+ bfc:	10 01 16 5d 	evdlvoh r0,r1,r2
+ c00:	10 01 16 5e 	evdlvoeb r0,r1,r2
+ c04:	10 01 16 5f 	evdlvoeh r0,r1,r2
+ c08:	10 01 16 60 	evmaxbu r0,r1,r2
+ c0c:	10 01 16 61 	evmaxbs r0,r1,r2
+ c10:	10 01 16 62 	evmaxhu r0,r1,r2
+ c14:	10 01 16 63 	evmaxhs r0,r1,r2
+ c18:	10 01 16 64 	evmaxwu r0,r1,r2
+ c1c:	10 01 16 65 	evmaxws r0,r1,r2
+ c20:	10 01 16 66 	evmaxdu r0,r1,r2
+ c24:	10 01 16 67 	evmaxds r0,r1,r2
+ c28:	10 01 16 68 	evminbu r0,r1,r2
+ c2c:	10 01 16 69 	evminbs r0,r1,r2
+ c30:	10 01 16 6a 	evminhu r0,r1,r2
+ c34:	10 01 16 6b 	evminhs r0,r1,r2
+ c38:	10 01 16 6c 	evminwu r0,r1,r2
+ c3c:	10 01 16 6d 	evminws r0,r1,r2
+ c40:	10 01 16 6e 	evmindu r0,r1,r2
+ c44:	10 01 16 6f 	evminds r0,r1,r2
+ c48:	10 01 16 70 	evavgwu r0,r1,r2
+ c4c:	10 01 16 71 	evavgws r0,r1,r2
+ c50:	10 01 16 72 	evavgbu r0,r1,r2
+ c54:	10 01 16 73 	evavgbs r0,r1,r2
+ c58:	10 01 16 74 	evavghu r0,r1,r2
+ c5c:	10 01 16 75 	evavghs r0,r1,r2
+ c60:	10 01 16 76 	evavgdu r0,r1,r2
+ c64:	10 01 16 77 	evavgds r0,r1,r2
+ c68:	10 01 16 78 	evavgwur r0,r1,r2
+ c6c:	10 01 16 79 	evavgwsr r0,r1,r2
+ c70:	10 01 16 7a 	evavgbur r0,r1,r2
+ c74:	10 01 16 7b 	evavgbsr r0,r1,r2
+ c78:	10 01 16 7c 	evavghur r0,r1,r2
+ c7c:	10 01 16 7d 	evavghsr r0,r1,r2
+ c80:	10 01 16 7e 	evavgdur r0,r1,r2
+ c84:	10 01 16 7f 	evavgdsr r0,r1,r2
+ c88:	10 01 11 4d 	evdotphssmi r0,r1,r2
+ c8c:	10 01 11 6d 	evdotphssmia r0,r1,r2
+ c90:	10 01 11 cd 	evdotpwssmi r0,r1,r2
+ c94:	10 01 11 ed 	evdotpwssmia r0,r1,r2
diff --git a/gas/testsuite/gas/ppc/spe2.s b/gas/testsuite/gas/ppc/spe2.s
new file mode 100644
index 0000000..37b6cdb
--- /dev/null
+++ b/gas/testsuite/gas/ppc/spe2.s
@@ -0,0 +1,834 @@
+# PA SPE2 instructions
+# Testcase for CMPE200GCC-5, CMPE200GCC-62
+
+	.section ".text"
+
+	.equ	rA,1
+	.equ	rB,2
+	.equ	rD,0
+	.equ	rS,0
+	.equ	UIMM, 31
+	.equ	UIMM_LT8, 7
+	.equ	UIMM_LT16, 15
+	.equ	UIMM_1, 1
+	.equ	UIMM_2, 2
+	.equ	UIMM_4, 4
+	.equ	UIMM_8, 8
+	.equ	SIMM, -16
+	.equ	crD,    0
+	.equ	nnn,    7
+	.equ	bbb,    7
+	.equ	dd,     3
+	.equ	Ddd,    7
+	.equ	hh,     3
+	.equ	mask,  15
+	.equ	offset, 7
+
+	evdotpwcssi           rD, rA, rB
+	evdotpwcsmi           rD, rA, rB
+	evdotpwcssfr          rD, rA, rB
+	evdotpwcssf           rD, rA, rB
+	evdotpwgasmf          rD, rA, rB
+	evdotpwxgasmf         rD, rA, rB
+	evdotpwgasmfr         rD, rA, rB
+	evdotpwxgasmfr        rD, rA, rB
+	evdotpwgssmf          rD, rA, rB
+	evdotpwxgssmf         rD, rA, rB
+	evdotpwgssmfr         rD, rA, rB
+	evdotpwxgssmfr        rD, rA, rB
+	evdotpwcssiaaw3       rD, rA, rB
+	evdotpwcsmiaaw3       rD, rA, rB
+	evdotpwcssfraaw3      rD, rA, rB
+	evdotpwcssfaaw3       rD, rA, rB
+	evdotpwgasmfaa3       rD, rA, rB
+	evdotpwxgasmfaa3      rD, rA, rB
+	evdotpwgasmfraa3      rD, rA, rB
+	evdotpwxgasmfraa3     rD, rA, rB
+	evdotpwgssmfaa3       rD, rA, rB
+	evdotpwxgssmfaa3      rD, rA, rB
+	evdotpwgssmfraa3      rD, rA, rB
+	evdotpwxgssmfraa3     rD, rA, rB
+	evdotpwcssia          rD, rA, rB
+	evdotpwcsmia          rD, rA, rB
+	evdotpwcssfra         rD, rA, rB
+	evdotpwcssfa          rD, rA, rB
+	evdotpwgasmfa         rD, rA, rB
+	evdotpwxgasmfa        rD, rA, rB
+	evdotpwgasmfra        rD, rA, rB
+	evdotpwxgasmfra       rD, rA, rB
+	evdotpwgssmfa         rD, rA, rB
+	evdotpwxgssmfa        rD, rA, rB
+	evdotpwgssmfra        rD, rA, rB
+	evdotpwxgssmfra       rD, rA, rB
+	evdotpwcssiaaw        rD, rA, rB
+	evdotpwcsmiaaw        rD, rA, rB
+	evdotpwcssfraaw       rD, rA, rB
+	evdotpwcssfaaw        rD, rA, rB
+	evdotpwgasmfaa        rD, rA, rB
+	evdotpwxgasmfaa       rD, rA, rB
+	evdotpwgasmfraa       rD, rA, rB
+	evdotpwxgasmfraa      rD, rA, rB
+	evdotpwgssmfaa        rD, rA, rB
+	evdotpwxgssmfaa       rD, rA, rB
+	evdotpwgssmfraa       rD, rA, rB
+	evdotpwxgssmfraa      rD, rA, rB
+	evdotphihcssi         rD, rA, rB
+	evdotplohcssi         rD, rA, rB
+	evdotphihcssf         rD, rA, rB
+	evdotplohcssf         rD, rA, rB
+	evdotphihcsmi         rD, rA, rB
+	evdotplohcsmi         rD, rA, rB
+	evdotphihcssfr        rD, rA, rB
+	evdotplohcssfr        rD, rA, rB
+	evdotphihcssiaaw3     rD, rA, rB
+	evdotplohcssiaaw3     rD, rA, rB
+	evdotphihcssfaaw3     rD, rA, rB
+	evdotplohcssfaaw3     rD, rA, rB
+	evdotphihcsmiaaw3     rD, rA, rB
+	evdotplohcsmiaaw3     rD, rA, rB
+	evdotphihcssfraaw3    rD, rA, rB
+	evdotplohcssfraaw3    rD, rA, rB
+	evdotphihcssia        rD, rA, rB
+	evdotplohcssia        rD, rA, rB
+	evdotphihcssfa        rD, rA, rB
+	evdotplohcssfa        rD, rA, rB
+	evdotphihcsmia        rD, rA, rB
+	evdotplohcsmia        rD, rA, rB
+	evdotphihcssfra       rD, rA, rB
+	evdotplohcssfra       rD, rA, rB
+	evdotphihcssiaaw      rD, rA, rB
+	evdotplohcssiaaw      rD, rA, rB
+	evdotphihcssfaaw      rD, rA, rB
+	evdotplohcssfaaw      rD, rA, rB
+	evdotphihcsmiaaw      rD, rA, rB
+	evdotplohcsmiaaw      rD, rA, rB
+	evdotphihcssfraaw     rD, rA, rB
+	evdotplohcssfraaw     rD, rA, rB
+	evdotphausi           rD, rA, rB
+	evdotphassi           rD, rA, rB
+	evdotphasusi          rD, rA, rB
+	evdotphassf           rD, rA, rB
+	evdotphsssf           rD, rA, rB
+	evdotphaumi           rD, rA, rB
+	evdotphasmi           rD, rA, rB
+	evdotphasumi          rD, rA, rB
+	evdotphassfr          rD, rA, rB
+	evdotphssmi           rD, rA, rB
+	evdotphsssfr          rD, rA, rB
+	evdotphausiaaw3       rD, rA, rB
+	evdotphassiaaw3       rD, rA, rB
+	evdotphasusiaaw3      rD, rA, rB
+	evdotphassfaaw3       rD, rA, rB
+	evdotphsssiaaw3       rD, rA, rB
+	evdotphsssfaaw3       rD, rA, rB
+	evdotphaumiaaw3       rD, rA, rB
+	evdotphasmiaaw3       rD, rA, rB
+	evdotphasumiaaw3      rD, rA, rB
+	evdotphassfraaw3      rD, rA, rB
+	evdotphssmiaaw3       rD, rA, rB
+	evdotphsssfraaw3      rD, rA, rB
+	evdotphausia          rD, rA, rB
+	evdotphassia          rD, rA, rB
+	evdotphasusia         rD, rA, rB
+	evdotphassfa          rD, rA, rB
+	evdotphsssfa          rD, rA, rB
+	evdotphaumia          rD, rA, rB
+	evdotphasmia          rD, rA, rB
+	evdotphasumia         rD, rA, rB
+	evdotphassfra         rD, rA, rB
+	evdotphssmia          rD, rA, rB
+	evdotphsssfra         rD, rA, rB
+	evdotphausiaaw        rD, rA, rB
+	evdotphassiaaw        rD, rA, rB
+	evdotphasusiaaw       rD, rA, rB
+	evdotphassfaaw        rD, rA, rB
+	evdotphsssiaaw        rD, rA, rB
+	evdotphsssfaaw        rD, rA, rB
+	evdotphaumiaaw        rD, rA, rB
+	evdotphasmiaaw        rD, rA, rB
+	evdotphasumiaaw       rD, rA, rB
+	evdotphassfraaw       rD, rA, rB
+	evdotphssmiaaw        rD, rA, rB
+	evdotphsssfraaw       rD, rA, rB
+	evdotp4hgaumi         rD, rA, rB
+	evdotp4hgasmi         rD, rA, rB
+	evdotp4hgasumi        rD, rA, rB
+	evdotp4hgasmf         rD, rA, rB
+	evdotp4hgssmi         rD, rA, rB
+	evdotp4hgssmf         rD, rA, rB
+	evdotp4hxgasmi        rD, rA, rB
+	evdotp4hxgasmf        rD, rA, rB
+	evdotpbaumi           rD, rA, rB
+	evdotpbasmi           rD, rA, rB
+	evdotpbasumi          rD, rA, rB
+	evdotp4hxgssmi        rD, rA, rB
+	evdotp4hxgssmf        rD, rA, rB
+	evdotp4hgaumiaa3      rD, rA, rB
+	evdotp4hgasmiaa3      rD, rA, rB
+	evdotp4hgasumiaa3     rD, rA, rB
+	evdotp4hgasmfaa3      rD, rA, rB
+	evdotp4hgssmiaa3      rD, rA, rB
+	evdotp4hgssmfaa3      rD, rA, rB
+	evdotp4hxgasmiaa3     rD, rA, rB
+	evdotp4hxgasmfaa3     rD, rA, rB
+	evdotpbaumiaaw3       rD, rA, rB
+	evdotpbasmiaaw3       rD, rA, rB
+	evdotpbasumiaaw3      rD, rA, rB
+	evdotp4hxgssmiaa3     rD, rA, rB
+	evdotp4hxgssmfaa3     rD, rA, rB
+	evdotp4hgaumia        rD, rA, rB
+	evdotp4hgasmia        rD, rA, rB
+	evdotp4hgasumia       rD, rA, rB
+	evdotp4hgasmfa        rD, rA, rB
+	evdotp4hgssmia        rD, rA, rB
+	evdotp4hgssmfa        rD, rA, rB
+	evdotp4hxgasmia       rD, rA, rB
+	evdotp4hxgasmfa       rD, rA, rB
+	evdotpbaumia          rD, rA, rB
+	evdotpbasmia          rD, rA, rB
+	evdotpbasumia         rD, rA, rB
+	evdotp4hxgssmia       rD, rA, rB
+	evdotp4hxgssmfa       rD, rA, rB
+	evdotp4hgaumiaa       rD, rA, rB
+	evdotp4hgasmiaa       rD, rA, rB
+	evdotp4hgasumiaa      rD, rA, rB
+	evdotp4hgasmfaa       rD, rA, rB
+	evdotp4hgssmiaa       rD, rA, rB
+	evdotp4hgssmfaa       rD, rA, rB
+	evdotp4hxgasmiaa      rD, rA, rB
+	evdotp4hxgasmfaa      rD, rA, rB
+	evdotpbaumiaaw        rD, rA, rB
+	evdotpbasmiaaw        rD, rA, rB
+	evdotpbasumiaaw       rD, rA, rB
+	evdotp4hxgssmiaa      rD, rA, rB
+	evdotp4hxgssmfaa      rD, rA, rB
+	evdotpwausi           rD, rA, rB
+	evdotpwassi           rD, rA, rB
+	evdotpwasusi          rD, rA, rB
+	evdotpwaumi           rD, rA, rB
+	evdotpwasmi           rD, rA, rB
+	evdotpwasumi          rD, rA, rB
+	evdotpwssmi           rD, rA, rB
+	evdotpwausiaa3        rD, rA, rB
+	evdotpwassiaa3        rD, rA, rB
+	evdotpwasusiaa3       rD, rA, rB
+	evdotpwsssiaa3        rD, rA, rB
+	evdotpwaumiaa3        rD, rA, rB
+	evdotpwasmiaa3        rD, rA, rB
+	evdotpwasumiaa3       rD, rA, rB
+	evdotpwssmiaa3        rD, rA, rB
+	evdotpwausia          rD, rA, rB
+	evdotpwassia          rD, rA, rB
+	evdotpwasusia         rD, rA, rB
+	evdotpwaumia          rD, rA, rB
+	evdotpwasmia          rD, rA, rB
+	evdotpwasumia         rD, rA, rB
+	evdotpwssmia          rD, rA, rB
+	evdotpwausiaa         rD, rA, rB
+	evdotpwassiaa         rD, rA, rB
+	evdotpwasusiaa        rD, rA, rB
+	evdotpwsssiaa         rD, rA, rB
+	evdotpwaumiaa         rD, rA, rB
+	evdotpwasmiaa         rD, rA, rB
+	evdotpwasumiaa        rD, rA, rB
+	evdotpwssmiaa         rD, rA, rB
+	evaddib               rD, rB, UIMM
+	evaddih               rD, rB, UIMM
+	evsubifh              rD, UIMM, rB
+	evsubifb              rD, UIMM, rB
+	evabsb                rD, rA
+	evabsh                rD, rA
+	evabsd                rD, rA
+	evabss                rD, rA
+	evabsbs               rD, rA
+	evabshs               rD, rA
+	evabsds               rD, rA
+	evnegwo               rD, rA
+	evnegb                rD, rA
+	evnegbo               rD, rA
+	evnegh                rD, rA
+	evnegho               rD, rA
+	evnegd                rD, rA
+	evnegs                rD, rA
+	evnegwos              rD, rA
+	evnegbs               rD, rA
+	evnegbos              rD, rA
+	evneghs               rD, rA
+	evneghos              rD, rA
+	evnegds               rD, rA
+	evextzb               rD, rA
+	evextsbh              rD, rA
+	evextsw               rD, rA
+	evrndwh               rD, rA
+	evrndhb               rD, rA
+	evrnddw               rD, rA
+	evrndwhus             rD, rA
+	evrndwhss             rD, rA
+	evrndhbus             rD, rA
+	evrndhbss             rD, rA
+	evrnddwus             rD, rA
+	evrnddwss             rD, rA
+	evrndwnh              rD, rA
+	evrndhnb              rD, rA
+	evrnddnw              rD, rA
+	evrndwnhus            rD, rA
+	evrndwnhss            rD, rA
+	evrndhnbus            rD, rA
+	evrndhnbss            rD, rA
+	evrnddnwus            rD, rA
+	evrnddnwss            rD, rA
+	evcntlzh              rD, rA
+	evcntlsh              rD, rA
+	evpopcntb             rD, rA
+	circinc               rD, rA, rB
+	evunpkhibui           rD, rA
+	evunpkhibsi           rD, rA
+	evunpkhihui           rD, rA
+	evunpkhihsi           rD, rA
+	evunpklobui           rD, rA
+	evunpklobsi           rD, rA
+	evunpklohui           rD, rA
+	evunpklohsi           rD, rA
+	evunpklohf            rD, rA
+	evunpkhihf            rD, rA
+	evunpklowgsf          rD, rA
+	evunpkhiwgsf          rD, rA
+	evsatsduw             rD, rA
+	evsatsdsw             rD, rA
+	evsatshub             rD, rA
+	evsatshsb             rD, rA
+	evsatuwuh             rD, rA
+	evsatswsh             rD, rA
+	evsatswuh             rD, rA
+	evsatuhub             rD, rA
+	evsatuduw             rD, rA
+	evsatuwsw             rD, rA
+	evsatshuh             rD, rA
+	evsatuhsh             rD, rA
+	evsatswuw             rD, rA
+	evsatswgsdf           rD, rA
+	evsatsbub             rD, rA
+	evsatubsb             rD, rA
+	evmaxhpuw             rD, rA
+	evmaxhpsw             rD, rA
+	evmaxbpuh             rD, rA
+	evmaxbpsh             rD, rA
+	evmaxwpud             rD, rA
+	evmaxwpsd             rD, rA
+	evminhpuw             rD, rA
+	evminhpsw             rD, rA
+	evminbpuh             rD, rA
+	evminbpsh             rD, rA
+	evminwpud             rD, rA
+	evminwpsd             rD, rA
+	evmaxmagws            rD, rA, rB
+	evsl                  rD, rA, rB
+	evsli                 rD, rA, UIMM
+	evsplatie             rD, SIMM
+	evsplatib             rD, SIMM
+	evsplatibe            rD, SIMM
+	evsplatih             rD, SIMM
+	evsplatihe            rD, SIMM
+	evsplatid             rD, SIMM
+	evsplatia             rD, SIMM
+	evsplatiea            rD, SIMM
+	evsplatiba            rD, SIMM
+	evsplatibea           rD, SIMM
+	evsplatiha            rD, SIMM
+	evsplatihea           rD, SIMM
+	evsplatida            rD, SIMM
+	evsplatfio            rD, SIMM
+	evsplatfib            rD, SIMM
+	evsplatfibo           rD, SIMM
+	evsplatfih            rD, SIMM
+	evsplatfiho           rD, SIMM
+	evsplatfid            rD, SIMM
+	evsplatfia            rD, SIMM
+	evsplatfioa           rD, SIMM
+	evsplatfiba           rD, SIMM
+	evsplatfiboa          rD, SIMM
+	evsplatfiha           rD, SIMM
+	evsplatfihoa          rD, SIMM
+	evsplatfida           rD, SIMM
+	evcmpgtdu             crD, rA, rB
+	evcmpgtds             crD, rA, rB
+	evcmpltdu             crD, rA, rB
+	evcmpltds             crD, rA, rB
+	evcmpeqd              crD, rA, rB
+	evswapbhilo           rD, rA, rB
+	evswapblohi           rD, rA, rB
+	evswaphhilo           rD, rA, rB
+	evswaphlohi           rD, rA, rB
+	evswaphe              rD, rA, rB
+	evswaphhi             rD, rA, rB
+	evswaphlo             rD, rA, rB
+	evswapho              rD, rA, rB
+	evinsb                rD, rA, Ddd, bbb
+	evxtrb                rD, rA, Ddd, bbb
+	evsplath              rD, rA, hh
+	evsplatb              rD, rA, bbb
+	evinsh                rD, rA, dd, hh
+	evclrbe               rD, rA, mask
+	evclrbo               rD, rA, mask
+	evclrh                rD, rA, mask
+	evxtrh                rD, rA, dd, hh
+	evselbitm0            rD, rA, rB
+	evselbitm1            rD, rA, rB
+	evselbit              rD, rA, rB
+	evperm                rD, rA, rB
+	evperm2               rD, rA, rB
+	evperm3               rD, rA, rB
+	evxtrd                rD, rA, rB, offset
+	evsrbu                rD, rA, rB
+	evsrbs                rD, rA, rB
+	evsrbiu               rD, rA, UIMM_LT8
+	evsrbis               rD, rA, UIMM_LT8
+	evslb                 rD, rA, rB
+	evrlb                 rD, rA, rB
+	evslbi                rD, rA, UIMM_LT8
+	evrlbi                rD, rA, UIMM_LT8
+	evsrhu                rD, rA, rB
+	evsrhs                rD, rA, rB
+	evsrhiu               rD, rA, UIMM_LT16
+	evsrhis               rD, rA, UIMM_LT16
+	evslh                 rD, rA, rB
+	evrlh                 rD, rA, rB
+	evslhi                rD, rA, UIMM_LT16
+	evrlhi                rD, rA, UIMM_LT16
+	evsru                 rD, rA, rB
+	evsrs                 rD, rA, rB
+	evsriu                rD, rA, UIMM
+	evsris                rD, rA, UIMM
+	evlvsl                rD, rA, rB
+	evlvsr                rD, rA, rB
+	evsroiu               rD, rA, nnn
+	evsrois               rD, rA, nnn
+	evsloi                rD, rA, nnn
+	evfssqrt              rD, rA
+	evfscfh               rD, rB
+	evfscth               rD, rB
+	evfsmax               rD, rA, rB
+	evfsmin               rD, rA, rB
+	evfsaddsub            rD, rA, rB
+	evfssubadd            rD, rA, rB
+	evfssum               rD, rA, rB
+	evfsdiff              rD, rA, rB
+	evfssumdiff           rD, rA, rB
+	evfsdiffsum           rD, rA, rB
+	evfsaddx              rD, rA, rB
+	evfssubx              rD, rA, rB
+	evfsaddsubx           rD, rA, rB
+	evfssubaddx           rD, rA, rB
+	evfsmulx              rD, rA, rB
+	evfsmule              rD, rA, rB
+	evfsmulo              rD, rA, rB
+	evldbx                rD, rA, rB
+	evldb                 rD, UIMM_8 (rA)
+	evlhhsplathx          rD, rA, rB
+	evlhhsplath           rD, UIMM_2 (rA)
+	evlwbsplatwx          rD, rA, rB
+	evlwbsplatw           rD, UIMM_4 (rA)
+	evlwhsplatwx          rD, rA, rB
+	evlwhsplatw           rD, UIMM_4 (rA)
+	evlbbsplatbx          rD, rA, rB
+	evlbbsplatb           rD, UIMM_1 (rA)
+	evstdbx               rS, rA, rB
+	evstdb                rS, UIMM_8 (rA)
+	evlwbex               rD, rA, rB
+	evlwbe                rD, UIMM_4 (rA)
+	evlwboux              rD, rA, rB
+	evlwbou               rD, UIMM_4 (rA)
+	evlwbosx              rD, rA, rB
+	evlwbos               rD, UIMM_4 (rA)
+	evstwbex              rS, rA, rB
+	evstwbe               rS, UIMM_4 (rA)
+	evstwbox              rS, rA, rB
+	evstwbo               rS, UIMM_4 (rA)
+	evstwbx               rS, rA, rB
+	evstwb                rS, UIMM_4 (rA)
+	evsthbx               rS, rA, rB
+	evsthb                rS, UIMM_2 (rA)
+	evlddmx               rD, rA, rB
+	evlddu                rD, UIMM_8 (rA)
+	evldwmx               rD, rA, rB
+	evldwu                rD, UIMM_8 (rA)
+	evldhmx               rD, rA, rB
+	evldhu                rD, UIMM_8 (rA)
+	evldbmx               rD, rA, rB
+	evldbu                rD, UIMM_8 (rA)
+	evlhhesplatmx         rD, rA, rB
+	evlhhesplatu          rD, UIMM_2 (rA)
+	evlhhsplathmx         rD, rA, rB
+	evlhhsplathu          rD, UIMM_2 (rA)
+	evlhhousplatmx        rD, rA, rB
+	evlhhousplatu         rD, UIMM_2 (rA)
+	evlhhossplatmx        rD, rA, rB
+	evlhhossplatu         rD, UIMM_2 (rA)
+	evlwhemx              rD, rA, rB
+	evlwheu               rD, UIMM_4 (rA)
+	evlwbsplatwmx         rD, rA, rB
+	evlwbsplatwu          rD, UIMM_4 (rA)
+	evlwhoumx             rD, rA, rB
+	evlwhouu              rD, UIMM_4 (rA)
+	evlwhosmx             rD, rA, rB
+	evlwhosu              rD, UIMM_4 (rA)
+	evlwwsplatmx          rD, rA, rB
+	evlwwsplatu           rD, UIMM_4 (rA)
+	evlwhsplatwmx         rD, rA, rB
+	evlwhsplatwu          rD, UIMM_4 (rA)
+	evlwhsplatmx          rD, rA, rB
+	evlwhsplatu           rD, UIMM_4 (rA)
+	evlbbsplatbmx         rD, rA, rB
+	evlbbsplatbu          rD, UIMM_1 (rA)
+	evstddmx              rS, rA, rB
+	evstddu               rS, UIMM_8 (rA)
+	evstdwmx              rS, rA, rB
+	evstdwu               rS, UIMM_8 (rA)
+	evstdhmx              rS, rA, rB
+	evstdhu               rS, UIMM_8 (rA)
+	evstdbmx              rS, rA, rB
+	evstdbu               rS, UIMM_8 (rA)
+	evlwbemx              rD, rA, rB
+	evlwbeu               rD, UIMM_4 (rA)
+	evlwboumx             rD, rA, rB
+	evlwbouu              rD, UIMM_4 (rA)
+	evlwbosmx             rD, rA, rB
+	evlwbosu              rD, UIMM_4 (rA)
+	evstwhemx             rS, rA, rB
+	evstwheu              rS, UIMM_4 (rA)
+	evstwbemx             rS, rA, rB
+	evstwbeu              rS, UIMM_4 (rA)
+	evstwhomx             rS, rA, rB
+	evstwhou              rS, UIMM_4 (rA)
+	evstwbomx             rS, rA, rB
+	evstwbou              rS, UIMM_4 (rA)
+	evstwwemx             rS, rA, rB
+	evstwweu              rS, UIMM_4 (rA)
+	evstwbmx              rS, rA, rB
+	evstwbu               rS, UIMM_4 (rA)
+	evstwwomx             rS, rA, rB
+	evstwwou              rS, UIMM_4 (rA)
+	evsthbmx              rS, rA, rB
+	evsthbu               rS, UIMM_2 (rA)
+	evmhusi               rD, rA, rB
+	evmhssi               rD, rA, rB
+	evmhsusi              rD, rA, rB
+	evmhssf               rD, rA, rB
+	evmhumi               rD, rA, rB
+	evmhssfr              rD, rA, rB
+	evmhesumi             rD, rA, rB
+	evmhosumi             rD, rA, rB
+	evmbeumi              rD, rA, rB
+	evmbesmi              rD, rA, rB
+	evmbesumi             rD, rA, rB
+	evmboumi              rD, rA, rB
+	evmbosmi              rD, rA, rB
+	evmbosumi             rD, rA, rB
+	evmhesumia            rD, rA, rB
+	evmhosumia            rD, rA, rB
+	evmbeumia             rD, rA, rB
+	evmbesmia             rD, rA, rB
+	evmbesumia            rD, rA, rB
+	evmboumia             rD, rA, rB
+	evmbosmia             rD, rA, rB
+	evmbosumia            rD, rA, rB
+	evmwusiw              rD, rA, rB
+	evmwssiw              rD, rA, rB
+	evmwhssfr             rD, rA, rB
+	evmwehgsmfr           rD, rA, rB
+	evmwehgsmf            rD, rA, rB
+	evmwohgsmfr           rD, rA, rB
+	evmwohgsmf            rD, rA, rB
+	evmwhssfra            rD, rA, rB
+	evmwehgsmfra          rD, rA, rB
+	evmwehgsmfa           rD, rA, rB
+	evmwohgsmfra          rD, rA, rB
+	evmwohgsmfa           rD, rA, rB
+	evaddusiaa            rD, rA
+	evaddssiaa            rD, rA
+	evsubfusiaa           rD, rA
+	evsubfssiaa           rD, rA
+	evaddsmiaa            rD, rA
+	evsubfsmiaa           rD, rA
+	evaddh                rD, rA, rB
+	evaddhss              rD, rA, rB
+	evsubfh               rD, rA, rB
+	evsubfhss             rD, rA, rB
+	evaddhx               rD, rA, rB
+	evaddhxss             rD, rA, rB
+	evsubfhx              rD, rA, rB
+	evsubfhxss            rD, rA, rB
+	evaddd                rD, rA, rB
+	evadddss              rD, rA, rB
+	evsubfd               rD, rA, rB
+	evsubfdss             rD, rA, rB
+	evaddb                rD, rA, rB
+	evaddbss              rD, rA, rB
+	evsubfb               rD, rA, rB
+	evsubfbss             rD, rA, rB
+	evaddsubfh            rD, rA, rB
+	evaddsubfhss          rD, rA, rB
+	evsubfaddh            rD, rA, rB
+	evsubfaddhss          rD, rA, rB
+	evaddsubfhx           rD, rA, rB
+	evaddsubfhxss         rD, rA, rB
+	evsubfaddhx           rD, rA, rB
+	evsubfaddhxss         rD, rA, rB
+	evadddus              rD, rA, rB
+	evaddbus              rD, rA, rB
+	evsubfdus             rD, rA, rB
+	evsubfbus             rD, rA, rB
+	evaddwus              rD, rA, rB
+	evaddwxus             rD, rA, rB
+	evsubfwus             rD, rA, rB
+	evsubfwxus            rD, rA, rB
+	evadd2subf2h          rD, rA, rB
+	evadd2subf2hss        rD, rA, rB
+	evsubf2add2h          rD, rA, rB
+	evsubf2add2hss        rD, rA, rB
+	evaddhus              rD, rA, rB
+	evaddhxus             rD, rA, rB
+	evsubfhus             rD, rA, rB
+	evsubfhxus            rD, rA, rB
+	evaddwss              rD, rA, rB
+	evsubfwss             rD, rA, rB
+	evaddwx               rD, rA, rB
+	evaddwxss             rD, rA, rB
+	evsubfwx              rD, rA, rB
+	evsubfwxss            rD, rA, rB
+	evaddsubfw            rD, rA, rB
+	evaddsubfwss          rD, rA, rB
+	evsubfaddw            rD, rA, rB
+	evsubfaddwss          rD, rA, rB
+	evaddsubfwx           rD, rA, rB
+	evaddsubfwxss         rD, rA, rB
+	evsubfaddwx           rD, rA, rB
+	evsubfaddwxss         rD, rA, rB
+	evmar                 rD
+	evsumwu               rD, rA
+	evsumws               rD, rA
+	evsum4bu              rD, rA
+	evsum4bs              rD, rA
+	evsum2hu              rD, rA
+	evsum2hs              rD, rA
+	evdiff2his            rD, rA
+	evsum2his             rD, rA
+	evsumwua              rD, rA
+	evsumwsa              rD, rA
+	evsum4bua             rD, rA
+	evsum4bsa             rD, rA
+	evsum2hua             rD, rA
+	evsum2hsa             rD, rA
+	evdiff2hisa           rD, rA
+	evsum2hisa            rD, rA
+	evsumwuaa             rD, rA
+	evsumwsaa             rD, rA
+	evsum4buaaw           rD, rA
+	evsum4bsaaw           rD, rA
+	evsum2huaaw           rD, rA
+	evsum2hsaaw           rD, rA
+	evdiff2hisaaw         rD, rA
+	evsum2hisaaw          rD, rA
+	evdivwsf              rD, rA, rB
+	evdivwuf              rD, rA, rB
+	evdivs                rD, rA, rB
+	evdivu                rD, rA, rB
+	evaddwegsi            rD, rA, rB
+	evaddwegsf            rD, rA, rB
+	evsubfwegsi           rD, rA, rB
+	evsubfwegsf           rD, rA, rB
+	evaddwogsi            rD, rA, rB
+	evaddwogsf            rD, rA, rB
+	evsubfwogsi           rD, rA, rB
+	evsubfwogsf           rD, rA, rB
+	evaddhhiuw            rD, rA, rB
+	evaddhhisw            rD, rA, rB
+	evsubfhhiuw           rD, rA, rB
+	evsubfhhisw           rD, rA, rB
+	evaddhlouw            rD, rA, rB
+	evaddhlosw            rD, rA, rB
+	evsubfhlouw           rD, rA, rB
+	evsubfhlosw           rD, rA, rB
+	evmhesusiaaw          rD, rA, rB
+	evmhosusiaaw          rD, rA, rB
+	evmhesumiaaw          rD, rA, rB
+	evmhosumiaaw          rD, rA, rB
+	evmbeusiaah           rD, rA, rB
+	evmbessiaah           rD, rA, rB
+	evmbesusiaah          rD, rA, rB
+	evmbousiaah           rD, rA, rB
+	evmbossiaah           rD, rA, rB
+	evmbosusiaah          rD, rA, rB
+	evmbeumiaah           rD, rA, rB
+	evmbesmiaah           rD, rA, rB
+	evmbesumiaah          rD, rA, rB
+	evmboumiaah           rD, rA, rB
+	evmbosmiaah           rD, rA, rB
+	evmbosumiaah          rD, rA, rB
+	evmwlusiaaw3          rD, rA, rB
+	evmwlssiaaw3          rD, rA, rB
+	evmwhssfraaw3         rD, rA, rB
+	evmwhssfaaw3          rD, rA, rB
+	evmwhssfraaw          rD, rA, rB
+	evmwhssfaaw           rD, rA, rB
+	evmwlumiaaw3          rD, rA, rB
+	evmwlsmiaaw3          rD, rA, rB
+	evmwusiaa             rD, rA, rB
+	evmwssiaa             rD, rA, rB
+	evmwehgsmfraa         rD, rA, rB
+	evmwehgsmfaa          rD, rA, rB
+	evmwohgsmfraa         rD, rA, rB
+	evmwohgsmfaa          rD, rA, rB
+	evmhesusianw          rD, rA, rB
+	evmhosusianw          rD, rA, rB
+	evmhesumianw          rD, rA, rB
+	evmhosumianw          rD, rA, rB
+	evmbeusianh           rD, rA, rB
+	evmbessianh           rD, rA, rB
+	evmbesusianh          rD, rA, rB
+	evmbousianh           rD, rA, rB
+	evmbossianh           rD, rA, rB
+	evmbosusianh          rD, rA, rB
+	evmbeumianh           rD, rA, rB
+	evmbesmianh           rD, rA, rB
+	evmbesumianh          rD, rA, rB
+	evmboumianh           rD, rA, rB
+	evmbosmianh           rD, rA, rB
+	evmbosumianh          rD, rA, rB
+	evmwlusianw3          rD, rA, rB
+	evmwlssianw3          rD, rA, rB
+	evmwhssfranw3         rD, rA, rB
+	evmwhssfanw3          rD, rA, rB
+	evmwhssfranw          rD, rA, rB
+	evmwhssfanw           rD, rA, rB
+	evmwlumianw3          rD, rA, rB
+	evmwlsmianw3          rD, rA, rB
+	evmwusian             rD, rA, rB
+	evmwssian             rD, rA, rB
+	evmwehgsmfran         rD, rA, rB
+	evmwehgsmfan          rD, rA, rB
+	evmwohgsmfran         rD, rA, rB
+	evmwohgsmfan          rD, rA, rB
+	evseteqb              rD, rA, rB
+	evseteqb.             rD, rA, rB
+	evseteqh              rD, rA, rB
+	evseteqh.             rD, rA, rB
+	evseteqw              rD, rA, rB
+	evseteqw.             rD, rA, rB
+	evsetgthu             rD, rA, rB
+	evsetgthu.            rD, rA, rB
+	evsetgths             rD, rA, rB
+	evsetgths.            rD, rA, rB
+	evsetgtwu             rD, rA, rB
+	evsetgtwu.            rD, rA, rB
+	evsetgtws             rD, rA, rB
+	evsetgtws.            rD, rA, rB
+	evsetgtbu             rD, rA, rB
+	evsetgtbu.            rD, rA, rB
+	evsetgtbs             rD, rA, rB
+	evsetgtbs.            rD, rA, rB
+	evsetltbu             rD, rA, rB
+	evsetltbu.            rD, rA, rB
+	evsetltbs             rD, rA, rB
+	evsetltbs.            rD, rA, rB
+	evsetlthu             rD, rA, rB
+	evsetlthu.            rD, rA, rB
+	evsetlths             rD, rA, rB
+	evsetlths.            rD, rA, rB
+	evsetltwu             rD, rA, rB
+	evsetltwu.            rD, rA, rB
+	evsetltws             rD, rA, rB
+	evsetltws.            rD, rA, rB
+	evsaduw               rD, rA, rB
+	evsadsw               rD, rA, rB
+	evsad4ub              rD, rA, rB
+	evsad4sb              rD, rA, rB
+	evsad2uh              rD, rA, rB
+	evsad2sh              rD, rA, rB
+	evsaduwa              rD, rA, rB
+	evsadswa              rD, rA, rB
+	evsad4uba             rD, rA, rB
+	evsad4sba             rD, rA, rB
+	evsad2uha             rD, rA, rB
+	evsad2sha             rD, rA, rB
+	evabsdifuw            rD, rA, rB
+	evabsdifsw            rD, rA, rB
+	evabsdifub            rD, rA, rB
+	evabsdifsb            rD, rA, rB
+	evabsdifuh            rD, rA, rB
+	evabsdifsh            rD, rA, rB
+	evsaduwaa             rD, rA, rB
+	evsadswaa             rD, rA, rB
+	evsad4ubaaw           rD, rA, rB
+	evsad4sbaaw           rD, rA, rB
+	evsad2uhaaw           rD, rA, rB
+	evsad2shaaw           rD, rA, rB
+	evpkshubs             rD, rA, rB
+	evpkshsbs             rD, rA, rB
+	evpkswuhs             rD, rA, rB
+	evpkswshs             rD, rA, rB
+	evpkuhubs             rD, rA, rB
+	evpkuwuhs             rD, rA, rB
+	evpkswshilvs          rD, rA, rB
+	evpkswgshefrs         rD, rA, rB
+	evpkswshfrs           rD, rA, rB
+	evpkswshilvfrs        rD, rA, rB
+	evpksdswfrs           rD, rA, rB
+	evpksdshefrs          rD, rA, rB
+	evpkuduws             rD, rA, rB
+	evpksdsws             rD, rA, rB
+	evpkswgswfrs          rD, rA, rB
+	evilveh               rD, rA, rB
+	evilveoh              rD, rA, rB
+	evilvhih              rD, rA, rB
+	evilvhiloh            rD, rA, rB
+	evilvloh              rD, rA, rB
+	evilvlohih            rD, rA, rB
+	evilvoeh              rD, rA, rB
+	evilvoh               rD, rA, rB
+	evdlveb               rD, rA, rB
+	evdlveh               rD, rA, rB
+	evdlveob              rD, rA, rB
+	evdlveoh              rD, rA, rB
+	evdlvob               rD, rA, rB
+	evdlvoh               rD, rA, rB
+	evdlvoeb              rD, rA, rB
+	evdlvoeh              rD, rA, rB
+	evmaxbu               rD, rA, rB
+	evmaxbs               rD, rA, rB
+	evmaxhu               rD, rA, rB
+	evmaxhs               rD, rA, rB
+	evmaxwu               rD, rA, rB
+	evmaxws               rD, rA, rB
+	evmaxdu               rD, rA, rB
+	evmaxds               rD, rA, rB
+	evminbu               rD, rA, rB
+	evminbs               rD, rA, rB
+	evminhu               rD, rA, rB
+	evminhs               rD, rA, rB
+	evminwu               rD, rA, rB
+	evminws               rD, rA, rB
+	evmindu               rD, rA, rB
+	evminds               rD, rA, rB
+	evavgwu               rD, rA, rB
+	evavgws               rD, rA, rB
+	evavgbu               rD, rA, rB
+	evavgbs               rD, rA, rB
+	evavghu               rD, rA, rB
+	evavghs               rD, rA, rB
+	evavgdu               rD, rA, rB
+	evavgds               rD, rA, rB
+	evavgwur              rD, rA, rB
+	evavgwsr              rD, rA, rB
+	evavgbur              rD, rA, rB
+	evavgbsr              rD, rA, rB
+	evavghur              rD, rA, rB
+	evavghsr              rD, rA, rB
+	evavgdur              rD, rA, rB
+	evavgdsr              rD, rA, rB
+
+;#SPE2 mapped by macro
+	evdotphsssi           rD, rA, rB
+	evdotphsssia          rD, rA, rB
+	evdotpwsssi           rD, rA, rB
+	evdotpwsssia          rD, rA, rB
diff --git a/gas/testsuite/gas/ppc/spe_ambiguous.d b/gas/testsuite/gas/ppc/spe_ambiguous.d
new file mode 100644
index 0000000..cdfb005
--- /dev/null
+++ b/gas/testsuite/gas/ppc/spe_ambiguous.d
@@ -0,0 +1,15 @@
+#as: -a32 -mvle
+#objdump: -d -Mspe
+#name: Validate SPE instructions
+
+.*: +file format elf.*-powerpc.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	10 01 12 04 	evsubfw r0,r1,r2
+   4:	10 01 12 04 	evsubw r0,r2,r1
+   8:	10 1f 12 06 	evsubifw r0,31,r2
+   c:	10 1f 12 06 	evsubiw r0,r2,31
+  10:	10 01 12 18 	evnor   r0,r1,r2
+  14:	10 01 0a 18 	evnot   r0,r1
diff --git a/gas/testsuite/gas/ppc/spe_ambiguous.s b/gas/testsuite/gas/ppc/spe_ambiguous.s
new file mode 100644
index 0000000..b60e02b
--- /dev/null
+++ b/gas/testsuite/gas/ppc/spe_ambiguous.s
@@ -0,0 +1,21 @@
+# PA SPE instructions
+	.section ".text"
+	.equ	rA,1
+	.equ	rB,2
+	.equ	rD,0
+	.equ	rS,0
+	.equ	rT,0
+	.equ	UIMM, 31
+	.equ	UIMM_2, 2
+	.equ	UIMM_4, 4
+	.equ	UIMM_8, 8
+	.equ	SIMM, -16
+	.equ	crD, 0
+	.equ	crS, 0
+
+	evsubfw         rS, rA, rB
+	evsubw          rS, rB, rA
+	evsubifw        rS, UIMM, rB
+	evsubiw         rS, rB, UIMM
+	evnor           rS, rA, rB
+	evnot           rS, rA
diff --git a/include/ChangeLog b/include/ChangeLog
index db500dc..78782db 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,13 @@
+2017-08-23  Alexander Fedotov <alexander.fedotov@nxp.com>
+	    Edmar Wienskoski <edmar.wienskoski@nxp.com>
+
+	* opcode/ppc.h:
+	(spe2_opcodes, spe2_num_opcodes): New.
+	(PPC_OPCODE_SPE2): New define.
+	(PPC_OPCODE_EFS2): Likewise.
+	(SPE2_XOP): Likewise.
+	(SPE2_XOP_TO_SEG): Likewise.
+
 2017-08-21  Alexander Fedotov <alexander.fedotov@nxp.com>
 	    Edmar Wienskoski <edmar.wienskoski@nxp.com>
 
diff --git a/include/opcode/ppc.h b/include/opcode/ppc.h
index 21b1221..5274cae 100644
--- a/include/opcode/ppc.h
+++ b/include/opcode/ppc.h
@@ -70,6 +70,8 @@ extern const struct powerpc_opcode powerpc_opcodes[];
 extern const int powerpc_num_opcodes;
 extern const struct powerpc_opcode vle_opcodes[];
 extern const int vle_num_opcodes;
+extern const struct powerpc_opcode spe2_opcodes[];
+extern const int spe2_num_opcodes;
 
 /* Values defined for the flags field of a struct powerpc_opcode.  */
 
@@ -218,6 +220,12 @@ extern const int vle_num_opcodes;
 /* Opcode is supported by PowerPC LSP */
 #define PPC_OPCODE_LSP	     0x80000000000ull
 
+/* Opcode is only supported by Freescale SPE2 APU.  */
+#define PPC_OPCODE_SPE2	     0x100000000000ull
+
+/* Opcode is supported by EFS2.  */
+#define PPC_OPCODE_EFS2	     0x200000000000ull
+
 /* A macro to extract the major opcode from an instruction.  */
 #define PPC_OP(i) (((i) >> 26) & 0x3f)
 
@@ -229,6 +237,12 @@ extern const int vle_num_opcodes;
 
 /* A macro to convert a VLE opcode to a VLE opcode segment.  */
 #define VLE_OP_TO_SEG(i) ((i) >> 1)
+
+/* A macro to extract the extended opcode from a SPE2 instruction.  */
+#define SPE2_XOP(i) ((i) & 0x7ff)
+
+/* A macro to convert a SPE2 extended opcode to a SPE2 xopcode segment.  */
+#define SPE2_XOP_TO_SEG(i) ((i) >> 7)
 
 /* The operands table is an array of struct powerpc_operand.  */
 
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 1ea12bb..5a3ab08 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,63 @@
+2017-08-23  Alexander Fedotov <alexander.fedotov@nxp.com>
+	    Edmar Wienskoski <edmar.wienskoski@nxp.com>
+
+	* ppc-dis.c (ppc_mopt): Add PPC_OPCODE_SPE2 and
+	PPC_OPCODE_EFS2 flag to "e200z4" entry.
+	New entries efs2 and spe2.
+	Add PPC_OPCODE_SPE2 and PPC_OPCODE_EFS2 flag to "vle" entry.
+	(SPE2_OPCD_SEGS): New macro.
+	(spe2_opcd_indices): New.
+	(disassemble_init_powerpc): Handle SPE2 opcodes.
+	(lookup_spe2): New function.
+	(print_insn_powerpc): call lookup_spe2.
+	* ppc-opc.c (insert_evuimm1_ex0): New function.
+	(extract_evuimm1_ex0): Likewise.
+	(insert_evuimm_lt8): Likewise.
+	(extract_evuimm_lt8): Likewise.
+	(insert_off_spe2): Likewise.
+	(extract_off_spe2): Likewise.
+	(insert_Ddd): Likewise.
+	(extract_Ddd): Likewise.
+	(DD): New operand.
+	(EVUIMM_LT8): Likewise.
+	(EVUIMM_LT16): Adjust.
+	(MMMM): New operand.
+	(EVUIMM_1): Likewise.
+	(EVUIMM_1_EX0): Likewise.
+	(EVUIMM_2): Adjust.
+	(NNN): New operand.
+	(VX_OFF_SPE2): Likewise.
+	(BBB): Likewise.
+	(DDD): Likewise.
+	(VX_MASK_DDD): New mask.
+	(HH): New operand.
+	(VX_RA_CONST): New macro.
+	(VX_RA_CONST_MASK): Likewise.
+	(VX_RB_CONST): Likewise.
+	(VX_RB_CONST_MASK): Likewise.
+	(VX_OFF_SPE2_MASK): Likewise.
+	(VX_SPE_CRFD): Likewise.
+	(VX_SPE_CRFD_MASK VX): Likewise.
+	(VX_SPE2_CLR): Likewise.
+	(VX_SPE2_CLR_MASK): Likewise.
+	(VX_SPE2_SPLATB): Likewise.
+	(VX_SPE2_SPLATB_MASK): Likewise.
+	(VX_SPE2_OCTET): Likewise.
+	(VX_SPE2_OCTET_MASK): Likewise.
+	(VX_SPE2_DDHH): Likewise.
+	(VX_SPE2_DDHH_MASK): Likewise.
+	(VX_SPE2_HH): Likewise.
+	(VX_SPE2_HH_MASK): Likewise.
+	(VX_SPE2_EVMAR): Likewise.
+	(VX_SPE2_EVMAR_MASK): Likewise.
+	(PPCSPE2): Likewise.
+	(PPCEFS2): Likewise.
+	(vle_opcodes): Add EFS2 and some missing SPE opcodes.
+	(powerpc_macros): Map old SPE instructions have new names
+	with the same opcodes. Add SPE2 instructions which just are
+	mapped to SPE2.
+	(spe2_opcodes): Add SPE2 opcodes.
+
 2017-08-21  Alexander Fedotov <alexander.fedotov@nxp.com>
 	    Edmar Wienskoski <edmar.wienskoski@nxp.com>
 
diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c
index d75e59d..0e2e185 100644
--- a/opcodes/ppc-dis.c
+++ b/opcodes/ppc-dis.c
@@ -120,7 +120,8 @@ struct ppc_mopt ppc_opts[] = {
   { "e200z4",  (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE| PPC_OPCODE_SPE
 		| PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
 		| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI
-		| PPC_OPCODE_E500 | PPC_OPCODE_VLE | PPC_OPCODE_E200Z4),
+		| PPC_OPCODE_E500 | PPC_OPCODE_VLE | PPC_OPCODE_E200Z4
+		| PPC_OPCODE_EFS2 | PPC_OPCODE_LSP),
     0 },
   { "e300",    PPC_OPCODE_PPC | PPC_OPCODE_E300,
     0 },
@@ -156,6 +157,8 @@ struct ppc_mopt ppc_opts[] = {
     0 },
   { "efs",     PPC_OPCODE_PPC | PPC_OPCODE_EFS,
     0 },
+  { "efs2",    PPC_OPCODE_PPC | PPC_OPCODE_EFS | PPC_OPCODE_EFS2,
+    0 },
   { "power4",  PPC_OPCODE_PPC | PPC_OPCODE_64 | PPC_OPCODE_POWER4,
     0 },
   { "power5",  (PPC_OPCODE_PPC | PPC_OPCODE_64 | PPC_OPCODE_POWER4
@@ -227,13 +230,15 @@ struct ppc_mopt ppc_opts[] = {
     PPC_OPCODE_RAW },
   { "spe",     PPC_OPCODE_PPC | PPC_OPCODE_EFS,
     PPC_OPCODE_SPE },
+  { "spe2",     PPC_OPCODE_PPC | PPC_OPCODE_EFS | PPC_OPCODE_EFS2 | PPC_OPCODE_SPE,
+    PPC_OPCODE_SPE2 },
   { "titan",   (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_PMR
 		| PPC_OPCODE_RFMCI | PPC_OPCODE_TITAN),
     0 },
   { "vle",     (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE| PPC_OPCODE_SPE
 		| PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
 		| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI
-		| PPC_OPCODE_E500 | PPC_OPCODE_LSP),
+		| PPC_OPCODE_LSP | PPC_OPCODE_EFS2 | PPC_OPCODE_SPE2),
     PPC_OPCODE_VLE },
   { "vsx",     PPC_OPCODE_PPC,
     PPC_OPCODE_VSX },
@@ -362,6 +367,8 @@ powerpc_init_dialect (struct disassemble_info *info)
 static unsigned short powerpc_opcd_indices[PPC_OPCD_SEGS+1];
 #define VLE_OPCD_SEGS 32
 static unsigned short vle_opcd_indices[VLE_OPCD_SEGS+1];
+#define SPE2_OPCD_SEGS 13
+static unsigned short spe2_opcd_indices[SPE2_OPCD_SEGS+1];
 
 /* Calculate opcode table indices to speed up disassembly,
    and init dialect.  */
@@ -409,6 +416,24 @@ disassemble_init_powerpc (struct disassemble_info *info)
         }
     }
 
+  /* SPE2 opcodes */
+  i = spe2_num_opcodes;
+  while (--i >= 0)
+    {
+      unsigned xop = SPE2_XOP (spe2_opcodes[i].opcode);
+      unsigned seg = SPE2_XOP_TO_SEG (xop);
+
+      spe2_opcd_indices[seg] = i;
+    }
+
+  last = spe2_num_opcodes;
+  for (i = SPE2_OPCD_SEGS; i > 1; --i)
+    {
+      if (spe2_opcd_indices[i] == 0)
+	spe2_opcd_indices[i] = last;
+      last = spe2_opcd_indices[i];
+    }
+
   if (info->arch == bfd_arch_powerpc)
     powerpc_init_dialect (info);
 }
@@ -596,6 +621,58 @@ lookup_vle (unsigned long insn)
   return NULL;
 }
 
+/* Find a match for INSN in the SPE2 opcode table.  */
+
+static const struct powerpc_opcode *
+lookup_spe2 (unsigned long insn)
+{
+  const struct powerpc_opcode *opcode, *opcode_end;
+  unsigned op, xop, seg;
+
+  op = PPC_OP (insn);
+  if (op != 0x4)
+    {
+      /* This is not SPE2 insn.
+       * All SPE2 instructions have OP=4 and differs by XOP  */
+      return NULL;
+    }
+  xop = SPE2_XOP (insn);
+  seg = SPE2_XOP_TO_SEG (xop);
+
+  /* Find the first match in the opcode table for this major opcode.  */
+  opcode_end = spe2_opcodes + spe2_opcd_indices[seg + 1];
+  for (opcode = spe2_opcodes + spe2_opcd_indices[seg];
+       opcode < opcode_end;
+       ++opcode)
+    {
+      unsigned long table_opcd = opcode->opcode;
+      unsigned long table_mask = opcode->mask;
+      unsigned long insn2;
+      const unsigned char *opindex;
+      const struct powerpc_operand *operand;
+      int invalid;
+
+      insn2 = insn;
+      if ((insn2 & table_mask) != table_opcd)
+	continue;
+
+      /* Check validity of operands.  */
+      invalid = 0;
+      for (opindex = opcode->operands; *opindex != 0; ++opindex)
+	{
+	  operand = powerpc_operands + *opindex;
+	  if (operand->extract)
+	    (*operand->extract) (insn, (ppc_cpu_t)0, &invalid);
+	}
+      if (invalid)
+	continue;
+
+      return opcode;
+    }
+
+  return NULL;
+}
+
 /* Print a PowerPC or POWER instruction.  */
 
 static int
@@ -646,6 +723,8 @@ print_insn_powerpc (bfd_vma memaddr,
       if (opcode != NULL)
 	insn_is_short = PPC_OP_SE_VLE(opcode->mask);
     }
+  if (opcode == NULL && (dialect & PPC_OPCODE_SPE2) != 0)
+    opcode = lookup_spe2 (insn);
   if (opcode == NULL)
     opcode = lookup_powerpc (insn, dialect & ~PPC_OPCODE_ANY);
   if (opcode == NULL && (dialect & PPC_OPCODE_ANY) != 0)
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 12eb1af..8938ebf 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -131,18 +131,26 @@ static unsigned long insert_vleui (unsigned long, long, ppc_cpu_t, const char **
 static long extract_vleui (unsigned long, ppc_cpu_t, int *);
 static unsigned long insert_vleil (unsigned long, long, ppc_cpu_t, const char **);
 static long extract_vleil (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_evuimm1_ex0 (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_evuimm1_ex0 (unsigned long, ppc_cpu_t, int *);
 static unsigned long insert_evuimm2_ex0 (unsigned long, long, ppc_cpu_t, const char **);
 static long extract_evuimm2_ex0 (unsigned long, ppc_cpu_t, int *);
 static unsigned long insert_evuimm4_ex0 (unsigned long, long, ppc_cpu_t, const char **);
 static long extract_evuimm4_ex0 (unsigned long, ppc_cpu_t, int *);
 static unsigned long insert_evuimm8_ex0 (unsigned long, long, ppc_cpu_t, const char **);
 static long extract_evuimm8_ex0 (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_evuimm_lt8 (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_evuimm_lt8 (unsigned long, ppc_cpu_t, int *);
 static unsigned long insert_evuimm_lt16 (unsigned long, long, ppc_cpu_t, const char **);
 static long extract_evuimm_lt16 (unsigned long, ppc_cpu_t, int *);
 static unsigned long insert_rD_rS_even (unsigned long, long, ppc_cpu_t, const char **);
 static long extract_rD_rS_even (unsigned long, ppc_cpu_t, int *);
 static unsigned long insert_off_lsp (unsigned long, long, ppc_cpu_t, const char **);
 static long extract_off_lsp (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_off_spe2 (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_off_spe2 (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_Ddd (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_Ddd (unsigned long, ppc_cpu_t, int *);
 
 /* The operands table.
 
@@ -255,6 +263,7 @@ const struct powerpc_operand powerpc_operands[] =
 
   /* The RM field in an X form instruction.  */
 #define RM BOE + 1
+#define DD RM
   { 0x3, 11, NULL, NULL, 0 },
 
 #define BH RM + 1
@@ -659,7 +668,10 @@ const struct powerpc_operand powerpc_operands[] =
 #define FC SH
   { 0x1f, 11, NULL, NULL, 0 },
 
-#define EVUIMM_LT16 SH + 1
+#define EVUIMM_LT8 SH + 1
+  { 0x1f, 11, insert_evuimm_lt8, extract_evuimm_lt8, 0 },
+
+#define EVUIMM_LT16 EVUIMM_LT8 + 1
   { 0x1f, 11, insert_evuimm_lt16, extract_evuimm_lt16, 0 },
 
   /* The SI field in a HTM X form instruction.  */
@@ -799,6 +811,8 @@ const struct powerpc_operand powerpc_operands[] =
 
   /* The SIX field in a VX form instruction.  */
 #define SIX UIM6 + 1
+  /* The MMMM field in a VX form instruction for SPE2  */
+#define MMMM SIX
   { 0xf, 11, NULL, NULL, 0 },
 
   /* The PS field in a VX form instruction.  */
@@ -810,7 +824,13 @@ const struct powerpc_operand powerpc_operands[] =
   { 0xf, 6, NULL, NULL, 0 },
 
   /* The other UIMM field in a half word EVX form instruction.  */
-#define EVUIMM_2 SHB + 1
+#define EVUIMM_1 SHB + 1
+  { 0x1f, 11, NULL, NULL, PPC_OPERAND_PARENS },
+
+#define EVUIMM_1_EX0 EVUIMM_1 + 1
+  { 0x1f, 11, insert_evuimm1_ex0, extract_evuimm1_ex0, PPC_OPERAND_PARENS },
+
+#define EVUIMM_2 EVUIMM_1_EX0 + 1
   { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
 
 #define EVUIMM_2_EX0 EVUIMM_2 + 1
@@ -833,6 +853,8 @@ const struct powerpc_operand powerpc_operands[] =
   /* The WS or DRM field in an X form instruction.  */
 #define WS EVUIMM_8_EX0 + 1
 #define DRM WS
+  /* The NNN field in a VX form instruction for SPE2  */
+#define NNN WS
   { 0x7, 11, NULL, NULL, 0 },
 
   /* PowerPC paired singles extensions.  */
@@ -1001,6 +1023,20 @@ const struct powerpc_operand powerpc_operands[] =
 
 #define VX_OFF IMM8 + 1
   { 0x3, 0, insert_off_lsp, extract_off_lsp, 0 },
+
+#define VX_OFF_SPE2 VX_OFF + 1
+  { 0x7, 0, insert_off_spe2, extract_off_spe2, 0 },
+
+#define BBB VX_OFF_SPE2 + 1
+  { 0x7, 13, NULL, NULL, 0 },
+
+#define DDD BBB + 1
+#define VX_MASK_DDD  (VX_MASK & ~0x1)
+  { 0x7, PPC_OPSHIFT_INV, insert_Ddd, extract_Ddd, 0 },
+
+#define HH DDD + 1
+  { 0x3, 13, NULL, NULL, 0 },
+
 };
 
 const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
@@ -2443,6 +2479,33 @@ extract_vleil (unsigned long insn,
 }
 
 static unsigned long
+insert_evuimm1_ex0 (unsigned long insn,
+	    long value,
+	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+	    const char **errmsg)
+{
+  if (value > 0 && value <= 0x1f)
+    return insn | ((value & 0x1f) << 11);
+  else
+    {
+      *errmsg = _("UIMM = 00000 is illegal");
+      return 0;
+    }
+}
+
+static long
+extract_evuimm1_ex0 (unsigned long insn,
+		     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+		     int *invalid)
+{
+  long value = ((insn >> 11) & 0x1f);
+  if (value == 0)
+    *invalid = 1;
+
+  return value;
+}
+
+static unsigned long
 insert_evuimm2_ex0 (unsigned long insn,
 		    long value,
 		    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
@@ -2524,6 +2587,33 @@ extract_evuimm8_ex0 (unsigned long insn,
 }
 
 static unsigned long
+insert_evuimm_lt8 (unsigned long insn,
+		   long value,
+		   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+		   const char **errmsg)
+{
+  if (value >= 0 && value <= 7)
+    return insn | ((value & 0x7) << 11);
+  else
+    {
+      *errmsg = _("UIMM values >7 are illegal");
+      return 0;
+    }
+}
+
+static long
+extract_evuimm_lt8 (unsigned long insn,
+		    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+		    int *invalid)
+{
+  long value = ((insn >> 11) & 0x1f);
+  if (value > 7)
+    *invalid = 1;
+
+  return value;
+}
+
+static unsigned long
 insert_evuimm_lt16 (unsigned long insn,
 		    long value,
 		    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
@@ -2603,6 +2693,56 @@ extract_off_lsp (unsigned long insn,
 
   return value;
 }
+
+static unsigned long
+insert_off_spe2 (unsigned long insn,
+		 long value,
+		 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+		 const char **errmsg)
+{
+  if (value > 0 && value <= 0x7)
+    return insn | (value & 0x7);
+  else
+    {
+      *errmsg = _("invalid offset");
+      return 0;
+    }
+}
+
+static long
+extract_off_spe2 (unsigned long insn,
+		  ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+		  int *invalid)
+{
+  long value = (insn & 0x7);
+  if (value == 0)
+    *invalid = 1;
+
+  return value;
+}
+
+static unsigned long
+insert_Ddd (unsigned long insn,
+	    long value,
+	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+	    const char **errmsg)
+{
+  if (value >= 0 && value <= 0x7)
+    return insn | ((value & 0x3) << 11) | ((value & 0x4) >> 2);
+  else
+    {
+      *errmsg = _("invalid Ddd value");
+      return 0;
+    }
+}
+
+static long
+extract_Ddd (unsigned long insn,
+	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+	     int *invalid ATTRIBUTE_UNUSED)
+{
+  return ((insn >> 11) & 0x3) | ((insn << 2) & 0x4);
+}
 
 /* Macros used to form opcodes.  */
 
@@ -2844,6 +2984,36 @@ extract_off_lsp (unsigned long insn,
 #define VX_LSP_MASK	VX_LSP(0x3f, 0xffff)
 #define VX_LSP_OFF_MASK	VX_LSP(0x3f, 0x7fc)
 
+/* Additional format of VX SPE2 form instruction.   */
+#define VX_RA_CONST(op, xop, bits11_15) (OP (op) | (((unsigned long)(bits11_15) & 0x1f) << 16) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_RA_CONST_MASK VX_RA_CONST(0x3f, 0x7ff, 0x1f)
+
+#define VX_RB_CONST(op, xop, bits16_20) (OP (op) | (((unsigned long)(bits16_20) & 0x1f) << 11) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_RB_CONST_MASK VX_RB_CONST(0x3f, 0x7ff, 0x1f)
+
+#define VX_OFF_SPE2_MASK VX(0x3f, 0x7f8)
+
+#define VX_SPE_CRFD(op, xop, bits9_10) (OP (op) | (((unsigned long)(bits9_10) & 0x3) << 21) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE_CRFD_MASK VX_SPE_CRFD(0x3f, 0x7ff, 0x3)
+
+#define VX_SPE2_CLR(op, xop, bit16) (OP (op) | (((unsigned long)(bit16) & 0x1) << 15) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_CLR_MASK VX_SPE2_CLR(0x3f, 0x7ff, 0x1)
+
+#define VX_SPE2_SPLATB(op, xop, bits19_20) (OP (op) | (((unsigned long)(bits19_20) & 0x3) << 11) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_SPLATB_MASK VX_SPE2_SPLATB(0x3f, 0x7ff, 0x3)
+
+#define VX_SPE2_OCTET(op, xop, bits16_17) (OP (op) | (((unsigned long)(bits16_17) & 0x3) << 14) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_OCTET_MASK VX_SPE2_OCTET(0x3f, 0x7ff, 0x7)
+
+#define VX_SPE2_DDHH(op, xop, bit16) (OP (op) | (((unsigned long)(bit16) & 0x1) << 15) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_DDHH_MASK VX_SPE2_DDHH(0x3f, 0x7ff, 0x1)
+
+#define VX_SPE2_HH(op, xop, bit16, bits19_20) (OP (op) |(((unsigned long)(bit16) & 0x1) << 15) |  (((unsigned long)(bits19_20) & 0x3) << 11) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_HH_MASK VX_SPE2_HH(0x3f, 0x7ff, 0x1, 0x3)
+
+#define VX_SPE2_EVMAR(op, xop) (OP (op) | ((unsigned long)(0x1) << 11) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_EVMAR_MASK (VX_SPE2_EVMAR(0x3f, 0x7ff) | ((unsigned long)(0x1) << 11))
+
 /* A VX_MASK with the VA field fixed.  */
 #define VXVA_MASK (VX_MASK | (0x1f << 16))
 
@@ -3308,8 +3478,10 @@ extract_off_lsp (unsigned long insn,
 #define NO371	PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
 #define PPCE300 PPC_OPCODE_E300
 #define PPCSPE	PPC_OPCODE_SPE
+#define PPCSPE2 PPC_OPCODE_SPE2
 #define PPCISEL PPC_OPCODE_ISEL
 #define PPCEFS	PPC_OPCODE_EFS
+#define PPCEFS2	PPC_OPCODE_EFS2
 #define PPCBRLK PPC_OPCODE_BRLOCK
 #define PPCPMR	PPC_OPCODE_PMR
 #define PPCTMR  PPC_OPCODE_TMR
@@ -3651,16 +3823,21 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"evfsadd",	VX (4, 640),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"vadduws",	VX (4, 640),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
 {"evfssub",	VX (4, 641),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
+{"evfsmadd",	VX (4, 642),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"vminuw",	VX (4, 642),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
+{"evfsmsub",	VX (4, 643),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"evfsabs",	VX (4, 644),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
 {"vsrw",	VX (4, 644),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
 {"evfsnabs",	VX (4, 645),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
 {"evfsneg",	VX (4, 646),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
 {"vcmpgtuw",	VXR(4, 646,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
+{"evfssqrt",	VX_RB_CONST(4, 647, 0),  VX_RB_CONST_MASK,	PPCEFS2,	0,		{RD, RA}},
 {"vmuleuw",	VX (4, 648),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
 {"evfsmul",	VX (4, 648),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"evfsdiv",	VX (4, 649),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
+{"evfsnmadd",	VX (4, 650),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"vrfip",	VX (4, 650),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
+{"evfsnmsub",	VX (4, 651),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"evfscmpgt",	VX (4, 652),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
 {"vspltw",	VX (4, 652),   VXUIMM2_MASK, PPCVEC,	0,		{VD, VB, UIMM2}},
 {"vextractuw",	VX (4, 653),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
@@ -3668,10 +3845,12 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"evfscmpeq",	VX (4, 654),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
 {"vupklsb",	VX (4, 654),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
 {"evfscfui",	VX (4, 656),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
+{"evfscfh",	VX_RA_CONST(4, 657, 4),  VX_RA_CONST_MASK,	PPCEFS2,	0,		{RD, RB}},
 {"evfscfsi",	VX (4, 657),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
 {"evfscfuf",	VX (4, 658),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
 {"evfscfsf",	VX (4, 659),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
 {"evfsctui",	VX (4, 660),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
+{"evfscth",	VX_RA_CONST(4, 661, 4),  VX_RA_CONST_MASK,	PPCEFS2,	0,		{RD, RB}},
 {"evfsctsi",	VX (4, 661),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
 {"evfsctuf",	VX (4, 662),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
 {"evfsctsf",	VX (4, 663),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
@@ -3681,19 +3860,43 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"evfststgt",	VX (4, 668),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
 {"evfststlt",	VX (4, 669),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
 {"evfststeq",	VX (4, 670),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
+{"evfsmax",	VX (4, 672),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfsmin",	VX (4, 673),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfsaddsub",	VX (4, 674),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfssubadd",	VX (4, 675),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfssum",	VX (4, 676),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfsdiff",	VX (4, 677),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfssumdiff",	VX (4, 678),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfsdiffsum",	VX (4, 679),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfsaddx",	VX (4, 680),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfssubx",	VX (4, 681),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfsaddsubx",	VX (4, 682),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfssubaddx",	VX (4, 683),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfsmulx",	VX (4, 684),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfsmule",	VX (4, 686),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"evfsmulo",	VX (4, 687),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"efsmax",	VX (4, 688),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"efsmin",	VX (4, 689),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
+{"efdmax",	VX (4, 696),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
 {"cput",	APU(4, 348,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
+{"efdmin",	VX (4, 697),	VX_MASK,     PPCEFS2,	0,		{RD, RA, RB}},
 {"efsadd",	VX (4, 704),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
 {"efssub",	VX (4, 705),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
+{"efsmadd",	VX (4, 706),	VX_MASK,     PPCEFS2,	0,		{RS, RA, RB}},
 {"vminud",	VX (4, 706),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
+{"efsmsub",	VX (4, 707),	VX_MASK,     PPCEFS2,	0,		{RS, RA, RB}},
 {"efsabs",	VX (4, 708),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
 {"vsr",		VX (4, 708),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
 {"efsnabs",	VX (4, 709),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
 {"efsneg",	VX (4, 710),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
 {"vcmpgtfp",	VXR(4, 710,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
+{"efssqrt",	VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK,PPCEFS2, 0,	{RD, RA}},
 {"vcmpgtud",	VXR(4, 711,0),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
 {"efsmul",	VX (4, 712),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
 {"efsdiv",	VX (4, 713),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
+{"efsnmadd",	VX (4, 714),	VX_MASK,     PPCEFS2,	0,		{RS, RA, RB}},
 {"vrfim",	VX (4, 714),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
+{"efsnmsub",	VX (4, 715),	VX_MASK,     PPCEFS2,	0,		{RS, RA, RB}},
 {"efscmpgt",	VX (4, 716),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
 {"vextractd",	VX (4, 717),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
 {"efscmplt",	VX (4, 717),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
@@ -3701,10 +3904,12 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"vupklsh",	VX (4, 718),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
 {"efscfd",	VX (4, 719),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efscfui",	VX (4, 720),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
+{"efscfh",	VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCEFS2, 0,	{RD, RB}},
 {"efscfsi",	VX (4, 721),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efscfuf",	VX (4, 722),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efscfsf",	VX (4, 723),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efsctui",	VX (4, 724),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
+{"efscth",	VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCEFS2, 0,	{RD, RB}},
 {"efsctsi",	VX (4, 725),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efsctuf",	VX (4, 726),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efsctsf",	VX (4, 727),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
@@ -3716,30 +3921,41 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"efststeq",	VX (4, 734),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
 {"efdadd",	VX (4, 736),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
 {"efdsub",	VX (4, 737),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
-{"efdcfuid",	VX (4, 738),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
-{"efdcfsid",	VX (4, 739),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
+{"efdmadd",	VX (4, 738),	VX_MASK,     PPCEFS2, 	E500|E500MC,	{RD, RA, RB}},
+{"efdcfuid",	VX (4, 738),	VX_MASK,     E500|E500MC,0,		{RS, RB}},
+{"efdmsub",	VX (4, 739),	VX_MASK,     PPCEFS2, 	E500|E500MC,	{RD, RA, RB}},
+{"efdcfsid",	VX (4, 739),	VX_MASK,     E500|E500MC,0,		{RS, RB}},
 {"efdabs",	VX (4, 740),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
 {"efdnabs",	VX (4, 741),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
 {"efdneg",	VX (4, 742),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
+{"efdsqrt",	VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCEFS2, 0,	{RD, RA}},
 {"efdmul",	VX (4, 744),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
 {"efddiv",	VX (4, 745),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
-{"efdctuidz",	VX (4, 746),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
-{"efdctsidz",	VX (4, 747),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
+{"efdnmadd",	VX (4, 746),	VX_MASK,     PPCEFS2, 	E500|E500MC,	{RD, RA, RB}},
+{"efdctuidz",	VX (4, 746),	VX_MASK,     E500|E500MC,0,		{RS, RB}},
+{"efdnmsub",	VX (4, 747),	VX_MASK,     PPCEFS2, 	E500|E500MC,	{RD, RA, RB}},
+{"efdctsidz",	VX (4, 747),	VX_MASK,     E500|E500MC,0,		{RS, RB}},
 {"efdcmpgt",	VX (4, 748),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
 {"efdcmplt",	VX (4, 749),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
 {"efdcmpeq",	VX (4, 750),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
 {"efdcfs",	VX (4, 751),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
-{"efdcfui",	VX (4, 752),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
-{"efdcfsi",	VX (4, 753),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
+{"efdcfui",	VX_RA_CONST(4, 752, 0), VX_RA_CONST_MASK, PPCEFS, 0,	{RS, RB}},
+{"efdcfuid",	VX_RA_CONST(4, 752, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,	{RS, RB}},
+{"efdcfsi",	VX_RA_CONST(4, 753, 0), VX_RA_CONST_MASK, PPCEFS, 0,	{RS, RB}},
+{"efdcfsid",	VX_RA_CONST(4, 753, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,	{RS, RB}},
+{"efdcfh",	VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCEFS2, 0,	{RD, RB}},
 {"efdcfuf",	VX (4, 754),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efdcfsf",	VX (4, 755),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efdctui",	VX (4, 756),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
+{"efdcth",	VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCEFS2, 0,	{RD, RB}},
 {"efdctsi",	VX (4, 757),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efdctuf",	VX (4, 758),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
 {"efdctsf",	VX (4, 759),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
-{"efdctuiz",	VX (4, 760),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
+{"efdctuiz",	VX_RA_CONST(4, 760, 0), VX_RA_CONST_MASK, PPCEFS, 0,	{RS, RB}},
+{"efdctuidz",	VX_RA_CONST(4, 760, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,	{RS, RB}},
 {"ncput",	APU(4, 380,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
-{"efdctsiz",	VX (4, 762),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
+{"efdctsiz",	VX_RA_CONST(4, 762, 0), VX_RA_CONST_MASK, PPCEFS, 0,	{RS, RB}},
+{"efdctsidz",	VX_RA_CONST(4, 762, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,	{RS, RB}},
 {"efdtstgt",	VX (4, 764),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
 {"efdtstlt",	VX (4, 765),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
 {"efdtsteq",	VX (4, 766),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
@@ -3868,6 +4084,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"vsubuhm",	VX (4,1088),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
 {"bcdsub.",	VX (4,1089),	VXPS_MASK,   PPCVEC2,	0,		{VD, VA, VB, PS}},
 {"vavguh",	VX (4,1090),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
+{"evmwlssf",	VX (4,1091),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vabsduh",	VX (4,1091),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
 {"vandc",	VX (4,1092),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
 {"vcmpequh.",	VXR(4,	70,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
@@ -3878,6 +4095,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"vpmsumh",	VX (4,1096),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
 {"evmwlumi",	VX (4,1096),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"vminfp",	VX (4,1098),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
+{"evmwlsmf",	VX (4,1099),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"evmwhumi",	VX (4,1100),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"vsro",	VX (4,1100),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
 {"evmwhsmi",	VX (4,1101),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
@@ -3893,8 +4111,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"nmachhwo.",	XO (4,	46,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
 {"ps_merge01",	XOPS(4,560,0),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
 {"ps_merge01.",	XOPS(4,560,1),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
+{"evmwlssfa",	VX (4,1123),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"evmwhssfa",	VX (4,1127),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"evmwlumia",	VX (4,1128),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
+{"evmwlsmfa",	VX (4,1131),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"evmwhumia",	VX (4,1132),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"evmwhsmia",	VX (4,1133),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"evmwhsmfa",	VX (4,1135),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
@@ -3979,16 +4199,24 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"bcdutrunc.",	VX (4,1345),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
 {"evmwlssiaaw",	VX (4,1345),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"vavgsh",	VX (4,1346),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
+{"evmwlssfaaw",	VX (4,1347),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhusiaa",	VX (4,1348),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vorc",	VX (4,1348),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
+{"evmwhssmaa",	VX (4,1349),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"udi5fcm.",	APU(4, 675,0),	APU_MASK, PPC405|PPC440, 0,		{URT, URA, URB}},
 {"udi5fcm",	APU(4, 675,1),	APU_MASK, PPC405|PPC440, 0,		{URT, URA, URB}},
 {"vcmpnezh.",	VXR(4, 327,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
+{"evmwhssfaa",	VX (4,1351),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vncipher",	VX (4,1352),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
 {"evmwlumiaaw",	VX (4,1352),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"vncipherlast",VX (4,1353),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
 {"evmwlsmiaaw",	VX (4,1353),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
+{"evmwlsmfaaw",	VX (4,1355),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhumiaa",	VX (4,1356),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vbpermq",	VX (4,1356),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
+{"evmwhsmiaa",	VX (4,1357),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vpksdus",	VX (4,1358),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
+{"evmwhsmfaa",	VX (4,1359),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"evmwssfaa",	VX (4,1363),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"macchwo",	XO (4, 172,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
 {"evmwumiaa",	VX (4,1368),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
@@ -3997,6 +4225,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"evmwsmfaa",	VX (4,1371),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"nmacchwo",	XO (4, 174,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
 {"nmacchwo.",	XO (4, 174,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
+{"evmwhgumiaa",	VX (4,1380),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhgsmiaa",	VX (4,1381),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhgssfaa",	VX (4,1383),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhgsmfaa",	VX (4,1391),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"evmheusianw",	VX (4,1408),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"vsubcuw",	VX (4,1408),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
 {"evmhessianw",	VX (4,1409),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
@@ -4033,21 +4265,33 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"evmwlusianw",	VX (4,1472),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"bcdsr.",	VX (4,1473),	VXPS_MASK,   PPCVEC3,	0,		{VD, VA, VB, PS}},
 {"evmwlssianw",	VX (4,1473),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
+{"evmwlssfanw",	VX (4,1475),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhusian",	VX (4,1476),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vsld",	VX (4,1476),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
+{"evmwhssian",	VX (4,1477),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vcmpgefp.",	VXR(4, 454,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
 {"udi7fcm.",	APU(4, 739,0),	APU_MASK, PPC405|PPC440, 0,		{URT, URA, URB}},
 {"udi7fcm",	APU(4, 739,1),	APU_MASK, PPC405|PPC440, 0,		{URT, URA, URB}},
+{"evmwhssfan",	VX (4,1479),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vsbox",	VX (4,1480),	VXVB_MASK,   PPCVEC2,	0,		{VD, VA}},
 {"evmwlumianw",	VX (4,1480),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"evmwlsmianw",	VX (4,1481),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
+{"evmwlsmfanw",	VX (4,1483),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhumian",	VX (4,1484),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vbpermd",	VX (4,1484),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
+{"evmwhsmian",	VX (4,1485),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"vpksdss",	VX (4,1486),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
+{"evmwhsmfan",	VX (4,1487),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"evmwssfan",	VX (4,1491),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"macchwso",	XO (4, 236,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
 {"evmwumian",	VX (4,1496),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"macchwso.",	XO (4, 236,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
 {"evmwsmian",	VX (4,1497),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
 {"evmwsmfan",	VX (4,1499),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
+{"evmwhgumian",	VX (4,1508),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhgsmian",	VX (4,1509),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhgssfan",	VX (4,1511),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
+{"evmwhgsmfan",	VX (4,1519),	VX_MASK,     PPCSPE,	0,		{RD, RA, RB}},
 {"nmacchwso",	XO (4, 238,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
 {"nmacchwso.",	XO (4, 238,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
 {"vsububs",	VX (4,1536),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
@@ -6377,6 +6621,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"srad",	XRC(31,794,0),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
 {"srad.",	XRC(31,794,1),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
 
+{"evlddepx",    VX (31, 1598),	VX_MASK,     PPCSPE,	0,		{RT, RA, RB}},
 {"lfddx",	X(31,803),	X_MASK,	     E500MC,	0,		{FRT, RA, RB}},
 
 {"lvtrxl",	X(31,805),	X_MASK,	     E6500,	0,		{VD, RA0, RB}},
@@ -6495,6 +6740,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"extsh.",	XRC(31,922,1),	XRB_MASK,    PPCCOM,	0,		{RA, RS}},
 {"exts.",	XRC(31,922,1),	XRB_MASK,    PWRCOM,	0,		{RA, RS}},
 
+{"evstddepx",	VX (31, 1854),	VX_MASK,     PPCSPE,	0,		{RT, RA, RB}},
 {"stfddx",	X(31,931),	X_MASK,	     E500MC,	0,		{FRS, RA, RB}},
 
 {"stvfrxl",	X(31,933),	X_MASK,	     E6500,	0,		{VS, RA0, RB}},
@@ -8280,7 +8526,829 @@ const struct powerpc_macro powerpc_macros[] = {
 {"e_clrlwi", 3,	PPCVLE, "e_rlwinm %0,%1,0,%2,31"},
 {"e_clrrwi", 3,	PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"},
 {"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
+
+/* old SPE instructions have new names with the same opcodes */
+{"evsadd",      3, PPCSPE|PPCVLE, "efsadd %0,%1,%2"},
+{"evssub",      3, PPCSPE|PPCVLE, "efssub %0,%1,%2"},
+{"evsabs",      2, PPCSPE|PPCVLE, "efsabs %0,%1"},
+{"evsnabs",     2, PPCSPE|PPCVLE, "efsnabs %0,%1"},
+{"evsneg",      2, PPCSPE|PPCVLE, "efsneg %0,%1"},
+{"evsmul",	3, PPCSPE|PPCVLE, "efsmul %0,%1,%2"},
+{"evsdiv",	3, PPCSPE|PPCVLE, "efsdiv %0,%1,%2"},
+{"evscmpgt",	3, PPCSPE|PPCVLE, "efscmpgt %0,%1,%2"},
+{"evsgmplt",	3, PPCSPE|PPCVLE, "efscmplt %0,%1,%2"},
+{"evsgmpeq",    3, PPCSPE|PPCVLE, "efscmpeq %0,%1,%2"},
+{"evscfui",     2, PPCSPE|PPCVLE, "efscfui %0,%1"},
+{"evscfsi",     2, PPCSPE|PPCVLE, "efscfsi %0,%1"},
+{"evscfuf",     2, PPCSPE|PPCVLE, "efscfuf %0,%1"},
+{"evscfsf",     2, PPCSPE|PPCVLE, "efscfsf %0,%1"},
+{"evsctui",     2, PPCSPE|PPCVLE, "efsctui %0,%1"},
+{"evsctsi",     2, PPCSPE|PPCVLE, "efsctsi %0,%1"},
+{"evsctuf",     2, PPCSPE|PPCVLE, "efsctuf %0,%1"},
+{"evsctsf",     2, PPCSPE|PPCVLE, "efsctsf %0,%1"},
+{"evsctuiz",    2, PPCSPE|PPCVLE, "efsctuiz %0,%1"},
+{"evsctsiz",    2, PPCSPE|PPCVLE, "efsctsiz %0,%1"},
+{"evststgt",    3, PPCSPE|PPCVLE, "efststgt %0,%1,%2"},
+{"evststlt",    3, PPCSPE|PPCVLE, "efststlt %0,%1,%2"},
+{"evststeq",    3, PPCSPE|PPCVLE, "efststeq %0,%1,%2"},
+
+/* SPE2 instructions which just are mapped to SPE2 */
+{"evdotphsssi",  3, PPCSPE2, "evdotphssmi %0,%1,%2"},
+{"evdotphsssia", 3, PPCSPE2, "evdotphssmia %0,%1,%2"},
+{"evdotpwsssi",  3, PPCSPE2, "evdotpwssmi %0,%1,%2"},
+{"evdotpwsssia", 3, PPCSPE2, "evdotpwssmia %0,%1,%2"}
 };
 
 const int powerpc_num_macros =
   sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
+
+/* SPE v2 instruction set from SPE2PIM Rev. 2 08/2011 */
+const struct powerpc_opcode spe2_opcodes[] = {
+{"evdotpwcssi",		  VX (4, 128),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcsmi",		  VX (4, 129),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfr",	  VX (4, 130),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssf",		  VX (4, 131),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmf",	  VX (4, 136),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmf",	  VX (4, 137),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfr",	  VX (4, 138),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfr",	  VX (4, 139),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmf",	  VX (4, 140),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmf",	  VX (4, 141),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfr",	  VX (4, 142),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfr",	  VX (4, 143),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssiaaw3",	  VX (4, 144),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcsmiaaw3",	  VX (4, 145),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfraaw3",	  VX (4, 146),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfaaw3",	  VX (4, 147),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfaa3",	  VX (4, 152),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfaa3",	  VX (4, 153),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfraa3",	  VX (4, 154),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfraa3",	  VX (4, 155),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfaa3",	  VX (4, 156),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfaa3",	  VX (4, 157),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfraa3",	  VX (4, 158),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfraa3",	  VX (4, 159),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssia",	  VX (4, 160),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcsmia",	  VX (4, 161),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfra",	  VX (4, 162),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfa",	  VX (4, 163),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfa",	  VX (4, 168),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfa",	  VX (4, 169),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfra",	  VX (4, 170),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfra",	  VX (4, 171),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfa",	  VX (4, 172),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfa",	  VX (4, 173),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfra",	  VX (4, 174),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfra",	  VX (4, 175),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssiaaw",	  VX (4, 176),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcsmiaaw",	  VX (4, 177),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfraaw",	  VX (4, 178),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfaaw",	  VX (4, 179),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfaa",	  VX (4, 184),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfaa",	  VX (4, 185),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfraa",	  VX (4, 186),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfraa",	  VX (4, 187),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfaa",	  VX (4, 188),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfaa",	  VX (4, 189),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfraa",	  VX (4, 190),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfraa",	  VX (4, 191),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssi",	  VX (4, 256),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssi",	  VX (4, 257),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssf",	  VX (4, 258),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssf",	  VX (4, 259),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcsmi",	  VX (4, 264),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcsmi",	  VX (4, 265),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfr",	  VX (4, 266),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfr",	  VX (4, 267),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssiaaw3",	  VX (4, 272),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssiaaw3",	  VX (4, 273),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfaaw3",	  VX (4, 274),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfaaw3",	  VX (4, 275),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcsmiaaw3",	  VX (4, 280),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcsmiaaw3",	  VX (4, 281),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfraaw3",	  VX (4, 282),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfraaw3",	  VX (4, 283),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssia",	  VX (4, 288),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssia",	  VX (4, 289),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfa",	  VX (4, 290),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfa",	  VX (4, 291),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcsmia",	  VX (4, 296),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcsmia",	  VX (4, 297),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfra",	  VX (4, 298),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfra",	  VX (4, 299),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssiaaw",	  VX (4, 304),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssiaaw",	  VX (4, 305),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfaaw",	  VX (4, 306),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfaaw",	  VX (4, 307),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcsmiaaw",	  VX (4, 312),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcsmiaaw",	  VX (4, 313),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfraaw",	  VX (4, 314),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfraaw",	  VX (4, 315),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphausi",		  VX (4, 320),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassi",		  VX (4, 321),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasusi",	  VX (4, 322),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassf",		  VX (4, 323),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssf",		  VX (4, 327),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphaumi",		  VX (4, 328),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasmi",		  VX (4, 329),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasumi",	  VX (4, 330),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfr",	  VX (4, 331),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphssmi",		  VX (4, 333),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfr",	  VX (4, 335),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphausiaaw3",	  VX (4, 336),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassiaaw3",	  VX (4, 337),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasusiaaw3",	  VX (4, 338),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfaaw3",	  VX (4, 339),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssiaaw3",	  VX (4, 341),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfaaw3",	  VX (4, 343),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphaumiaaw3",	  VX (4, 344),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasmiaaw3",	  VX (4, 345),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasumiaaw3",	  VX (4, 346),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfraaw3",	  VX (4, 347),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphssmiaaw3",	  VX (4, 349),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfraaw3",	  VX (4, 351),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphausia",	  VX (4, 352),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassia",	  VX (4, 353),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasusia",	  VX (4, 354),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfa",	  VX (4, 355),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfa",	  VX (4, 359),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphaumia",	  VX (4, 360),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasmia",	  VX (4, 361),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasumia",	  VX (4, 362),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfra",	  VX (4, 363),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphssmia",	  VX (4, 365),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfra",	  VX (4, 367),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphausiaaw",	  VX (4, 368),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassiaaw",	  VX (4, 369),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasusiaaw",	  VX (4, 370),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfaaw",	  VX (4, 371),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssiaaw",	  VX (4, 373),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfaaw",	  VX (4, 375),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphaumiaaw",	  VX (4, 376),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasmiaaw",	  VX (4, 377),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasumiaaw",	  VX (4, 378),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfraaw",	  VX (4, 379),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphssmiaaw",	  VX (4, 381),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfraaw",	  VX (4, 383),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgaumi",	  VX (4, 384),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmi",	  VX (4, 385),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasumi",	  VX (4, 386),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmf",	  VX (4, 387),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmi",	  VX (4, 388),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmf",	  VX (4, 389),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmi",	  VX (4, 390),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmf",	  VX (4, 391),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbaumi",		  VX (4, 392),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasmi",		  VX (4, 393),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasumi",	  VX (4, 394),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmi",	  VX (4, 398),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmf",	  VX (4, 399),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgaumiaa3",	  VX (4, 400),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmiaa3",	  VX (4, 401),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasumiaa3",	  VX (4, 402),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmfaa3",	  VX (4, 403),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmiaa3",	  VX (4, 404),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmfaa3",	  VX (4, 405),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmiaa3",	  VX (4, 406),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmfaa3",	  VX (4, 407),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbaumiaaw3",	  VX (4, 408),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasmiaaw3",	  VX (4, 409),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasumiaaw3",	  VX (4, 410),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmiaa3",	  VX (4, 414),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmfaa3",	  VX (4, 415),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgaumia",	  VX (4, 416),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmia",	  VX (4, 417),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasumia",	  VX (4, 418),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmfa",	  VX (4, 419),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmia",	  VX (4, 420),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmfa",	  VX (4, 421),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmia",	  VX (4, 422),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmfa",	  VX (4, 423),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbaumia",	  VX (4, 424),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasmia",	  VX (4, 425),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasumia",	  VX (4, 426),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmia",	  VX (4, 430),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmfa",	  VX (4, 431),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgaumiaa",	  VX (4, 432),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmiaa",	  VX (4, 433),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasumiaa",	  VX (4, 434),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmfaa",	  VX (4, 435),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmiaa",	  VX (4, 436),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmfaa",	  VX (4, 437),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmiaa",	  VX (4, 438),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmfaa",	  VX (4, 439),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbaumiaaw",	  VX (4, 440),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasmiaaw",	  VX (4, 441),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasumiaaw",	  VX (4, 442),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmiaa",	  VX (4, 446),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmfaa",	  VX (4, 447),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwausi",		  VX (4, 448),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwassi",		  VX (4, 449),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasusi",	  VX (4, 450),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwaumi",		  VX (4, 456),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasmi",		  VX (4, 457),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasumi",	  VX (4, 458),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwssmi",		  VX (4, 461),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwausiaa3",	  VX (4, 464),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwassiaa3",	  VX (4, 465),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasusiaa3",	  VX (4, 466),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwsssiaa3",	  VX (4, 469),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwaumiaa3",	  VX (4, 472),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasmiaa3",	  VX (4, 473),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasumiaa3",	  VX (4, 474),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwssmiaa3",	  VX (4, 477),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwausia",	  VX (4, 480),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwassia",	  VX (4, 481),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasusia",	  VX (4, 482),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwaumia",	  VX (4, 488),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasmia",	  VX (4, 489),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasumia",	  VX (4, 490),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwssmia",	  VX (4, 493),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwausiaa",	  VX (4, 496),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwassiaa",	  VX (4, 497),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasusiaa",	  VX (4, 498),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwsssiaa",	  VX (4, 501),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwaumiaa",	  VX (4, 504),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasmiaa",	  VX (4, 505),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasumiaa",	  VX (4, 506),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwssmiaa",	  VX (4, 509),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddib",		  VX (4, 515),		VX_MASK,		PPCSPE2, 0, {RD, RB, UIMM}},
+{"evaddih",		  VX (4, 513),		VX_MASK,		PPCSPE2, 0, {RD, RB, UIMM}},
+{"evsubifh",		  VX (4, 517),		VX_MASK,		PPCSPE2, 0, {RD, UIMM, RB}},
+{"evsubifb",		  VX (4, 519),		VX_MASK,		PPCSPE2, 0, {RD, UIMM, RB}},
+{"evabsb",		  VX_RB_CONST(4, 520, 2),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evabsh",		  VX_RB_CONST(4, 520, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evabsd",		  VX_RB_CONST(4, 520, 6),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evabss",		  VX_RB_CONST(4, 520, 8),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evabsbs",		  VX_RB_CONST(4, 520, 10), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evabshs",		  VX_RB_CONST(4, 520, 12), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evabsds",		  VX_RB_CONST(4, 520, 14), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegwo",		  VX_RB_CONST(4, 521, 1),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegb",		  VX_RB_CONST(4, 521, 2),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegbo",		  VX_RB_CONST(4, 521, 3),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegh",		  VX_RB_CONST(4, 521, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegho",		  VX_RB_CONST(4, 521, 5),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegd",		  VX_RB_CONST(4, 521, 6),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegs",		  VX_RB_CONST(4, 521, 8),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegwos",		  VX_RB_CONST(4, 521, 9),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegbs",		  VX_RB_CONST(4, 521, 10), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegbos",		  VX_RB_CONST(4, 521, 11), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evneghs",		  VX_RB_CONST(4, 521, 12), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evneghos",		  VX_RB_CONST(4, 521, 13), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evnegds",		  VX_RB_CONST(4, 521, 14), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evextzb",		  VX_RB_CONST(4, 522, 1),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evextsbh",		  VX_RB_CONST(4, 522, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evextsw",		  VX_RB_CONST(4, 523, 6),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndwh",		  VX_RB_CONST(4, 524, 0),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndhb",		  VX_RB_CONST(4, 524, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrnddw",		  VX_RB_CONST(4, 524, 6),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndwhus",		  VX_RB_CONST(4, 524, 8),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndwhss",		  VX_RB_CONST(4, 524, 9),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndhbus",		  VX_RB_CONST(4, 524, 12), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndhbss",		  VX_RB_CONST(4, 524, 13), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrnddwus",		  VX_RB_CONST(4, 524, 14), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrnddwss",		  VX_RB_CONST(4, 524, 15), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndwnh",		  VX_RB_CONST(4, 524, 16), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndhnb",		  VX_RB_CONST(4, 524, 20), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrnddnw",		  VX_RB_CONST(4, 524, 22), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndwnhus",		  VX_RB_CONST(4, 524, 24), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndwnhss",		  VX_RB_CONST(4, 524, 25), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndhnbus",		  VX_RB_CONST(4, 524, 28), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrndhnbss",		  VX_RB_CONST(4, 524, 29), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrnddnwus",		  VX_RB_CONST(4, 524, 30), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evrnddnwss",		  VX_RB_CONST(4, 524, 31), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evcntlzh",		  VX_RB_CONST(4, 525, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evcntlsh",		  VX_RB_CONST(4, 526, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evpopcntb",		  VX_RB_CONST(4, 526, 26), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"circinc",		  VX (4, 528),		   VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evunpkhibui",		  VX_RB_CONST(4, 540, 0),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpkhibsi",		  VX_RB_CONST(4, 540, 1),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpkhihui",		  VX_RB_CONST(4, 540, 2),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpkhihsi",		  VX_RB_CONST(4, 540, 3),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpklobui",		  VX_RB_CONST(4, 540, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpklobsi",		  VX_RB_CONST(4, 540, 5),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpklohui",		  VX_RB_CONST(4, 540, 6),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpklohsi",		  VX_RB_CONST(4, 540, 7),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpklohf",		  VX_RB_CONST(4, 540, 8),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpkhihf",		  VX_RB_CONST(4, 540, 9),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpklowgsf",	  VX_RB_CONST(4, 540, 12), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evunpkhiwgsf",	  VX_RB_CONST(4, 540, 13), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatsduw",		  VX_RB_CONST(4, 540, 16), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatsdsw",		  VX_RB_CONST(4, 540, 17), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatshub",		  VX_RB_CONST(4, 540, 18), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatshsb",		  VX_RB_CONST(4, 540, 19), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatuwuh",		  VX_RB_CONST(4, 540, 20), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatswsh",		  VX_RB_CONST(4, 540, 21), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatswuh",		  VX_RB_CONST(4, 540, 22), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatuhub",		  VX_RB_CONST(4, 540, 23), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatuduw",		  VX_RB_CONST(4, 540, 24), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatuwsw",		  VX_RB_CONST(4, 540, 25), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatshuh",		  VX_RB_CONST(4, 540, 26), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatuhsh",		  VX_RB_CONST(4, 540, 27), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatswuw",		  VX_RB_CONST(4, 540, 28), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatswgsdf",		  VX_RB_CONST(4, 540, 29), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatsbub",		  VX_RB_CONST(4, 540, 30), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsatubsb",		  VX_RB_CONST(4, 540, 31), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evmaxhpuw",		  VX_RB_CONST(4, 541, 0),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evmaxhpsw",		  VX_RB_CONST(4, 541, 1),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evmaxbpuh",		  VX_RB_CONST(4, 541, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evmaxbpsh",		  VX_RB_CONST(4, 541, 5),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evmaxwpud",		  VX_RB_CONST(4, 541, 6),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evmaxwpsd",		  VX_RB_CONST(4, 541, 7),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evminhpuw",		  VX_RB_CONST(4, 541, 8),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evminhpsw",		  VX_RB_CONST(4, 541, 9),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evminbpuh",		  VX_RB_CONST(4, 541, 12), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evminbpsh",		  VX_RB_CONST(4, 541, 13), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evminwpud",		  VX_RB_CONST(4, 541, 14), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evminwpsd",		  VX_RB_CONST(4, 541, 15), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evmaxmagws",		  VX (4, 543),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsl",		  VX (4, 549),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsli",		  VX (4, 551),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM}},
+{"evsplatie",		  VX_RB_CONST (4, 553, 1),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatib",		  VX_RB_CONST (4, 553, 2),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatibe",		  VX_RB_CONST (4, 553, 3),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatih",		  VX_RB_CONST (4, 553, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatihe",		  VX_RB_CONST (4, 553, 5),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatid",		  VX_RB_CONST (4, 553, 6),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatia",		  VX_RB_CONST (4, 553, 16), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatiea",		  VX_RB_CONST (4, 553, 17), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatiba",		  VX_RB_CONST (4, 553, 18), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatibea",		  VX_RB_CONST (4, 553, 19), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatiha",		  VX_RB_CONST (4, 553, 20), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatihea",		  VX_RB_CONST (4, 553, 21), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatida",		  VX_RB_CONST (4, 553, 22), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfio",		  VX_RB_CONST (4, 555, 1),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfib",		  VX_RB_CONST (4, 555, 2),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfibo",		  VX_RB_CONST (4, 555, 3),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfih",		  VX_RB_CONST (4, 555, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfiho",		  VX_RB_CONST (4, 555, 5),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfid",		  VX_RB_CONST (4, 555, 6),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfia",		  VX_RB_CONST (4, 555, 16), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfioa",		  VX_RB_CONST (4, 555, 17), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfiba",		  VX_RB_CONST (4, 555, 18), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfiboa",	  VX_RB_CONST (4, 555, 19), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfiha",		  VX_RB_CONST (4, 555, 20), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfihoa",	  VX_RB_CONST (4, 555, 21), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfida",		  VX_RB_CONST (4, 555, 22), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, SIMM}},
+{"evcmpgtdu",		  VX_SPE_CRFD (4, 560, 1), VX_SPE_CRFD_MASK,	PPCSPE2, 0, {CRFD, RA, RB}},
+{"evcmpgtds",		  VX_SPE_CRFD (4, 561, 1), VX_SPE_CRFD_MASK,	PPCSPE2, 0, {CRFD, RA, RB}},
+{"evcmpltdu",		  VX_SPE_CRFD (4, 562, 1), VX_SPE_CRFD_MASK,	PPCSPE2, 0, {CRFD, RA, RB}},
+{"evcmpltds",		  VX_SPE_CRFD (4, 563, 1), VX_SPE_CRFD_MASK,	PPCSPE2, 0, {CRFD, RA, RB}},
+{"evcmpeqd",		  VX_SPE_CRFD (4, 564, 1), VX_SPE_CRFD_MASK,	PPCSPE2, 0, {CRFD, RA, RB}},
+{"evswapbhilo",		  VX (4, 568),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evswapblohi",		  VX (4, 569),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphhilo",		  VX (4, 570),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphlohi",		  VX (4, 571),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphe",		  VX (4, 572),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphhi",		  VX (4, 573),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphlo",		  VX (4, 574),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evswapho",		  VX (4, 575),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evinsb",		  VX (4, 584),		VX_MASK_DDD,		PPCSPE2, 0, {RD, RA, DDD, BBB}},
+{"evxtrb",		  VX (4, 586),		VX_MASK_DDD,		PPCSPE2, 0, {RD, RA, DDD, BBB}},
+{"evsplath",		  VX_SPE2_HH (4, 588, 0, 0), VX_SPE2_HH_MASK,	PPCSPE2, 0, {RD, RA, HH}},
+{"evsplatb",		  VX_SPE2_SPLATB (4, 588, 2), VX_SPE2_SPLATB_MASK, PPCSPE2, 0, {RD, RA, BBB}},
+{"evinsh",		  VX_SPE2_DDHH (4, 589, 0), VX_SPE2_DDHH_MASK,	PPCSPE2, 0, {RD, RA, DD, HH}},
+{"evclrbe",		  VX_SPE2_CLR (4, 590, 0), VX_SPE2_CLR_MASK,	PPCSPE2, 0, {RD, RA, MMMM}},
+{"evclrbo",		  VX_SPE2_CLR (4, 590, 1), VX_SPE2_CLR_MASK,	PPCSPE2, 0, {RD, RA, MMMM}},
+{"evclrh",		  VX_SPE2_CLR (4, 591, 1), VX_SPE2_CLR_MASK,	PPCSPE2, 0, {RD, RA, MMMM}},
+{"evxtrh",		  VX_SPE2_DDHH (4, 591, 0), VX_SPE2_DDHH_MASK,	PPCSPE2, 0, {RD, RA, DD, HH}},
+{"evselbitm0",		  VX (4, 592),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evselbitm1",		  VX (4, 593),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evselbit",		  VX (4, 594),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evperm",		  VX (4, 596),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evperm2",		  VX (4, 597),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evperm3",		  VX (4, 598),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evxtrd",		  VX (4, 600),		VX_OFF_SPE2_MASK,	PPCSPE2, 0, {RD, RA, RB, VX_OFF_SPE2}},
+{"evsrbu",		  VX (4, 608),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsrbs",		  VX (4, 609),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsrbiu",		  VX (4, 610),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
+{"evsrbis",		  VX (4, 611),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
+{"evslb",		  VX (4, 612),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evrlb",		  VX (4, 613),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evslbi",		  VX (4, 614),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
+{"evrlbi",		  VX (4, 615),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
+{"evsrhu",		  VX (4, 616),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsrhs",		  VX (4, 617),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsrhiu",		  VX (4, 618),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
+{"evsrhis",		  VX (4, 619),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
+{"evslh",		  VX (4, 620),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evrlh",		  VX (4, 621),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evslhi",		  VX (4, 622),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
+{"evrlhi",		  VX (4, 623),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
+{"evsru",		  VX (4, 624),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsrs",		  VX (4, 625),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsriu",		  VX (4, 626),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM}},
+{"evsris",		  VX (4, 627),		VX_MASK,		PPCSPE2, 0, {RD, RA, EVUIMM}},
+{"evlvsl",		  VX (4, 628),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlvsr",		  VX (4, 629),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsroiu",		  VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
+{"evsrois",		  VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
+{"evsloi",		  VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
+{"evldbx",		  VX (4, 774),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evldb",		  VX (4, 775),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_8, RA}},
+{"evlhhsplathx",	  VX (4, 778),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhsplath",		  VX (4, 779),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_2, RA}},
+{"evlwbsplatwx",	  VX (4, 786),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbsplatw",		  VX (4, 787),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evlwhsplatwx",	  VX (4, 794),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhsplatw",		  VX (4, 795),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evlbbsplatbx",	  VX (4, 798),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlbbsplatb",		  VX (4, 799),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_1, RA}},
+{"evstdbx",		  VX (4, 806),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstdb",		  VX (4, 807),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_8, RA}},
+{"evlwbex",		  VX (4, 810),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbe",		  VX (4, 811),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evlwboux",		  VX (4, 812),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbou",		  VX (4, 813),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evlwbosx",		  VX (4, 814),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbos",		  VX (4, 815),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evstwbex",		  VX (4, 818),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbe",		  VX (4, 819),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4, RA}},
+{"evstwbox",		  VX (4, 822),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbo",		  VX (4, 823),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4, RA}},
+{"evstwbx",		  VX (4, 826),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwb",		  VX (4, 827),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4, RA}},
+{"evsthbx",		  VX (4, 830),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evsthb",		  VX (4, 831),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_2, RA}},
+{"evlddmx",		  VX (4, 832),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlddu",		  VX (4, 833),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
+{"evldwmx",		  VX (4, 834),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evldwu",		  VX (4, 835),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
+{"evldhmx",		  VX (4, 836),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evldhu",		  VX (4, 837),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
+{"evldbmx",		  VX (4, 838),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evldbu",		  VX (4, 839),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
+{"evlhhesplatmx",	  VX (4, 840),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhesplatu",	  VX (4, 841),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
+{"evlhhsplathmx",	  VX (4, 842),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhsplathu",	  VX (4, 843),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
+{"evlhhousplatmx",	  VX (4, 844),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhousplatu",	  VX (4, 845),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
+{"evlhhossplatmx",	  VX (4, 846),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhossplatu",	  VX (4, 847),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
+{"evlwhemx",		  VX (4, 848),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwheu",		  VX (4, 849),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwbsplatwmx",	  VX (4, 850),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbsplatwu",	  VX (4, 851),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwhoumx",		  VX (4, 852),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhouu",		  VX (4, 853),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwhosmx",		  VX (4, 854),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhosu",		  VX (4, 855),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwwsplatmx",	  VX (4, 856),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwwsplatu",		  VX (4, 857),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwhsplatwmx",	  VX (4, 858),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhsplatwu",	  VX (4, 859),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwhsplatmx",	  VX (4, 860),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhsplatu",		  VX (4, 861),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlbbsplatbmx",	  VX (4, 862),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlbbsplatbu",	  VX (4, 863),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_1_EX0, RA}},
+{"evstddmx",		  VX (4, 864),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstddu",		  VX (4, 865),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
+{"evstdwmx",		  VX (4, 866),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstdwu",		  VX (4, 867),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
+{"evstdhmx",		  VX (4, 868),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstdhu",		  VX (4, 869),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
+{"evstdbmx",		  VX (4, 870),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstdbu",		  VX (4, 871),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
+{"evlwbemx",		  VX (4, 874),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbeu",		  VX (4, 875),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwboumx",		  VX (4, 876),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbouu",		  VX (4, 877),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwbosmx",		  VX (4, 878),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbosu",		  VX (4, 879),		VX_MASK,		PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evstwhemx",		  VX (4, 880),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwheu",		  VX (4, 881),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwbemx",		  VX (4, 882),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbeu",		  VX (4, 883),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwhomx",		  VX (4, 884),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwhou",		  VX (4, 885),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwbomx",		  VX (4, 886),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbou",		  VX (4, 887),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwwemx",		  VX (4, 888),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwweu",		  VX (4, 889),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwbmx",		  VX (4, 890),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbu",		  VX (4, 891),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwwomx",		  VX (4, 892),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evstwwou",		  VX (4, 893),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evsthbmx",		  VX (4, 894),		VX_MASK,		PPCSPE2, 0, {RS, RA, RB}},
+{"evsthbu",		  VX (4, 895),		VX_MASK,		PPCSPE2, 0, {RS, EVUIMM_2_EX0, RA}},
+{"evmhusi",		  VX (4, 1024),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhssi",		  VX (4, 1025),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhsusi",		  VX (4, 1026),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhssf",		  VX (4, 1028),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhumi",		  VX (4, 1029),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhssfr",		  VX (4, 1030),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesumi",		  VX (4, 1034),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosumi",		  VX (4, 1038),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeumi",		  VX (4, 1048),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesmi",		  VX (4, 1049),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesumi",		  VX (4, 1050),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmboumi",		  VX (4, 1052),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosmi",		  VX (4, 1053),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosumi",		  VX (4, 1054),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesumia",		  VX (4, 1066),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosumia",		  VX (4, 1070),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeumia",		  VX (4, 1080),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesmia",		  VX (4, 1081),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesumia",		  VX (4, 1082),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmboumia",		  VX (4, 1084),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosmia",		  VX (4, 1085),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosumia",		  VX (4, 1086),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwusiw",		  VX (4, 1088),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwssiw",		  VX (4, 1089),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfr",		  VX (4, 1094),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfr",		  VX (4, 1110),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmf",		  VX (4, 1111),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfr",		  VX (4, 1118),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmf",		  VX (4, 1119),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfra",		  VX (4, 1126),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfra",	  VX (4, 1142),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfa",		  VX (4, 1143),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfra",	  VX (4, 1150),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfa",		  VX (4, 1151),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddusiaa",		  VX_RB_CONST(4, 1152, 0), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evaddssiaa",		  VX_RB_CONST(4, 1153, 0), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsubfusiaa",		  VX_RB_CONST(4, 1154, 0), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsubfssiaa",		  VX_RB_CONST(4, 1155, 0), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evaddsmiaa",		  VX_RB_CONST(4, 1156, 0), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsubfsmiaa",		  VX_RB_CONST(4, 1158, 0), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evaddh",		  VX (4, 1160),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhss",		  VX (4, 1161),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfh",		  VX (4, 1162),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhss",		  VX (4, 1163),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhx",		  VX (4, 1164),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhxss",		  VX (4, 1165),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhx",		  VX (4, 1166),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhxss",		  VX (4, 1167),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddd",		  VX (4, 1168),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evadddss",		  VX (4, 1169),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfd",		  VX (4, 1170),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfdss",		  VX (4, 1171),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddb",		  VX (4, 1172),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddbss",		  VX (4, 1173),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfb",		  VX (4, 1174),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfbss",		  VX (4, 1175),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfh",		  VX (4, 1176),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfhss",	  VX (4, 1177),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddh",		  VX (4, 1178),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddhss",	  VX (4, 1179),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfhx",		  VX (4, 1180),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfhxss",	  VX (4, 1181),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddhx",		  VX (4, 1182),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddhxss",	  VX (4, 1183),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evadddus",		  VX (4, 1184),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddbus",		  VX (4, 1185),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfdus",		  VX (4, 1186),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfbus",		  VX (4, 1187),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwus",		  VX (4, 1188),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwxus",		  VX (4, 1189),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwus",		  VX (4, 1190),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwxus",		  VX (4, 1191),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evadd2subf2h",	  VX (4, 1192),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evadd2subf2hss",	  VX (4, 1193),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubf2add2h",	  VX (4, 1194),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubf2add2hss",	  VX (4, 1195),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhus",		  VX (4, 1196),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhxus",		  VX (4, 1197),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhus",		  VX (4, 1198),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhxus",		  VX (4, 1199),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwss",		  VX (4, 1201),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwss",		  VX (4, 1203),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwx",		  VX (4, 1204),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwxss",		  VX (4, 1205),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwx",		  VX (4, 1206),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwxss",		  VX (4, 1207),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfw",		  VX (4, 1208),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfwss",	  VX (4, 1209),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddw",		  VX (4, 1210),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddwss",	  VX (4, 1211),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfwx",		  VX (4, 1212),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfwxss",	  VX (4, 1213),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddwx",		  VX (4, 1214),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddwxss",	  VX (4, 1215),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmar",		  VX_SPE2_EVMAR (4, 1220),  VX_SPE2_EVMAR_MASK, PPCSPE2, 0, {RD}},
+{"evsumwu",		  VX_RB_CONST(4, 1221, 0),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsumws",		  VX_RB_CONST(4, 1221, 1),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum4bu",		  VX_RB_CONST(4, 1221, 2),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum4bs",		  VX_RB_CONST(4, 1221, 3),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum2hu",		  VX_RB_CONST(4, 1221, 4),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum2hs",		  VX_RB_CONST(4, 1221, 5),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evdiff2his",		  VX_RB_CONST(4, 1221, 6),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum2his",		  VX_RB_CONST(4, 1221, 7),  VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsumwua",		  VX_RB_CONST(4, 1221, 16), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsumwsa",		  VX_RB_CONST(4, 1221, 17), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum4bua",		  VX_RB_CONST(4, 1221, 18), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum4bsa",		  VX_RB_CONST(4, 1221, 19), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum2hua",		  VX_RB_CONST(4, 1221, 20), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum2hsa",		  VX_RB_CONST(4, 1221, 21), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evdiff2hisa",		  VX_RB_CONST(4, 1221, 22), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum2hisa",		  VX_RB_CONST(4, 1221, 23), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsumwuaa",		  VX_RB_CONST(4, 1221, 24), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsumwsaa",		  VX_RB_CONST(4, 1221, 25), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum4buaaw",		  VX_RB_CONST(4, 1221, 26), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum4bsaaw",		  VX_RB_CONST(4, 1221, 27), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum2huaaw",		  VX_RB_CONST(4, 1221, 28), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum2hsaaw",		  VX_RB_CONST(4, 1221, 29), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evdiff2hisaaw",	  VX_RB_CONST(4, 1221, 30), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evsum2hisaaw",	  VX_RB_CONST(4, 1221, 31), VX_RB_CONST_MASK,	PPCSPE2, 0, {RD, RA}},
+{"evdivwsf",		  VX (4, 1228),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdivwuf",		  VX (4, 1229),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdivs",		  VX (4, 1230),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdivu",		  VX (4, 1231),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwegsi",		  VX (4, 1232),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwegsf",		  VX (4, 1233),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwegsi",		  VX (4, 1234),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwegsf",		  VX (4, 1235),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwogsi",		  VX (4, 1236),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwogsf",		  VX (4, 1237),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwogsi",		  VX (4, 1238),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwogsf",		  VX (4, 1239),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhhiuw",		  VX (4, 1240),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhhisw",		  VX (4, 1241),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhhiuw",		  VX (4, 1242),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhhisw",		  VX (4, 1243),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhlouw",		  VX (4, 1244),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhlosw",		  VX (4, 1245),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhlouw",		  VX (4, 1246),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhlosw",		  VX (4, 1247),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesusiaaw",	  VX (4, 1282),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosusiaaw",	  VX (4, 1286),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesumiaaw",	  VX (4, 1290),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosumiaaw",	  VX (4, 1294),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeusiaah",		  VX (4, 1296),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbessiaah",		  VX (4, 1297),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesusiaah",	  VX (4, 1298),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbousiaah",		  VX (4, 1300),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbossiaah",		  VX (4, 1301),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosusiaah",	  VX (4, 1302),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeumiaah",		  VX (4, 1304),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesmiaah",		  VX (4, 1305),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesumiaah",	  VX (4, 1306),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmboumiaah",		  VX (4, 1308),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosmiaah",		  VX (4, 1309),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosumiaah",	  VX (4, 1310),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlusiaaw3",	  VX (4, 1346),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlssiaaw3",	  VX (4, 1347),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfraaw3",	  VX (4, 1348),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfaaw3",	  VX (4, 1349),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfraaw",	  VX (4, 1350),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfaaw",		  VX (4, 1351),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlumiaaw3",	  VX (4, 1354),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlsmiaaw3",	  VX (4, 1355),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwusiaa",		  VX (4, 1360),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwssiaa",		  VX (4, 1361),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfraa",	  VX (4, 1366),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfaa",	  VX (4, 1367),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfraa",	  VX (4, 1374),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfaa",	  VX (4, 1375),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesusianw",	  VX (4, 1410),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosusianw",	  VX (4, 1414),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesumianw",	  VX (4, 1418),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosumianw",	  VX (4, 1422),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeusianh",		  VX (4, 1424),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbessianh",		  VX (4, 1425),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesusianh",	  VX (4, 1426),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbousianh",		  VX (4, 1428),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbossianh",		  VX (4, 1429),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosusianh",	  VX (4, 1430),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeumianh",		  VX (4, 1432),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesmianh",		  VX (4, 1433),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesumianh",	  VX (4, 1434),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmboumianh",		  VX (4, 1436),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosmianh",		  VX (4, 1437),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosumianh",	  VX (4, 1438),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlusianw3",	  VX (4, 1474),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlssianw3",	  VX (4, 1475),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfranw3",	  VX (4, 1476),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfanw3",	  VX (4, 1477),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfranw",	  VX (4, 1478),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfanw",		  VX (4, 1479),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlumianw3",	  VX (4, 1482),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlsmianw3",	  VX (4, 1483),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwusian",		  VX (4, 1488),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwssian",		  VX (4, 1489),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfran",	  VX (4, 1494),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfan",	  VX (4, 1495),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfran",	  VX (4, 1502),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfan",	  VX (4, 1503),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqb",		  VX (4, 1536),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqb.",		  VX (4, 1537),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqh",		  VX (4, 1538),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqh.",		  VX (4, 1539),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqw",		  VX (4, 1540),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqw.",		  VX (4, 1541),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgthu",		  VX (4, 1544),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgthu.",		  VX (4, 1545),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgths",		  VX (4, 1546),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgths.",		  VX (4, 1547),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtwu",		  VX (4, 1548),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtwu.",		  VX (4, 1549),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtws",		  VX (4, 1550),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtws.",		  VX (4, 1551),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtbu",		  VX (4, 1552),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtbu.",		  VX (4, 1553),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtbs",		  VX (4, 1554),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtbs.",		  VX (4, 1555),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltbu",		  VX (4, 1556),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltbu.",		  VX (4, 1557),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltbs",		  VX (4, 1558),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltbs.",		  VX (4, 1559),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetlthu",		  VX (4, 1560),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetlthu.",		  VX (4, 1561),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetlths",		  VX (4, 1562),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetlths.",		  VX (4, 1563),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltwu",		  VX (4, 1564),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltwu.",		  VX (4, 1565),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltws",		  VX (4, 1566),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltws.",		  VX (4, 1567),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsaduw",		  VX (4, 1568),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsadsw",		  VX (4, 1569),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4ub",		  VX (4, 1570),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4sb",		  VX (4, 1571),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2uh",		  VX (4, 1572),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2sh",		  VX (4, 1573),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsaduwa",		  VX (4, 1576),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsadswa",		  VX (4, 1577),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4uba",		  VX (4, 1578),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4sba",		  VX (4, 1579),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2uha",		  VX (4, 1580),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2sha",		  VX (4, 1581),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifuw",		  VX (4, 1584),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifsw",		  VX (4, 1585),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifub",		  VX (4, 1586),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifsb",		  VX (4, 1587),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifuh",		  VX (4, 1588),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifsh",		  VX (4, 1589),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsaduwaa",		  VX (4, 1592),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsadswaa",		  VX (4, 1593),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4ubaaw",		  VX (4, 1594),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4sbaaw",		  VX (4, 1595),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2uhaaw",		  VX (4, 1596),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2shaaw",		  VX (4, 1597),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkshubs",		  VX (4, 1600),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkshsbs",		  VX (4, 1601),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswuhs",		  VX (4, 1602),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswshs",		  VX (4, 1603),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkuhubs",		  VX (4, 1604),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkuwuhs",		  VX (4, 1605),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswshilvs",	  VX (4, 1606),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswgshefrs",	  VX (4, 1607),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswshfrs",		  VX (4, 1608),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswshilvfrs",	  VX (4, 1609),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpksdswfrs",		  VX (4, 1610),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpksdshefrs",	  VX (4, 1611),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkuduws",		  VX (4, 1612),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpksdsws",		  VX (4, 1613),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswgswfrs",	  VX (4, 1614),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evilveh",		  VX (4, 1616),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evilveoh",		  VX (4, 1617),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evilvhih",		  VX (4, 1618),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evilvhiloh",		  VX (4, 1619),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evilvloh",		  VX (4, 1620),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evilvlohih",		  VX (4, 1621),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evilvoeh",		  VX (4, 1622),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evilvoh",		  VX (4, 1623),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdlveb",		  VX (4, 1624),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdlveh",		  VX (4, 1625),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdlveob",		  VX (4, 1626),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdlveoh",		  VX (4, 1627),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdlvob",		  VX (4, 1628),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdlvoh",		  VX (4, 1629),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdlvoeb",		  VX (4, 1630),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evdlvoeh",		  VX (4, 1631),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxbu",		  VX (4, 1632),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxbs",		  VX (4, 1633),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxhu",		  VX (4, 1634),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxhs",		  VX (4, 1635),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxwu",		  VX (4, 1636),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxws",		  VX (4, 1637),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxdu",		  VX (4, 1638),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxds",		  VX (4, 1639),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evminbu",		  VX (4, 1640),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evminbs",		  VX (4, 1641),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evminhu",		  VX (4, 1642),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evminhs",		  VX (4, 1643),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evminwu",		  VX (4, 1644),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evminws",		  VX (4, 1645),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evmindu",		  VX (4, 1646),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evminds",		  VX (4, 1647),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgwu",		  VX (4, 1648),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgws",		  VX (4, 1649),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgbu",		  VX (4, 1650),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgbs",		  VX (4, 1651),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavghu",		  VX (4, 1652),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavghs",		  VX (4, 1653),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgdu",		  VX (4, 1654),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgds",		  VX (4, 1655),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgwur",		  VX (4, 1656),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgwsr",		  VX (4, 1657),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgbur",		  VX (4, 1658),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgbsr",		  VX (4, 1659),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavghur",		  VX (4, 1660),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavghsr",		  VX (4, 1661),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgdur",		  VX (4, 1662),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+{"evavgdsr",		  VX (4, 1663),		VX_MASK,		PPCSPE2, 0, {RD, RA, RB}},
+};
+
+const int spe2_num_opcodes =
+  sizeof (spe2_opcodes) / sizeof (spe2_opcodes[0]);
-- 
2.7.4

