A GNU collection of binary utilities
CentOS Sources
2016-11-03 4910d4899eb386109b182cef498498c6f5cc7e3f
commit | author | age
4910d4 1 diff -rup binutils-2.25.1.orig/bfd/bfd-in2.h binutils-2.25.1/bfd/bfd-in2.h
CS 2 --- binutils-2.25.1.orig/bfd/bfd-in2.h    2016-05-06 09:56:58.700611803 +0100
3 +++ binutils-2.25.1/bfd/bfd-in2.h    2016-05-06 12:20:48.501441990 +0100
4 @@ -3253,6 +3253,7 @@ instruction.  */
5    BFD_RELOC_PPC_VLE_SDAREL_HI16D,
6    BFD_RELOC_PPC_VLE_SDAREL_HA16A,
7    BFD_RELOC_PPC_VLE_SDAREL_HA16D,
8 +  BFD_RELOC_PPC_REL16DX_HA,
9    BFD_RELOC_PPC64_HIGHER,
10    BFD_RELOC_PPC64_HIGHER_S,
11    BFD_RELOC_PPC64_HIGHEST,
12 Only in binutils-2.25.1/bfd: bfd-in2.h.orig
13 diff -rup binutils-2.25.1.orig/bfd/elf32-ppc.c binutils-2.25.1/bfd/elf32-ppc.c
14 --- binutils-2.25.1.orig/bfd/elf32-ppc.c    2016-05-06 09:56:58.689611747 +0100
15 +++ binutils-2.25.1/bfd/elf32-ppc.c    2016-05-06 12:20:48.504442008 +0100
16 @@ -1731,6 +1731,21 @@ static reloc_howto_type ppc_elf_howto_ra
17       0xffff,        /* dst_mask */
18       TRUE),            /* pcrel_offset */
19  
20 +  /* Like R_PPC_REL16_HA but for split field in addpcis.  */
21 +  HOWTO (R_PPC_REL16DX_HA,    /* type */
22 +     16,            /* rightshift */
23 +     2,            /* size (0 = byte, 1 = short, 2 = long) */
24 +     16,            /* bitsize */
25 +     TRUE,            /* pc_relative */
26 +     0,            /* bitpos */
27 +     complain_overflow_signed, /* complain_on_overflow */
28 +     ppc_elf_addr16_ha_reloc, /* special_function */
29 +     "R_PPC_REL16DX_HA",    /* name */
30 +     FALSE,            /* partial_inplace */
31 +     0,            /* src_mask */
32 +     0x1fffc1,        /* dst_mask */
33 +     TRUE),            /* pcrel_offset */
34 +
35    /* GNU extension to record C++ vtable hierarchy.  */
36    HOWTO (R_PPC_GNU_VTINHERIT,    /* type */
37       0,            /* rightshift */
38 @@ -1989,6 +2004,7 @@ ppc_elf_reloc_type_lookup (bfd *abfd ATT
39      case BFD_RELOC_LO16_PCREL:        r = R_PPC_REL16_LO;        break;
40      case BFD_RELOC_HI16_PCREL:        r = R_PPC_REL16_HI;        break;
41      case BFD_RELOC_HI16_S_PCREL:    r = R_PPC_REL16_HA;        break;
42 +    case BFD_RELOC_PPC_REL16DX_HA:    r = R_PPC_REL16DX_HA;        break;
43      case BFD_RELOC_VTABLE_INHERIT:    r = R_PPC_GNU_VTINHERIT;    break;
44      case BFD_RELOC_VTABLE_ENTRY:    r = R_PPC_GNU_VTENTRY;        break;
45      }
46 @@ -2058,7 +2074,10 @@ ppc_elf_addr16_ha_reloc (bfd *abfd ATTRI
47               bfd *output_bfd,
48               char **error_message ATTRIBUTE_UNUSED)
49  {
50 -  bfd_vma relocation;
51 +  enum elf_ppc_reloc_type r_type;
52 +  long insn;
53 +  bfd_size_type octets;
54 +  bfd_vma value;
55  
56    if (output_bfd != NULL)
57      {
58 @@ -2066,20 +2085,28 @@ ppc_elf_addr16_ha_reloc (bfd *abfd ATTRI
59        return bfd_reloc_ok;
60      }
61  
62 -  if (bfd_is_com_section (symbol->section))
63 -    relocation = 0;
64 -  else
65 -    relocation = symbol->value;
66 -
67 -  relocation += symbol->section->output_section->vma;
68 -  relocation += symbol->section->output_offset;
69 -  relocation += reloc_entry->addend;
70 -  if (reloc_entry->howto->pc_relative)
71 -    relocation -= reloc_entry->address;
72 -
73 -  reloc_entry->addend += (relocation & 0x8000) << 1;
74 -
75 -  return bfd_reloc_continue;
76 +  reloc_entry->addend += 0x8000;
77 +  r_type = reloc_entry->howto->type;
78 +  if (r_type != R_PPC_REL16DX_HA)
79 +    return bfd_reloc_continue;
80 +
81 +  value = 0;
82 +  if (!bfd_is_com_section (symbol->section))
83 +    value = symbol->value;
84 +  value += (reloc_entry->addend
85 +        + symbol->section->output_offset
86 +        + symbol->section->output_section->vma);
87 +  value -= (reloc_entry->address
88 +        + input_section->output_offset
89 +        + input_section->output_section->vma);
90 +  value >>= 16;
91 +
92 +  octets = reloc_entry->address * bfd_octets_per_byte (abfd);
93 +  insn = bfd_get_32 (abfd, (bfd_byte *) data + octets);
94 +  insn &= ~0x1fffc1;
95 +  insn |= (value & 0xffc1) | ((value & 0x3e) << 15);
96 +  bfd_put_32 (abfd, insn, (bfd_byte *) data + octets);
97 +  return bfd_reloc_ok;
98  }
99  
100  static bfd_reloc_status_type
101 @@ -4243,6 +4270,7 @@ ppc_elf_check_relocs (bfd *abfd,
102      case R_PPC_REL16_LO:
103      case R_PPC_REL16_HI:
104      case R_PPC_REL16_HA:
105 +    case R_PPC_REL16DX_HA:
106        ppc_elf_tdata (abfd)->has_rel16 = 1;
107        break;
108  
109 @@ -7543,7 +7571,9 @@ is_insn_ds_form (unsigned int insn)
110  static bfd_boolean
111  is_insn_dq_form (unsigned int insn)
112  {
113 -  return (insn & (0x3f << 26)) == 56u << 26; /* lq */
114 +  return ((insn & (0x3f << 26)) == 56u << 26 /* lq */
115 +      || ((insn & (0x3f << 26)) == (61u << 26) /* lxv, stxv */
116 +          && (insn & 3) == 1));
117  }
118  
119  /* The RELOCATE_SECTION function is called by the ELF backend linker
120 @@ -8411,6 +8441,7 @@ ppc_elf_relocate_section (bfd *output_bf
121      case R_PPC_REL16_LO:
122      case R_PPC_REL16_HI:
123      case R_PPC_REL16_HA:
124 +    case R_PPC_REL16DX_HA:
125        break;
126  
127      case R_PPC_REL32:
128 @@ -9112,6 +9143,7 @@ ppc_elf_relocate_section (bfd *output_bf
129  
130      case R_PPC_ADDR16_HA:
131      case R_PPC_REL16_HA:
132 +    case R_PPC_REL16DX_HA:
133      case R_PPC_SECTOFF_HA:
134      case R_PPC_TPREL16_HA:
135      case R_PPC_DTPREL16_HA:
136 @@ -9169,10 +9201,12 @@ ppc_elf_relocate_section (bfd *output_bf
137            mask = 15;
138          else
139            break;
140 -        lobit = mask & (relocation + addend);
141 +        relocation += addend;
142 +        addend = insn & mask;
143 +        lobit = mask & relocation;
144          if (lobit != 0)
145            {
146 -        addend -= lobit;
147 +        relocation ^= lobit;
148          info->callbacks->einfo
149            (_("%P: %H: error: %s against `%s' not a multiple of %u\n"),
150             input_bfd, input_section, rel->r_offset,
151 @@ -9180,7 +9214,6 @@ ppc_elf_relocate_section (bfd *output_bf
152          bfd_set_error (bfd_error_bad_value);
153          ret = FALSE;
154            }
155 -        addend += insn & mask;
156        }
157        break;
158      }
159 @@ -9239,8 +9272,30 @@ ppc_elf_relocate_section (bfd *output_bf
160          }
161      }
162  
163 -      r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
164 -                    rel->r_offset, relocation, addend);
165 +      if (r_type == R_PPC_REL16DX_HA)
166 +    {
167 +      /* Split field reloc isn't handled by _bfd_final_link_relocate.  */
168 +      if (rel->r_offset + 4 > input_section->size)
169 +        r = bfd_reloc_outofrange;
170 +      else
171 +        {
172 +          unsigned int insn;
173 +
174 +          relocation += addend;
175 +          relocation -= (rel->r_offset
176 +                 + input_section->output_offset
177 +                 + input_section->output_section->vma);
178 +          relocation >>= 16;
179 +          insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
180 +          insn &= ~0x1fffc1;
181 +          insn |= (relocation & 0xffc1) | ((relocation & 0x3e) << 15);
182 +          bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
183 +          r = bfd_reloc_ok;
184 +        }
185 +    }
186 +      else
187 +    r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
188 +                      rel->r_offset, relocation, addend);
189  
190        if (r != bfd_reloc_ok)
191      {
192 Only in binutils-2.25.1/bfd: elf32-ppc.c.orig
193 diff -rup binutils-2.25.1.orig/bfd/elf64-ppc.c binutils-2.25.1/bfd/elf64-ppc.c
194 --- binutils-2.25.1.orig/bfd/elf64-ppc.c    2016-05-06 09:56:58.699611798 +0100
195 +++ binutils-2.25.1/bfd/elf64-ppc.c    2016-05-06 12:20:48.508442032 +0100
196 @@ -2018,6 +2018,21 @@ static reloc_howto_type ppc64_elf_howto_
197       0xffff,        /* dst_mask */
198       TRUE),            /* pcrel_offset */
199  
200 +  /* Like R_PPC64_REL16_HA but for split field in addpcis.  */
201 +  HOWTO (R_PPC64_REL16DX_HA,    /* type */
202 +     16,            /* rightshift */
203 +     2,            /* size (0 = byte, 1 = short, 2 = long) */
204 +     16,            /* bitsize */
205 +     TRUE,            /* pc_relative */
206 +     0,            /* bitpos */
207 +     complain_overflow_signed, /* complain_on_overflow */
208 +     ppc64_elf_ha_reloc,    /* special_function */
209 +     "R_PPC64_REL16DX_HA",    /* name */
210 +     FALSE,            /* partial_inplace */
211 +     0,            /* src_mask */
212 +     0x1fffc1,        /* dst_mask */
213 +     TRUE),            /* pcrel_offset */
214 +
215    /* Like R_PPC64_ADDR16_HI, but no overflow.  */
216    HOWTO (R_PPC64_ADDR16_HIGH,    /* type */
217       16,            /* rightshift */
218 @@ -2411,6 +2426,8 @@ ppc64_elf_reloc_type_lookup (bfd *abfd A
219        break;
220      case BFD_RELOC_HI16_S_PCREL:        r = R_PPC64_REL16_HA;
221        break;
222 +    case BFD_RELOC_PPC_REL16DX_HA:        r = R_PPC64_REL16DX_HA;
223 +      break;
224      case BFD_RELOC_PPC64_ADDR64_LOCAL:        r = R_PPC64_ADDR64_LOCAL;
225        break;
226      case BFD_RELOC_VTABLE_INHERIT:        r = R_PPC64_GNU_VTINHERIT;
227 @@ -2468,6 +2485,11 @@ ppc64_elf_ha_reloc (bfd *abfd, arelent *
228              void *data, asection *input_section,
229              bfd *output_bfd, char **error_message)
230  {
231 +  enum elf_ppc64_reloc_type r_type;
232 +  long insn;
233 +  bfd_size_type octets;
234 +  bfd_vma value;
235 +
236    /* If this is a relocatable link (output_bfd test tells us), just
237       call the generic function.  Any adjustment will be done at final
238       link time.  */
239 @@ -2479,7 +2501,29 @@ ppc64_elf_ha_reloc (bfd *abfd, arelent *
240       We won't actually be using the low 16 bits, so trashing them
241       doesn't matter.  */
242    reloc_entry->addend += 0x8000;
243 -  return bfd_reloc_continue;
244 +  r_type = reloc_entry->howto->type;
245 +  if (r_type != R_PPC64_REL16DX_HA)
246 +    return bfd_reloc_continue;
247 +
248 +  value = 0;
249 +  if (!bfd_is_com_section (symbol->section))
250 +    value = symbol->value;
251 +  value += (reloc_entry->addend
252 +        + symbol->section->output_offset
253 +        + symbol->section->output_section->vma);
254 +  value -= (reloc_entry->address
255 +        + input_section->output_offset
256 +        + input_section->output_section->vma);
257 +  value = (bfd_signed_vma) value >> 16;
258 +
259 +  octets = reloc_entry->address * bfd_octets_per_byte (abfd);
260 +  insn = bfd_get_32 (abfd, (bfd_byte *) data + octets);
261 +  insn &= ~0x1fffc1;
262 +  insn |= (value & 0xffc1) | ((value & 0x3e) << 15);
263 +  bfd_put_32 (abfd, insn, (bfd_byte *) data + octets);
264 +  if (value + 0x8000 > 0xffff)
265 +    return bfd_reloc_overflow;
266 +  return bfd_reloc_ok;
267  }
268  
269  static bfd_reloc_status_type
270 @@ -5481,6 +5525,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
271      case R_PPC64_REL16_LO:
272      case R_PPC64_REL16_HI:
273      case R_PPC64_REL16_HA:
274 +    case R_PPC64_REL16DX_HA:
275        break;
276  
277        /* Not supported as a dynamic relocation.  */
278 @@ -14274,6 +14319,7 @@ ppc64_elf_relocate_section (bfd *output_
279      case R_PPC64_REL16_LO:
280      case R_PPC64_REL16_HI:
281      case R_PPC64_REL16_HA:
282 +    case R_PPC64_REL16DX_HA:
283        break;
284  
285      case R_PPC64_REL14:
286 @@ -14689,6 +14732,7 @@ ppc64_elf_relocate_section (bfd *output_
287        break;
288  
289      case R_PPC64_REL16_HA:
290 +    case R_PPC64_REL16DX_HA:
291      case R_PPC64_ADDR16_HA:
292      case R_PPC64_ADDR16_HIGHA:
293      case R_PPC64_ADDR16_HIGHERA:
294 @@ -14744,16 +14788,20 @@ ppc64_elf_relocate_section (bfd *output_
295      case R_PPC64_DTPREL16_LO_DS:
296        insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
297        mask = 3;
298 -      /* If this reloc is against an lq insn, then the value must be
299 -         a multiple of 16.  This is somewhat of a hack, but the
300 -         "correct" way to do this by defining _DQ forms of all the
301 -         _DS relocs bloats all reloc switches in this file.  It
302 -         doesn't seem to make much sense to use any of these relocs
303 -         in data, so testing the insn should be safe.  */
304 -      if ((insn & (0x3f << 26)) == (56u << 26))
305 +      /* If this reloc is against an lq, lxv, or stxv insn, then
306 +         the value must be a multiple of 16.  This is somewhat of
307 +         a hack, but the "correct" way to do this by defining _DQ
308 +         forms of all the _DS relocs bloats all reloc switches in
309 +         this file.  It doesn't make much sense to use these
310 +         relocs in data, so testing the insn should be safe.  */
311 +      if ((insn & (0x3f << 26)) == (56u << 26)
312 +          || ((insn & (0x3f << 26)) == (61u << 26) && (insn & 3) == 1))
313          mask = 15;
314 -      if (((relocation + addend) & mask) != 0)
315 +      relocation += addend;
316 +      addend = insn & (mask ^ 3);
317 +      if ((relocation & mask) != 0)
318          {
319 +          relocation ^= relocation & mask;
320            info->callbacks->einfo
321          (_("%P: %H: error: %s not a multiple of %u\n"),
322           input_bfd, input_section, rel->r_offset,
323 @@ -14811,8 +14859,30 @@ ppc64_elf_relocate_section (bfd *output_
324          }
325      }
326  
327 -      r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
328 -                    rel->r_offset, relocation, addend);
329 +      if (r_type == R_PPC64_REL16DX_HA)
330 +    {
331 +      /* Split field reloc isn't handled by _bfd_final_link_relocate.  */
332 +      if (rel->r_offset + 4 > input_section->size)
333 +        r = bfd_reloc_outofrange;
334 +      else
335 +        {
336 +          relocation += addend;
337 +          relocation -= (rel->r_offset
338 +                 + input_section->output_offset
339 +                 + input_section->output_section->vma);
340 +          relocation = (bfd_signed_vma) relocation >> 16;
341 +          insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
342 +          insn &= ~0x1fffc1;
343 +          insn |= (relocation & 0xffc1) | ((relocation & 0x3e) << 15);
344 +          bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
345 +          r = bfd_reloc_ok;
346 +          if (relocation + 0x8000 > 0xffff)
347 +        r = bfd_reloc_overflow;
348 +        }
349 +    }
350 +      else
351 +    r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
352 +                      rel->r_offset, relocation, addend);
353  
354        if (r != bfd_reloc_ok)
355      {
356 Only in binutils-2.25.1/bfd: elf64-ppc.c.orig
357 Only in binutils-2.25.1.orig/bfd: elf64-ppc.c.ppc64-pie~
358 diff -rup binutils-2.25.1.orig/bfd/libbfd.h binutils-2.25.1/bfd/libbfd.h
359 --- binutils-2.25.1.orig/bfd/libbfd.h    2016-05-06 09:56:58.694611773 +0100
360 +++ binutils-2.25.1/bfd/libbfd.h    2016-05-06 12:20:48.508442032 +0100
361 @@ -1373,6 +1373,7 @@ static const char *const bfd_reloc_code_
362    "BFD_RELOC_PPC_VLE_SDAREL_HI16D",
363    "BFD_RELOC_PPC_VLE_SDAREL_HA16A",
364    "BFD_RELOC_PPC_VLE_SDAREL_HA16D",
365 +  "BFD_RELOC_PPC_REL16DX_HA",
366    "BFD_RELOC_PPC64_HIGHER",
367    "BFD_RELOC_PPC64_HIGHER_S",
368    "BFD_RELOC_PPC64_HIGHEST",
369 diff -rup binutils-2.25.1.orig/bfd/reloc.c binutils-2.25.1/bfd/reloc.c
370 --- binutils-2.25.1.orig/bfd/reloc.c    2016-05-06 09:56:58.697611788 +0100
371 +++ binutils-2.25.1/bfd/reloc.c    2016-05-06 12:20:48.510442044 +0100
372 @@ -2872,6 +2872,8 @@ ENUMX
373  ENUMX
374    BFD_RELOC_PPC_VLE_SDAREL_HA16D
375  ENUMX
376 +  BFD_RELOC_PPC_REL16DX_HA
377 +ENUMX
378    BFD_RELOC_PPC64_HIGHER
379  ENUMX
380    BFD_RELOC_PPC64_HIGHER_S
381 Only in binutils-2.25.1/bfd: reloc.c.orig
382 diff -rup binutils-2.25.1.orig/elfcpp/powerpc.h binutils-2.25.1/elfcpp/powerpc.h
383 --- binutils-2.25.1.orig/elfcpp/powerpc.h    2016-05-06 09:56:59.278614752 +0100
384 +++ binutils-2.25.1/elfcpp/powerpc.h    2016-05-06 12:20:48.510442044 +0100
385 @@ -197,6 +197,7 @@ enum
386    R_PPC_VLE_SDAREL_HA16A = 231,
387    R_PPC_VLE_SDAREL_HA16D = 232,
388  
389 +  R_POWERPC_REL16DX_HA = 246,
390    R_PPC64_JMP_IREL = 247,
391    R_POWERPC_IRELATIVE = 248,
392    R_POWERPC_REL16 = 249,
393 diff -rup binutils-2.25.1.orig/gas/config/tc-ppc.c binutils-2.25.1/gas/config/tc-ppc.c
394 --- binutils-2.25.1.orig/gas/config/tc-ppc.c    2016-05-06 09:56:59.436615558 +0100
395 +++ binutils-2.25.1/gas/config/tc-ppc.c    2016-05-06 13:00:37.040798530 +0100
396 @@ -1294,6 +1294,7 @@ PowerPC options:\n\
397  -mpower6, -mpwr6        generate code for Power6 architecture\n\
398  -mpower7, -mpwr7        generate code for Power7 architecture\n\
399  -mpower8, -mpwr8        generate code for Power8 architecture\n\
400 +-mpower9, -mpwr9        generate code for Power9 architecture\n\
401  -mcell                  generate code for Cell Broadband Engine architecture\n\
402  -mcom                   generate code Power/PowerPC common instructions\n\
403  -many                   generate code for any architecture (PWR/PWRX/PPC)\n"));
404 @@ -1561,6 +1562,8 @@ ppc_setup_opcodes (void)
405          }
406          }
407        bad_insn |= insn_validate (op);
408 +      if (bad_insn)
409 +        fprintf (stderr, "validate fail for op %s\n", op->name);
410      }
411  
412        if ((ppc_cpu & op->flags) != 0
413 @@ -1614,6 +1617,8 @@ ppc_setup_opcodes (void)
414          }
415  
416        bad_insn |= insn_validate (op);
417 +      if (bad_insn)
418 +        fprintf (stderr, "val fail 2 for op %s\n", op->name);
419      }
420  
421        if ((ppc_cpu & op->flags) != 0
422 @@ -3087,6 +3092,11 @@ md_assemble (char *str)
423            break;
424          }
425  
426 +          /* addpcis.  */
427 +          if (opcode->opcode == (19 << 26) + (2 << 1)
428 +          && reloc == BFD_RELOC_HI16_S)
429 +        reloc = BFD_RELOC_PPC_REL16DX_HA;
430 +
431            /* If VLE-mode convert LO/HI/HA relocations.  */
432                  if (opcode->flags & PPC_OPCODE_VLE)
433          {
434 @@ -6443,13 +6453,14 @@ ppc_handle_align (struct frag *fragP)
435  
436        if ((ppc_cpu & PPC_OPCODE_POWER6) != 0
437        || (ppc_cpu & PPC_OPCODE_POWER7) != 0
438 -      || (ppc_cpu & PPC_OPCODE_POWER8) != 0)
439 +      || (ppc_cpu & PPC_OPCODE_POWER8) != 0
440 +      || (ppc_cpu & PPC_OPCODE_POWER9) != 0)
441      {
442 -      /* For power6, power7 and power8, we want the last nop to be a group
443 -         terminating one.  Do this by inserting an rs_fill frag immediately
444 -         after this one, with its address set to the last nop location.
445 -         This will automatically reduce the number of nops in the current
446 -         frag by one.  */
447 +      /* For power6, power7, power8 and power9, we want the last nop to be
448 +         a group terminating one.  Do this by inserting an rs_fill frag
449 +         immediately after this one, with its address set to the last nop
450 +         location.  This will automatically reduce the number of nops in
451 +         the current frag by one.  */
452        if (count > 4)
453          {
454            struct frag *group_nop = xmalloc (SIZEOF_STRUCT_FRAG + 4);
455 @@ -6464,13 +6475,14 @@ ppc_handle_align (struct frag *fragP)
456          }
457  
458        if ((ppc_cpu & PPC_OPCODE_POWER7) != 0
459 -          || (ppc_cpu & PPC_OPCODE_POWER8) != 0)
460 +          || (ppc_cpu & PPC_OPCODE_POWER8) != 0
461 +          || (ppc_cpu & PPC_OPCODE_POWER9) != 0)
462          {
463            if (ppc_cpu & PPC_OPCODE_E500MC)
464          /* e500mc group terminating nop: "ori 0,0,0".  */
465          md_number_to_chars (dest, 0x60000000, 4);
466            else
467 -        /* power7/power8 group terminating nop: "ori 2,2,0".  */
468 +        /* power7/power8/power9 group terminating nop: "ori 2,2,0".  */
469          md_number_to_chars (dest, 0x60420000, 4);
470          }
471        else
472 @@ -6488,6 +6500,7 @@ md_apply_fix (fixS *fixP, valueT *valP,
473  {
474    valueT value = * valP;
475    offsetT fieldval;
476 +  unsigned long insn = 0;
477    const struct powerpc_operand *operand;
478  
479  #ifdef OBJ_ELF
480 @@ -6496,6 +6509,9 @@ md_apply_fix (fixS *fixP, valueT *valP,
481        /* Hack around bfd_install_relocation brain damage.  */
482        if (fixP->fx_pcrel)
483      value += fixP->fx_frag->fr_address + fixP->fx_where;
484 +
485 +      if (fixP->fx_addsy == abs_section_sym)
486 +    fixP->fx_done = 1;
487      }
488    else
489      fixP->fx_done = 1;
490 @@ -6606,6 +6622,7 @@ md_apply_fix (fixS *fixP, valueT *valP,
491  
492      case BFD_RELOC_HI16_S:
493      case BFD_RELOC_HI16_S_PCREL:
494 +    case BFD_RELOC_PPC_REL16DX_HA:
495  #ifdef OBJ_ELF
496        if (REPORT_OVERFLOW_HI && ppc_obj64)
497      {
498 @@ -6652,7 +6669,6 @@ md_apply_fix (fixS *fixP, valueT *valP,
499      {
500        /* Handle relocs in an insn.  */
501        char *where;
502 -      unsigned long insn;
503  
504        switch (fixP->fx_r_type)
505      {
506 @@ -7065,6 +7081,7 @@ md_apply_fix (fixS *fixP, valueT *valP,
507      case BFD_RELOC_LO16_PCREL:
508      case BFD_RELOC_HI16_PCREL:
509      case BFD_RELOC_HI16_S_PCREL:
510 +    case BFD_RELOC_PPC_REL16DX_HA:
511      case BFD_RELOC_64_PCREL:
512      case BFD_RELOC_32_PCREL:
513      case BFD_RELOC_16_PCREL:
514 Only in binutils-2.25.1/gas/config: tc-ppc.c.orig
515 diff -rup binutils-2.25.1.orig/gas/doc/as.texinfo binutils-2.25.1/gas/doc/as.texinfo
516 --- binutils-2.25.1.orig/gas/doc/as.texinfo    2016-05-06 09:56:59.444615599 +0100
517 +++ binutils-2.25.1/gas/doc/as.texinfo    2016-05-06 12:20:48.513442062 +0100
518 @@ -473,7 +473,8 @@ gcc(1), ld(1), and the Info entries for
519      @b{-m440}|@b{-m464}|@b{-m476}|@b{-m7400}|@b{-m7410}|@b{-m7450}|@b{-m7455}|@b{-m750cl}|@b{-mppc64}|
520      @b{-m620}|@b{-me500}|@b{-e500x2}|@b{-me500mc}|@b{-me500mc64}|@b{-me5500}|@b{-me6500}|@b{-mppc64bridge}|
521      @b{-mbooke}|@b{-mpower4}|@b{-mpwr4}|@b{-mpower5}|@b{-mpwr5}|@b{-mpwr5x}|@b{-mpower6}|@b{-mpwr6}|
522 -    @b{-mpower7}|@b{-mpwr7}|@b{-mpower8}|@b{-mpwr8}|@b{-ma2}|@b{-mcell}|@b{-mspe}|@b{-mtitan}|@b{-me300}|@b{-mcom}]
523 +    @b{-mpower7}|@b{-mpwr7}|@b{-mpower8}|@b{-mpwr8}|@b{-mpower9}|@b{-mpwr9}@b{-ma2}|
524 +    @b{-mcell}|@b{-mspe}|@b{-mtitan}|@b{-me300}|@b{-mcom}]
525     [@b{-many}] [@b{-maltivec}|@b{-mvsx}|@b{-mhtm}|@b{-mvle}]
526     [@b{-mregnames}|@b{-mno-regnames}]
527     [@b{-mrelocatable}|@b{-mrelocatable-lib}|@b{-K PIC}] [@b{-memb}]
528 Only in binutils-2.25.1/gas/doc: as.texinfo.orig
529 diff -rup binutils-2.25.1.orig/gas/doc/c-ppc.texi binutils-2.25.1/gas/doc/c-ppc.texi
530 --- binutils-2.25.1.orig/gas/doc/c-ppc.texi    2016-05-06 09:56:59.446615609 +0100
531 +++ binutils-2.25.1/gas/doc/c-ppc.texi    2016-05-06 12:20:48.514442068 +0100
532 @@ -141,6 +141,9 @@ Generate code for Power7 architecture.
533  @item -mpower8, -mpwr8
534  Generate code for Power8 architecture.
535  
536 +@item -mpower9, -mpwr9
537 +Generate code for Power9 architecture.
538 +
539  @item -mcell
540  @item -mcell
541  Generate code for Cell Broadband Engine architecture.
542 Only in binutils-2.25.1/gas/testsuite/gas/ppc: altivec3.d
543 Only in binutils-2.25.1/gas/testsuite/gas/ppc: altivec3.s
544 diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/power8.d binutils-2.25.1/gas/testsuite/gas/ppc/power8.d
545 --- binutils-2.25.1.orig/gas/testsuite/gas/ppc/power8.d    2016-05-06 09:57:00.087618880 +0100
546 +++ binutils-2.25.1/gas/testsuite/gas/ppc/power8.d    2016-05-06 12:20:48.514442068 +0100
547 @@ -152,4 +152,12 @@ Disassembly of section \.text:
548   238:    (fe c7 2f 8c|8c 2f c7 fe)     fmrgew  f22,f7,f5
549   23c:    (7c 00 71 9c|9c 71 00 7c)     msgsnd  r14
550   240:    (7c 00 b9 dc|dc b9 00 7c)     msgclr  r23
551 +.*:    (7d 00 2e 99|99 2e 00 7d)     lxvd2x  vs40,0,r5
552 +.*:    (7d 00 2e 99|99 2e 00 7d)     lxvd2x  vs40,0,r5
553 +.*:    (7d 54 36 98|98 36 54 7d)     lxvd2x  vs10,r20,r6
554 +.*:    (7d 54 36 98|98 36 54 7d)     lxvd2x  vs10,r20,r6
555 +.*:    (7d 20 3f 99|99 3f 20 7d)     stxvd2x vs41,0,r7
556 +.*:    (7d 20 3f 99|99 3f 20 7d)     stxvd2x vs41,0,r7
557 +.*:    (7d 75 47 98|98 47 75 7d)     stxvd2x vs11,r21,r8
558 +.*:    (7d 75 47 98|98 47 75 7d)     stxvd2x vs11,r21,r8
559  #pass
560 diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/power8.s binutils-2.25.1/gas/testsuite/gas/ppc/power8.s
561 --- binutils-2.25.1.orig/gas/testsuite/gas/ppc/power8.s    2016-05-06 09:57:00.087618880 +0100
562 +++ binutils-2.25.1/gas/testsuite/gas/ppc/power8.s    2016-05-06 12:20:48.514442068 +0100
563 @@ -144,3 +144,11 @@ power8:
564      fmrgew       22,7,5
565      msgsnd       14
566      msgclr       23
567 +    lxvx         40,0,5
568 +    lxvd2x       40,0,5
569 +    lxvx         10,20,6
570 +    lxvd2x       10,20,6
571 +    stxvx        41,0,7
572 +    stxvd2x      41,0,7
573 +    stxvx        11,21,8
574 +    stxvd2x      11,21,8
575 Only in binutils-2.25.1/gas/testsuite/gas/ppc: power9.d
576 Only in binutils-2.25.1/gas/testsuite/gas/ppc: power9.s
577 diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/ppc.exp binutils-2.25.1/gas/testsuite/gas/ppc/ppc.exp
578 --- binutils-2.25.1.orig/gas/testsuite/gas/ppc/ppc.exp    2016-05-06 09:57:00.087618880 +0100
579 +++ binutils-2.25.1/gas/testsuite/gas/ppc/ppc.exp    2016-05-06 12:20:48.515442074 +0100
580 @@ -69,6 +69,7 @@ if { [istarget powerpc*-*-*] } then {
581      run_dump_test "simpshft"
582      run_dump_test "altivec"
583      run_dump_test "altivec2"
584 +    run_dump_test "altivec3"
585      run_dump_test "altivec_and_spe"
586      run_dump_test "booke"
587      run_dump_test "e500"
588 @@ -84,8 +85,10 @@ if { [istarget powerpc*-*-*] } then {
589      run_dump_test "power6"
590      run_dump_test "power7"
591      run_dump_test "power8"
592 +    run_dump_test "power9"
593      run_dump_test "vsx"
594      run_dump_test "vsx2"
595 +    run_dump_test "vsx3"
596      run_dump_test "htm"
597      run_dump_test "titan"
598      }
599 Only in binutils-2.25.1/gas/testsuite/gas/ppc: ppc.exp.orig
600 diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx2.d binutils-2.25.1/gas/testsuite/gas/ppc/vsx2.d
601 --- binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx2.d    2016-05-06 09:57:00.089618890 +0100
602 +++ binutils-2.25.1/gas/testsuite/gas/ppc/vsx2.d    2016-05-06 12:20:48.516442080 +0100
603 @@ -1,5 +1,5 @@
604 -#as: -mvsx
605 -#objdump: -dr -Mvsx
606 +#as: -mpower8
607 +#objdump: -dr -Mpower8
608  #name: VSX ISA 2.07 instructions
609  
610  .*
611 Only in binutils-2.25.1/gas/testsuite/gas/ppc: vsx3.d
612 Only in binutils-2.25.1/gas/testsuite/gas/ppc: vsx3.s
613 diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx.d binutils-2.25.1/gas/testsuite/gas/ppc/vsx.d
614 --- binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx.d    2016-05-06 09:57:00.089618890 +0100
615 +++ binutils-2.25.1/gas/testsuite/gas/ppc/vsx.d    2016-05-06 12:20:48.516442080 +0100
616 @@ -166,8 +166,8 @@ Disassembly of section \.text:
617   26c:    (f1 12 e7 bf|bf e7 12 f1)     xxsel   vs40,vs50,vs60,vs62
618   270:    (f1 12 e2 17|17 e2 12 f1)     xxsldwi vs40,vs50,vs60,2
619   274:    (f1 02 e2 93|93 e2 02 f1)     xxspltw vs40,vs60,2
620 - 278:    (7d 00 a6 99|99 a6 00 7d)     lxvd2x  vs40,0,r20
621 - 27c:    (7d 0a a6 99|99 a6 0a 7d)     lxvd2x  vs40,r10,r20
622 - 280:    (7d 00 a7 99|99 a7 00 7d)     stxvd2x vs40,0,r20
623 - 284:    (7d 0a a7 99|99 a7 0a 7d)     stxvd2x vs40,r10,r20
624 +.*:    (7d 00 a6 99|99 a6 00 7d)     lxvd2x  vs40,0,r20
625 +.*:    (7d 0a a6 99|99 a6 0a 7d)     lxvd2x  vs40,r10,r20
626 +.*:    (7d 00 a7 99|99 a7 00 7d)     stxvd2x vs40,0,r20
627 +.*:    (7d 0a a7 99|99 a7 0a 7d)     stxvd2x vs40,r10,r20
628  #pass
629 diff -rup binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx.s binutils-2.25.1/gas/testsuite/gas/ppc/vsx.s
630 --- binutils-2.25.1.orig/gas/testsuite/gas/ppc/vsx.s    2016-05-06 09:57:00.089618890 +0100
631 +++ binutils-2.25.1/gas/testsuite/gas/ppc/vsx.s    2016-05-06 12:20:48.516442080 +0100
632 @@ -158,7 +158,7 @@ start:
633      xxsel      40,50,60,62
634      xxsldwi    40,50,60,2
635      xxspltw    40,60,2
636 -    lxvx       40,0,20
637 -    lxvx       40,10,20
638 -    stxvx      40,0,20
639 -    stxvx      40,10,20
640 +    lxvd2x     40,0,20
641 +    lxvd2x     40,10,20
642 +    stxvd2x    40,0,20
643 +    stxvd2x    40,10,20
644 diff -rup binutils-2.25.1.orig/gold/powerpc.cc binutils-2.25.1/gold/powerpc.cc
645 --- binutils-2.25.1.orig/gold/powerpc.cc    2016-05-06 09:57:00.227619594 +0100
646 +++ binutils-2.25.1/gold/powerpc.cc    2016-05-06 12:20:48.518442092 +0100
647 @@ -1478,6 +1478,7 @@ public:
648  private:
649    typedef Powerpc_relocate_functions<size, big_endian> This;
650    typedef typename elfcpp::Elf_types<size>::Elf_Addr Address;
651 +  typedef typename elfcpp::Elf_types<size>::Elf_Swxword SignedAddress;
652  
653    template<int valsize>
654    static inline bool
655 @@ -1638,6 +1639,16 @@ public:
656      return stat;
657    }
658  
659 +  // R_POWERPC_ADDR16_DQ: (Symbol + Addend) & 0xfff0
660 +  static inline Status
661 +  addr16_dq(unsigned char* view, Address value, Overflow_check overflow)
662 +  {
663 +    Status stat = This::template rela<16,16>(view, 0, 0xfff0, value, overflow);
664 +    if ((value & 15) != 0)
665 +      stat = STATUS_OVERFLOW;
666 +    return stat;
667 +  }
668 +
669    // R_POWERPC_ADDR16_HI: ((Symbol + Addend) >> 16) & 0xffff
670    static inline void
671    addr16_hi(unsigned char* view, Address value)
672 @@ -1677,6 +1688,20 @@ public:
673        stat = STATUS_OVERFLOW;
674      return stat;
675    }
676 +
677 +  // R_POWERPC_REL16DX_HA
678 +  static inline Status
679 +  addr16dx_ha(unsigned char *view, Address value, Overflow_check overflow)
680 +  {
681 +    typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
682 +    Valtype* wv = reinterpret_cast<Valtype*>(view);
683 +    Valtype val = elfcpp::Swap<32, big_endian>::readval(wv);
684 +    value += 0x8000;
685 +    value = static_cast<SignedAddress>(value) >> 16;
686 +    val |= (value & 0xffc1) | ((value & 0x3e) << 15);
687 +    elfcpp::Swap<32, big_endian>::writeval(wv, val);
688 +    return overflowed<16>(value, overflow);
689 +  }
690  };
691  
692  // Set ABI version for input and output.
693 @@ -5544,6 +5569,7 @@ Target_powerpc<size, big_endian>::Scan::
694      case elfcpp::R_POWERPC_REL16_LO:
695      case elfcpp::R_POWERPC_REL16_HI:
696      case elfcpp::R_POWERPC_REL16_HA:
697 +    case elfcpp::R_POWERPC_REL16DX_HA:
698      case elfcpp::R_POWERPC_SECTOFF:
699      case elfcpp::R_POWERPC_SECTOFF_LO:
700      case elfcpp::R_POWERPC_SECTOFF_HI:
701 @@ -5993,6 +6019,7 @@ Target_powerpc<size, big_endian>::Scan::
702      case elfcpp::R_POWERPC_REL16_LO:
703      case elfcpp::R_POWERPC_REL16_HI:
704      case elfcpp::R_POWERPC_REL16_HA:
705 +    case elfcpp::R_POWERPC_REL16DX_HA:
706      case elfcpp::R_POWERPC_SECTOFF:
707      case elfcpp::R_POWERPC_SECTOFF_LO:
708      case elfcpp::R_POWERPC_SECTOFF_HI:
709 @@ -7302,6 +7329,7 @@ Target_powerpc<size, big_endian>::Reloca
710      case elfcpp::R_POWERPC_REL16_LO:
711      case elfcpp::R_POWERPC_REL16_HI:
712      case elfcpp::R_POWERPC_REL16_HA:
713 +    case elfcpp::R_POWERPC_REL16DX_HA:
714      case elfcpp::R_POWERPC_REL14:
715      case elfcpp::R_POWERPC_REL14_BRTAKEN:
716      case elfcpp::R_POWERPC_REL14_BRNTAKEN:
717 @@ -7500,6 +7528,7 @@ Target_powerpc<size, big_endian>::Reloca
718        break;
719  
720      case elfcpp::R_POWERPC_REL32:
721 +    case elfcpp::R_POWERPC_REL16DX_HA:
722        if (size == 64)
723      overflow = Reloc::CHECK_SIGNED;
724        break;
725 @@ -7580,11 +7609,13 @@ Target_powerpc<size, big_endian>::Reloca
726        break;
727      }
728  
729 +  Insn* iview = reinterpret_cast<Insn*>(view - 2 * big_endian);
730 +  Insn insn = 0;
731 +
732    if (overflow == Reloc::CHECK_LOW_INSN
733        || overflow == Reloc::CHECK_HIGH_INSN)
734      {
735 -      Insn* iview = reinterpret_cast<Insn*>(view - 2 * big_endian);
736 -      Insn insn = elfcpp::Swap<32, big_endian>::readval(iview);
737 +      insn = elfcpp::Swap<32, big_endian>::readval(iview);
738  
739        if ((insn & (0x3f << 26)) == 10u << 26 /* cmpli */)
740      overflow = Reloc::CHECK_BITFIELD;
741 @@ -7600,6 +7631,7 @@ Target_powerpc<size, big_endian>::Reloca
742      overflow = Reloc::CHECK_SIGNED;
743      }
744  
745 +  bool maybe_dq_reloc = false;
746    typename Powerpc_relocate_functions<size, big_endian>::Status status
747      = Powerpc_relocate_functions<size, big_endian>::STATUS_OK;
748    switch (r_type)
749 @@ -7652,7 +7684,7 @@ Target_powerpc<size, big_endian>::Reloca
750        if (size == 64)
751      {
752        // On ppc64 these are all ds form
753 -      status = Reloc::addr16_ds(view, value, overflow);
754 +      maybe_dq_reloc = true;
755        break;
756      }
757      case elfcpp::R_POWERPC_ADDR16:
758 @@ -7673,7 +7705,10 @@ Target_powerpc<size, big_endian>::Reloca
759      case elfcpp::R_POWERPC_DTPREL16_LO:
760      case elfcpp::R_POWERPC_GOT_TLSGD16_LO:
761      case elfcpp::R_POWERPC_GOT_TLSLD16_LO:
762 -      status = Reloc::addr16(view, value, overflow);
763 +      if (size == 64)
764 +    status = Reloc::addr16(view, value, overflow);
765 +      else
766 +    maybe_dq_reloc = true;
767        break;
768  
769      case elfcpp::R_POWERPC_UADDR16:
770 @@ -7720,6 +7755,10 @@ Target_powerpc<size, big_endian>::Reloca
771        Reloc::addr16_ha(view, value);
772        break;
773  
774 +    case elfcpp::R_POWERPC_REL16DX_HA:
775 +      status = Reloc::addr16dx_ha(view, value, overflow);
776 +      break;
777 +
778      case elfcpp::R_PPC64_DTPREL16_HIGHER:
779        if (size == 32)
780      // R_PPC_EMB_NADDR16_LO
781 @@ -7774,7 +7813,7 @@ Target_powerpc<size, big_endian>::Reloca
782      case elfcpp::R_PPC64_GOT16_LO_DS:
783      case elfcpp::R_PPC64_SECTOFF_DS:
784      case elfcpp::R_PPC64_SECTOFF_LO_DS:
785 -      status = Reloc::addr16_ds(view, value, overflow);
786 +      maybe_dq_reloc = true;
787        break;
788  
789      case elfcpp::R_POWERPC_ADDR14:
790 @@ -7839,6 +7878,26 @@ Target_powerpc<size, big_endian>::Reloca
791                   r_type);
792        break;
793      }
794 +
795 +  if (maybe_dq_reloc)
796 +    {
797 +      if (insn == 0)
798 +    insn = elfcpp::Swap<32, big_endian>::readval(iview);
799 +
800 +      if ((insn & (0x3f << 26)) == 56u << 26 /* lq */
801 +      || ((insn & (0x3f << 26)) == (61u << 26) /* lxv, stxv */
802 +          && (insn & 3) == 1))
803 +    status = Reloc::addr16_dq(view, value, overflow);
804 +      else if (size == 64
805 +           || (insn & (0x3f << 26)) == 58u << 26 /* ld,ldu,lwa */
806 +           || (insn & (0x3f << 26)) == 62u << 26 /* std,stdu,stq */
807 +           || (insn & (0x3f << 26)) == 57u << 26 /* lfdp */
808 +           || (insn & (0x3f << 26)) == 61u << 26 /* stfdp */)
809 +    status = Reloc::addr16_ds(view, value, overflow);
810 +      else
811 +    status = Reloc::addr16(view, value, overflow);
812 +    }
813 +
814    if (status != Powerpc_relocate_functions<size, big_endian>::STATUS_OK
815        && (has_stub_value
816        || !(gsym != NULL
817 Only in binutils-2.25.1/gold: powerpc.cc.orig
818 diff -rup binutils-2.25.1.orig/include/elf/ppc64.h binutils-2.25.1/include/elf/ppc64.h
819 --- binutils-2.25.1.orig/include/elf/ppc64.h    2016-05-06 09:57:00.307620002 +0100
820 +++ binutils-2.25.1/include/elf/ppc64.h    2016-05-06 12:20:48.519442098 +0100
821 @@ -157,6 +157,10 @@ START_RELOC_NUMBERS (elf_ppc64_reloc_typ
822  /* Fake relocation only used internally by ld.  */
823    RELOC_NUMBER (R_PPC64_LO_DS_OPT,       128)
824  #endif
825 +
826 +/* Power9 split rel16 for addpcis.  */
827 +  RELOC_NUMBER (R_PPC64_REL16DX_HA,       246)
828 +
829  /* Support STT_GNU_IFUNC plt calls.  */
830    RELOC_NUMBER (R_PPC64_JMP_IREL,       247)
831    RELOC_NUMBER (R_PPC64_IRELATIVE,       248)
832 diff -rup binutils-2.25.1.orig/include/elf/ppc.h binutils-2.25.1/include/elf/ppc.h
833 --- binutils-2.25.1.orig/include/elf/ppc.h    2016-05-06 09:57:00.306619997 +0100
834 +++ binutils-2.25.1/include/elf/ppc.h    2016-05-06 12:20:48.519442098 +0100
835 @@ -149,6 +149,9 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
836    RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16A,    231)
837    RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16D,    232)
838  
839 +/* Power9 split rel16 for addpcis.  */
840 +  RELOC_NUMBER (R_PPC_REL16DX_HA,    246)
841 +
842  /* Support STT_GNU_IFUNC plt calls.  */
843    RELOC_NUMBER (R_PPC_IRELATIVE,    248)
844  
845 diff -rup binutils-2.25.1.orig/include/opcode/ppc.h binutils-2.25.1/include/opcode/ppc.h
846 --- binutils-2.25.1.orig/include/opcode/ppc.h    2016-05-06 09:57:00.309620012 +0100
847 +++ binutils-2.25.1/include/opcode/ppc.h    2016-05-06 12:20:48.519442098 +0100
848 @@ -204,6 +204,12 @@ extern const int vle_num_opcodes;
849  /* Opcode is supported by ppc821/850/860.  */
850  #define PPC_OPCODE_860          0x10000000000ull
851  
852 +/* Opcode is only supported by Power9 architecture.  */
853 +#define PPC_OPCODE_POWER9     0x20000000000ull
854 +
855 +/* Opcode is supported by Vector-Scalar (VSX) Unit from ISA 2.08.  */
856 +#define PPC_OPCODE_VSX3       0x40000000000ull
857 +
858  /* A macro to extract the major opcode from an instruction.  */
859  #define PPC_OP(i) (((i) >> 26) & 0x3f)
860  
861 Only in binutils-2.25.1/ld/testsuite/ld-powerpc: addpcis.d
862 Only in binutils-2.25.1/ld/testsuite/ld-powerpc: addpcis.s
863 diff -rup binutils-2.25.1.orig/ld/testsuite/ld-powerpc/powerpc.exp binutils-2.25.1/ld/testsuite/ld-powerpc/powerpc.exp
864 --- binutils-2.25.1.orig/ld/testsuite/ld-powerpc/powerpc.exp    2016-05-06 09:57:00.593621461 +0100
865 +++ binutils-2.25.1/ld/testsuite/ld-powerpc/powerpc.exp    2016-05-06 12:22:05.329904562 +0100
866 @@ -285,6 +285,7 @@ if [ supports_ppc64 ] then {
867      run_dump_test "ambiguousv2b"
868      run_dump_test "defsym"
869      run_dump_test "tlsld"
870 +    run_dump_test "addpcis"
871  }
872  
873  run_dump_test "tlsld32"
874 Only in binutils-2.25.1/ld/testsuite/ld-powerpc: powerpc.exp.orig
875 Only in binutils-2.25.1/ld/testsuite/ld-powerpc: powerpc.exp.rej
876 diff -rup binutils-2.25.1.orig/opcodes/ppc-dis.c binutils-2.25.1/opcodes/ppc-dis.c
877 --- binutils-2.25.1.orig/opcodes/ppc-dis.c    2016-05-06 09:57:00.706622038 +0100
878 +++ binutils-2.25.1/opcodes/ppc-dis.c    2016-05-06 12:20:48.520442104 +0100
879 @@ -157,6 +157,12 @@ struct ppc_mopt ppc_opts[] = {
880          | PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 | PPC_OPCODE_HTM
881          | PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2 | PPC_OPCODE_VSX),
882      0 },
883 +  { "power9",  (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_64
884 +        | PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6
885 +        | PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 | PPC_OPCODE_POWER9
886 +        | PPC_OPCODE_HTM | PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2
887 +        | PPC_OPCODE_VSX | PPC_OPCODE_VSX3 ),
888 +    0 },
889    { "ppc",     (PPC_OPCODE_PPC),
890      0 },
891    { "ppc32",   (PPC_OPCODE_PPC),
892 @@ -191,6 +197,12 @@ struct ppc_mopt ppc_opts[] = {
893          | PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 | PPC_OPCODE_HTM
894          | PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2 | PPC_OPCODE_VSX),
895      0 },
896 +  { "pwr9",    (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_64
897 +        | PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6
898 +        | PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 | PPC_OPCODE_POWER9
899 +        | PPC_OPCODE_HTM | PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2
900 +        | PPC_OPCODE_VSX | PPC_OPCODE_VSX3 ),
901 +    0 },
902    { "pwrx",    (PPC_OPCODE_POWER | PPC_OPCODE_POWER2),
903      0 },
904    { "spe",     (PPC_OPCODE_PPC | PPC_OPCODE_EFS),
905 @@ -201,7 +213,7 @@ struct ppc_mopt ppc_opts[] = {
906    { "vle",     (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_VLE),
907      PPC_OPCODE_VLE },
908    { "vsx",     (PPC_OPCODE_PPC),
909 -    PPC_OPCODE_VSX },
910 +    PPC_OPCODE_VSX | PPC_OPCODE_VSX3 },
911    { "htm",     (PPC_OPCODE_PPC),
912      PPC_OPCODE_HTM },
913  };
914 @@ -303,7 +315,7 @@ powerpc_init_dialect (struct disassemble
915        dialect = ppc_parse_cpu (dialect, &sticky, "vle");
916        break;
917      default:
918 -      dialect = ppc_parse_cpu (dialect, &sticky, "power8") | PPC_OPCODE_ANY;
919 +      dialect = ppc_parse_cpu (dialect, &sticky, "power9") | PPC_OPCODE_ANY;
920      }
921  
922    arg = info->disassembler_options;
923 diff -rup binutils-2.25.1.orig/opcodes/ppc-opc.c binutils-2.25.1/opcodes/ppc-opc.c
924 --- binutils-2.25.1.orig/opcodes/ppc-opc.c    2016-05-06 09:57:00.695621982 +0100
925 +++ binutils-2.25.1/opcodes/ppc-opc.c    2016-05-06 13:08:55.068779737 +0100
926 @@ -54,8 +54,18 @@ static long extract_bo (unsigned long, p
927  static unsigned long insert_boe (unsigned long, long, ppc_cpu_t, const char **);
928  static long extract_boe (unsigned long, ppc_cpu_t, int *);
929  static unsigned long insert_esync (unsigned long, long, ppc_cpu_t, const char **);
930 +static unsigned long insert_dcmxs (unsigned long, long, ppc_cpu_t, const char **);
931 +static long extract_dcmxs (unsigned long, ppc_cpu_t, int *);
932 +static unsigned long insert_dxd (unsigned long, long, ppc_cpu_t, const char **);
933 +static long extract_dxd (unsigned long, ppc_cpu_t, int *);
934 +static unsigned long insert_dxdn (unsigned long, long, ppc_cpu_t, const char **);
935 +static long extract_dxdn (unsigned long, ppc_cpu_t, int *);
936  static unsigned long insert_fxm (unsigned long, long, ppc_cpu_t, const char **);
937  static long extract_fxm (unsigned long, ppc_cpu_t, int *);
938 +static unsigned long insert_l0 (unsigned long, long, ppc_cpu_t, const char **);
939 +static long extract_l0 (unsigned long, ppc_cpu_t, int *);
940 +static unsigned long insert_l1 (unsigned long, long, ppc_cpu_t, const char **);
941 +static long extract_l1 (unsigned long, ppc_cpu_t, int *);
942  static unsigned long insert_li20 (unsigned long, long, ppc_cpu_t, const char **);
943  static long extract_li20 (unsigned long, ppc_cpu_t, int *);
944  static unsigned long insert_ls (unsigned long, long, ppc_cpu_t, const char **);
945 @@ -98,6 +108,8 @@ static unsigned long insert_tbr (unsigne
946  static long extract_tbr (unsigned long, ppc_cpu_t, int *);
947  static unsigned long insert_xt6 (unsigned long, long, ppc_cpu_t, const char **);
948  static long extract_xt6 (unsigned long, ppc_cpu_t, int *);
949 +static unsigned long insert_xtq6 (unsigned long, long, ppc_cpu_t, const char **);
950 +static long extract_xtq6 (unsigned long, ppc_cpu_t, int *);
951  static unsigned long insert_xa6 (unsigned long, long, ppc_cpu_t, const char **);
952  static long extract_xa6 (unsigned long, ppc_cpu_t, int *);
953  static unsigned long insert_xb6 (unsigned long, long, ppc_cpu_t, const char **);
954 @@ -302,9 +314,17 @@ const struct powerpc_operand powerpc_ope
955  #define D8 D + 1
956    { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
957  
958 +  /* The DCMX field in an X form instruction.  */
959 +#define DCMX D8 + 1
960 +  { 0x7f, 16, NULL, NULL, 0 },
961 +
962 +  /* The split DCMX field in an X form instruction.  */
963 +#define DCMXS DCMX + 1
964 +  { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
965 +
966    /* The DQ field in a DQ form instruction.  This is like D, but the
967       lower four bits are forced to zero. */
968 -#define DQ D8 + 1
969 +#define DQ DCMXS + 1
970    { 0xfff0, 0, NULL, NULL,
971      PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
972  
973 @@ -320,10 +340,21 @@ const struct powerpc_operand powerpc_ope
974  #define BHRBE DUIS
975    { 0x3ff, 11, NULL, NULL, 0 },
976  
977 +  /* The split D field in a DX form instruction.  */
978 +#define DXD DUIS + 1
979 +  { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
980 +    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
981 +
982 +  /* The split ND field in a DX form instruction.
983 +     This is the same as the DX field, only negated.  */
984 +#define NDXD DXD + 1
985 +  { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
986 +    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
987 +
988    /* The E field in a wrteei instruction.  */
989    /* And the W bit in the pair singles instructions.  */
990    /* And the ST field in a VX form instruction.  */
991 -#define E DUIS + 1
992 +#define E NDXD + 1
993  #define PSW E
994  #define ST E
995    { 0x1, 15, NULL, NULL, 0 },
996 @@ -397,8 +428,16 @@ const struct powerpc_operand powerpc_ope
997  #define HTM_R L
998    { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
999  
1000 +  /* The L field in an X form instruction which must be zero.  */
1001 +#define L0 L + 1
1002 +  { 0x1, 21, insert_l0, extract_l0, PPC_OPERAND_OPTIONAL },
1003 +
1004 +  /* The L field in an X form instruction which must be one.  */
1005 +#define L1 L0 + 1
1006 +  { 0x1, 21, insert_l1, extract_l1, 0 },
1007 +
1008    /* The LEV field in a POWER SVC form instruction.  */
1009 -#define SVC_LEV L + 1
1010 +#define SVC_LEV L1 + 1
1011    { 0x7f, 5, NULL, NULL, 0 },
1012  
1013    /* The LEV field in an SC form instruction.  */
1014 @@ -513,10 +552,14 @@ const struct powerpc_operand powerpc_ope
1015  #define RBOPT RBX + 1
1016    { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
1017  
1018 +  /* The RC register field in an maddld, maddhd or maddhdu instruction.  */
1019 +#define RC RBOPT + 1
1020 +  { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
1021 +
1022    /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
1023       instruction or the RT field in a D, DS, X, XFX or XO form
1024       instruction.  */
1025 -#define RS RBOPT + 1
1026 +#define RS RC + 1
1027  #define RT RS
1028  #define RT_MASK (0x1f << 21)
1029  #define RD RS
1030 @@ -577,6 +620,8 @@ const struct powerpc_operand powerpc_ope
1031  #define SH_MASK (0x1f << 11)
1032    /* The other UIMM field in a EVX form instruction.  */
1033  #define EVUIMM SH
1034 +  /* The FC field in an atomic X form instruction.  */
1035 +#define FC SH
1036    { 0x1f, 11, NULL, NULL, 0 },
1037  
1038    /* The SI field in a HTM X form instruction.  */
1039 @@ -705,8 +750,12 @@ const struct powerpc_operand powerpc_ope
1040  #define UIMM3 UIMM + 1
1041    { 0x7, 16, NULL, NULL, 0 },
1042  
1043 +  /* The 6-bit UIM field in a X form instruction.  */
1044 +#define UIM6 UIMM3 + 1
1045 +  { 0x3f, 16, NULL, NULL, 0 },
1046 +
1047    /* The SIX field in a VX form instruction.  */
1048 -#define SIX UIMM3 + 1
1049 +#define SIX UIM6 + 1
1050    { 0xf, 11, NULL, NULL, 0 },
1051  
1052    /* The PS field in a VX form instruction.  */
1053 @@ -752,9 +801,10 @@ const struct powerpc_operand powerpc_ope
1054  #define PSD PSQM + 1
1055    {  0xfff, 0, 0, 0,  PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
1056  
1057 -  /* The L field in an mtmsrd or A form instruction or W in an X form.  */
1058 +  /* The L field in an mtmsrd or A form instruction or R or W in an X form.  */
1059  #define A_L PSD + 1
1060  #define W A_L
1061 +#define X_R A_L
1062    { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
1063  
1064  #define RMC A_L + 1
1065 @@ -763,7 +813,13 @@ const struct powerpc_operand powerpc_ope
1066  #define R RMC + 1
1067    { 0x1, 16, NULL, NULL, 0 },
1068  
1069 -#define SP R + 1
1070 +#define RIC R + 1
1071 +  { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
1072 +
1073 +#define PRS RIC + 1
1074 +  { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
1075 +
1076 +#define SP PRS + 1
1077    { 0x3, 19, NULL, NULL, 0 },
1078  
1079  #define S SP + 1
1080 @@ -838,8 +894,13 @@ const struct powerpc_operand powerpc_ope
1081  #define XT6 XS6
1082    { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
1083  
1084 +  /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
1085 +#define XSQ6 XT6 + 1
1086 +#define XTQ6 XSQ6
1087 +  { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
1088 +
1089    /* The XA field in an XX3 form instruction.  This is split.  */
1090 -#define XA6 XT6 + 1
1091 +#define XA6 XTQ6 + 1
1092    { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
1093  
1094    /* The XB field in an XX2 or XX3 form instruction.  This is split.  */
1095 @@ -869,6 +930,8 @@ const struct powerpc_operand powerpc_ope
1096  #define UIM DMEX + 1
1097    /* The 2-bit UIMM field in a VX form instruction.  */
1098  #define UIMM2 UIM
1099 +  /* The 2-bit L field in a darn instruction.  */
1100 +#define LRAND UIM
1101    { 0x3, 16, NULL, NULL, 0 },
1102  
1103  #define ERAT_T UIM + 1
1104 @@ -876,6 +939,10 @@ const struct powerpc_operand powerpc_ope
1105  
1106  #define IH ERAT_T + 1
1107    { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
1108 +
1109 +  /* The 8-bit IMM8 field in a XX1 form instruction.  */
1110 +#define IMM8 IH + 1
1111 +  { 0xff, 11, NULL, NULL, 0 },
1112  };
1113  
1114  const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
1115 @@ -1272,6 +1339,64 @@ extract_boe (unsigned long insn,
1116    return value & 0x1e;
1117  }
1118  
1119 +/* The DCMX field in a X form instruction when the field is split
1120 +   into separate DC, DM and DX fields.  */
1121 +
1122 +static unsigned long
1123 +insert_dcmxs (unsigned long insn,
1124 +        long value,
1125 +        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1126 +        const char **errmsg ATTRIBUTE_UNUSED)
1127 +{
1128 +  return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3) | (value & 0x40);
1129 +}
1130 +
1131 +static long
1132 +extract_dcmxs (unsigned long insn,
1133 +         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1134 +         int *invalid ATTRIBUTE_UNUSED)
1135 +{
1136 +  return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
1137 +}
1138 +
1139 +/* The D field in a DX form instruction when the field is split
1140 +   into separate D0, D1 and D2 fields.  */
1141 +
1142 +static unsigned long
1143 +insert_dxd (unsigned long insn,
1144 +        long value,
1145 +        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1146 +        const char **errmsg ATTRIBUTE_UNUSED)
1147 +{
1148 +  return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
1149 +}
1150 +
1151 +static long
1152 +extract_dxd (unsigned long insn,
1153 +         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1154 +         int *invalid ATTRIBUTE_UNUSED)
1155 +{
1156 +  unsigned long dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
1157 +  return (dxd ^ 0x8000) - 0x8000;
1158 +}
1159 +
1160 +static unsigned long
1161 +insert_dxdn (unsigned long insn,
1162 +        long value,
1163 +        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1164 +        const char **errmsg ATTRIBUTE_UNUSED)
1165 +{
1166 +  return insert_dxd (insn, -value, dialect, errmsg);
1167 +}
1168 +
1169 +static long
1170 +extract_dxdn (unsigned long insn,
1171 +         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1172 +         int *invalid ATTRIBUTE_UNUSED)
1173 +{
1174 +  return -extract_dxd (insn, dialect, invalid);
1175 +}
1176 +
1177  /* FXM mask in mfcr and mtcrf instructions.  */
1178  
1179  static unsigned long
1180 @@ -1343,6 +1468,58 @@ extract_fxm (unsigned long insn,
1181    return mask;
1182  }
1183  
1184 +/* The L field in an X form instruction which must have the value zero.  */
1185 +
1186 +static unsigned long
1187 +insert_l0 (unsigned long insn,
1188 +       long value,
1189 +       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1190 +       const char **errmsg)
1191 +{
1192 +  if (value != 0)
1193 +    *errmsg = _("invalid operand constant");
1194 +  return insn & ~(0x1 << 21);
1195 +}
1196 +
1197 +static long
1198 +extract_l0 (unsigned long insn,
1199 +        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1200 +        int *invalid)
1201 +{
1202 +  long value;
1203 +
1204 +  value = (insn >> 21) & 0x1;
1205 +  if (value != 0)
1206 +    *invalid = 1;
1207 +  return value;
1208 +}
1209 +
1210 +/* The L field in an X form instruction which must have the value one.  */
1211 +
1212 +static unsigned long
1213 +insert_l1 (unsigned long insn,
1214 +       long value,
1215 +       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1216 +       const char **errmsg)
1217 +{
1218 +  if (value != 1)
1219 +    *errmsg = _("invalid operand constant");
1220 +  return insn | (0x1 << 21);
1221 +}
1222 +
1223 +static long
1224 +extract_l1 (unsigned long insn,
1225 +        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1226 +        int *invalid)
1227 +{
1228 +  long value;
1229 +
1230 +  value = (insn >> 21) & 0x1;
1231 +  if (value != 1)
1232 +    *invalid = 1;
1233 +  return value;
1234 +}
1235 +
1236  static unsigned long
1237  insert_li20 (unsigned long insn,
1238           long value,
1239 @@ -1398,16 +1575,16 @@ insert_ls (unsigned long insn,
1240  static unsigned long
1241  insert_esync (unsigned long insn,
1242            long value,
1243 -          ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1244 +          ppc_cpu_t dialect,
1245            const char **errmsg)
1246  {
1247 -  unsigned long ls;
1248 +  unsigned long ls = (insn >> 21) & 0x03;
1249  
1250 -  ls = (insn >> 21) & 0x03;
1251    if (value == 0)
1252      {
1253 -      if (ls > 1)
1254 -    *errmsg = _("illegal L operand value");
1255 +      if (((dialect & PPC_OPCODE_E6500) != 0 && ls > 1)
1256 +      || ((dialect & PPC_OPCODE_POWER9) != 0 && ls > 2))
1257 +        *errmsg = _("illegal L operand value");
1258        return insn;
1259      }
1260  
1261 @@ -1945,6 +2122,24 @@ extract_xt6 (unsigned long insn,
1262    return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
1263  }
1264  
1265 +/* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
1266 +static unsigned long
1267 +insert_xtq6 (unsigned long insn,
1268 +        long value,
1269 +        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1270 +        const char **errmsg ATTRIBUTE_UNUSED)
1271 +{
1272 +  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
1273 +}
1274 +
1275 +static long
1276 +extract_xtq6 (unsigned long insn,
1277 +         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1278 +         int *invalid ATTRIBUTE_UNUSED)
1279 +{
1280 +  return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
1281 +}
1282 +
1283  /* The XA field in an XX3 form instruction.  This is split.  */
1284  
1285  static unsigned long
1286 @@ -2258,10 +2453,18 @@ extract_vleil (unsigned long insn,
1287  /* The main opcode mask with the RA field clear.  */
1288  #define DRA_MASK (OP_MASK | RA_MASK)
1289  
1290 +/* A DQ form VSX instruction.  */
1291 +#define DQX(op, xop) (OP (op) | ((xop) & 0x7))
1292 +#define DQX_MASK DQX (0x3f, 7)
1293 +
1294  /* A DS form instruction.  */
1295  #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
1296  #define DS_MASK DSO (0x3f, 3)
1297  
1298 +/* An DX form instruction.  */
1299 +#define DX(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
1300 +#define DX_MASK DX (0x3f, 0x1f)
1301 +
1302  /* An EVSEL form instruction.  */
1303  #define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
1304  #define EVSEL_MASK EVSEL(0x3f, 0xff)
1305 @@ -2374,6 +2577,9 @@ extract_vleil (unsigned long insn,
1306  /* A VX_MASK with a PS field.  */
1307  #define VXPS_MASK (VX_MASK & ~(0x1 << 9))
1308  
1309 +/* A VX_MASK with the VA field fixed with a PS field.  */
1310 +#define VXVAPS_MASK ((VX_MASK | (0x1f << 16)) & ~(0x1 << 9))
1311 +
1312  /* A VA form instruction.  */
1313  #define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
1314  
1315 @@ -2389,9 +2595,15 @@ extract_vleil (unsigned long insn,
1316  /* The mask for a VXR form instruction.  */
1317  #define VXR_MASK VXR(0x3f, 0x3ff, 1)
1318  
1319 +/* A VX form instruction with a VA tertiary opcode.  */
1320 +#define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
1321 +
1322  /* An X form instruction.  */
1323  #define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
1324  
1325 +/* A X form instruction for Quad-Precision FP Instructions.  */
1326 +#define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
1327 +
1328  /* An EX form instruction.  */
1329  #define EX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
1330  
1331 @@ -2401,6 +2613,9 @@ extract_vleil (unsigned long insn,
1332  /* An XX2 form instruction.  */
1333  #define XX2(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2))
1334  
1335 +/* A XX2 form instruction with the VA bits specified.  */
1336 +#define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
1337 +
1338  /* An XX3 form instruction.  */
1339  #define XX3(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0xff) << 3))
1340  
1341 @@ -2416,12 +2631,18 @@ extract_vleil (unsigned long insn,
1342  /* An X form instruction with the RC bit specified.  */
1343  #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
1344  
1345 +/* A X form instruction for Quad-Precision FP Instructions with RC bit.  */
1346 +#define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
1347 +
1348  /* A Z form instruction with the RC bit specified.  */
1349  #define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
1350  
1351  /* The mask for an X form instruction.  */
1352  #define X_MASK XRC (0x3f, 0x3ff, 1)
1353  
1354 +/* The mask for an X form instruction with the BF bits specified.  */
1355 +#define XBF_MASK (X_MASK | (3 << 21))
1356 +
1357  /* An X form wait instruction with everything filled in except the WC field.  */
1358  #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
1359  
1360 @@ -2437,9 +2658,18 @@ extract_vleil (unsigned long insn,
1361  /* The mask for an XX2 form instruction with the UIM bits specified.  */
1362  #define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
1363  
1364 +/* The mask for an XX2 form instruction with the 4 UIM bits specified.  */
1365 +#define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
1366 +
1367  /* The mask for an XX2 form instruction with the BF bits specified.  */
1368  #define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
1369  
1370 +/* The mask for an XX2 form instruction with the BF and DCMX bits specified.  */
1371 +#define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
1372 +
1373 +/* The mask for an XX2 form instruction with a split DCMX bits specified.  */
1374 +#define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
1375 +
1376  /* The mask for an XX3 form instruction.  */
1377  #define XX3_MASK XX3 (0x3f, 0xff)
1378  
1379 @@ -2460,11 +2690,13 @@ extract_vleil (unsigned long insn,
1380  #define Z_MASK ZRC (0x3f, 0x1ff, 1)
1381  #define Z2_MASK ZRC (0x3f, 0xff, 1)
1382  
1383 -/* An X_MASK with the RA field fixed.  */
1384 +/* An X_MASK with the RA/VA field fixed.  */
1385  #define XRA_MASK (X_MASK | RA_MASK)
1386 +#define XVA_MASK XRA_MASK
1387  
1388 -/* An XRA_MASK with the W field clear.  */
1389 +/* An XRA_MASK with the A_L/W field clear.  */
1390  #define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16))
1391 +#define XRLA_MASK XWRA_MASK
1392  
1393  /* An X_MASK with the RB field fixed.  */
1394  #define XRB_MASK (X_MASK | RB_MASK)
1395 @@ -2478,9 +2710,15 @@ extract_vleil (unsigned long insn,
1396  /* An X_MASK with the RA and RB fields fixed.  */
1397  #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
1398  
1399 +/* An XBF_MASK with the RA and RB fields fixed.  */
1400 +#define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
1401 +
1402  /* An XRARB_MASK, but with the L bit clear.  */
1403  #define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
1404  
1405 +/* An XRARB_MASK, but with the L bits in a darn instruction clear.  */
1406 +#define XLRAND_MASK (XRARB_MASK & ~((unsigned long) 3 << 16))
1407 +
1408  /* An X_MASK with the RT and RA fields fixed.  */
1409  #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
1410  
1411 @@ -2738,6 +2976,7 @@ extract_vleil (unsigned long insn,
1412  #define POWER6    PPC_OPCODE_POWER6
1413  #define POWER7    PPC_OPCODE_POWER7
1414  #define POWER8    PPC_OPCODE_POWER8
1415 +#define POWER9    PPC_OPCODE_POWER9
1416  #define CELL    PPC_OPCODE_CELL
1417  #define PPC64    PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
1418  #define NON32    (PPC_OPCODE_64 | PPC_OPCODE_POWER4    \
1419 @@ -2753,8 +2992,10 @@ extract_vleil (unsigned long insn,
1420  #define PPCPS    PPC_OPCODE_PPCPS
1421  #define PPCVEC    PPC_OPCODE_ALTIVEC
1422  #define PPCVEC2    PPC_OPCODE_ALTIVEC2
1423 +#define PPCVEC3    PPC_OPCODE_ALTIVEC2
1424  #define PPCVSX    PPC_OPCODE_VSX
1425  #define PPCVSX2    PPC_OPCODE_VSX
1426 +#define PPCVSX3    PPC_OPCODE_VSX3
1427  #define POWER    PPC_OPCODE_POWER
1428  #define POWER2    PPC_OPCODE_POWER | PPC_OPCODE_POWER2
1429  #define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
1430 @@ -2864,11 +3105,13 @@ const struct powerpc_opcode powerpc_opco
1431  {"twi",        OP(3),        OP_MASK,     PPCCOM,    PPCNONE,    {TO, RA, SI}},
1432  {"ti",        OP(3),        OP_MASK,     PWRCOM,    PPCNONE,    {TO, RA, SI}},
1433  
1434 -{"ps_cmpu0",    X  (4,     0), X_MASK|(3<<21), PPCPS,    PPCNONE,    {BF, FRA, FRB}},
1435 +{"ps_cmpu0",    X  (4,     0),    XBF_MASK,    PPCPS,    PPCNONE,    {BF, FRA, FRB}},
1436  {"vaddubm",    VX (4,     0),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1437 +{"vmul10cuq",    VX (4,   1),    VXVB_MASK,   PPCVEC3,        PPCNONE,    {VD, VA}},
1438  {"vmaxub",    VX (4,     2),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1439  {"vrlb",    VX (4,     4),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1440  {"vcmpequb",    VXR(4,     6,0),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1441 +{"vcmpneb",    VXR(4,     7,0),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1442  {"vmuloub",    VX (4,     8),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1443  {"vaddfp",    VX (4,    10),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1444  {"psq_lx",    XW (4,     6,0),    XW_MASK,     PPCPS,    PPCNONE,    {FRT,RA,RB,PSWM,PSQM}},
1445 @@ -2914,6 +3157,9 @@ const struct powerpc_opcode powerpc_opco
1446  {"vmaddfp",    VXA(4,    46),    VXA_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VC, VB}},
1447  {"ps_sel.",    A  (4,    23,1),    A_MASK,      PPCPS,    PPCNONE,    {FRT, FRA, FRC, FRB}},
1448  {"vnmsubfp",    VXA(4,    47),    VXA_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VC, VB}},
1449 +{"maddhd",    VXA(4,    48),    VXA_MASK,    POWER9,    PPCNONE,    {RT, RA, RB, RC}},
1450 +{"maddhdu",    VXA(4,    49),    VXA_MASK,    POWER9,    PPCNONE,    {RT, RA, RB, RC}},
1451 +{"maddld",    VXA(4,    51),    VXA_MASK,    POWER9,    PPCNONE,    {RT, RA, RB, RC}},
1452  {"ps_res",    A  (4,    24,0), AFRAFRC_MASK, PPCPS,    PPCNONE,    {FRT, FRB}},
1453  {"ps_res.",    A  (4,    24,1), AFRAFRC_MASK, PPCPS,    PPCNONE,    {FRT, FRB}},
1454  {"ps_mul",    A  (4,    25,0), AFRB_MASK,    PPCPS,    PPCNONE,    {FRT, FRA, FRC}},
1455 @@ -2928,15 +3174,18 @@ const struct powerpc_opcode powerpc_opco
1456  {"ps_nmsub.",    A  (4,    30,1),    A_MASK,      PPCPS,    PPCNONE,    {FRT, FRA, FRC, FRB}},
1457  {"ps_nmadd",    A  (4,    31,0),    A_MASK,      PPCPS,    PPCNONE,    {FRT, FRA, FRC, FRB}},
1458  {"ps_nmadd.",    A  (4,    31,1),    A_MASK,      PPCPS,    PPCNONE,    {FRT, FRA, FRC, FRB}},
1459 -{"ps_cmpo0",    X  (4,    32), X_MASK|(3<<21), PPCPS,    PPCNONE,    {BF, FRA, FRB}},
1460 +{"ps_cmpo0",    X  (4,    32),    XBF_MASK,    PPCPS,    PPCNONE,    {BF, FRA, FRB}},
1461 +{"vpermr",    VXA(4,    59),    VXA_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB, VC}},
1462  {"vaddeuqm",    VXA(4,    60),    VXA_MASK,    PPCVEC2,    PPCNONE,    {VD, VA, VB, VC}},
1463  {"vaddecuq",    VXA(4,    61),    VXA_MASK,    PPCVEC2,    PPCNONE,    {VD, VA, VB, VC}},
1464  {"vsubeuqm",    VXA(4,    62),    VXA_MASK,    PPCVEC2,    PPCNONE,    {VD, VA, VB, VC}},
1465  {"vsubecuq",    VXA(4,    63),    VXA_MASK,    PPCVEC2,    PPCNONE,    {VD, VA, VB, VC}},
1466  {"vadduhm",    VX (4,    64),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1467 +{"vmul10ecuq",    VX (4,  65),    VX_MASK,     PPCVEC3,        PPCNONE,    {VD, VA, VB}},
1468  {"vmaxuh",    VX (4,    66),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1469  {"vrlh",    VX (4,    68),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1470  {"vcmpequh",    VXR(4,    70,0),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1471 +{"vcmpneh",    VXR(4,  71,0),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1472  {"vmulouh",    VX (4,    72),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1473  {"vsubfp",    VX (4,    74),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1474  {"psq_lux",    XW (4,    38,0),    XW_MASK,     PPCPS,    PPCNONE,    {FRT,RA,RB,PSWM,PSQM}},
1475 @@ -2951,11 +3200,13 @@ const struct powerpc_opcode powerpc_opco
1476  {"machhw.",    XO (4,    44,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1477  {"nmachhw",    XO (4,    46,0,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1478  {"nmachhw.",    XO (4,    46,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1479 -{"ps_cmpu1",    X  (4,    64), X_MASK|(3<<21), PPCPS,    PPCNONE,    {BF, FRA, FRB}},
1480 +{"ps_cmpu1",    X  (4,    64),    XBF_MASK,    PPCPS,    PPCNONE,    {BF, FRA, FRB}},
1481  {"vadduwm",    VX (4,    128),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1482  {"vmaxuw",    VX (4,    130),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1483  {"vrlw",    VX (4,    132),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1484 +{"vrlwmi",    VX (4,  133),    VX_MASK,     PPCVEC3,       PPCNONE,    {VD, VA, VB}},
1485  {"vcmpequw",    VXR(4,    134,0), VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1486 +{"vcmpnew",    VXR(4,  135,0),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1487  {"vmulouw",    VX (4,  136),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1488  {"vmuluwm",    VX (4,  137),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1489  {"vmrghw",    VX (4,    140),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1490 @@ -2964,10 +3215,11 @@ const struct powerpc_opcode powerpc_opco
1491  {"ps_mr.",    XRC(4,    72,1),    XRA_MASK,    PPCPS,    PPCNONE,    {FRT, FRB}},
1492  {"machhwsu",    XO (4,    76,0,0),XO_MASK,     MULHW|PPCVLE,  PPCNONE,    {RT, RA, RB}},
1493  {"machhwsu.",    XO (4,    76,0,1),XO_MASK,     MULHW|PPCVLE,  PPCNONE,    {RT, RA, RB}},
1494 -{"ps_cmpo1",    X  (4,    96), X_MASK|(3<<21), PPCPS,    PPCNONE,    {BF, FRA, FRB}},
1495 +{"ps_cmpo1",    X  (4,    96),    XBF_MASK,    PPCPS,    PPCNONE,    {BF, FRA, FRB}},
1496  {"vaddudm",    VX (4, 192),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1497  {"vmaxud",    VX (4, 194),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1498  {"vrld",    VX (4, 196),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1499 +{"vrldmi",    VX (4, 197),    VX_MASK,     PPCVEC3,   PPCNONE,    {VD, VA, VB}},
1500  {"vcmpeqfp",    VXR(4, 198,0),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1501  {"vcmpequd",    VXR(4, 199,0),    VXR_MASK,    PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1502  {"vpkuwus",    VX (4, 206),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1503 @@ -2977,6 +3229,7 @@ const struct powerpc_opcode powerpc_opco
1504  {"nmachhws.",    XO (4, 110,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1505  {"vadduqm",    VX (4, 256),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1506  {"vmaxsb",    VX (4, 258),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1507 +{"vcmpnezb",    VXR(4, 263,0),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1508  {"vslb",    VX (4, 260),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1509  {"vmulosb",    VX (4, 264),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1510  {"vrefp",    VX (4, 266),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1511 @@ -2991,6 +3244,7 @@ const struct powerpc_opcode powerpc_opco
1512  {"vaddcuq",    VX (4, 320),    VX_MASK,     PPCVEC2,      PPCNONE,    {VD, VA, VB}},
1513  {"vmaxsh",    VX (4, 322),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1514  {"vslh",    VX (4, 324),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1515 +{"vcmpnezh",    VXR(4, 327,0),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1516  {"vmulosh",    VX (4, 328),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1517  {"vrsqrtefp",    VX (4, 330),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1518  {"vmrglh",    VX (4, 332),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1519 @@ -3004,6 +3258,8 @@ const struct powerpc_opcode powerpc_opco
1520  {"vaddcuw",    VX (4, 384),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1521  {"vmaxsw",    VX (4, 386),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1522  {"vslw",    VX (4, 388),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1523 +{"vrlwnm",    VX (4, 389),    VX_MASK,     PPCVEC3,       PPCNONE,    {VD, VA, VB}},
1524 +{"vcmpnezw",    VXR(4, 391,0),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1525  {"vmulosw",    VX (4, 392),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1526  {"vexptefp",    VX (4, 394),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1527  {"vmrglw",    VX (4, 396),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1528 @@ -3012,6 +3268,7 @@ const struct powerpc_opcode powerpc_opco
1529  {"macchwsu.",    XO (4, 204,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1530  {"vmaxsd",    VX (4, 450),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1531  {"vsl",        VX (4, 452),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1532 +{"vrldnm",    VX (4, 453),    VX_MASK,     PPCVEC3,       PPCNONE,    {VD, VA, VB}},
1533  {"vcmpgefp",    VXR(4, 454,0),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1534  {"vlogefp",    VX (4, 458),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1535  {"vpkswss",    VX (4, 462),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1536 @@ -3021,6 +3278,7 @@ const struct powerpc_opcode powerpc_opco
1537  {"nmacchws.",    XO (4, 238,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1538  {"evaddw",    VX (4, 512),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1539  {"vaddubs",    VX (4, 512),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1540 +{"vmul10uq",    VX (4, 513),    VXVB_MASK,   PPCVEC3,        PPCNONE,    {VD, VA}},
1541  {"evaddiw",    VX (4, 514),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RB, UIMM}},
1542  {"vminub",    VX (4, 514),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1543  {"evsubfw",    VX (4, 516),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1544 @@ -3037,6 +3295,7 @@ const struct powerpc_opcode powerpc_opco
1545  {"evextsh",    VX (4, 523),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA}},
1546  {"evrndw",    VX (4, 524),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA}},
1547  {"vspltb",    VX (4, 524),    VXUIMM4_MASK,PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM4}},
1548 +{"vextractub",    VX (4, 525),    VXUIMM4_MASK,PPCVEC3,        PPCNONE,    {VD, VB, UIMM4}},
1549  {"evcntlzw",    VX (4, 525),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA}},
1550  {"evcntlsw",    VX (4, 526),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA}},
1551  {"vupkhsb",    VX (4, 526),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1552 @@ -3075,12 +3334,14 @@ const struct powerpc_opcode powerpc_opco
1553  {"evcmpeq",    VX (4, 564),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {CRFD, RA, RB}},
1554  {"cget",    APU(4, 284,0),    APU_RA_MASK, PPC405,    PPCNONE,    {RT, FSL}},
1555  {"vadduhs",    VX (4, 576),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1556 +{"vmul10euq",    VX (4, 577),    VX_MASK,     PPCVEC3,        PPCNONE,    {VD, VA, VB}},
1557  {"vminuh",    VX (4, 578),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1558  {"vsrh",    VX (4, 580),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1559  {"vcmpgtuh",    VXR(4, 582,0),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1560  {"vmuleuh",    VX (4, 584),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1561  {"vrfiz",    VX (4, 586),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1562  {"vsplth",    VX (4, 588),    VXUIMM3_MASK,PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM3}},
1563 +{"vextractuh",    VX (4, 589),    VXUIMM4_MASK,PPCVEC3,        PPCNONE,    {VD, VB, UIMM4}},
1564  {"vupkhsh",    VX (4, 590),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1565  {"nget",    APU(4, 300,0),    APU_RA_MASK, PPC405,    PPCNONE,    {RT, FSL}},
1566  {"evsel",    EVSEL(4,79),    EVSEL_MASK,  PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB, CRFS}},
1567 @@ -3100,6 +3361,7 @@ const struct powerpc_opcode powerpc_opco
1568  {"vrfip",    VX (4, 650),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1569  {"evfscmpgt",    VX (4, 652),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {CRFD, RA, RB}},
1570  {"vspltw",    VX (4, 652),    VXUIMM2_MASK,PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM2}},
1571 +{"vextractuw",    VX (4, 653),    VXUIMM4_MASK,PPCVEC3,        PPCNONE,    {VD, VB, UIMM4}},
1572  {"evfscmplt",    VX (4, 653),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {CRFD, RA, RB}},
1573  {"evfscmpeq",    VX (4, 654),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {CRFD, RA, RB}},
1574  {"vupklsb",    VX (4, 654),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1575 @@ -3131,6 +3393,7 @@ const struct powerpc_opcode powerpc_opco
1576  {"efsdiv",    VX (4, 713),    VX_MASK,     PPCEFS|PPCVLE, PPCNONE,    {RS, RA, RB}},
1577  {"vrfim",    VX (4, 714),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1578  {"efscmpgt",    VX (4, 716),    VX_MASK,     PPCEFS|PPCVLE, PPCNONE,    {CRFD, RA, RB}},
1579 +{"vextractd",    VX (4, 717),    VXUIMM4_MASK,PPCVEC3,        PPCNONE,    {VD, VB, UIMM4}},
1580  {"efscmplt",    VX (4, 717),    VX_MASK,     PPCEFS|PPCVLE, PPCNONE,    {CRFD, RA, RB}},
1581  {"efscmpeq",    VX (4, 718),    VX_MASK,     PPCEFS|PPCVLE, PPCNONE,    {CRFD, RA, RB}},
1582  {"vupklsh",    VX (4, 718),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1583 @@ -3195,6 +3458,7 @@ const struct powerpc_opcode powerpc_opco
1584  {"vcuxwfp",    VX (4, 778),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM}},
1585  {"evlhhousplatx",VX(4, 780),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1586  {"vspltisb",    VX (4, 780),    VXVB_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, SIMM}},
1587 +{"vinsertb",    VX (4, 781),    VXUIMM4_MASK,PPCVEC3,        PPCNONE,    {VD, VB, UIMM4}},
1588  {"evlhhousplat",VX (4, 781),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, EVUIMM_2, RA}},
1589  {"evlhhossplatx",VX(4, 782),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1590  {"vpkpx",    VX (4, 782),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1591 @@ -3228,6 +3492,7 @@ const struct powerpc_opcode powerpc_opco
1592  {"evstwwox",    VX (4, 828),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1593  {"evstwwo",    VX (4, 829),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, EVUIMM_4, RA}},
1594  {"vaddshs",    VX (4, 832),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1595 +{"bcdcpsgn.",    VX (4, 833),    VX_MASK,     PPCVEC3,        PPCNONE,    {VD, VA, VB}},
1596  {"vminsh",    VX (4, 834),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1597  {"vsrah",    VX (4, 836),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1598  {"vcmpgtsh",    VXR(4, 838,0),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1599 @@ -3235,6 +3500,7 @@ const struct powerpc_opcode powerpc_opco
1600  {"vcfsx",    VX (4, 842),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM}},
1601  {"vcsxwfp",    VX (4, 842),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM}},
1602  {"vspltish",    VX (4, 844),    VXVB_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, SIMM}},
1603 +{"vinserth",    VX (4, 845),    VXUIMM4_MASK,PPCVEC3,        PPCNONE,    {VD, VB, UIMM4}},
1604  {"vupkhpx",    VX (4, 846),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1605  {"mullhw",    XRC(4, 424,0),    X_MASK,      MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1606  {"mullhw.",    XRC(4, 424,1),    X_MASK,      MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1607 @@ -3250,6 +3516,7 @@ const struct powerpc_opcode powerpc_opco
1608  {"vctuxs",    VX (4, 906),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM}},
1609  {"vcfpuxws",    VX (4, 906),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM}},
1610  {"vspltisw",    VX (4, 908),    VXVB_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, SIMM}},
1611 +{"vinsertw",    VX (4, 909),    VXUIMM4_MASK,PPCVEC3,        PPCNONE,    {VD, VB, UIMM4}},
1612  {"maclhwsu",    XO (4, 460,0,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1613  {"maclhwsu.",    XO (4, 460,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1614  {"vminsd",    VX (4, 962),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1615 @@ -3258,6 +3525,7 @@ const struct powerpc_opcode powerpc_opco
1616  {"vcmpgtsd",    VXR(4, 967,0),    VXR_MASK,    PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1617  {"vctsxs",    VX (4, 970),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM}},
1618  {"vcfpsxws",    VX (4, 970),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VB, UIMM}},
1619 +{"vinsertd",    VX (4, 973),    VXUIMM4_MASK,PPCVEC3,        PPCNONE,    {VD, VB, UIMM4}},
1620  {"vupklpx",    VX (4, 974),    VXVA_MASK,   PPCVEC|PPCVLE, PPCNONE,    {VD, VB}},
1621  {"maclhws",    XO (4, 492,0,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1622  {"maclhws.",    XO (4, 492,0,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1623 @@ -3270,6 +3538,7 @@ const struct powerpc_opcode powerpc_opco
1624  {"evmhessf",    VX (4,1027),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1625  {"vand",    VX (4,1028),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1626  {"vcmpequb.",    VXR(4,     6,1),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1627 +{"vcmpneb.",    VXR(4,     7,1),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1628  {"udi0fcm.",    APU(4, 515,0), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1629  {"udi0fcm",    APU(4, 515,1), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1630  {"evmhossf",    VX (4,1031),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1631 @@ -3302,6 +3571,7 @@ const struct powerpc_opcode powerpc_opco
1632  {"vcmpequh.",    VXR(4,    70,1),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1633  {"udi1fcm.",    APU(4, 547,0), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1634  {"udi1fcm",    APU(4, 547,1), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},   
1635 +{"vcmpneh.",    VXR(4,  71,1),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1636  {"evmwhssf",    VX (4,1095),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1637  {"vpmsumh",    VX (4,1096),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1638  {"evmwlumi",    VX (4,1096),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1639 @@ -3331,10 +3601,12 @@ const struct powerpc_opcode powerpc_opco
1640  {"evmwsmia",    VX (4,1145),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1641  {"evmwsmfa",    VX (4,1147),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1642  {"vsubuwm",    VX (4,1152),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1643 +{"bcdus.",    VX (4,1153),    VX_MASK,     PPCVEC3,        PPCNONE,    {VD, VA, VB}},
1644  {"vavguw",    VX (4,1154),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1645  {"vabsduw",    VX (4,1155),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1646  {"vmr",        VX (4,1156),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VBA}},
1647  {"vor",        VX (4,1156),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1648 +{"vcmpnew.",    VXR(4, 135,1),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1649  {"vpmsumw",    VX (4,1160),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1650  {"vcmpequw.",    VXR(4, 134,1),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1651  {"udi2fcm.",    APU(4, 579,0), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1652 @@ -3345,6 +3617,7 @@ const struct powerpc_opcode powerpc_opco
1653  {"ps_merge10.",    XOPS(4,592,1),    XOPS_MASK,   PPCPS,    PPCNONE,    {FRT, FRA, FRB}},
1654  {"vsubudm",    VX (4,1216),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1655  {"evaddusiaaw",    VX (4,1216),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA}},
1656 +{"bcds.",    VX (4,1217),    VXPS_MASK,   PPCVEC3,        PPCNONE,    {VD, VA, VB, PS}},
1657  {"evaddssiaaw",    VX (4,1217),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA}},
1658  {"evsubfusiaaw",VX (4,1218),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA}},
1659  {"evsubfssiaaw",VX (4,1219),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA}},
1660 @@ -3370,6 +3643,7 @@ const struct powerpc_opcode powerpc_opco
1661  {"ps_merge11.",    XOPS(4,624,1),    XOPS_MASK,   PPCPS,    PPCNONE,    {FRT, FRA, FRB}},
1662  {"vsubuqm",    VX (4,1280),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1663  {"evmheusiaaw",    VX (4,1280),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1664 +{"bcdtrunc.",    VX (4,1281),    VXPS_MASK,   PPCVEC3,        PPCNONE,    {VD, VA, VB, PS}},
1665  {"evmhessiaaw",    VX (4,1281),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1666  {"vavgsb",    VX (4,1282),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1667  {"evmhessfaaw",    VX (4,1283),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1668 @@ -3379,6 +3653,7 @@ const struct powerpc_opcode powerpc_opco
1669  {"evmhossiaaw",    VX (4,1285),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1670  {"udi4fcm.",    APU(4, 643,0), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1671  {"udi4fcm",    APU(4, 643,1), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1672 +{"vcmpnezb.",    VXR(4, 263,1),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1673  {"evmhossfaaw",    VX (4,1287),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1674  {"evmheumiaaw",    VX (4,1288),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1675  {"vcipher",    VX (4,1288),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1676 @@ -3399,11 +3674,13 @@ const struct powerpc_opcode powerpc_opco
1677  {"evmhogsmfaa",    VX (4,1327),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1678  {"vsubcuq",    VX (4,1344),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1679  {"evmwlusiaaw",    VX (4,1344),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1680 +{"bcdutrunc.",    VX (4,1345),    VX_MASK,     PPCVEC3,        PPCNONE,    {VD, VA, VB}},
1681  {"evmwlssiaaw",    VX (4,1345),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1682  {"vavgsh",    VX (4,1346),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1683  {"vorc",    VX (4,1348),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1684  {"udi5fcm.",    APU(4, 675,0), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1685  {"udi5fcm",    APU(4, 675,1), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1686 +{"vcmpnezh.",    VXR(4, 327,1),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1687  {"vncipher",    VX (4,1352),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1688  {"evmwlumiaaw",    VX (4,1352),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1689  {"vncipherlast",VX (4,1353),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1690 @@ -3421,6 +3698,13 @@ const struct powerpc_opcode powerpc_opco
1691  {"evmheusianw",    VX (4,1408),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1692  {"vsubcuw",    VX (4,1408),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1693  {"evmhessianw",    VX (4,1409),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1694 +{"bcdctsq.",    VXVA(4,1409,0),    VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1695 +{"bcdcfsq.",    VXVA(4,1409,2),    VXVAPS_MASK, PPCVEC3,        PPCNONE,    {VD, VB, PS}},
1696 +{"bcdctz.",    VXVA(4,1409,4),    VXVAPS_MASK, PPCVEC3,        PPCNONE,    {VD, VB, PS}},
1697 +{"bcdctn.",    VXVA(4,1409,5),    VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1698 +{"bcdcfz.",    VXVA(4,1409,6),    VXVAPS_MASK, PPCVEC3,        PPCNONE,    {VD, VB, PS}},
1699 +{"bcdcfn.",    VXVA(4,1409,7),    VXVAPS_MASK, PPCVEC3,        PPCNONE,    {VD, VB, PS}},
1700 +{"bcdsetsgn.",    VXVA(4,1409,31),VXVAPS_MASK, PPCVEC3,        PPCNONE,    {VD, VB, PS}},
1701  {"vavgsw",    VX (4,1410),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1702  {"evmhessfanw",    VX (4,1411),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1703  {"vnand",    VX (4,1412),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1704 @@ -3428,6 +3712,7 @@ const struct powerpc_opcode powerpc_opco
1705  {"evmhossianw",    VX (4,1413),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1706  {"udi6fcm.",    APU(4, 707,0), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1707  {"udi6fcm",    APU(4, 707,1), APU_MASK, PPC405|PPC440, PPC476,        {URT, URA, URB}},
1708 +{"vcmpnezw.",    VXR(4, 391,1),    VXR_MASK,    PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1709  {"evmhossfanw",    VX (4,1415),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1710  {"evmheumianw",    VX (4,1416),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1711  {"evmhesmianw",    VX (4,1417),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1712 @@ -3444,6 +3729,7 @@ const struct powerpc_opcode powerpc_opco
1713  {"evmhogsmian",    VX (4,1453),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1714  {"evmhogsmfan",    VX (4,1455),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1715  {"evmwlusianw",    VX (4,1472),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1716 +{"bcdsr.",    VX (4,1473),    VXPS_MASK,   PPCVEC3,        PPCNONE,    {VD, VA, VB, PS}},
1717  {"evmwlssianw",    VX (4,1473),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1718  {"vsld",    VX (4,1476),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1719  {"vcmpgefp.",    VXR(4, 454,1),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1720 @@ -3452,6 +3738,7 @@ const struct powerpc_opcode powerpc_opco
1721  {"vsbox",    VX (4,1480),    VXVB_MASK,   PPCVEC2,        PPCNONE,    {VD, VA}},
1722  {"evmwlumianw",    VX (4,1480),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1723  {"evmwlsmianw",    VX (4,1481),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1724 +{"vbpermd",    VX (4,1484),    VX_MASK,     PPCVEC3,        PPCNONE,    {VD, VA, VB}},
1725  {"vpksdss",    VX (4,1486),    VX_MASK,     PPCVEC2,        PPCNONE,    {VD, VA, VB}},
1726  {"evmwssfan",    VX (4,1491),    VX_MASK,     PPCSPE|PPCVLE, PPCNONE,    {RS, RA, RB}},
1727  {"macchwso",    XO (4, 236,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1728 @@ -3462,17 +3749,35 @@ const struct powerpc_opcode powerpc_opco
1729  {"nmacchwso",    XO (4, 238,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1730  {"nmacchwso.",    XO (4, 238,1,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1731  {"vsububs",    VX (4,1536),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1732 +{"vclzlsbb",    VXVA(4,1538,0), VXVA_MASK,   PPCVEC3,        PPCNONE,    {RT, VB}},
1733 +{"vctzlsbb",    VXVA(4,1538,1), VXVA_MASK,   PPCVEC3,        PPCNONE,    {RT, VB}},
1734 +{"vnegw",    VXVA(4,1538,6), VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1735 +{"vnegd",    VXVA(4,1538,7), VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1736 +{"vprtybw",    VXVA(4,1538,8), VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1737 +{"vprtybd",    VXVA(4,1538,9), VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1738 +{"vprtybq",    VXVA(4,1538,10),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1739 +{"vextsb2w",    VXVA(4,1538,16),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1740 +{"vextsh2w",    VXVA(4,1538,17),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1741 +{"vextsb2d",    VXVA(4,1538,24),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1742 +{"vextsh2d",    VXVA(4,1538,25),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1743 +{"vextsw2d",    VXVA(4,1538,26),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1744 +{"vctzb",    VXVA(4,1538,28),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1745 +{"vctzh",    VXVA(4,1538,29),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1746 +{"vctzw",    VXVA(4,1538,30),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1747 +{"vctzd",    VXVA(4,1538,31),VXVA_MASK,   PPCVEC3,        PPCNONE,    {VD, VB}},
1748  {"mfvscr",    VX (4,1540),    VXVAVB_MASK, PPCVEC|PPCVLE, PPCNONE,    {VD}},
1749  {"vcmpgtub.",    VXR(4, 518,1),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1750  {"udi8fcm.",    APU(4, 771,0),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1751  {"udi8fcm",    APU(4, 771,1),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1752  {"vsum4ubs",    VX (4,1544),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1753 +{"vextublx",    VX (4,1549),    VX_MASK,     PPCVEC3,        PPCNONE,    {RT, RA, VB}},
1754  {"vsubuhs",    VX (4,1600),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1755  {"mtvscr",    VX (4,1604),    VXVDVA_MASK, PPCVEC|PPCVLE, PPCNONE,    {VB}},
1756  {"vcmpgtuh.",    VXR(4, 582,1),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1757  {"vsum4shs",    VX (4,1608),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1758  {"udi9fcm.",    APU(4, 804,0),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1759  {"udi9fcm",    APU(4, 804,1),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1760 +{"vextuhlx",    VX (4,1613),    VX_MASK,     PPCVEC3,    PPCNONE,    {RT, RA, VB}},
1761  {"vupkhsw",    VX (4,1614),    VXVA_MASK,   PPCVEC2,        PPCNONE,    {VD, VB}},
1762  {"vsubuws",    VX (4,1664),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1763  {"vshasigmaw",    VX (4,1666),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, ST, SIX}},
1764 @@ -3482,6 +3787,7 @@ const struct powerpc_opcode powerpc_opco
1765  {"udi10fcm",    APU(4, 835,1),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1766  {"vsum2sws",    VX (4,1672),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1767  {"vmrgow",    VX (4,1676),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1768 +{"vextuwlx",    VX (4,1677),    VX_MASK,     PPCVEC3,    PPCNONE,    {RT, RA, VB}},
1769  {"vshasigmad",    VX (4,1730),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, ST, SIX}},
1770  {"vsrd",    VX (4,1732),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1771  {"vcmpgtfp.",    VXR(4, 710,1),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1772 @@ -3492,16 +3798,20 @@ const struct powerpc_opcode powerpc_opco
1773  {"vsubsbs",    VX (4,1792),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1774  {"vclzb",    VX (4,1794),    VXVA_MASK,   PPCVEC2,    PPCNONE,    {VD, VB}},
1775  {"vpopcntb",    VX (4,1795),    VXVA_MASK,   PPCVEC2,    PPCNONE,    {VD, VB}},
1776 +{"vsrv",    VX (4,1796),    VX_MASK,     PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1777  {"vcmpgtsb.",    VXR(4, 774,1),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1778  {"udi12fcm.",    APU(4, 899,0),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1779  {"udi12fcm",    APU(4, 899,1),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1780  {"vsum4sbs",    VX (4,1800),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1781 +{"vextubrx",    VX (4,1805),    VX_MASK,     PPCVEC3,    PPCNONE,    {RT, RA, VB}},
1782  {"maclhwuo",    XO (4, 396,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1783  {"maclhwuo.",    XO (4, 396,1,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1784  {"vsubshs",    VX (4,1856),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1785  {"vclzh",    VX (4,1858),    VXVA_MASK,   PPCVEC2,    PPCNONE,    {VD, VB}},
1786  {"vpopcnth",    VX (4,1859),    VXVA_MASK,   PPCVEC2,    PPCNONE,    {VD, VB}},
1787 +{"vslv",    VX (4,1860),    VX_MASK,     PPCVEC3,    PPCNONE,    {VD, VA, VB}},
1788  {"vcmpgtsh.",    VXR(4, 838,1),    VXR_MASK,    PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1789 +{"vextuhrx",    VX (4,1869),    VX_MASK,     PPCVEC3,    PPCNONE,    {RT, RA, VB}},
1790  {"udi13fcm.",    APU(4, 931,0),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1791  {"udi13fcm",    APU(4, 931,1),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1792  {"maclhwo",    XO (4, 428,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1793 @@ -3516,6 +3826,7 @@ const struct powerpc_opcode powerpc_opco
1794  {"udi14fcm",    APU(4, 963,1),    APU_MASK,    PPC440,    PPC476,        {URT, URA, URB}},
1795  {"vsumsws",    VX (4,1928),    VX_MASK,     PPCVEC|PPCVLE, PPCNONE,    {VD, VA, VB}},
1796  {"vmrgew",    VX (4,1932),    VX_MASK,     PPCVEC2,    PPCNONE,    {VD, VA, VB}},
1797 +{"vextuwrx",    VX (4,1933),    VX_MASK,     PPCVEC3,    PPCNONE,    {RT, RA, VB}},
1798  {"maclhwsuo",    XO (4, 460,1,0),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1799  {"maclhwsuo.",    XO (4, 460,1,1),XO_MASK,     MULHW|PPCVLE, PPCNONE,    {RT, RA, RB}},
1800  {"vclzd",    VX (4,1986),    VXVA_MASK,   PPCVEC2,    PPCNONE,    {VD, VB}},
1801 @@ -3854,6 +4165,9 @@ const struct powerpc_opcode powerpc_opco
1802  
1803  {"mcrf",      XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM,    PPCNONE,    {BF, BFA}},
1804  
1805 +{"addpcis",   DX(19,2),        DX_MASK,     POWER9,    PPCNONE,    {RT, DXD}},
1806 +{"subpcis",   DX(19,2),        DX_MASK,     POWER9,    PPCNONE,    {RT, NDXD}},
1807 +
1808  {"bdnzlr",   XLO(19,BODNZ,16,0),    XLBOBIBB_MASK, PPCCOM,     PPCNONE,    {0}},
1809  {"bdnzlr-",  XLO(19,BODNZ,16,0),    XLBOBIBB_MASK, PPCCOM,   ISA_V2,    {0}},
1810  {"bdnzlrl",  XLO(19,BODNZ,16,1),    XLBOBIBB_MASK, PPCCOM,     PPCNONE,    {0}},
1811 @@ -4113,17 +4427,20 @@ const struct powerpc_opcode powerpc_opco
1812  {"crset",    XL(19,289),    XL_MASK,     PPCCOM,    PPCNONE,    {BT, BAT, BBA}},
1813  {"creqv",    XL(19,289),    XL_MASK,     COM,    PPCNONE,    {BT, BA, BB}},
1814  
1815 -{"doze",    XL(19,402),    0xffffffff,  POWER6,    PPCNONE,    {0}},
1816 +{"urfid",    XL(19,306),    0xffffffff,  POWER9,    PPCNONE,    {0}},
1817 +{"stop",    XL(19,370),    0xffffffff,  POWER9,    PPCNONE,    {0}},
1818 +
1819 +{"doze",    XL(19,402),    0xffffffff,  POWER6,    POWER9,        {0}},
1820  
1821  {"crorc",    XL(19,417),    XL_MASK,     COM,    PPCNONE,    {BT, BA, BB}},
1822  
1823 -{"nap",        XL(19,434),    0xffffffff,  POWER6,    PPCNONE,    {0}},
1824 +{"nap",        XL(19,434),    0xffffffff,  POWER6,    POWER9,        {0}},
1825  
1826  {"crmove",    XL(19,449),    XL_MASK,     PPCCOM,    PPCNONE,    {BT, BA, BBA}},
1827  {"cror",    XL(19,449),    XL_MASK,     COM,    PPCNONE,    {BT, BA, BB}},
1828  
1829 -{"sleep",    XL(19,466),    0xffffffff,  POWER6,    PPCNONE,    {0}},
1830 -{"rvwinkle",    XL(19,498),    0xffffffff,  POWER6,    PPCNONE,    {0}},
1831 +{"sleep",    XL(19,466),    0xffffffff,  POWER6,    POWER9,        {0}},
1832 +{"rvwinkle",    XL(19,498),    0xffffffff,  POWER6,    POWER9,        {0}},
1833  
1834  {"bctr",    XLO(19,BOU,528,0),        XLBOBIBB_MASK, COM,     PPCNONE,    {0}},
1835  {"bctrl",   XLO(19,BOU,528,1),        XLBOBIBB_MASK, COM,     PPCNONE,    {0}},
1836 @@ -4459,7 +4776,8 @@ const struct powerpc_opcode powerpc_opco
1837  
1838  {"ldepx",    X(31,29),    X_MASK,      E500MC|PPCA2|PPCVLE, PPCNONE, {RT, RA0, RB}},
1839  
1840 -{"waitasec",    X(31,30),    XRTRARB_MASK,POWER8,    PPCNONE,    {0}},
1841 +{"waitasec",    X(31,30),    XRTRARB_MASK,POWER8,    POWER9,        {0}},
1842 +{"wait",    X(31,30),    XWC_MASK,    POWER9,    PPCNONE,    {WC}},
1843  
1844  {"lwepx",    X(31,31),    X_MASK,         E500MC|PPCA2|PPCVLE, PPCNONE, {RT, RA0, RB}},
1845  
1846 @@ -4591,6 +4909,8 @@ const struct powerpc_opcode powerpc_opco
1847  
1848  {"dcbfep",    XRT(31,127,0),    XRT_MASK,    E500MC|PPCA2|PPCVLE, PPCNONE, {RA0, RB}},
1849   
1850 +{"setb",    X(31,128),    XRB_MASK|(3<<16), POWER9, PPCNONE,    {RT, BFA}},
1851 +
1852  {"wrtee",    X(31,131),    XRARB_MASK,  PPC403|BOOKE|PPCA2|PPC476|PPCVLE, PPCNONE, {RS}},
1853   
1854  {"dcbtstls",    X(31,134),    X_MASK,         PPCCHLK|PPC476|TITAN|PPCVLE, PPCNONE, {CT, RA0, RB}},
1855 @@ -4673,6 +4993,8 @@ const struct powerpc_opcode powerpc_opco
1856  
1857  {"prtyd",    X(31,186),    XRB_MASK, POWER6|PPCA2,    PPCNONE,    {RA, RS}},
1858  
1859 +{"cmprb",    X(31,192),    XCMP_MASK,   POWER9,    PPCNONE,    {BF, L, RA, RB}},
1860 +
1861  {"icblq.",    XRC(31,198,1),    X_MASK,      E6500,    PPCNONE,    {CT, RA0, RB}},
1862  
1863  {"stvewx",    X(31,199),    X_MASK,      PPCVEC,    PPCNONE,    {VS, RA0, RB}},
1864 @@ -4711,6 +5033,8 @@ const struct powerpc_opcode powerpc_opco
1865  
1866  {"stbepx",    X(31,223),    X_MASK,      E500MC|PPCA2|PPCVLE, PPCNONE, {RS, RA0, RB}},
1867   
1868 +{"cmpeqb",    X(31,224),    XCMPL_MASK,   POWER9,    PPCNONE,    {BF, RA, RB}},
1869 +
1870  {"icblc",    X(31,230),    X_MASK,    PPCCHLK|PPC476|TITAN|PPCVLE, PPCNONE, {CT, RA0, RB}},
1871  
1872  {"stvx",    X(31,231),    X_MASK,      PPCVEC|PPCVLE, PPCNONE,    {VS, RA0, RB}},
1873 @@ -4770,14 +5094,22 @@ const struct powerpc_opcode powerpc_opco
1874  {"doz",        XO(31,264,0,0),    XO_MASK,     M601,    PPCNONE,    {RT, RA, RB}},
1875  {"doz.",    XO(31,264,0,1),    XO_MASK,     M601,    PPCNONE,    {RT, RA, RB}},
1876  
1877 +{"modud",    X(31,265),    X_MASK,      POWER9,    PPCNONE,    {RT, RA, RB}},
1878 +
1879  {"add",        XO(31,266,0,0),    XO_MASK,     PPCCOM|PPCVLE, PPCNONE,    {RT, RA, RB}},
1880  {"cax",        XO(31,266,0,0),    XO_MASK,     PWRCOM,    PPCNONE,    {RT, RA, RB}},
1881  {"add.",    XO(31,266,0,1),    XO_MASK,     PPCCOM|PPCVLE, PPCNONE,    {RT, RA, RB}},
1882  {"cax.",    XO(31,266,0,1),    XO_MASK,     PWRCOM,    PPCNONE,    {RT, RA, RB}},
1883  
1884 +{"moduw",    X(31,267),    X_MASK,      POWER9,    PPCNONE,    {RT, RA, RB}},
1885 +
1886 +{"lxvx",    X(31,268),    XX1_MASK|1<<6, PPCVSX3,    PPCNONE,    {XT6, RA0, RB}},
1887 +{"lxvl",    X(31,269),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XT6, RA0, RB}},
1888 +
1889  {"ehpriv",    X(31,270),    0xffffffff, E500MC|PPCA2|PPCVLE, PPCNONE, {0}},
1890  
1891 -{"tlbiel",    X(31,274),    XRTLRA_MASK, POWER4,    PPC476,        {RB, L}},
1892 +{"tlbiel",    X(31,274),    X_MASK|1<<20,POWER9,    PPC476,      {RB, RSO, RIC, PRS, X_R}},
1893 +{"tlbiel",    X(31,274),    XRTLRA_MASK, POWER4,    POWER9|PPC476,    {RB, L}},
1894  
1895  {"mfapidi",    X(31,275),    X_MASK,      BOOKE,    TITAN,      {RT, RA}},
1896  
1897 @@ -4805,12 +5137,19 @@ const struct powerpc_opcode powerpc_opco
1898  {"lvexhx",    X(31,293),    X_MASK,      PPCVEC2,    PPCNONE,    {VD, RA0, RB}},
1899  {"lvepx",    X(31,295),    X_MASK,      PPCVEC2|PPCVLE, PPCNONE,    {VD, RA0, RB}},
1900  
1901 +{"lxvll",    X(31,301),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XT6, RA0, RB}},
1902 +
1903  {"mfbhrbe",    X(31,302),    X_MASK,      POWER8,    PPCNONE,    {RT, BHRBE}},
1904  
1905 -{"tlbie",    X(31,306),    XRA_MASK,    POWER7,    TITAN,      {RB, RS}},
1906 -{"tlbie",    X(31,306),    XRTLRA_MASK, PPC,    POWER7|TITAN,      {RB, L}},
1907 +{"tlbie",    X(31,306),    X_MASK|1<<20,POWER9,    TITAN,      {RB, RS, RIC, PRS, X_R}},
1908 +{"tlbie",    X(31,306),    XRA_MASK,    POWER7,    POWER9|TITAN,      {RB, RS}},
1909 +{"tlbie",    X(31,306),    XRTLRA_MASK, PPC,    E500|POWER7|TITAN,      {RB, L}},
1910  {"tlbi",    X(31,306),    XRT_MASK,    POWER,    PPCNONE,    {RA0, RB}},
1911  
1912 +{"mfvsrld",    X(31,307),    XX1RB_MASK,  PPCVSX3,    PPCNONE,    {RA, XS6}},
1913 +
1914 +{"ldmx",    X(31,309),    X_MASK,      POWER9,    PPCNONE,      {RT, RA0, RB}},
1915 +
1916  {"eciwx",    X(31,310),    X_MASK,      PPC,    TITAN,      {RT, RA0, RB}},
1917  
1918  {"lhzux",    X(31,311),    X_MASK,      COM|PPCVLE, PPCNONE,    {RT, RAL, RB}},
1919 @@ -4871,6 +5210,8 @@ const struct powerpc_opcode powerpc_opco
1920  {"mfpmr",    X(31,334),    X_MASK, PPCPMR|PPCE300|PPCVLE, PPCNONE,    {RT, PMR}},
1921  {"mftmr",    X(31,366),    X_MASK,    PPCTMR|E6500,    PPCNONE,    {RT, TMR}},
1922  
1923 +{"slbsync",    X(31,338),      0xffffffff,  POWER9,    PPCNONE,    {0}},
1924 +
1925  {"mfmq",    XSPR(31,339,  0), XSPR_MASK, M601,    PPCNONE,    {RT}},
1926  {"mfxer",    XSPR(31,339,  1), XSPR_MASK, COM|PPCVLE, PPCNONE,    {RT}},
1927  {"mfrtcu",    XSPR(31,339,  4), XSPR_MASK, COM,    TITAN,      {RT}},
1928 @@ -5085,6 +5426,8 @@ const struct powerpc_opcode powerpc_opco
1929  {"divs",    XO(31,363,0,0),    XO_MASK,     M601,    PPCNONE,    {RT, RA, RB}},
1930  {"divs.",    XO(31,363,0,1),    XO_MASK,     M601,    PPCNONE,    {RT, RA, RB}},
1931  
1932 +{"lxvwsx",    X(31,364),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XT6, RA0, RB}},
1933 +
1934  {"tlbia",    X(31,370),    0xffffffff,  PPC,    TITAN,      {0}},
1935  
1936  {"mftbu",    XSPR(31,371,269), XSPR_MASK, PPC,    NO371|POWER4,    {RT}},
1937 @@ -5112,10 +5455,15 @@ const struct powerpc_opcode powerpc_opco
1938  {"divweu",    XO(31,395,0,0),    XO_MASK,  POWER7|PPCA2,    PPCNONE,    {RT, RA, RB}},
1939  {"divweu.",    XO(31,395,0,1),    XO_MASK,  POWER7|PPCA2,    PPCNONE,    {RT, RA, RB}},
1940  
1941 +{"stxvx",    X(31,396),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XS6, RA0, RB}},
1942 +{"stxvl",    X(31,397),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XS6, RA0, RB}},
1943 +
1944  {"dcblce",    X(31,398),    X_MASK,      PPCCHLK,    E500MC,        {CT, RA, RB}},
1945  
1946  {"slbmte",    X(31,402),    XRA_MASK,    PPC64,    PPCNONE,    {RS, RB}},
1947  
1948 +{"mtvsrws",    X(31,403),    XX1RB_MASK,  PPCVSX3,    PPCNONE,    {XT6, RA}},
1949 +
1950  {"pbt.",    XRC(31,404,1),    X_MASK,      POWER8,    PPCNONE,    {RS, RA0, RB}},
1951  
1952  {"icswx",    XRC(31,406,0),    X_MASK,   POWER7|PPCA2,    PPCNONE,    {RS, RA, RB}},
1953 @@ -5139,10 +5487,14 @@ const struct powerpc_opcode powerpc_opco
1954  {"divwe",    XO(31,427,0,0),    XO_MASK,  POWER7|PPCA2,    PPCNONE,    {RT, RA, RB}},
1955  {"divwe.",    XO(31,427,0,1),    XO_MASK,  POWER7|PPCA2,    PPCNONE,    {RT, RA, RB}},
1956  
1957 +{"stxvll",    X(31,429),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XS6, RA0, RB}},
1958 +
1959  {"clrbhrb",    X(31,430),    0xffffffff,  POWER8,    PPCNONE,    {0}},
1960  
1961  {"slbie",    X(31,434),    XRTRA_MASK,  PPC64,    PPCNONE,    {RB}},
1962  
1963 +{"mtvsrdd",    X(31,435),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XT6, RA0, RB}},
1964 +
1965  {"ecowx",    X(31,438),    X_MASK,      PPC,    TITAN,      {RT, RA0, RB}},
1966  
1967  {"sthux",    X(31,439),    X_MASK,      COM|PPCVLE, PPCNONE,    {RS, RAS, RB}},
1968 @@ -5212,6 +5564,8 @@ const struct powerpc_opcode powerpc_opco
1969  {"mtpmr",    X(31,462),    X_MASK, PPCPMR|PPCE300|PPCVLE, PPCNONE,    {PMR, RS}},
1970  {"mttmr",    X(31,494),    X_MASK,    PPCTMR|E6500,    PPCNONE,    {TMR, RS}},
1971  
1972 +{"slbieg",    X(31,466),    XRA_MASK,    POWER9,    PPCNONE,    {RS, RB}},
1973 +
1974  {"mtmq",    XSPR(31,467,  0), XSPR_MASK, M601,    PPCNONE,    {RS}},
1975  {"mtxer",    XSPR(31,467,  1), XSPR_MASK, COM|PPCVLE, PPCNONE,    {RS}},
1976  {"mtlr",    XSPR(31,467,  8), XSPR_MASK, COM|PPCVLE, PPCNONE,    {RS}},
1977 @@ -5409,7 +5763,7 @@ const struct powerpc_opcode powerpc_opco
1978  
1979  {"cmpb",    X(31,508),    X_MASK, POWER6|PPCA2|PPC476, PPCNONE,    {RA, RS, RB}},
1980  
1981 -{"mcrxr",    X(31,512), XRARB_MASK|(3<<21), COM|PPCVLE, POWER7,    {BF}},
1982 +{"mcrxr",    X(31,512),    XBFRARB_MASK, COM|PPCVLE, POWER7,    {BF}},
1983  
1984  {"lbdx",    X(31,515),    X_MASK,      E500MC|PPCVLE, PPCNONE,    {RT, RA, RB}},
1985  
1986 @@ -5452,6 +5806,9 @@ const struct powerpc_opcode powerpc_opco
1987  {"rrib",    XRC(31,537,0),    X_MASK,      M601,    PPCNONE,    {RA, RS, RB}},
1988  {"rrib.",    XRC(31,537,1),    X_MASK,      M601,    PPCNONE,    {RA, RS, RB}},
1989  
1990 +{"cnttzw",    XRC(31,538,0),    XRB_MASK,    POWER9,    PPCNONE,    {RA, RS}},
1991 +{"cnttzw.",    XRC(31,538,1),    XRB_MASK,    POWER9,    PPCNONE,    {RA, RS}},
1992 +
1993  {"srd",        XRC(31,539,0),    X_MASK,      PPC64,    PPCNONE,    {RA, RS, RB}},
1994  {"srd.",    XRC(31,539,1),    X_MASK,      PPC64,    PPCNONE,    {RA, RS, RB}},
1995  
1996 @@ -5476,10 +5833,17 @@ const struct powerpc_opcode powerpc_opco
1997  
1998  {"lfsux",    X(31,567),    X_MASK,      COM,    PPCEFS,        {FRT, RAS, RB}},
1999  
2000 +{"cnttzd",    XRC(31,570,0),    XRB_MASK,    POWER9,    PPCNONE,    {RA, RS}},
2001 +{"cnttzd.",    XRC(31,570,1),    XRB_MASK,    POWER9,    PPCNONE,    {RA, RS}},
2002 +
2003 +{"mcrxrx",    X(31,576),    XBFRARB_MASK, POWER9,    PPCNONE,    {BF}},
2004 +
2005  {"lwdx",    X(31,579),    X_MASK,      E500MC|PPCVLE, PPCNONE,    {RT, RA, RB}},
2006  
2007  {"lvtlx",    X(31,581),    X_MASK,      PPCVEC2,    PPCNONE,    {VD, RA0, RB}},
2008  
2009 +{"lwat",    X(31,582),    X_MASK,      POWER9,    PPCNONE,    {RT, RA0, FC}},
2010 +
2011  {"lwfcmux",    APU(31,583,0),     APU_MASK,    PPC405,    PPCNONE,    {FCRT, RA, RB}},
2012  
2013  {"lxsdx",    X(31,588),    XX1_MASK,    PPCVSX,    PPCNONE,    {XT6, RA0, RB}},
2014 @@ -5492,8 +5856,8 @@ const struct powerpc_opcode powerpc_opco
2015  {"hwsync",    XSYNC(31,598,0), 0xffffffff, POWER4,    BOOKE|PPC476,    {0}},
2016  {"lwsync",    XSYNC(31,598,1), 0xffffffff, PPC,    E500,        {0}},
2017  {"ptesync",    XSYNC(31,598,2), 0xffffffff, PPC64,    PPCNONE,    {0}},
2018 -{"sync",    X(31,598),    XSYNCLE_MASK,E6500,    PPCNONE,    {LS, ESYNC}},
2019 -{"sync",    X(31,598),    XSYNC_MASK, PPCCOM|PPCVLE, BOOKE|PPC476, {LS}},
2020 +{"sync",    X(31,598),    XSYNCLE_MASK,POWER9|E6500, PPCNONE,    {LS, ESYNC}},
2021 +{"sync",    X(31,598),    XSYNC_MASK, PPCCOM|PPCVLE, BOOKE|PPC476|POWER9, {LS}},
2022  {"msync",    X(31,598),    0xffffffff, BOOKE|PPCA2|PPC476, PPCNONE, {0}},
2023  {"sync",    X(31,598),    0xffffffff, BOOKE|PPC476, E6500,    {0}},
2024  {"lwsync",    X(31,598),    0xffffffff, E500,    PPCNONE,    {0}},
2025 @@ -5508,6 +5872,8 @@ const struct powerpc_opcode powerpc_opco
2026  
2027  {"lvswx",    X(31,613),    X_MASK,      PPCVEC2,    PPCNONE,    {VD, RA0, RB}},
2028  
2029 +{"ldat",    X(31,614),    X_MASK,      POWER9,    PPCNONE,    {RT, RA0, FC}},
2030 +
2031  {"lqfcmux",    APU(31,615,0),     APU_MASK,    PPC405,    PPCNONE,    {FCRT, RA, RB}},
2032  
2033  {"nego",    XO(31,104,1,0),    XORB_MASK,   COM|PPCVLE, PPCNONE,    {RT, RA}},
2034 @@ -5580,6 +5946,8 @@ const struct powerpc_opcode powerpc_opco
2035  
2036  {"stvflx",    X(31,709),    X_MASK,      PPCVEC2,    PPCNONE,    {VS, RA0, RB}},
2037  
2038 +{"stwat",    X(31,710),    X_MASK,      POWER9,    PPCNONE,    {RS, RA0, FC}},
2039 +
2040  {"stwfcmux",    APU(31,711,0),     APU_MASK,    PPC405,    PPCNONE,    {FCRT, RA, RB}},
2041  
2042  {"stxsdx",    X(31,716),    XX1_MASK,    PPCVSX,    PPCNONE,    {XS6, RA0, RB}},
2043 @@ -5616,6 +5984,8 @@ const struct powerpc_opcode powerpc_opco
2044  
2045  {"stvswx",    X(31,741),    X_MASK,      PPCVEC2,    PPCNONE,    {VS, RA0, RB}},
2046  
2047 +{"stdat",    X(31,742),    X_MASK,      POWER9,    PPCNONE,    {RS, RA0, FC}},
2048 +
2049  {"stqfcmux",    APU(31,743,0),     APU_MASK,    PPC405,    PPCNONE,    {FCRT, RA, RB}},
2050  
2051  {"subfmeo",    XO(31,232,1,0),    XORB_MASK,   PPCCOM,    PPCNONE,    {RT, RA}},
2052 @@ -5640,6 +6010,8 @@ const struct powerpc_opcode powerpc_opco
2053  {"tresume.",    XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM,    PPCNONE,    {0}},
2054  {"tsr.",    XRC(31,750,1),    XRTLRARB_MASK,PPCHTM,    PPCNONE,    {L}},
2055  
2056 +{"darn",    X(31,755),    XLRAND_MASK, POWER9,    PPCNONE,    {RT, LRAND}},
2057 +
2058  {"dcba",    X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476|PPCVLE, PPCNONE, {RA0, RB}},
2059  {"dcbal",    XOPL(31,758,1), XRT_MASK,    E500MC,    PPCNONE,    {RA0, RB}},
2060  
2061 @@ -5649,6 +6021,10 @@ const struct powerpc_opcode powerpc_opco
2062  {"srliq.",    XRC(31,760,1),    X_MASK,      M601,    PPCNONE,    {RA, RS, SH}},
2063  
2064  {"lvsm",    X(31,773),    X_MASK,      PPCVEC2,    PPCNONE,    {VD, RA0, RB}},
2065 +
2066 +{"copy_first",    XOPL(31,774,1),    XRT_MASK,    POWER9,    PPCNONE,    {RA0, RB}},
2067 +{"copy",    X(31,774),    XLRT_MASK,   POWER9,    PPCNONE,    {RA0, RB, L}},
2068 +
2069  {"stvepxl",    X(31,775),    X_MASK,      PPCVEC2,    PPCNONE,    {VS, RA0, RB}},
2070  {"lvlxl",    X(31,775),    X_MASK,      CELL,    PPCNONE,    {VD, RA0, RB}},
2071  {"ldfcmux",    APU(31,775,0),     APU_MASK,    PPC405,    PPCNONE,    {FCRT, RA, RB}},
2072 @@ -5661,7 +6037,11 @@ const struct powerpc_opcode powerpc_opco
2073  {"addo.",    XO(31,266,1,1),    XO_MASK, PPCCOM|PPCVLE, PPCNONE,    {RT, RA, RB}},
2074  {"caxo.",    XO(31,266,1,1),    XO_MASK,     PWRCOM,    PPCNONE,    {RT, RA, RB}},
2075  
2076 +{"modsd",    X(31,777),    X_MASK,      POWER9,    PPCNONE,    {RT, RA, RB}},
2077 +{"modsw",    X(31,779),    X_MASK,      POWER9,    PPCNONE,    {RT, RA, RB}},
2078 +
2079  {"lxvw4x",    X(31,780),    XX1_MASK,    PPCVSX,    PPCNONE,    {XT6, RA0, RB}},
2080 +{"lxsibzx",    X(31,781),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XT6, RA0, RB}},
2081  
2082  {"tabortwc.",    XRC(31,782,1),    X_MASK,      PPCHTM,    PPCNONE,    {TO, RA, RB}},
2083  
2084 @@ -5688,6 +6068,9 @@ const struct powerpc_opcode powerpc_opco
2085  {"stvepx",    X(31,807),    X_MASK,      PPCVEC2,    PPCNONE,    {VS, RA0, RB}},
2086  {"lvrxl",    X(31,807),    X_MASK,      CELL,    PPCNONE,    {VD, RA0, RB}},
2087  
2088 +{"lxvh8x",    X(31,812),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XT6, RA0, RB}},
2089 +{"lxsihzx",    X(31,813),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XT6, RA0, RB}},
2090 +
2091  {"tabortdc.",    XRC(31,814,1),    X_MASK,      PPCHTM,    PPCNONE,    {TO, RA, RB}},
2092  
2093  {"rac",        X(31,818),    X_MASK,      M601,    PPCNONE,    {RT, RA, RB}},
2094 @@ -5710,17 +6093,20 @@ const struct powerpc_opcode powerpc_opco
2095  
2096  {"lvtlxl",    X(31,837),    X_MASK,      PPCVEC2,    PPCNONE,    {VD, RA0, RB}},
2097  
2098 +{"cp_abort",    X(31,838),    XRTRARB_MASK,POWER9,    PPCNONE,    {0}},
2099 +
2100  {"divo",    XO(31,331,1,0),    XO_MASK,     M601,    PPCNONE,    {RT, RA, RB}},
2101  {"divo.",    XO(31,331,1,1),    XO_MASK,     M601,    PPCNONE,    {RT, RA, RB}},
2102  
2103  {"lxvd2x",    X(31,844),    XX1_MASK,    PPCVSX,    PPCNONE,    {XT6, RA0, RB}},
2104 -{"lxvx",    X(31,844),    XX1_MASK,    PPCVSX,    PPCNONE,    {XT6, RA0, RB}},
2105 +{"lxvx",    X(31,844),    XX1_MASK,    POWER8,    POWER9|PPCVSX3,    {XT6, RA0, RB}},
2106  
2107  {"tabortwci.",    XRC(31,846,1),    X_MASK,      PPCHTM,    PPCNONE,    {TO, RA, HTM_SI}},
2108  
2109  {"tlbsrx.",    XRC(31,850,1),    XRT_MASK,    PPCA2,    PPCNONE,    {RA0, RB}},
2110  
2111 -{"slbmfev",    X(31,851),    XRA_MASK,    PPC64,    PPCNONE,    {RT, RB}},
2112 +{"slbmfev",    X(31,851),    XRLA_MASK,   POWER9,    PPCNONE,    {RT, RB, A_L}},
2113 +{"slbmfev",    X(31,851),    XRA_MASK,    PPC64,    POWER9,        {RT, RB}},
2114  
2115  {"lbzcix",    X(31,853),    X_MASK,      POWER6,    PPCNONE,    {RT, RA0, RB}},
2116  
2117 @@ -5739,12 +6125,25 @@ const struct powerpc_opcode powerpc_opco
2118  {"divso",    XO(31,363,1,0),    XO_MASK,     M601,    PPCNONE,    {RT, RA, RB}},
2119  {"divso.",    XO(31,363,1,1),    XO_MASK,     M601,    PPCNONE,    {RT, RA, RB}},
2120  
2121 +{"lxvb16x",    X(31,876),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XT6, RA0, RB}},
2122 +
2123  {"tabortdci.",    XRC(31,878,1),    X_MASK,      PPCHTM,    PPCNONE,    {TO, RA, HTM_SI}},
2124  
2125 +{"rmieg",    X(31,882),    XRTRA_MASK,  POWER9,    PPCNONE,    {RB}},
2126 +
2127  {"ldcix",    X(31,885),    X_MASK,      POWER6,    PPCNONE,    {RT, RA0, RB}},
2128  
2129 +{"msgsync",    X(31,886),    0xffffffff,  POWER9,    PPCNONE,    {0}},
2130 +
2131  {"lfiwzx",    X(31,887),    X_MASK,   POWER7|PPCA2,    PPCNONE,    {FRT, RA0, RB}},
2132  
2133 +{"extswsli",    XS(31,445,0),    XS_MASK,     POWER9,    PPCNONE,    {RA, RS, SH6}},
2134 +{"extswsli.",    XS(31,445,1),    XS_MASK,     POWER9,    PPCNONE,    {RA, RS, SH6}},
2135 +
2136 +{"paste",    XRC(31,902,0),  XLRT_MASK,   POWER9,    PPCNONE,    {RA0, RB, L0}},
2137 +{"paste_last",    XRCL(31,902,1,1),XRT_MASK,   POWER9,    PPCNONE,    {RA0, RB}},
2138 +{"paste.",    XRC(31,902,1),  XLRT_MASK,   POWER9,    PPCNONE,    {RA0, RB, L1}},
2139 +
2140  {"stvlxl",    X(31,903),    X_MASK,      CELL,    PPCNONE,    {VS, RA0, RB}},
2141  {"stdfcmux",    APU(31,903,0),     APU_MASK,    PPC405,    PPCNONE,    {FCRT, RA, RB}},
2142  
2143 @@ -5754,13 +6153,15 @@ const struct powerpc_opcode powerpc_opco
2144  {"divweuo.",    XO(31,395,1,1),    XO_MASK,  POWER7|PPCA2,    PPCNONE,    {RT, RA, RB}},
2145  
2146  {"stxvw4x",    X(31,908),    XX1_MASK,    PPCVSX,    PPCNONE,    {XS6, RA0, RB}},
2147 +{"stxsibx",    X(31,909),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XS6, RA0, RB}},
2148  
2149  {"tabort.",    XRC(31,910,1),    XRTRB_MASK,  PPCHTM,    PPCNONE,    {RA}},
2150  
2151  {"tlbsx",    XRC(31,914,0),    X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {RTO, RA0, RB}},
2152  {"tlbsx.",    XRC(31,914,1),    X_MASK, PPC403|BOOKE|PPCA2|PPC476, PPCNONE, {RTO, RA0, RB}},
2153  
2154 -{"slbmfee",    X(31,915),    XRA_MASK,    PPC64,    PPCNONE,    {RT, RB}},
2155 +{"slbmfee",    X(31,915),    XRLA_MASK,   POWER9,    PPCNONE,    {RT, RB, A_L}},
2156 +{"slbmfee",    X(31,915),    XRA_MASK,    PPC64,    POWER9,        {RT, RB}},
2157  
2158  {"stwcix",    X(31,917),    X_MASK,      POWER6,    PPCNONE,    {RS, RA0, RB}},
2159  
2160 @@ -5795,6 +6196,9 @@ const struct powerpc_opcode powerpc_opco
2161  {"divweo",    XO(31,427,1,0),    XO_MASK,  POWER7|PPCA2,    PPCNONE,    {RT, RA, RB}},
2162  {"divweo.",    XO(31,427,1,1),    XO_MASK,  POWER7|PPCA2,    PPCNONE,    {RT, RA, RB}},
2163  
2164 +{"stxvh8x",    X(31,940),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XS6, RA0, RB}},
2165 +{"stxsihx",    X(31,941),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XS6, RA0, RB}},
2166 +
2167  {"treclaim.",    XRC(31,942,1),    XRTRB_MASK,  PPCHTM,    PPCNONE,    {RA}},
2168  
2169  {"tlbrehi",    XTLB(31,946,0),    XTLB_MASK,   PPC403,    PPCA2,        {RT, RA}},
2170 @@ -5826,7 +6230,7 @@ const struct powerpc_opcode powerpc_opco
2171  {"divwuo.",    XO(31,459,1,1),    XO_MASK,     PPC|PPCVLE, PPCNONE,    {RT, RA, RB}},
2172  
2173  {"stxvd2x",    X(31,972),    XX1_MASK,    PPCVSX,    PPCNONE,    {XS6, RA0, RB}},
2174 -{"stxvx",    X(31,972),    XX1_MASK,    PPCVSX,    PPCNONE,    {XS6, RA0, RB}},
2175 +{"stxvx",    X(31,972),    XX1_MASK,    POWER8,    POWER9|PPCVSX3,    {XS6, RA0, RB}},
2176  
2177  {"tlbld",    X(31,978),    XRTRA_MASK,  PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
2178  {"tlbwehi",    XTLB(31,978,0),    XTLB_MASK,   PPC403,    PPCNONE,    {RT, RA}},
2179 @@ -5859,6 +6263,8 @@ const struct powerpc_opcode powerpc_opco
2180  {"divwo",    XO(31,491,1,0),    XO_MASK,   PPC|PPCVLE,    PPCNONE,    {RT, RA, RB}},
2181  {"divwo.",    XO(31,491,1,1),    XO_MASK,   PPC|PPCVLE,    PPCNONE,    {RT, RA, RB}},
2182  
2183 +{"stxvb16x",    X(31,1004),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XS6, RA0, RB}},
2184 +
2185  {"trechkpt.",    XRC(31,1006,1),    XRTRARB_MASK,PPCHTM,    PPCNONE,    {0}},
2186  
2187  {"tlbli",    X(31,1010),    XRTRA_MASK,  PPC,    TITAN,      {RB}},
2188 @@ -5943,6 +6349,8 @@ const struct powerpc_opcode powerpc_opco
2189  {"psq_l",    OP(56),        OP_MASK,     PPCPS,    PPCNONE,    {FRT,PSD,RA,PSW,PSQ}},
2190  {"lfq",        OP(56),        OP_MASK,     POWER2,    PPCNONE,    {FRT, D, RA0}},
2191  
2192 +{"lxsd",    DSO(57,2),    DS_MASK,     PPCVSX3,    PPCNONE,    {VD, DS, RA0}},
2193 +{"lxssp",    DSO(57,3),    DS_MASK,     PPCVSX3,    PPCNONE,    {VD, DS, RA0}},
2194  {"lfdp",    OP(57),        OP_MASK,     POWER6,    POWER7,        {FRTp, DS, RA0}},
2195  {"psq_lu",    OP(57),        OP_MASK,     PPCPS,    PPCNONE,    {FRT,PSD,RA,PSW,PSQ}},
2196  {"lfqu",    OP(57),        OP_MASK,     POWER2,    PPCNONE,    {FRT, D, RA0}},
2197 @@ -6042,6 +6450,7 @@ const struct powerpc_opcode powerpc_opco
2198  {"dcmpu",    X(59,642),    X_MASK,      POWER6,    PPCNONE,    {BF,  FRA, FRB}},
2199  
2200  {"dtstsf",    X(59,674),    X_MASK,      POWER6,    PPCNONE,    {BF,  FRA, FRB}},
2201 +{"dtstsfi",    X(59,675),      X_MASK|1<<22,POWER9,    PPCNONE,    {BF, UIM6, FRB}},
2202  
2203  {"drsp",    XRC(59,770,0),    X_MASK,      POWER6,    PPCNONE,    {FRT, FRB}},
2204  {"drsp.",    XRC(59,770,1),    X_MASK,      POWER6,    PPCNONE,    {FRT, FRB}},
2205 @@ -6064,6 +6473,9 @@ const struct powerpc_opcode powerpc_opco
2206  {"xsaddsp",    XX3(60,0),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2207  {"xsmaddasp",    XX3(60,1),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2208  {"xxsldwi",    XX3(60,2),    XX3SHW_MASK, PPCVSX,    PPCNONE,    {XT6, XA6, XB6, SHW}},
2209 +{"xscmpeqdp",    XX3(60,3),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2210 +{"xsrsqrtesp",    XX2(60,10),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2211 +{"xssqrtsp",    XX2(60,11),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2212  {"xxsel",    XX4(60,3),    XX4_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6, XC6}},
2213  {"xssubsp",    XX3(60,8),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2214  {"xsmaddmsp",    XX3(60,9),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2215 @@ -6072,163 +6484,203 @@ const struct powerpc_opcode powerpc_opco
2216  {"xxswapd",    XX3(60,10)|(2<<8), XX3_MASK, PPCVSX,    PPCNONE,    {XT6, XA6, XB6S}},
2217  {"xxmrgld",    XX3(60,10)|(3<<8), XX3_MASK, PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2218  {"xxpermdi",    XX3(60,10),    XX3DM_MASK,  PPCVSX,    PPCNONE,    {XT6, XA6, XB6, DM}},
2219 -{"xsrsqrtesp",    XX2(60,10),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2220 -{"xssqrtsp",    XX2(60,11),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2221 +{"xscmpgtdp",    XX3(60,11),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2222 +{"xsresp",    XX2(60,26),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2223  {"xsmulsp",    XX3(60,16),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2224  {"xsmsubasp",    XX3(60,17),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2225  {"xxmrghw",    XX3(60,18),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2226 +{"xscmpgedp",    XX3(60,19),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2227  {"xsdivsp",    XX3(60,24),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2228  {"xsmsubmsp",    XX3(60,25),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2229 -{"xsresp",    XX2(60,26),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2230 +{"xxperm",    XX3(60,26),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2231 +{"xscmpnedp",    XX3(60,27),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2232  {"xsadddp",    XX3(60,32),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2233  {"xsmaddadp",    XX3(60,33),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2234  {"xscmpudp",    XX3(60,35),    XX3BF_MASK,  PPCVSX,    PPCNONE,    {BF, XA6, XB6}},
2235 +{"xscvdpuxws",    XX2(60,72),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2236 +{"xsrdpi",    XX2(60,73),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2237 +{"xsrsqrtedp",    XX2(60,74),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2238 +{"xssqrtdp",    XX2(60,75),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2239  {"xssubdp",    XX3(60,40),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2240  {"xsmaddmdp",    XX3(60,41),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2241  {"xscmpodp",    XX3(60,43),    XX3BF_MASK,  PPCVSX,    PPCNONE,    {BF, XA6, XB6}},
2242 +{"xscvdpsxws",    XX2(60,88),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2243 +{"xsrdpiz",    XX2(60,89),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2244 +{"xsredp",    XX2(60,90),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2245  {"xsmuldp",    XX3(60,48),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2246  {"xsmsubadp",    XX3(60,49),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2247  {"xxmrglw",    XX3(60,50),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2248 +{"xsrdpip",    XX2(60,105),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2249 +{"xstsqrtdp",    XX2(60,106),    XX2BF_MASK,  PPCVSX,    PPCNONE,    {BF, XB6}},
2250 +{"xsrdpic",    XX2(60,107),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2251  {"xsdivdp",    XX3(60,56),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2252  {"xsmsubmdp",    XX3(60,57),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2253 +{"xxpermr",    XX3(60,58),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2254 +{"xscmpexpdp",    XX3(60,59),    XX3BF_MASK,  PPCVSX3,    PPCNONE,    {BF, XA6, XB6}},
2255 +{"xsrdpim",    XX2(60,121),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2256  {"xstdivdp",    XX3(60,61),    XX3BF_MASK,  PPCVSX,    PPCNONE,    {BF, XA6, XB6}},
2257  {"xvaddsp",    XX3(60,64),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2258  {"xvmaddasp",    XX3(60,65),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2259  {"xvcmpeqsp",    XX3RC(60,67,0),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2260  {"xvcmpeqsp.",    XX3RC(60,67,1),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2261 +{"xvcvspuxws",    XX2(60,136),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2262 +{"xvrspi",    XX2(60,137),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2263 +{"xvrsqrtesp",    XX2(60,138),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2264 +{"xvsqrtsp",    XX2(60,139),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2265  {"xvsubsp",    XX3(60,72),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2266 -{"xscvdpuxws",    XX2(60,72),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2267  {"xvmaddmsp",    XX3(60,73),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2268 -{"xsrdpi",    XX2(60,73),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2269 -{"xsrsqrtedp",    XX2(60,74),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2270 -{"xssqrtdp",    XX2(60,75),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2271  {"xvcmpgtsp",    XX3RC(60,75,0),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2272  {"xvcmpgtsp.",    XX3RC(60,75,1),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2273 +{"xvcvspsxws",    XX2(60,152),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2274 +{"xvrspiz",    XX2(60,153),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2275 +{"xvresp",    XX2(60,154),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2276  {"xvmulsp",    XX3(60,80),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2277  {"xvmsubasp",    XX3(60,81),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2278 +{"xxspltw",    XX2(60,164),    XX2UIM_MASK, PPCVSX,    PPCNONE,    {XT6, XB6, UIM}},
2279 +{"xxextractuw",    XX2(60,165),    XX2UIM4_MASK,PPCVSX3,    PPCNONE,    {XT6, XB6, UIMM4}},
2280  {"xvcmpgesp",    XX3RC(60,83,0),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2281  {"xvcmpgesp.",    XX3RC(60,83,1),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2282 +{"xvcvuxwsp",    XX2(60,168),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2283 +{"xvrspip",    XX2(60,169),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2284 +{"xvtsqrtsp",    XX2(60,170),    XX2BF_MASK,  PPCVSX,    PPCNONE,    {BF, XB6}},
2285 +{"xvrspic",    XX2(60,171),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2286  {"xvdivsp",    XX3(60,88),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2287 -{"xscvdpsxws",    XX2(60,88),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2288  {"xvmsubmsp",    XX3(60,89),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2289 -{"xsrdpiz",    XX2(60,89),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2290 -{"xsredp",    XX2(60,90),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2291 +{"xxspltib",    X(60,360),    XX1_MASK|3<<19, PPCVSX3,PPCNONE,    {XT6, IMM8}},
2292 +{"xxinsertw",    XX2(60,181),    XX2UIM4_MASK,PPCVSX3,    PPCNONE,    {XT6, XB6, UIMM4}},
2293 +{"xvcmpnesp",    XX3RC(60,91,0), XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2294 +{"xvcmpnesp.",    XX3RC(60,91,1), XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2295 +{"xvcvsxwsp",    XX2(60,184),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2296 +{"xvrspim",    XX2(60,185),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2297  {"xvtdivsp",    XX3(60,93),    XX3BF_MASK,  PPCVSX,    PPCNONE,    {BF, XA6, XB6}},
2298  {"xvadddp",    XX3(60,96),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2299  {"xvmaddadp",    XX3(60,97),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2300  {"xvcmpeqdp",    XX3RC(60,99,0),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2301  {"xvcmpeqdp.",    XX3RC(60,99,1),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2302 +{"xvcvdpuxws",    XX2(60,200),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2303 +{"xvrdpi",    XX2(60,201),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2304 +{"xvrsqrtedp",    XX2(60,202),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2305 +{"xvsqrtdp",    XX2(60,203),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2306  {"xvsubdp",    XX3(60,104),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2307  {"xvmaddmdp",    XX3(60,105),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2308 -{"xsrdpip",    XX2(60,105),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2309 -{"xstsqrtdp",    XX2(60,106),    XX2BF_MASK,  PPCVSX,    PPCNONE,    {BF, XB6}},
2310 -{"xsrdpic",    XX2(60,107),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2311  {"xvcmpgtdp",    XX3RC(60,107,0), XX3_MASK,   PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2312  {"xvcmpgtdp.",    XX3RC(60,107,1), XX3_MASK,   PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2313 +{"xvcvdpsxws",    XX2(60,216),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2314 +{"xvrdpiz",    XX2(60,217),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2315 +{"xvredp",    XX2(60,218),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2316  {"xvmuldp",    XX3(60,112),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2317  {"xvmsubadp",    XX3(60,113),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2318  {"xvcmpgedp",    XX3RC(60,115,0), XX3_MASK,   PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2319  {"xvcmpgedp.",    XX3RC(60,115,1), XX3_MASK,   PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2320 +{"xvcvuxwdp",    XX2(60,232),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2321 +{"xvrdpip",    XX2(60,233),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2322 +{"xvtsqrtdp",    XX2(60,234),    XX2BF_MASK,  PPCVSX,    PPCNONE,    {BF, XB6}},
2323 +{"xvrdpic",    XX2(60,235),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2324  {"xvdivdp",    XX3(60,120),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2325  {"xvmsubmdp",    XX3(60,121),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2326 -{"xsrdpim",    XX2(60,121),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2327 +{"xvcmpnedp",    XX3RC(60,123,0), XX3_MASK,   PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2328 +{"xvcmpnedp.",    XX3RC(60,123,1), XX3_MASK,   PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2329 +{"xvcvsxwdp",    XX2(60,248),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2330 +{"xvrdpim",    XX2(60,249),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2331  {"xvtdivdp",    XX3(60,125),    XX3BF_MASK,  PPCVSX,    PPCNONE,    {BF, XA6, XB6}},
2332 +{"xsmaxcdp",    XX3(60,128),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2333  {"xsnmaddasp",    XX3(60,129),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2334  {"xxland",    XX3(60,130),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2335 -{"xvcvspuxws",    XX2(60,136),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2336 +{"xscvdpsp",    XX2(60,265),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2337 +{"xscvdpspn",    XX2(60,267),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2338 +{"xsmincdp",    XX3(60,136),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2339  {"xsnmaddmsp",    XX3(60,137),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2340 -{"xvrspi",    XX2(60,137),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2341  {"xxlandc",    XX3(60,138),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2342 -{"xvrsqrtesp",    XX2(60,138),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2343 -{"xvsqrtsp",    XX2(60,139),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2344 +{"xsrsp",    XX2(60,281),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2345 +{"xsmaxjdp",    XX3(60,144),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2346  {"xsnmsubasp",    XX3(60,145),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2347  {"xxlor",    XX3(60,146),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2348 -{"xvcvspsxws",    XX2(60,152),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2349 +{"xscvuxdsp",    XX2(60,296),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2350 +{"xststdcsp",    XX2(60,298),    XX2BFD_MASK, PPCVSX3,    PPCNONE,    {BF, XB6, DCMX}},
2351 +{"xsminjdp",    XX3(60,152),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2352  {"xsnmsubmsp",    XX3(60,153),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2353 -{"xvrspiz",    XX2(60,153),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2354  {"xxlxor",    XX3(60,154),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2355 -{"xvresp",    XX2(60,154),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2356 +{"xscvsxdsp",    XX2(60,312),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2357  {"xsmaxdp",    XX3(60,160),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2358  {"xsnmaddadp",    XX3(60,161),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2359  {"xxlnor",    XX3(60,162),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2360 -{"xxspltw",    XX2(60,164),    XX2UIM_MASK, PPCVSX,    PPCNONE,    {XT6, XB6, UIM}},
2361 +{"xscvdpuxds",    XX2(60,328),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2362 +{"xscvspdp",    XX2(60,329),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2363 +{"xscvspdpn",    XX2(60,331),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2364  {"xsmindp",    XX3(60,168),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2365 -{"xvcvuxwsp",    XX2(60,168),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2366  {"xsnmaddmdp",    XX3(60,169),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2367 -{"xvrspip",    XX2(60,169),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2368 -{"xvtsqrtsp",    XX2(60,170),    XX2BF_MASK,  PPCVSX,    PPCNONE,    {BF, XB6}},
2369  {"xxlorc",    XX3(60,170),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2370 -{"xvrspic",    XX2(60,171),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2371 +{"xscvdpsxds",    XX2(60,344),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2372 +{"xsabsdp",    XX2(60,345),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2373 +{"xsxexpdp",    XX2VA(60,347,0),XX2_MASK|1,  PPCVSX3,    PPCNONE,    {RT, XB6}},
2374 +{"xsxsigdp",    XX2VA(60,347,1),XX2_MASK|1,  PPCVSX3,    PPCNONE,    {RT, XB6}},
2375 +{"xscvhpdp",    XX2VA(60,347,16),XX2_MASK,   PPCVSX3,    PPCNONE,    {XT6, XB6}},
2376 +{"xscvdphp",    XX2VA(60,347,17),XX2_MASK,   PPCVSX3,    PPCNONE,    {XT6, XB6}},
2377  {"xscpsgndp",    XX3(60,176),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2378  {"xsnmsubadp",    XX3(60,177),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2379  {"xxlnand",    XX3(60,178),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2380 -{"xvcvsxwsp",    XX2(60,184),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2381 +{"xscvuxddp",    XX2(60,360),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2382 +{"xsnabsdp",    XX2(60,361),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2383 +{"xststdcdp",    XX2(60,362),    XX2BFD_MASK, PPCVSX3,    PPCNONE,    {BF, XB6, DCMX}},
2384  {"xsnmsubmdp",    XX3(60,185),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2385 -{"xvrspim",    XX2(60,185),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2386  {"xxleqv",    XX3(60,186),    XX3_MASK,    PPCVSX2,    PPCNONE,    {XT6, XA6, XB6}},
2387 +{"xscvsxddp",    XX2(60,376),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2388 +{"xsnegdp",    XX2(60,377),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2389  {"xvmaxsp",    XX3(60,192),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2390  {"xvnmaddasp",    XX3(60,193),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2391 +{"xvcvspuxds",    XX2(60,392),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2392 +{"xvcvdpsp",    XX2(60,393),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2393  {"xvminsp",    XX3(60,200),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2394 -{"xvcvdpuxws",    XX2(60,200),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2395  {"xvnmaddmsp",    XX3(60,201),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2396 -{"xvrdpi",    XX2(60,201),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2397 -{"xvrsqrtedp",    XX2(60,202),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2398 -{"xvsqrtdp",    XX2(60,203),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2399 +{"xvcvspsxds",    XX2(60,408),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2400 +{"xvabssp",    XX2(60,409),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2401  {"xvmovsp",    XX3(60,208),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6S}},
2402  {"xvcpsgnsp",    XX3(60,208),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2403  {"xvnmsubasp",    XX3(60,209),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2404 -{"xvcvdpsxws",    XX2(60,216),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2405 -{"xvnmsubmsp",    XX3(60,217),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2406 -{"xvrdpiz",    XX2(60,217),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2407 -{"xvredp",    XX2(60,218),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2408 -{"xvmaxdp",    XX3(60,224),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2409 -{"xvnmaddadp",    XX3(60,225),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2410 -{"xvmindp",    XX3(60,232),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2411 -{"xvnmaddmdp",    XX3(60,233),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2412 -{"xvcvuxwdp",    XX2(60,232),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2413 -{"xvrdpip",    XX2(60,233),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2414 -{"xvtsqrtdp",    XX2(60,234),    XX2BF_MASK,  PPCVSX,    PPCNONE,    {BF, XB6}},
2415 -{"xvrdpic",    XX2(60,235),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2416 -{"xvmovdp",    XX3(60,240),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6S}},
2417 -{"xvcpsgndp",    XX3(60,240),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2418 -{"xvnmsubadp",    XX3(60,241),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2419 -{"xvcvsxwdp",    XX2(60,248),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2420 -{"xvnmsubmdp",    XX3(60,249),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2421 -{"xvrdpim",    XX2(60,249),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2422 -{"xscvdpsp",    XX2(60,265),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2423 -{"xscvdpspn",    XX2(60,267),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2424 -{"xsrsp",    XX2(60,281),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2425 -{"xscvuxdsp",    XX2(60,296),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2426 -{"xscvsxdsp",    XX2(60,312),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2427 -{"xscvdpuxds",    XX2(60,328),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2428 -{"xscvspdp",    XX2(60,329),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2429 -{"xscvspdpn",    XX2(60,331),    XX2_MASK,    PPCVSX2,    PPCNONE,    {XT6, XB6}},
2430 -{"xscvdpsxds",    XX2(60,344),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2431 -{"xsabsdp",    XX2(60,345),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2432 -{"xscvuxddp",    XX2(60,360),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2433 -{"xsnabsdp",    XX2(60,361),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2434 -{"xscvsxddp",    XX2(60,376),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2435 -{"xsnegdp",    XX2(60,377),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2436 -{"xvcvspuxds",    XX2(60,392),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2437 -{"xvcvdpsp",    XX2(60,393),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2438 -{"xvcvspsxds",    XX2(60,408),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2439 -{"xvabssp",    XX2(60,409),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2440  {"xvcvuxdsp",    XX2(60,424),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2441  {"xvnabssp",    XX2(60,425),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2442 +{"xvtstdcsp",    XX2(60,426),    XX2DCMXS_MASK,PPCVSX3,    PPCNONE,    {XT6, XB6, DCMXS}},
2443 +{"xviexpsp",    XX3(60,216),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2444 +{"xvnmsubmsp",    XX3(60,217),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2445  {"xvcvsxdsp",    XX2(60,440),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2446  {"xvnegsp",    XX2(60,441),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2447 +{"xvmaxdp",    XX3(60,224),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2448 +{"xvnmaddadp",    XX3(60,225),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2449  {"xvcvdpuxds",    XX2(60,456),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2450  {"xvcvspdp",    XX2(60,457),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2451 +{"xsiexpdp",    X(60,918),    XX1_MASK,    PPCVSX3,    PPCNONE,    {XT6, RA, RB}},
2452 +{"xvmindp",    XX3(60,232),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2453 +{"xvnmaddmdp",    XX3(60,233),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2454  {"xvcvdpsxds",    XX2(60,472),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2455  {"xvabsdp",    XX2(60,473),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2456 +{"xvxexpdp",    XX2VA(60,475,0),XX2_MASK,    PPCVSX3,    PPCNONE,    {XT6, XB6}},
2457 +{"xvxsigdp",    XX2VA(60,475,1),XX2_MASK,    PPCVSX3,    PPCNONE,    {XT6, XB6}},
2458 +{"xxbrh",    XX2VA(60,475,7),XX2_MASK,    PPCVSX3,    PPCNONE,    {XT6, XB6}},
2459 +{"xvxexpsp",    XX2VA(60,475,8),XX2_MASK,    PPCVSX3,    PPCNONE,    {XT6, XB6}},
2460 +{"xvxsigsp",    XX2VA(60,475,9),XX2_MASK,    PPCVSX3,    PPCNONE,    {XT6, XB6}},
2461 +{"xxbrw",    XX2VA(60,475,15),XX2_MASK,   PPCVSX3,    PPCNONE,    {XT6, XB6}},
2462 +{"xxbrd",    XX2VA(60,475,23),XX2_MASK,   PPCVSX3,    PPCNONE,    {XT6, XB6}},
2463 +{"xvcvhpsp",    XX2VA(60,475,24),XX2_MASK,   PPCVSX3,    PPCNONE,    {XT6, XB6}},
2464 +{"xvcvsphp",    XX2VA(60,475,25),XX2_MASK,   PPCVSX3,    PPCNONE,    {XT6, XB6}},
2465 +{"xxbrq",    XX2VA(60,475,31),XX2_MASK,   PPCVSX3,    PPCNONE,    {XT6, XB6}},
2466 +{"xvmovdp",    XX3(60,240),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6S}},
2467 +{"xvcpsgndp",    XX3(60,240),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2468 +{"xvnmsubadp",    XX3(60,241),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2469  {"xvcvuxddp",    XX2(60,488),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2470  {"xvnabsdp",    XX2(60,489),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2471 +{"xvtstdcdp",    XX2(60,490),    XX2DCMXS_MASK,PPCVSX3,    PPCNONE,    {XT6, XB6, DCMXS}},
2472 +{"xviexpdp",    XX3(60,248),    XX3_MASK,    PPCVSX3,    PPCNONE,    {XT6, XA6, XB6}},
2473 +{"xvnmsubmdp",    XX3(60,249),    XX3_MASK,    PPCVSX,    PPCNONE,    {XT6, XA6, XB6}},
2474  {"xvcvsxddp",    XX2(60,504),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2475  {"xvnegdp",    XX2(60,505),    XX2_MASK,    PPCVSX,    PPCNONE,    {XT6, XB6}},
2476  
2477  {"psq_st",    OP(60),        OP_MASK,     PPCPS,    PPCNONE,    {FRS,PSD,RA,PSW,PSQ}},
2478  {"stfq",    OP(60),        OP_MASK,     POWER2,    PPCNONE,    {FRS, D, RA}},
2479  
2480 +{"lxv",        DQX(61,1),    DQX_MASK,    PPCVSX3,    PPCNONE,    {XTQ6, DQ, RA0}},
2481 +{"stxv",    DQX(61,5),    DQX_MASK,    PPCVSX3,    PPCNONE,    {XSQ6, DQ, RA0}},
2482 +{"stxsd",    DSO(61,2),    DS_MASK,     PPCVSX3,    PPCNONE,    {VS, DS, RA0}},
2483 +{"stxssp",    DSO(61,3),    DS_MASK,     PPCVSX3,    PPCNONE,    {VS, DS, RA0}},
2484  {"stfdp",    OP(61),        OP_MASK,     POWER6,    POWER7,        {FRSp, DS, RA0}},
2485  {"psq_stu",    OP(61),        OP_MASK,     PPCPS,    PPCNONE,    {FRS,PSD,RA,PSW,PSQ}},
2486  {"stfqu",    OP(61),        OP_MASK,     POWER2,    PPCNONE,    {FRS, D, RA}},
2487 @@ -6237,7 +6689,7 @@ const struct powerpc_opcode powerpc_opco
2488  {"stdu",    DSO(62,1),    DS_MASK,     PPC64,    PPCNONE,    {RS, DS, RAS}},
2489  {"stq",        DSO(62,2),    DS_MASK,     POWER4,    PPC476,        {RSQ, DS, RA0}},
2490  
2491 -{"fcmpu",    X(63,0),     X_MASK|(3<<21), COM,    PPCEFS,        {BF, FRA, FRB}},
2492 +{"fcmpu",    X(63,0),        XBF_MASK,    COM,    PPCEFS,        {BF, FRA, FRB}},
2493  
2494  {"daddq",    XRC(63,2,0),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRAp, FRBp}},
2495  {"daddq.",    XRC(63,2,1),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRAp, FRBp}},
2496 @@ -6245,6 +6697,12 @@ const struct powerpc_opcode powerpc_opco
2497  {"dquaq",    ZRC(63,3,0),    Z2_MASK,     POWER6,    PPCNONE,    {FRTp, FRAp, FRBp, RMC}},
2498  {"dquaq.",    ZRC(63,3,1),    Z2_MASK,     POWER6,    PPCNONE,    {FRTp, FRAp, FRBp, RMC}},
2499  
2500 +{"xsaddqp",    XRC(63,4,0),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2501 +{"xsaddqpo",    XRC(63,4,1),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2502 +
2503 +{"xsrqpi",    ZRC(63,5,0),    Z2_MASK,     PPCVSX3,    PPCNONE,    {R, VD, VB, RMC}},
2504 +{"xsrqpix",    ZRC(63,5,1),    Z2_MASK,     PPCVSX3,    PPCNONE,    {R, VD, VB, RMC}},
2505 +
2506  {"fcpsgn",    XRC(63,8,0),    X_MASK, POWER6|PPCA2|PPC476, PPCNONE,    {FRT, FRA, FRB}},
2507  {"fcpsgn.",    XRC(63,8,1),    X_MASK, POWER6|PPCA2|PPC476, PPCNONE,    {FRT, FRA, FRB}},
2508  
2509 @@ -6317,7 +6775,7 @@ const struct powerpc_opcode powerpc_opco
2510  {"fnmadd.",    A(63,31,1),    A_MASK,      PPCCOM,    PPCEFS,        {FRT, FRA, FRC, FRB}},
2511  {"fnma.",    A(63,31,1),    A_MASK,      PWRCOM,    PPCNONE,    {FRT, FRA, FRC, FRB}},
2512  
2513 -{"fcmpo",    X(63,32),    X_MASK|(3<<21), COM,    PPCEFS,        {BF, FRA, FRB}},
2514 +{"fcmpo",    X(63,32),       XBF_MASK,    COM,    PPCEFS,        {BF, FRA, FRB}},
2515  
2516  {"dmulq",    XRC(63,34,0),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRAp, FRBp}},
2517  {"dmulq.",    XRC(63,34,1),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRAp, FRBp}},
2518 @@ -6325,6 +6783,11 @@ const struct powerpc_opcode powerpc_opco
2519  {"drrndq",    ZRC(63,35,0),    Z2_MASK,     POWER6,    PPCNONE,    {FRTp, FRA, FRBp, RMC}},
2520  {"drrndq.",    ZRC(63,35,1),    Z2_MASK,     POWER6,    PPCNONE,    {FRTp, FRA, FRBp, RMC}},
2521  
2522 +{"xsmulqp",    XRC(63,36,0),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2523 +{"xsmulqpo",    XRC(63,36,1),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2524 +
2525 +{"xsrqpxp",    Z(63,37),    Z2_MASK,     PPCVSX3,    PPCNONE,    {R, VD, VB, RMC}},
2526 +
2527  {"mtfsb1",    XRC(63,38,0),    XRARB_MASK,  COM,    PPCNONE,    {BT}},
2528  {"mtfsb1.",    XRC(63,38,1),    XRARB_MASK,  COM,    PPCNONE,    {BT}},
2529  
2530 @@ -6351,10 +6814,14 @@ const struct powerpc_opcode powerpc_opco
2531  {"drintxq",    ZRC(63,99,0),    Z2_MASK,     POWER6,    PPCNONE,    {R, FRTp, FRBp, RMC}},
2532  {"drintxq.",    ZRC(63,99,1),    Z2_MASK,     POWER6,    PPCNONE,    {R, FRTp, FRBp, RMC}},
2533  
2534 -{"ftdiv",    X(63,128),   X_MASK|(3<<21), POWER7,    PPCNONE,    {BF, FRA, FRB}},
2535 +{"xscpsgnqp",    X(63,100),      X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2536 +
2537 +{"ftdiv",    X(63,128),      XBF_MASK,    POWER7,    PPCNONE,    {BF, FRA, FRB}},
2538  
2539  {"dcmpoq",    X(63,130),    X_MASK,      POWER6,    PPCNONE,    {BF, FRAp, FRBp}},
2540  
2541 +{"xscmpoqp",    X(63,132),      XBF_MASK,    PPCVSX3,    PPCNONE,    {BF, VA, VB}},
2542 +
2543  {"mtfsfi",  XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCNONE, {BFF, U, W}},
2544  {"mtfsfi",  XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476, {BFF, U}},
2545  {"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCNONE, {BFF, U, W}},
2546 @@ -6368,9 +6835,12 @@ const struct powerpc_opcode powerpc_opco
2547  {"fctiwuz",    XRC(63,143,0),    XRA_MASK,    POWER7,    PPCNONE,    {FRT, FRB}},
2548  {"fctiwuz.",    XRC(63,143,1),    XRA_MASK,    POWER7,    PPCNONE,    {FRT, FRB}},
2549  
2550 -{"ftsqrt",    X(63,160), X_MASK|(3<<21|FRA_MASK), POWER7, PPCNONE,    {BF, FRB}},
2551 +{"ftsqrt",    X(63,160),      XBF_MASK|FRA_MASK, POWER7, PPCNONE,    {BF, FRB}},
2552  
2553  {"dtstexq",    X(63,162),    X_MASK,      POWER6,    PPCNONE,    {BF, FRAp, FRBp}},
2554 +
2555 +{"xscmpexpqp",    X(63,164),      XBF_MASK,    PPCVSX3,    PPCNONE,    {BF, VA, VB}},
2556 +
2557  {"dtstdcq",    Z(63,194),    Z_MASK,      POWER6,    PPCNONE,    {BF, FRAp, DCM}},
2558  {"dtstdgq",    Z(63,226),    Z_MASK,      POWER6,    PPCNONE,    {BF, FRAp, DGM}},
2559  
2560 @@ -6392,27 +6862,53 @@ const struct powerpc_opcode powerpc_opco
2561  {"dxexq",    XRC(63,354,0),    X_MASK,      POWER6,    PPCNONE,    {FRT, FRBp}},
2562  {"dxexq.",    XRC(63,354,1),    X_MASK,      POWER6,    PPCNONE,    {FRT, FRBp}},
2563  
2564 +{"xsmaddqp",    XRC(63,388,0),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2565 +{"xsmaddqpo",    XRC(63,388,1),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2566 +
2567  {"frin",    XRC(63,392,0),    XRA_MASK,    POWER5,    PPCNONE,    {FRT, FRB}},
2568  {"frin.",    XRC(63,392,1),    XRA_MASK,    POWER5,    PPCNONE,    {FRT, FRB}},
2569 +
2570 +{"xsmsubqp",    XRC(63,420,0),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2571 +{"xsmsubqpo",    XRC(63,420,1),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2572 +
2573  {"friz",    XRC(63,424,0),    XRA_MASK,    POWER5,    PPCNONE,    {FRT, FRB}},
2574  {"friz.",    XRC(63,424,1),    XRA_MASK,    POWER5,    PPCNONE,    {FRT, FRB}},
2575 +
2576 +{"xsnmaddqp",    XRC(63,452,0),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2577 +{"xsnmaddqpo",    XRC(63,452,1),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2578 +
2579  {"frip",    XRC(63,456,0),    XRA_MASK,    POWER5,    PPCNONE,    {FRT, FRB}},
2580  {"frip.",    XRC(63,456,1),    XRA_MASK,    POWER5,    PPCNONE,    {FRT, FRB}},
2581 +
2582 +{"xsnmsubqp",    XRC(63,484,0),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2583 +{"xsnmsubqpo",    XRC(63,484,1),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2584 +
2585  {"frim",    XRC(63,488,0),    XRA_MASK,    POWER5,    PPCNONE,    {FRT, FRB}},
2586  {"frim.",    XRC(63,488,1),    XRA_MASK,    POWER5,    PPCNONE,    {FRT, FRB}},
2587  
2588  {"dsubq",    XRC(63,514,0),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRAp, FRBp}},
2589  {"dsubq.",    XRC(63,514,1),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRAp, FRBp}},
2590  
2591 +{"xssubqp",    XRC(63,516,0),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2592 +{"xssubqpo",    XRC(63,516,1),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2593 +
2594  {"ddivq",    XRC(63,546,0),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRAp, FRBp}},
2595  {"ddivq.",    XRC(63,546,1),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRAp, FRBp}},
2596  
2597 +{"xsdivqp",    XRC(63,548,0),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2598 +{"xsdivqpo",    XRC(63,548,1),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2599 +
2600  {"mffs",    XRC(63,583,0),    XRARB_MASK,  COM,    PPCEFS,        {FRT}},
2601  {"mffs.",    XRC(63,583,1),    XRARB_MASK,  COM,    PPCEFS,        {FRT}},
2602  
2603  {"dcmpuq",    X(63,642),    X_MASK,      POWER6,    PPCNONE,    {BF, FRAp, FRBp}},
2604  
2605 +{"xscmpuqp",    X(63,644),      XBF_MASK,    PPCVSX3,    PPCNONE,    {BF, VA, VB}},
2606 +
2607  {"dtstsfq",    X(63,674),    X_MASK,      POWER6,    PPCNONE,    {BF, FRA, FRBp}},
2608 +{"dtstsfiq",    X(63,675),      X_MASK|1<<22,POWER9,    PPCNONE,    {BF, UIM6, FRBp}},
2609 +
2610 +{"xststdcqp",    X(63,708),      X_MASK,      PPCVSX3,    PPCNONE,    {BF, VB, DCMX}},
2611  
2612  {"mtfsf",    XFL(63,711,0),    XFL_MASK, POWER6|PPCA2|PPC476, PPCNONE,    {FLM, FRB, XFL_L, W}},
2613  {"mtfsf",    XFL(63,711,0),    XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS,    {FLM, FRB}},
2614 @@ -6425,6 +6921,14 @@ const struct powerpc_opcode powerpc_opco
2615  {"dcffixq",    XRC(63,802,0),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRB}},
2616  {"dcffixq.",    XRC(63,802,1),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRB}},
2617  
2618 +{"xsabsqp",    XVA(63,804,0),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2619 +{"xsxexpqp",    XVA(63,804,2),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2620 +{"xsnabsqp",    XVA(63,804,8),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2621 +{"xsnegqp",    XVA(63,804,16),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2622 +{"xsxsigqp",    XVA(63,804,18),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2623 +{"xssqrtqp",    XVARC(63,804,27,0), XVA_MASK, PPCVSX3,    PPCNONE,    {VD, VB}},
2624 +{"xssqrtqpo",    XVARC(63,804,27,1), XVA_MASK, PPCVSX3,    PPCNONE,    {VD, VB}},
2625 +
2626  {"fctid",    XRC(63,814,0),    XRA_MASK,    PPC64,    PPCNONE,    {FRT, FRB}},
2627  {"fctid",    XRC(63,814,0),    XRA_MASK,    PPC476,    PPCNONE,    {FRT, FRB}},
2628  {"fctid.",    XRC(63,814,1),    XRA_MASK,    PPC64,    PPCNONE,    {FRT, FRB}},
2629 @@ -6438,6 +6942,16 @@ const struct powerpc_opcode powerpc_opco
2630  {"denbcdq",    XRC(63,834,0),    X_MASK,      POWER6,    PPCNONE,    {S, FRTp, FRBp}},
2631  {"denbcdq.",    XRC(63,834,1),    X_MASK,      POWER6,    PPCNONE,    {S, FRTp, FRBp}},
2632  
2633 +{"xscvqpuwz",    XVA(63,836,1),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2634 +{"xscvudqp",    XVA(63,836,2),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2635 +{"xscvqpswz",    XVA(63,836,9),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2636 +{"xscvsdqp",    XVA(63,836,10),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2637 +{"xscvqpudz",    XVA(63,836,17),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2638 +{"xscvqpdp",    XVARC(63,836,20,0), XVA_MASK, PPCVSX3,    PPCNONE,    {VD, VB}},
2639 +{"xscvqpdpo",    XVARC(63,836,20,1), XVA_MASK, PPCVSX3,    PPCNONE,    {VD, VB}},
2640 +{"xscvdpqp",    XVA(63,836,22),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2641 +{"xscvqpsdz",    XVA(63,836,25),    XVA_MASK,    PPCVSX3,    PPCNONE,    {VD, VB}},
2642 +
2643  {"fmrgow",    X(63,838),    X_MASK,      PPCVSX2,    PPCNONE,    {FRT, FRA, FRB}},
2644  
2645  {"fcfid",    XRC(63,846,0),    XRA_MASK,    PPC64,    PPCNONE,    {FRT, FRB}},
2646 @@ -6448,6 +6962,8 @@ const struct powerpc_opcode powerpc_opco
2647  {"diexq",    XRC(63,866,0),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRA, FRBp}},
2648  {"diexq.",    XRC(63,866,1),    X_MASK,      POWER6,    PPCNONE,    {FRTp, FRA, FRBp}},
2649  
2650 +{"xsiexpqp",    X(63,868),    X_MASK,      PPCVSX3,    PPCNONE,    {VD, VA, VB}},
2651 +
2652  {"fctidu",    XRC(63,942,0),    XRA_MASK, POWER7|PPCA2,    PPCNONE,    {FRT, FRB}},
2653  {"fctidu.",    XRC(63,942,1),    XRA_MASK, POWER7|PPCA2,    PPCNONE,    {FRT, FRB}},
2654  
2655 Only in binutils-2.25.1/opcodes: ppc-opc.c.orig
2656 Only in binutils-2.25.1/opcodes: ppc-opc.c.rej
2657 --- /dev/null    2016-05-23 09:42:50.354737742 +0100
2658 +++ binutils-2.25.1/gas/testsuite/gas/ppc/power9.d    2016-05-23 12:38:32.546422674 +0100
2659 @@ -0,0 +1,386 @@
2660 +#as: -mpower9
2661 +#objdump: -dr -Mpower9
2662 +#name: POWER9 tests
2663 +
2664 +.*
2665 +
2666 +
2667 +Disassembly of section \.text:
2668 +
2669 +0+00 <power9>:
2670 +
2671 +.*:    (7d a3 04 74|74 04 a3 7d)     cnttzd  r3,r13
2672 +.*:    (7d c4 04 75|75 04 c4 7d)     cnttzd\. r4,r14
2673 +.*:    (7d e5 04 34|34 04 e5 7d)     cnttzw  r5,r15
2674 +.*:    (7e 06 04 35|35 04 06 7e)     cnttzw\. r6,r16
2675 +.*:    (7d 54 ae 12|12 ae 54 7d)     modsd   r10,r20,r21
2676 +.*:    (7d 75 b6 16|16 b6 75 7d)     modsw   r11,r21,r22
2677 +.*:    (7d 96 ba 12|12 ba 96 7d)     modud   r12,r22,r23
2678 +.*:    (7d b7 c2 16|16 c2 b7 7d)     moduw   r13,r23,r24
2679 +.*:    (10 67 25 81|81 25 67 10)     bcdcfn\. v3,v4,0
2680 +.*:    (10 67 27 81|81 27 67 10)     bcdcfn\. v3,v4,1
2681 +.*:    (10 82 2d 81|81 2d 82 10)     bcdcfsq\. v4,v5,0
2682 +.*:    (10 82 2f 81|81 2f 82 10)     bcdcfsq\. v4,v5,1
2683 +.*:    (10 a6 35 81|81 35 a6 10)     bcdcfz\. v5,v6,0
2684 +.*:    (10 a6 37 81|81 37 a6 10)     bcdcfz\. v5,v6,1
2685 +.*:    (10 c7 43 41|41 43 c7 10)     bcdcpsgn\. v6,v7,v8
2686 +.*:    (10 e5 45 81|81 45 e5 10)     bcdctn\. v7,v8
2687 +.*:    (11 00 4d 81|81 4d 00 11)     bcdctsq\. v8,v9
2688 +.*:    (11 24 55 81|81 55 24 11)     bcdctz\. v9,v10,0
2689 +.*:    (11 24 57 81|81 57 24 11)     bcdctz\. v9,v10,1
2690 +.*:    (11 5f 5d 81|81 5d 5f 11)     bcdsetsgn\. v10,v11,0
2691 +.*:    (11 5f 5f 81|81 5f 5f 11)     bcdsetsgn\. v10,v11,1
2692 +.*:    (11 6c 6d c1|c1 6d 6c 11)     bcdsr\.  v11,v12,v13,0
2693 +.*:    (11 6c 6f c1|c1 6f 6c 11)     bcdsr\.  v11,v12,v13,1
2694 +.*:    (11 8d 74 c1|c1 74 8d 11)     bcds\.   v12,v13,v14,0
2695 +.*:    (11 8d 76 c1|c1 76 8d 11)     bcds\.   v12,v13,v14,1
2696 +.*:    (11 ae 7d 01|01 7d ae 11)     bcdtrunc\. v13,v14,v15,0
2697 +.*:    (11 ae 7f 01|01 7f ae 11)     bcdtrunc\. v13,v14,v15,1
2698 +.*:    (11 cf 84 81|81 84 cf 11)     bcdus\.  v14,v15,v16
2699 +.*:    (11 f0 8d 41|41 8d f0 11)     bcdutrunc\. v15,v16,v17
2700 +.*:    (7e 80 aa 5a|5a aa 80 7e)     lxvll   vs20,0,r21
2701 +.*:    (7e 8a aa 5a|5a aa 8a 7e)     lxvll   vs20,r10,r21
2702 +.*:    (7e a0 5b 5a|5a 5b a0 7e)     stxvll  vs21,0,r11
2703 +.*:    (7e aa 5b 5a|5a 5b aa 7e)     stxvll  vs21,r10,r11
2704 +.*:    (12 d7 00 01|01 00 d7 12)     vmul10cuq v22,v23
2705 +.*:    (12 f8 c8 41|41 c8 f8 12)     vmul10ecuq v23,v24,v25
2706 +.*:    (13 19 d2 41|41 d2 19 13)     vmul10euq v24,v25,v26
2707 +.*:    (13 3a 02 01|01 02 3a 13)     vmul10uq v25,v26
2708 +.*:    (fd 4b 60 08|08 60 4b fd)     xsaddqp v10,v11,v12
2709 +.*:    (fd 6c 60 09|09 60 6c fd)     xsaddqpo v11,v12,v12
2710 +.*:    (fe 80 f0 0a|0a f0 80 fe)     xsrqpi  0,v20,v30,0
2711 +.*:    (fe 81 f0 0a|0a f0 81 fe)     xsrqpi  1,v20,v30,0
2712 +.*:    (fe 80 f6 0a|0a f6 80 fe)     xsrqpi  0,v20,v30,3
2713 +.*:    (fe 81 f6 0a|0a f6 81 fe)     xsrqpi  1,v20,v30,3
2714 +.*:    (fe a0 f8 0b|0b f8 a0 fe)     xsrqpix 0,v21,v31,0
2715 +.*:    (fe a1 f8 0b|0b f8 a1 fe)     xsrqpix 1,v21,v31,0
2716 +.*:    (fe a0 fe 0b|0b fe a0 fe)     xsrqpix 0,v21,v31,3
2717 +.*:    (fe a1 fe 0b|0b fe a1 fe)     xsrqpix 1,v21,v31,3
2718 +.*:    (fd 8d 70 48|48 70 8d fd)     xsmulqp v12,v13,v14
2719 +.*:    (fd ae 78 49|49 78 ae fd)     xsmulqpo v13,v14,v15
2720 +.*:    (fe c0 b8 4a|4a b8 c0 fe)     xsrqpxp 0,v22,v23,0
2721 +.*:    (fe c1 b8 4a|4a b8 c1 fe)     xsrqpxp 1,v22,v23,0
2722 +.*:    (fe c0 be 4a|4a be c0 fe)     xsrqpxp 0,v22,v23,3
2723 +.*:    (fe c1 be 4a|4a be c1 fe)     xsrqpxp 1,v22,v23,3
2724 +.*:    (fd cf 80 c8|c8 80 cf fd)     xscpsgnqp v14,v15,v16
2725 +.*:    (fc 0f 81 08|08 81 0f fc)     xscmpoqp cr0,v15,v16
2726 +.*:    (ff 8f 81 08|08 81 8f ff)     xscmpoqp cr7,v15,v16
2727 +.*:    (fc 10 89 48|48 89 10 fc)     xscmpexpqp cr0,v16,v17
2728 +.*:    (ff 90 89 48|48 89 90 ff)     xscmpexpqp cr7,v16,v17
2729 +.*:    (fe 32 9b 08|08 9b 32 fe)     xsmaddqp v17,v18,v19
2730 +.*:    (fe 53 a3 09|09 a3 53 fe)     xsmaddqpo v18,v19,v20
2731 +.*:    (fe 74 ab 48|48 ab 74 fe)     xsmsubqp v19,v20,v21
2732 +.*:    (fe 95 b3 49|49 b3 95 fe)     xsmsubqpo v20,v21,v22
2733 +.*:    (fe b6 bb 88|88 bb b6 fe)     xsnmaddqp v21,v22,v23
2734 +.*:    (fe d7 c3 89|89 c3 d7 fe)     xsnmaddqpo v22,v23,v24
2735 +.*:    (fe f8 cb c8|c8 cb f8 fe)     xsnmsubqp v23,v24,v25
2736 +.*:    (ff 19 d3 c9|c9 d3 19 ff)     xsnmsubqpo v24,v25,v26
2737 +.*:    (ff 3a dc 08|08 dc 3a ff)     xssubqp v25,v26,v27
2738 +.*:    (ff 5b e4 09|09 e4 5b ff)     xssubqpo v26,v27,v28
2739 +.*:    (ff 7c ec 48|48 ec 7c ff)     xsdivqp v27,v28,v29
2740 +.*:    (ff 9d f4 49|49 f4 9d ff)     xsdivqpo v28,v29,v30
2741 +.*:    (fc 1d f5 08|08 f5 1d fc)     xscmpuqp cr0,v29,v30
2742 +.*:    (ff 9d f5 08|08 f5 9d ff)     xscmpuqp cr7,v29,v30
2743 +.*:    (fc 00 f5 88|88 f5 00 fc)     xststdcqp cr0,v30,0
2744 +.*:    (ff 80 f5 88|88 f5 80 ff)     xststdcqp cr7,v30,0
2745 +.*:    (fc 7f fd 88|88 fd 7f fc)     xststdcqp cr0,v31,127
2746 +.*:    (ff ff fd 88|88 fd ff ff)     xststdcqp cr7,v31,127
2747 +.*:    (fd 40 5e 48|48 5e 40 fd)     xsabsqp v10,v11
2748 +.*:    (fd 62 66 48|48 66 62 fd)     xsxexpqp v11,v12
2749 +.*:    (fd 88 6e 48|48 6e 88 fd)     xsnabsqp v12,v13
2750 +.*:    (fd b0 76 48|48 76 b0 fd)     xsnegqp v13,v14
2751 +.*:    (fd d2 7e 48|48 7e d2 fd)     xsxsigqp v14,v15
2752 +.*:    (fd fb 86 48|48 86 fb fd)     xssqrtqp v15,v16
2753 +.*:    (fe 1b 8e 49|49 8e 1b fe)     xssqrtqpo v16,v17
2754 +.*:    (fe 21 96 88|88 96 21 fe)     xscvqpuwz v17,v18
2755 +.*:    (fe 42 9e 88|88 9e 42 fe)     xscvudqp v18,v19
2756 +.*:    (fe 69 a6 88|88 a6 69 fe)     xscvqpswz v19,v20
2757 +.*:    (fe 8a ae 88|88 ae 8a fe)     xscvsdqp v20,v21
2758 +.*:    (fe b1 b6 88|88 b6 b1 fe)     xscvqpudz v21,v22
2759 +.*:    (fe d4 be 88|88 be d4 fe)     xscvqpdp v22,v23
2760 +.*:    (fe f4 c6 89|89 c6 f4 fe)     xscvqpdpo v23,v24
2761 +.*:    (ff 16 ce 88|88 ce 16 ff)     xscvdpqp v24,v25
2762 +.*:    (ff 39 d6 88|88 d6 39 ff)     xscvqpsdz v25,v26
2763 +.*:    (ff 5b e6 c8|c8 e6 5b ff)     xsiexpqp v26,v27,v28
2764 +.*:    (10 85 31 fb|fb 31 85 10)     vpermr  v4,v5,v6,v7
2765 +.*:    (10 a0 32 0d|0d 32 a0 10)     vextractub v5,v6,0
2766 +.*:    (10 af 32 0d|0d 32 af 10)     vextractub v5,v6,15
2767 +.*:    (10 c0 3a 4d|4d 3a c0 10)     vextractuh v6,v7,0
2768 +.*:    (10 cf 3a 4d|4d 3a cf 10)     vextractuh v6,v7,15
2769 +.*:    (10 e0 42 8d|8d 42 e0 10)     vextractuw v7,v8,0
2770 +.*:    (10 ef 42 8d|8d 42 ef 10)     vextractuw v7,v8,15
2771 +.*:    (11 00 4a cd|cd 4a 00 11)     vextractd v8,v9,0
2772 +.*:    (11 0f 4a cd|cd 4a 0f 11)     vextractd v8,v9,15
2773 +.*:    (11 20 53 0d|0d 53 20 11)     vinsertb v9,v10,0
2774 +.*:    (11 2f 53 0d|0d 53 2f 11)     vinsertb v9,v10,15
2775 +.*:    (11 40 5b 4d|4d 5b 40 11)     vinserth v10,v11,0
2776 +.*:    (11 4f 5b 4d|4d 5b 4f 11)     vinserth v10,v11,15
2777 +.*:    (11 60 63 8d|8d 63 60 11)     vinsertw v11,v12,0
2778 +.*:    (11 6f 63 8d|8d 63 6f 11)     vinsertw v11,v12,15
2779 +.*:    (11 80 6b cd|cd 6b 80 11)     vinsertd v12,v13,0
2780 +.*:    (11 8f 6b cd|cd 6b 8f 11)     vinsertd v12,v13,15
2781 +.*:    (7d b4 02 67|67 02 b4 7d)     mfvsrld r20,vs45
2782 +.*:    (7d d5 03 27|27 03 d5 7d)     mtvsrws vs46,r21
2783 +.*:    (7d e0 bb 67|67 bb e0 7d)     mtvsrdd vs47,0,r23
2784 +.*:    (7d f6 bb 67|67 bb f6 7d)     mtvsrdd vs47,r22,r23
2785 +.*:    (7e 40 5a 19|19 5a 40 7e)     lxvx    vs50,0,r11
2786 +.*:    (7c 0a 5a 18|18 5a 0a 7c)     lxvx    vs0,r10,r11
2787 +.*:    (7e 60 62 d9|d9 62 60 7e)     lxvwsx  vs51,0,r12
2788 +.*:    (7c 2a 62 d8|d8 62 2a 7c)     lxvwsx  vs1,r10,r12
2789 +.*:    (7e 80 6e 59|59 6e 80 7e)     lxvh8x  vs52,0,r13
2790 +.*:    (7c 4a 6e 58|58 6e 4a 7c)     lxvh8x  vs2,r10,r13
2791 +.*:    (7e a0 76 d9|d9 76 a0 7e)     lxvb16x vs53,0,r14
2792 +.*:    (7c 6a 76 d8|d8 76 6a 7c)     lxvb16x vs3,r10,r14
2793 +.*:    (7e c0 7b 19|19 7b c0 7e)     stxvx   vs54,0,r15
2794 +.*:    (7c 94 7b 18|18 7b 94 7c)     stxvx   vs4,r20,r15
2795 +.*:    (7e e0 87 59|59 87 e0 7e)     stxvh8x vs55,0,r16
2796 +.*:    (7c b4 87 58|58 87 b4 7c)     stxvh8x vs5,r20,r16
2797 +.*:    (7f 00 8f d9|d9 8f 00 7f)     stxvb16x vs56,0,r17
2798 +.*:    (7c d4 8f d8|d8 8f d4 7c)     stxvb16x vs6,r20,r17
2799 +.*:    (f0 80 2a 94|94 2a 80 f0)     xxextractuw vs4,vs5,0
2800 +.*:    (f1 0f 92 97|97 92 0f f1)     xxextractuw vs40,vs50,15
2801 +.*:    (f0 80 02 d0|d0 02 80 f0)     xxspltib vs4,0
2802 +.*:    (f0 84 02 d0|d0 02 84 f0)     xxspltib vs4,128
2803 +.*:    (f1 27 fa d1|d1 fa 27 f1)     xxspltib vs41,255
2804 +.*:    (f1 27 fa d1|d1 fa 27 f1)     xxspltib vs41,255
2805 +.*:    (f0 a0 32 d4|d4 32 a0 f0)     xxinsertw vs5,vs6,0
2806 +.*:    (f2 4f e2 d7|d7 e2 4f f2)     xxinsertw vs50,vs60,15
2807 +.*:    (f0 c7 3f 6c|6c 3f c7 f0)     xxbrh   vs6,vs7
2808 +.*:    (f3 07 cf 6f|6f cf 07 f3)     xxbrh   vs56,vs57
2809 +.*:    (f0 ef 47 6c|6c 47 ef f0)     xxbrw   vs7,vs8
2810 +.*:    (f3 2f d7 6f|6f d7 2f f3)     xxbrw   vs57,vs58
2811 +.*:    (f1 17 4f 6c|6c 4f 17 f1)     xxbrd   vs8,vs9
2812 +.*:    (f3 57 df 6f|6f df 57 f3)     xxbrd   vs58,vs59
2813 +.*:    (f1 3f 57 6c|6c 57 3f f1)     xxbrq   vs9,vs10
2814 +.*:    (f3 7f e7 6f|6f e7 7f f3)     xxbrq   vs59,vs60
2815 +.*:    (e6 80 00 02|02 00 80 e6)     lxsd    v20,0\(0\)
2816 +.*:    (e6 8a 00 02|02 00 8a e6)     lxsd    v20,0\(r10\)
2817 +.*:    (e6 80 00 0a|0a 00 80 e6)     lxsd    v20,8\(0\)
2818 +.*:    (e6 8a 00 0a|0a 00 8a e6)     lxsd    v20,8\(r10\)
2819 +.*:    (e6 80 ff fa|fa ff 80 e6)     lxsd    v20,-8\(0\)
2820 +.*:    (e6 8a ff fa|fa ff 8a e6)     lxsd    v20,-8\(r10\)
2821 +.*:    (e6 80 7f fe|fe 7f 80 e6)     lxsd    v20,32764\(0\)
2822 +.*:    (e6 8a 7f fe|fe 7f 8a e6)     lxsd    v20,32764\(r10\)
2823 +.*:    (e6 80 80 02|02 80 80 e6)     lxsd    v20,-32768\(0\)
2824 +.*:    (e6 8a 80 02|02 80 8a e6)     lxsd    v20,-32768\(r10\)
2825 +.*:    (e7 c0 00 03|03 00 c0 e7)     lxssp   v30,0\(0\)
2826 +.*:    (e7 cb 00 03|03 00 cb e7)     lxssp   v30,0\(r11\)
2827 +.*:    (e7 c0 00 0b|0b 00 c0 e7)     lxssp   v30,8\(0\)
2828 +.*:    (e7 cb 00 0b|0b 00 cb e7)     lxssp   v30,8\(r11\)
2829 +.*:    (e7 c0 ff fb|fb ff c0 e7)     lxssp   v30,-8\(0\)
2830 +.*:    (e7 cb ff fb|fb ff cb e7)     lxssp   v30,-8\(r11\)
2831 +.*:    (e7 c0 7f ff|ff 7f c0 e7)     lxssp   v30,32764\(0\)
2832 +.*:    (e7 cb 7f ff|ff 7f cb e7)     lxssp   v30,32764\(r11\)
2833 +.*:    (e7 c0 80 03|03 80 c0 e7)     lxssp   v30,-32768\(0\)
2834 +.*:    (e7 cb 80 03|03 80 cb e7)     lxssp   v30,-32768\(r11\)
2835 +.*:    (f5 00 00 09|09 00 00 f5)     lxv     vs40,0\(0\)
2836 +.*:    (f5 0c 00 09|09 00 0c f5)     lxv     vs40,0\(r12\)
2837 +.*:    (f5 00 00 19|19 00 00 f5)     lxv     vs40,16\(0\)
2838 +.*:    (f5 0c 00 19|19 00 0c f5)     lxv     vs40,16\(r12\)
2839 +.*:    (f5 00 ff f9|f9 ff 00 f5)     lxv     vs40,-16\(0\)
2840 +.*:    (f5 4c ff f1|f1 ff 4c f5)     lxv     vs10,-16\(r12\)
2841 +.*:    (f5 40 7f f1|f1 7f 40 f5)     lxv     vs10,32752\(0\)
2842 +.*:    (f5 4c 7f f1|f1 7f 4c f5)     lxv     vs10,32752\(r12\)
2843 +.*:    (f5 40 80 01|01 80 40 f5)     lxv     vs10,-32768\(0\)
2844 +.*:    (f5 4c 80 01|01 80 4c f5)     lxv     vs10,-32768\(r12\)
2845 +.*:    (f6 a0 00 02|02 00 a0 f6)     stxsd   v21,0\(0\)
2846 +.*:    (f6 aa 00 02|02 00 aa f6)     stxsd   v21,0\(r10\)
2847 +.*:    (f6 a0 00 0a|0a 00 a0 f6)     stxsd   v21,8\(0\)
2848 +.*:    (f6 aa 00 0a|0a 00 aa f6)     stxsd   v21,8\(r10\)
2849 +.*:    (f6 a0 ff fa|fa ff a0 f6)     stxsd   v21,-8\(0\)
2850 +.*:    (f6 aa ff fa|fa ff aa f6)     stxsd   v21,-8\(r10\)
2851 +.*:    (f6 a0 7f fe|fe 7f a0 f6)     stxsd   v21,32764\(0\)
2852 +.*:    (f6 aa 7f fe|fe 7f aa f6)     stxsd   v21,32764\(r10\)
2853 +.*:    (f6 a0 80 02|02 80 a0 f6)     stxsd   v21,-32768\(0\)
2854 +.*:    (f6 aa 80 02|02 80 aa f6)     stxsd   v21,-32768\(r10\)
2855 +.*:    (f7 e0 00 03|03 00 e0 f7)     stxssp  v31,0\(0\)
2856 +.*:    (f7 eb 00 03|03 00 eb f7)     stxssp  v31,0\(r11\)
2857 +.*:    (f7 e0 00 0b|0b 00 e0 f7)     stxssp  v31,8\(0\)
2858 +.*:    (f7 eb 00 0b|0b 00 eb f7)     stxssp  v31,8\(r11\)
2859 +.*:    (f7 e0 ff fb|fb ff e0 f7)     stxssp  v31,-8\(0\)
2860 +.*:    (f7 eb ff fb|fb ff eb f7)     stxssp  v31,-8\(r11\)
2861 +.*:    (f7 e0 7f ff|ff 7f e0 f7)     stxssp  v31,32764\(0\)
2862 +.*:    (f7 eb 7f ff|ff 7f eb f7)     stxssp  v31,32764\(r11\)
2863 +.*:    (f7 e0 80 03|03 80 e0 f7)     stxssp  v31,-32768\(0\)
2864 +.*:    (f7 eb 80 03|03 80 eb f7)     stxssp  v31,-32768\(r11\)
2865 +.*:    (f5 20 00 0d|0d 00 20 f5)     stxv    vs41,0\(0\)
2866 +.*:    (f5 2c 00 0d|0d 00 2c f5)     stxv    vs41,0\(r12\)
2867 +.*:    (f5 20 00 1d|1d 00 20 f5)     stxv    vs41,16\(0\)
2868 +.*:    (f5 2c 00 1d|1d 00 2c f5)     stxv    vs41,16\(r12\)
2869 +.*:    (f5 20 ff fd|fd ff 20 f5)     stxv    vs41,-16\(0\)
2870 +.*:    (f5 6c ff f5|f5 ff 6c f5)     stxv    vs11,-16\(r12\)
2871 +.*:    (f5 60 7f f5|f5 7f 60 f5)     stxv    vs11,32752\(0\)
2872 +.*:    (f5 6c 7f f5|f5 7f 6c f5)     stxv    vs11,32752\(r12\)
2873 +.*:    (f5 60 80 05|05 80 60 f5)     stxv    vs11,-32768\(0\)
2874 +.*:    (f5 6c 80 05|05 80 6c f5)     stxv    vs11,-32768\(r12\)
2875 +.*:    (f2 96 c0 d0|d0 c0 96 f2)     xxperm  vs20,vs22,vs24
2876 +.*:    (f1 0a 60 d7|d7 60 0a f1)     xxperm  vs40,vs42,vs44
2877 +.*:    (f2 b7 c9 d0|d0 c9 b7 f2)     xxpermr vs21,vs23,vs25
2878 +.*:    (f1 2b 69 d7|d7 69 2b f1)     xxpermr vs41,vs43,vs45
2879 +.*:    (7e 8c 06 f4|f4 06 8c 7e)     extswsli r12,r20,0
2880 +.*:    (7e 8c 0e f4|f4 0e 8c 7e)     extswsli r12,r20,1
2881 +.*:    (7e 8c fe f6|f6 fe 8c 7e)     extswsli r12,r20,63
2882 +.*:    (7e ad 06 f5|f5 06 ad 7e)     extswsli\. r13,r21,0
2883 +.*:    (7e ad 0e f5|f5 0e ad 7e)     extswsli\. r13,r21,1
2884 +.*:    (7e ad fe f7|f7 fe ad 7e)     extswsli\. r13,r21,63
2885 +.*:    (11 d6 b8 85|85 b8 d6 11)     vrlwmi  v14,v22,v23
2886 +.*:    (11 f7 c0 c5|c5 c0 f7 11)     vrldmi  v15,v23,v24
2887 +.*:    (12 18 c9 85|85 c9 18 12)     vrlwnm  v16,v24,v25
2888 +.*:    (12 39 d1 c5|c5 d1 39 12)     vrldnm  v17,v25,v26
2889 +.*:    (12 5a dd cc|cc dd 5a 12)     vbpermd v18,v26,v27
2890 +.*:    (12 66 a6 02|02 a6 66 12)     vnegw   v19,v20
2891 +.*:    (12 87 ae 02|02 ae 87 12)     vnegd   v20,v21
2892 +.*:    (12 a8 b6 02|02 b6 a8 12)     vprtybw v21,v22
2893 +.*:    (12 c9 be 02|02 be c9 12)     vprtybd v22,v23
2894 +.*:    (12 ea c6 02|02 c6 ea 12)     vprtybq v23,v24
2895 +.*:    (13 10 ce 02|02 ce 10 13)     vextsb2w v24,v25
2896 +.*:    (13 31 d6 02|02 d6 31 13)     vextsh2w v25,v26
2897 +.*:    (13 58 de 02|02 de 58 13)     vextsb2d v26,v27
2898 +.*:    (13 79 e6 02|02 e6 79 13)     vextsh2d v27,v28
2899 +.*:    (13 9a ee 02|02 ee 9a 13)     vextsw2d v28,v29
2900 +.*:    (13 bc f6 02|02 f6 bc 13)     vctzb   v29,v30
2901 +.*:    (13 dd fe 02|02 fe dd 13)     vctzh   v30,v31
2902 +.*:    (13 fe f6 02|02 f6 fe 13)     vctzw   v31,v30
2903 +.*:    (13 df ee 02|02 ee df 13)     vctzd   v30,v29
2904 +.*:    (7d 40 a6 1a|1a a6 40 7d)     lxsibzx vs10,0,r20
2905 +.*:    (7e 4a a6 1b|1b a6 4a 7e)     lxsibzx vs50,r10,r20
2906 +.*:    (7d 60 ae 5a|5a ae 60 7d)     lxsihzx vs11,0,r21
2907 +.*:    (7e 6b ae 5b|5b ae 6b 7e)     lxsihzx vs51,r11,r21
2908 +.*:    (7d 80 b7 1a|1a b7 80 7d)     stxsibx vs12,0,r22
2909 +.*:    (7e 8c b7 1b|1b b7 8c 7e)     stxsibx vs52,r12,r22
2910 +.*:    (7d a0 bf 5a|5a bf a0 7d)     stxsihx vs13,0,r23
2911 +.*:    (7e ad bf 5b|5b bf ad 7e)     stxsihx vs53,r13,r23
2912 +.*:    (11 4b 63 70|70 63 4b 11)     maddhd  r10,r11,r12,r13
2913 +.*:    (12 95 b5 f1|f1 b5 95 12)     maddhdu r20,r21,r22,r23
2914 +.*:    (10 43 21 73|73 21 43 10)     maddld  r2,r3,r4,r5
2915 +.*:    (f0 0a a1 d8|d8 a1 0a f0)     xscmpexpdp cr0,vs10,vs20
2916 +.*:    (f3 88 91 de|de 91 88 f3)     xscmpexpdp cr7,vs40,vs50
2917 +.*:    (f1 2b af 2d|2d af 2b f1)     xsiexpdp vs41,r11,r21
2918 +.*:    (f0 7f 5d a8|a8 5d 7f f0)     xststdcdp cr0,vs11,127
2919 +.*:    (f3 ff 4d aa|aa 4d ff f3)     xststdcdp cr7,vs41,127
2920 +.*:    (f0 7f 5c a8|a8 5c 7f f0)     xststdcsp cr0,vs11,127
2921 +.*:    (f3 ff 4c aa|aa 4c ff f3)     xststdcsp cr7,vs41,127
2922 +.*:    (f1 a0 5d 6e|6e 5d a0 f1)     xsxexpdp r13,vs43
2923 +.*:    (f1 c1 65 6e|6e 65 c1 f1)     xsxsigdp r14,vs44
2924 +.*:    (f1 ae 7f c7|c7 7f ae f1)     xviexpdp vs45,vs46,vs47
2925 +.*:    (f1 cf 86 c7|c7 86 cf f1)     xviexpsp vs46,vs47,vs48
2926 +.*:    (f2 c0 bf ab|ab bf c0 f2)     xvtstdcdp vs54,vs55,0
2927 +.*:    (f2 df bf ef|ef bf df f2)     xvtstdcdp vs54,vs55,127
2928 +.*:    (f2 e0 c6 ab|ab c6 e0 f2)     xvtstdcsp vs55,vs56,0
2929 +.*:    (f2 ff c6 ef|ef c6 ff f2)     xvtstdcsp vs55,vs56,127
2930 +.*:    (f3 20 d7 6f|6f d7 20 f3)     xvxexpdp vs57,vs58
2931 +.*:    (f3 48 df 6f|6f df 48 f3)     xvxexpsp vs58,vs59
2932 +.*:    (f3 61 e7 6f|6f e7 61 f3)     xvxsigdp vs59,vs60
2933 +.*:    (f3 89 ef 6f|6f ef 89 f3)     xvxsigsp vs60,vs61
2934 +.*:    (7c 06 39 c0|c0 39 06 7c)     cmpeqb  cr0,r6,r7
2935 +.*:    (7f 86 39 c0|c0 39 86 7f)     cmpeqb  cr7,r6,r7
2936 +.*:    (7c 08 49 80|80 49 08 7c)     cmprb   cr0,r8,r9
2937 +.*:    (7f 88 49 80|80 49 88 7f)     cmprb   cr7,r8,r9
2938 +.*:    (7c 28 49 80|80 49 28 7c)     cmprb   cr0,1,r8,r9
2939 +.*:    (7f a8 49 80|80 49 a8 7f)     cmprb   cr7,1,r8,r9
2940 +.*:    (7d e0 01 00|00 01 e0 7d)     setb    r15,cr0
2941 +.*:    (7d fc 01 00|00 01 fc 7d)     setb    r15,cr7
2942 +.*:    (7f 40 52 1a|1a 52 40 7f)     lxvl    vs26,0,r10
2943 +.*:    (7f 14 52 1b|1b 52 14 7f)     lxvl    vs56,r20,r10
2944 +.*:    (7f 60 5b 1a|1a 5b 60 7f)     stxvl   vs27,0,r11
2945 +.*:    (7f 35 5b 1b|1b 5b 35 7f)     stxvl   vs57,r21,r11
2946 +.*:    (12 80 f6 02|02 f6 80 12)     vclzlsbb r20,v30
2947 +.*:    (12 a1 fe 02|02 fe a1 12)     vctzlsbb r21,v31
2948 +.*:    (11 4b 60 07|07 60 4b 11)     vcmpneb v10,v11,v12
2949 +.*:    (12 95 b4 07|07 b4 95 12)     vcmpneb\. v20,v21,v22
2950 +.*:    (11 6c 68 47|47 68 6c 11)     vcmpneh v11,v12,v13
2951 +.*:    (12 b6 bc 47|47 bc b6 12)     vcmpneh\. v21,v22,v23
2952 +.*:    (11 8d 70 87|87 70 8d 11)     vcmpnew v12,v13,v14
2953 +.*:    (12 d7 c4 87|87 c4 d7 12)     vcmpnew\. v22,v23,v24
2954 +.*:    (11 ae 79 07|07 79 ae 11)     vcmpnezb v13,v14,v15
2955 +.*:    (12 f8 cd 07|07 cd f8 12)     vcmpnezb\. v23,v24,v25
2956 +.*:    (11 cf 81 47|47 81 cf 11)     vcmpnezh v14,v15,v16
2957 +.*:    (13 19 d5 47|47 d5 19 13)     vcmpnezh\. v24,v25,v26
2958 +.*:    (11 f0 89 87|87 89 f0 11)     vcmpnezw v15,v16,v17
2959 +.*:    (13 3a dd 87|87 dd 3a 13)     vcmpnezw\. v25,v26,v27
2960 +.*:    (12 11 56 0d|0d 56 11 12)     vextublx r16,r17,v10
2961 +.*:    (12 32 5f 0d|0d 5f 32 12)     vextubrx r17,r18,v11
2962 +.*:    (12 53 66 4d|4d 66 53 12)     vextuhlx r18,r19,v12
2963 +.*:    (12 74 6f 4d|4d 6f 74 12)     vextuhrx r19,r20,v13
2964 +.*:    (12 95 76 8d|8d 76 95 12)     vextuwlx r20,r21,v14
2965 +.*:    (12 b6 7f 8d|8d 7f b6 12)     vextuwrx r21,r22,v15
2966 +.*:    (ec 00 1d 46|46 1d 00 ec)     dtstsfi cr0,0,f3
2967 +.*:    (ef bf 1d 46|46 1d bf ef)     dtstsfi cr7,63,f3
2968 +.*:    (fc 00 25 46|46 25 00 fc)     dtstsfiq cr0,0,f4
2969 +.*:    (ff bf 25 46|46 25 bf ff)     dtstsfiq cr7,63,f4
2970 +.*:    (f1 10 95 6f|6f 95 10 f1)     xscvhpdp vs40,vs50
2971 +.*:    (f1 31 9d 6f|6f 9d 31 f1)     xscvdphp vs41,vs51
2972 +.*:    (f1 58 a7 6f|6f a7 58 f1)     xvcvhpsp vs42,vs52
2973 +.*:    (f1 79 af 6f|6f af 79 f1)     xvcvsphp vs43,vs53
2974 +.*:    (4c 60 00 04|04 00 60 4c)     addpcis r3,0
2975 +.*:    (4c 60 00 04|04 00 60 4c)     addpcis r3,0
2976 +.*:    (4c 80 00 05|05 00 80 4c)     addpcis r4,1
2977 +.*:    (4c 80 00 05|05 00 80 4c)     addpcis r4,1
2978 +.*:    (4c bf ff c4|c4 ff bf 4c)     addpcis r5,-2
2979 +.*:    (4c bf ff c4|c4 ff bf 4c)     addpcis r5,-2
2980 +.*:    (4c df 7f c5|c5 7f df 4c)     addpcis r6,32767
2981 +.*:    (4c df 7f c5|c5 7f df 4c)     addpcis r6,32767
2982 +.*:    (4c e0 80 04|04 80 e0 4c)     addpcis r7,-32768
2983 +.*:    (4c e0 80 04|04 80 e0 4c)     addpcis r7,-32768
2984 +.*:    (7c 00 02 a4|a4 02 00 7c)     slbsync
2985 +.*:    (7d 40 5b a4|a4 5b 40 7d)     slbieg  r10,r11
2986 +.*:    (7c 60 27 26|26 27 60 7c)     slbmfee r3,r4
2987 +.*:    (7c 60 27 26|26 27 60 7c)     slbmfee r3,r4
2988 +.*:    (7c 61 27 26|26 27 61 7c)     slbmfee r3,r4,1
2989 +.*:    (7c 80 2e a6|a6 2e 80 7c)     slbmfev r4,r5
2990 +.*:    (7c 80 2e a6|a6 2e 80 7c)     slbmfev r4,r5
2991 +.*:    (7c 81 2e a6|a6 2e 81 7c)     slbmfev r4,r5,1
2992 +.*:    (7c 80 1a 64|64 1a 80 7c)     tlbie   r3,r4
2993 +.*:    (7c 80 1a 64|64 1a 80 7c)     tlbie   r3,r4
2994 +.*:    (7c 8f 1a 64|64 1a 8f 7c)     tlbie   r3,r4,3,1,1
2995 +.*:    (7c 00 1a 24|24 1a 00 7c)     tlbiel  r3
2996 +.*:    (7c 00 1a 24|24 1a 00 7c)     tlbiel  r3
2997 +.*:    (7c 8f 1a 24|24 1a 8f 7c)     tlbiel  r3,r4,3,1,1
2998 +.*:    (7c 0c 6e 0c|0c 6e 0c 7c)     copy    r12,r13
2999 +.*:    (7c 2c 6e 0c|0c 6e 2c 7c)     copy_first r12,r13
3000 +.*:    (7c 2c 6e 0c|0c 6e 2c 7c)     copy_first r12,r13
3001 +.*:    (7c 0a 5f 0c|0c 5f 0a 7c)     paste   r10,r11
3002 +.*:    (7c 0a 5f 0c|0c 5f 0a 7c)     paste   r10,r11
3003 +.*:    (7c 2a 5f 0d|0d 5f 2a 7c)     paste_last r10,r11
3004 +.*:    (7c 2a 5f 0d|0d 5f 2a 7c)     paste_last r10,r11
3005 +.*:    (7c 00 06 8c|8c 06 00 7c)     cp_abort
3006 +.*:    (7c 00 04 ac|ac 04 00 7c)     hwsync
3007 +.*:    (7c 00 04 ac|ac 04 00 7c)     hwsync
3008 +.*:    (7c 00 04 ac|ac 04 00 7c)     hwsync
3009 +.*:    (7c 20 04 ac|ac 04 20 7c)     lwsync
3010 +.*:    (7c 20 04 ac|ac 04 20 7c)     lwsync
3011 +.*:    (7c 40 04 ac|ac 04 40 7c)     ptesync
3012 +.*:    (7c 40 04 ac|ac 04 40 7c)     ptesync
3013 +.*:    (7c 07 04 ac|ac 04 07 7c)     sync    0,7
3014 +.*:    (7c 28 04 ac|ac 04 28 7c)     sync    1,8
3015 +.*:    (7e 80 04 cc|cc 04 80 7e)     ldat    r20,0,0
3016 +.*:    (7e 8a e4 cc|cc e4 8a 7e)     ldat    r20,r10,28
3017 +.*:    (7e a0 04 8c|8c 04 a0 7e)     lwat    r21,0,0
3018 +.*:    (7e ab e4 8c|8c e4 ab 7e)     lwat    r21,r11,28
3019 +.*:    (7e c0 05 cc|cc 05 c0 7e)     stdat   r22,0,0
3020 +.*:    (7e cc e5 cc|cc e5 cc 7e)     stdat   r22,r12,28
3021 +.*:    (7e e0 05 8c|8c 05 e0 7e)     stwat   r23,0,0
3022 +.*:    (7e ed e5 8c|8c e5 ed 7e)     stwat   r23,r13,28
3023 +.*:    (4c 00 02 64|64 02 00 4c)     urfid
3024 +.*:    (7c 00 f6 e4|e4 f6 00 7c)     rmieg   r30
3025 +.*:    (7d 40 7a 6a|6a 7a 40 7d)     ldmx    r10,0,r15
3026 +.*:    (7d 43 7a 6a|6a 7a 43 7d)     ldmx    r10,r3,r15
3027 +.*:    (4c 00 02 e4|e4 02 00 4c)     stop
3028 +.*:    (7c 00 00 3c|3c 00 00 7c)     wait    
3029 +.*:    (7c 00 00 3c|3c 00 00 7c)     wait    
3030 +.*:    (7c 60 05 e6|e6 05 60 7c)     darn    r3,0
3031 +.*:    (7c 61 05 e6|e6 05 61 7c)     darn    r3,1
3032 +.*:    (7c 62 05 e6|e6 05 62 7c)     darn    r3,2
3033 +.*:    (7c 00 04 80|80 04 00 7c)     mcrxrx  cr0
3034 +.*:    (7f 80 04 80|80 04 80 7f)     mcrxrx  cr7
3035 +.*:    (12 95 b7 44|44 b7 95 12)     vslv    v20,v21,v22
3036 +.*:    (12 f8 cf 04|04 cf f8 12)     vsrv    v23,v24,v25
3037 +.*:    (7c 00 06 ec|ec 06 00 7c)     msgsync
3038 +.*:    (f3 c8 90 1e|1e 90 c8 f3)     xscmpeqdp vs30,vs40,vs50
3039 +.*:    (f3 e9 98 5e|5e 98 e9 f3)     xscmpgtdp vs31,vs41,vs51
3040 +.*:    (f0 0a a0 9f|9f a0 0a f0)     xscmpgedp vs32,vs42,vs52
3041 +.*:    (f0 4c b4 47|47 b4 4c f0)     xsmincdp vs34,vs44,vs54
3042 +.*:    (f0 6d bc 07|07 bc 6d f0)     xsmaxcdp vs35,vs45,vs55
3043 +.*:    (f0 8e c4 c7|c7 c4 8e f0)     xsminjdp vs36,vs46,vs56
3044 +.*:    (f0 af cc 87|87 cc af f0)     xsmaxjdp vs37,vs47,vs57
3045 +#pass
3046 --- /dev/null    2016-05-23 09:42:50.354737742 +0100
3047 +++ binutils-2.25.1/gas/testsuite/gas/ppc/power9.s    2016-05-23 12:43:22.791946574 +0100
3048 @@ -0,0 +1,376 @@
3049 +    .text
3050 +power9:
3051 +    cnttzd      3,13
3052 +    cnttzd.     4,14
3053 +    cnttzw      5,15
3054 +    cnttzw.     6,16
3055 +    modsd       10,20,21
3056 +    modsw       11,21,22
3057 +    modud       12,22,23
3058 +    moduw       13,23,24
3059 +    bcdcfn.     3,4,0
3060 +    bcdcfn.     3,4,1
3061 +    bcdcfsq.    4,5,0
3062 +    bcdcfsq.    4,5,1
3063 +    bcdcfz.     5,6,0
3064 +    bcdcfz.     5,6,1
3065 +    bcdcpsgn.   6,7,8
3066 +    bcdctn.     7,8
3067 +    bcdctsq.    8,9
3068 +    bcdctz.     9,10,0
3069 +    bcdctz.     9,10,1
3070 +    bcdsetsgn.  10,11,0
3071 +    bcdsetsgn.  10,11,1
3072 +    bcdsr.      11,12,13,0
3073 +    bcdsr.      11,12,13,1
3074 +    bcds.       12,13,14,0
3075 +    bcds.       12,13,14,1
3076 +    bcdtrunc.   13,14,15,0
3077 +    bcdtrunc.   13,14,15,1
3078 +    bcdus.      14,15,16
3079 +    bcdutrunc.  15,16,17
3080 +    lxvll       20,0,21
3081 +    lxvll       20,10,21
3082 +    stxvll      21,0,11
3083 +    stxvll      21,10,11
3084 +    vmul10cuq   22,23
3085 +    vmul10ecuq  23,24,25
3086 +    vmul10euq   24,25,26
3087 +    vmul10uq    25,26
3088 +    xsaddqp     10,11,12
3089 +    xsaddqpo    11,12,12
3090 +    xsrqpi      0,20,30,0
3091 +    xsrqpi      1,20,30,0
3092 +    xsrqpi      0,20,30,3
3093 +    xsrqpi      1,20,30,3
3094 +    xsrqpix     0,21,31,0
3095 +    xsrqpix     1,21,31,0
3096 +    xsrqpix     0,21,31,3
3097 +    xsrqpix     1,21,31,3
3098 +    xsmulqp     12,13,14
3099 +    xsmulqpo    13,14,15
3100 +    xsrqpxp     0,22,23,0
3101 +    xsrqpxp     1,22,23,0
3102 +    xsrqpxp     0,22,23,3
3103 +    xsrqpxp     1,22,23,3
3104 +    xscpsgnqp   14,15,16
3105 +    xscmpoqp    0,15,16
3106 +    xscmpoqp    7,15,16
3107 +    xscmpexpqp  0,16,17
3108 +    xscmpexpqp  7,16,17
3109 +    xsmaddqp    17,18,19
3110 +    xsmaddqpo   18,19,20
3111 +    xsmsubqp    19,20,21
3112 +    xsmsubqpo   20,21,22
3113 +    xsnmaddqp   21,22,23
3114 +    xsnmaddqpo  22,23,24
3115 +    xsnmsubqp   23,24,25
3116 +    xsnmsubqpo  24,25,26
3117 +    xssubqp     25,26,27
3118 +    xssubqpo    26,27,28
3119 +    xsdivqp     27,28,29
3120 +    xsdivqpo    28,29,30
3121 +    xscmpuqp    0,29,30
3122 +    xscmpuqp    7,29,30
3123 +    xststdcqp   0,30,0
3124 +    xststdcqp   7,30,0
3125 +    xststdcqp   0,31,0x7f
3126 +    xststdcqp   7,31,0x7f
3127 +    xsabsqp     10,11
3128 +    xsxexpqp    11,12
3129 +    xsnabsqp    12,13
3130 +    xsnegqp     13,14
3131 +    xsxsigqp    14,15
3132 +    xssqrtqp    15,16
3133 +    xssqrtqpo   16,17
3134 +    xscvqpuwz   17,18
3135 +    xscvudqp    18,19
3136 +    xscvqpswz   19,20
3137 +    xscvsdqp    20,21
3138 +    xscvqpudz   21,22
3139 +    xscvqpdp    22,23
3140 +    xscvqpdpo   23,24
3141 +    xscvdpqp    24,25
3142 +    xscvqpsdz   25,26
3143 +    xsiexpqp    26,27,28
3144 +    vpermr      4,5,6,7
3145 +    vextractub  5,6,0
3146 +    vextractub  5,6,0xf
3147 +    vextractuh  6,7,0
3148 +    vextractuh  6,7,0xf
3149 +    vextractuw  7,8,0
3150 +    vextractuw  7,8,0xf
3151 +    vextractd   8,9,0
3152 +    vextractd   8,9,0xf
3153 +    vinsertb    9,10,0
3154 +    vinsertb    9,10,0xf
3155 +    vinserth    10,11,0
3156 +    vinserth    10,11,0xf
3157 +    vinsertw    11,12,0
3158 +    vinsertw    11,12,0xf
3159 +    vinsertd    12,13,0
3160 +    vinsertd    12,13,0xf
3161 +    mfvsrld     20,45
3162 +    mtvsrws     46,21
3163 +    mtvsrdd     47,0,23
3164 +    mtvsrdd     47,22,23
3165 +    lxvx        50,0,11
3166 +    lxvx        0,10,11
3167 +    lxvwsx      51,0,12
3168 +    lxvwsx      1,10,12
3169 +    lxvh8x      52,0,13
3170 +    lxvh8x      2,10,13
3171 +    lxvb16x     53,0,14
3172 +    lxvb16x     3,10,14
3173 +    stxvx       54,0,15
3174 +    stxvx       4,20,15
3175 +    stxvh8x     55,0,16
3176 +    stxvh8x     5,20,16
3177 +    stxvb16x    56,0,17
3178 +    stxvb16x    6,20,17
3179 +    xxextractuw 4,5,0x0
3180 +    xxextractuw 40,50,0xf
3181 +    xxspltib    4,0x0
3182 +    xxspltib    4,-128
3183 +    xxspltib    41,255
3184 +    xxspltib    41,-1
3185 +    xxinsertw   5,6,0
3186 +    xxinsertw   50,60,0xf
3187 +    xxbrh       6,7
3188 +    xxbrh       56,57
3189 +    xxbrw       7,8
3190 +    xxbrw       57,58
3191 +    xxbrd       8,9
3192 +    xxbrd       58,59
3193 +    xxbrq       9,10
3194 +    xxbrq       59,60
3195 +    lxsd        20,0(0)
3196 +    lxsd        20,0(10)
3197 +    lxsd        20,8(0)
3198 +    lxsd        20,8(10)
3199 +    lxsd        20,-8(0)
3200 +    lxsd        20,-8(10)
3201 +    lxsd        20,32764(0)
3202 +    lxsd        20,32764(10)
3203 +    lxsd        20,-32768(0)
3204 +    lxsd        20,-32768(10)
3205 +    lxssp       30,0(0)
3206 +    lxssp       30,0(11)
3207 +    lxssp       30,8(0)
3208 +    lxssp       30,8(11)
3209 +    lxssp       30,-8(0)
3210 +    lxssp       30,-8(11)
3211 +    lxssp       30,32764(0)
3212 +    lxssp       30,32764(11)
3213 +    lxssp       30,-32768(0)
3214 +    lxssp       30,-32768(11)
3215 +    lxv         40,0(0)
3216 +    lxv         40,0(12)
3217 +    lxv         40,16(0)
3218 +    lxv         40,16(12)
3219 +    lxv         40,-16(0)
3220 +    lxv         10,-16(12)
3221 +    lxv         10,32752(0)
3222 +    lxv         10,32752(12)
3223 +    lxv         10,-32768(0)
3224 +    lxv         10,-32768(12)
3225 +    stxsd       21,0(0)
3226 +    stxsd       21,0(10)
3227 +    stxsd       21,8(0)
3228 +    stxsd       21,8(10)
3229 +    stxsd       21,-8(0)
3230 +    stxsd       21,-8(10)
3231 +    stxsd       21,32764(0)
3232 +    stxsd       21,32764(10)
3233 +    stxsd       21,-32768(0)
3234 +    stxsd       21,-32768(10)
3235 +    stxssp      31,0(0)
3236 +    stxssp      31,0(11)
3237 +    stxssp      31,8(0)
3238 +    stxssp      31,8(11)
3239 +    stxssp      31,-8(0)
3240 +    stxssp      31,-8(11)
3241 +    stxssp      31,32764(0)
3242 +    stxssp      31,32764(11)
3243 +    stxssp      31,-32768(0)
3244 +    stxssp      31,-32768(11)
3245 +    stxv        41,0(0)
3246 +    stxv        41,0(12)
3247 +    stxv        41,16(0)
3248 +    stxv        41,16(12)
3249 +    stxv        41,-16(0)
3250 +    stxv        11,-16(12)
3251 +    stxv        11,32752(0)
3252 +    stxv        11,32752(12)
3253 +    stxv        11,-32768(0)
3254 +    stxv        11,-32768(12)
3255 +    xxperm      20,22,24
3256 +    xxperm      40,42,44
3257 +    xxpermr     21,23,25
3258 +    xxpermr     41,43,45
3259 +    extswsli    12,20,0
3260 +    extswsli    12,20,1
3261 +    extswsli    12,20,63
3262 +    extswsli.   13,21,0
3263 +    extswsli.   13,21,1
3264 +    extswsli.   13,21,63
3265 +    vrlwmi      14,22,23
3266 +    vrldmi      15,23,24
3267 +    vrlwnm      16,24,25
3268 +    vrldnm      17,25,26
3269 +    vbpermd     18,26,27
3270 +    vnegw       19,20
3271 +    vnegd       20,21
3272 +    vprtybw     21,22
3273 +    vprtybd     22,23
3274 +    vprtybq     23,24
3275 +    vextsb2w    24,25
3276 +    vextsh2w    25,26
3277 +    vextsb2d    26,27
3278 +    vextsh2d    27,28
3279 +    vextsw2d    28,29
3280 +    vctzb       29,30
3281 +    vctzh       30,31
3282 +    vctzw       31,30
3283 +    vctzd       30,29
3284 +    lxsibzx     10,0,20
3285 +    lxsibzx     50,10,20
3286 +    lxsihzx     11,0,21
3287 +    lxsihzx     51,11,21
3288 +    stxsibx     12,0,22
3289 +    stxsibx     52,12,22
3290 +    stxsihx     13,0,23
3291 +    stxsihx     53,13,23
3292 +    maddhd      10,11,12,13
3293 +    maddhdu     20,21,22,23
3294 +    maddld      2,3,4,5
3295 +    xscmpexpdp  0,10,20
3296 +    xscmpexpdp  7,40,50
3297 +    xsiexpdp    41,11,21
3298 +    xststdcdp   0,11,0x7f
3299 +    xststdcdp   7,41,0x7f
3300 +    xststdcsp   0,11,0x7f
3301 +    xststdcsp   7,41,0x7f
3302 +    xsxexpdp    13,43
3303 +    xsxsigdp    14,44
3304 +    xviexpdp    45,46,47
3305 +    xviexpsp    46,47,48
3306 +    xvtstdcdp   54,55,0
3307 +    xvtstdcdp   54,55,0x7f
3308 +    xvtstdcsp   55,56,0
3309 +    xvtstdcsp   55,56,0x7f
3310 +    xvxexpdp    57,58
3311 +    xvxexpsp    58,59
3312 +    xvxsigdp    59,60
3313 +    xvxsigsp    60,61
3314 +    cmpeqb      0,6,7
3315 +    cmpeqb      7,6,7
3316 +    cmprb       0,0,8,9
3317 +    cmprb       7,0,8,9
3318 +    cmprb       0,1,8,9
3319 +    cmprb       7,1,8,9
3320 +    setb        15,0
3321 +    setb        15,7
3322 +    lxvl        26,0,10
3323 +    lxvl        56,20,10
3324 +    stxvl       27,0,11
3325 +    stxvl       57,21,11
3326 +    vclzlsbb    20,30
3327 +    vctzlsbb    21,31
3328 +    vcmpneb     10,11,12
3329 +    vcmpneb.    20,21,22
3330 +    vcmpneh     11,12,13
3331 +    vcmpneh.    21,22,23
3332 +    vcmpnew     12,13,14
3333 +    vcmpnew.    22,23,24
3334 +    vcmpnezb    13,14,15
3335 +    vcmpnezb.   23,24,25
3336 +    vcmpnezh    14,15,16
3337 +    vcmpnezh.   24,25,26
3338 +    vcmpnezw    15,16,17
3339 +    vcmpnezw.   25,26,27
3340 +    vextublx    16,17,10
3341 +    vextubrx    17,18,11
3342 +    vextuhlx    18,19,12
3343 +    vextuhrx    19,20,13
3344 +    vextuwlx    20,21,14
3345 +    vextuwrx    21,22,15
3346 +    dtstsfi     0,0,3
3347 +    dtstsfi     7,0x3f,3
3348 +    dtstsfiq    0,0,4
3349 +    dtstsfiq    7,0x3f,4
3350 +    xscvhpdp    40,50
3351 +    xscvdphp    41,51
3352 +    xvcvhpsp    42,52
3353 +    xvcvsphp    43,53
3354 +    addpcis     3,0
3355 +    subpcis     3,0
3356 +    addpcis     4,1
3357 +    subpcis     4,-1
3358 +    addpcis     5,-2
3359 +    subpcis     5,2
3360 +    addpcis     6,0x7fff
3361 +    subpcis     6,-0x7fff
3362 +    addpcis     7,-0x8000
3363 +    subpcis     7,0x8000
3364 +    slbsync
3365 +    slbieg      10,11
3366 +    slbmfee     3,4
3367 +    slbmfee     3,4,0
3368 +    slbmfee     3,4,1
3369 +    slbmfev     4,5
3370 +    slbmfev     4,5,0
3371 +    slbmfev     4,5,1
3372 +    tlbie       3,4
3373 +    tlbie       3,4,0,0,0
3374 +    tlbie       3,4,3,1,1
3375 +    tlbiel      3
3376 +    tlbiel      3,0,0,0,0
3377 +    tlbiel      3,4,3,1,1
3378 +    copy        12,13,0
3379 +    copy_first  12,13
3380 +    copy        12,13,1
3381 +    paste       10,11,0
3382 +    paste       10,11
3383 +    paste.      10,11,1
3384 +    paste_last  10,11
3385 +    cp_abort
3386 +    hwsync
3387 +    sync
3388 +    sync        0,0x0
3389 +    lwsync
3390 +    sync        1,0x0
3391 +    ptesync
3392 +    sync        2,0x0
3393 +    sync        0,0x7
3394 +    sync        1,0x8
3395 +    ldat        20,0,0x0
3396 +    ldat        20,10,0x1c
3397 +    lwat        21,0,0x0
3398 +    lwat        21,11,0x1c
3399 +    stdat       22,0,0x0
3400 +    stdat       22,12,0x1c
3401 +    stwat       23,0,0x0
3402 +    stwat       23,13,0x1c
3403 +    urfid
3404 +    rmieg       30
3405 +    ldmx        10,0,15
3406 +    ldmx        10,3,15
3407 +    stop
3408 +    wait
3409 +    wait        0
3410 +    darn        3,0
3411 +    darn        3,1
3412 +    darn        3,2
3413 +    mcrxrx      0
3414 +    mcrxrx      7
3415 +    vslv        20,21,22
3416 +    vsrv        23,24,25
3417 +    msgsync
3418 +    xscmpeqdp   30,40,50
3419 +    xscmpgtdp   31,41,51
3420 +    xscmpgedp   32,42,52
3421 +    xsmincdp    34,44,54
3422 +    xsmaxcdp    35,45,55
3423 +    xsminjdp    36,46,56
3424 +    xsmaxjdp    37,47,57
3425 --- /dev/null    2016-05-23 09:42:50.354737742 +0100
3426 +++ binutils-2.25.1/gas/testsuite/gas/ppc/vsx3.s    2016-05-23 12:43:15.656909113 +0100
3427 @@ -0,0 +1,123 @@
3428 +        .text
3429 +vsx3:
3430 +    lxvx         34,6,25
3431 +    lxvx         20,0,10
3432 +    lxvl         20,24,10
3433 +    lxvl         54,0,29
3434 +    lxvll        24,20,19
3435 +    lxvll        34,0,14
3436 +    mfvsrld      2,22
3437 +    lxvwsx       58,26,25
3438 +    lxvwsx       55,0,29
3439 +    stxvx        14,21,4
3440 +    stxvx        30,0,22
3441 +    stxvl        0,26,4
3442 +    stxvl        37,0,22
3443 +    mtvsrws      24,10
3444 +    stxvll       30,21,15
3445 +    stxvll       39,0,14
3446 +    mtvsrdd      12,6,5
3447 +    mtvsrdd      38,0,21
3448 +    lxsibzx      59,28,6
3449 +    lxsibzx      30,0,8
3450 +    lxvh8x       42,23,17
3451 +  &nbs