Blame SOURCES/binutils-2.25.1-power9.patch

4910d4
diff -rup binutils-2.25.1.orig/bfd/bfd-in2.h binutils-2.25.1/bfd/bfd-in2.h
4910d4
--- binutils-2.25.1.orig/bfd/bfd-in2.h	2016-05-06 09:56:58.700611803 +0100
4910d4
+++ binutils-2.25.1/bfd/bfd-in2.h	2016-05-06 12:20:48.501441990 +0100
4910d4
@@ -3253,6 +3253,7 @@ instruction.  */
4910d4
   BFD_RELOC_PPC_VLE_SDAREL_HI16D,
4910d4
   BFD_RELOC_PPC_VLE_SDAREL_HA16A,
4910d4
   BFD_RELOC_PPC_VLE_SDAREL_HA16D,
4910d4
+  BFD_RELOC_PPC_REL16DX_HA,
4910d4
   BFD_RELOC_PPC64_HIGHER,
4910d4
   BFD_RELOC_PPC64_HIGHER_S,
4910d4
   BFD_RELOC_PPC64_HIGHEST,
4910d4
Only in binutils-2.25.1/bfd: bfd-in2.h.orig
4910d4
diff -rup binutils-2.25.1.orig/bfd/elf32-ppc.c binutils-2.25.1/bfd/elf32-ppc.c
4910d4
--- binutils-2.25.1.orig/bfd/elf32-ppc.c	2016-05-06 09:56:58.689611747 +0100
4910d4
+++ binutils-2.25.1/bfd/elf32-ppc.c	2016-05-06 12:20:48.504442008 +0100
4910d4
@@ -1731,6 +1731,21 @@ static reloc_howto_type ppc_elf_howto_ra
4910d4
 	 0xffff,		/* dst_mask */
4910d4
 	 TRUE),			/* pcrel_offset */
4910d4
 
4910d4
+  /* Like R_PPC_REL16_HA but for split field in addpcis.  */
4910d4
+  HOWTO (R_PPC_REL16DX_HA,	/* type */
4910d4
+	 16,			/* rightshift */
4910d4
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
4910d4
+	 16,			/* bitsize */
4910d4
+	 TRUE,			/* pc_relative */
4910d4
+	 0,			/* bitpos */
4910d4
+	 complain_overflow_signed, /* complain_on_overflow */
4910d4
+	 ppc_elf_addr16_ha_reloc, /* special_function */
4910d4
+	 "R_PPC_REL16DX_HA",	/* name */
4910d4
+	 FALSE,			/* partial_inplace */
4910d4
+	 0,			/* src_mask */
4910d4
+	 0x1fffc1,		/* dst_mask */
4910d4
+	 TRUE),			/* pcrel_offset */
4910d4
+
4910d4
   /* GNU extension to record C++ vtable hierarchy.  */
4910d4
   HOWTO (R_PPC_GNU_VTINHERIT,	/* type */
4910d4
 	 0,			/* rightshift */
4910d4
@@ -1989,6 +2004,7 @@ ppc_elf_reloc_type_lookup (bfd *abfd ATT
4910d4
     case BFD_RELOC_LO16_PCREL:		r = R_PPC_REL16_LO;		break;
4910d4
     case BFD_RELOC_HI16_PCREL:		r = R_PPC_REL16_HI;		break;
4910d4
     case BFD_RELOC_HI16_S_PCREL:	r = R_PPC_REL16_HA;		break;
4910d4
+    case BFD_RELOC_PPC_REL16DX_HA:	r = R_PPC_REL16DX_HA;		break;
4910d4
     case BFD_RELOC_VTABLE_INHERIT:	r = R_PPC_GNU_VTINHERIT;	break;
4910d4
     case BFD_RELOC_VTABLE_ENTRY:	r = R_PPC_GNU_VTENTRY;		break;
4910d4
     }
4910d4
@@ -2058,7 +2074,10 @@ ppc_elf_addr16_ha_reloc (bfd *abfd ATTRI
4910d4
 			 bfd *output_bfd,
4910d4
 			 char **error_message ATTRIBUTE_UNUSED)
4910d4
 {
4910d4
-  bfd_vma relocation;
4910d4
+  enum elf_ppc_reloc_type r_type;
4910d4
+  long insn;
4910d4
+  bfd_size_type octets;
4910d4
+  bfd_vma value;
4910d4
 
4910d4
   if (output_bfd != NULL)
4910d4
     {
4910d4
@@ -2066,20 +2085,28 @@ ppc_elf_addr16_ha_reloc (bfd *abfd ATTRI
4910d4
       return bfd_reloc_ok;
4910d4
     }
4910d4
 
4910d4
-  if (bfd_is_com_section (symbol->section))
4910d4
-    relocation = 0;
4910d4
-  else
4910d4
-    relocation = symbol->value;
4910d4
-
4910d4
-  relocation += symbol->section->output_section->vma;
4910d4
-  relocation += symbol->section->output_offset;
4910d4
-  relocation += reloc_entry->addend;
4910d4
-  if (reloc_entry->howto->pc_relative)
4910d4
-    relocation -= reloc_entry->address;
4910d4
-
4910d4
-  reloc_entry->addend += (relocation & 0x8000) << 1;
4910d4
-
4910d4
-  return bfd_reloc_continue;
4910d4
+  reloc_entry->addend += 0x8000;
4910d4
+  r_type = reloc_entry->howto->type;
4910d4
+  if (r_type != R_PPC_REL16DX_HA)
4910d4
+    return bfd_reloc_continue;
4910d4
+
4910d4
+  value = 0;
4910d4
+  if (!bfd_is_com_section (symbol->section))
4910d4
+    value = symbol->value;
4910d4
+  value += (reloc_entry->addend
4910d4
+	    + symbol->section->output_offset
4910d4
+	    + symbol->section->output_section->vma);
4910d4
+  value -= (reloc_entry->address
4910d4
+	    + input_section->output_offset
4910d4
+	    + input_section->output_section->vma);
4910d4
+  value >>= 16;
4910d4
+
4910d4
+  octets = reloc_entry->address * bfd_octets_per_byte (abfd);
4910d4
+  insn = bfd_get_32 (abfd, (bfd_byte *) data + octets);
4910d4
+  insn &= ~0x1fffc1;
4910d4
+  insn |= (value & 0xffc1) | ((value & 0x3e) << 15);
4910d4
+  bfd_put_32 (abfd, insn, (bfd_byte *) data + octets);
4910d4
+  return bfd_reloc_ok;
4910d4
 }
4910d4
 
4910d4
 static bfd_reloc_status_type
4910d4
@@ -4243,6 +4270,7 @@ ppc_elf_check_relocs (bfd *abfd,
4910d4
 	case R_PPC_REL16_LO:
4910d4
 	case R_PPC_REL16_HI:
4910d4
 	case R_PPC_REL16_HA:
4910d4
+	case R_PPC_REL16DX_HA:
4910d4
 	  ppc_elf_tdata (abfd)->has_rel16 = 1;
4910d4
 	  break;
4910d4
 
4910d4
@@ -7543,7 +7571,9 @@ is_insn_ds_form (unsigned int insn)
4910d4
 static bfd_boolean
4910d4
 is_insn_dq_form (unsigned int insn)
4910d4
 {
4910d4
-  return (insn & (0x3f << 26)) == 56u << 26; /* lq */
4910d4
+  return ((insn & (0x3f << 26)) == 56u << 26 /* lq */
4910d4
+	  || ((insn & (0x3f << 26)) == (61u << 26) /* lxv, stxv */
4910d4
+	      && (insn & 3) == 1));
4910d4
 }
4910d4
 
4910d4
 /* The RELOCATE_SECTION function is called by the ELF backend linker
4910d4
@@ -8411,6 +8441,7 @@ ppc_elf_relocate_section (bfd *output_bf
4910d4
 	case R_PPC_REL16_LO:
4910d4
 	case R_PPC_REL16_HI:
4910d4
 	case R_PPC_REL16_HA:
4910d4
+	case R_PPC_REL16DX_HA:
4910d4
 	  break;
4910d4
 
4910d4
 	case R_PPC_REL32:
4910d4
@@ -9112,6 +9143,7 @@ ppc_elf_relocate_section (bfd *output_bf
4910d4
 
4910d4
 	case R_PPC_ADDR16_HA:
4910d4
 	case R_PPC_REL16_HA:
4910d4
+	case R_PPC_REL16DX_HA:
4910d4
 	case R_PPC_SECTOFF_HA:
4910d4
 	case R_PPC_TPREL16_HA:
4910d4
 	case R_PPC_DTPREL16_HA:
4910d4
@@ -9169,10 +9201,12 @@ ppc_elf_relocate_section (bfd *output_bf
4910d4
 	      mask = 15;
4910d4
 	    else
4910d4
 	      break;
4910d4
-	    lobit = mask & (relocation + addend);
4910d4
+	    relocation += addend;
4910d4
+	    addend = insn & mask;
4910d4
+	    lobit = mask & relocation;
4910d4
 	    if (lobit != 0)
4910d4
 	      {
4910d4
-		addend -= lobit;
4910d4
+		relocation ^= lobit;
4910d4
 		info->callbacks->einfo
4910d4
 		  (_("%P: %H: error: %s against `%s' not a multiple of %u\n"),
4910d4
 		   input_bfd, input_section, rel->r_offset,
4910d4
@@ -9180,7 +9214,6 @@ ppc_elf_relocate_section (bfd *output_bf
4910d4
 		bfd_set_error (bfd_error_bad_value);
4910d4
 		ret = FALSE;
4910d4
 	      }
4910d4
-	    addend += insn & mask;
4910d4
 	  }
4910d4
 	  break;
4910d4
 	}
4910d4
@@ -9239,8 +9272,30 @@ ppc_elf_relocate_section (bfd *output_bf
4910d4
 	    }
4910d4
 	}
4910d4
 
4910d4
-      r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
4910d4
-				    rel->r_offset, relocation, addend);
4910d4
+      if (r_type == R_PPC_REL16DX_HA)
4910d4
+	{
4910d4
+	  /* Split field reloc isn't handled by _bfd_final_link_relocate.  */
4910d4
+	  if (rel->r_offset + 4 > input_section->size)
4910d4
+	    r = bfd_reloc_outofrange;
4910d4
+	  else
4910d4
+	    {
4910d4
+	      unsigned int insn;
4910d4
+
4910d4
+	      relocation += addend;
4910d4
+	      relocation -= (rel->r_offset
4910d4
+			     + input_section->output_offset
4910d4
+			     + input_section->output_section->vma);
4910d4
+	      relocation >>= 16;
4910d4
+	      insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
4910d4
+	      insn &= ~0x1fffc1;
4910d4
+	      insn |= (relocation & 0xffc1) | ((relocation & 0x3e) << 15);
4910d4
+	      bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
4910d4
+	      r = bfd_reloc_ok;
4910d4
+	    }
4910d4
+	}
4910d4
+      else
4910d4
+	r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
4910d4
+				      rel->r_offset, relocation, addend);
4910d4
 
4910d4
       if (r != bfd_reloc_ok)
4910d4
 	{
4910d4
Only in binutils-2.25.1/bfd: elf32-ppc.c.orig
4910d4
diff -rup binutils-2.25.1.orig/bfd/elf64-ppc.c binutils-2.25.1/bfd/elf64-ppc.c
4910d4
--- binutils-2.25.1.orig/bfd/elf64-ppc.c	2016-05-06 09:56:58.699611798 +0100
4910d4
+++ binutils-2.25.1/bfd/elf64-ppc.c	2016-05-06 12:20:48.508442032 +0100
4910d4
@@ -2018,6 +2018,21 @@ static reloc_howto_type ppc64_elf_howto_
4910d4
 	 0xffff,		/* dst_mask */
4910d4
 	 TRUE),			/* pcrel_offset */
4910d4
 
4910d4
+  /* Like R_PPC64_REL16_HA but for split field in addpcis.  */
4910d4
+  HOWTO (R_PPC64_REL16DX_HA,	/* type */
4910d4
+	 16,			/* rightshift */
4910d4
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
4910d4
+	 16,			/* bitsize */
4910d4
+	 TRUE,			/* pc_relative */
4910d4
+	 0,			/* bitpos */
4910d4
+	 complain_overflow_signed, /* complain_on_overflow */
4910d4
+	 ppc64_elf_ha_reloc,	/* special_function */
4910d4
+	 "R_PPC64_REL16DX_HA",	/* name */
4910d4
+	 FALSE,			/* partial_inplace */
4910d4
+	 0,			/* src_mask */
4910d4
+	 0x1fffc1,		/* dst_mask */
4910d4
+	 TRUE),			/* pcrel_offset */
4910d4
+
4910d4
   /* Like R_PPC64_ADDR16_HI, but no overflow.  */
4910d4
   HOWTO (R_PPC64_ADDR16_HIGH,	/* type */
4910d4
 	 16,			/* rightshift */
4910d4
@@ -2411,6 +2426,8 @@ ppc64_elf_reloc_type_lookup (bfd *abfd A
4910d4
       break;
4910d4
     case BFD_RELOC_HI16_S_PCREL:		r = R_PPC64_REL16_HA;
4910d4
       break;
4910d4
+    case BFD_RELOC_PPC_REL16DX_HA:		r = R_PPC64_REL16DX_HA;
4910d4
+      break;
4910d4
     case BFD_RELOC_PPC64_ADDR64_LOCAL:		r = R_PPC64_ADDR64_LOCAL;
4910d4
       break;
4910d4
     case BFD_RELOC_VTABLE_INHERIT:		r = R_PPC64_GNU_VTINHERIT;
4910d4
@@ -2468,6 +2485,11 @@ ppc64_elf_ha_reloc (bfd *abfd, arelent *
4910d4
 		    void *data, asection *input_section,
4910d4
 		    bfd *output_bfd, char **error_message)
4910d4
 {
4910d4
+  enum elf_ppc64_reloc_type r_type;
4910d4
+  long insn;
4910d4
+  bfd_size_type octets;
4910d4
+  bfd_vma value;
4910d4
+
4910d4
   /* If this is a relocatable link (output_bfd test tells us), just
4910d4
      call the generic function.  Any adjustment will be done at final
4910d4
      link time.  */
4910d4
@@ -2479,7 +2501,29 @@ ppc64_elf_ha_reloc (bfd *abfd, arelent *
4910d4
      We won't actually be using the low 16 bits, so trashing them
4910d4
      doesn't matter.  */
4910d4
   reloc_entry->addend += 0x8000;
4910d4
-  return bfd_reloc_continue;
4910d4
+  r_type = reloc_entry->howto->type;
4910d4
+  if (r_type != R_PPC64_REL16DX_HA)
4910d4
+    return bfd_reloc_continue;
4910d4
+
4910d4
+  value = 0;
4910d4
+  if (!bfd_is_com_section (symbol->section))
4910d4
+    value = symbol->value;
4910d4
+  value += (reloc_entry->addend
4910d4
+	    + symbol->section->output_offset
4910d4
+	    + symbol->section->output_section->vma);
4910d4
+  value -= (reloc_entry->address
4910d4
+	    + input_section->output_offset
4910d4
+	    + input_section->output_section->vma);
4910d4
+  value = (bfd_signed_vma) value >> 16;
4910d4
+
4910d4
+  octets = reloc_entry->address * bfd_octets_per_byte (abfd);
4910d4
+  insn = bfd_get_32 (abfd, (bfd_byte *) data + octets);
4910d4
+  insn &= ~0x1fffc1;
4910d4
+  insn |= (value & 0xffc1) | ((value & 0x3e) << 15);
4910d4
+  bfd_put_32 (abfd, insn, (bfd_byte *) data + octets);
4910d4
+  if (value + 0x8000 > 0xffff)
4910d4
+    return bfd_reloc_overflow;
4910d4
+  return bfd_reloc_ok;
4910d4
 }
4910d4
 
4910d4
 static bfd_reloc_status_type
4910d4
@@ -5481,6 +5525,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
4910d4
 	case R_PPC64_REL16_LO:
4910d4
 	case R_PPC64_REL16_HI:
4910d4
 	case R_PPC64_REL16_HA:
4910d4
+	case R_PPC64_REL16DX_HA:
4910d4
 	  break;
4910d4
 
4910d4
 	  /* Not supported as a dynamic relocation.  */
4910d4
@@ -14274,6 +14319,7 @@ ppc64_elf_relocate_section (bfd *output_
4910d4
 	case R_PPC64_REL16_LO:
4910d4
 	case R_PPC64_REL16_HI:
4910d4
 	case R_PPC64_REL16_HA:
4910d4
+	case R_PPC64_REL16DX_HA:
4910d4
 	  break;
4910d4
 
4910d4
 	case R_PPC64_REL14:
4910d4
@@ -14689,6 +14732,7 @@ ppc64_elf_relocate_section (bfd *output_
4910d4
 	  break;
4910d4
 
4910d4
 	case R_PPC64_REL16_HA:
4910d4
+	case R_PPC64_REL16DX_HA:
4910d4
 	case R_PPC64_ADDR16_HA:
4910d4
 	case R_PPC64_ADDR16_HIGHA:
4910d4
 	case R_PPC64_ADDR16_HIGHERA:
4910d4
@@ -14744,16 +14788,20 @@ ppc64_elf_relocate_section (bfd *output_
4910d4
 	case R_PPC64_DTPREL16_LO_DS:
4910d4
 	  insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
4910d4
 	  mask = 3;
4910d4
-	  /* If this reloc is against an lq insn, then the value must be
4910d4
-	     a multiple of 16.  This is somewhat of a hack, but the
4910d4
-	     "correct" way to do this by defining _DQ forms of all the
4910d4
-	     _DS relocs bloats all reloc switches in this file.  It
4910d4
-	     doesn't seem to make much sense to use any of these relocs
4910d4
-	     in data, so testing the insn should be safe.  */
4910d4
-	  if ((insn & (0x3f << 26)) == (56u << 26))
4910d4
+	  /* If this reloc is against an lq, lxv, or stxv insn, then
4910d4
+	     the value must be a multiple of 16.  This is somewhat of
4910d4
+	     a hack, but the "correct" way to do this by defining _DQ
4910d4
+	     forms of all the _DS relocs bloats all reloc switches in
4910d4
+	     this file.  It doesn't make much sense to use these
4910d4
+	     relocs in data, so testing the insn should be safe.  */
4910d4
+	  if ((insn & (0x3f << 26)) == (56u << 26)
4910d4
+	      || ((insn & (0x3f << 26)) == (61u << 26) && (insn & 3) == 1))
4910d4
 	    mask = 15;
4910d4
-	  if (((relocation + addend) & mask) != 0)
4910d4
+	  relocation += addend;
4910d4
+	  addend = insn & (mask ^ 3);
4910d4
+	  if ((relocation & mask) != 0)
4910d4
 	    {
4910d4
+	      relocation ^= relocation & mask;
4910d4
 	      info->callbacks->einfo
4910d4
 		(_("%P: %H: error: %s not a multiple of %u\n"),
4910d4
 		 input_bfd, input_section, rel->r_offset,
4910d4
@@ -14811,8 +14859,30 @@ ppc64_elf_relocate_section (bfd *output_
4910d4
 	    }
4910d4
 	}
4910d4
 
4910d4
-      r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
4910d4
-				    rel->r_offset, relocation, addend);
4910d4
+      if (r_type == R_PPC64_REL16DX_HA)
4910d4
+	{
4910d4
+	  /* Split field reloc isn't handled by _bfd_final_link_relocate.  */
4910d4
+	  if (rel->r_offset + 4 > input_section->size)
4910d4
+	    r = bfd_reloc_outofrange;
4910d4
+	  else
4910d4
+	    {
4910d4
+	      relocation += addend;
4910d4
+	      relocation -= (rel->r_offset
4910d4
+			     + input_section->output_offset
4910d4
+			     + input_section->output_section->vma);
4910d4
+	      relocation = (bfd_signed_vma) relocation >> 16;
4910d4
+	      insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
4910d4
+	      insn &= ~0x1fffc1;
4910d4
+	      insn |= (relocation & 0xffc1) | ((relocation & 0x3e) << 15);
4910d4
+	      bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
4910d4
+	      r = bfd_reloc_ok;
4910d4
+	      if (relocation + 0x8000 > 0xffff)
4910d4
+		r = bfd_reloc_overflow;
4910d4
+	    }
4910d4
+	}
4910d4
+      else
4910d4
+	r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
4910d4
+				      rel->r_offset, relocation, addend);
4910d4
 
4910d4
       if (r != bfd_reloc_ok)
4910d4
 	{
4910d4
Only in binutils-2.25.1/bfd: elf64-ppc.c.orig
4910d4
Only in binutils-2.25.1.orig/bfd: elf64-ppc.c.ppc64-pie~
4910d4
diff -rup binutils-2.25.1.orig/bfd/libbfd.h binutils-2.25.1/bfd/libbfd.h
4910d4
--- binutils-2.25.1.orig/bfd/libbfd.h	2016-05-06 09:56:58.694611773 +0100
4910d4
+++ binutils-2.25.1/bfd/libbfd.h	2016-05-06 12:20:48.508442032 +0100
4910d4
@@ -1373,6 +1373,7 @@ static const char *const bfd_reloc_code_
4910d4
   "BFD_RELOC_PPC_VLE_SDAREL_HI16D",
4910d4
   "BFD_RELOC_PPC_VLE_SDAREL_HA16A",
4910d4
   "BFD_RELOC_PPC_VLE_SDAREL_HA16D",
4910d4
+  "BFD_RELOC_PPC_REL16DX_HA",
4910d4
   "BFD_RELOC_PPC64_HIGHER",
4910d4
   "BFD_RELOC_PPC64_HIGHER_S",
4910d4
   "BFD_RELOC_PPC64_HIGHEST",
4910d4
diff -rup binutils-2.25.1.orig/bfd/reloc.c binutils-2.25.1/bfd/reloc.c
4910d4
--- binutils-2.25.1.orig/bfd/reloc.c	2016-05-06 09:56:58.697611788 +0100
4910d4
+++ binutils-2.25.1/bfd/reloc.c	2016-05-06 12:20:48.510442044 +0100
4910d4
@@ -2872,6 +2872,8 @@ ENUMX
4910d4
 ENUMX
4910d4
   BFD_RELOC_PPC_VLE_SDAREL_HA16D
4910d4
 ENUMX
4910d4
+  BFD_RELOC_PPC_REL16DX_HA
4910d4
+ENUMX
4910d4
   BFD_RELOC_PPC64_HIGHER
4910d4
 ENUMX
4910d4
   BFD_RELOC_PPC64_HIGHER_S
4910d4
Only in binutils-2.25.1/bfd: reloc.c.orig
4910d4
diff -rup binutils-2.25.1.orig/elfcpp/powerpc.h binutils-2.25.1/elfcpp/powerpc.h
4910d4
--- binutils-2.25.1.orig/elfcpp/powerpc.h	2016-05-06 09:56:59.278614752 +0100
4910d4
+++ binutils-2.25.1/elfcpp/powerpc.h	2016-05-06 12:20:48.510442044 +0100
4910d4
@@ -197,6 +197,7 @@ enum
4910d4
   R_PPC_VLE_SDAREL_HA16A = 231,
4910d4
   R_PPC_VLE_SDAREL_HA16D = 232,
4910d4
 
4910d4
+  R_POWERPC_REL16DX_HA = 246,
4910d4
   R_PPC64_JMP_IREL = 247,
4910d4
   R_POWERPC_IRELATIVE = 248,
4910d4
   R_POWERPC_REL16 = 249,
4910d4
diff -rup binutils-2.25.1.orig/gas/config/tc-ppc.c binutils-2.25.1/gas/config/tc-ppc.c
4910d4
--- binutils-2.25.1.orig/gas/config/tc-ppc.c	2016-05-06 09:56:59.436615558 +0100
4910d4
+++ binutils-2.25.1/gas/config/tc-ppc.c	2016-05-06 13:00:37.040798530 +0100
4910d4
@@ -1294,6 +1294,7 @@ PowerPC options:\n\
4910d4
 -mpower6, -mpwr6        generate code for Power6 architecture\n\
4910d4
 -mpower7, -mpwr7        generate code for Power7 architecture\n\
4910d4
 -mpower8, -mpwr8        generate code for Power8 architecture\n\
4910d4
+-mpower9, -mpwr9        generate code for Power9 architecture\n\
4910d4
 -mcell                  generate code for Cell Broadband Engine architecture\n\
4910d4
 -mcom                   generate code Power/PowerPC common instructions\n\
4910d4
 -many                   generate code for any architecture (PWR/PWRX/PPC)\n"));
4910d4
@@ -1561,6 +1562,8 @@ ppc_setup_opcodes (void)
4910d4
 		}
4910d4
 	    }
4910d4
 	  bad_insn |= insn_validate (op);
4910d4
+	  if (bad_insn)
4910d4
+	    fprintf (stderr, "validate fail for op %s\n", op->name);
4910d4
 	}
4910d4
 
4910d4
       if ((ppc_cpu & op->flags) != 0
4910d4
@@ -1614,6 +1617,8 @@ ppc_setup_opcodes (void)
4910d4
 	    }
4910d4
 
4910d4
 	  bad_insn |= insn_validate (op);
4910d4
+	  if (bad_insn)
4910d4
+	    fprintf (stderr, "val fail 2 for op %s\n", op->name);
4910d4
 	}
4910d4
 
4910d4
       if ((ppc_cpu & op->flags) != 0
4910d4
@@ -3087,6 +3092,11 @@ md_assemble (char *str)
4910d4
 		  break;
4910d4
 		}
4910d4
 
4910d4
+	      /* addpcis.  */
4910d4
+	      if (opcode->opcode == (19 << 26) + (2 << 1)
4910d4
+		  && reloc == BFD_RELOC_HI16_S)
4910d4
+		reloc = BFD_RELOC_PPC_REL16DX_HA;
4910d4
+
4910d4
 	      /* If VLE-mode convert LO/HI/HA relocations.  */
4910d4
       	      if (opcode->flags & PPC_OPCODE_VLE)
4910d4
 		{
4910d4
@@ -6443,13 +6453,14 @@ ppc_handle_align (struct frag *fragP)
4910d4
 
4910d4
       if ((ppc_cpu & PPC_OPCODE_POWER6) != 0
4910d4
 	  || (ppc_cpu & PPC_OPCODE_POWER7) != 0
4910d4
-	  || (ppc_cpu & PPC_OPCODE_POWER8) != 0)
4910d4
+	  || (ppc_cpu & PPC_OPCODE_POWER8) != 0
4910d4
+	  || (ppc_cpu & PPC_OPCODE_POWER9) != 0)
4910d4
 	{
4910d4
-	  /* For power6, power7 and power8, we want the last nop to be a group
4910d4
-	     terminating one.  Do this by inserting an rs_fill frag immediately
4910d4
-	     after this one, with its address set to the last nop location.
4910d4
-	     This will automatically reduce the number of nops in the current
4910d4
-	     frag by one.  */
4910d4
+	  /* For power6, power7, power8 and power9, we want the last nop to be
4910d4
+	     a group terminating one.  Do this by inserting an rs_fill frag
4910d4
+	     immediately after this one, with its address set to the last nop
4910d4
+	     location.  This will automatically reduce the number of nops in
4910d4
+	     the current frag by one.  */
4910d4
 	  if (count > 4)
4910d4
 	    {
4910d4
 	      struct frag *group_nop = xmalloc (SIZEOF_STRUCT_FRAG + 4);
4910d4
@@ -6464,13 +6475,14 @@ ppc_handle_align (struct frag *fragP)
4910d4
 	    }
4910d4
 
4910d4
 	  if ((ppc_cpu & PPC_OPCODE_POWER7) != 0
4910d4
-	      || (ppc_cpu & PPC_OPCODE_POWER8) != 0)
4910d4
+	      || (ppc_cpu & PPC_OPCODE_POWER8) != 0
4910d4
+	      || (ppc_cpu & PPC_OPCODE_POWER9) != 0)
4910d4
 	    {
4910d4
 	      if (ppc_cpu & PPC_OPCODE_E500MC)
4910d4
 		/* e500mc group terminating nop: "ori 0,0,0".  */
4910d4
 		md_number_to_chars (dest, 0x60000000, 4);
4910d4
 	      else
4910d4
-		/* power7/power8 group terminating nop: "ori 2,2,0".  */
4910d4
+		/* power7/power8/power9 group terminating nop: "ori 2,2,0".  */
4910d4
 		md_number_to_chars (dest, 0x60420000, 4);
4910d4
 	    }
4910d4
 	  else
4910d4
@@ -6488,6 +6500,7 @@ md_apply_fix (fixS *fixP, valueT *valP,
4910d4
 {
4910d4
   valueT value = * valP;
4910d4
   offsetT fieldval;
4910d4
+  unsigned long insn = 0;
4910d4
   const struct powerpc_operand *operand;
4910d4
 
4910d4
 #ifdef OBJ_ELF
4910d4
@@ -6496,6 +6509,9 @@ md_apply_fix (fixS *fixP, valueT *valP,
4910d4
       /* Hack around bfd_install_relocation brain damage.  */
4910d4
       if (fixP->fx_pcrel)
4910d4
 	value += fixP->fx_frag->fr_address + fixP->fx_where;
4910d4
+
4910d4
+      if (fixP->fx_addsy == abs_section_sym)
4910d4
+	fixP->fx_done = 1;
4910d4
     }
4910d4
   else
4910d4
     fixP->fx_done = 1;
4910d4
@@ -6606,6 +6622,7 @@ md_apply_fix (fixS *fixP, valueT *valP,
4910d4
 
4910d4
     case BFD_RELOC_HI16_S:
4910d4
     case BFD_RELOC_HI16_S_PCREL:
4910d4
+    case BFD_RELOC_PPC_REL16DX_HA:
4910d4
 #ifdef OBJ_ELF
4910d4
       if (REPORT_OVERFLOW_HI && ppc_obj64)
4910d4
 	{
4910d4
@@ -6652,7 +6669,6 @@ md_apply_fix (fixS *fixP, valueT *valP,
4910d4
     {
4910d4
       /* Handle relocs in an insn.  */
4910d4
       char *where;
4910d4
-      unsigned long insn;
4910d4
 
4910d4
       switch (fixP->fx_r_type)
4910d4
 	{
4910d4
@@ -7065,6 +7081,7 @@ md_apply_fix (fixS *fixP, valueT *valP,
4910d4
 	case BFD_RELOC_LO16_PCREL:
4910d4
 	case BFD_RELOC_HI16_PCREL:
4910d4
 	case BFD_RELOC_HI16_S_PCREL:
4910d4
+	case BFD_RELOC_PPC_REL16DX_HA:
4910d4
 	case BFD_RELOC_64_PCREL:
4910d4
 	case BFD_RELOC_32_PCREL:
4910d4
 	case BFD_RELOC_16_PCREL:
4910d4
Only in binutils-2.25.1/gas/config: tc-ppc.c.orig
4910d4
diff -rup binutils-2.25.1.orig/gas/doc/as.texinfo binutils-2.25.1/gas/doc/as.texinfo
4910d4
--- binutils-2.25.1.orig/gas/doc/as.texinfo	2016-05-06 09:56:59.444615599 +0100
4910d4
+++ binutils-2.25.1/gas/doc/as.texinfo	2016-05-06 12:20:48.513442062 +0100
4910d4
@@ -473,7 +473,8 @@ gcc(1), ld(1), and the Info entries for
4910d4
     @b{-m440}|@b{-m464}|@b{-m476}|@b{-m7400}|@b{-m7410}|@b{-m7450}|@b{-m7455}|@b{-m750cl}|@b{-mppc64}|
4910d4
     @b{-m620}|@b{-me500}|@b{-e500x2}|@b{-me500mc}|@b{-me500mc64}|@b{-me5500}|@b{-me6500}|@b{-mppc64bridge}|
4910d4
     @b{-mbooke}|@b{-mpower4}|@b{-mpwr4}|@b{-mpower5}|@b{-mpwr5}|@b{-mpwr5x}|@b{-mpower6}|@b{-mpwr6}|
4910d4
-    @b{-mpower7}|@b{-mpwr7}|@b{-mpower8}|@b{-mpwr8}|@b{-ma2}|@b{-mcell}|@b{-mspe}|@b{-mtitan}|@b{-me300}|@b{-mcom}]
4910d4
+    @b{-mpower7}|@b{-mpwr7}|@b{-mpower8}|@b{-mpwr8}|@b{-mpower9}|@b{-mpwr9}@b{-ma2}|
4910d4
+    @b{-mcell}|@b{-mspe}|@b{-mtitan}|@b{-me300}|@b{-mcom}]
4910d4
    [@b{-many}] [@b{-maltivec}|@b{-mvsx}|@b{-mhtm}|@b{-mvle}]
4910d4
    [@b{-mregnames}|@b{-mno-regnames}]
4910d4
    [@b{-mrelocatable}|@b{-mrelocatable-lib}|@b{-K PIC}] [@b{-memb}]
4910d4
Only in binutils-2.25.1/gas/doc: as.texinfo.orig
4910d4
diff -rup binutils-2.25.1.orig/gas/doc/c-ppc.texi binutils-2.25.1/gas/doc/c-ppc.texi
4910d4
--- binutils-2.25.1.orig/gas/doc/c-ppc.texi	2016-05-06 09:56:59.446615609 +0100
4910d4
+++ binutils-2.25.1/gas/doc/c-ppc.texi	2016-05-06 12:20:48.514442068 +0100
4910d4
@@ -141,6 +141,9 @@ Generate code for Power7 architecture.
4910d4
 @item -mpower8, -mpwr8
4910d4
 Generate code for Power8 architecture.
4910d4
 
4910d4
+@item -mpower9, -mpwr9
4910d4
+Generate code for Power9 architecture.
4910d4
+
4910d4
 @item -mcell
4910d4
 @item -mcell
4910d4
 Generate code for Cell Broadband Engine architecture.
4910d4
Only in binutils-2.25.1/gas/testsuite/gas/ppc: altivec3.d
4910d4
Only in binutils-2.25.1/gas/testsuite/gas/ppc: altivec3.s
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/power8.d binutils-2.25.1/gas/testsuite/gas/ppc/power8.d
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/power8.d	2016-05-06 09:57:00.087618880 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/power8.d	2016-05-06 12:20:48.514442068 +0100
4910d4
@@ -152,4 +152,12 @@ Disassembly of section \.text:
4910d4
  238:	(fe c7 2f 8c|8c 2f c7 fe) 	fmrgew  f22,f7,f5
4910d4
  23c:	(7c 00 71 9c|9c 71 00 7c) 	msgsnd  r14
4910d4
  240:	(7c 00 b9 dc|dc b9 00 7c) 	msgclr  r23
4910d4
+.*:	(7d 00 2e 99|99 2e 00 7d) 	lxvd2x  vs40,0,r5
4910d4
+.*:	(7d 00 2e 99|99 2e 00 7d) 	lxvd2x  vs40,0,r5
4910d4
+.*:	(7d 54 36 98|98 36 54 7d) 	lxvd2x  vs10,r20,r6
4910d4
+.*:	(7d 54 36 98|98 36 54 7d) 	lxvd2x  vs10,r20,r6
4910d4
+.*:	(7d 20 3f 99|99 3f 20 7d) 	stxvd2x vs41,0,r7
4910d4
+.*:	(7d 20 3f 99|99 3f 20 7d) 	stxvd2x vs41,0,r7
4910d4
+.*:	(7d 75 47 98|98 47 75 7d) 	stxvd2x vs11,r21,r8
4910d4
+.*:	(7d 75 47 98|98 47 75 7d) 	stxvd2x vs11,r21,r8
4910d4
 #pass
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/power8.s binutils-2.25.1/gas/testsuite/gas/ppc/power8.s
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/power8.s	2016-05-06 09:57:00.087618880 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/power8.s	2016-05-06 12:20:48.514442068 +0100
4910d4
@@ -144,3 +144,11 @@ power8:
4910d4
 	fmrgew       22,7,5
4910d4
 	msgsnd       14
4910d4
 	msgclr       23
4910d4
+	lxvx         40,0,5
4910d4
+	lxvd2x       40,0,5
4910d4
+	lxvx         10,20,6
4910d4
+	lxvd2x       10,20,6
4910d4
+	stxvx        41,0,7
4910d4
+	stxvd2x      41,0,7
4910d4
+	stxvx        11,21,8
4910d4
+	stxvd2x      11,21,8
4910d4
Only in binutils-2.25.1/gas/testsuite/gas/ppc: power9.d
4910d4
Only in binutils-2.25.1/gas/testsuite/gas/ppc: power9.s
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/ppc.exp binutils-2.25.1/gas/testsuite/gas/ppc/ppc.exp
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/ppc.exp	2016-05-06 09:57:00.087618880 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/ppc.exp	2016-05-06 12:20:48.515442074 +0100
4910d4
@@ -69,6 +69,7 @@ if { [istarget powerpc*-*-*] } then {
4910d4
 	run_dump_test "simpshft"
4910d4
 	run_dump_test "altivec"
4910d4
 	run_dump_test "altivec2"
4910d4
+	run_dump_test "altivec3"
4910d4
 	run_dump_test "altivec_and_spe"
4910d4
 	run_dump_test "booke"
4910d4
 	run_dump_test "e500"
4910d4
@@ -84,8 +85,10 @@ if { [istarget powerpc*-*-*] } then {
4910d4
 	run_dump_test "power6"
4910d4
 	run_dump_test "power7"
4910d4
 	run_dump_test "power8"
4910d4
+	run_dump_test "power9"
4910d4
 	run_dump_test "vsx"
4910d4
 	run_dump_test "vsx2"
4910d4
+	run_dump_test "vsx3"
4910d4
 	run_dump_test "htm"
4910d4
 	run_dump_test "titan"
4910d4
     }
4910d4
Only in binutils-2.25.1/gas/testsuite/gas/ppc: ppc.exp.orig
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx2.d binutils-2.25.1/gas/testsuite/gas/ppc/vsx2.d
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx2.d	2016-05-06 09:57:00.089618890 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/vsx2.d	2016-05-06 12:20:48.516442080 +0100
4910d4
@@ -1,5 +1,5 @@
4910d4
-#as: -mvsx
4910d4
-#objdump: -dr -Mvsx
4910d4
+#as: -mpower8
4910d4
+#objdump: -dr -Mpower8
4910d4
 #name: VSX ISA 2.07 instructions
4910d4
 
4910d4
 .*
4910d4
Only in binutils-2.25.1/gas/testsuite/gas/ppc: vsx3.d
4910d4
Only in binutils-2.25.1/gas/testsuite/gas/ppc: vsx3.s
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx.d binutils-2.25.1/gas/testsuite/gas/ppc/vsx.d
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx.d	2016-05-06 09:57:00.089618890 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/vsx.d	2016-05-06 12:20:48.516442080 +0100
4910d4
@@ -166,8 +166,8 @@ Disassembly of section \.text:
4910d4
  26c:	(f1 12 e7 bf|bf e7 12 f1) 	xxsel   vs40,vs50,vs60,vs62
4910d4
  270:	(f1 12 e2 17|17 e2 12 f1) 	xxsldwi vs40,vs50,vs60,2
4910d4
  274:	(f1 02 e2 93|93 e2 02 f1) 	xxspltw vs40,vs60,2
4910d4
- 278:	(7d 00 a6 99|99 a6 00 7d) 	lxvd2x  vs40,0,r20
4910d4
- 27c:	(7d 0a a6 99|99 a6 0a 7d) 	lxvd2x  vs40,r10,r20
4910d4
- 280:	(7d 00 a7 99|99 a7 00 7d) 	stxvd2x vs40,0,r20
4910d4
- 284:	(7d 0a a7 99|99 a7 0a 7d) 	stxvd2x vs40,r10,r20
4910d4
+.*:	(7d 00 a6 99|99 a6 00 7d) 	lxvd2x  vs40,0,r20
4910d4
+.*:	(7d 0a a6 99|99 a6 0a 7d) 	lxvd2x  vs40,r10,r20
4910d4
+.*:	(7d 00 a7 99|99 a7 00 7d) 	stxvd2x vs40,0,r20
4910d4
+.*:	(7d 0a a7 99|99 a7 0a 7d) 	stxvd2x vs40,r10,r20
4910d4
 #pass
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx.s binutils-2.25.1/gas/testsuite/gas/ppc/vsx.s
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx.s	2016-05-06 09:57:00.089618890 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/vsx.s	2016-05-06 12:20:48.516442080 +0100
4910d4
@@ -158,7 +158,7 @@ start:
4910d4
 	xxsel      40,50,60,62
4910d4
 	xxsldwi    40,50,60,2
4910d4
 	xxspltw    40,60,2
4910d4
-	lxvx       40,0,20
4910d4
-	lxvx       40,10,20
4910d4
-	stxvx      40,0,20
4910d4
-	stxvx      40,10,20
4910d4
+	lxvd2x     40,0,20
4910d4
+	lxvd2x     40,10,20
4910d4
+	stxvd2x    40,0,20
4910d4
+	stxvd2x    40,10,20
4910d4
diff -rup binutils-2.25.1.orig/gold/powerpc.cc binutils-2.25.1/gold/powerpc.cc
4910d4
--- binutils-2.25.1.orig/gold/powerpc.cc	2016-05-06 09:57:00.227619594 +0100
4910d4
+++ binutils-2.25.1/gold/powerpc.cc	2016-05-06 12:20:48.518442092 +0100
4910d4
@@ -1478,6 +1478,7 @@ public:
4910d4
 private:
4910d4
   typedef Powerpc_relocate_functions<size, big_endian> This;
4910d4
   typedef typename elfcpp::Elf_types<size>::Elf_Addr Address;
4910d4
+  typedef typename elfcpp::Elf_types<size>::Elf_Swxword SignedAddress;
4910d4
 
4910d4
   template<int valsize>
4910d4
   static inline bool
4910d4
@@ -1638,6 +1639,16 @@ public:
4910d4
     return stat;
4910d4
   }
4910d4
 
4910d4
+  // R_POWERPC_ADDR16_DQ: (Symbol + Addend) & 0xfff0
4910d4
+  static inline Status
4910d4
+  addr16_dq(unsigned char* view, Address value, Overflow_check overflow)
4910d4
+  {
4910d4
+    Status stat = This::template rela<16,16>(view, 0, 0xfff0, value, overflow);
4910d4
+    if ((value & 15) != 0)
4910d4
+      stat = STATUS_OVERFLOW;
4910d4
+    return stat;
4910d4
+  }
4910d4
+
4910d4
   // R_POWERPC_ADDR16_HI: ((Symbol + Addend) >> 16) & 0xffff
4910d4
   static inline void
4910d4
   addr16_hi(unsigned char* view, Address value)
4910d4
@@ -1677,6 +1688,20 @@ public:
4910d4
       stat = STATUS_OVERFLOW;
4910d4
     return stat;
4910d4
   }
4910d4
+
4910d4
+  // R_POWERPC_REL16DX_HA
4910d4
+  static inline Status
4910d4
+  addr16dx_ha(unsigned char *view, Address value, Overflow_check overflow)
4910d4
+  {
4910d4
+    typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
4910d4
+    Valtype* wv = reinterpret_cast<Valtype*>(view);
4910d4
+    Valtype val = elfcpp::Swap<32, big_endian>::readval(wv);
4910d4
+    value += 0x8000;
4910d4
+    value = static_cast<SignedAddress>(value) >> 16;
4910d4
+    val |= (value & 0xffc1) | ((value & 0x3e) << 15);
4910d4
+    elfcpp::Swap<32, big_endian>::writeval(wv, val);
4910d4
+    return overflowed<16>(value, overflow);
4910d4
+  }
4910d4
 };
4910d4
 
4910d4
 // Set ABI version for input and output.
4910d4
@@ -5544,6 +5569,7 @@ Target_powerpc<size, big_endian>::Scan::
4910d4
     case elfcpp::R_POWERPC_REL16_LO:
4910d4
     case elfcpp::R_POWERPC_REL16_HI:
4910d4
     case elfcpp::R_POWERPC_REL16_HA:
4910d4
+    case elfcpp::R_POWERPC_REL16DX_HA:
4910d4
     case elfcpp::R_POWERPC_SECTOFF:
4910d4
     case elfcpp::R_POWERPC_SECTOFF_LO:
4910d4
     case elfcpp::R_POWERPC_SECTOFF_HI:
4910d4
@@ -5993,6 +6019,7 @@ Target_powerpc<size, big_endian>::Scan::
4910d4
     case elfcpp::R_POWERPC_REL16_LO:
4910d4
     case elfcpp::R_POWERPC_REL16_HI:
4910d4
     case elfcpp::R_POWERPC_REL16_HA:
4910d4
+    case elfcpp::R_POWERPC_REL16DX_HA:
4910d4
     case elfcpp::R_POWERPC_SECTOFF:
4910d4
     case elfcpp::R_POWERPC_SECTOFF_LO:
4910d4
     case elfcpp::R_POWERPC_SECTOFF_HI:
4910d4
@@ -7302,6 +7329,7 @@ Target_powerpc<size, big_endian>::Reloca
4910d4
     case elfcpp::R_POWERPC_REL16_LO:
4910d4
     case elfcpp::R_POWERPC_REL16_HI:
4910d4
     case elfcpp::R_POWERPC_REL16_HA:
4910d4
+    case elfcpp::R_POWERPC_REL16DX_HA:
4910d4
     case elfcpp::R_POWERPC_REL14:
4910d4
     case elfcpp::R_POWERPC_REL14_BRTAKEN:
4910d4
     case elfcpp::R_POWERPC_REL14_BRNTAKEN:
4910d4
@@ -7500,6 +7528,7 @@ Target_powerpc<size, big_endian>::Reloca
4910d4
       break;
4910d4
 
4910d4
     case elfcpp::R_POWERPC_REL32:
4910d4
+    case elfcpp::R_POWERPC_REL16DX_HA:
4910d4
       if (size == 64)
4910d4
 	overflow = Reloc::CHECK_SIGNED;
4910d4
       break;
4910d4
@@ -7580,11 +7609,13 @@ Target_powerpc<size, big_endian>::Reloca
4910d4
       break;
4910d4
     }
4910d4
 
4910d4
+  Insn* iview = reinterpret_cast<Insn*>(view - 2 * big_endian);
4910d4
+  Insn insn = 0;
4910d4
+
4910d4
   if (overflow == Reloc::CHECK_LOW_INSN
4910d4
       || overflow == Reloc::CHECK_HIGH_INSN)
4910d4
     {
4910d4
-      Insn* iview = reinterpret_cast<Insn*>(view - 2 * big_endian);
4910d4
-      Insn insn = elfcpp::Swap<32, big_endian>::readval(iview);
4910d4
+      insn = elfcpp::Swap<32, big_endian>::readval(iview);
4910d4
 
4910d4
       if ((insn & (0x3f << 26)) == 10u << 26 /* cmpli */)
4910d4
 	overflow = Reloc::CHECK_BITFIELD;
4910d4
@@ -7600,6 +7631,7 @@ Target_powerpc<size, big_endian>::Reloca
4910d4
 	overflow = Reloc::CHECK_SIGNED;
4910d4
     }
4910d4
 
4910d4
+  bool maybe_dq_reloc = false;
4910d4
   typename Powerpc_relocate_functions<size, big_endian>::Status status
4910d4
     = Powerpc_relocate_functions<size, big_endian>::STATUS_OK;
4910d4
   switch (r_type)
4910d4
@@ -7652,7 +7684,7 @@ Target_powerpc<size, big_endian>::Reloca
4910d4
       if (size == 64)
4910d4
 	{
4910d4
 	  // On ppc64 these are all ds form
4910d4
-	  status = Reloc::addr16_ds(view, value, overflow);
4910d4
+	  maybe_dq_reloc = true;
4910d4
 	  break;
4910d4
 	}
4910d4
     case elfcpp::R_POWERPC_ADDR16:
4910d4
@@ -7673,7 +7705,10 @@ Target_powerpc<size, big_endian>::Reloca
4910d4
     case elfcpp::R_POWERPC_DTPREL16_LO:
4910d4
     case elfcpp::R_POWERPC_GOT_TLSGD16_LO:
4910d4
     case elfcpp::R_POWERPC_GOT_TLSLD16_LO:
4910d4
-      status = Reloc::addr16(view, value, overflow);
4910d4
+      if (size == 64)
4910d4
+	status = Reloc::addr16(view, value, overflow);
4910d4
+      else
4910d4
+	maybe_dq_reloc = true;
4910d4
       break;
4910d4
 
4910d4
     case elfcpp::R_POWERPC_UADDR16:
4910d4
@@ -7720,6 +7755,10 @@ Target_powerpc<size, big_endian>::Reloca
4910d4
       Reloc::addr16_ha(view, value);
4910d4
       break;
4910d4
 
4910d4
+    case elfcpp::R_POWERPC_REL16DX_HA:
4910d4
+      status = Reloc::addr16dx_ha(view, value, overflow);
4910d4
+      break;
4910d4
+
4910d4
     case elfcpp::R_PPC64_DTPREL16_HIGHER:
4910d4
       if (size == 32)
4910d4
 	// R_PPC_EMB_NADDR16_LO
4910d4
@@ -7774,7 +7813,7 @@ Target_powerpc<size, big_endian>::Reloca
4910d4
     case elfcpp::R_PPC64_GOT16_LO_DS:
4910d4
     case elfcpp::R_PPC64_SECTOFF_DS:
4910d4
     case elfcpp::R_PPC64_SECTOFF_LO_DS:
4910d4
-      status = Reloc::addr16_ds(view, value, overflow);
4910d4
+      maybe_dq_reloc = true;
4910d4
       break;
4910d4
 
4910d4
     case elfcpp::R_POWERPC_ADDR14:
4910d4
@@ -7839,6 +7878,26 @@ Target_powerpc<size, big_endian>::Reloca
4910d4
 			     r_type);
4910d4
       break;
4910d4
     }
4910d4
+
4910d4
+  if (maybe_dq_reloc)
4910d4
+    {
4910d4
+      if (insn == 0)
4910d4
+	insn = elfcpp::Swap<32, big_endian>::readval(iview);
4910d4
+
4910d4
+      if ((insn & (0x3f << 26)) == 56u << 26 /* lq */
4910d4
+	  || ((insn & (0x3f << 26)) == (61u << 26) /* lxv, stxv */
4910d4
+	      && (insn & 3) == 1))
4910d4
+	status = Reloc::addr16_dq(view, value, overflow);
4910d4
+      else if (size == 64
4910d4
+	       || (insn & (0x3f << 26)) == 58u << 26 /* ld,ldu,lwa */
4910d4
+	       || (insn & (0x3f << 26)) == 62u << 26 /* std,stdu,stq */
4910d4
+	       || (insn & (0x3f << 26)) == 57u << 26 /* lfdp */
4910d4
+	       || (insn & (0x3f << 26)) == 61u << 26 /* stfdp */)
4910d4
+	status = Reloc::addr16_ds(view, value, overflow);
4910d4
+      else
4910d4
+	status = Reloc::addr16(view, value, overflow);
4910d4
+    }
4910d4
+
4910d4
   if (status != Powerpc_relocate_functions<size, big_endian>::STATUS_OK
4910d4
       && (has_stub_value
4910d4
 	  || !(gsym != NULL
4910d4
Only in binutils-2.25.1/gold: powerpc.cc.orig
4910d4
diff -rup binutils-2.25.1.orig/include/elf/ppc64.h binutils-2.25.1/include/elf/ppc64.h
4910d4
--- binutils-2.25.1.orig/include/elf/ppc64.h	2016-05-06 09:57:00.307620002 +0100
4910d4
+++ binutils-2.25.1/include/elf/ppc64.h	2016-05-06 12:20:48.519442098 +0100
4910d4
@@ -157,6 +157,10 @@ START_RELOC_NUMBERS (elf_ppc64_reloc_typ
4910d4
 /* Fake relocation only used internally by ld.  */
4910d4
   RELOC_NUMBER (R_PPC64_LO_DS_OPT,	   128)
4910d4
 #endif
4910d4
+
4910d4
+/* Power9 split rel16 for addpcis.  */
4910d4
+  RELOC_NUMBER (R_PPC64_REL16DX_HA,	   246)
4910d4
+
4910d4
 /* Support STT_GNU_IFUNC plt calls.  */
4910d4
   RELOC_NUMBER (R_PPC64_JMP_IREL,	   247)
4910d4
   RELOC_NUMBER (R_PPC64_IRELATIVE,	   248)
4910d4
diff -rup binutils-2.25.1.orig/include/elf/ppc.h binutils-2.25.1/include/elf/ppc.h
4910d4
--- binutils-2.25.1.orig/include/elf/ppc.h	2016-05-06 09:57:00.306619997 +0100
4910d4
+++ binutils-2.25.1/include/elf/ppc.h	2016-05-06 12:20:48.519442098 +0100
4910d4
@@ -149,6 +149,9 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
4910d4
   RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16A,	231)
4910d4
   RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16D,	232)
4910d4
 
4910d4
+/* Power9 split rel16 for addpcis.  */
4910d4
+  RELOC_NUMBER (R_PPC_REL16DX_HA,	246)
4910d4
+
4910d4
 /* Support STT_GNU_IFUNC plt calls.  */
4910d4
   RELOC_NUMBER (R_PPC_IRELATIVE,	248)
4910d4
 
4910d4
diff -rup binutils-2.25.1.orig/include/opcode/ppc.h binutils-2.25.1/include/opcode/ppc.h
4910d4
--- binutils-2.25.1.orig/include/opcode/ppc.h	2016-05-06 09:57:00.309620012 +0100
4910d4
+++ binutils-2.25.1/include/opcode/ppc.h	2016-05-06 12:20:48.519442098 +0100
4910d4
@@ -204,6 +204,12 @@ extern const int vle_num_opcodes;
4910d4
 /* Opcode is supported by ppc821/850/860.  */
4910d4
 #define PPC_OPCODE_860	      0x10000000000ull
4910d4
 
4910d4
+/* Opcode is only supported by Power9 architecture.  */
4910d4
+#define PPC_OPCODE_POWER9     0x20000000000ull
4910d4
+
4910d4
+/* Opcode is supported by Vector-Scalar (VSX) Unit from ISA 2.08.  */
4910d4
+#define PPC_OPCODE_VSX3       0x40000000000ull
4910d4
+
4910d4
 /* A macro to extract the major opcode from an instruction.  */
4910d4
 #define PPC_OP(i) (((i) >> 26) & 0x3f)
4910d4
 
4910d4
Only in binutils-2.25.1/ld/testsuite/ld-powerpc: addpcis.d
4910d4
Only in binutils-2.25.1/ld/testsuite/ld-powerpc: addpcis.s
4910d4
diff -rup binutils-2.25.1.orig/ld/testsuite/ld-powerpc/powerpc.exp binutils-2.25.1/ld/testsuite/ld-powerpc/powerpc.exp
4910d4
--- binutils-2.25.1.orig/ld/testsuite/ld-powerpc/powerpc.exp	2016-05-06 09:57:00.593621461 +0100
4910d4
+++ binutils-2.25.1/ld/testsuite/ld-powerpc/powerpc.exp	2016-05-06 12:22:05.329904562 +0100
4910d4
@@ -285,6 +285,7 @@ if [ supports_ppc64 ] then {
4910d4
     run_dump_test "ambiguousv2b"
4910d4
     run_dump_test "defsym"
4910d4
     run_dump_test "tlsld"
4910d4
+    run_dump_test "addpcis"
4910d4
 }
4910d4
 
4910d4
 run_dump_test "tlsld32"
4910d4
Only in binutils-2.25.1/ld/testsuite/ld-powerpc: powerpc.exp.orig
4910d4
Only in binutils-2.25.1/ld/testsuite/ld-powerpc: powerpc.exp.rej
4910d4
diff -rup binutils-2.25.1.orig/opcodes/ppc-dis.c binutils-2.25.1/opcodes/ppc-dis.c
4910d4
--- binutils-2.25.1.orig/opcodes/ppc-dis.c	2016-05-06 09:57:00.706622038 +0100
4910d4
+++ binutils-2.25.1/opcodes/ppc-dis.c	2016-05-06 12:20:48.520442104 +0100
4910d4
@@ -157,6 +157,12 @@ struct ppc_mopt ppc_opts[] = {
4910d4
 		| PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 | PPC_OPCODE_HTM
4910d4
 		| PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2 | PPC_OPCODE_VSX),
4910d4
     0 },
4910d4
+  { "power9",  (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_64
4910d4
+		| PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6
4910d4
+		| PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 | PPC_OPCODE_POWER9
4910d4
+		| PPC_OPCODE_HTM | PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2
4910d4
+		| PPC_OPCODE_VSX | PPC_OPCODE_VSX3 ),
4910d4
+    0 },
4910d4
   { "ppc",     (PPC_OPCODE_PPC),
4910d4
     0 },
4910d4
   { "ppc32",   (PPC_OPCODE_PPC),
4910d4
@@ -191,6 +197,12 @@ struct ppc_mopt ppc_opts[] = {
4910d4
 		| PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 | PPC_OPCODE_HTM
4910d4
 		| PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2 | PPC_OPCODE_VSX),
4910d4
     0 },
4910d4
+  { "pwr9",    (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_64
4910d4
+		| PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6
4910d4
+		| PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 | PPC_OPCODE_POWER9
4910d4
+		| PPC_OPCODE_HTM | PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2
4910d4
+		| PPC_OPCODE_VSX | PPC_OPCODE_VSX3 ),
4910d4
+    0 },
4910d4
   { "pwrx",    (PPC_OPCODE_POWER | PPC_OPCODE_POWER2),
4910d4
     0 },
4910d4
   { "spe",     (PPC_OPCODE_PPC | PPC_OPCODE_EFS),
4910d4
@@ -201,7 +213,7 @@ struct ppc_mopt ppc_opts[] = {
4910d4
   { "vle",     (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_VLE),
4910d4
     PPC_OPCODE_VLE },
4910d4
   { "vsx",     (PPC_OPCODE_PPC),
4910d4
-    PPC_OPCODE_VSX },
4910d4
+    PPC_OPCODE_VSX | PPC_OPCODE_VSX3 },
4910d4
   { "htm",     (PPC_OPCODE_PPC),
4910d4
     PPC_OPCODE_HTM },
4910d4
 };
4910d4
@@ -303,7 +315,7 @@ powerpc_init_dialect (struct disassemble
4910d4
       dialect = ppc_parse_cpu (dialect, &sticky, "vle");
4910d4
       break;
4910d4
     default:
4910d4
-      dialect = ppc_parse_cpu (dialect, &sticky, "power8") | PPC_OPCODE_ANY;
4910d4
+      dialect = ppc_parse_cpu (dialect, &sticky, "power9") | PPC_OPCODE_ANY;
4910d4
     }
4910d4
 
4910d4
   arg = info->disassembler_options;
4910d4
diff -rup binutils-2.25.1.orig/opcodes/ppc-opc.c binutils-2.25.1/opcodes/ppc-opc.c
4910d4
--- binutils-2.25.1.orig/opcodes/ppc-opc.c	2016-05-06 09:57:00.695621982 +0100
4910d4
+++ binutils-2.25.1/opcodes/ppc-opc.c	2016-05-06 13:08:55.068779737 +0100
4910d4
@@ -54,8 +54,18 @@ static long extract_bo (unsigned long, p
4910d4
 static unsigned long insert_boe (unsigned long, long, ppc_cpu_t, const char **);
4910d4
 static long extract_boe (unsigned long, ppc_cpu_t, int *);
4910d4
 static unsigned long insert_esync (unsigned long, long, ppc_cpu_t, const char **);
4910d4
+static unsigned long insert_dcmxs (unsigned long, long, ppc_cpu_t, const char **);
4910d4
+static long extract_dcmxs (unsigned long, ppc_cpu_t, int *);
4910d4
+static unsigned long insert_dxd (unsigned long, long, ppc_cpu_t, const char **);
4910d4
+static long extract_dxd (unsigned long, ppc_cpu_t, int *);
4910d4
+static unsigned long insert_dxdn (unsigned long, long, ppc_cpu_t, const char **);
4910d4
+static long extract_dxdn (unsigned long, ppc_cpu_t, int *);
4910d4
 static unsigned long insert_fxm (unsigned long, long, ppc_cpu_t, const char **);
4910d4
 static long extract_fxm (unsigned long, ppc_cpu_t, int *);
4910d4
+static unsigned long insert_l0 (unsigned long, long, ppc_cpu_t, const char **);
4910d4
+static long extract_l0 (unsigned long, ppc_cpu_t, int *);
4910d4
+static unsigned long insert_l1 (unsigned long, long, ppc_cpu_t, const char **);
4910d4
+static long extract_l1 (unsigned long, ppc_cpu_t, int *);
4910d4
 static unsigned long insert_li20 (unsigned long, long, ppc_cpu_t, const char **);
4910d4
 static long extract_li20 (unsigned long, ppc_cpu_t, int *);
4910d4
 static unsigned long insert_ls (unsigned long, long, ppc_cpu_t, const char **);
4910d4
@@ -98,6 +108,8 @@ static unsigned long insert_tbr (unsigne
4910d4
 static long extract_tbr (unsigned long, ppc_cpu_t, int *);
4910d4
 static unsigned long insert_xt6 (unsigned long, long, ppc_cpu_t, const char **);
4910d4
 static long extract_xt6 (unsigned long, ppc_cpu_t, int *);
4910d4
+static unsigned long insert_xtq6 (unsigned long, long, ppc_cpu_t, const char **);
4910d4
+static long extract_xtq6 (unsigned long, ppc_cpu_t, int *);
4910d4
 static unsigned long insert_xa6 (unsigned long, long, ppc_cpu_t, const char **);
4910d4
 static long extract_xa6 (unsigned long, ppc_cpu_t, int *);
4910d4
 static unsigned long insert_xb6 (unsigned long, long, ppc_cpu_t, const char **);
4910d4
@@ -302,9 +314,17 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define D8 D + 1
4910d4
   { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
4910d4
 
4910d4
+  /* The DCMX field in an X form instruction.  */
4910d4
+#define DCMX D8 + 1
4910d4
+  { 0x7f, 16, NULL, NULL, 0 },
4910d4
+
4910d4
+  /* The split DCMX field in an X form instruction.  */
4910d4
+#define DCMXS DCMX + 1
4910d4
+  { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
4910d4
+
4910d4
   /* The DQ field in a DQ form instruction.  This is like D, but the
4910d4
      lower four bits are forced to zero. */
4910d4
-#define DQ D8 + 1
4910d4
+#define DQ DCMXS + 1
4910d4
   { 0xfff0, 0, NULL, NULL,
4910d4
     PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
4910d4
 
4910d4
@@ -320,10 +340,21 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define BHRBE DUIS
4910d4
   { 0x3ff, 11, NULL, NULL, 0 },
4910d4
 
4910d4
+  /* The split D field in a DX form instruction.  */
4910d4
+#define DXD DUIS + 1
4910d4
+  { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
4910d4
+    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
4910d4
+
4910d4
+  /* The split ND field in a DX form instruction.
4910d4
+     This is the same as the DX field, only negated.  */
4910d4
+#define NDXD DXD + 1
4910d4
+  { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
4910d4
+    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
4910d4
+
4910d4
   /* The E field in a wrteei instruction.  */
4910d4
   /* And the W bit in the pair singles instructions.  */
4910d4
   /* And the ST field in a VX form instruction.  */
4910d4
-#define E DUIS + 1
4910d4
+#define E NDXD + 1
4910d4
 #define PSW E
4910d4
 #define ST E
4910d4
   { 0x1, 15, NULL, NULL, 0 },
4910d4
@@ -397,8 +428,16 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define HTM_R L
4910d4
   { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
4910d4
 
4910d4
+  /* The L field in an X form instruction which must be zero.  */
4910d4
+#define L0 L + 1
4910d4
+  { 0x1, 21, insert_l0, extract_l0, PPC_OPERAND_OPTIONAL },
4910d4
+
4910d4
+  /* The L field in an X form instruction which must be one.  */
4910d4
+#define L1 L0 + 1
4910d4
+  { 0x1, 21, insert_l1, extract_l1, 0 },
4910d4
+
4910d4
   /* The LEV field in a POWER SVC form instruction.  */
4910d4
-#define SVC_LEV L + 1
4910d4
+#define SVC_LEV L1 + 1
4910d4
   { 0x7f, 5, NULL, NULL, 0 },
4910d4
 
4910d4
   /* The LEV field in an SC form instruction.  */
4910d4
@@ -513,10 +552,14 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define RBOPT RBX + 1
4910d4
   { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
4910d4
 
4910d4
+  /* The RC register field in an maddld, maddhd or maddhdu instruction.  */
4910d4
+#define RC RBOPT + 1
4910d4
+  { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
4910d4
+
4910d4
   /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
4910d4
      instruction or the RT field in a D, DS, X, XFX or XO form
4910d4
      instruction.  */
4910d4
-#define RS RBOPT + 1
4910d4
+#define RS RC + 1
4910d4
 #define RT RS
4910d4
 #define RT_MASK (0x1f << 21)
4910d4
 #define RD RS
4910d4
@@ -577,6 +620,8 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define SH_MASK (0x1f << 11)
4910d4
   /* The other UIMM field in a EVX form instruction.  */
4910d4
 #define EVUIMM SH
4910d4
+  /* The FC field in an atomic X form instruction.  */
4910d4
+#define FC SH
4910d4
   { 0x1f, 11, NULL, NULL, 0 },
4910d4
 
4910d4
   /* The SI field in a HTM X form instruction.  */
4910d4
@@ -705,8 +750,12 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define UIMM3 UIMM + 1
4910d4
   { 0x7, 16, NULL, NULL, 0 },
4910d4
 
4910d4
+  /* The 6-bit UIM field in a X form instruction.  */
4910d4
+#define UIM6 UIMM3 + 1
4910d4
+  { 0x3f, 16, NULL, NULL, 0 },
4910d4
+
4910d4
   /* The SIX field in a VX form instruction.  */
4910d4
-#define SIX UIMM3 + 1
4910d4
+#define SIX UIM6 + 1
4910d4
   { 0xf, 11, NULL, NULL, 0 },
4910d4
 
4910d4
   /* The PS field in a VX form instruction.  */
4910d4
@@ -752,9 +801,10 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define PSD PSQM + 1
4910d4
   {  0xfff, 0, 0, 0,  PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
4910d4
 
4910d4
-  /* The L field in an mtmsrd or A form instruction or W in an X form.  */
4910d4
+  /* The L field in an mtmsrd or A form instruction or R or W in an X form.  */
4910d4
 #define A_L PSD + 1
4910d4
 #define W A_L
4910d4
+#define X_R A_L
4910d4
   { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
4910d4
 
4910d4
 #define RMC A_L + 1
4910d4
@@ -763,7 +813,13 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define R RMC + 1
4910d4
   { 0x1, 16, NULL, NULL, 0 },
4910d4
 
4910d4
-#define SP R + 1
4910d4
+#define RIC R + 1
4910d4
+  { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
4910d4
+
4910d4
+#define PRS RIC + 1
4910d4
+  { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
4910d4
+
4910d4
+#define SP PRS + 1
4910d4
   { 0x3, 19, NULL, NULL, 0 },
4910d4
 
4910d4
 #define S SP + 1
4910d4
@@ -838,8 +894,13 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define XT6 XS6
4910d4
   { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
4910d4
 
4910d4
+  /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
4910d4
+#define XSQ6 XT6 + 1
4910d4
+#define XTQ6 XSQ6
4910d4
+  { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
4910d4
+
4910d4
   /* The XA field in an XX3 form instruction.  This is split.  */
4910d4
-#define XA6 XT6 + 1
4910d4
+#define XA6 XTQ6 + 1
4910d4
   { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
4910d4
 
4910d4
   /* The XB field in an XX2 or XX3 form instruction.  This is split.  */
4910d4
@@ -869,6 +930,8 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define UIM DMEX + 1
4910d4
   /* The 2-bit UIMM field in a VX form instruction.  */
4910d4
 #define UIMM2 UIM
4910d4
+  /* The 2-bit L field in a darn instruction.  */
4910d4
+#define LRAND UIM
4910d4
   { 0x3, 16, NULL, NULL, 0 },
4910d4
 
4910d4
 #define ERAT_T UIM + 1
4910d4
@@ -876,6 +939,10 @@ const struct powerpc_operand powerpc_ope
4910d4
 
4910d4
 #define IH ERAT_T + 1
4910d4
   { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
4910d4
+
4910d4
+  /* The 8-bit IMM8 field in a XX1 form instruction.  */
4910d4
+#define IMM8 IH + 1
4910d4
+  { 0xff, 11, NULL, NULL, 0 },
4910d4
 };
4910d4
 
4910d4
 const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
4910d4
@@ -1272,6 +1339,64 @@ extract_boe (unsigned long insn,
4910d4
   return value & 0x1e;
4910d4
 }
4910d4
 
4910d4
+/* The DCMX field in a X form instruction when the field is split
4910d4
+   into separate DC, DM and DX fields.  */
4910d4
+
4910d4
+static unsigned long
4910d4
+insert_dcmxs (unsigned long insn,
4910d4
+	    long value,
4910d4
+	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	    const char **errmsg ATTRIBUTE_UNUSED)
4910d4
+{
4910d4
+  return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3) | (value & 0x40);
4910d4
+}
4910d4
+
4910d4
+static long
4910d4
+extract_dcmxs (unsigned long insn,
4910d4
+	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	     int *invalid ATTRIBUTE_UNUSED)
4910d4
+{
4910d4
+  return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
4910d4
+}
4910d4
+
4910d4
+/* The D field in a DX form instruction when the field is split
4910d4
+   into separate D0, D1 and D2 fields.  */
4910d4
+
4910d4
+static unsigned long
4910d4
+insert_dxd (unsigned long insn,
4910d4
+	    long value,
4910d4
+	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	    const char **errmsg ATTRIBUTE_UNUSED)
4910d4
+{
4910d4
+  return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
4910d4
+}
4910d4
+
4910d4
+static long
4910d4
+extract_dxd (unsigned long insn,
4910d4
+	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	     int *invalid ATTRIBUTE_UNUSED)
4910d4
+{
4910d4
+  unsigned long dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
4910d4
+  return (dxd ^ 0x8000) - 0x8000;
4910d4
+}
4910d4
+
4910d4
+static unsigned long
4910d4
+insert_dxdn (unsigned long insn,
4910d4
+	    long value,
4910d4
+	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	    const char **errmsg ATTRIBUTE_UNUSED)
4910d4
+{
4910d4
+  return insert_dxd (insn, -value, dialect, errmsg);
4910d4
+}
4910d4
+
4910d4
+static long
4910d4
+extract_dxdn (unsigned long insn,
4910d4
+	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	     int *invalid ATTRIBUTE_UNUSED)
4910d4
+{
4910d4
+  return -extract_dxd (insn, dialect, invalid);
4910d4
+}
4910d4
+
4910d4
 /* FXM mask in mfcr and mtcrf instructions.  */
4910d4
 
4910d4
 static unsigned long
4910d4
@@ -1343,6 +1468,58 @@ extract_fxm (unsigned long insn,
4910d4
   return mask;
4910d4
 }
4910d4
 
4910d4
+/* The L field in an X form instruction which must have the value zero.  */
4910d4
+
4910d4
+static unsigned long
4910d4
+insert_l0 (unsigned long insn,
4910d4
+	   long value,
4910d4
+	   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	   const char **errmsg)
4910d4
+{
4910d4
+  if (value != 0)
4910d4
+    *errmsg = _("invalid operand constant");
4910d4
+  return insn & ~(0x1 << 21);
4910d4
+}
4910d4
+
4910d4
+static long
4910d4
+extract_l0 (unsigned long insn,
4910d4
+	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	    int *invalid)
4910d4
+{
4910d4
+  long value;
4910d4
+
4910d4
+  value = (insn >> 21) & 0x1;
4910d4
+  if (value != 0)
4910d4
+    *invalid = 1;
4910d4
+  return value;
4910d4
+}
4910d4
+
4910d4
+/* The L field in an X form instruction which must have the value one.  */
4910d4
+
4910d4
+static unsigned long
4910d4
+insert_l1 (unsigned long insn,
4910d4
+	   long value,
4910d4
+	   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	   const char **errmsg)
4910d4
+{
4910d4
+  if (value != 1)
4910d4
+    *errmsg = _("invalid operand constant");
4910d4
+  return insn | (0x1 << 21);
4910d4
+}
4910d4
+
4910d4
+static long
4910d4
+extract_l1 (unsigned long insn,
4910d4
+	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	    int *invalid)
4910d4
+{
4910d4
+  long value;
4910d4
+
4910d4
+  value = (insn >> 21) & 0x1;
4910d4
+  if (value != 1)
4910d4
+    *invalid = 1;
4910d4
+  return value;
4910d4
+}
4910d4
+
4910d4
 static unsigned long
4910d4
 insert_li20 (unsigned long insn,
4910d4
 	     long value,
4910d4
@@ -1398,16 +1575,16 @@ insert_ls (unsigned long insn,
4910d4
 static unsigned long
4910d4
 insert_esync (unsigned long insn,
4910d4
 	      long value,
4910d4
-	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	      ppc_cpu_t dialect,
4910d4
 	      const char **errmsg)
4910d4
 {
4910d4
-  unsigned long ls;
4910d4
+  unsigned long ls = (insn >> 21) & 0x03;
4910d4
 
4910d4
-  ls = (insn >> 21) & 0x03;
4910d4
   if (value == 0)
4910d4
     {
4910d4
-      if (ls > 1)
4910d4
-	*errmsg = _("illegal L operand value");
4910d4
+      if (((dialect & PPC_OPCODE_E6500) != 0 && ls > 1)
4910d4
+	  || ((dialect & PPC_OPCODE_POWER9) != 0 && ls > 2))
4910d4
+        *errmsg = _("illegal L operand value");
4910d4
       return insn;
4910d4
     }
4910d4
 
4910d4
@@ -1945,6 +2122,24 @@ extract_xt6 (unsigned long insn,
4910d4
   return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
4910d4
 }
4910d4
 
4910d4
+/* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
4910d4
+static unsigned long
4910d4
+insert_xtq6 (unsigned long insn,
4910d4
+	    long value,
4910d4
+	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	    const char **errmsg ATTRIBUTE_UNUSED)
4910d4
+{
4910d4
+  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
4910d4
+}
4910d4
+
4910d4
+static long
4910d4
+extract_xtq6 (unsigned long insn,
4910d4
+	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
+	     int *invalid ATTRIBUTE_UNUSED)
4910d4
+{
4910d4
+  return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
4910d4
+}
4910d4
+
4910d4
 /* The XA field in an XX3 form instruction.  This is split.  */
4910d4
 
4910d4
 static unsigned long
4910d4
@@ -2258,10 +2453,18 @@ extract_vleil (unsigned long insn,
4910d4
 /* The main opcode mask with the RA field clear.  */
4910d4
 #define DRA_MASK (OP_MASK | RA_MASK)
4910d4
 
4910d4
+/* A DQ form VSX instruction.  */
4910d4
+#define DQX(op, xop) (OP (op) | ((xop) & 0x7))
4910d4
+#define DQX_MASK DQX (0x3f, 7)
4910d4
+
4910d4
 /* A DS form instruction.  */
4910d4
 #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
4910d4
 #define DS_MASK DSO (0x3f, 3)
4910d4
 
4910d4
+/* An DX form instruction.  */
4910d4
+#define DX(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
4910d4
+#define DX_MASK DX (0x3f, 0x1f)
4910d4
+
4910d4
 /* An EVSEL form instruction.  */
4910d4
 #define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
4910d4
 #define EVSEL_MASK EVSEL(0x3f, 0xff)
4910d4
@@ -2374,6 +2577,9 @@ extract_vleil (unsigned long insn,
4910d4
 /* A VX_MASK with a PS field.  */
4910d4
 #define VXPS_MASK (VX_MASK & ~(0x1 << 9))
4910d4
 
4910d4
+/* A VX_MASK with the VA field fixed with a PS field.  */
4910d4
+#define VXVAPS_MASK ((VX_MASK | (0x1f << 16)) & ~(0x1 << 9))
4910d4
+
4910d4
 /* A VA form instruction.  */
4910d4
 #define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
4910d4
 
4910d4
@@ -2389,9 +2595,15 @@ extract_vleil (unsigned long insn,
4910d4
 /* The mask for a VXR form instruction.  */
4910d4
 #define VXR_MASK VXR(0x3f, 0x3ff, 1)
4910d4
 
4910d4
+/* A VX form instruction with a VA tertiary opcode.  */
4910d4
+#define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
4910d4
+
4910d4
 /* An X form instruction.  */
4910d4
 #define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
4910d4
 
4910d4
+/* A X form instruction for Quad-Precision FP Instructions.  */
4910d4
+#define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
4910d4
+
4910d4
 /* An EX form instruction.  */
4910d4
 #define EX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
4910d4
 
4910d4
@@ -2401,6 +2613,9 @@ extract_vleil (unsigned long insn,
4910d4
 /* An XX2 form instruction.  */
4910d4
 #define XX2(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2))
4910d4
 
4910d4
+/* A XX2 form instruction with the VA bits specified.  */
4910d4
+#define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
4910d4
+
4910d4
 /* An XX3 form instruction.  */
4910d4
 #define XX3(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0xff) << 3))
4910d4
 
4910d4
@@ -2416,12 +2631,18 @@ extract_vleil (unsigned long insn,
4910d4
 /* An X form instruction with the RC bit specified.  */
4910d4
 #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
4910d4
 
4910d4
+/* A X form instruction for Quad-Precision FP Instructions with RC bit.  */
4910d4
+#define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
4910d4
+
4910d4
 /* A Z form instruction with the RC bit specified.  */
4910d4
 #define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
4910d4
 
4910d4
 /* The mask for an X form instruction.  */
4910d4
 #define X_MASK XRC (0x3f, 0x3ff, 1)
4910d4
 
4910d4
+/* The mask for an X form instruction with the BF bits specified.  */
4910d4
+#define XBF_MASK (X_MASK | (3 << 21))
4910d4
+
4910d4
 /* An X form wait instruction with everything filled in except the WC field.  */
4910d4
 #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4910d4
 
4910d4
@@ -2437,9 +2658,18 @@ extract_vleil (unsigned long insn,
4910d4
 /* The mask for an XX2 form instruction with the UIM bits specified.  */
4910d4
 #define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
4910d4
 
4910d4
+/* The mask for an XX2 form instruction with the 4 UIM bits specified.  */
4910d4
+#define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
4910d4
+
4910d4
 /* The mask for an XX2 form instruction with the BF bits specified.  */
4910d4
 #define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
4910d4
 
4910d4
+/* The mask for an XX2 form instruction with the BF and DCMX bits specified.  */
4910d4
+#define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
4910d4
+
4910d4
+/* The mask for an XX2 form instruction with a split DCMX bits specified.  */
4910d4
+#define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
4910d4
+
4910d4
 /* The mask for an XX3 form instruction.  */
4910d4
 #define XX3_MASK XX3 (0x3f, 0xff)
4910d4
 
4910d4
@@ -2460,11 +2690,13 @@ extract_vleil (unsigned long insn,
4910d4
 #define Z_MASK ZRC (0x3f, 0x1ff, 1)
4910d4
 #define Z2_MASK ZRC (0x3f, 0xff, 1)
4910d4
 
4910d4
-/* An X_MASK with the RA field fixed.  */
4910d4
+/* An X_MASK with the RA/VA field fixed.  */
4910d4
 #define XRA_MASK (X_MASK | RA_MASK)
4910d4
+#define XVA_MASK XRA_MASK
4910d4
 
4910d4
-/* An XRA_MASK with the W field clear.  */
4910d4
+/* An XRA_MASK with the A_L/W field clear.  */
4910d4
 #define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16))
4910d4
+#define XRLA_MASK XWRA_MASK
4910d4
 
4910d4
 /* An X_MASK with the RB field fixed.  */
4910d4
 #define XRB_MASK (X_MASK | RB_MASK)
4910d4
@@ -2478,9 +2710,15 @@ extract_vleil (unsigned long insn,
4910d4
 /* An X_MASK with the RA and RB fields fixed.  */
4910d4
 #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
4910d4
 
4910d4
+/* An XBF_MASK with the RA and RB fields fixed.  */
4910d4
+#define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
4910d4
+
4910d4
 /* An XRARB_MASK, but with the L bit clear.  */
4910d4
 #define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
4910d4
 
4910d4
+/* An XRARB_MASK, but with the L bits in a darn instruction clear.  */
4910d4
+#define XLRAND_MASK (XRARB_MASK & ~((unsigned long) 3 << 16))
4910d4
+
4910d4
 /* An X_MASK with the RT and RA fields fixed.  */
4910d4
 #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
4910d4
 
4910d4
@@ -2738,6 +2976,7 @@ extract_vleil (unsigned long insn,
4910d4
 #define POWER6	PPC_OPCODE_POWER6
4910d4
 #define POWER7	PPC_OPCODE_POWER7
4910d4
 #define POWER8	PPC_OPCODE_POWER8
4910d4
+#define POWER9	PPC_OPCODE_POWER9
4910d4
 #define CELL	PPC_OPCODE_CELL
4910d4
 #define PPC64	PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
4910d4
 #define NON32	(PPC_OPCODE_64 | PPC_OPCODE_POWER4	\
4910d4
@@ -2753,8 +2992,10 @@ extract_vleil (unsigned long insn,
4910d4
 #define PPCPS	PPC_OPCODE_PPCPS
4910d4
 #define PPCVEC	PPC_OPCODE_ALTIVEC
4910d4
 #define PPCVEC2	PPC_OPCODE_ALTIVEC2
4910d4
+#define PPCVEC3	PPC_OPCODE_ALTIVEC2
4910d4
 #define PPCVSX	PPC_OPCODE_VSX
4910d4
 #define PPCVSX2	PPC_OPCODE_VSX
4910d4
+#define PPCVSX3	PPC_OPCODE_VSX3
4910d4
 #define POWER	PPC_OPCODE_POWER
4910d4
 #define POWER2	PPC_OPCODE_POWER | PPC_OPCODE_POWER2
4910d4
 #define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
4910d4
@@ -2864,11 +3105,13 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"twi",		OP(3),		OP_MASK,     PPCCOM,	PPCNONE,	{TO, RA, SI}},
4910d4
 {"ti",		OP(3),		OP_MASK,     PWRCOM,	PPCNONE,	{TO, RA, SI}},
4910d4
 
4910d4
-{"ps_cmpu0",	X  (4,	 0), X_MASK|(3<<21), PPCPS,	PPCNONE,	{BF, FRA, FRB}},
4910d4
+{"ps_cmpu0",	X  (4,	 0),    XBF_MASK,    PPCPS,	PPCNONE,	{BF, FRA, FRB}},
4910d4
 {"vaddubm",	VX (4,	 0),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vmul10cuq",	VX (4,   1),	VXVB_MASK,   PPCVEC3,	    PPCNONE,	{VD, VA}},
4910d4
 {"vmaxub",	VX (4,	 2),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vrlb",	VX (4,	 4),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpequb",	VXR(4,	 6,0),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vcmpneb",	VXR(4,	 7,0),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmuloub",	VX (4,	 8),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vaddfp",	VX (4,	10),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"psq_lx",	XW (4,	 6,0),	XW_MASK,     PPCPS,	PPCNONE,	{FRT,RA,RB,PSWM,PSQM}},
4910d4
@@ -2914,6 +3157,9 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vmaddfp",	VXA(4,	46),	VXA_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VC, VB}},
4910d4
 {"ps_sel.",	A  (4,	23,1),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 {"vnmsubfp",	VXA(4,	47),	VXA_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VC, VB}},
4910d4
+{"maddhd",	VXA(4,	48),	VXA_MASK,    POWER9,	PPCNONE,	{RT, RA, RB, RC}},
4910d4
+{"maddhdu",	VXA(4,	49),	VXA_MASK,    POWER9,	PPCNONE,	{RT, RA, RB, RC}},
4910d4
+{"maddld",	VXA(4,	51),	VXA_MASK,    POWER9,	PPCNONE,	{RT, RA, RB, RC}},
4910d4
 {"ps_res",	A  (4,	24,0), AFRAFRC_MASK, PPCPS,	PPCNONE,	{FRT, FRB}},
4910d4
 {"ps_res.",	A  (4,	24,1), AFRAFRC_MASK, PPCPS,	PPCNONE,	{FRT, FRB}},
4910d4
 {"ps_mul",	A  (4,	25,0), AFRB_MASK,    PPCPS,	PPCNONE,	{FRT, FRA, FRC}},
4910d4
@@ -2928,15 +3174,18 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"ps_nmsub.",	A  (4,	30,1),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 {"ps_nmadd",	A  (4,	31,0),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 {"ps_nmadd.",	A  (4,	31,1),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
-{"ps_cmpo0",	X  (4,	32), X_MASK|(3<<21), PPCPS,	PPCNONE,	{BF, FRA, FRB}},
4910d4
+{"ps_cmpo0",	X  (4,	32),    XBF_MASK,    PPCPS,	PPCNONE,	{BF, FRA, FRB}},
4910d4
+{"vpermr",	VXA(4,	59),	VXA_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB, VC}},
4910d4
 {"vaddeuqm",	VXA(4,	60),	VXA_MASK,    PPCVEC2,	PPCNONE,	{VD, VA, VB, VC}},
4910d4
 {"vaddecuq",	VXA(4,	61),	VXA_MASK,    PPCVEC2,	PPCNONE,	{VD, VA, VB, VC}},
4910d4
 {"vsubeuqm",	VXA(4,	62),	VXA_MASK,    PPCVEC2,	PPCNONE,	{VD, VA, VB, VC}},
4910d4
 {"vsubecuq",	VXA(4,	63),	VXA_MASK,    PPCVEC2,	PPCNONE,	{VD, VA, VB, VC}},
4910d4
 {"vadduhm",	VX (4,	64),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vmul10ecuq",	VX (4,  65),	VX_MASK,     PPCVEC3,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmaxuh",	VX (4,	66),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vrlh",	VX (4,	68),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpequh",	VXR(4,	70,0),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vcmpneh",	VXR(4,  71,0),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmulouh",	VX (4,	72),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vsubfp",	VX (4,	74),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"psq_lux",	XW (4,	38,0),	XW_MASK,     PPCPS,	PPCNONE,	{FRT,RA,RB,PSWM,PSQM}},
4910d4
@@ -2951,11 +3200,13 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"machhw.",	XO (4,	44,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"nmachhw",	XO (4,	46,0,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"nmachhw.",	XO (4,	46,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
-{"ps_cmpu1",	X  (4,	64), X_MASK|(3<<21), PPCPS,	PPCNONE,	{BF, FRA, FRB}},
4910d4
+{"ps_cmpu1",	X  (4,	64),    XBF_MASK,    PPCPS,	PPCNONE,	{BF, FRA, FRB}},
4910d4
 {"vadduwm",	VX (4,	128),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmaxuw",	VX (4,	130),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vrlw",	VX (4,	132),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vrlwmi",	VX (4,  133),	VX_MASK,     PPCVEC3,       PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpequw",	VXR(4,	134,0), VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vcmpnew",	VXR(4,  135,0),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmulouw",	VX (4,  136),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmuluwm",	VX (4,  137),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmrghw",	VX (4,	140),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
@@ -2964,10 +3215,11 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"ps_mr.",	XRC(4,	72,1),	XRA_MASK,    PPCPS,	PPCNONE,	{FRT, FRB}},
4910d4
 {"machhwsu",	XO (4,	76,0,0),XO_MASK,     MULHW|PPCVLE,  PPCNONE,	{RT, RA, RB}},
4910d4
 {"machhwsu.",	XO (4,	76,0,1),XO_MASK,     MULHW|PPCVLE,  PPCNONE,	{RT, RA, RB}},
4910d4
-{"ps_cmpo1",	X  (4,	96), X_MASK|(3<<21), PPCPS,	PPCNONE,	{BF, FRA, FRB}},
4910d4
+{"ps_cmpo1",	X  (4,	96),    XBF_MASK,    PPCPS,	PPCNONE,	{BF, FRA, FRB}},
4910d4
 {"vaddudm",	VX (4, 192),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmaxud",	VX (4, 194),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vrld",	VX (4, 196),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"vrldmi",	VX (4, 197),	VX_MASK,     PPCVEC3,   PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpeqfp",	VXR(4, 198,0),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpequd",	VXR(4, 199,0),	VXR_MASK,    PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vpkuwus",	VX (4, 206),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
@@ -2977,6 +3229,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"nmachhws.",	XO (4, 110,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"vadduqm",	VX (4, 256),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmaxsb",	VX (4, 258),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vcmpnezb",	VXR(4, 263,0),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vslb",	VX (4, 260),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmulosb",	VX (4, 264),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vrefp",	VX (4, 266),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
@@ -2991,6 +3244,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vaddcuq",	VX (4, 320),	VX_MASK,     PPCVEC2,      PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmaxsh",	VX (4, 322),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vslh",	VX (4, 324),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vcmpnezh",	VXR(4, 327,0),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmulosh",	VX (4, 328),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vrsqrtefp",	VX (4, 330),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
 {"vmrglh",	VX (4, 332),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3004,6 +3258,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vaddcuw",	VX (4, 384),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmaxsw",	VX (4, 386),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vslw",	VX (4, 388),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vrlwnm",	VX (4, 389),	VX_MASK,     PPCVEC3,       PPCNONE,	{VD, VA, VB}},
4910d4
+{"vcmpnezw",	VXR(4, 391,0),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmulosw",	VX (4, 392),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vexptefp",	VX (4, 394),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
 {"vmrglw",	VX (4, 396),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3012,6 +3268,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"macchwsu.",	XO (4, 204,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"vmaxsd",	VX (4, 450),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vsl",		VX (4, 452),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vrldnm",	VX (4, 453),	VX_MASK,     PPCVEC3,       PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpgefp",	VXR(4, 454,0),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vlogefp",	VX (4, 458),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
 {"vpkswss",	VX (4, 462),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3021,6 +3278,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"nmacchws.",	XO (4, 238,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"evaddw",	VX (4, 512),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vaddubs",	VX (4, 512),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vmul10uq",	VX (4, 513),	VXVB_MASK,   PPCVEC3,	    PPCNONE,	{VD, VA}},
4910d4
 {"evaddiw",	VX (4, 514),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RB, UIMM}},
4910d4
 {"vminub",	VX (4, 514),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"evsubfw",	VX (4, 516),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
@@ -3037,6 +3295,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evextsh",	VX (4, 523),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA}},
4910d4
 {"evrndw",	VX (4, 524),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA}},
4910d4
 {"vspltb",	VX (4, 524),	VXUIMM4_MASK,PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM4}},
4910d4
+{"vextractub",	VX (4, 525),	VXUIMM4_MASK,PPCVEC3,	    PPCNONE,	{VD, VB, UIMM4}},
4910d4
 {"evcntlzw",	VX (4, 525),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA}},
4910d4
 {"evcntlsw",	VX (4, 526),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA}},
4910d4
 {"vupkhsb",	VX (4, 526),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
@@ -3075,12 +3334,14 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evcmpeq",	VX (4, 564),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{CRFD, RA, RB}},
4910d4
 {"cget",	APU(4, 284,0),	APU_RA_MASK, PPC405,	PPCNONE,	{RT, FSL}},
4910d4
 {"vadduhs",	VX (4, 576),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vmul10euq",	VX (4, 577),	VX_MASK,     PPCVEC3,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vminuh",	VX (4, 578),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vsrh",	VX (4, 580),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpgtuh",	VXR(4, 582,0),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmuleuh",	VX (4, 584),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vrfiz",	VX (4, 586),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
 {"vsplth",	VX (4, 588),	VXUIMM3_MASK,PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM3}},
4910d4
+{"vextractuh",	VX (4, 589),	VXUIMM4_MASK,PPCVEC3,	    PPCNONE,	{VD, VB, UIMM4}},
4910d4
 {"vupkhsh",	VX (4, 590),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
 {"nget",	APU(4, 300,0),	APU_RA_MASK, PPC405,	PPCNONE,	{RT, FSL}},
4910d4
 {"evsel",	EVSEL(4,79),	EVSEL_MASK,  PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB, CRFS}},
4910d4
@@ -3100,6 +3361,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vrfip",	VX (4, 650),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
 {"evfscmpgt",	VX (4, 652),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{CRFD, RA, RB}},
4910d4
 {"vspltw",	VX (4, 652),	VXUIMM2_MASK,PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM2}},
4910d4
+{"vextractuw",	VX (4, 653),	VXUIMM4_MASK,PPCVEC3,	    PPCNONE,	{VD, VB, UIMM4}},
4910d4
 {"evfscmplt",	VX (4, 653),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{CRFD, RA, RB}},
4910d4
 {"evfscmpeq",	VX (4, 654),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{CRFD, RA, RB}},
4910d4
 {"vupklsb",	VX (4, 654),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
@@ -3131,6 +3393,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"efsdiv",	VX (4, 713),	VX_MASK,     PPCEFS|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vrfim",	VX (4, 714),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
 {"efscmpgt",	VX (4, 716),	VX_MASK,     PPCEFS|PPCVLE, PPCNONE,	{CRFD, RA, RB}},
4910d4
+{"vextractd",	VX (4, 717),	VXUIMM4_MASK,PPCVEC3,	    PPCNONE,	{VD, VB, UIMM4}},
4910d4
 {"efscmplt",	VX (4, 717),	VX_MASK,     PPCEFS|PPCVLE, PPCNONE,	{CRFD, RA, RB}},
4910d4
 {"efscmpeq",	VX (4, 718),	VX_MASK,     PPCEFS|PPCVLE, PPCNONE,	{CRFD, RA, RB}},
4910d4
 {"vupklsh",	VX (4, 718),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
@@ -3195,6 +3458,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vcuxwfp",	VX (4, 778),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM}},
4910d4
 {"evlhhousplatx",VX(4, 780),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vspltisb",	VX (4, 780),	VXVB_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, SIMM}},
4910d4
+{"vinsertb",	VX (4, 781),	VXUIMM4_MASK,PPCVEC3,	    PPCNONE,	{VD, VB, UIMM4}},
4910d4
 {"evlhhousplat",VX (4, 781),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, EVUIMM_2, RA}},
4910d4
 {"evlhhossplatx",VX(4, 782),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vpkpx",	VX (4, 782),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3228,6 +3492,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evstwwox",	VX (4, 828),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"evstwwo",	VX (4, 829),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, EVUIMM_4, RA}},
4910d4
 {"vaddshs",	VX (4, 832),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"bcdcpsgn.",	VX (4, 833),	VX_MASK,     PPCVEC3,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vminsh",	VX (4, 834),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vsrah",	VX (4, 836),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpgtsh",	VXR(4, 838,0),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3235,6 +3500,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vcfsx",	VX (4, 842),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM}},
4910d4
 {"vcsxwfp",	VX (4, 842),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM}},
4910d4
 {"vspltish",	VX (4, 844),	VXVB_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, SIMM}},
4910d4
+{"vinserth",	VX (4, 845),	VXUIMM4_MASK,PPCVEC3,	    PPCNONE,	{VD, VB, UIMM4}},
4910d4
 {"vupkhpx",	VX (4, 846),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
 {"mullhw",	XRC(4, 424,0),	X_MASK,      MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"mullhw.",	XRC(4, 424,1),	X_MASK,      MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
@@ -3250,6 +3516,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vctuxs",	VX (4, 906),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM}},
4910d4
 {"vcfpuxws",	VX (4, 906),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM}},
4910d4
 {"vspltisw",	VX (4, 908),	VXVB_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, SIMM}},
4910d4
+{"vinsertw",	VX (4, 909),	VXUIMM4_MASK,PPCVEC3,	    PPCNONE,	{VD, VB, UIMM4}},
4910d4
 {"maclhwsu",	XO (4, 460,0,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"maclhwsu.",	XO (4, 460,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"vminsd",	VX (4, 962),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3258,6 +3525,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vcmpgtsd",	VXR(4, 967,0),	VXR_MASK,    PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vctsxs",	VX (4, 970),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM}},
4910d4
 {"vcfpsxws",	VX (4, 970),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VB, UIMM}},
4910d4
+{"vinsertd",	VX (4, 973),	VXUIMM4_MASK,PPCVEC3,	    PPCNONE,	{VD, VB, UIMM4}},
4910d4
 {"vupklpx",	VX (4, 974),	VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,	{VD, VB}},
4910d4
 {"maclhws",	XO (4, 492,0,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"maclhws.",	XO (4, 492,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
@@ -3270,6 +3538,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evmhessf",	VX (4,1027),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vand",	VX (4,1028),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpequb.",	VXR(4,	 6,1),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vcmpneb.",	VXR(4,	 7,1),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"udi0fcm.",	APU(4, 515,0), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
 {"udi0fcm",	APU(4, 515,1), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
 {"evmhossf",	VX (4,1031),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
@@ -3302,6 +3571,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vcmpequh.",	VXR(4,	70,1),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"udi1fcm.",	APU(4, 547,0), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
 {"udi1fcm",	APU(4, 547,1), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},   
4910d4
+{"vcmpneh.",	VXR(4,  71,1),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmwhssf",	VX (4,1095),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vpmsumh",	VX (4,1096),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmwlumi",	VX (4,1096),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
@@ -3331,10 +3601,12 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evmwsmia",	VX (4,1145),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"evmwsmfa",	VX (4,1147),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vsubuwm",	VX (4,1152),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"bcdus.",	VX (4,1153),	VX_MASK,     PPCVEC3,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vavguw",	VX (4,1154),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vabsduw",	VX (4,1155),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmr",		VX (4,1156),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VBA}},
4910d4
 {"vor",		VX (4,1156),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vcmpnew.",	VXR(4, 135,1),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vpmsumw",	VX (4,1160),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpequw.",	VXR(4, 134,1),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"udi2fcm.",	APU(4, 579,0), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
@@ -3345,6 +3617,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"ps_merge10.",	XOPS(4,592,1),	XOPS_MASK,   PPCPS,	PPCNONE,	{FRT, FRA, FRB}},
4910d4
 {"vsubudm",	VX (4,1216),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"evaddusiaaw",	VX (4,1216),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA}},
4910d4
+{"bcds.",	VX (4,1217),	VXPS_MASK,   PPCVEC3,	    PPCNONE,	{VD, VA, VB, PS}},
4910d4
 {"evaddssiaaw",	VX (4,1217),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA}},
4910d4
 {"evsubfusiaaw",VX (4,1218),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA}},
4910d4
 {"evsubfssiaaw",VX (4,1219),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA}},
4910d4
@@ -3370,6 +3643,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"ps_merge11.",	XOPS(4,624,1),	XOPS_MASK,   PPCPS,	PPCNONE,	{FRT, FRA, FRB}},
4910d4
 {"vsubuqm",	VX (4,1280),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmheusiaaw",	VX (4,1280),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
+{"bcdtrunc.",	VX (4,1281),	VXPS_MASK,   PPCVEC3,	    PPCNONE,	{VD, VA, VB, PS}},
4910d4
 {"evmhessiaaw",	VX (4,1281),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vavgsb",	VX (4,1282),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmhessfaaw",	VX (4,1283),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
@@ -3379,6 +3653,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evmhossiaaw",	VX (4,1285),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"udi4fcm.",	APU(4, 643,0), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
 {"udi4fcm",	APU(4, 643,1), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
+{"vcmpnezb.",	VXR(4, 263,1),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmhossfaaw",	VX (4,1287),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"evmheumiaaw",	VX (4,1288),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vcipher",	VX (4,1288),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3399,11 +3674,13 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evmhogsmfaa",	VX (4,1327),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vsubcuq",	VX (4,1344),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmwlusiaaw",	VX (4,1344),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
+{"bcdutrunc.",	VX (4,1345),	VX_MASK,     PPCVEC3,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmwlssiaaw",	VX (4,1345),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vavgsh",	VX (4,1346),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vorc",	VX (4,1348),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"udi5fcm.",	APU(4, 675,0), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
 {"udi5fcm",	APU(4, 675,1), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
+{"vcmpnezh.",	VXR(4, 327,1),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vncipher",	VX (4,1352),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmwlumiaaw",	VX (4,1352),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vncipherlast",VX (4,1353),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3421,6 +3698,13 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evmheusianw",	VX (4,1408),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vsubcuw",	VX (4,1408),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmhessianw",	VX (4,1409),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
+{"bcdctsq.",	VXVA(4,1409,0),	VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"bcdcfsq.",	VXVA(4,1409,2),	VXVAPS_MASK, PPCVEC3,	    PPCNONE,	{VD, VB, PS}},
4910d4
+{"bcdctz.",	VXVA(4,1409,4),	VXVAPS_MASK, PPCVEC3,	    PPCNONE,	{VD, VB, PS}},
4910d4
+{"bcdctn.",	VXVA(4,1409,5),	VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"bcdcfz.",	VXVA(4,1409,6),	VXVAPS_MASK, PPCVEC3,	    PPCNONE,	{VD, VB, PS}},
4910d4
+{"bcdcfn.",	VXVA(4,1409,7),	VXVAPS_MASK, PPCVEC3,	    PPCNONE,	{VD, VB, PS}},
4910d4
+{"bcdsetsgn.",	VXVA(4,1409,31),VXVAPS_MASK, PPCVEC3,	    PPCNONE,	{VD, VB, PS}},
4910d4
 {"vavgsw",	VX (4,1410),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmhessfanw",	VX (4,1411),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vnand",	VX (4,1412),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3428,6 +3712,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evmhossianw",	VX (4,1413),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"udi6fcm.",	APU(4, 707,0), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
 {"udi6fcm",	APU(4, 707,1), APU_MASK, PPC405|PPC440, PPC476,		{URT, URA, URB}},
4910d4
+{"vcmpnezw.",	VXR(4, 391,1),	VXR_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmhossfanw",	VX (4,1415),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"evmheumianw",	VX (4,1416),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"evmhesmianw",	VX (4,1417),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
@@ -3444,6 +3729,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"evmhogsmian",	VX (4,1453),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"evmhogsmfan",	VX (4,1455),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"evmwlusianw",	VX (4,1472),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
+{"bcdsr.",	VX (4,1473),	VXPS_MASK,   PPCVEC3,	    PPCNONE,	{VD, VA, VB, PS}},
4910d4
 {"evmwlssianw",	VX (4,1473),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"vsld",	VX (4,1476),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpgefp.",	VXR(4, 454,1),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3452,6 +3738,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vsbox",	VX (4,1480),	VXVB_MASK,   PPCVEC2,	    PPCNONE,	{VD, VA}},
4910d4
 {"evmwlumianw",	VX (4,1480),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"evmwlsmianw",	VX (4,1481),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
+{"vbpermd",	VX (4,1484),	VX_MASK,     PPCVEC3,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"vpksdss",	VX (4,1486),	VX_MASK,     PPCVEC2,	    PPCNONE,	{VD, VA, VB}},
4910d4
 {"evmwssfan",	VX (4,1491),	VX_MASK,     PPCSPE|PPCVLE, PPCNONE,	{RS, RA, RB}},
4910d4
 {"macchwso",	XO (4, 236,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
@@ -3462,17 +3749,35 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"nmacchwso",	XO (4, 238,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"nmacchwso.",	XO (4, 238,1,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"vsububs",	VX (4,1536),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vclzlsbb",	VXVA(4,1538,0), VXVA_MASK,   PPCVEC3,	    PPCNONE,	{RT, VB}},
4910d4
+{"vctzlsbb",	VXVA(4,1538,1), VXVA_MASK,   PPCVEC3,	    PPCNONE,	{RT, VB}},
4910d4
+{"vnegw",	VXVA(4,1538,6), VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vnegd",	VXVA(4,1538,7), VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vprtybw",	VXVA(4,1538,8), VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vprtybd",	VXVA(4,1538,9), VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vprtybq",	VXVA(4,1538,10),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vextsb2w",	VXVA(4,1538,16),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vextsh2w",	VXVA(4,1538,17),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vextsb2d",	VXVA(4,1538,24),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vextsh2d",	VXVA(4,1538,25),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vextsw2d",	VXVA(4,1538,26),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vctzb",	VXVA(4,1538,28),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vctzh",	VXVA(4,1538,29),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vctzw",	VXVA(4,1538,30),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
+{"vctzd",	VXVA(4,1538,31),VXVA_MASK,   PPCVEC3,	    PPCNONE,	{VD, VB}},
4910d4
 {"mfvscr",	VX (4,1540),	VXVAVB_MASK, PPCVEC|PPCVLE, PPCNONE,	{VD}},
4910d4
 {"vcmpgtub.",	VXR(4, 518,1),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"udi8fcm.",	APU(4, 771,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
 {"udi8fcm",	APU(4, 771,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
 {"vsum4ubs",	VX (4,1544),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vextublx",	VX (4,1549),	VX_MASK,     PPCVEC3,	    PPCNONE,	{RT, RA, VB}},
4910d4
 {"vsubuhs",	VX (4,1600),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"mtvscr",	VX (4,1604),	VXVDVA_MASK, PPCVEC|PPCVLE, PPCNONE,	{VB}},
4910d4
 {"vcmpgtuh.",	VXR(4, 582,1),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vsum4shs",	VX (4,1608),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"udi9fcm.",	APU(4, 804,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
 {"udi9fcm",	APU(4, 804,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
+{"vextuhlx",	VX (4,1613),	VX_MASK,     PPCVEC3,	PPCNONE,	{RT, RA, VB}},
4910d4
 {"vupkhsw",	VX (4,1614),	VXVA_MASK,   PPCVEC2,	    PPCNONE,	{VD, VB}},
4910d4
 {"vsubuws",	VX (4,1664),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vshasigmaw",	VX (4,1666),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, ST, SIX}},
4910d4
@@ -3482,6 +3787,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"udi10fcm",	APU(4, 835,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
 {"vsum2sws",	VX (4,1672),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmrgow",	VX (4,1676),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"vextuwlx",	VX (4,1677),	VX_MASK,     PPCVEC3,	PPCNONE,	{RT, RA, VB}},
4910d4
 {"vshasigmad",	VX (4,1730),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, ST, SIX}},
4910d4
 {"vsrd",	VX (4,1732),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpgtfp.",	VXR(4, 710,1),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
@@ -3492,16 +3798,20 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vsubsbs",	VX (4,1792),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vclzb",	VX (4,1794),	VXVA_MASK,   PPCVEC2,	PPCNONE,	{VD, VB}},
4910d4
 {"vpopcntb",	VX (4,1795),	VXVA_MASK,   PPCVEC2,	PPCNONE,	{VD, VB}},
4910d4
+{"vsrv",	VX (4,1796),	VX_MASK,     PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpgtsb.",	VXR(4, 774,1),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"udi12fcm.",	APU(4, 899,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
 {"udi12fcm",	APU(4, 899,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
 {"vsum4sbs",	VX (4,1800),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vextubrx",	VX (4,1805),	VX_MASK,     PPCVEC3,	PPCNONE,	{RT, RA, VB}},
4910d4
 {"maclhwuo",	XO (4, 396,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"maclhwuo.",	XO (4, 396,1,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"vsubshs",	VX (4,1856),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vclzh",	VX (4,1858),	VXVA_MASK,   PPCVEC2,	PPCNONE,	{VD, VB}},
4910d4
 {"vpopcnth",	VX (4,1859),	VXVA_MASK,   PPCVEC2,	PPCNONE,	{VD, VB}},
4910d4
+{"vslv",	VX (4,1860),	VX_MASK,     PPCVEC3,	PPCNONE,	{VD, VA, VB}},
4910d4
 {"vcmpgtsh.",	VXR(4, 838,1),	VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
+{"vextuhrx",	VX (4,1869),	VX_MASK,     PPCVEC3,	PPCNONE,	{RT, RA, VB}},
4910d4
 {"udi13fcm.",	APU(4, 931,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
 {"udi13fcm",	APU(4, 931,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
 {"maclhwo",	XO (4, 428,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
@@ -3516,6 +3826,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"udi14fcm",	APU(4, 963,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
4910d4
 {"vsumsws",	VX (4,1928),	VX_MASK,     PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB}},
4910d4
 {"vmrgew",	VX (4,1932),	VX_MASK,     PPCVEC2,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"vextuwrx",	VX (4,1933),	VX_MASK,     PPCVEC3,	PPCNONE,	{RT, RA, VB}},
4910d4
 {"maclhwsuo",	XO (4, 460,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"maclhwsuo.",	XO (4, 460,1,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"vclzd",	VX (4,1986),	VXVA_MASK,   PPCVEC2,	PPCNONE,	{VD, VB}},
4910d4
@@ -3854,6 +4165,9 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"mcrf",      XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM,	PPCNONE,	{BF, BFA}},
4910d4
 
4910d4
+{"addpcis",   DX(19,2),		DX_MASK,     POWER9,	PPCNONE,	{RT, DXD}},
4910d4
+{"subpcis",   DX(19,2),		DX_MASK,     POWER9,	PPCNONE,	{RT, NDXD}},
4910d4
+
4910d4
 {"bdnzlr",   XLO(19,BODNZ,16,0),	XLBOBIBB_MASK, PPCCOM,	 PPCNONE,	{0}},
4910d4
 {"bdnzlr-",  XLO(19,BODNZ,16,0),	XLBOBIBB_MASK, PPCCOM,   ISA_V2,	{0}},
4910d4
 {"bdnzlrl",  XLO(19,BODNZ,16,1),	XLBOBIBB_MASK, PPCCOM,	 PPCNONE,	{0}},
4910d4
@@ -4113,17 +4427,20 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"crset",	XL(19,289),	XL_MASK,     PPCCOM,	PPCNONE,	{BT, BAT, BBA}},
4910d4
 {"creqv",	XL(19,289),	XL_MASK,     COM,	PPCNONE,	{BT, BA, BB}},
4910d4
 
4910d4
-{"doze",	XL(19,402),	0xffffffff,  POWER6,	PPCNONE,	{0}},
4910d4
+{"urfid",	XL(19,306),	0xffffffff,  POWER9,	PPCNONE,	{0}},
4910d4
+{"stop",	XL(19,370),	0xffffffff,  POWER9,	PPCNONE,	{0}},
4910d4
+
4910d4
+{"doze",	XL(19,402),	0xffffffff,  POWER6,	POWER9,		{0}},
4910d4
 
4910d4
 {"crorc",	XL(19,417),	XL_MASK,     COM,	PPCNONE,	{BT, BA, BB}},
4910d4
 
4910d4
-{"nap",		XL(19,434),	0xffffffff,  POWER6,	PPCNONE,	{0}},
4910d4
+{"nap",		XL(19,434),	0xffffffff,  POWER6,	POWER9,		{0}},
4910d4
 
4910d4
 {"crmove",	XL(19,449),	XL_MASK,     PPCCOM,	PPCNONE,	{BT, BA, BBA}},
4910d4
 {"cror",	XL(19,449),	XL_MASK,     COM,	PPCNONE,	{BT, BA, BB}},
4910d4
 
4910d4
-{"sleep",	XL(19,466),	0xffffffff,  POWER6,	PPCNONE,	{0}},
4910d4
-{"rvwinkle",	XL(19,498),	0xffffffff,  POWER6,	PPCNONE,	{0}},
4910d4
+{"sleep",	XL(19,466),	0xffffffff,  POWER6,	POWER9,		{0}},
4910d4
+{"rvwinkle",	XL(19,498),	0xffffffff,  POWER6,	POWER9,		{0}},
4910d4
 
4910d4
 {"bctr",    XLO(19,BOU,528,0),		XLBOBIBB_MASK, COM,	 PPCNONE,	{0}},
4910d4
 {"bctrl",   XLO(19,BOU,528,1),		XLBOBIBB_MASK, COM,	 PPCNONE,	{0}},
4910d4
@@ -4459,7 +4776,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"ldepx",	X(31,29),	X_MASK,      E500MC|PPCA2|PPCVLE, PPCNONE, {RT, RA0, RB}},
4910d4
 
4910d4
-{"waitasec",	X(31,30),	XRTRARB_MASK,POWER8,	PPCNONE,	{0}},
4910d4
+{"waitasec",	X(31,30),	XRTRARB_MASK,POWER8,	POWER9,		{0}},
4910d4
+{"wait",	X(31,30),	XWC_MASK,    POWER9,	PPCNONE,	{WC}},
4910d4
 
4910d4
 {"lwepx",	X(31,31),	X_MASK,	     E500MC|PPCA2|PPCVLE, PPCNONE, {RT, RA0, RB}},
4910d4
 
4910d4
@@ -4591,6 +4909,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"dcbfep",	XRT(31,127,0),	XRT_MASK,    E500MC|PPCA2|PPCVLE, PPCNONE, {RA0, RB}},
4910d4
  
4910d4
+{"setb",	X(31,128),	XRB_MASK|(3<<16), POWER9, PPCNONE,	{RT, BFA}},
4910d4
+
4910d4
 {"wrtee",	X(31,131),	XRARB_MASK,  PPC403|BOOKE|PPCA2|PPC476|PPCVLE, PPCNONE, {RS}},
4910d4
  
4910d4
 {"dcbtstls",	X(31,134),	X_MASK,	     PPCCHLK|PPC476|TITAN|PPCVLE, PPCNONE, {CT, RA0, RB}},
4910d4
@@ -4673,6 +4993,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"prtyd",	X(31,186),	XRB_MASK, POWER6|PPCA2,	PPCNONE,	{RA, RS}},
4910d4
 
4910d4
+{"cmprb",	X(31,192),	XCMP_MASK,   POWER9,	PPCNONE,	{BF, L, RA, RB}},
4910d4
+
4910d4
 {"icblq.",	XRC(31,198,1),	X_MASK,      E6500,	PPCNONE,	{CT, RA0, RB}},
4910d4
 
4910d4
 {"stvewx",	X(31,199),	X_MASK,      PPCVEC,	PPCNONE,	{VS, RA0, RB}},
4910d4
@@ -4711,6 +5033,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"stbepx",	X(31,223),	X_MASK,      E500MC|PPCA2|PPCVLE, PPCNONE, {RS, RA0, RB}},
4910d4
  
4910d4
+{"cmpeqb",	X(31,224),	XCMPL_MASK,   POWER9,	PPCNONE,	{BF, RA, RB}},
4910d4
+
4910d4
 {"icblc",	X(31,230),	X_MASK,	PPCCHLK|PPC476|TITAN|PPCVLE, PPCNONE, {CT, RA0, RB}},
4910d4
 
4910d4
 {"stvx",	X(31,231),	X_MASK,      PPCVEC|PPCVLE, PPCNONE,	{VS, RA0, RB}},
4910d4
@@ -4770,14 +5094,22 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"doz",		XO(31,264,0,0),	XO_MASK,     M601,	PPCNONE,	{RT, RA, RB}},
4910d4
 {"doz.",	XO(31,264,0,1),	XO_MASK,     M601,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
+{"modud",	X(31,265),	X_MASK,      POWER9,	PPCNONE,	{RT, RA, RB}},
4910d4
+
4910d4
 {"add",		XO(31,266,0,0),	XO_MASK,     PPCCOM|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"cax",		XO(31,266,0,0),	XO_MASK,     PWRCOM,	PPCNONE,	{RT, RA, RB}},
4910d4
 {"add.",	XO(31,266,0,1),	XO_MASK,     PPCCOM|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"cax.",	XO(31,266,0,1),	XO_MASK,     PWRCOM,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
+{"moduw",	X(31,267),	X_MASK,      POWER9,	PPCNONE,	{RT, RA, RB}},
4910d4
+
4910d4
+{"lxvx",	X(31,268),	XX1_MASK|1<<6, PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+{"lxvl",	X(31,269),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+
4910d4
 {"ehpriv",	X(31,270),	0xffffffff, E500MC|PPCA2|PPCVLE, PPCNONE, {0}},
4910d4
 
4910d4
-{"tlbiel",	X(31,274),	XRTLRA_MASK, POWER4,	PPC476,		{RB, L}},
4910d4
+{"tlbiel",	X(31,274),	X_MASK|1<<20,POWER9,	PPC476,  	{RB, RSO, RIC, PRS, X_R}},
4910d4
+{"tlbiel",	X(31,274),	XRTLRA_MASK, POWER4,	POWER9|PPC476,	{RB, L}},
4910d4
 
4910d4
 {"mfapidi",	X(31,275),	X_MASK,      BOOKE,	TITAN,  	{RT, RA}},
4910d4
 
4910d4
@@ -4805,12 +5137,19 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"lvexhx",	X(31,293),	X_MASK,      PPCVEC2,	PPCNONE,	{VD, RA0, RB}},
4910d4
 {"lvepx",	X(31,295),	X_MASK,      PPCVEC2|PPCVLE, PPCNONE,	{VD, RA0, RB}},
4910d4
 
4910d4
+{"lxvll",	X(31,301),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+
4910d4
 {"mfbhrbe",	X(31,302),	X_MASK,      POWER8,	PPCNONE,	{RT, BHRBE}},
4910d4
 
4910d4
-{"tlbie",	X(31,306),	XRA_MASK,    POWER7,	TITAN,  	{RB, RS}},
4910d4
-{"tlbie",	X(31,306),	XRTLRA_MASK, PPC,	POWER7|TITAN,  	{RB, L}},
4910d4
+{"tlbie",	X(31,306),	X_MASK|1<<20,POWER9,	TITAN,  	{RB, RS, RIC, PRS, X_R}},
4910d4
+{"tlbie",	X(31,306),	XRA_MASK,    POWER7,	POWER9|TITAN,  	{RB, RS}},
4910d4
+{"tlbie",	X(31,306),	XRTLRA_MASK, PPC,	E500|POWER7|TITAN,  	{RB, L}},
4910d4
 {"tlbi",	X(31,306),	XRT_MASK,    POWER,	PPCNONE,	{RA0, RB}},
4910d4
 
4910d4
+{"mfvsrld",	X(31,307),	XX1RB_MASK,  PPCVSX3,	PPCNONE,	{RA, XS6}},
4910d4
+
4910d4
+{"ldmx",	X(31,309),	X_MASK,      POWER9,	PPCNONE,  	{RT, RA0, RB}},
4910d4
+
4910d4
 {"eciwx",	X(31,310),	X_MASK,      PPC,	TITAN,  	{RT, RA0, RB}},
4910d4
 
4910d4
 {"lhzux",	X(31,311),	X_MASK,      COM|PPCVLE, PPCNONE,	{RT, RAL, RB}},
4910d4
@@ -4871,6 +5210,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"mfpmr",	X(31,334),	X_MASK, PPCPMR|PPCE300|PPCVLE, PPCNONE,	{RT, PMR}},
4910d4
 {"mftmr",	X(31,366),	X_MASK,	PPCTMR|E6500,	PPCNONE,	{RT, TMR}},
4910d4
 
4910d4
+{"slbsync",	X(31,338),      0xffffffff,  POWER9,	PPCNONE,	{0}},
4910d4
+
4910d4
 {"mfmq",	XSPR(31,339,  0), XSPR_MASK, M601,	PPCNONE,	{RT}},
4910d4
 {"mfxer",	XSPR(31,339,  1), XSPR_MASK, COM|PPCVLE, PPCNONE,	{RT}},
4910d4
 {"mfrtcu",	XSPR(31,339,  4), XSPR_MASK, COM,	TITAN,  	{RT}},
4910d4
@@ -5085,6 +5426,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"divs",	XO(31,363,0,0),	XO_MASK,     M601,	PPCNONE,	{RT, RA, RB}},
4910d4
 {"divs.",	XO(31,363,0,1),	XO_MASK,     M601,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
+{"lxvwsx",	X(31,364),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+
4910d4
 {"tlbia",	X(31,370),	0xffffffff,  PPC,	TITAN,  	{0}},
4910d4
 
4910d4
 {"mftbu",	XSPR(31,371,269), XSPR_MASK, PPC,	NO371|POWER4,	{RT}},
4910d4
@@ -5112,10 +5455,15 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"divweu",	XO(31,395,0,0),	XO_MASK,  POWER7|PPCA2,	PPCNONE,	{RT, RA, RB}},
4910d4
 {"divweu.",	XO(31,395,0,1),	XO_MASK,  POWER7|PPCA2,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
+{"stxvx",	X(31,396),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XS6, RA0, RB}},
4910d4
+{"stxvl",	X(31,397),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XS6, RA0, RB}},
4910d4
+
4910d4
 {"dcblce",	X(31,398),	X_MASK,      PPCCHLK,	E500MC,		{CT, RA, RB}},
4910d4
 
4910d4
 {"slbmte",	X(31,402),	XRA_MASK,    PPC64,	PPCNONE,	{RS, RB}},
4910d4
 
4910d4
+{"mtvsrws",	X(31,403),	XX1RB_MASK,  PPCVSX3,	PPCNONE,	{XT6, RA}},
4910d4
+
4910d4
 {"pbt.",	XRC(31,404,1),	X_MASK,      POWER8,	PPCNONE,	{RS, RA0, RB}},
4910d4
 
4910d4
 {"icswx",	XRC(31,406,0),	X_MASK,   POWER7|PPCA2,	PPCNONE,	{RS, RA, RB}},
4910d4
@@ -5139,10 +5487,14 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"divwe",	XO(31,427,0,0),	XO_MASK,  POWER7|PPCA2,	PPCNONE,	{RT, RA, RB}},
4910d4
 {"divwe.",	XO(31,427,0,1),	XO_MASK,  POWER7|PPCA2,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
+{"stxvll",	X(31,429),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XS6, RA0, RB}},
4910d4
+
4910d4
 {"clrbhrb",	X(31,430),	0xffffffff,  POWER8,	PPCNONE,	{0}},
4910d4
 
4910d4
 {"slbie",	X(31,434),	XRTRA_MASK,  PPC64,	PPCNONE,	{RB}},
4910d4
 
4910d4
+{"mtvsrdd",	X(31,435),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+
4910d4
 {"ecowx",	X(31,438),	X_MASK,      PPC,	TITAN,  	{RT, RA0, RB}},
4910d4
 
4910d4
 {"sthux",	X(31,439),	X_MASK,      COM|PPCVLE, PPCNONE,	{RS, RAS, RB}},
4910d4
@@ -5212,6 +5564,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"mtpmr",	X(31,462),	X_MASK, PPCPMR|PPCE300|PPCVLE, PPCNONE,	{PMR, RS}},
4910d4
 {"mttmr",	X(31,494),	X_MASK,	PPCTMR|E6500,	PPCNONE,	{TMR, RS}},
4910d4
 
4910d4
+{"slbieg",	X(31,466),	XRA_MASK,    POWER9,	PPCNONE,	{RS, RB}},
4910d4
+
4910d4
 {"mtmq",	XSPR(31,467,  0), XSPR_MASK, M601,	PPCNONE,	{RS}},
4910d4
 {"mtxer",	XSPR(31,467,  1), XSPR_MASK, COM|PPCVLE, PPCNONE,	{RS}},
4910d4
 {"mtlr",	XSPR(31,467,  8), XSPR_MASK, COM|PPCVLE, PPCNONE,	{RS}},
4910d4
@@ -5409,7 +5763,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"cmpb",	X(31,508),	X_MASK, POWER6|PPCA2|PPC476, PPCNONE,	{RA, RS, RB}},
4910d4
 
4910d4
-{"mcrxr",	X(31,512), XRARB_MASK|(3<<21), COM|PPCVLE, POWER7,	{BF}},
4910d4
+{"mcrxr",	X(31,512),	XBFRARB_MASK, COM|PPCVLE, POWER7,	{BF}},
4910d4
 
4910d4
 {"lbdx",	X(31,515),	X_MASK,      E500MC|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
@@ -5452,6 +5806,9 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"rrib",	XRC(31,537,0),	X_MASK,      M601,	PPCNONE,	{RA, RS, RB}},
4910d4
 {"rrib.",	XRC(31,537,1),	X_MASK,      M601,	PPCNONE,	{RA, RS, RB}},
4910d4
 
4910d4
+{"cnttzw",	XRC(31,538,0),	XRB_MASK,    POWER9,	PPCNONE,	{RA, RS}},
4910d4
+{"cnttzw.",	XRC(31,538,1),	XRB_MASK,    POWER9,	PPCNONE,	{RA, RS}},
4910d4
+
4910d4
 {"srd",		XRC(31,539,0),	X_MASK,      PPC64,	PPCNONE,	{RA, RS, RB}},
4910d4
 {"srd.",	XRC(31,539,1),	X_MASK,      PPC64,	PPCNONE,	{RA, RS, RB}},
4910d4
 
4910d4
@@ -5476,10 +5833,17 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"lfsux",	X(31,567),	X_MASK,      COM,	PPCEFS,		{FRT, RAS, RB}},
4910d4
 
4910d4
+{"cnttzd",	XRC(31,570,0),	XRB_MASK,    POWER9,	PPCNONE,	{RA, RS}},
4910d4
+{"cnttzd.",	XRC(31,570,1),	XRB_MASK,    POWER9,	PPCNONE,	{RA, RS}},
4910d4
+
4910d4
+{"mcrxrx",	X(31,576),	XBFRARB_MASK, POWER9,	PPCNONE,	{BF}},
4910d4
+
4910d4
 {"lwdx",	X(31,579),	X_MASK,      E500MC|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
 {"lvtlx",	X(31,581),	X_MASK,      PPCVEC2,	PPCNONE,	{VD, RA0, RB}},
4910d4
 
4910d4
+{"lwat",	X(31,582),	X_MASK,      POWER9,	PPCNONE,	{RT, RA0, FC}},
4910d4
+
4910d4
 {"lwfcmux",	APU(31,583,0), 	APU_MASK,    PPC405,	PPCNONE,	{FCRT, RA, RB}},
4910d4
 
4910d4
 {"lxsdx",	X(31,588),	XX1_MASK,    PPCVSX,	PPCNONE,	{XT6, RA0, RB}},
4910d4
@@ -5492,8 +5856,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"hwsync",	XSYNC(31,598,0), 0xffffffff, POWER4,	BOOKE|PPC476,	{0}},
4910d4
 {"lwsync",	XSYNC(31,598,1), 0xffffffff, PPC,	E500,		{0}},
4910d4
 {"ptesync",	XSYNC(31,598,2), 0xffffffff, PPC64,	PPCNONE,	{0}},
4910d4
-{"sync",	X(31,598),	XSYNCLE_MASK,E6500,	PPCNONE,	{LS, ESYNC}},
4910d4
-{"sync",	X(31,598),	XSYNC_MASK, PPCCOM|PPCVLE, BOOKE|PPC476, {LS}},
4910d4
+{"sync",	X(31,598),	XSYNCLE_MASK,POWER9|E6500, PPCNONE,	{LS, ESYNC}},
4910d4
+{"sync",	X(31,598),	XSYNC_MASK, PPCCOM|PPCVLE, BOOKE|PPC476|POWER9, {LS}},
4910d4
 {"msync",	X(31,598),	0xffffffff, BOOKE|PPCA2|PPC476, PPCNONE, {0}},
4910d4
 {"sync",	X(31,598),	0xffffffff, BOOKE|PPC476, E6500,	{0}},
4910d4
 {"lwsync",	X(31,598),	0xffffffff, E500,	PPCNONE,	{0}},
4910d4
@@ -5508,6 +5872,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"lvswx",	X(31,613),	X_MASK,      PPCVEC2,	PPCNONE,	{VD, RA0, RB}},
4910d4
 
4910d4
+{"ldat",	X(31,614),	X_MASK,      POWER9,	PPCNONE,	{RT, RA0, FC}},
4910d4
+
4910d4
 {"lqfcmux",	APU(31,615,0), 	APU_MASK,    PPC405,	PPCNONE,	{FCRT, RA, RB}},
4910d4
 
4910d4
 {"nego",	XO(31,104,1,0),	XORB_MASK,   COM|PPCVLE, PPCNONE,	{RT, RA}},
4910d4
@@ -5580,6 +5946,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"stvflx",	X(31,709),	X_MASK,      PPCVEC2,	PPCNONE,	{VS, RA0, RB}},
4910d4
 
4910d4
+{"stwat",	X(31,710),	X_MASK,      POWER9,	PPCNONE,	{RS, RA0, FC}},
4910d4
+
4910d4
 {"stwfcmux",	APU(31,711,0), 	APU_MASK,    PPC405,	PPCNONE,	{FCRT, RA, RB}},
4910d4
 
4910d4
 {"stxsdx",	X(31,716),	XX1_MASK,    PPCVSX,	PPCNONE,	{XS6, RA0, RB}},
4910d4
@@ -5616,6 +5984,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"stvswx",	X(31,741),	X_MASK,      PPCVEC2,	PPCNONE,	{VS, RA0, RB}},
4910d4
 
4910d4
+{"stdat",	X(31,742),	X_MASK,      POWER9,	PPCNONE,	{RS, RA0, FC}},
4910d4
+
4910d4
 {"stqfcmux",	APU(31,743,0), 	APU_MASK,    PPC405,	PPCNONE,	{FCRT, RA, RB}},
4910d4
 
4910d4
 {"subfmeo",	XO(31,232,1,0),	XORB_MASK,   PPCCOM,	PPCNONE,	{RT, RA}},
4910d4
@@ -5640,6 +6010,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"tresume.",	XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM,	PPCNONE,	{0}},
4910d4
 {"tsr.",	XRC(31,750,1),    XRTLRARB_MASK,PPCHTM,	PPCNONE,	{L}},
4910d4
 
4910d4
+{"darn",	X(31,755),	XLRAND_MASK, POWER9,	PPCNONE,	{RT, LRAND}},
4910d4
+
4910d4
 {"dcba",	X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476|PPCVLE, PPCNONE, {RA0, RB}},
4910d4
 {"dcbal",	XOPL(31,758,1), XRT_MASK,    E500MC,	PPCNONE,	{RA0, RB}},
4910d4
 
4910d4
@@ -5649,6 +6021,10 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"srliq.",	XRC(31,760,1),	X_MASK,      M601,	PPCNONE,	{RA, RS, SH}},
4910d4
 
4910d4
 {"lvsm",	X(31,773),	X_MASK,      PPCVEC2,	PPCNONE,	{VD, RA0, RB}},
4910d4
+
4910d4
+{"copy_first",	XOPL(31,774,1),	XRT_MASK,    POWER9,	PPCNONE,	{RA0, RB}},
4910d4
+{"copy",	X(31,774),	XLRT_MASK,   POWER9,	PPCNONE,	{RA0, RB, L}},
4910d4
+
4910d4
 {"stvepxl",	X(31,775),	X_MASK,      PPCVEC2,	PPCNONE,	{VS, RA0, RB}},
4910d4
 {"lvlxl",	X(31,775),	X_MASK,      CELL,	PPCNONE,	{VD, RA0, RB}},
4910d4
 {"ldfcmux",	APU(31,775,0), 	APU_MASK,    PPC405,	PPCNONE,	{FCRT, RA, RB}},
4910d4
@@ -5661,7 +6037,11 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"addo.",	XO(31,266,1,1),	XO_MASK, PPCCOM|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"caxo.",	XO(31,266,1,1),	XO_MASK,     PWRCOM,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
+{"modsd",	X(31,777),	X_MASK,      POWER9,	PPCNONE,	{RT, RA, RB}},
4910d4
+{"modsw",	X(31,779),	X_MASK,      POWER9,	PPCNONE,	{RT, RA, RB}},
4910d4
+
4910d4
 {"lxvw4x",	X(31,780),	XX1_MASK,    PPCVSX,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+{"lxsibzx",	X(31,781),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
 
4910d4
 {"tabortwc.",	XRC(31,782,1),	X_MASK,      PPCHTM,	PPCNONE,	{TO, RA, RB}},
4910d4
 
4910d4
@@ -5688,6 +6068,9 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"stvepx",	X(31,807),	X_MASK,      PPCVEC2,	PPCNONE,	{VS, RA0, RB}},
4910d4
 {"lvrxl",	X(31,807),	X_MASK,      CELL,	PPCNONE,	{VD, RA0, RB}},
4910d4
 
4910d4
+{"lxvh8x",	X(31,812),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+{"lxsihzx",	X(31,813),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+
4910d4
 {"tabortdc.",	XRC(31,814,1),	X_MASK,      PPCHTM,	PPCNONE,	{TO, RA, RB}},
4910d4
 
4910d4
 {"rac",		X(31,818),	X_MASK,      M601,	PPCNONE,	{RT, RA, RB}},
4910d4
@@ -5710,17 +6093,20 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"lvtlxl",	X(31,837),	X_MASK,      PPCVEC2,	PPCNONE,	{VD, RA0, RB}},
4910d4
 
4910d4
+{"cp_abort",	X(31,838),	XRTRARB_MASK,POWER9,	PPCNONE,	{0}},
4910d4
+
4910d4
 {"divo",	XO(31,331,1,0),	XO_MASK,     M601,	PPCNONE,	{RT, RA, RB}},
4910d4
 {"divo.",	XO(31,331,1,1),	XO_MASK,     M601,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
 {"lxvd2x",	X(31,844),	XX1_MASK,    PPCVSX,	PPCNONE,	{XT6, RA0, RB}},
4910d4
-{"lxvx",	X(31,844),	XX1_MASK,    PPCVSX,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+{"lxvx",	X(31,844),	XX1_MASK,    POWER8,	POWER9|PPCVSX3,	{XT6, RA0, RB}},
4910d4
 
4910d4
 {"tabortwci.",	XRC(31,846,1),	X_MASK,      PPCHTM,	PPCNONE,	{TO, RA, HTM_SI}},
4910d4
 
4910d4
 {"tlbsrx.",	XRC(31,850,1),	XRT_MASK,    PPCA2,	PPCNONE,	{RA0, RB}},
4910d4
 
4910d4
-{"slbmfev",	X(31,851),	XRA_MASK,    PPC64,	PPCNONE,	{RT, RB}},
4910d4
+{"slbmfev",	X(31,851),	XRLA_MASK,   POWER9,	PPCNONE,	{RT, RB, A_L}},
4910d4
+{"slbmfev",	X(31,851),	XRA_MASK,    PPC64,	POWER9,		{RT, RB}},
4910d4
 
4910d4
 {"lbzcix",	X(31,853),	X_MASK,      POWER6,	PPCNONE,	{RT, RA0, RB}},
4910d4
 
4910d4
@@ -5739,12 +6125,25 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"divso",	XO(31,363,1,0),	XO_MASK,     M601,	PPCNONE,	{RT, RA, RB}},
4910d4
 {"divso.",	XO(31,363,1,1),	XO_MASK,     M601,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
+{"lxvb16x",	X(31,876),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
+
4910d4
 {"tabortdci.",	XRC(31,878,1),	X_MASK,      PPCHTM,	PPCNONE,	{TO, RA, HTM_SI}},
4910d4
 
4910d4
+{"rmieg",	X(31,882),	XRTRA_MASK,  POWER9,	PPCNONE,	{RB}},
4910d4
+
4910d4
 {"ldcix",	X(31,885),	X_MASK,      POWER6,	PPCNONE,	{RT, RA0, RB}},
4910d4
 
4910d4
+{"msgsync",	X(31,886),	0xffffffff,  POWER9,	PPCNONE,	{0}},
4910d4
+
4910d4
 {"lfiwzx",	X(31,887),	X_MASK,   POWER7|PPCA2,	PPCNONE,	{FRT, RA0, RB}},
4910d4
 
4910d4
+{"extswsli",	XS(31,445,0),	XS_MASK,     POWER9,	PPCNONE,	{RA, RS, SH6}},
4910d4
+{"extswsli.",	XS(31,445,1),	XS_MASK,     POWER9,	PPCNONE,	{RA, RS, SH6}},
4910d4
+
4910d4
+{"paste",	XRC(31,902,0),  XLRT_MASK,   POWER9,	PPCNONE,	{RA0, RB, L0}},
4910d4
+{"paste_last",	XRCL(31,902,1,1),XRT_MASK,   POWER9,	PPCNONE,	{RA0, RB}},
4910d4
+{"paste.",	XRC(31,902,1),  XLRT_MASK,   POWER9,	PPCNONE,	{RA0, RB, L1}},
4910d4
+
4910d4
 {"stvlxl",	X(31,903),	X_MASK,      CELL,	PPCNONE,	{VS, RA0, RB}},
4910d4
 {"stdfcmux",	APU(31,903,0), 	APU_MASK,    PPC405,	PPCNONE,	{FCRT, RA, RB}},
4910d4
 
4910d4
@@ -5754,13 +6153,15 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"divweuo.",	XO(31,395,1,1),	XO_MASK,  POWER7|PPCA2,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
 {"stxvw4x",	X(31,908),	XX1_MASK,    PPCVSX,	PPCNONE,	{XS6, RA0, RB}},
4910d4
+{"stxsibx",	X(31,909),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XS6, RA0, RB}},
4910d4
 
4910d4
 {"tabort.",	XRC(31,910,1),	XRTRB_MASK,  PPCHTM,	PPCNONE,	{RA}},
4910d4
 
4910d4
 {"tlbsx",	XRC(31,914,0),	X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {RTO, RA0, RB}},
4910d4
 {"tlbsx.",	XRC(31,914,1),	X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {RTO, RA0, RB}},
4910d4
 
4910d4
-{"slbmfee",	X(31,915),	XRA_MASK,    PPC64,	PPCNONE,	{RT, RB}},
4910d4
+{"slbmfee",	X(31,915),	XRLA_MASK,   POWER9,	PPCNONE,	{RT, RB, A_L}},
4910d4
+{"slbmfee",	X(31,915),	XRA_MASK,    PPC64,	POWER9,		{RT, RB}},
4910d4
 
4910d4
 {"stwcix",	X(31,917),	X_MASK,      POWER6,	PPCNONE,	{RS, RA0, RB}},
4910d4
 
4910d4
@@ -5795,6 +6196,9 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"divweo",	XO(31,427,1,0),	XO_MASK,  POWER7|PPCA2,	PPCNONE,	{RT, RA, RB}},
4910d4
 {"divweo.",	XO(31,427,1,1),	XO_MASK,  POWER7|PPCA2,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
+{"stxvh8x",	X(31,940),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XS6, RA0, RB}},
4910d4
+{"stxsihx",	X(31,941),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XS6, RA0, RB}},
4910d4
+
4910d4
 {"treclaim.",	XRC(31,942,1),	XRTRB_MASK,  PPCHTM,	PPCNONE,	{RA}},
4910d4
 
4910d4
 {"tlbrehi",	XTLB(31,946,0),	XTLB_MASK,   PPC403,	PPCA2,		{RT, RA}},
4910d4
@@ -5826,7 +6230,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"divwuo.",	XO(31,459,1,1),	XO_MASK,     PPC|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
 {"stxvd2x",	X(31,972),	XX1_MASK,    PPCVSX,	PPCNONE,	{XS6, RA0, RB}},
4910d4
-{"stxvx",	X(31,972),	XX1_MASK,    PPCVSX,	PPCNONE,	{XS6, RA0, RB}},
4910d4
+{"stxvx",	X(31,972),	XX1_MASK,    POWER8,	POWER9|PPCVSX3,	{XS6, RA0, RB}},
4910d4
 
4910d4
 {"tlbld",	X(31,978),	XRTRA_MASK,  PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
4910d4
 {"tlbwehi",	XTLB(31,978,0),	XTLB_MASK,   PPC403,	PPCNONE,	{RT, RA}},
4910d4
@@ -5859,6 +6263,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"divwo",	XO(31,491,1,0),	XO_MASK,   PPC|PPCVLE,	PPCNONE,	{RT, RA, RB}},
4910d4
 {"divwo.",	XO(31,491,1,1),	XO_MASK,   PPC|PPCVLE,	PPCNONE,	{RT, RA, RB}},
4910d4
 
4910d4
+{"stxvb16x",	X(31,1004),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XS6, RA0, RB}},
4910d4
+
4910d4
 {"trechkpt.",	XRC(31,1006,1),	XRTRARB_MASK,PPCHTM,	PPCNONE,	{0}},
4910d4
 
4910d4
 {"tlbli",	X(31,1010),	XRTRA_MASK,  PPC,	TITAN,  	{RB}},
4910d4
@@ -5943,6 +6349,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"psq_l",	OP(56),		OP_MASK,     PPCPS,	PPCNONE,	{FRT,PSD,RA,PSW,PSQ}},
4910d4
 {"lfq",		OP(56),		OP_MASK,     POWER2,	PPCNONE,	{FRT, D, RA0}},
4910d4
 
4910d4
+{"lxsd",	DSO(57,2),	DS_MASK,     PPCVSX3,	PPCNONE,	{VD, DS, RA0}},
4910d4
+{"lxssp",	DSO(57,3),	DS_MASK,     PPCVSX3,	PPCNONE,	{VD, DS, RA0}},
4910d4
 {"lfdp",	OP(57),		OP_MASK,     POWER6,	POWER7,		{FRTp, DS, RA0}},
4910d4
 {"psq_lu",	OP(57),		OP_MASK,     PPCPS,	PPCNONE,	{FRT,PSD,RA,PSW,PSQ}},
4910d4
 {"lfqu",	OP(57),		OP_MASK,     POWER2,	PPCNONE,	{FRT, D, RA0}},
4910d4
@@ -6042,6 +6450,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"dcmpu",	X(59,642),	X_MASK,      POWER6,	PPCNONE,	{BF,  FRA, FRB}},
4910d4
 
4910d4
 {"dtstsf",	X(59,674),	X_MASK,      POWER6,	PPCNONE,	{BF,  FRA, FRB}},
4910d4
+{"dtstsfi",	X(59,675),      X_MASK|1<<22,POWER9,	PPCNONE,	{BF, UIM6, FRB}},
4910d4
 
4910d4
 {"drsp",	XRC(59,770,0),	X_MASK,      POWER6,	PPCNONE,	{FRT, FRB}},
4910d4
 {"drsp.",	XRC(59,770,1),	X_MASK,      POWER6,	PPCNONE,	{FRT, FRB}},
4910d4
@@ -6064,6 +6473,9 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"xsaddsp",	XX3(60,0),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsmaddasp",	XX3(60,1),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xxsldwi",	XX3(60,2),	XX3SHW_MASK, PPCVSX,	PPCNONE,	{XT6, XA6, XB6, SHW}},
4910d4
+{"xscmpeqdp",	XX3(60,3),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xsrsqrtesp",	XX2(60,10),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xssqrtsp",	XX2(60,11),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xxsel",	XX4(60,3),	XX4_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6, XC6}},
4910d4
 {"xssubsp",	XX3(60,8),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsmaddmsp",	XX3(60,9),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
@@ -6072,163 +6484,203 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"xxswapd",	XX3(60,10)|(2<<8), XX3_MASK, PPCVSX,	PPCNONE,	{XT6, XA6, XB6S}},
4910d4
 {"xxmrgld",	XX3(60,10)|(3<<8), XX3_MASK, PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xxpermdi",	XX3(60,10),	XX3DM_MASK,  PPCVSX,	PPCNONE,	{XT6, XA6, XB6, DM}},
4910d4
-{"xsrsqrtesp",	XX2(60,10),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xssqrtsp",	XX2(60,11),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscmpgtdp",	XX3(60,11),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xsresp",	XX2(60,26),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xsmulsp",	XX3(60,16),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsmsubasp",	XX3(60,17),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xxmrghw",	XX3(60,18),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xscmpgedp",	XX3(60,19),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsdivsp",	XX3(60,24),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsmsubmsp",	XX3(60,25),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xsresp",	XX2(60,26),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xxperm",	XX3(60,26),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xscmpnedp",	XX3(60,27),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsadddp",	XX3(60,32),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsmaddadp",	XX3(60,33),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xscmpudp",	XX3(60,35),	XX3BF_MASK,  PPCVSX,	PPCNONE,	{BF, XA6, XB6}},
4910d4
+{"xscvdpuxws",	XX2(60,72),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsrdpi",	XX2(60,73),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsrsqrtedp",	XX2(60,74),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xssqrtdp",	XX2(60,75),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xssubdp",	XX3(60,40),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsmaddmdp",	XX3(60,41),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xscmpodp",	XX3(60,43),	XX3BF_MASK,  PPCVSX,	PPCNONE,	{BF, XA6, XB6}},
4910d4
+{"xscvdpsxws",	XX2(60,88),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsrdpiz",	XX2(60,89),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsredp",	XX2(60,90),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xsmuldp",	XX3(60,48),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsmsubadp",	XX3(60,49),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xxmrglw",	XX3(60,50),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xsrdpip",	XX2(60,105),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xstsqrtdp",	XX2(60,106),	XX2BF_MASK,  PPCVSX,	PPCNONE,	{BF, XB6}},
4910d4
+{"xsrdpic",	XX2(60,107),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xsdivdp",	XX3(60,56),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsmsubmdp",	XX3(60,57),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xxpermr",	XX3(60,58),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xscmpexpdp",	XX3(60,59),	XX3BF_MASK,  PPCVSX3,	PPCNONE,	{BF, XA6, XB6}},
4910d4
+{"xsrdpim",	XX2(60,121),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xstdivdp",	XX3(60,61),	XX3BF_MASK,  PPCVSX,	PPCNONE,	{BF, XA6, XB6}},
4910d4
 {"xvaddsp",	XX3(60,64),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvmaddasp",	XX3(60,65),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcmpeqsp",	XX3RC(60,67,0),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcmpeqsp.",	XX3RC(60,67,1),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcvspuxws",	XX2(60,136),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrspi",	XX2(60,137),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrsqrtesp",	XX2(60,138),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvsqrtsp",	XX2(60,139),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvsubsp",	XX3(60,72),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xscvdpuxws",	XX2(60,72),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvmaddmsp",	XX3(60,73),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xsrdpi",	XX2(60,73),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xsrsqrtedp",	XX2(60,74),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xssqrtdp",	XX2(60,75),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvcmpgtsp",	XX3RC(60,75,0),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcmpgtsp.",	XX3RC(60,75,1),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcvspsxws",	XX2(60,152),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrspiz",	XX2(60,153),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvresp",	XX2(60,154),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvmulsp",	XX3(60,80),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvmsubasp",	XX3(60,81),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xxspltw",	XX2(60,164),	XX2UIM_MASK, PPCVSX,	PPCNONE,	{XT6, XB6, UIM}},
4910d4
+{"xxextractuw",	XX2(60,165),	XX2UIM4_MASK,PPCVSX3,	PPCNONE,	{XT6, XB6, UIMM4}},
4910d4
 {"xvcmpgesp",	XX3RC(60,83,0),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcmpgesp.",	XX3RC(60,83,1),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcvuxwsp",	XX2(60,168),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrspip",	XX2(60,169),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvtsqrtsp",	XX2(60,170),	XX2BF_MASK,  PPCVSX,	PPCNONE,	{BF, XB6}},
4910d4
+{"xvrspic",	XX2(60,171),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvdivsp",	XX3(60,88),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xscvdpsxws",	XX2(60,88),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvmsubmsp",	XX3(60,89),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xsrdpiz",	XX2(60,89),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xsredp",	XX2(60,90),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xxspltib",	X(60,360),	XX1_MASK|3<<19, PPCVSX3,PPCNONE,	{XT6, IMM8}},
4910d4
+{"xxinsertw",	XX2(60,181),	XX2UIM4_MASK,PPCVSX3,	PPCNONE,	{XT6, XB6, UIMM4}},
4910d4
+{"xvcmpnesp",	XX3RC(60,91,0), XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcmpnesp.",	XX3RC(60,91,1), XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcvsxwsp",	XX2(60,184),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrspim",	XX2(60,185),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvtdivsp",	XX3(60,93),	XX3BF_MASK,  PPCVSX,	PPCNONE,	{BF, XA6, XB6}},
4910d4
 {"xvadddp",	XX3(60,96),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvmaddadp",	XX3(60,97),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcmpeqdp",	XX3RC(60,99,0),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcmpeqdp.",	XX3RC(60,99,1),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcvdpuxws",	XX2(60,200),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrdpi",	XX2(60,201),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrsqrtedp",	XX2(60,202),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvsqrtdp",	XX2(60,203),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvsubdp",	XX3(60,104),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvmaddmdp",	XX3(60,105),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xsrdpip",	XX2(60,105),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xstsqrtdp",	XX2(60,106),	XX2BF_MASK,  PPCVSX,	PPCNONE,	{BF, XB6}},
4910d4
-{"xsrdpic",	XX2(60,107),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvcmpgtdp",	XX3RC(60,107,0), XX3_MASK,   PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcmpgtdp.",	XX3RC(60,107,1), XX3_MASK,   PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcvdpsxws",	XX2(60,216),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrdpiz",	XX2(60,217),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvredp",	XX2(60,218),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvmuldp",	XX3(60,112),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvmsubadp",	XX3(60,113),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcmpgedp",	XX3RC(60,115,0), XX3_MASK,   PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcmpgedp.",	XX3RC(60,115,1), XX3_MASK,   PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcvuxwdp",	XX2(60,232),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrdpip",	XX2(60,233),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvtsqrtdp",	XX2(60,234),	XX2BF_MASK,  PPCVSX,	PPCNONE,	{BF, XB6}},
4910d4
+{"xvrdpic",	XX2(60,235),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvdivdp",	XX3(60,120),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvmsubmdp",	XX3(60,121),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xsrdpim",	XX2(60,121),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvcmpnedp",	XX3RC(60,123,0), XX3_MASK,   PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcmpnedp.",	XX3RC(60,123,1), XX3_MASK,   PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcvsxwdp",	XX2(60,248),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvrdpim",	XX2(60,249),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvtdivdp",	XX3(60,125),	XX3BF_MASK,  PPCVSX,	PPCNONE,	{BF, XA6, XB6}},
4910d4
+{"xsmaxcdp",	XX3(60,128),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsnmaddasp",	XX3(60,129),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xxland",	XX3(60,130),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvcvspuxws",	XX2(60,136),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscvdpsp",	XX2(60,265),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscvdpspn",	XX2(60,267),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsmincdp",	XX3(60,136),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsnmaddmsp",	XX3(60,137),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvrspi",	XX2(60,137),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xxlandc",	XX3(60,138),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvrsqrtesp",	XX2(60,138),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvsqrtsp",	XX2(60,139),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsrsp",	XX2(60,281),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsmaxjdp",	XX3(60,144),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsnmsubasp",	XX3(60,145),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xxlor",	XX3(60,146),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvcvspsxws",	XX2(60,152),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscvuxdsp",	XX2(60,296),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xststdcsp",	XX2(60,298),	XX2BFD_MASK, PPCVSX3,	PPCNONE,	{BF, XB6, DCMX}},
4910d4
+{"xsminjdp",	XX3(60,152),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsnmsubmsp",	XX3(60,153),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvrspiz",	XX2(60,153),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xxlxor",	XX3(60,154),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvresp",	XX2(60,154),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscvsxdsp",	XX2(60,312),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xsmaxdp",	XX3(60,160),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsnmaddadp",	XX3(60,161),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xxlnor",	XX3(60,162),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xxspltw",	XX2(60,164),	XX2UIM_MASK, PPCVSX,	PPCNONE,	{XT6, XB6, UIM}},
4910d4
+{"xscvdpuxds",	XX2(60,328),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscvspdp",	XX2(60,329),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscvspdpn",	XX2(60,331),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xsmindp",	XX3(60,168),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvcvuxwsp",	XX2(60,168),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xsnmaddmdp",	XX3(60,169),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvrspip",	XX2(60,169),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvtsqrtsp",	XX2(60,170),	XX2BF_MASK,  PPCVSX,	PPCNONE,	{BF, XB6}},
4910d4
 {"xxlorc",	XX3(60,170),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvrspic",	XX2(60,171),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscvdpsxds",	XX2(60,344),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsabsdp",	XX2(60,345),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsxexpdp",	XX2VA(60,347,0),XX2_MASK|1,  PPCVSX3,	PPCNONE,	{RT, XB6}},
4910d4
+{"xsxsigdp",	XX2VA(60,347,1),XX2_MASK|1,  PPCVSX3,	PPCNONE,	{RT, XB6}},
4910d4
+{"xscvhpdp",	XX2VA(60,347,16),XX2_MASK,   PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscvdphp",	XX2VA(60,347,17),XX2_MASK,   PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xscpsgndp",	XX3(60,176),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xsnmsubadp",	XX3(60,177),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xxlnand",	XX3(60,178),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvcvsxwsp",	XX2(60,184),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xscvuxddp",	XX2(60,360),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsnabsdp",	XX2(60,361),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xststdcdp",	XX2(60,362),	XX2BFD_MASK, PPCVSX3,	PPCNONE,	{BF, XB6, DCMX}},
4910d4
 {"xsnmsubmdp",	XX3(60,185),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvrspim",	XX2(60,185),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xxleqv",	XX3(60,186),	XX3_MASK,    PPCVSX2,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xscvsxddp",	XX2(60,376),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsnegdp",	XX2(60,377),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvmaxsp",	XX3(60,192),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvnmaddasp",	XX3(60,193),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvcvspuxds",	XX2(60,392),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvcvdpsp",	XX2(60,393),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvminsp",	XX3(60,200),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvcvdpuxws",	XX2(60,200),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvnmaddmsp",	XX3(60,201),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvrdpi",	XX2(60,201),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvrsqrtedp",	XX2(60,202),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvsqrtdp",	XX2(60,203),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvcvspsxds",	XX2(60,408),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvabssp",	XX2(60,409),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvmovsp",	XX3(60,208),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6S}},
4910d4
 {"xvcpsgnsp",	XX3(60,208),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvnmsubasp",	XX3(60,209),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvcvdpsxws",	XX2(60,216),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvnmsubmsp",	XX3(60,217),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvrdpiz",	XX2(60,217),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvredp",	XX2(60,218),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvmaxdp",	XX3(60,224),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvnmaddadp",	XX3(60,225),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvmindp",	XX3(60,232),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvnmaddmdp",	XX3(60,233),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvcvuxwdp",	XX2(60,232),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvrdpip",	XX2(60,233),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvtsqrtdp",	XX2(60,234),	XX2BF_MASK,  PPCVSX,	PPCNONE,	{BF, XB6}},
4910d4
-{"xvrdpic",	XX2(60,235),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvmovdp",	XX3(60,240),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6S}},
4910d4
-{"xvcpsgndp",	XX3(60,240),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvnmsubadp",	XX3(60,241),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvcvsxwdp",	XX2(60,248),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvnmsubmdp",	XX3(60,249),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
-{"xvrdpim",	XX2(60,249),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvdpsp",	XX2(60,265),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvdpspn",	XX2(60,267),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xsrsp",	XX2(60,281),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvuxdsp",	XX2(60,296),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvsxdsp",	XX2(60,312),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvdpuxds",	XX2(60,328),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvspdp",	XX2(60,329),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvspdpn",	XX2(60,331),	XX2_MASK,    PPCVSX2,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvdpsxds",	XX2(60,344),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xsabsdp",	XX2(60,345),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvuxddp",	XX2(60,360),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xsnabsdp",	XX2(60,361),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xscvsxddp",	XX2(60,376),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xsnegdp",	XX2(60,377),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvcvspuxds",	XX2(60,392),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvcvdpsp",	XX2(60,393),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvcvspsxds",	XX2(60,408),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
-{"xvabssp",	XX2(60,409),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvcvuxdsp",	XX2(60,424),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvnabssp",	XX2(60,425),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvtstdcsp",	XX2(60,426),	XX2DCMXS_MASK,PPCVSX3,	PPCNONE,	{XT6, XB6, DCMXS}},
4910d4
+{"xviexpsp",	XX3(60,216),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvnmsubmsp",	XX3(60,217),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcvsxdsp",	XX2(60,440),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvnegsp",	XX2(60,441),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvmaxdp",	XX3(60,224),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvnmaddadp",	XX3(60,225),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcvdpuxds",	XX2(60,456),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvcvspdp",	XX2(60,457),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xsiexpdp",	X(60,918),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA, RB}},
4910d4
+{"xvmindp",	XX3(60,232),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvnmaddmdp",	XX3(60,233),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcvdpsxds",	XX2(60,472),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvabsdp",	XX2(60,473),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvxexpdp",	XX2VA(60,475,0),XX2_MASK,    PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvxsigdp",	XX2VA(60,475,1),XX2_MASK,    PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xxbrh",	XX2VA(60,475,7),XX2_MASK,    PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvxexpsp",	XX2VA(60,475,8),XX2_MASK,    PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvxsigsp",	XX2VA(60,475,9),XX2_MASK,    PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xxbrw",	XX2VA(60,475,15),XX2_MASK,   PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xxbrd",	XX2VA(60,475,23),XX2_MASK,   PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvcvhpsp",	XX2VA(60,475,24),XX2_MASK,   PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvcvsphp",	XX2VA(60,475,25),XX2_MASK,   PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xxbrq",	XX2VA(60,475,31),XX2_MASK,   PPCVSX3,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvmovdp",	XX3(60,240),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6S}},
4910d4
+{"xvcpsgndp",	XX3(60,240),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvnmsubadp",	XX3(60,241),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcvuxddp",	XX2(60,488),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvnabsdp",	XX2(60,489),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
+{"xvtstdcdp",	XX2(60,490),	XX2DCMXS_MASK,PPCVSX3,	PPCNONE,	{XT6, XB6, DCMXS}},
4910d4
+{"xviexpdp",	XX3(60,248),	XX3_MASK,    PPCVSX3,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
+{"xvnmsubmdp",	XX3(60,249),	XX3_MASK,    PPCVSX,	PPCNONE,	{XT6, XA6, XB6}},
4910d4
 {"xvcvsxddp",	XX2(60,504),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 {"xvnegdp",	XX2(60,505),	XX2_MASK,    PPCVSX,	PPCNONE,	{XT6, XB6}},
4910d4
 
4910d4
 {"psq_st",	OP(60),		OP_MASK,     PPCPS,	PPCNONE,	{FRS,PSD,RA,PSW,PSQ}},
4910d4
 {"stfq",	OP(60),		OP_MASK,     POWER2,	PPCNONE,	{FRS, D, RA}},
4910d4
 
4910d4
+{"lxv",		DQX(61,1),	DQX_MASK,    PPCVSX3,	PPCNONE,	{XTQ6, DQ, RA0}},
4910d4
+{"stxv",	DQX(61,5),	DQX_MASK,    PPCVSX3,	PPCNONE,	{XSQ6, DQ, RA0}},
4910d4
+{"stxsd",	DSO(61,2),	DS_MASK,     PPCVSX3,	PPCNONE,	{VS, DS, RA0}},
4910d4
+{"stxssp",	DSO(61,3),	DS_MASK,     PPCVSX3,	PPCNONE,	{VS, DS, RA0}},
4910d4
 {"stfdp",	OP(61),		OP_MASK,     POWER6,	POWER7,		{FRSp, DS, RA0}},
4910d4
 {"psq_stu",	OP(61),		OP_MASK,     PPCPS,	PPCNONE,	{FRS,PSD,RA,PSW,PSQ}},
4910d4
 {"stfqu",	OP(61),		OP_MASK,     POWER2,	PPCNONE,	{FRS, D, RA}},
4910d4
@@ -6237,7 +6689,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"stdu",	DSO(62,1),	DS_MASK,     PPC64,	PPCNONE,	{RS, DS, RAS}},
4910d4
 {"stq",		DSO(62,2),	DS_MASK,     POWER4,	PPC476,		{RSQ, DS, RA0}},
4910d4
 
4910d4
-{"fcmpu",	X(63,0),     X_MASK|(3<<21), COM,	PPCEFS,		{BF, FRA, FRB}},
4910d4
+{"fcmpu",	X(63,0),        XBF_MASK,    COM,	PPCEFS,		{BF, FRA, FRB}},
4910d4
 
4910d4
 {"daddq",	XRC(63,2,0),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRAp, FRBp}},
4910d4
 {"daddq.",	XRC(63,2,1),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRAp, FRBp}},
4910d4
@@ -6245,6 +6697,12 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"dquaq",	ZRC(63,3,0),	Z2_MASK,     POWER6,	PPCNONE,	{FRTp, FRAp, FRBp, RMC}},
4910d4
 {"dquaq.",	ZRC(63,3,1),	Z2_MASK,     POWER6,	PPCNONE,	{FRTp, FRAp, FRBp, RMC}},
4910d4
 
4910d4
+{"xsaddqp",	XRC(63,4,0),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"xsaddqpo",	XRC(63,4,1),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
+{"xsrqpi",	ZRC(63,5,0),	Z2_MASK,     PPCVSX3,	PPCNONE,	{R, VD, VB, RMC}},
4910d4
+{"xsrqpix",	ZRC(63,5,1),	Z2_MASK,     PPCVSX3,	PPCNONE,	{R, VD, VB, RMC}},
4910d4
+
4910d4
 {"fcpsgn",	XRC(63,8,0),	X_MASK, POWER6|PPCA2|PPC476, PPCNONE,	{FRT, FRA, FRB}},
4910d4
 {"fcpsgn.",	XRC(63,8,1),	X_MASK, POWER6|PPCA2|PPC476, PPCNONE,	{FRT, FRA, FRB}},
4910d4
 
4910d4
@@ -6317,7 +6775,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"fnmadd.",	A(63,31,1),	A_MASK,      PPCCOM,	PPCEFS,		{FRT, FRA, FRC, FRB}},
4910d4
 {"fnma.",	A(63,31,1),	A_MASK,      PWRCOM,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 
4910d4
-{"fcmpo",	X(63,32),    X_MASK|(3<<21), COM,	PPCEFS,		{BF, FRA, FRB}},
4910d4
+{"fcmpo",	X(63,32),       XBF_MASK,    COM,	PPCEFS,		{BF, FRA, FRB}},
4910d4
 
4910d4
 {"dmulq",	XRC(63,34,0),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRAp, FRBp}},
4910d4
 {"dmulq.",	XRC(63,34,1),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRAp, FRBp}},
4910d4
@@ -6325,6 +6783,11 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"drrndq",	ZRC(63,35,0),	Z2_MASK,     POWER6,	PPCNONE,	{FRTp, FRA, FRBp, RMC}},
4910d4
 {"drrndq.",	ZRC(63,35,1),	Z2_MASK,     POWER6,	PPCNONE,	{FRTp, FRA, FRBp, RMC}},
4910d4
 
4910d4
+{"xsmulqp",	XRC(63,36,0),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"xsmulqpo",	XRC(63,36,1),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
+{"xsrqpxp",	Z(63,37),	Z2_MASK,     PPCVSX3,	PPCNONE,	{R, VD, VB, RMC}},
4910d4
+
4910d4
 {"mtfsb1",	XRC(63,38,0),	XRARB_MASK,  COM,	PPCNONE,	{BT}},
4910d4
 {"mtfsb1.",	XRC(63,38,1),	XRARB_MASK,  COM,	PPCNONE,	{BT}},
4910d4
 
4910d4
@@ -6351,10 +6814,14 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"drintxq",	ZRC(63,99,0),	Z2_MASK,     POWER6,	PPCNONE,	{R, FRTp, FRBp, RMC}},
4910d4
 {"drintxq.",	ZRC(63,99,1),	Z2_MASK,     POWER6,	PPCNONE,	{R, FRTp, FRBp, RMC}},
4910d4
 
4910d4
-{"ftdiv",	X(63,128),   X_MASK|(3<<21), POWER7,	PPCNONE,	{BF, FRA, FRB}},
4910d4
+{"xscpsgnqp",	X(63,100),      X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
+{"ftdiv",	X(63,128),      XBF_MASK,    POWER7,	PPCNONE,	{BF, FRA, FRB}},
4910d4
 
4910d4
 {"dcmpoq",	X(63,130),	X_MASK,      POWER6,	PPCNONE,	{BF, FRAp, FRBp}},
4910d4
 
4910d4
+{"xscmpoqp",	X(63,132),      XBF_MASK,    PPCVSX3,	PPCNONE,	{BF, VA, VB}},
4910d4
+
4910d4
 {"mtfsfi",  XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCNONE, {BFF, U, W}},
4910d4
 {"mtfsfi",  XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476, {BFF, U}},
4910d4
 {"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCNONE, {BFF, U, W}},
4910d4
@@ -6368,9 +6835,12 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"fctiwuz",	XRC(63,143,0),	XRA_MASK,    POWER7,	PPCNONE,	{FRT, FRB}},
4910d4
 {"fctiwuz.",	XRC(63,143,1),	XRA_MASK,    POWER7,	PPCNONE,	{FRT, FRB}},
4910d4
 
4910d4
-{"ftsqrt",	X(63,160), X_MASK|(3<<21|FRA_MASK), POWER7, PPCNONE,	{BF, FRB}},
4910d4
+{"ftsqrt",	X(63,160),      XBF_MASK|FRA_MASK, POWER7, PPCNONE,	{BF, FRB}},
4910d4
 
4910d4
 {"dtstexq",	X(63,162),	X_MASK,      POWER6,	PPCNONE,	{BF, FRAp, FRBp}},
4910d4
+
4910d4
+{"xscmpexpqp",	X(63,164),      XBF_MASK,    PPCVSX3,	PPCNONE,	{BF, VA, VB}},
4910d4
+
4910d4
 {"dtstdcq",	Z(63,194),	Z_MASK,      POWER6,	PPCNONE,	{BF, FRAp, DCM}},
4910d4
 {"dtstdgq",	Z(63,226),	Z_MASK,      POWER6,	PPCNONE,	{BF, FRAp, DGM}},
4910d4
 
4910d4
@@ -6392,27 +6862,53 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"dxexq",	XRC(63,354,0),	X_MASK,      POWER6,	PPCNONE,	{FRT, FRBp}},
4910d4
 {"dxexq.",	XRC(63,354,1),	X_MASK,      POWER6,	PPCNONE,	{FRT, FRBp}},
4910d4
 
4910d4
+{"xsmaddqp",	XRC(63,388,0),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"xsmaddqpo",	XRC(63,388,1),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
 {"frin",	XRC(63,392,0),	XRA_MASK,    POWER5,	PPCNONE,	{FRT, FRB}},
4910d4
 {"frin.",	XRC(63,392,1),	XRA_MASK,    POWER5,	PPCNONE,	{FRT, FRB}},
4910d4
+
4910d4
+{"xsmsubqp",	XRC(63,420,0),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"xsmsubqpo",	XRC(63,420,1),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
 {"friz",	XRC(63,424,0),	XRA_MASK,    POWER5,	PPCNONE,	{FRT, FRB}},
4910d4
 {"friz.",	XRC(63,424,1),	XRA_MASK,    POWER5,	PPCNONE,	{FRT, FRB}},
4910d4
+
4910d4
+{"xsnmaddqp",	XRC(63,452,0),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"xsnmaddqpo",	XRC(63,452,1),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
 {"frip",	XRC(63,456,0),	XRA_MASK,    POWER5,	PPCNONE,	{FRT, FRB}},
4910d4
 {"frip.",	XRC(63,456,1),	XRA_MASK,    POWER5,	PPCNONE,	{FRT, FRB}},
4910d4
+
4910d4
+{"xsnmsubqp",	XRC(63,484,0),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"xsnmsubqpo",	XRC(63,484,1),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
 {"frim",	XRC(63,488,0),	XRA_MASK,    POWER5,	PPCNONE,	{FRT, FRB}},
4910d4
 {"frim.",	XRC(63,488,1),	XRA_MASK,    POWER5,	PPCNONE,	{FRT, FRB}},
4910d4
 
4910d4
 {"dsubq",	XRC(63,514,0),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRAp, FRBp}},
4910d4
 {"dsubq.",	XRC(63,514,1),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRAp, FRBp}},
4910d4
 
4910d4
+{"xssubqp",	XRC(63,516,0),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"xssubqpo",	XRC(63,516,1),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
 {"ddivq",	XRC(63,546,0),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRAp, FRBp}},
4910d4
 {"ddivq.",	XRC(63,546,1),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRAp, FRBp}},
4910d4
 
4910d4
+{"xsdivqp",	XRC(63,548,0),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+{"xsdivqpo",	XRC(63,548,1),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
 {"mffs",	XRC(63,583,0),	XRARB_MASK,  COM,	PPCEFS,		{FRT}},
4910d4
 {"mffs.",	XRC(63,583,1),	XRARB_MASK,  COM,	PPCEFS,		{FRT}},
4910d4
 
4910d4
 {"dcmpuq",	X(63,642),	X_MASK,      POWER6,	PPCNONE,	{BF, FRAp, FRBp}},
4910d4
 
4910d4
+{"xscmpuqp",	X(63,644),      XBF_MASK,    PPCVSX3,	PPCNONE,	{BF, VA, VB}},
4910d4
+
4910d4
 {"dtstsfq",	X(63,674),	X_MASK,      POWER6,	PPCNONE,	{BF, FRA, FRBp}},
4910d4
+{"dtstsfiq",	X(63,675),      X_MASK|1<<22,POWER9,	PPCNONE,	{BF, UIM6, FRBp}},
4910d4
+
4910d4
+{"xststdcqp",	X(63,708),      X_MASK,      PPCVSX3,	PPCNONE,	{BF, VB, DCMX}},
4910d4
 
4910d4
 {"mtfsf",	XFL(63,711,0),	XFL_MASK, POWER6|PPCA2|PPC476, PPCNONE,	{FLM, FRB, XFL_L, W}},
4910d4
 {"mtfsf",	XFL(63,711,0),	XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS,	{FLM, FRB}},
4910d4
@@ -6425,6 +6921,14 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"dcffixq",	XRC(63,802,0),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRB}},
4910d4
 {"dcffixq.",	XRC(63,802,1),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRB}},
4910d4
 
4910d4
+{"xsabsqp",	XVA(63,804,0),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xsxexpqp",	XVA(63,804,2),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xsnabsqp",	XVA(63,804,8),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xsnegqp",	XVA(63,804,16),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xsxsigqp",	XVA(63,804,18),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xssqrtqp",	XVARC(63,804,27,0), XVA_MASK, PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xssqrtqpo",	XVARC(63,804,27,1), XVA_MASK, PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+
4910d4
 {"fctid",	XRC(63,814,0),	XRA_MASK,    PPC64,	PPCNONE,	{FRT, FRB}},
4910d4
 {"fctid",	XRC(63,814,0),	XRA_MASK,    PPC476,	PPCNONE,	{FRT, FRB}},
4910d4
 {"fctid.",	XRC(63,814,1),	XRA_MASK,    PPC64,	PPCNONE,	{FRT, FRB}},
4910d4
@@ -6438,6 +6942,16 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"denbcdq",	XRC(63,834,0),	X_MASK,      POWER6,	PPCNONE,	{S, FRTp, FRBp}},
4910d4
 {"denbcdq.",	XRC(63,834,1),	X_MASK,      POWER6,	PPCNONE,	{S, FRTp, FRBp}},
4910d4
 
4910d4
+{"xscvqpuwz",	XVA(63,836,1),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xscvudqp",	XVA(63,836,2),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xscvqpswz",	XVA(63,836,9),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xscvsdqp",	XVA(63,836,10),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xscvqpudz",	XVA(63,836,17),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xscvqpdp",	XVARC(63,836,20,0), XVA_MASK, PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xscvqpdpo",	XVARC(63,836,20,1), XVA_MASK, PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xscvdpqp",	XVA(63,836,22),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+{"xscvqpsdz",	XVA(63,836,25),	XVA_MASK,    PPCVSX3,	PPCNONE,	{VD, VB}},
4910d4
+
4910d4
 {"fmrgow",	X(63,838),	X_MASK,      PPCVSX2,	PPCNONE,	{FRT, FRA, FRB}},
4910d4
 
4910d4
 {"fcfid",	XRC(63,846,0),	XRA_MASK,    PPC64,	PPCNONE,	{FRT, FRB}},
4910d4
@@ -6448,6 +6962,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"diexq",	XRC(63,866,0),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRA, FRBp}},
4910d4
 {"diexq.",	XRC(63,866,1),	X_MASK,      POWER6,	PPCNONE,	{FRTp, FRA, FRBp}},
4910d4
 
4910d4
+{"xsiexpqp",	X(63,868),	X_MASK,      PPCVSX3,	PPCNONE,	{VD, VA, VB}},
4910d4
+
4910d4
 {"fctidu",	XRC(63,942,0),	XRA_MASK, POWER7|PPCA2,	PPCNONE,	{FRT, FRB}},
4910d4
 {"fctidu.",	XRC(63,942,1),	XRA_MASK, POWER7|PPCA2,	PPCNONE,	{FRT, FRB}},
4910d4
 
4910d4
Only in binutils-2.25.1/opcodes: ppc-opc.c.orig
4910d4
Only in binutils-2.25.1/opcodes: ppc-opc.c.rej
4910d4
--- /dev/null	2016-05-23 09:42:50.354737742 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/power9.d	2016-05-23 12:38:32.546422674 +0100
4910d4
@@ -0,0 +1,386 @@
4910d4
+#as: -mpower9
4910d4
+#objdump: -dr -Mpower9
4910d4
+#name: POWER9 tests
4910d4
+
4910d4
+.*
4910d4
+
4910d4
+
4910d4
+Disassembly of section \.text:
4910d4
+
4910d4
+0+00 <power9>:
4910d4
+
4910d4
+.*:	(7d a3 04 74|74 04 a3 7d) 	cnttzd  r3,r13
4910d4
+.*:	(7d c4 04 75|75 04 c4 7d) 	cnttzd\. r4,r14
4910d4
+.*:	(7d e5 04 34|34 04 e5 7d) 	cnttzw  r5,r15
4910d4
+.*:	(7e 06 04 35|35 04 06 7e) 	cnttzw\. r6,r16
4910d4
+.*:	(7d 54 ae 12|12 ae 54 7d) 	modsd   r10,r20,r21
4910d4
+.*:	(7d 75 b6 16|16 b6 75 7d) 	modsw   r11,r21,r22
4910d4
+.*:	(7d 96 ba 12|12 ba 96 7d) 	modud   r12,r22,r23
4910d4
+.*:	(7d b7 c2 16|16 c2 b7 7d) 	moduw   r13,r23,r24
4910d4
+.*:	(10 67 25 81|81 25 67 10) 	bcdcfn\. v3,v4,0
4910d4
+.*:	(10 67 27 81|81 27 67 10) 	bcdcfn\. v3,v4,1
4910d4
+.*:	(10 82 2d 81|81 2d 82 10) 	bcdcfsq\. v4,v5,0
4910d4
+.*:	(10 82 2f 81|81 2f 82 10) 	bcdcfsq\. v4,v5,1
4910d4
+.*:	(10 a6 35 81|81 35 a6 10) 	bcdcfz\. v5,v6,0
4910d4
+.*:	(10 a6 37 81|81 37 a6 10) 	bcdcfz\. v5,v6,1
4910d4
+.*:	(10 c7 43 41|41 43 c7 10) 	bcdcpsgn\. v6,v7,v8
4910d4
+.*:	(10 e5 45 81|81 45 e5 10) 	bcdctn\. v7,v8
4910d4
+.*:	(11 00 4d 81|81 4d 00 11) 	bcdctsq\. v8,v9
4910d4
+.*:	(11 24 55 81|81 55 24 11) 	bcdctz\. v9,v10,0
4910d4
+.*:	(11 24 57 81|81 57 24 11) 	bcdctz\. v9,v10,1
4910d4
+.*:	(11 5f 5d 81|81 5d 5f 11) 	bcdsetsgn\. v10,v11,0
4910d4
+.*:	(11 5f 5f 81|81 5f 5f 11) 	bcdsetsgn\. v10,v11,1
4910d4
+.*:	(11 6c 6d c1|c1 6d 6c 11) 	bcdsr\.  v11,v12,v13,0
4910d4
+.*:	(11 6c 6f c1|c1 6f 6c 11) 	bcdsr\.  v11,v12,v13,1
4910d4
+.*:	(11 8d 74 c1|c1 74 8d 11) 	bcds\.   v12,v13,v14,0
4910d4
+.*:	(11 8d 76 c1|c1 76 8d 11) 	bcds\.   v12,v13,v14,1
4910d4
+.*:	(11 ae 7d 01|01 7d ae 11) 	bcdtrunc\. v13,v14,v15,0
4910d4
+.*:	(11 ae 7f 01|01 7f ae 11) 	bcdtrunc\. v13,v14,v15,1
4910d4
+.*:	(11 cf 84 81|81 84 cf 11) 	bcdus\.  v14,v15,v16
4910d4
+.*:	(11 f0 8d 41|41 8d f0 11) 	bcdutrunc\. v15,v16,v17
4910d4
+.*:	(7e 80 aa 5a|5a aa 80 7e) 	lxvll   vs20,0,r21
4910d4
+.*:	(7e 8a aa 5a|5a aa 8a 7e) 	lxvll   vs20,r10,r21
4910d4
+.*:	(7e a0 5b 5a|5a 5b a0 7e) 	stxvll  vs21,0,r11
4910d4
+.*:	(7e aa 5b 5a|5a 5b aa 7e) 	stxvll  vs21,r10,r11
4910d4
+.*:	(12 d7 00 01|01 00 d7 12) 	vmul10cuq v22,v23
4910d4
+.*:	(12 f8 c8 41|41 c8 f8 12) 	vmul10ecuq v23,v24,v25
4910d4
+.*:	(13 19 d2 41|41 d2 19 13) 	vmul10euq v24,v25,v26
4910d4
+.*:	(13 3a 02 01|01 02 3a 13) 	vmul10uq v25,v26
4910d4
+.*:	(fd 4b 60 08|08 60 4b fd) 	xsaddqp v10,v11,v12
4910d4
+.*:	(fd 6c 60 09|09 60 6c fd) 	xsaddqpo v11,v12,v12
4910d4
+.*:	(fe 80 f0 0a|0a f0 80 fe) 	xsrqpi  0,v20,v30,0
4910d4
+.*:	(fe 81 f0 0a|0a f0 81 fe) 	xsrqpi  1,v20,v30,0
4910d4
+.*:	(fe 80 f6 0a|0a f6 80 fe) 	xsrqpi  0,v20,v30,3
4910d4
+.*:	(fe 81 f6 0a|0a f6 81 fe) 	xsrqpi  1,v20,v30,3
4910d4
+.*:	(fe a0 f8 0b|0b f8 a0 fe) 	xsrqpix 0,v21,v31,0
4910d4
+.*:	(fe a1 f8 0b|0b f8 a1 fe) 	xsrqpix 1,v21,v31,0
4910d4
+.*:	(fe a0 fe 0b|0b fe a0 fe) 	xsrqpix 0,v21,v31,3
4910d4
+.*:	(fe a1 fe 0b|0b fe a1 fe) 	xsrqpix 1,v21,v31,3
4910d4
+.*:	(fd 8d 70 48|48 70 8d fd) 	xsmulqp v12,v13,v14
4910d4
+.*:	(fd ae 78 49|49 78 ae fd) 	xsmulqpo v13,v14,v15
4910d4
+.*:	(fe c0 b8 4a|4a b8 c0 fe) 	xsrqpxp 0,v22,v23,0
4910d4
+.*:	(fe c1 b8 4a|4a b8 c1 fe) 	xsrqpxp 1,v22,v23,0
4910d4
+.*:	(fe c0 be 4a|4a be c0 fe) 	xsrqpxp 0,v22,v23,3
4910d4
+.*:	(fe c1 be 4a|4a be c1 fe) 	xsrqpxp 1,v22,v23,3
4910d4
+.*:	(fd cf 80 c8|c8 80 cf fd) 	xscpsgnqp v14,v15,v16
4910d4
+.*:	(fc 0f 81 08|08 81 0f fc) 	xscmpoqp cr0,v15,v16
4910d4
+.*:	(ff 8f 81 08|08 81 8f ff) 	xscmpoqp cr7,v15,v16
4910d4
+.*:	(fc 10 89 48|48 89 10 fc) 	xscmpexpqp cr0,v16,v17
4910d4
+.*:	(ff 90 89 48|48 89 90 ff) 	xscmpexpqp cr7,v16,v17
4910d4
+.*:	(fe 32 9b 08|08 9b 32 fe) 	xsmaddqp v17,v18,v19
4910d4
+.*:	(fe 53 a3 09|09 a3 53 fe) 	xsmaddqpo v18,v19,v20
4910d4
+.*:	(fe 74 ab 48|48 ab 74 fe) 	xsmsubqp v19,v20,v21
4910d4
+.*:	(fe 95 b3 49|49 b3 95 fe) 	xsmsubqpo v20,v21,v22
4910d4
+.*:	(fe b6 bb 88|88 bb b6 fe) 	xsnmaddqp v21,v22,v23
4910d4
+.*:	(fe d7 c3 89|89 c3 d7 fe) 	xsnmaddqpo v22,v23,v24
4910d4
+.*:	(fe f8 cb c8|c8 cb f8 fe) 	xsnmsubqp v23,v24,v25
4910d4
+.*:	(ff 19 d3 c9|c9 d3 19 ff) 	xsnmsubqpo v24,v25,v26
4910d4
+.*:	(ff 3a dc 08|08 dc 3a ff) 	xssubqp v25,v26,v27
4910d4
+.*:	(ff 5b e4 09|09 e4 5b ff) 	xssubqpo v26,v27,v28
4910d4
+.*:	(ff 7c ec 48|48 ec 7c ff) 	xsdivqp v27,v28,v29
4910d4
+.*:	(ff 9d f4 49|49 f4 9d ff) 	xsdivqpo v28,v29,v30
4910d4
+.*:	(fc 1d f5 08|08 f5 1d fc) 	xscmpuqp cr0,v29,v30
4910d4
+.*:	(ff 9d f5 08|08 f5 9d ff) 	xscmpuqp cr7,v29,v30
4910d4
+.*:	(fc 00 f5 88|88 f5 00 fc) 	xststdcqp cr0,v30,0
4910d4
+.*:	(ff 80 f5 88|88 f5 80 ff) 	xststdcqp cr7,v30,0
4910d4
+.*:	(fc 7f fd 88|88 fd 7f fc) 	xststdcqp cr0,v31,127
4910d4
+.*:	(ff ff fd 88|88 fd ff ff) 	xststdcqp cr7,v31,127
4910d4
+.*:	(fd 40 5e 48|48 5e 40 fd) 	xsabsqp v10,v11
4910d4
+.*:	(fd 62 66 48|48 66 62 fd) 	xsxexpqp v11,v12
4910d4
+.*:	(fd 88 6e 48|48 6e 88 fd) 	xsnabsqp v12,v13
4910d4
+.*:	(fd b0 76 48|48 76 b0 fd) 	xsnegqp v13,v14
4910d4
+.*:	(fd d2 7e 48|48 7e d2 fd) 	xsxsigqp v14,v15
4910d4
+.*:	(fd fb 86 48|48 86 fb fd) 	xssqrtqp v15,v16
4910d4
+.*:	(fe 1b 8e 49|49 8e 1b fe) 	xssqrtqpo v16,v17
4910d4
+.*:	(fe 21 96 88|88 96 21 fe) 	xscvqpuwz v17,v18
4910d4
+.*:	(fe 42 9e 88|88 9e 42 fe) 	xscvudqp v18,v19
4910d4
+.*:	(fe 69 a6 88|88 a6 69 fe) 	xscvqpswz v19,v20
4910d4
+.*:	(fe 8a ae 88|88 ae 8a fe) 	xscvsdqp v20,v21
4910d4
+.*:	(fe b1 b6 88|88 b6 b1 fe) 	xscvqpudz v21,v22
4910d4
+.*:	(fe d4 be 88|88 be d4 fe) 	xscvqpdp v22,v23
4910d4
+.*:	(fe f4 c6 89|89 c6 f4 fe) 	xscvqpdpo v23,v24
4910d4
+.*:	(ff 16 ce 88|88 ce 16 ff) 	xscvdpqp v24,v25
4910d4
+.*:	(ff 39 d6 88|88 d6 39 ff) 	xscvqpsdz v25,v26
4910d4
+.*:	(ff 5b e6 c8|c8 e6 5b ff) 	xsiexpqp v26,v27,v28
4910d4
+.*:	(10 85 31 fb|fb 31 85 10) 	vpermr  v4,v5,v6,v7
4910d4
+.*:	(10 a0 32 0d|0d 32 a0 10) 	vextractub v5,v6,0
4910d4
+.*:	(10 af 32 0d|0d 32 af 10) 	vextractub v5,v6,15
4910d4
+.*:	(10 c0 3a 4d|4d 3a c0 10) 	vextractuh v6,v7,0
4910d4
+.*:	(10 cf 3a 4d|4d 3a cf 10) 	vextractuh v6,v7,15
4910d4
+.*:	(10 e0 42 8d|8d 42 e0 10) 	vextractuw v7,v8,0
4910d4
+.*:	(10 ef 42 8d|8d 42 ef 10) 	vextractuw v7,v8,15
4910d4
+.*:	(11 00 4a cd|cd 4a 00 11) 	vextractd v8,v9,0
4910d4
+.*:	(11 0f 4a cd|cd 4a 0f 11) 	vextractd v8,v9,15
4910d4
+.*:	(11 20 53 0d|0d 53 20 11) 	vinsertb v9,v10,0
4910d4
+.*:	(11 2f 53 0d|0d 53 2f 11) 	vinsertb v9,v10,15
4910d4
+.*:	(11 40 5b 4d|4d 5b 40 11) 	vinserth v10,v11,0
4910d4
+.*:	(11 4f 5b 4d|4d 5b 4f 11) 	vinserth v10,v11,15
4910d4
+.*:	(11 60 63 8d|8d 63 60 11) 	vinsertw v11,v12,0
4910d4
+.*:	(11 6f 63 8d|8d 63 6f 11) 	vinsertw v11,v12,15
4910d4
+.*:	(11 80 6b cd|cd 6b 80 11) 	vinsertd v12,v13,0
4910d4
+.*:	(11 8f 6b cd|cd 6b 8f 11) 	vinsertd v12,v13,15
4910d4
+.*:	(7d b4 02 67|67 02 b4 7d) 	mfvsrld r20,vs45
4910d4
+.*:	(7d d5 03 27|27 03 d5 7d) 	mtvsrws vs46,r21
4910d4
+.*:	(7d e0 bb 67|67 bb e0 7d) 	mtvsrdd vs47,0,r23
4910d4
+.*:	(7d f6 bb 67|67 bb f6 7d) 	mtvsrdd vs47,r22,r23
4910d4
+.*:	(7e 40 5a 19|19 5a 40 7e) 	lxvx    vs50,0,r11
4910d4
+.*:	(7c 0a 5a 18|18 5a 0a 7c) 	lxvx    vs0,r10,r11
4910d4
+.*:	(7e 60 62 d9|d9 62 60 7e) 	lxvwsx  vs51,0,r12
4910d4
+.*:	(7c 2a 62 d8|d8 62 2a 7c) 	lxvwsx  vs1,r10,r12
4910d4
+.*:	(7e 80 6e 59|59 6e 80 7e) 	lxvh8x  vs52,0,r13
4910d4
+.*:	(7c 4a 6e 58|58 6e 4a 7c) 	lxvh8x  vs2,r10,r13
4910d4
+.*:	(7e a0 76 d9|d9 76 a0 7e) 	lxvb16x vs53,0,r14
4910d4
+.*:	(7c 6a 76 d8|d8 76 6a 7c) 	lxvb16x vs3,r10,r14
4910d4
+.*:	(7e c0 7b 19|19 7b c0 7e) 	stxvx   vs54,0,r15
4910d4
+.*:	(7c 94 7b 18|18 7b 94 7c) 	stxvx   vs4,r20,r15
4910d4
+.*:	(7e e0 87 59|59 87 e0 7e) 	stxvh8x vs55,0,r16
4910d4
+.*:	(7c b4 87 58|58 87 b4 7c) 	stxvh8x vs5,r20,r16
4910d4
+.*:	(7f 00 8f d9|d9 8f 00 7f) 	stxvb16x vs56,0,r17
4910d4
+.*:	(7c d4 8f d8|d8 8f d4 7c) 	stxvb16x vs6,r20,r17
4910d4
+.*:	(f0 80 2a 94|94 2a 80 f0) 	xxextractuw vs4,vs5,0
4910d4
+.*:	(f1 0f 92 97|97 92 0f f1) 	xxextractuw vs40,vs50,15
4910d4
+.*:	(f0 80 02 d0|d0 02 80 f0) 	xxspltib vs4,0
4910d4
+.*:	(f0 84 02 d0|d0 02 84 f0) 	xxspltib vs4,128
4910d4
+.*:	(f1 27 fa d1|d1 fa 27 f1) 	xxspltib vs41,255
4910d4
+.*:	(f1 27 fa d1|d1 fa 27 f1) 	xxspltib vs41,255
4910d4
+.*:	(f0 a0 32 d4|d4 32 a0 f0) 	xxinsertw vs5,vs6,0
4910d4
+.*:	(f2 4f e2 d7|d7 e2 4f f2) 	xxinsertw vs50,vs60,15
4910d4
+.*:	(f0 c7 3f 6c|6c 3f c7 f0) 	xxbrh   vs6,vs7
4910d4
+.*:	(f3 07 cf 6f|6f cf 07 f3) 	xxbrh   vs56,vs57
4910d4
+.*:	(f0 ef 47 6c|6c 47 ef f0) 	xxbrw   vs7,vs8
4910d4
+.*:	(f3 2f d7 6f|6f d7 2f f3) 	xxbrw   vs57,vs58
4910d4
+.*:	(f1 17 4f 6c|6c 4f 17 f1) 	xxbrd   vs8,vs9
4910d4
+.*:	(f3 57 df 6f|6f df 57 f3) 	xxbrd   vs58,vs59
4910d4
+.*:	(f1 3f 57 6c|6c 57 3f f1) 	xxbrq   vs9,vs10
4910d4
+.*:	(f3 7f e7 6f|6f e7 7f f3) 	xxbrq   vs59,vs60
4910d4
+.*:	(e6 80 00 02|02 00 80 e6) 	lxsd    v20,0\(0\)
4910d4
+.*:	(e6 8a 00 02|02 00 8a e6) 	lxsd    v20,0\(r10\)
4910d4
+.*:	(e6 80 00 0a|0a 00 80 e6) 	lxsd    v20,8\(0\)
4910d4
+.*:	(e6 8a 00 0a|0a 00 8a e6) 	lxsd    v20,8\(r10\)
4910d4
+.*:	(e6 80 ff fa|fa ff 80 e6) 	lxsd    v20,-8\(0\)
4910d4
+.*:	(e6 8a ff fa|fa ff 8a e6) 	lxsd    v20,-8\(r10\)
4910d4
+.*:	(e6 80 7f fe|fe 7f 80 e6) 	lxsd    v20,32764\(0\)
4910d4
+.*:	(e6 8a 7f fe|fe 7f 8a e6) 	lxsd    v20,32764\(r10\)
4910d4
+.*:	(e6 80 80 02|02 80 80 e6) 	lxsd    v20,-32768\(0\)
4910d4
+.*:	(e6 8a 80 02|02 80 8a e6) 	lxsd    v20,-32768\(r10\)
4910d4
+.*:	(e7 c0 00 03|03 00 c0 e7) 	lxssp   v30,0\(0\)
4910d4
+.*:	(e7 cb 00 03|03 00 cb e7) 	lxssp   v30,0\(r11\)
4910d4
+.*:	(e7 c0 00 0b|0b 00 c0 e7) 	lxssp   v30,8\(0\)
4910d4
+.*:	(e7 cb 00 0b|0b 00 cb e7) 	lxssp   v30,8\(r11\)
4910d4
+.*:	(e7 c0 ff fb|fb ff c0 e7) 	lxssp   v30,-8\(0\)
4910d4
+.*:	(e7 cb ff fb|fb ff cb e7) 	lxssp   v30,-8\(r11\)
4910d4
+.*:	(e7 c0 7f ff|ff 7f c0 e7) 	lxssp   v30,32764\(0\)
4910d4
+.*:	(e7 cb 7f ff|ff 7f cb e7) 	lxssp   v30,32764\(r11\)
4910d4
+.*:	(e7 c0 80 03|03 80 c0 e7) 	lxssp   v30,-32768\(0\)
4910d4
+.*:	(e7 cb 80 03|03 80 cb e7) 	lxssp   v30,-32768\(r11\)
4910d4
+.*:	(f5 00 00 09|09 00 00 f5) 	lxv     vs40,0\(0\)
4910d4
+.*:	(f5 0c 00 09|09 00 0c f5) 	lxv     vs40,0\(r12\)
4910d4
+.*:	(f5 00 00 19|19 00 00 f5) 	lxv     vs40,16\(0\)
4910d4
+.*:	(f5 0c 00 19|19 00 0c f5) 	lxv     vs40,16\(r12\)
4910d4
+.*:	(f5 00 ff f9|f9 ff 00 f5) 	lxv     vs40,-16\(0\)
4910d4
+.*:	(f5 4c ff f1|f1 ff 4c f5) 	lxv     vs10,-16\(r12\)
4910d4
+.*:	(f5 40 7f f1|f1 7f 40 f5) 	lxv     vs10,32752\(0\)
4910d4
+.*:	(f5 4c 7f f1|f1 7f 4c f5) 	lxv     vs10,32752\(r12\)
4910d4
+.*:	(f5 40 80 01|01 80 40 f5) 	lxv     vs10,-32768\(0\)
4910d4
+.*:	(f5 4c 80 01|01 80 4c f5) 	lxv     vs10,-32768\(r12\)
4910d4
+.*:	(f6 a0 00 02|02 00 a0 f6) 	stxsd   v21,0\(0\)
4910d4
+.*:	(f6 aa 00 02|02 00 aa f6) 	stxsd   v21,0\(r10\)
4910d4
+.*:	(f6 a0 00 0a|0a 00 a0 f6) 	stxsd   v21,8\(0\)
4910d4
+.*:	(f6 aa 00 0a|0a 00 aa f6) 	stxsd   v21,8\(r10\)
4910d4
+.*:	(f6 a0 ff fa|fa ff a0 f6) 	stxsd   v21,-8\(0\)
4910d4
+.*:	(f6 aa ff fa|fa ff aa f6) 	stxsd   v21,-8\(r10\)
4910d4
+.*:	(f6 a0 7f fe|fe 7f a0 f6) 	stxsd   v21,32764\(0\)
4910d4
+.*:	(f6 aa 7f fe|fe 7f aa f6) 	stxsd   v21,32764\(r10\)
4910d4
+.*:	(f6 a0 80 02|02 80 a0 f6) 	stxsd   v21,-32768\(0\)
4910d4
+.*:	(f6 aa 80 02|02 80 aa f6) 	stxsd   v21,-32768\(r10\)
4910d4
+.*:	(f7 e0 00 03|03 00 e0 f7) 	stxssp  v31,0\(0\)
4910d4
+.*:	(f7 eb 00 03|03 00 eb f7) 	stxssp  v31,0\(r11\)
4910d4
+.*:	(f7 e0 00 0b|0b 00 e0 f7) 	stxssp  v31,8\(0\)
4910d4
+.*:	(f7 eb 00 0b|0b 00 eb f7) 	stxssp  v31,8\(r11\)
4910d4
+.*:	(f7 e0 ff fb|fb ff e0 f7) 	stxssp  v31,-8\(0\)
4910d4
+.*:	(f7 eb ff fb|fb ff eb f7) 	stxssp  v31,-8\(r11\)
4910d4
+.*:	(f7 e0 7f ff|ff 7f e0 f7) 	stxssp  v31,32764\(0\)
4910d4
+.*:	(f7 eb 7f ff|ff 7f eb f7) 	stxssp  v31,32764\(r11\)
4910d4
+.*:	(f7 e0 80 03|03 80 e0 f7) 	stxssp  v31,-32768\(0\)
4910d4
+.*:	(f7 eb 80 03|03 80 eb f7) 	stxssp  v31,-32768\(r11\)
4910d4
+.*:	(f5 20 00 0d|0d 00 20 f5) 	stxv    vs41,0\(0\)
4910d4
+.*:	(f5 2c 00 0d|0d 00 2c f5) 	stxv    vs41,0\(r12\)
4910d4
+.*:	(f5 20 00 1d|1d 00 20 f5) 	stxv    vs41,16\(0\)
4910d4
+.*:	(f5 2c 00 1d|1d 00 2c f5) 	stxv    vs41,16\(r12\)
4910d4
+.*:	(f5 20 ff fd|fd ff 20 f5) 	stxv    vs41,-16\(0\)
4910d4
+.*:	(f5 6c ff f5|f5 ff 6c f5) 	stxv    vs11,-16\(r12\)
4910d4
+.*:	(f5 60 7f f5|f5 7f 60 f5) 	stxv    vs11,32752\(0\)
4910d4
+.*:	(f5 6c 7f f5|f5 7f 6c f5) 	stxv    vs11,32752\(r12\)
4910d4
+.*:	(f5 60 80 05|05 80 60 f5) 	stxv    vs11,-32768\(0\)
4910d4
+.*:	(f5 6c 80 05|05 80 6c f5) 	stxv    vs11,-32768\(r12\)
4910d4
+.*:	(f2 96 c0 d0|d0 c0 96 f2) 	xxperm  vs20,vs22,vs24
4910d4
+.*:	(f1 0a 60 d7|d7 60 0a f1) 	xxperm  vs40,vs42,vs44
4910d4
+.*:	(f2 b7 c9 d0|d0 c9 b7 f2) 	xxpermr vs21,vs23,vs25
4910d4
+.*:	(f1 2b 69 d7|d7 69 2b f1) 	xxpermr vs41,vs43,vs45
4910d4
+.*:	(7e 8c 06 f4|f4 06 8c 7e) 	extswsli r12,r20,0
4910d4
+.*:	(7e 8c 0e f4|f4 0e 8c 7e) 	extswsli r12,r20,1
4910d4
+.*:	(7e 8c fe f6|f6 fe 8c 7e) 	extswsli r12,r20,63
4910d4
+.*:	(7e ad 06 f5|f5 06 ad 7e) 	extswsli\. r13,r21,0
4910d4
+.*:	(7e ad 0e f5|f5 0e ad 7e) 	extswsli\. r13,r21,1
4910d4
+.*:	(7e ad fe f7|f7 fe ad 7e) 	extswsli\. r13,r21,63
4910d4
+.*:	(11 d6 b8 85|85 b8 d6 11) 	vrlwmi  v14,v22,v23
4910d4
+.*:	(11 f7 c0 c5|c5 c0 f7 11) 	vrldmi  v15,v23,v24
4910d4
+.*:	(12 18 c9 85|85 c9 18 12) 	vrlwnm  v16,v24,v25
4910d4
+.*:	(12 39 d1 c5|c5 d1 39 12) 	vrldnm  v17,v25,v26
4910d4
+.*:	(12 5a dd cc|cc dd 5a 12) 	vbpermd v18,v26,v27
4910d4
+.*:	(12 66 a6 02|02 a6 66 12) 	vnegw   v19,v20
4910d4
+.*:	(12 87 ae 02|02 ae 87 12) 	vnegd   v20,v21
4910d4
+.*:	(12 a8 b6 02|02 b6 a8 12) 	vprtybw v21,v22
4910d4
+.*:	(12 c9 be 02|02 be c9 12) 	vprtybd v22,v23
4910d4
+.*:	(12 ea c6 02|02 c6 ea 12) 	vprtybq v23,v24
4910d4
+.*:	(13 10 ce 02|02 ce 10 13) 	vextsb2w v24,v25
4910d4
+.*:	(13 31 d6 02|02 d6 31 13) 	vextsh2w v25,v26
4910d4
+.*:	(13 58 de 02|02 de 58 13) 	vextsb2d v26,v27
4910d4
+.*:	(13 79 e6 02|02 e6 79 13) 	vextsh2d v27,v28
4910d4
+.*:	(13 9a ee 02|02 ee 9a 13) 	vextsw2d v28,v29
4910d4
+.*:	(13 bc f6 02|02 f6 bc 13) 	vctzb   v29,v30
4910d4
+.*:	(13 dd fe 02|02 fe dd 13) 	vctzh   v30,v31
4910d4
+.*:	(13 fe f6 02|02 f6 fe 13) 	vctzw   v31,v30
4910d4
+.*:	(13 df ee 02|02 ee df 13) 	vctzd   v30,v29
4910d4
+.*:	(7d 40 a6 1a|1a a6 40 7d) 	lxsibzx vs10,0,r20
4910d4
+.*:	(7e 4a a6 1b|1b a6 4a 7e) 	lxsibzx vs50,r10,r20
4910d4
+.*:	(7d 60 ae 5a|5a ae 60 7d) 	lxsihzx vs11,0,r21
4910d4
+.*:	(7e 6b ae 5b|5b ae 6b 7e) 	lxsihzx vs51,r11,r21
4910d4
+.*:	(7d 80 b7 1a|1a b7 80 7d) 	stxsibx vs12,0,r22
4910d4
+.*:	(7e 8c b7 1b|1b b7 8c 7e) 	stxsibx vs52,r12,r22
4910d4
+.*:	(7d a0 bf 5a|5a bf a0 7d) 	stxsihx vs13,0,r23
4910d4
+.*:	(7e ad bf 5b|5b bf ad 7e) 	stxsihx vs53,r13,r23
4910d4
+.*:	(11 4b 63 70|70 63 4b 11) 	maddhd  r10,r11,r12,r13
4910d4
+.*:	(12 95 b5 f1|f1 b5 95 12) 	maddhdu r20,r21,r22,r23
4910d4
+.*:	(10 43 21 73|73 21 43 10) 	maddld  r2,r3,r4,r5
4910d4
+.*:	(f0 0a a1 d8|d8 a1 0a f0) 	xscmpexpdp cr0,vs10,vs20
4910d4
+.*:	(f3 88 91 de|de 91 88 f3) 	xscmpexpdp cr7,vs40,vs50
4910d4
+.*:	(f1 2b af 2d|2d af 2b f1) 	xsiexpdp vs41,r11,r21
4910d4
+.*:	(f0 7f 5d a8|a8 5d 7f f0) 	xststdcdp cr0,vs11,127
4910d4
+.*:	(f3 ff 4d aa|aa 4d ff f3) 	xststdcdp cr7,vs41,127
4910d4
+.*:	(f0 7f 5c a8|a8 5c 7f f0) 	xststdcsp cr0,vs11,127
4910d4
+.*:	(f3 ff 4c aa|aa 4c ff f3) 	xststdcsp cr7,vs41,127
4910d4
+.*:	(f1 a0 5d 6e|6e 5d a0 f1) 	xsxexpdp r13,vs43
4910d4
+.*:	(f1 c1 65 6e|6e 65 c1 f1) 	xsxsigdp r14,vs44
4910d4
+.*:	(f1 ae 7f c7|c7 7f ae f1) 	xviexpdp vs45,vs46,vs47
4910d4
+.*:	(f1 cf 86 c7|c7 86 cf f1) 	xviexpsp vs46,vs47,vs48
4910d4
+.*:	(f2 c0 bf ab|ab bf c0 f2) 	xvtstdcdp vs54,vs55,0
4910d4
+.*:	(f2 df bf ef|ef bf df f2) 	xvtstdcdp vs54,vs55,127
4910d4
+.*:	(f2 e0 c6 ab|ab c6 e0 f2) 	xvtstdcsp vs55,vs56,0
4910d4
+.*:	(f2 ff c6 ef|ef c6 ff f2) 	xvtstdcsp vs55,vs56,127
4910d4
+.*:	(f3 20 d7 6f|6f d7 20 f3) 	xvxexpdp vs57,vs58
4910d4
+.*:	(f3 48 df 6f|6f df 48 f3) 	xvxexpsp vs58,vs59
4910d4
+.*:	(f3 61 e7 6f|6f e7 61 f3) 	xvxsigdp vs59,vs60
4910d4
+.*:	(f3 89 ef 6f|6f ef 89 f3) 	xvxsigsp vs60,vs61
4910d4
+.*:	(7c 06 39 c0|c0 39 06 7c) 	cmpeqb  cr0,r6,r7
4910d4
+.*:	(7f 86 39 c0|c0 39 86 7f) 	cmpeqb  cr7,r6,r7
4910d4
+.*:	(7c 08 49 80|80 49 08 7c) 	cmprb   cr0,r8,r9
4910d4
+.*:	(7f 88 49 80|80 49 88 7f) 	cmprb   cr7,r8,r9
4910d4
+.*:	(7c 28 49 80|80 49 28 7c) 	cmprb   cr0,1,r8,r9
4910d4
+.*:	(7f a8 49 80|80 49 a8 7f) 	cmprb   cr7,1,r8,r9
4910d4
+.*:	(7d e0 01 00|00 01 e0 7d) 	setb    r15,cr0
4910d4
+.*:	(7d fc 01 00|00 01 fc 7d) 	setb    r15,cr7
4910d4
+.*:	(7f 40 52 1a|1a 52 40 7f) 	lxvl    vs26,0,r10
4910d4
+.*:	(7f 14 52 1b|1b 52 14 7f) 	lxvl    vs56,r20,r10
4910d4
+.*:	(7f 60 5b 1a|1a 5b 60 7f) 	stxvl   vs27,0,r11
4910d4
+.*:	(7f 35 5b 1b|1b 5b 35 7f) 	stxvl   vs57,r21,r11
4910d4
+.*:	(12 80 f6 02|02 f6 80 12) 	vclzlsbb r20,v30
4910d4
+.*:	(12 a1 fe 02|02 fe a1 12) 	vctzlsbb r21,v31
4910d4
+.*:	(11 4b 60 07|07 60 4b 11) 	vcmpneb v10,v11,v12
4910d4
+.*:	(12 95 b4 07|07 b4 95 12) 	vcmpneb\. v20,v21,v22
4910d4
+.*:	(11 6c 68 47|47 68 6c 11) 	vcmpneh v11,v12,v13
4910d4
+.*:	(12 b6 bc 47|47 bc b6 12) 	vcmpneh\. v21,v22,v23
4910d4
+.*:	(11 8d 70 87|87 70 8d 11) 	vcmpnew v12,v13,v14
4910d4
+.*:	(12 d7 c4 87|87 c4 d7 12) 	vcmpnew\. v22,v23,v24
4910d4
+.*:	(11 ae 79 07|07 79 ae 11) 	vcmpnezb v13,v14,v15
4910d4
+.*:	(12 f8 cd 07|07 cd f8 12) 	vcmpnezb\. v23,v24,v25
4910d4
+.*:	(11 cf 81 47|47 81 cf 11) 	vcmpnezh v14,v15,v16
4910d4
+.*:	(13 19 d5 47|47 d5 19 13) 	vcmpnezh\. v24,v25,v26
4910d4
+.*:	(11 f0 89 87|87 89 f0 11) 	vcmpnezw v15,v16,v17
4910d4
+.*:	(13 3a dd 87|87 dd 3a 13) 	vcmpnezw\. v25,v26,v27
4910d4
+.*:	(12 11 56 0d|0d 56 11 12) 	vextublx r16,r17,v10
4910d4
+.*:	(12 32 5f 0d|0d 5f 32 12) 	vextubrx r17,r18,v11
4910d4
+.*:	(12 53 66 4d|4d 66 53 12) 	vextuhlx r18,r19,v12
4910d4
+.*:	(12 74 6f 4d|4d 6f 74 12) 	vextuhrx r19,r20,v13
4910d4
+.*:	(12 95 76 8d|8d 76 95 12) 	vextuwlx r20,r21,v14
4910d4
+.*:	(12 b6 7f 8d|8d 7f b6 12) 	vextuwrx r21,r22,v15
4910d4
+.*:	(ec 00 1d 46|46 1d 00 ec) 	dtstsfi cr0,0,f3
4910d4
+.*:	(ef bf 1d 46|46 1d bf ef) 	dtstsfi cr7,63,f3
4910d4
+.*:	(fc 00 25 46|46 25 00 fc) 	dtstsfiq cr0,0,f4
4910d4
+.*:	(ff bf 25 46|46 25 bf ff) 	dtstsfiq cr7,63,f4
4910d4
+.*:	(f1 10 95 6f|6f 95 10 f1) 	xscvhpdp vs40,vs50
4910d4
+.*:	(f1 31 9d 6f|6f 9d 31 f1) 	xscvdphp vs41,vs51
4910d4
+.*:	(f1 58 a7 6f|6f a7 58 f1) 	xvcvhpsp vs42,vs52
4910d4
+.*:	(f1 79 af 6f|6f af 79 f1) 	xvcvsphp vs43,vs53
4910d4
+.*:	(4c 60 00 04|04 00 60 4c) 	addpcis r3,0
4910d4
+.*:	(4c 60 00 04|04 00 60 4c) 	addpcis r3,0
4910d4
+.*:	(4c 80 00 05|05 00 80 4c) 	addpcis r4,1
4910d4
+.*:	(4c 80 00 05|05 00 80 4c) 	addpcis r4,1
4910d4
+.*:	(4c bf ff c4|c4 ff bf 4c) 	addpcis r5,-2
4910d4
+.*:	(4c bf ff c4|c4 ff bf 4c) 	addpcis r5,-2
4910d4
+.*:	(4c df 7f c5|c5 7f df 4c) 	addpcis r6,32767
4910d4
+.*:	(4c df 7f c5|c5 7f df 4c) 	addpcis r6,32767
4910d4
+.*:	(4c e0 80 04|04 80 e0 4c) 	addpcis r7,-32768
4910d4
+.*:	(4c e0 80 04|04 80 e0 4c) 	addpcis r7,-32768
4910d4
+.*:	(7c 00 02 a4|a4 02 00 7c) 	slbsync
4910d4
+.*:	(7d 40 5b a4|a4 5b 40 7d) 	slbieg  r10,r11
4910d4
+.*:	(7c 60 27 26|26 27 60 7c) 	slbmfee r3,r4
4910d4
+.*:	(7c 60 27 26|26 27 60 7c) 	slbmfee r3,r4
4910d4
+.*:	(7c 61 27 26|26 27 61 7c) 	slbmfee r3,r4,1
4910d4
+.*:	(7c 80 2e a6|a6 2e 80 7c) 	slbmfev r4,r5
4910d4
+.*:	(7c 80 2e a6|a6 2e 80 7c) 	slbmfev r4,r5
4910d4
+.*:	(7c 81 2e a6|a6 2e 81 7c) 	slbmfev r4,r5,1
4910d4
+.*:	(7c 80 1a 64|64 1a 80 7c) 	tlbie   r3,r4
4910d4
+.*:	(7c 80 1a 64|64 1a 80 7c) 	tlbie   r3,r4
4910d4
+.*:	(7c 8f 1a 64|64 1a 8f 7c) 	tlbie   r3,r4,3,1,1
4910d4
+.*:	(7c 00 1a 24|24 1a 00 7c) 	tlbiel  r3
4910d4
+.*:	(7c 00 1a 24|24 1a 00 7c) 	tlbiel  r3
4910d4
+.*:	(7c 8f 1a 24|24 1a 8f 7c) 	tlbiel  r3,r4,3,1,1
4910d4
+.*:	(7c 0c 6e 0c|0c 6e 0c 7c) 	copy    r12,r13
4910d4
+.*:	(7c 2c 6e 0c|0c 6e 2c 7c) 	copy_first r12,r13
4910d4
+.*:	(7c 2c 6e 0c|0c 6e 2c 7c) 	copy_first r12,r13
4910d4
+.*:	(7c 0a 5f 0c|0c 5f 0a 7c) 	paste   r10,r11
4910d4
+.*:	(7c 0a 5f 0c|0c 5f 0a 7c) 	paste   r10,r11
4910d4
+.*:	(7c 2a 5f 0d|0d 5f 2a 7c) 	paste_last r10,r11
4910d4
+.*:	(7c 2a 5f 0d|0d 5f 2a 7c) 	paste_last r10,r11
4910d4
+.*:	(7c 00 06 8c|8c 06 00 7c) 	cp_abort
4910d4
+.*:	(7c 00 04 ac|ac 04 00 7c) 	hwsync
4910d4
+.*:	(7c 00 04 ac|ac 04 00 7c) 	hwsync
4910d4
+.*:	(7c 00 04 ac|ac 04 00 7c) 	hwsync
4910d4
+.*:	(7c 20 04 ac|ac 04 20 7c) 	lwsync
4910d4
+.*:	(7c 20 04 ac|ac 04 20 7c) 	lwsync
4910d4
+.*:	(7c 40 04 ac|ac 04 40 7c) 	ptesync
4910d4
+.*:	(7c 40 04 ac|ac 04 40 7c) 	ptesync
4910d4
+.*:	(7c 07 04 ac|ac 04 07 7c) 	sync    0,7
4910d4
+.*:	(7c 28 04 ac|ac 04 28 7c) 	sync    1,8
4910d4
+.*:	(7e 80 04 cc|cc 04 80 7e) 	ldat    r20,0,0
4910d4
+.*:	(7e 8a e4 cc|cc e4 8a 7e) 	ldat    r20,r10,28
4910d4
+.*:	(7e a0 04 8c|8c 04 a0 7e) 	lwat    r21,0,0
4910d4
+.*:	(7e ab e4 8c|8c e4 ab 7e) 	lwat    r21,r11,28
4910d4
+.*:	(7e c0 05 cc|cc 05 c0 7e) 	stdat   r22,0,0
4910d4
+.*:	(7e cc e5 cc|cc e5 cc 7e) 	stdat   r22,r12,28
4910d4
+.*:	(7e e0 05 8c|8c 05 e0 7e) 	stwat   r23,0,0
4910d4
+.*:	(7e ed e5 8c|8c e5 ed 7e) 	stwat   r23,r13,28
4910d4
+.*:	(4c 00 02 64|64 02 00 4c) 	urfid
4910d4
+.*:	(7c 00 f6 e4|e4 f6 00 7c) 	rmieg   r30
4910d4
+.*:	(7d 40 7a 6a|6a 7a 40 7d) 	ldmx    r10,0,r15
4910d4
+.*:	(7d 43 7a 6a|6a 7a 43 7d) 	ldmx    r10,r3,r15
4910d4
+.*:	(4c 00 02 e4|e4 02 00 4c) 	stop
4910d4
+.*:	(7c 00 00 3c|3c 00 00 7c) 	wait    
4910d4
+.*:	(7c 00 00 3c|3c 00 00 7c) 	wait    
4910d4
+.*:	(7c 60 05 e6|e6 05 60 7c) 	darn    r3,0
4910d4
+.*:	(7c 61 05 e6|e6 05 61 7c) 	darn    r3,1
4910d4
+.*:	(7c 62 05 e6|e6 05 62 7c) 	darn    r3,2
4910d4
+.*:	(7c 00 04 80|80 04 00 7c) 	mcrxrx  cr0
4910d4
+.*:	(7f 80 04 80|80 04 80 7f) 	mcrxrx  cr7
4910d4
+.*:	(12 95 b7 44|44 b7 95 12) 	vslv    v20,v21,v22
4910d4
+.*:	(12 f8 cf 04|04 cf f8 12) 	vsrv    v23,v24,v25
4910d4
+.*:	(7c 00 06 ec|ec 06 00 7c) 	msgsync
4910d4
+.*:	(f3 c8 90 1e|1e 90 c8 f3) 	xscmpeqdp vs30,vs40,vs50
4910d4
+.*:	(f3 e9 98 5e|5e 98 e9 f3) 	xscmpgtdp vs31,vs41,vs51
4910d4
+.*:	(f0 0a a0 9f|9f a0 0a f0) 	xscmpgedp vs32,vs42,vs52
4910d4
+.*:	(f0 4c b4 47|47 b4 4c f0) 	xsmincdp vs34,vs44,vs54
4910d4
+.*:	(f0 6d bc 07|07 bc 6d f0) 	xsmaxcdp vs35,vs45,vs55
4910d4
+.*:	(f0 8e c4 c7|c7 c4 8e f0) 	xsminjdp vs36,vs46,vs56
4910d4
+.*:	(f0 af cc 87|87 cc af f0) 	xsmaxjdp vs37,vs47,vs57
4910d4
+#pass
4910d4
--- /dev/null	2016-05-23 09:42:50.354737742 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/power9.s	2016-05-23 12:43:22.791946574 +0100
4910d4
@@ -0,0 +1,376 @@
4910d4
+	.text
4910d4
+power9:
4910d4
+	cnttzd      3,13
4910d4
+	cnttzd.     4,14
4910d4
+	cnttzw      5,15
4910d4
+	cnttzw.     6,16
4910d4
+	modsd       10,20,21
4910d4
+	modsw       11,21,22
4910d4
+	modud       12,22,23
4910d4
+	moduw       13,23,24
4910d4
+	bcdcfn.     3,4,0
4910d4
+	bcdcfn.     3,4,1
4910d4
+	bcdcfsq.    4,5,0
4910d4
+	bcdcfsq.    4,5,1
4910d4
+	bcdcfz.     5,6,0
4910d4
+	bcdcfz.     5,6,1
4910d4
+	bcdcpsgn.   6,7,8
4910d4
+	bcdctn.     7,8
4910d4
+	bcdctsq.    8,9
4910d4
+	bcdctz.     9,10,0
4910d4
+	bcdctz.     9,10,1
4910d4
+	bcdsetsgn.  10,11,0
4910d4
+	bcdsetsgn.  10,11,1
4910d4
+	bcdsr.      11,12,13,0
4910d4
+	bcdsr.      11,12,13,1
4910d4
+	bcds.       12,13,14,0
4910d4
+	bcds.       12,13,14,1
4910d4
+	bcdtrunc.   13,14,15,0
4910d4
+	bcdtrunc.   13,14,15,1
4910d4
+	bcdus.      14,15,16
4910d4
+	bcdutrunc.  15,16,17
4910d4
+	lxvll       20,0,21
4910d4
+	lxvll       20,10,21
4910d4
+	stxvll      21,0,11
4910d4
+	stxvll      21,10,11
4910d4
+	vmul10cuq   22,23
4910d4
+	vmul10ecuq  23,24,25
4910d4
+	vmul10euq   24,25,26
4910d4
+	vmul10uq    25,26
4910d4
+	xsaddqp     10,11,12
4910d4
+	xsaddqpo    11,12,12
4910d4
+	xsrqpi      0,20,30,0
4910d4
+	xsrqpi      1,20,30,0
4910d4
+	xsrqpi      0,20,30,3
4910d4
+	xsrqpi      1,20,30,3
4910d4
+	xsrqpix     0,21,31,0
4910d4
+	xsrqpix     1,21,31,0
4910d4
+	xsrqpix     0,21,31,3
4910d4
+	xsrqpix     1,21,31,3
4910d4
+	xsmulqp     12,13,14
4910d4
+	xsmulqpo    13,14,15
4910d4
+	xsrqpxp     0,22,23,0
4910d4
+	xsrqpxp     1,22,23,0
4910d4
+	xsrqpxp     0,22,23,3
4910d4
+	xsrqpxp     1,22,23,3
4910d4
+	xscpsgnqp   14,15,16
4910d4
+	xscmpoqp    0,15,16
4910d4
+	xscmpoqp    7,15,16
4910d4
+	xscmpexpqp  0,16,17
4910d4
+	xscmpexpqp  7,16,17
4910d4
+	xsmaddqp    17,18,19
4910d4
+	xsmaddqpo   18,19,20
4910d4
+	xsmsubqp    19,20,21
4910d4
+	xsmsubqpo   20,21,22
4910d4
+	xsnmaddqp   21,22,23
4910d4
+	xsnmaddqpo  22,23,24
4910d4
+	xsnmsubqp   23,24,25
4910d4
+	xsnmsubqpo  24,25,26
4910d4
+	xssubqp     25,26,27
4910d4
+	xssubqpo    26,27,28
4910d4
+	xsdivqp     27,28,29
4910d4
+	xsdivqpo    28,29,30
4910d4
+	xscmpuqp    0,29,30
4910d4
+	xscmpuqp    7,29,30
4910d4
+	xststdcqp   0,30,0
4910d4
+	xststdcqp   7,30,0
4910d4
+	xststdcqp   0,31,0x7f
4910d4
+	xststdcqp   7,31,0x7f
4910d4
+	xsabsqp     10,11
4910d4
+	xsxexpqp    11,12
4910d4
+	xsnabsqp    12,13
4910d4
+	xsnegqp     13,14
4910d4
+	xsxsigqp    14,15
4910d4
+	xssqrtqp    15,16
4910d4
+	xssqrtqpo   16,17
4910d4
+	xscvqpuwz   17,18
4910d4
+	xscvudqp    18,19
4910d4
+	xscvqpswz   19,20
4910d4
+	xscvsdqp    20,21
4910d4
+	xscvqpudz   21,22
4910d4
+	xscvqpdp    22,23
4910d4
+	xscvqpdpo   23,24
4910d4
+	xscvdpqp    24,25
4910d4
+	xscvqpsdz   25,26
4910d4
+	xsiexpqp    26,27,28
4910d4
+	vpermr      4,5,6,7
4910d4
+	vextractub  5,6,0
4910d4
+	vextractub  5,6,0xf
4910d4
+	vextractuh  6,7,0
4910d4
+	vextractuh  6,7,0xf
4910d4
+	vextractuw  7,8,0
4910d4
+	vextractuw  7,8,0xf
4910d4
+	vextractd   8,9,0
4910d4
+	vextractd   8,9,0xf
4910d4
+	vinsertb    9,10,0
4910d4
+	vinsertb    9,10,0xf
4910d4
+	vinserth    10,11,0
4910d4
+	vinserth    10,11,0xf
4910d4
+	vinsertw    11,12,0
4910d4
+	vinsertw    11,12,0xf
4910d4
+	vinsertd    12,13,0
4910d4
+	vinsertd    12,13,0xf
4910d4
+	mfvsrld     20,45
4910d4
+	mtvsrws     46,21
4910d4
+	mtvsrdd     47,0,23
4910d4
+	mtvsrdd     47,22,23
4910d4
+	lxvx        50,0,11
4910d4
+	lxvx        0,10,11
4910d4
+	lxvwsx      51,0,12
4910d4
+	lxvwsx      1,10,12
4910d4
+	lxvh8x      52,0,13
4910d4
+	lxvh8x      2,10,13
4910d4
+	lxvb16x     53,0,14
4910d4
+	lxvb16x     3,10,14
4910d4
+	stxvx       54,0,15
4910d4
+	stxvx       4,20,15
4910d4
+	stxvh8x     55,0,16
4910d4
+	stxvh8x     5,20,16
4910d4
+	stxvb16x    56,0,17
4910d4
+	stxvb16x    6,20,17
4910d4
+	xxextractuw 4,5,0x0
4910d4
+	xxextractuw 40,50,0xf
4910d4
+	xxspltib    4,0x0
4910d4
+	xxspltib    4,-128
4910d4
+	xxspltib    41,255
4910d4
+	xxspltib    41,-1
4910d4
+	xxinsertw   5,6,0
4910d4
+	xxinsertw   50,60,0xf
4910d4
+	xxbrh       6,7
4910d4
+	xxbrh       56,57
4910d4
+	xxbrw       7,8
4910d4
+	xxbrw       57,58
4910d4
+	xxbrd       8,9
4910d4
+	xxbrd       58,59
4910d4
+	xxbrq       9,10
4910d4
+	xxbrq       59,60
4910d4
+	lxsd        20,0(0)
4910d4
+	lxsd        20,0(10)
4910d4
+	lxsd        20,8(0)
4910d4
+	lxsd        20,8(10)
4910d4
+	lxsd        20,-8(0)
4910d4
+	lxsd        20,-8(10)
4910d4
+	lxsd        20,32764(0)
4910d4
+	lxsd        20,32764(10)
4910d4
+	lxsd        20,-32768(0)
4910d4
+	lxsd        20,-32768(10)
4910d4
+	lxssp       30,0(0)
4910d4
+	lxssp       30,0(11)
4910d4
+	lxssp       30,8(0)
4910d4
+	lxssp       30,8(11)
4910d4
+	lxssp       30,-8(0)
4910d4
+	lxssp       30,-8(11)
4910d4
+	lxssp       30,32764(0)
4910d4
+	lxssp       30,32764(11)
4910d4
+	lxssp       30,-32768(0)
4910d4
+	lxssp       30,-32768(11)
4910d4
+	lxv         40,0(0)
4910d4
+	lxv         40,0(12)
4910d4
+	lxv         40,16(0)
4910d4
+	lxv         40,16(12)
4910d4
+	lxv         40,-16(0)
4910d4
+	lxv         10,-16(12)
4910d4
+	lxv         10,32752(0)
4910d4
+	lxv         10,32752(12)
4910d4
+	lxv         10,-32768(0)
4910d4
+	lxv         10,-32768(12)
4910d4
+	stxsd       21,0(0)
4910d4
+	stxsd       21,0(10)
4910d4
+	stxsd       21,8(0)
4910d4
+	stxsd       21,8(10)
4910d4
+	stxsd       21,-8(0)
4910d4
+	stxsd       21,-8(10)
4910d4
+	stxsd       21,32764(0)
4910d4
+	stxsd       21,32764(10)
4910d4
+	stxsd       21,-32768(0)
4910d4
+	stxsd       21,-32768(10)
4910d4
+	stxssp      31,0(0)
4910d4
+	stxssp      31,0(11)
4910d4
+	stxssp      31,8(0)
4910d4
+	stxssp      31,8(11)
4910d4
+	stxssp      31,-8(0)
4910d4
+	stxssp      31,-8(11)
4910d4
+	stxssp      31,32764(0)
4910d4
+	stxssp      31,32764(11)
4910d4
+	stxssp      31,-32768(0)
4910d4
+	stxssp      31,-32768(11)
4910d4
+	stxv        41,0(0)
4910d4
+	stxv        41,0(12)
4910d4
+	stxv        41,16(0)
4910d4
+	stxv        41,16(12)
4910d4
+	stxv        41,-16(0)
4910d4
+	stxv        11,-16(12)
4910d4
+	stxv        11,32752(0)
4910d4
+	stxv        11,32752(12)
4910d4
+	stxv        11,-32768(0)
4910d4
+	stxv        11,-32768(12)
4910d4
+	xxperm      20,22,24
4910d4
+	xxperm      40,42,44
4910d4
+	xxpermr     21,23,25
4910d4
+	xxpermr     41,43,45
4910d4
+	extswsli    12,20,0
4910d4
+	extswsli    12,20,1
4910d4
+	extswsli    12,20,63
4910d4
+	extswsli.   13,21,0
4910d4
+	extswsli.   13,21,1
4910d4
+	extswsli.   13,21,63
4910d4
+	vrlwmi      14,22,23
4910d4
+	vrldmi      15,23,24
4910d4
+	vrlwnm      16,24,25
4910d4
+	vrldnm      17,25,26
4910d4
+	vbpermd     18,26,27
4910d4
+	vnegw       19,20
4910d4
+	vnegd       20,21
4910d4
+	vprtybw     21,22
4910d4
+	vprtybd     22,23
4910d4
+	vprtybq     23,24
4910d4
+	vextsb2w    24,25
4910d4
+	vextsh2w    25,26
4910d4
+	vextsb2d    26,27
4910d4
+	vextsh2d    27,28
4910d4
+	vextsw2d    28,29
4910d4
+	vctzb       29,30
4910d4
+	vctzh       30,31
4910d4
+	vctzw       31,30
4910d4
+	vctzd       30,29
4910d4
+	lxsibzx     10,0,20
4910d4
+	lxsibzx     50,10,20
4910d4
+	lxsihzx     11,0,21
4910d4
+	lxsihzx     51,11,21
4910d4
+	stxsibx     12,0,22
4910d4
+	stxsibx     52,12,22
4910d4
+	stxsihx     13,0,23
4910d4
+	stxsihx     53,13,23
4910d4
+	maddhd      10,11,12,13
4910d4
+	maddhdu     20,21,22,23
4910d4
+	maddld      2,3,4,5
4910d4
+	xscmpexpdp  0,10,20
4910d4
+	xscmpexpdp  7,40,50
4910d4
+	xsiexpdp    41,11,21
4910d4
+	xststdcdp   0,11,0x7f
4910d4
+	xststdcdp   7,41,0x7f
4910d4
+	xststdcsp   0,11,0x7f
4910d4
+	xststdcsp   7,41,0x7f
4910d4
+	xsxexpdp    13,43
4910d4
+	xsxsigdp    14,44
4910d4
+	xviexpdp    45,46,47
4910d4
+	xviexpsp    46,47,48
4910d4
+	xvtstdcdp   54,55,0
4910d4
+	xvtstdcdp   54,55,0x7f
4910d4
+	xvtstdcsp   55,56,0
4910d4
+	xvtstdcsp   55,56,0x7f
4910d4
+	xvxexpdp    57,58
4910d4
+	xvxexpsp    58,59
4910d4
+	xvxsigdp    59,60
4910d4
+	xvxsigsp    60,61
4910d4
+	cmpeqb      0,6,7
4910d4
+	cmpeqb      7,6,7
4910d4
+	cmprb       0,0,8,9
4910d4
+	cmprb       7,0,8,9
4910d4
+	cmprb       0,1,8,9
4910d4
+	cmprb       7,1,8,9
4910d4
+	setb        15,0
4910d4
+	setb        15,7
4910d4
+	lxvl        26,0,10
4910d4
+	lxvl        56,20,10
4910d4
+	stxvl       27,0,11
4910d4
+	stxvl       57,21,11
4910d4
+	vclzlsbb    20,30
4910d4
+	vctzlsbb    21,31
4910d4
+	vcmpneb     10,11,12
4910d4
+	vcmpneb.    20,21,22
4910d4
+	vcmpneh     11,12,13
4910d4
+	vcmpneh.    21,22,23
4910d4
+	vcmpnew     12,13,14
4910d4
+	vcmpnew.    22,23,24
4910d4
+	vcmpnezb    13,14,15
4910d4
+	vcmpnezb.   23,24,25
4910d4
+	vcmpnezh    14,15,16
4910d4
+	vcmpnezh.   24,25,26
4910d4
+	vcmpnezw    15,16,17
4910d4
+	vcmpnezw.   25,26,27
4910d4
+	vextublx    16,17,10
4910d4
+	vextubrx    17,18,11
4910d4
+	vextuhlx    18,19,12
4910d4
+	vextuhrx    19,20,13
4910d4
+	vextuwlx    20,21,14
4910d4
+	vextuwrx    21,22,15
4910d4
+	dtstsfi     0,0,3
4910d4
+	dtstsfi     7,0x3f,3
4910d4
+	dtstsfiq    0,0,4
4910d4
+	dtstsfiq    7,0x3f,4
4910d4
+	xscvhpdp    40,50
4910d4
+	xscvdphp    41,51
4910d4
+	xvcvhpsp    42,52
4910d4
+	xvcvsphp    43,53
4910d4
+	addpcis     3,0
4910d4
+	subpcis     3,0
4910d4
+	addpcis     4,1
4910d4
+	subpcis     4,-1
4910d4
+	addpcis     5,-2
4910d4
+	subpcis     5,2
4910d4
+	addpcis     6,0x7fff
4910d4
+	subpcis     6,-0x7fff
4910d4
+	addpcis     7,-0x8000
4910d4
+	subpcis     7,0x8000
4910d4
+	slbsync
4910d4
+	slbieg      10,11
4910d4
+	slbmfee     3,4
4910d4
+	slbmfee     3,4,0
4910d4
+	slbmfee     3,4,1
4910d4
+	slbmfev     4,5
4910d4
+	slbmfev     4,5,0
4910d4
+	slbmfev     4,5,1
4910d4
+	tlbie       3,4
4910d4
+	tlbie       3,4,0,0,0
4910d4
+	tlbie       3,4,3,1,1
4910d4
+	tlbiel      3
4910d4
+	tlbiel      3,0,0,0,0
4910d4
+	tlbiel      3,4,3,1,1
4910d4
+	copy        12,13,0
4910d4
+	copy_first  12,13
4910d4
+	copy        12,13,1
4910d4
+	paste       10,11,0
4910d4
+	paste       10,11
4910d4
+	paste.      10,11,1
4910d4
+	paste_last  10,11
4910d4
+	cp_abort
4910d4
+	hwsync
4910d4
+	sync
4910d4
+	sync        0,0x0
4910d4
+	lwsync
4910d4
+	sync        1,0x0
4910d4
+	ptesync
4910d4
+	sync        2,0x0
4910d4
+	sync	    0,0x7
4910d4
+	sync	    1,0x8
4910d4
+	ldat        20,0,0x0
4910d4
+	ldat        20,10,0x1c
4910d4
+	lwat        21,0,0x0
4910d4
+	lwat        21,11,0x1c
4910d4
+	stdat       22,0,0x0
4910d4
+	stdat       22,12,0x1c
4910d4
+	stwat       23,0,0x0
4910d4
+	stwat       23,13,0x1c
4910d4
+	urfid
4910d4
+	rmieg       30
4910d4
+	ldmx        10,0,15
4910d4
+	ldmx        10,3,15
4910d4
+	stop
4910d4
+	wait
4910d4
+	wait        0
4910d4
+	darn        3,0
4910d4
+	darn        3,1
4910d4
+	darn        3,2
4910d4
+	mcrxrx      0
4910d4
+	mcrxrx      7
4910d4
+	vslv        20,21,22
4910d4
+	vsrv        23,24,25
4910d4
+	msgsync
4910d4
+	xscmpeqdp   30,40,50
4910d4
+	xscmpgtdp   31,41,51
4910d4
+	xscmpgedp   32,42,52
4910d4
+	xsmincdp    34,44,54
4910d4
+	xsmaxcdp    35,45,55
4910d4
+	xsminjdp    36,46,56
4910d4
+	xsmaxjdp    37,47,57
4910d4
--- /dev/null	2016-05-23 09:42:50.354737742 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/vsx3.s	2016-05-23 12:43:15.656909113 +0100
4910d4
@@ -0,0 +1,123 @@
4910d4
+        .text
4910d4
+vsx3:
4910d4
+	lxvx         34,6,25
4910d4
+	lxvx         20,0,10
4910d4
+	lxvl         20,24,10
4910d4
+	lxvl         54,0,29
4910d4
+	lxvll        24,20,19
4910d4
+	lxvll        34,0,14
4910d4
+	mfvsrld      2,22
4910d4
+	lxvwsx       58,26,25
4910d4
+	lxvwsx       55,0,29
4910d4
+	stxvx        14,21,4
4910d4
+	stxvx        30,0,22
4910d4
+	stxvl        0,26,4
4910d4
+	stxvl        37,0,22
4910d4
+	mtvsrws      24,10
4910d4
+	stxvll       30,21,15
4910d4
+	stxvll       39,0,14
4910d4
+	mtvsrdd      12,6,5
4910d4
+	mtvsrdd      38,0,21
4910d4
+	lxsibzx      59,28,6
4910d4
+	lxsibzx      30,0,8
4910d4
+	lxvh8x       42,23,17
4910d4
+	lxvh8x       36,0,5
4910d4
+	lxsihzx      12,9,11
4910d4
+	lxsihzx      49,0,13
4910d4
+	lxvb16x      37,3,19
4910d4
+	lxvb16x      0,0,30
4910d4
+	stxsibx      2,30,6
4910d4
+	stxsibx      12,0,13
4910d4
+	stxvh8x      16,29,8
4910d4
+	stxvh8x      55,0,10
4910d4
+	stxsihx      34,2,23
4910d4
+	stxsihx      60,0,23
4910d4
+	stxvb16x     23,14,12
4910d4
+	stxvb16x     19,0,5
4910d4
+	lxsd         24,0(0)
4910d4
+	lxsd         15,16(21)
4910d4
+	lxssp        6,0(0)
4910d4
+	lxssp        23,16(9)
4910d4
+	xscmpeqdp    18,51,33
4910d4
+	xscmpgtdp    2,26,34
4910d4
+	xscmpgedp    5,26,20
4910d4
+	xxperm       44,10,43
4910d4
+	xxpermr      41,20,5
4910d4
+	xscmpexpdp   4,18,55
4910d4
+	xxextractuw  23,37,3
4910d4
+	xxspltib     54,235
4910d4
+	xxinsertw    15,30,4
4910d4
+	xsmaxcdp     12,11,7
4910d4
+	xsmincdp     32,25,24
4910d4
+	xsmaxjdp     25,53,12
4910d4
+	xststdcsp    2,36,127
4910d4
+	xsminjdp     32,21,45
4910d4
+	xsxexpdp     17,50
4910d4
+	xsxsigdp     7,40
4910d4
+	xscvhpdp     54,34
4910d4
+	xscvdphp     58,54
4910d4
+	xststdcdp    0,38,127
4910d4
+	xvtstdcsp    56,53,127
4910d4
+	xviexpsp     54,20,52
4910d4
+	xsiexpdp     57,28,29
4910d4
+	xvxexpdp     1,20
4910d4
+	xvxsigdp     54,59
4910d4
+	xxbrh        18,37
4910d4
+	xvxexpsp     14,1
4910d4
+	xvxsigsp     52,13
4910d4
+	xxbrw        19,5
4910d4
+	xxbrd        51,55
4910d4
+	xvcvhpsp     35,17
4910d4
+	xvcvsphp     15,45
4910d4
+	xxbrq        17,31
4910d4
+	xvtstdcdp    16,12,127
4910d4
+	xviexpdp     27,9,8
4910d4
+	lxv          4,0(0)
4910d4
+	lxv          40,16(20)
4910d4
+	stxv         50,0(0)
4910d4
+	stxv         8,16(16)
4910d4
+	stxsd        3,0(0)
4910d4
+	stxsd        17,16(2)
4910d4
+	stxssp       13,0(0)
4910d4
+	stxssp       17,16(13)
4910d4
+	xsaddqp      8,10,18
4910d4
+	xsaddqpo     5,1,29
4910d4
+	xsrqpi       0,12,18,3
4910d4
+	xsrqpix      1,31,19,0
4910d4
+	xsmulqp      14,1,6
4910d4
+	xsmulqpo     17,7,27
4910d4
+	xsrqpxp      0,4,11,0
4910d4
+	xscpsgnqp    29,23,28
4910d4
+	xscmpoqp     7,13,27
4910d4
+	xscmpexpqp   5,21,6
4910d4
+	xsmaddqp     2,19,4
4910d4
+	xsmaddqpo    30,7,16
4910d4
+	xsmsubqp     21,30,15
4910d4
+	xsmsubqpo    12,17,30
4910d4
+	xsnmaddqp    6,30,12
4910d4
+	xsnmaddqpo   12,22,12
4910d4
+	xsnmsubqp    10,29,27
4910d4
+	xsnmsubqpo   29,29,13
4910d4
+	xssubqp      19,27,4
4910d4
+	xssubqpo     13,8,1
4910d4
+	xsdivqp      8,3,27
4910d4
+	xsdivqpo     24,20,27
4910d4
+	xscmpuqp     7,14,4
4910d4
+	xststdcqp    4,2,127
4910d4
+	xsabsqp      31,22
4910d4
+	xsxexpqp     25,3
4910d4
+	xsnabsqp     10,28
4910d4
+	xsnegqp      19,31
4910d4
+	xsxsigqp     11,13
4910d4
+	xssqrtqp     13,14
4910d4
+	xssqrtqpo    1,27
4910d4
+	xscvqpuwz    3,7
4910d4
+	xscvudqp     20,18
4910d4
+	xscvqpswz    29,29
4910d4
+	xscvsdqp     2,28
4910d4
+	xscvqpudz    23,4
4910d4
+	xscvqpdp     3,20
4910d4
+	xscvqpdpo    1,3
4910d4
+	xscvdpqp     19,12
4910d4
+	xscvqpsdz    13,4
4910d4
+	xsiexpqp     7,24,7
4910d4
--- /dev/null	2016-05-23 09:42:50.354737742 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/vsx3.d	2016-05-23 12:38:42.113472905 +0100
4910d4
@@ -0,0 +1,133 @@
4910d4
+#as: -mpower9
4910d4
+#objdump: -dr -Mpower9
4910d4
+#name: VSX ISA 3.0 instructions
4910d4
+
4910d4
+.*
4910d4
+
4910d4
+
4910d4
+Disassembly of section \.text:
4910d4
+
4910d4
+0+00 <vsx3>:
4910d4
+
4910d4
+.*:	(7c 46 ca 19|19 ca 46 7c) 	lxvx    vs34,r6,r25
4910d4
+.*:	(7e 80 52 18|18 52 80 7e) 	lxvx    vs20,0,r10
4910d4
+.*:	(7e 98 52 1a|1a 52 98 7e) 	lxvl    vs20,r24,r10
4910d4
+.*:	(7e c0 ea 1b|1b ea c0 7e) 	lxvl    vs54,0,r29
4910d4
+.*:	(7f 14 9a 5a|5a 9a 14 7f) 	lxvll   vs24,r20,r19
4910d4
+.*:	(7c 40 72 5b|5b 72 40 7c) 	lxvll   vs34,0,r14
4910d4
+.*:	(7e c2 02 66|66 02 c2 7e) 	mfvsrld r2,vs22
4910d4
+.*:	(7f 5a ca d9|d9 ca 5a 7f) 	lxvwsx  vs58,r26,r25
4910d4
+.*:	(7e e0 ea d9|d9 ea e0 7e) 	lxvwsx  vs55,0,r29
4910d4
+.*:	(7d d5 23 18|18 23 d5 7d) 	stxvx   vs14,r21,r4
4910d4
+.*:	(7f c0 b3 18|18 b3 c0 7f) 	stxvx   vs30,0,r22
4910d4
+.*:	(7c 1a 23 1a|1a 23 1a 7c) 	stxvl   vs0,r26,r4
4910d4
+.*:	(7c a0 b3 1b|1b b3 a0 7c) 	stxvl   vs37,0,r22
4910d4
+.*:	(7f 0a 03 26|26 03 0a 7f) 	mtvsrws vs24,r10
4910d4
+.*:	(7f d5 7b 5a|5a 7b d5 7f) 	stxvll  vs30,r21,r15
4910d4
+.*:	(7c e0 73 5b|5b 73 e0 7c) 	stxvll  vs39,0,r14
4910d4
+.*:	(7d 86 2b 66|66 2b 86 7d) 	mtvsrdd vs12,r6,r5
4910d4
+.*:	(7c c0 ab 67|67 ab c0 7c) 	mtvsrdd vs38,0,r21
4910d4
+.*:	(7f 7c 36 1b|1b 36 7c 7f) 	lxsibzx vs59,r28,r6
4910d4
+.*:	(7f c0 46 1a|1a 46 c0 7f) 	lxsibzx vs30,0,r8
4910d4
+.*:	(7d 57 8e 59|59 8e 57 7d) 	lxvh8x  vs42,r23,r17
4910d4
+.*:	(7c 80 2e 59|59 2e 80 7c) 	lxvh8x  vs36,0,r5
4910d4
+.*:	(7d 89 5e 5a|5a 5e 89 7d) 	lxsihzx vs12,r9,r11
4910d4
+.*:	(7e 20 6e 5b|5b 6e 20 7e) 	lxsihzx vs49,0,r13
4910d4
+.*:	(7c a3 9e d9|d9 9e a3 7c) 	lxvb16x vs37,r3,r19
4910d4
+.*:	(7c 00 f6 d8|d8 f6 00 7c) 	lxvb16x vs0,0,r30
4910d4
+.*:	(7c 5e 37 1a|1a 37 5e 7c) 	stxsibx vs2,r30,r6
4910d4
+.*:	(7d 80 6f 1a|1a 6f 80 7d) 	stxsibx vs12,0,r13
4910d4
+.*:	(7e 1d 47 58|58 47 1d 7e) 	stxvh8x vs16,r29,r8
4910d4
+.*:	(7e e0 57 59|59 57 e0 7e) 	stxvh8x vs55,0,r10
4910d4
+.*:	(7c 42 bf 5b|5b bf 42 7c) 	stxsihx vs34,r2,r23
4910d4
+.*:	(7f 80 bf 5b|5b bf 80 7f) 	stxsihx vs60,0,r23
4910d4
+.*:	(7e ee 67 d8|d8 67 ee 7e) 	stxvb16x vs23,r14,r12
4910d4
+.*:	(7e 60 2f d8|d8 2f 60 7e) 	stxvb16x vs19,0,r5
4910d4
+.*:	(e7 00 00 02|02 00 00 e7) 	lxsd    v24,0\(0\)
4910d4
+.*:	(e5 f5 00 12|12 00 f5 e5) 	lxsd    v15,16\(r21\)
4910d4
+.*:	(e4 c0 00 03|03 00 c0 e4) 	lxssp   v6,0\(0\)
4910d4
+.*:	(e6 e9 00 13|13 00 e9 e6) 	lxssp   v23,16\(r9\)
4910d4
+.*:	(f2 53 08 1e|1e 08 53 f2) 	xscmpeqdp vs18,vs51,vs33
4910d4
+.*:	(f0 5a 10 5a|5a 10 5a f0) 	xscmpgtdp vs2,vs26,vs34
4910d4
+.*:	(f0 ba a0 98|98 a0 ba f0) 	xscmpgedp vs5,vs26,vs20
4910d4
+.*:	(f1 8a 58 d3|d3 58 8a f1) 	xxperm  vs44,vs10,vs43
4910d4
+.*:	(f1 34 29 d1|d1 29 34 f1) 	xxpermr vs41,vs20,vs5
4910d4
+.*:	(f2 12 b9 da|da b9 12 f2) 	xscmpexpdp cr4,vs18,vs55
4910d4
+.*:	(f2 e3 2a 96|96 2a e3 f2) 	xxextractuw vs23,vs37,3
4910d4
+.*:	(f2 c7 5a d1|d1 5a c7 f2) 	xxspltib vs54,235
4910d4
+.*:	(f1 e4 f2 d4|d4 f2 e4 f1) 	xxinsertw vs15,vs30,4
4910d4
+.*:	(f1 8b 3c 00|00 3c 8b f1) 	xsmaxcdp vs12,vs11,vs7
4910d4
+.*:	(f0 19 c4 41|41 c4 19 f0) 	xsmincdp vs32,vs25,vs24
4910d4
+.*:	(f3 35 64 84|84 64 35 f3) 	xsmaxjdp vs25,vs53,vs12
4910d4
+.*:	(f1 7f 24 aa|aa 24 7f f1) 	xststdcsp cr2,vs36,127
4910d4
+.*:	(f0 15 6c c3|c3 6c 15 f0) 	xsminjdp vs32,vs21,vs45
4910d4
+.*:	(f2 20 95 6e|6e 95 20 f2) 	xsxexpdp r17,vs50
4910d4
+.*:	(f0 e1 45 6e|6e 45 e1 f0) 	xsxsigdp r7,vs40
4910d4
+.*:	(f2 d0 15 6f|6f 15 d0 f2) 	xscvhpdp vs54,vs34
4910d4
+.*:	(f3 51 b5 6f|6f b5 51 f3) 	xscvdphp vs58,vs54
4910d4
+.*:	(f0 7f 35 aa|aa 35 7f f0) 	xststdcdp cr0,vs38,127
4910d4
+.*:	(f3 1f ae ef|ef ae 1f f3) 	xvtstdcsp vs56,vs53,127
4910d4
+.*:	(f2 d4 a6 c3|c3 a6 d4 f2) 	xviexpsp vs54,vs20,vs52
4910d4
+.*:	(f3 3c ef 2d|2d ef 3c f3) 	xsiexpdp vs57,r28,r29
4910d4
+.*:	(f0 20 a7 6c|6c a7 20 f0) 	xvxexpdp vs1,vs20
4910d4
+.*:	(f2 c1 df 6f|6f df c1 f2) 	xvxsigdp vs54,vs59
4910d4
+.*:	(f2 47 2f 6e|6e 2f 47 f2) 	xxbrh   vs18,vs37
4910d4
+.*:	(f1 c8 0f 6c|6c 0f c8 f1) 	xvxexpsp vs14,vs1
4910d4
+.*:	(f2 89 6f 6d|6d 6f 89 f2) 	xvxsigsp vs52,vs13
4910d4
+.*:	(f2 6f 2f 6c|6c 2f 6f f2) 	xxbrw   vs19,vs5
4910d4
+.*:	(f2 77 bf 6f|6f bf 77 f2) 	xxbrd   vs51,vs55
4910d4
+.*:	(f0 78 8f 6d|6d 8f 78 f0) 	xvcvhpsp vs35,vs17
4910d4
+.*:	(f1 f9 6f 6e|6e 6f f9 f1) 	xvcvsphp vs15,vs45
4910d4
+.*:	(f2 3f ff 6c|6c ff 3f f2) 	xxbrq   vs17,vs31
4910d4
+.*:	(f2 1f 67 ec|ec 67 1f f2) 	xvtstdcdp vs16,vs12,127
4910d4
+.*:	(f3 69 47 c0|c0 47 69 f3) 	xviexpdp vs27,vs9,vs8
4910d4
+.*:	(f4 80 00 01|01 00 80 f4) 	lxv     vs4,0\(0\)
4910d4
+.*:	(f5 14 00 19|19 00 14 f5) 	lxv     vs40,16\(r20\)
4910d4
+.*:	(f6 40 00 0d|0d 00 40 f6) 	stxv    vs50,0\(0\)
4910d4
+.*:	(f5 10 00 15|15 00 10 f5) 	stxv    vs8,16\(r16\)
4910d4
+.*:	(f4 60 00 02|02 00 60 f4) 	stxsd   v3,0\(0\)
4910d4
+.*:	(f6 22 00 12|12 00 22 f6) 	stxsd   v17,16\(r2\)
4910d4
+.*:	(f5 a0 00 03|03 00 a0 f5) 	stxssp  v13,0\(0\)
4910d4
+.*:	(f6 2d 00 13|13 00 2d f6) 	stxssp  v17,16\(r13\)
4910d4
+.*:	(fd 0a 90 08|08 90 0a fd) 	xsaddqp v8,v10,v18
4910d4
+.*:	(fc a1 e8 09|09 e8 a1 fc) 	xsaddqpo v5,v1,v29
4910d4
+.*:	(fd 80 96 0a|0a 96 80 fd) 	xsrqpi  0,v12,v18,3
4910d4
+.*:	(ff e1 98 0b|0b 98 e1 ff) 	xsrqpix 1,v31,v19,0
4910d4
+.*:	(fd c1 30 48|48 30 c1 fd) 	xsmulqp v14,v1,v6
4910d4
+.*:	(fe 27 d8 49|49 d8 27 fe) 	xsmulqpo v17,v7,v27
4910d4
+.*:	(fc 80 58 4a|4a 58 80 fc) 	xsrqpxp 0,v4,v11,0
4910d4
+.*:	(ff b7 e0 c8|c8 e0 b7 ff) 	xscpsgnqp v29,v23,v28
4910d4
+.*:	(ff 8d d9 08|08 d9 8d ff) 	xscmpoqp cr7,v13,v27
4910d4
+.*:	(fe 95 31 48|48 31 95 fe) 	xscmpexpqp cr5,v21,v6
4910d4
+.*:	(fc 53 23 08|08 23 53 fc) 	xsmaddqp v2,v19,v4
4910d4
+.*:	(ff c7 83 09|09 83 c7 ff) 	xsmaddqpo v30,v7,v16
4910d4
+.*:	(fe be 7b 48|48 7b be fe) 	xsmsubqp v21,v30,v15
4910d4
+.*:	(fd 91 f3 49|49 f3 91 fd) 	xsmsubqpo v12,v17,v30
4910d4
+.*:	(fc de 63 88|88 63 de fc) 	xsnmaddqp v6,v30,v12
4910d4
+.*:	(fd 96 63 89|89 63 96 fd) 	xsnmaddqpo v12,v22,v12
4910d4
+.*:	(fd 5d db c8|c8 db 5d fd) 	xsnmsubqp v10,v29,v27
4910d4
+.*:	(ff bd 6b c9|c9 6b bd ff) 	xsnmsubqpo v29,v29,v13
4910d4
+.*:	(fe 7b 24 08|08 24 7b fe) 	xssubqp v19,v27,v4
4910d4
+.*:	(fd a8 0c 09|09 0c a8 fd) 	xssubqpo v13,v8,v1
4910d4
+.*:	(fd 03 dc 48|48 dc 03 fd) 	xsdivqp v8,v3,v27
4910d4
+.*:	(ff 14 dc 49|49 dc 14 ff) 	xsdivqpo v24,v20,v27
4910d4
+.*:	(ff 8e 25 08|08 25 8e ff) 	xscmpuqp cr7,v14,v4
4910d4
+.*:	(fe 7f 15 88|88 15 7f fe) 	xststdcqp cr4,v2,127
4910d4
+.*:	(ff e0 b6 48|48 b6 e0 ff) 	xsabsqp v31,v22
4910d4
+.*:	(ff 22 1e 48|48 1e 22 ff) 	xsxexpqp v25,v3
4910d4
+.*:	(fd 48 e6 48|48 e6 48 fd) 	xsnabsqp v10,v28
4910d4
+.*:	(fe 70 fe 48|48 fe 70 fe) 	xsnegqp v19,v31
4910d4
+.*:	(fd 72 6e 48|48 6e 72 fd) 	xsxsigqp v11,v13
4910d4
+.*:	(fd bb 76 48|48 76 bb fd) 	xssqrtqp v13,v14
4910d4
+.*:	(fc 3b de 49|49 de 3b fc) 	xssqrtqpo v1,v27
4910d4
+.*:	(fc 61 3e 88|88 3e 61 fc) 	xscvqpuwz v3,v7
4910d4
+.*:	(fe 82 96 88|88 96 82 fe) 	xscvudqp v20,v18
4910d4
+.*:	(ff a9 ee 88|88 ee a9 ff) 	xscvqpswz v29,v29
4910d4
+.*:	(fc 4a e6 88|88 e6 4a fc) 	xscvsdqp v2,v28
4910d4
+.*:	(fe f1 26 88|88 26 f1 fe) 	xscvqpudz v23,v4
4910d4
+.*:	(fc 74 a6 88|88 a6 74 fc) 	xscvqpdp v3,v20
4910d4
+.*:	(fc 34 1e 89|89 1e 34 fc) 	xscvqpdpo v1,v3
4910d4
+.*:	(fe 76 66 88|88 66 76 fe) 	xscvdpqp v19,v12
4910d4
+.*:	(fd b9 26 88|88 26 b9 fd) 	xscvqpsdz v13,v4
4910d4
+.*:	(fc f8 3e c8|c8 3e f8 fc) 	xsiexpqp v7,v24,v7
4910d4
+#pass
4910d4
--- /dev/null	2016-05-23 09:42:50.354737742 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/altivec3.s	2016-05-23 12:43:37.765025189 +0100
4910d4
@@ -0,0 +1,69 @@
4910d4
+	.text
4910d4
+start:
4910d4
+	vmul10cuq    11,30
4910d4
+	vcmpneb      30,1,23
4910d4
+	vpermr       30,19,30,29
4910d4
+	vmul10ecuq   20,20,17
4910d4
+	vcmpneh      27,19,31
4910d4
+	vrlwmi       6,9,23
4910d4
+	vcmpnew      22,26,1
4910d4
+	vrldmi       24,30,25
4910d4
+	vcmpnezb     19,29,22
4910d4
+	vcmpnezh     8,23,19
4910d4
+	vrlwnm       27,24,11
4910d4
+	vcmpnezw     21,13,10
4910d4
+	vrldnm       5,20,29
4910d4
+	vmul10uq     30,19
4910d4
+	vextractub   24,21,12
4910d4
+	vmul10euq    0,19,28
4910d4
+	vextractuh   10,3,12
4910d4
+	vextractuw   28,12,7
4910d4
+	vextractd    30,27,1
4910d4
+	vinsertb     25,31,4
4910d4
+	bcdcpsgn.    21,14,30
4910d4
+	vinserth     22,18,5
4910d4
+	vinsertw     29,22,1
4910d4
+	vinsertd     29,13,7
4910d4
+	vcmpneb.     22,25,8
4910d4
+	vcmpneh.     16,15,21
4910d4
+	bcdus.       22,21,31
4910d4
+	vcmpnew.     1,12,12
4910d4
+	bcds.        5,3,8,1
4910d4
+	bcdtrunc.    27,22,1,0
4910d4
+	vcmpnezb.    2,26,0
4910d4
+	bcdutrunc.   26,14,7
4910d4
+	vcmpnezh.    16,5,12
4910d4
+	bcdctsq.     24,5
4910d4
+	bcdcfsq.     7,0,0
4910d4
+	bcdctz.      30,12,1
4910d4
+	bcdctn.      17,23
4910d4
+	bcdcfz.      4,15,1
4910d4
+	bcdcfn.      29,5,1
4910d4
+	bcdsetsgn.   27,12,0
4910d4
+	vcmpnezw.    14,28,25
4910d4
+	bcdsr.       2,2,6,1
4910d4
+	vbpermd      25,0,5
4910d4
+	vclzlsbb     28,25
4910d4
+	vctzlsbb     2,24
4910d4
+	vnegw        21,11
4910d4
+	vnegd        17,27
4910d4
+	vprtybw      31,23
4910d4
+	vprtybd      21,23
4910d4
+	vprtybq      21,18
4910d4
+	vextsb2w     30,4
4910d4
+	vextsh2w     3,26
4910d4
+	vextsb2d     11,17
4910d4
+	vextsh2d     5,10
4910d4
+	vextsw2d     13,25
4910d4
+	vctzb        25,2
4910d4
+	vctzh        0,3
4910d4
+	vctzw        22,6
4910d4
+	vctzd        26,24
4910d4
+	vextublx     6,31,2
4910d4
+	vextuhlx     13,0,18
4910d4
+	vextuwlx     14,30,31
4910d4
+	vsrv         15,12,14
4910d4
+	vextubrx     20,10,30
4910d4
+	vslv         21,21,2
4910d4
+	vextuhrx     15,9,1
4910d4
+	vextuwrx     21,17,16
4910d4
--- /dev/null	2016-05-23 09:42:50.354737742 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/altivec3.d	2016-05-23 12:38:21.541364893 +0100
4910d4
@@ -0,0 +1,79 @@
4910d4
+#as: -mpower9
4910d4
+#objdump: -dr -Mpower9
4910d4
+#name: Altivec ISA 3.0 instructions
4910d4
+
4910d4
+.*
4910d4
+
4910d4
+
4910d4
+Disassembly of section \.text:
4910d4
+
4910d4
+0+00 <start>:
4910d4
+
4910d4
+.*:	(11 7e 00 01|01 00 7e 11) 	vmul10cuq v11,v30
4910d4
+.*:	(13 c1 b8 07|07 b8 c1 13) 	vcmpneb v30,v1,v23
4910d4
+.*:	(13 d3 f7 7b|7b f7 d3 13) 	vpermr  v30,v19,v30,v29
4910d4
+.*:	(12 94 88 41|41 88 94 12) 	vmul10ecuq v20,v20,v17
4910d4
+.*:	(13 73 f8 47|47 f8 73 13) 	vcmpneh v27,v19,v31
4910d4
+.*:	(10 c9 b8 85|85 b8 c9 10) 	vrlwmi  v6,v9,v23
4910d4
+.*:	(12 da 08 87|87 08 da 12) 	vcmpnew v22,v26,v1
4910d4
+.*:	(13 1e c8 c5|c5 c8 1e 13) 	vrldmi  v24,v30,v25
4910d4
+.*:	(12 7d b1 07|07 b1 7d 12) 	vcmpnezb v19,v29,v22
4910d4
+.*:	(11 17 99 47|47 99 17 11) 	vcmpnezh v8,v23,v19
4910d4
+.*:	(13 78 59 85|85 59 78 13) 	vrlwnm  v27,v24,v11
4910d4
+.*:	(12 ad 51 87|87 51 ad 12) 	vcmpnezw v21,v13,v10
4910d4
+.*:	(10 b4 e9 c5|c5 e9 b4 10) 	vrldnm  v5,v20,v29
4910d4
+.*:	(13 d3 02 01|01 02 d3 13) 	vmul10uq v30,v19
4910d4
+.*:	(13 0c aa 0d|0d aa 0c 13) 	vextractub v24,v21,12
4910d4
+.*:	(10 13 e2 41|41 e2 13 10) 	vmul10euq v0,v19,v28
4910d4
+.*:	(11 4c 1a 4d|4d 1a 4c 11) 	vextractuh v10,v3,12
4910d4
+.*:	(13 87 62 8d|8d 62 87 13) 	vextractuw v28,v12,7
4910d4
+.*:	(13 c1 da cd|cd da c1 13) 	vextractd v30,v27,1
4910d4
+.*:	(13 24 fb 0d|0d fb 24 13) 	vinsertb v25,v31,4
4910d4
+.*:	(12 ae f3 41|41 f3 ae 12) 	bcdcpsgn\. v21,v14,v30
4910d4
+.*:	(12 c5 93 4d|4d 93 c5 12) 	vinserth v22,v18,5
4910d4
+.*:	(13 a1 b3 8d|8d b3 a1 13) 	vinsertw v29,v22,1
4910d4
+.*:	(13 a7 6b cd|cd 6b a7 13) 	vinsertd v29,v13,7
4910d4
+.*:	(12 d9 44 07|07 44 d9 12) 	vcmpneb\. v22,v25,v8
4910d4
+.*:	(12 0f ac 47|47 ac 0f 12) 	vcmpneh\. v16,v15,v21
4910d4
+.*:	(12 d5 fc 81|81 fc d5 12) 	bcdus\.  v22,v21,v31
4910d4
+.*:	(10 2c 64 87|87 64 2c 10) 	vcmpnew\. v1,v12,v12
4910d4
+.*:	(10 a3 46 c1|c1 46 a3 10) 	bcds\.   v5,v3,v8,1
4910d4
+.*:	(13 76 0d 01|01 0d 76 13) 	bcdtrunc\. v27,v22,v1,0
4910d4
+.*:	(10 5a 05 07|07 05 5a 10) 	vcmpnezb\. v2,v26,v0
4910d4
+.*:	(13 4e 3d 41|41 3d 4e 13) 	bcdutrunc\. v26,v14,v7
4910d4
+.*:	(12 05 65 47|47 65 05 12) 	vcmpnezh\. v16,v5,v12
4910d4
+.*:	(13 00 2d 81|81 2d 00 13) 	bcdctsq\. v24,v5
4910d4
+.*:	(10 e2 05 81|81 05 e2 10) 	bcdcfsq\. v7,v0,0
4910d4
+.*:	(13 c4 67 81|81 67 c4 13) 	bcdctz\. v30,v12,1
4910d4
+.*:	(12 25 bd 81|81 bd 25 12) 	bcdctn\. v17,v23
4910d4
+.*:	(10 86 7f 81|81 7f 86 10) 	bcdcfz\. v4,v15,1
4910d4
+.*:	(13 a7 2f 81|81 2f a7 13) 	bcdcfn\. v29,v5,1
4910d4
+.*:	(13 7f 65 81|81 65 7f 13) 	bcdsetsgn\. v27,v12,0
4910d4
+.*:	(11 dc cd 87|87 cd dc 11) 	vcmpnezw\. v14,v28,v25
4910d4
+.*:	(10 42 37 c1|c1 37 42 10) 	bcdsr\.  v2,v2,v6,1
4910d4
+.*:	(13 20 2d cc|cc 2d 20 13) 	vbpermd v25,v0,v5
4910d4
+.*:	(13 80 ce 02|02 ce 80 13) 	vclzlsbb r28,v25
4910d4
+.*:	(10 41 c6 02|02 c6 41 10) 	vctzlsbb r2,v24
4910d4
+.*:	(12 a6 5e 02|02 5e a6 12) 	vnegw   v21,v11
4910d4
+.*:	(12 27 de 02|02 de 27 12) 	vnegd   v17,v27
4910d4
+.*:	(13 e8 be 02|02 be e8 13) 	vprtybw v31,v23
4910d4
+.*:	(12 a9 be 02|02 be a9 12) 	vprtybd v21,v23
4910d4
+.*:	(12 aa 96 02|02 96 aa 12) 	vprtybq v21,v18
4910d4
+.*:	(13 d0 26 02|02 26 d0 13) 	vextsb2w v30,v4
4910d4
+.*:	(10 71 d6 02|02 d6 71 10) 	vextsh2w v3,v26
4910d4
+.*:	(11 78 8e 02|02 8e 78 11) 	vextsb2d v11,v17
4910d4
+.*:	(10 b9 56 02|02 56 b9 10) 	vextsh2d v5,v10
4910d4
+.*:	(11 ba ce 02|02 ce ba 11) 	vextsw2d v13,v25
4910d4
+.*:	(13 3c 16 02|02 16 3c 13) 	vctzb   v25,v2
4910d4
+.*:	(10 1d 1e 02|02 1e 1d 10) 	vctzh   v0,v3
4910d4
+.*:	(12 de 36 02|02 36 de 12) 	vctzw   v22,v6
4910d4
+.*:	(13 5f c6 02|02 c6 5f 13) 	vctzd   v26,v24
4910d4
+.*:	(10 df 16 0d|0d 16 df 10) 	vextublx r6,r31,v2
4910d4
+.*:	(11 a0 96 4d|4d 96 a0 11) 	vextuhlx r13,r0,v18
4910d4
+.*:	(11 de fe 8d|8d fe de 11) 	vextuwlx r14,r30,v31
4910d4
+.*:	(11 ec 77 04|04 77 ec 11) 	vsrv    v15,v12,v14
4910d4
+.*:	(12 8a f7 0d|0d f7 8a 12) 	vextubrx r20,r10,v30
4910d4
+.*:	(12 b5 17 44|44 17 b5 12) 	vslv    v21,v21,v2
4910d4
+.*:	(11 e9 0f 4d|4d 0f e9 11) 	vextuhrx r15,r9,v1
4910d4
+.*:	(12 b1 87 8d|8d 87 b1 12) 	vextuwrx r21,r17,v16
4910d4
+#pass
4910d4
--- binutils-2.25.1.orig/gas/config/tc-ppc.c	2016-05-23 12:32:10.521418850 +0100
4910d4
+++ binutils-2.25.1/gas/config/tc-ppc.c	2016-05-23 13:06:03.205071781 +0100
4910d4
@@ -1789,17 +1789,15 @@ ppc_insert_operand (unsigned long insn,
4910d4
 
4910d4
   if ((operand->flags & PPC_OPERAND_SIGNOPT) != 0)
4910d4
     {
4910d4
-      /* Extend the allowed range for addis to [-65536, 65535].
4910d4
-	 Similarly for some VLE high part insns.  For 64-bit it
4910d4
-	 would be good to disable this for signed fields since the
4910d4
+      /* Extend the allowed range for addis to [-32768, 65535].
4910d4
+	 Similarly for cmpli and some VLE high part insns.  For 64-bit
4910d4
+	 it would be good to disable this for signed fields since the
4910d4
 	 value is sign extended into the high 32 bits of the register.
4910d4
 	 If the value is, say, an address, then we might care about
4910d4
 	 the high bits.  However, gcc as of 2014-06 uses unsigned
4910d4
 	 values when loading the high part of 64-bit constants using
4910d4
-	 lis.
4910d4
-	 Use the same extended range for cmpli, to allow at least
4910d4
-	 [-32768, 65535].  */
4910d4
-      min = ~max & -right;
4910d4
+	 lis.  */
4910d4
+      min = ~(max >> 1) & -right;
4910d4
     }
4910d4
   else if ((operand->flags & PPC_OPERAND_SIGNED) != 0)
4910d4
     {
4910d4
--- binutils-2.25.1/opcodes/ppc-opc.c	2016-05-23 13:31:49.197326214 +0100
4910d4
+++ binutils-2.25.1.new/opcodes/ppc-opc.c	2016-05-23 13:31:41.584284927 +0100
4910d4
@@ -942,7 +942,7 @@ const struct powerpc_operand powerpc_ope
4910d4
 
4910d4
   /* The 8-bit IMM8 field in a XX1 form instruction.  */
4910d4
 #define IMM8 IH + 1
4910d4
-  { 0xff, 11, NULL, NULL, 0 },
4910d4
+  { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
4910d4
 };
4910d4
 
4910d4
 const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
4910d4
--- /dev/null	2016-05-23 09:42:50.354737742 +0100
4910d4
+++ binutils-2.25.1/ld/testsuite/ld-powerpc/addpcis.s	2016-05-23 13:35:22.514483075 +0100
4910d4
@@ -0,0 +1,12 @@
4910d4
+ .text
4910d4
+ .global _start
4910d4
+_start:
4910d4
+ addpcis 3,(ext1-0f)@ha
4910d4
+0: addi 3,3,(ext1-0b)@l
4910d4
+ addpcis 4,(ext2-0f)@ha
4910d4
+0: addi 4,4,(ext2-0b)@l
4910d4
+ addpcis 5,(forw-0f)@ha
4910d4
+0: addi 5,5,(forw-0b)@l
4910d4
+ .space 32764
4910d4
+forw:
4910d4
+ nop
4910d4
--- /dev/null	2016-05-23 09:42:50.354737742 +0100
4910d4
+++ binutils-2.25.1/ld/testsuite/ld-powerpc/addpcis.d	2016-05-23 13:35:22.514483075 +0100
4910d4
@@ -0,0 +1,20 @@
4910d4
+#source: addpcis.s
4910d4
+#as: -a64 -mpower9
4910d4
+#ld: -melf64ppc -Ttext=0x10000000 --defsym ext1=0 --defsym ext2=0x8fff0000
4910d4
+#objdump: -d -Mpower9
4910d4
+
4910d4
+.*:     file format .*
4910d4
+
4910d4
+Disassembly of section \.text:
4910d4
+
4910d4
+0+10000000 <_start>:
4910d4
+    10000000:	(4c 60 f0 04|04 f0 60 4c) 	addpcis r3,-4096
4910d4
+    10000004:	(38 63 ff fc|fc ff 63 38) 	addi    r3,r3,-4
4910d4
+    10000008:	(4c 9f 7f c5|c5 7f 9f 4c) 	addpcis r4,32767
4910d4
+    1000000c:	(38 84 ff f4|f4 ff 84 38) 	addi    r4,r4,-12
4910d4
+    10000010:	(4c a0 00 05|05 00 a0 4c) 	addpcis r5,1
4910d4
+    10000014:	(38 a5 80 00|00 80 a5 38) 	addi    r5,r5,-32768
4910d4
+	\.\.\.
4910d4
+
4910d4
+0+10008014 <forw>:
4910d4
+    10008014:	(60 00 00 00|00 00 00 60) 	nop
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/altivec3.d binutils-2.25.1/gas/testsuite/gas/ppc/altivec3.d
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/altivec3.d	2016-06-01 11:11:35.135312565 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/altivec3.d	2016-06-01 11:11:45.425376884 +0100
4910d4
@@ -76,4 +76,5 @@ Disassembly of section \.text:
4910d4
 .*:	(12 b5 17 44|44 17 b5 12) 	vslv    v21,v21,v2
4910d4
 .*:	(11 e9 0f 4d|4d 0f e9 11) 	vextuhrx r15,r9,v1
4910d4
 .*:	(12 b1 87 8d|8d 87 b1 12) 	vextuwrx r21,r17,v16
4910d4
+.*:	(12 95 b5 e3|e3 b5 95 12) 	vmsumudm v20,v21,v22,v23
4910d4
 #pass
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/altivec3.s binutils-2.25.1/gas/testsuite/gas/ppc/altivec3.s
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/altivec3.s	2016-06-01 11:11:35.135312565 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/altivec3.s	2016-06-01 11:11:45.425376884 +0100
4910d4
@@ -67,3 +67,4 @@ start:
4910d4
 	vslv         21,21,2
4910d4
 	vextuhrx     15,9,1
4910d4
 	vextuwrx     21,17,16
4910d4
+	vmsumudm     20,21,22,23
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/power9.d binutils-2.25.1/gas/testsuite/gas/ppc/power9.d
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/power9.d	2016-06-01 11:11:35.135312565 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/power9.d	2016-06-01 11:11:45.425376884 +0100
4910d4
@@ -365,6 +365,8 @@ Disassembly of section \.text:
4910d4
 .*:	(7c 00 f6 e4|e4 f6 00 7c) 	rmieg   r30
4910d4
 .*:	(7d 40 7a 6a|6a 7a 40 7d) 	ldmx    r10,0,r15
4910d4
 .*:	(7d 43 7a 6a|6a 7a 43 7d) 	ldmx    r10,r3,r15
4910d4
+.*:	(7d 60 83 6a|6a 83 60 7d) 	lwzmx   r11,0,r16
4910d4
+.*:	(7d 63 83 6a|6a 83 63 7d) 	lwzmx   r11,r3,r16
4910d4
 .*:	(4c 00 02 e4|e4 02 00 4c) 	stop
4910d4
 .*:	(7c 00 00 3c|3c 00 00 7c) 	wait    
4910d4
 .*:	(7c 00 00 3c|3c 00 00 7c) 	wait    
4910d4
@@ -383,4 +385,11 @@ Disassembly of section \.text:
4910d4
 .*:	(f0 6d bc 07|07 bc 6d f0) 	xsmaxcdp vs35,vs45,vs55
4910d4
 .*:	(f0 8e c4 c7|c7 c4 8e f0) 	xsminjdp vs36,vs46,vs56
4910d4
 .*:	(f0 af cc 87|87 cc af f0) 	xsmaxjdp vs37,vs47,vs57
4910d4
+.*:	(12 95 b5 e3|e3 b5 95 12) 	vmsumudm v20,v21,v22,v23
4910d4
+.*:	(7d 6c 69 54|54 69 6c 7d) 	addex   r11,r12,r13,0
4910d4
+.*:	(7d 6c 6b 54|54 6b 6c 7d) 	addex   r11,r12,r13,1
4910d4
+.*:	(7d 6c 6d 54|54 6d 6c 7d) 	addex   r11,r12,r13,2
4910d4
+.*:	(7e b6 b9 55|55 b9 b6 7e) 	addex\.  r21,r22,r23,0
4910d4
+.*:	(7e b6 bb 55|55 bb b6 7e) 	addex\.  r21,r22,r23,1
4910d4
+.*:	(7e b6 bd 55|55 bd b6 7e) 	addex\.  r21,r22,r23,2
4910d4
 #pass
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/power9.s binutils-2.25.1/gas/testsuite/gas/ppc/power9.s
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/power9.s	2016-06-01 11:11:35.135312565 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/power9.s	2016-06-01 11:11:45.425376884 +0100
4910d4
@@ -356,6 +356,8 @@ power9:
4910d4
 	rmieg       30
4910d4
 	ldmx        10,0,15
4910d4
 	ldmx        10,3,15
4910d4
+	lwzmx       11,0,16
4910d4
+	lwzmx       11,3,16
4910d4
 	stop
4910d4
 	wait
4910d4
 	wait        0
4910d4
@@ -374,3 +376,10 @@ power9:
4910d4
 	xsmaxcdp    35,45,55
4910d4
 	xsminjdp    36,46,56
4910d4
 	xsmaxjdp    37,47,57
4910d4
+	vmsumudm    20,21,22,23
4910d4
+	addex       11,12,13,0
4910d4
+	addex       11,12,13,1
4910d4
+	addex       11,12,13,2
4910d4
+	addex.      21,22,23,0
4910d4
+	addex.      21,22,23,1
4910d4
+	addex.      21,22,23,2
4910d4
diff -rup binutils-2.25.1.orig/opcodes/ppc-opc.c binutils-2.25.1/opcodes/ppc-opc.c
4910d4
--- binutils-2.25.1.orig/opcodes/ppc-opc.c	2016-06-01 11:11:36.347320141 +0100
4910d4
+++ binutils-2.25.1/opcodes/ppc-opc.c	2016-06-01 11:13:15.306938696 +0100
4910d4
@@ -807,7 +807,9 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define X_R A_L
4910d4
   { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
4910d4
 
4910d4
+  /* The RMC or CY field in a Z23 form instruction.  */
4910d4
 #define RMC A_L + 1
4910d4
+#define CY RMC
4910d4
   { 0x3, 9, NULL, NULL, 0 },
4910d4
 
4910d4
 #define R RMC + 1
4910d4
@@ -3137,6 +3139,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"vmhaddshs",	VXA(4,	32),	VXA_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB, VC}},
4910d4
 {"vmhraddshs",	VXA(4,	33),	VXA_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB, VC}},
4910d4
 {"vmladduhm",	VXA(4,	34),	VXA_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB, VC}},
4910d4
+{"vmsumudm",	VXA(4,	35),	VXA_MASK,    PPCVEC3,	PPCNONE,	{VD, VA, VB, VC}},
4910d4
 {"ps_div",	A  (4,	18,0),	AFRC_MASK,   PPCPS,	PPCNONE,	{FRT, FRA, FRB}},
4910d4
 {"vmsumubm",	VXA(4,	36),	VXA_MASK,    PPCVEC|PPCVLE, PPCNONE,	{VD, VA, VB, VC}},
4910d4
 {"ps_div.",	A  (4,	18,1),	AFRC_MASK,   PPCPS,	PPCNONE,	{FRT, FRA, FRB}},
4910d4
@@ -4970,6 +4973,9 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"stvehx",	X(31,167),	X_MASK,      PPCVEC,	PPCNONE,	{VS, RA0, RB}},
4910d4
 {"sthfcmx",	APU(31,167,0), 	APU_MASK,    PPC405,	PPCNONE,	{FCRT, RA, RB}},
4910d4
 
4910d4
+{"addex",	ZRC(31,170,0),	Z2_MASK,     POWER9,	PPCNONE,	{RT, RA, RB, CY}},
4910d4
+{"addex.",	ZRC(31,170,1),	Z2_MASK,     POWER9,	PPCNONE,	{RT, RA, RB, CY}},
4910d4
+
4910d4
 {"msgclrp",	XRTRA(31,174,0,0), XRTRA_MASK, POWER8,	PPCNONE,	{RB}},
4910d4
 {"dcbtlse",	X(31,174),	X_MASK,      PPCCHLK,	E500MC,		{CT, RA0, RB}},
4910d4
 
4910d4
@@ -5494,6 +5500,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"mtvsrdd",	X(31,435),	XX1_MASK,    PPCVSX3,	PPCNONE,	{XT6, RA0, RB}},
4910d4
 
4910d4
+{"lwzmx",	X(31,437),	X_MASK,      POWER9,	PPCNONE,  	{RT, RA0, RB}},
4910d4
+
4910d4
 {"ecowx",	X(31,438),	X_MASK,      PPC,	TITAN,  	{RT, RA0, RB}},
4910d4
 
4910d4
 {"sthux",	X(31,439),	X_MASK,      COM|PPCVLE, PPCNONE,	{RS, RAS, RB}},
4910d4
Only in binutils-2.25.1/opcodes: ppc-opc.c.orig
4910d4
Only in binutils-2.25.1/opcodes: ppc-opc.c.rej
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/power9.d binutils-2.25.1/gas/testsuite/gas/ppc/power9.d
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/power9.d	2016-06-24 11:54:57.332446713 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/power9.d	2016-06-24 11:55:03.189482911 +0100
4910d4
@@ -280,6 +280,14 @@ Disassembly of section \.text:
4910d4
 .*:	(7f a8 49 80|80 49 a8 7f) 	cmprb   cr7,1,r8,r9
4910d4
 .*:	(7d e0 01 00|00 01 e0 7d) 	setb    r15,cr0
4910d4
 .*:	(7d fc 01 00|00 01 fc 7d) 	setb    r15,cr7
4910d4
+.*:	(7e 00 01 01|01 01 00 7e) 	setbool r16,lt
4910d4
+.*:	(7e 01 01 01|01 01 01 7e) 	setbool r16,gt
4910d4
+.*:	(7e 02 01 01|01 01 02 7e) 	setbool r16,eq
4910d4
+.*:	(7e 03 01 01|01 01 03 7e) 	setbool r16,so
4910d4
+.*:	(7e 1c 01 01|01 01 1c 7e) 	setbool r16,4\*cr7\+lt
4910d4
+.*:	(7e 1d 01 01|01 01 1d 7e) 	setbool r16,4\*cr7\+gt
4910d4
+.*:	(7e 1e 01 01|01 01 1e 7e) 	setbool r16,4\*cr7\+eq
4910d4
+.*:	(7e 1f 01 01|01 01 1f 7e) 	setbool r16,4\*cr7\+so
4910d4
 .*:	(7f 40 52 1a|1a 52 40 7f) 	lxvl    vs26,0,r10
4910d4
 .*:	(7f 14 52 1b|1b 52 14 7f) 	lxvl    vs56,r20,r10
4910d4
 .*:	(7f 60 5b 1a|1a 5b 60 7f) 	stxvl   vs27,0,r11
4910d4
@@ -392,4 +400,22 @@ Disassembly of section \.text:
4910d4
 .*:	(7e b6 b9 55|55 b9 b6 7e) 	addex\.  r21,r22,r23,0
4910d4
 .*:	(7e b6 bb 55|55 bb b6 7e) 	addex\.  r21,r22,r23,1
4910d4
 .*:	(7e b6 bd 55|55 bd b6 7e) 	addex\.  r21,r22,r23,2
4910d4
+.*:	(ff 20 04 8e|8e 04 20 ff) 	mffs    f25
4910d4
+.*:	(ff 20 04 8f|8f 04 20 ff) 	mffs\.   f25
4910d4
+.*:	(ff 41 04 8e|8e 04 41 ff) 	mffsce  f26
4910d4
+.*:	(ff 74 a4 8e|8e a4 74 ff) 	mffscdrn f27,f20
4910d4
+.*:	(ff 95 04 8e|8e 04 95 ff) 	mffscdrni f28,0
4910d4
+.*:	(ff 95 3c 8e|8e 3c 95 ff) 	mffscdrni f28,7
4910d4
+.*:	(ff b6 ac 8e|8e ac b6 ff) 	mffscrn f29,f21
4910d4
+.*:	(ff d7 04 8e|8e 04 d7 ff) 	mffscrni f30,0
4910d4
+.*:	(ff d7 1c 8e|8e 1c d7 ff) 	mffscrni f30,3
4910d4
+.*:	(ff f8 04 8e|8e 04 f8 ff) 	mffsl   f31
4910d4
+.*:	(7e 8a 01 76|76 01 8a 7e) 	brd     r10,r20
4910d4
+.*:	(7e ab 01 b6|b6 01 ab 7e) 	brh     r11,r21
4910d4
+.*:	(7e cc 01 36|36 01 cc 7e) 	brw     r12,r22
4910d4
+.*:	(11 6a 63 77|77 63 6a 11) 	nandxor r10,r11,r12,r13
4910d4
+.*:	(12 b4 b5 f6|f6 b5 b4 12) 	xor3    r20,r21,r22,r23
4910d4
+.*:	(11 6a 60 34|34 60 6a 11) 	rldixor r10,r11,0,r12
4910d4
+.*:	(11 6a 66 f4|f4 66 6a 11) 	rldixor r10,r11,27,r12
4910d4
+.*:	(11 6a 67 f5|f5 67 6a 11) 	rldixor r10,r11,63,r12
4910d4
 #pass
4910d4
diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/power9.s binutils-2.25.1/gas/testsuite/gas/ppc/power9.s
4910d4
--- binutils-2.25.1.orig/gas/testsuite/gas/ppc/power9.s	2016-06-24 11:54:57.332446713 +0100
4910d4
+++ binutils-2.25.1/gas/testsuite/gas/ppc/power9.s	2016-06-24 11:55:03.190482917 +0100
4910d4
@@ -271,6 +271,14 @@ power9:
4910d4
 	cmprb       7,1,8,9
4910d4
 	setb        15,0
4910d4
 	setb        15,7
4910d4
+	setbool     16,0
4910d4
+	setbool     16,1
4910d4
+	setbool     16,2
4910d4
+	setbool     16,3
4910d4
+	setbool     16,28
4910d4
+	setbool     16,29
4910d4
+	setbool     16,30
4910d4
+	setbool     16,31
4910d4
 	lxvl        26,0,10
4910d4
 	lxvl        56,20,10
4910d4
 	stxvl       27,0,11
4910d4
@@ -383,3 +391,21 @@ power9:
4910d4
 	addex.      21,22,23,0
4910d4
 	addex.      21,22,23,1
4910d4
 	addex.      21,22,23,2
4910d4
+	mffs        25
4910d4
+	mffs.       25
4910d4
+	mffsce      26
4910d4
+	mffscdrn    27,20
4910d4
+	mffscdrni   28,0
4910d4
+	mffscdrni   28,7
4910d4
+	mffscrn     29,21
4910d4
+	mffscrni    30,0
4910d4
+	mffscrni    30,3
4910d4
+	mffsl       31
4910d4
+	brd         10,20
4910d4
+	brh         11,21
4910d4
+	brw         12,22
4910d4
+	nandxor     10,11,12,13
4910d4
+	xor3        20,21,22,23
4910d4
+	rldixor     10,11,0,12
4910d4
+	rldixor     10,11,27,12
4910d4
+	rldixor     10,11,63,12
4910d4
diff -rup binutils-2.25.1.orig/opcodes/ppc-opc.c binutils-2.25.1/opcodes/ppc-opc.c
4910d4
--- binutils-2.25.1.orig/opcodes/ppc-opc.c	2016-06-24 11:54:57.531447943 +0100
4910d4
+++ binutils-2.25.1/opcodes/ppc-opc.c	2016-06-24 11:59:33.621162408 +0100
4910d4
@@ -238,7 +238,11 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define BOE BO + 1
4910d4
   { 0x1e, 21, insert_boe, extract_boe, 0 },
4910d4
 
4910d4
-#define BH BOE + 1
4910d4
+  /* The RM field in an X form instruction.  */
4910d4
+#define RM BOE + 1
4910d4
+  { 0x3, 11, NULL, NULL, 0 },
4910d4
+
4910d4
+#define BH RM + 1
4910d4
   { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
4910d4
 
4910d4
   /* The BT field in an X or XL form instruction.  */
4910d4
@@ -778,8 +782,9 @@ const struct powerpc_operand powerpc_ope
4910d4
 #define EVUIMM_8 EVUIMM_4 + 1
4910d4
   { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
4910d4
 
4910d4
-  /* The WS field.  */
4910d4
+  /* The WS or DRM field in an X form instruction.  */
4910d4
 #define WS EVUIMM_8 + 1
4910d4
+#define DRM WS
4910d4
   { 0x7, 11, NULL, NULL, 0 },
4910d4
 
4910d4
   /* PowerPC paired singles extensions.  */
4910d4
@@ -2009,7 +2014,11 @@ insert_sh6 (unsigned long insn,
4910d4
 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
 	    const char **errmsg ATTRIBUTE_UNUSED)
4910d4
 {
4910d4
-  return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
4910d4
+  /* SH6 operand in the rldixor instruction.  */
4910d4
+  if (PPC_OP (insn) == 4)
4910d4
+    return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 5);
4910d4
+  else
4910d4
+    return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
4910d4
 }
4910d4
 
4910d4
 static long
4910d4
@@ -2017,7 +2026,11 @@ extract_sh6 (unsigned long insn,
4910d4
 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
4910d4
 	     int *invalid ATTRIBUTE_UNUSED)
4910d4
 {
4910d4
-  return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
4910d4
+  /* SH6 operand in the rldixor instruction.  */
4910d4
+  if (PPC_OP (insn) == 4)
4910d4
+    return ((insn >> 6) & 0x1f) | ((insn << 5) & 0x20);
4910d4
+  else
4910d4
+    return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
4910d4
 }
4910d4
 
4910d4
 /* The SPR field in an XFX form instruction.  This is flipped--the
4910d4
@@ -2600,6 +2613,9 @@ extract_vleil (unsigned long insn,
4910d4
 /* A VX form instruction with a VA tertiary opcode.  */
4910d4
 #define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
4910d4
 
4910d4
+#define VXASH(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
4910d4
+#define VXASH_MASK VXASH (0x3f, 0x1f)
4910d4
+
4910d4
 /* An X form instruction.  */
4910d4
 #define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
4910d4
 
4910d4
@@ -2636,6 +2652,9 @@ extract_vleil (unsigned long insn,
4910d4
 /* A X form instruction for Quad-Precision FP Instructions with RC bit.  */
4910d4
 #define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
4910d4
 
4910d4
+/* An X form instruction with the RA bits specified as two ops.  */
4910d4
+#define XMMF(op, xop, mop0, mop1) (X ((op), (xop)) | ((mop0) & 3) << 19 | ((mop1) & 7) << 16)
4910d4
+
4910d4
 /* A Z form instruction with the RC bit specified.  */
4910d4
 #define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
4910d4
 
4910d4
@@ -2688,6 +2707,9 @@ extract_vleil (unsigned long insn,
4910d4
 /* An X form wait instruction with everything filled in except the WC field.  */
4910d4
 #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4910d4
 
4910d4
+/* The mask for an XMMF form instruction.  */
4910d4
+#define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
4910d4
+
4910d4
 /* The mask for a Z form instruction.  */
4910d4
 #define Z_MASK ZRC (0x3f, 0x1ff, 1)
4910d4
 #define Z2_MASK ZRC (0x3f, 0xff, 1)
4910d4
@@ -3132,6 +3154,7 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"machhwu.",	XO (4,	12,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,	{RT, RA, RB}},
4910d4
 {"ps_muls1",	A  (4,	13,0),	AFRB_MASK,   PPCPS,	PPCNONE,	{FRT, FRA, FRC}},
4910d4
 {"ps_muls1.",	A  (4,	13,1),	AFRB_MASK,   PPCPS,	PPCNONE,	{FRT, FRA, FRC}},
4910d4
+{"rldixor",	VXASH(4,26),	VXASH_MASK,  POWER9,	0,		{RA, RS, SH6, RB}},
4910d4
 {"ps_madds0",	A  (4,	14,0),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 {"ps_madds0.",	A  (4,	14,1),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 {"ps_madds1",	A  (4,	15,0),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
@@ -3173,6 +3196,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"ps_msub.",	A  (4,	28,1),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 {"ps_madd",	A  (4,	29,0),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 {"ps_madd.",	A  (4,	29,1),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
+{"xor3",	VXA(4,	54),	VXA_MASK,    POWER9,	0,		{RA, RS, RB, RC}},
4910d4
+{"nandxor",	VXA(4,	55),	VXA_MASK,    POWER9,	0,		{RA, RS, RB, RC}},
4910d4
 {"ps_nmsub",	A  (4,	30,0),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 {"ps_nmsub.",	A  (4,	30,1),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
 {"ps_nmadd",	A  (4,	31,0),	A_MASK,      PPCPS,	PPCNONE,	{FRT, FRA, FRC, FRB}},
4910d4
@@ -4912,7 +4937,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"dcbfep",	XRT(31,127,0),	XRT_MASK,    E500MC|PPCA2|PPCVLE, PPCNONE, {RA0, RB}},
4910d4
  
4910d4
-{"setb",	X(31,128),	XRB_MASK|(3<<16), POWER9, PPCNONE,	{RT, BFA}},
4910d4
+{"setb",	VX(31,256),  VXVB_MASK|(3<<16), POWER9,	0,		{RT, BFA}},
4910d4
+{"setbool",	VX(31,257),  VXVB_MASK,         POWER9,	0,		{RT, BA}},
4910d4
 
4910d4
 {"wrtee",	X(31,131),	XRARB_MASK,  PPC403|BOOKE|PPCA2|PPC476|PPCVLE, PPCNONE, {RS}},
4910d4
  
4910d4
@@ -4962,6 +4988,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"prtyw",	X(31,154),	XRB_MASK, POWER6|PPCA2|PPC476, PPCNONE,	{RA, RS}},
4910d4
 
4910d4
+{"brw",		X(31,155),	XRB_MASK,    POWER9,	0,		{RA, RS}},
4910d4
+
4910d4
 {"stdepx",	X(31,157),	X_MASK,	     E500MC|PPCA2|PPCVLE, PPCNONE, {RS, RA0, RB}},
4910d4
  
4910d4
 {"stwepx",	X(31,159),	X_MASK,	     E500MC|PPCA2|PPCVLE, PPCNONE, {RS, RA0, RB}},
4910d4
@@ -4999,6 +5027,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 
4910d4
 {"prtyd",	X(31,186),	XRB_MASK, POWER6|PPCA2,	PPCNONE,	{RA, RS}},
4910d4
 
4910d4
+{"brd",		X(31,187),	XRB_MASK,    POWER9,	0,		{RA, RS}},
4910d4
+
4910d4
 {"cmprb",	X(31,192),	XCMP_MASK,   POWER9,	PPCNONE,	{BF, L, RA, RB}},
4910d4
 
4910d4
 {"icblq.",	XRC(31,198,1),	X_MASK,      E6500,	PPCNONE,	{CT, RA0, RB}},
4910d4
@@ -5037,6 +5067,8 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"sleq",	XRC(31,217,0),	X_MASK,      M601,	PPCNONE,	{RA, RS, RB}},
4910d4
 {"sleq.",	XRC(31,217,1),	X_MASK,      M601,	PPCNONE,	{RA, RS, RB}},
4910d4
 
4910d4
+{"brh",		X(31,219),	XRB_MASK,    POWER9,	0,		{RA, RS}},
4910d4
+
4910d4
 {"stbepx",	X(31,223),	X_MASK,      E500MC|PPCA2|PPCVLE, PPCNONE, {RS, RA0, RB}},
4910d4
  
4910d4
 {"cmpeqb",	X(31,224),	XCMPL_MASK,   POWER9,	PPCNONE,	{BF, RA, RB}},
4910d4
@@ -6909,6 +6941,13 @@ const struct powerpc_opcode powerpc_opco
4910d4
 {"mffs",	XRC(63,583,0),	XRARB_MASK,  COM,	PPCEFS,		{FRT}},
4910d4
 {"mffs.",	XRC(63,583,1),	XRARB_MASK,  COM,	PPCEFS,		{FRT}},
4910d4
 
4910d4
+{"mffsce",	XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE,	{FRT}},
4910d4
+{"mffscdrn",	XMMF(63,583,2,4), XMMF_MASK,         POWER9, PPCVLE,	{FRT, FRB}},
4910d4
+{"mffscdrni",	XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE,	{FRT, DRM}},
4910d4
+{"mffscrn",	XMMF(63,583,2,6), XMMF_MASK,         POWER9, PPCVLE,	{FRT, FRB}},
4910d4
+{"mffscrni",	XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE,	{FRT, RM}},
4910d4
+{"mffsl",	XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE,	{FRT}},
4910d4
+
4910d4
 {"dcmpuq",	X(63,642),	X_MASK,      POWER6,	PPCNONE,	{BF, FRAp, FRBp}},
4910d4
 
4910d4
 {"xscmpuqp",	X(63,644),      XBF_MASK,    PPCVSX3,	PPCNONE,	{BF, VA, VB}},
4910d4
Only in binutils-2.25.1/opcodes: ppc-opc.c.orig
4910d4
Only in binutils-2.25.1/opcodes: ppc-opc.c.rej